Rumah >Peranti teknologi >industri IT >Migrasi truffle dijelaskan

Migrasi truffle dijelaskan

Lisa Kudrow
Lisa Kudrowasal
2025-02-16 10:47:13368semak imbas

Truffle Migrations Explained

Truffle Migration: Alat yang berkuasa untuk penempatan automatik kontrak pintar

Migrasi adalah cara bagi pemaju untuk mengautomasikan penggunaan data dan struktur sokongannya. Mereka sangat berguna dalam menguruskan penggunaan versi perisian baru dan tidak terhad kepada pembangunan blockchain.

Migrasi Truffle membolehkan kami untuk "menolak" kontrak pintar ke blockchain Ethereum (Local, TestNet atau MainNet) dan menetapkan langkah -langkah yang diperlukan untuk menyambungkan kontrak dan mengisi data awal kontrak.

Kelebihan sebenar penghijrahan truffle adalah untuk menguruskan alamat kontrak pada blockchain. Kerja -kerja yang biasanya membosankan ini hampir sepenuhnya dicabut melalui truffle.

mata utama

    Migrasi Truffle adalah penting untuk mengautomasikan penggunaan kontrak pintar ke blok Ethereum, yang membolehkan pemaju menguruskan alamat dan interaksi kontrak dengan cekap.
  • Proses ini melibatkan membuat skrip penghijrahan menggunakan JavaScript, yang membantu dengan lancar menggunakan kontrak dan mengendalikan kebergantungan mereka.
  • Adalah penting untuk digunakan
  • untuk menyusun kontrak untuk menghasilkan artifak yang memudahkan interaksi antara kontrak dan blockchain sebelum menjalankan penghijrahan. truffle compile
  • pemaju boleh menggunakan satu arahan untuk menguruskan pelbagai kontrak dan saling ketergantungan mereka, dengan itu meningkatkan skalabilitas dan pemeliharaan aplikasi blockchain.

Langkah berjaga -jaga

Pastikan kerangka truffle dan ganache CLI dipasang.

pemula

Pertama, pilih folder projek dan jalankan

. Anda harus mendapatkan output seperti ini: truffle init

<code>Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!

Commands:

  Compile:        truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test</code>
Perintah ini mewujudkan projek truffle asas dalam direktori anda. Struktur direktori adalah seperti berikut:

<code>.
├── contracts
│   └── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js</code>
Pertama, dalam direktori

, buat fail baru bernama contracts dengan kandungan berikut: Storage.sol

<code class="language-solidity">pragma solidity ^0.4.21;

contract Storage {

    mapping (string => string) private _store;

    function addData(string key, string value) public {
        require(bytes(_store[key]).length == 0);
        _store[key] = value;
    }

    function removeData(string key) public returns (string) {
        require(bytes(_store[key]).length != 0);
        string prev = _store[key];
        delete _store[key];
        return prev;
    }

    function changeData(string key, string newValue) public {
        require(bytes(_store[key]).length != 0);
        _store[key] = newValue;
    }

}</code>

Migrasi awal

anda mungkin menyedari bahawa dua fail dibuat semasa berjalan

: truffle init dan Migrations.sol. 1_initial_migration.js

fail penghijrahan awal jarang memerlukan perubahan. Peranan mereka pada dasarnya menjejaki alamat di blockchain.

Fail

boleh ditulis dengan cara yang anda mahu, tetapi ia mesti mematuhi antara muka tetap yang dibuat oleh arahan Migrations.sol. Anda boleh melakukan beberapa migrasi lanjutan dalam fail -fail ini, tetapi seperti yang saya katakan, ini jarang diperlukan. truffle init Begitu juga untuk fail

. Tujuannya adalah untuk menolak fail 1_initial_migration.js ke blok sasaran. Migrations.sol

Migrasi data

Untuk menggunakan kontrak pintar ke blockchain Ethereum, anda mesti terlebih dahulu menulis fail penghijrahan. Pertama, dalam direktori

anda, buat fail bernama migrations. Struktur projek anda sekarang kelihatan seperti ini: 2_deploy_contracts.js

<code>Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!

Commands:

  Compile:        truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test</code>

Untuk menggunakan kontrak pintar menggunakan penghijrahan, kita perlu mengakses artifak mereka . Fail -fail ini menggambarkan alamat kontrak, rangkaian di mana kontrak telah digunakan, dan fungsi yang dimiliki oleh kontrak.

Jadi di manakah semua data ini berasal?

Dalam direktori projek anda, jalankan truffle compile. Sekiranya semuanya berjalan lancar, anda perlu mendapatkan output seperti ini:

<code>.
├── contracts
│   └── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js</code>

Bergantung pada versi pengkompil, anda mungkin menerima beberapa amaran, tetapi selagi tidak ada kesilapan, anda boleh meneruskan.

Sekarang periksa struktur direktori projek anda lagi:

<code class="language-solidity">pragma solidity ^0.4.21;

contract Storage {

    mapping (string => string) private _store;

    function addData(string key, string value) public {
        require(bytes(_store[key]).length == 0);
        _store[key] = value;
    }

    function removeData(string key) public returns (string) {
        require(bytes(_store[key]).length != 0);
        string prev = _store[key];
        delete _store[key];
        return prev;
    }

    function changeData(string key, string newValue) public {
        require(bytes(_store[key]).length != 0);
        _store[key] = newValue;
    }

}</code>

Perhatikan bahawa kini terdapat folder build yang mengandungi dua fail - Migrations.json dan Storage.json - yang sepadan dengan fail kontrak pintar dalam direktori contracts.

fail *.json ini mengandungi perihalan kontrak pintar masing -masing. Deskripsi termasuk:

  • Nama Kontrak
  • Kontrak ABI (Antara Muka Permohonan Aplikasi - Senarai semua fungsi kontrak pintar, serta parameter dan nilai pulangan mereka)
  • byteCode kontrak (data kontrak yang disusun)
  • kontrak yang digunakan bytecode (versi terbaru bytecode yang dikerahkan ke blockchain)
  • versi pengkompil kontrak pengkompil
  • Senarai rangkaian kontrak yang digunakan dan alamat setiap kontrak di rangkaian.

Fail ini membolehkan Truffle untuk membuat pembalut JavaScript untuk berkomunikasi dengan kontrak pintar. Sebagai contoh, apabila anda memanggil contract.address dalam kod JavaScript, kerangka truffle membaca alamat dari fail *.json dan melaksanakan penukaran mudah antara versi kontrak dan rangkaian.

Menulis fail migrasi

Dengan pengetahuan ini, mari tulis fail penghijrahan pertama. Dalam fail 2_deploy_contracts.js, tulis yang berikut:

<code>.
├── contracts
│   ├── Migrations.sol
│   └── Storage.sol
├── migrations
│   ├── 1_initial_migration.js
│   └── 2_deploy_contracts.js
├── test
├── truffle-config.js
└── truffle.js</code>

Menulis fail penghijrahan adalah mudah. Untuk menjalankan skrip penghijrahan, jalankan arahan berikut di terminal:

<code>Compiling ./contracts/Migrations.sol...
Compiling ./contracts/Storage.sol...

Writing artifacts to ./build/contracts</code>

anda harus menerima mesej ralat:

<code>.
├── build
│   └── contracts
│       ├── Migrations.json
│       └── Storage.json
├── contracts
│   ├── Migrations.sol
│   └── Storage.sol
├── migrations
│   ├── 1_initial_migration.js
│   └── 2_deploy_contracts.js
├── test
├── truffle-config.js
└── truffle.js</code>

Ini bermakna truffle tidak dapat mencari rangkaian yang anda mahu gunakan.

Untuk menggunakan blockchain Ethereum simulasi, jalankan ganache-cli dalam tab Terminal baru. Anda harus mendapatkan output seperti ini: (output ditinggalkan, sama dengan teks asal)

Ini bermakna anda telah memulakan blok swasta yang berjalan di localhost: 8545. Sekarang mari kita sediakan truffle untuk digunakan ke rangkaian.

masukkan perkara berikut ke dalam fail truffle.js:

<code class="language-javascript">// 从 Storage.json 文件中获取 Storage 合约数据
var Storage = artifacts.require("./Storage.sol");

// JavaScript 导出
module.exports = function(deployer) {
    // deployer 是 Truffle 用于将合约部署到网络的包装器

    // 将合约部署到网络
    deployer.deploy(Storage);
}</code>

Ini hanya bermakna bahawa anda menggunakan kontrak anda ke rangkaian yang berjalan di localhost: 8545.

jalan sekarang truffle migrate. Anda harus mendapatkan output seperti ini: (output ditinggalkan, sama dengan teks asal)

Truffle memindahkan kontrak anda ke rangkaian dan menjimatkan artifak. Dalam direktori build, dalam fail Storage.json, sahkan bahawa ini betul dengan memeriksa objek networks. Anda harus melihat sesuatu seperti ini: (kandungan ditinggalkan, sama dengan teks asal)

... (Kandungan seterusnya adalah sama dengan teks asal, termasuk pemprosesan pelbagai kontrak, rangkaian, akaun, perpustakaan, serta ringkasan akhir dan FAQ, yang tidak akan diulang di sini.)

Atas ialah kandungan terperinci Migrasi truffle dijelaskan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn