ホームページ >テクノロジー周辺機器 >IT業界 >トリュフの移動が説明されました

トリュフの移動が説明されました

Lisa Kudrow
Lisa Kudrowオリジナル
2025-02-16 10:47:13368ブラウズ

Truffle Migrations Explained

トリュフの移動:スマートコントラクトの自動展開のための強力なツール

移行は、開発者がデータの展開とそのサポート構造を自動化する方法です。これらは、新しいソフトウェアバージョンの展開を管理するのに非常に役立ち、ブロックチェーン開発に限定されません。

トリュフの移行により、スマートコントラクトをイーサリアムブロックチェーン(ローカル、テストネット、またはメインネット)に「プッシュ」し、契約を接続して契約の初期データを入力するために必要な手順を設定できます。

トリュフの移動の本当の利点は、ブロックチェーンの契約アドレスを管理することです。この通常の退屈な作業は、トリュフを通してほぼ完全に抽象化されています。

キーポイント

    トリュフの移行は、スマートコントラクトの展開をイーサリアムブロックチェーンに自動化するために重要です。これにより、開発者は契約アドレスとインタラクションを効率的に管理できます。
  • このプロセスには、JavaScriptを使用して移行スクリプトの作成が含まれます。これは、契約をスムーズに展開し、依存関係を処理するのに役立ちます。
  • を使用して契約をコンパイルして、移行を実行する前に契約とブロックチェーンの間の相互作用を促進するアーティファクトを生成することが重要です。
  • truffle compile開発者は、単一のコマンドを使用して複数の契約とその相互依存関係を管理することができ、ブロックチェーンアプリケーションのスケーラビリティと保守性を改善できます。
予防策

トリュフフレームワークとガナッシュCLIがインストールされていることを確認してください。

初心者

最初に、プロジェクトフォルダーを選択して

を実行します。次のような出力を取得する必要があります:

truffle init

このコマンドは、ディレクトリに基本的なトリュフプロジェクトを作成します。ディレクトリ構造は次のとおりです
<code>Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!

Commands:

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

最初に、

ディレクトリで、次のコンテンツを含む
<code>.
├── contracts
│   └── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js</code>
という名前の新しいファイルを作成します。

contractsStorage.sol初期移行実行中に2つのファイルが作成されていることに気付いた場合があります

<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>

および

最初の移行ファイルはめったに変更を必要としません。それらの役割は、本質的にブロックチェーンのアドレスを追跡することです。

truffle initMigrations.solファイルは、必要に応じて記述できますが、1_initial_migration.jsコマンドによって作成された固定インターフェイスに準拠する必要があります。これらのファイルでいくつかの高度な移行を行うことができますが、私が言ったように、これはめったに必要ありません。

同じことが

ファイルにも当てはまります。その目的は、単に

ファイルをターゲットブロックチェーンにプッシュすることです。 Migrations.sol truffle init

データの移行

1_initial_migration.js Migrations.solスマートコントラクトをEthereumブロックチェーンに展開するには、最初に移行ファイルを記述する必要があります。まず、

ディレクトリで、

という名前のファイルを作成します。プロジェクト構造は、次のようになります

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

Commands:

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

移行を使用してスマートコントラクトを展開するには、最初にartifactsにアクセスする必要があります。これらのファイルは、契約アドレス、契約が展開されているネットワーク、および契約が持つ機能について説明します。

では、このデータはすべてどこから来たのでしょうか?

プロジェクトディレクトリで、実行truffle compileを実行します。すべてがうまくいけば、このような出力を取得する必要があります:

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

コンパイラバージョンに応じて、いくつかの警告を受ける可能性がありますが、エラーがない限り、続行できます。

ここで、プロジェクトディレクトリ構造をもう一度確認してください:

<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>

buildディレクトリ内のスマートコントラクトファイルと一致する2つのファイル(Migrations.jsonおよびStorage.json)を含むcontractsフォルダーがあることに注意してください。

これらの *.jsonファイルには、それぞれのスマートコントラクトの説明が含まれています。説明には以下が含まれます

    契約名
  • 契約ABI(アプリケーションバイナリインターフェイス - すべてのスマート契約関数のリストとそのパラメーターと返品値)
  • 契約bytecode(コンパイルされた契約データ)
  • 契約展開bytecode(ブロックチェーンに展開されたbytecodeの最新バージョン)
  • コンパイラ契約のコンパイラバージョン
  • 展開された契約のネットワークのリストとネットワーク上の各契約のアドレス。
  • このファイルにより、トリュフはスマートコントラクトと通信するためのJavaScriptラッパーを作成できます。たとえば、JavaScriptコードで
に電話すると、トリュフフレームワークは *.jsonファイルからアドレスを読み取り、契約版とネットワーク間の簡単な変換を実装します。

contract.address

移行ファイルの書き込み

この知識を使用して、最初の移行ファイルを書きましょう。 ファイルに、次のことを記述します

移行ファイルを書くのは簡単です。移行スクリプトを実行するには、端末で次のコマンドを実行します。 2_deploy_contracts.js

エラーメッセージを受信する必要があります:
<code>.
├── contracts
│   ├── Migrations.sol
│   └── Storage.sol
├── migrations
│   ├── 1_initial_migration.js
│   └── 2_deploy_contracts.js
├── test
├── truffle-config.js
└── truffle.js</code>

これは、トリュフが展開するネットワークを見つけることができないことを意味します。
<code>Compiling ./contracts/Migrations.sol...
Compiling ./contracts/Storage.sol...

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

シミュレートされたEthereumブロックチェーンを使用するには、新しい端末タブで

を実行します。次のような出力を取得する必要があります:(出力は省略されており、元のテキストと同じ)
<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>

これは、LocalHost:8545で実行されているプラ​​イベートブロックチェーンを開始したことを意味します。それでは、ネットワークに展開するためにトリュフをセットアップしましょう。

ganache-cliファイル:

に以下を入れます

これは、LocalHost:8545で実行されているネットワークに契約を展開していることを意味します。

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>

トリュフは契約をネットワークに移行し、アーティファクトを保存します。

ディレクトリのファイルでは、

オブジェクトをチェックすることでこれが正しいことを確認します。このようなものが表示されるはずです:(コンテンツは省略されており、元のテキストと同じ)truffle migrate

...(後続のコンテンツは、複数の契約、ネットワーク、アカウント、ライブラリ、および最後の要約とFAQの処理など、元のテキストと同じです。 >

以上がトリュフの移動が説明されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。