Asas Pembangunan Web3 & DApp · Pelajaran

Rangkaian Tempatan dan Forking

Persekitaran ujian

Pelajaran 4 daripada 413 langkah

Rangkaian Tempatan dan Forking ialah pelajaran Asas Pembangunan Web3 & DApp percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Asas Pembangunan Web3 & DApp, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 4 pelajaran.

Rangkaian Hardhat

Hardhat disertakan dengan rangkaian Ethereum setempat terbina dalam yang direka untuk pembangunan. Rangkaian ini berjalan dalam memori, melombong blok serta-merta, dan menyediakan akaun ujian yang mempunyai dana.

  • Tiada ETH sebenar atau kos gas.
  • Akaun deterministik yang boleh digunakan semula.
  • Mesej ralat dan surih tindanan yang terperinci.

Memulakan Nod Setempat

Jalankan pelayan JSON-RPC kendiri supaya dompet dan bahagian hadapan boleh bersambung:

npx hardhat node

Perintah ini memaparkan 20 akaun yang mempunyai dana bersama kunci peribadinya, dan mendengar pada http://127.0.0.1:8545.

npx hardhat node

Rangkaian localhost

Untuk menyasarkan nod yang sedang berjalan, takrifkan rangkaian localhost dalam konfigurasi anda:

module.exports = { solidity: "0.8.24", networks: { localhost: { url: "http://127.0.0.1:8545" }, }, };

Kemudian lakukan penggunaan dengan npx hardhat run scripts/deploy.js --network localhost.

module.exports = {
  solidity: "0.8.24",
  networks: {
    localhost: { url: "http://127.0.0.1:8545" },
  },
};

Dalam Proses berbanding Kendiri

Terdapat dua cara untuk menggunakan Rangkaian Hardhat:

  • Dalam proses — rangkaian baharu yang dimulakan secara automatik apabila anda menjalankan test atau run tanpa --network. Keadaan rangkaian dibuang selepas itu.
  • Kendiri — dimulakan dengan npx hardhat node dan terus aktif untuk sambungan luaran.

Apakah Percabangan

Percabangan mencipta salinan setempat bagi rangkaian sebenar seperti mainnet Ethereum pada blok tertentu. Anda memperoleh semua keadaan dalam rantaian — kontrak yang telah digunakan, baki, dan data Token — tetapi boleh melakukan eksperimen dengan bebas.

Kaedah ini amat sesuai untuk menguji protokol langsung seperti Uniswap atau Aave tanpa membelanjakan dana sebenar.

Mengkonfigurasi Percabangan

Dayakan percabangan dengan mengarahkan rangkaian Hardhat kepada URL RPC arkib:

module.exports = { networks: { hardhat: { forking: { url: "https://mainnet.example-rpc.io/KEY", }, }, }, };

Biasanya anda memerlukan pembekal nod arkib untuk mendapatkan keadaan sejarah yang lengkap.

module.exports = {
  networks: {
    hardhat: {
      forking: {
        url: "https://mainnet.example-rpc.io/KEY",
      },
    },
  },
};

Menetapkan Nombor Blok

Untuk ujian yang boleh dihasilkan semula, tetapkan percabangan kepada blok tertentu:

forking: { url: "https://mainnet.example-rpc.io/KEY", blockNumber: 19000000, }

Penetapan ini mengekalkan keadaan agar stabil dan membolehkan Hardhat menyimpan respons dalam cache, supaya ujian berjalan lebih pantas dan tidak berubah apabila rantaian berkembang.

forking: {
  url: "https://mainnet.example-rpc.io/KEY",
  blockNumber: 19000000,
}

Menyamar sebagai Akaun

Pada percabangan, anda boleh bertindak sebagai mana-mana alamat — walaupun alamat yang bukan milik anda — untuk menguji aliran seperti whale yang memindahkan Token:

await hre.network.provider.request({ method: "hardhat_impersonateAccount", params: ["0xWhaleAddress"], }); const whale = await hre.ethers.getSigner("0xWhaleAddress");
await hre.network.provider.request({
  method: "hardhat_impersonateAccount",
  params: ["0xWhaleAddress"],
});
const whale = await hre.ethers.getSigner("0xWhaleAddress");

Manipulasi Masa dan Blok

Rangkaian setempat menyediakan kaedah RPC khas untuk mengawal masa dan blok, yang berguna bagi menguji peletakhakan atau lelongan:

// Advance time by 1 day await hre.network.provider.send("evm_increaseTime", [86400]); // Mine a new block await hre.network.provider.send("evm_mine");
// Advance time by 1 day
await hre.network.provider.send("evm_increaseTime", [86400]);
// Mine a new block
await hre.network.provider.send("evm_mine");

Menetapkan Semula Keadaan

Anda boleh menetapkan semula percabangan kepada gambaran bersih antara ujian:

await hre.network.provider.request({ method: "hardhat_reset", params: [], });

Tindakan ini memulihkan keadaan percabangan asal tanpa memulakan semula proses, sekali gus memastikan setiap pelaksanaan ujian terasing.

await hre.network.provider.request({
  method: "hardhat_reset",
  params: [],
});

Gambaran dan Pembatalan

Selain penetapan semula penuh, anda boleh mengambil gambaran ringan dan kembali kepadanya. Inilah cara lekapan ujian berfungsi di sebalik tabir:

const id = await hre.network.provider.send("evm_snapshot"); // ... run some transactions ... await hre.network.provider.send("evm_revert", [id]);

Setiap id gambaran hanya boleh digunakan untuk kembali kepadanya sekali.

const id = await hre.network.provider.send("evm_snapshot");
// ... run some transactions ...
await hre.network.provider.send("evm_revert", [id]);

Semakan Pantas

Uji pemahaman anda tentang rangkaian setempat dan percabangan.

Imbas Kembali

Anda telah mempelajari cara menjalankan dan mencabangkan rangkaian setempat.

  • npx hardhat node memulakan nod JSON-RPC kendiri dengan akaun yang mempunyai dana.
  • Rangkaian dalam proses digunakan secara automatik untuk ujian dan dibuang selepas itu.
  • Percabangan menyalin keadaan mainnet langsung secara setempat untuk eksperimen yang selamat.
  • Tetapkan blockNumber untuk kebolehulangan dan penyimpanan cache.
  • Kaedah RPC khas menyamar sebagai akaun, memajukan masa, melombong blok, dan menetapkan semula keadaan.
Percuma untuk bermula

Pelajari Asas Pembangunan Web3 & DApp dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
105

Soalan Lazim

Adakah pelajaran “Rangkaian Tempatan dan Forking” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Pembangunan Web3 & DApp, termasuk “Rangkaian Tempatan dan Forking”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Rangkaian Tempatan dan Forking”?

Persekitaran ujian Anda berlatih Asas Pembangunan Web3 & DApp menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Asas Pembangunan Web3 & DApp?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Asas Pembangunan Web3 & DApp di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Rangkaian Tempatan dan Forking” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Asas Pembangunan Web3 & DApp ini?

Ya. Setiap pelajaran Asas Pembangunan Web3 & DApp menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Persediaan Hardhat
  2. Menyusun Kontrak
  3. Skrip dan Tugas
  4. Rangkaian Tempatan dan Forking
← Kembali ke Asas Pembangunan Web3 & DApp