2022年にUbuntuで最新バージョンのTruffleフレームワークを構築する

1.nodejsとnpmをインストールします

ubuntuでノードとnpmをアンインストールしてインストールします-プログラマーが探しました

2.インストール

1.環境
Ubuntu18.04を使用し、次のようにインストールしました
。g ++インストール、コマンドの実行:sudo apt-get install g ++
libssl-dev install、コマンドの実行:sudo apt-get install libssl-dev

nodejs install、実行コマンド:sudo apt -get install nodejs

2.solcインストールもインストールする必要があり
ます:sudo snap install solc

testrpcをインストールする必要はありません、それは放棄されました

testrpc安装:sudo npm install -g ethereumjs-testrpc


3.Truffleをインストールする
ためのTruffleのインストール手順は次のとおりです。

sudo npm install -g truffle

 ガナッシュをインストールする必要はありません、それはすでに持っています

プロジェクトを作成する


空のプロジェクトを作成する

truffle init



メタコインを含むプロジェクトを作成する

トリュフの新しいバージョンでは、ボックスの概念が導入されており、すべてのサンプルコードはボックスの形式で提供されています。metacoinのサンプルコードをダウンロードします。

truffle unbox metacoin



エンジニアリング構造

プロジェクトの構造を図に示します。

コントラクトディレクトリにはSolidityコントラクトコードが含まれています。このコードにはMigrations.solが必要であり、その他はコントラクトコードです(これがサンプルのMetaCoinコードです)。

移行ディレクトリにはコントラクト展開スクリプトが含まれ、1_initial_migration.jsはMigrations.solの展開に使用され、他のスクリプトは順番に実行されます。

テストディレクトリには、テストコードがあります。

MetaCoin

MetaCoinのコードは、主に3つのインターフェースを実装しています。コインの発行、残高の確認、Eth残高の確認です。
 

contract MetaCoin {
    mapping (address => uint) balances;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);

    function MetaCoin() public {
        balances[tx.origin] = 10000;
    }

    function sendCoin(address receiver, uint amount) public returns(bool sufficient) {
        if (balances[msg.sender] < amount) return false;
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        Transfer(msg.sender, receiver, amount);
        return true;
    }

    function getBalanceInEth(address addr) public view returns(uint){
        return ConvertLib.convert(getBalance(addr),2);
    }

    function getBalance(address addr) public view returns(uint) {
        return balances[addr];
    }
}

ガナッシュグラフィカルバージョンをインストールできます

  ダウンロードアドレス:https://www.trufflesuite.com/ganache。システムに対応するバージョンをダウンロードしてインストールします。これはスキップされ、音声ではなくなります。トリュフの設定に焦点を当てています。

       以下に示すように、ガナッシュを開きます。

ここに画像の説明を挿入

       左側のボタンはクイックスタートで、データは保存されず、起動するたびにまったく新しい開発環境になります。右側のボタンは、現在のデータを対応するワークスペースに保存するためのものであり、複数のワークスペースが存在する場合があります。右側で新しいワークスペースを選択します。
ここに画像の説明を挿入

 ここでワークスペースに意味のある名前を付けることができます。まだトリュフプロジェクトがないため、左下隅のプロジェクトの追加は最初にスキップされます。

このインターフェイスの一番上の列はナビゲーションメニューで、次の行はさまざまな情報で、右側はワークスペースの切り替えと設定ボタンです。3行目は、すべてのアドレスが生成されるニーモニックです。

       インターフェイスのメインインターフェイスには10個のアカウントがあり、各アカウントのアドレス、残高、完了したトランザクションの数、アカウント配列のインデックス、秘密鍵を表示するボタンなどが個別に一覧表示されます。その鍵アイコンをクリックすると、その秘密鍵が表示されます。

       ナビゲーションの[ブロック]をクリックすると、現在のブロックが0であることがわかります。これは、Ganacheマイニングメカニズムが各トランザクションがブロックを生成すると判断するため、ブロックは1つのトランザクションしか持てないためです(これは作成者の経験であり、間違っている可能性があります)。ブロックは、まだトランザクションの後に生成されます。


———————————————
著作権ステートメント:この記事は、CSDNブロガー「Zero_Nothing」によるオリジナルの記事です。CC4.0BY-SAの著作権契約に従い、元のソースリンクとこのステートメントを添付してください転載用。
元のリンク:https://blog.csdn.net/weixin_39430411/article/details/104248037

一連の構成が完了したら、VisualStudioCodeを使用してプロジェクトフォルダーを開きます。Visual Studio Codeがインストールされていない場合は、http://code.visualstudio.comからダウンロードできます。プロジェクトフォルダを開いた後のディレクトリの内容は次のとおりです。

の、

  • コントラクトフォルダは、開発されたスマートコントラクトのソースコードを保存するために使用されます。フォルダ内のMigrations.solは、Solidityスマートコントラクトの展開を支援するためにTruffleが使用する補助コードです。自由に変更しないでください。
  • mirgationsフォルダーは、コントラクトをデプロイ、コンパイル、およびテストするためのJavaScriptコードを保持するフォルダーです。
  • 単体テストのソースコードは、テストフォルダに保存されています。
  • truffle-config.jsファイルとtruffle.jsファイルは、Truffle Framework構成ファイル情報を保存するために使用されます。実際、2つのファイルの内容は同じです。truffle.jsファイルは、macOSおよびLinuxオペレーティングシステムで使用されます。Windowsでは、名前の重複を避けるために、代わりにtruffle-config.jsを構成ファイルとして使用します。

コントラクトをコンパイルしてデプロイします


Ganacheはデフォルトでローカルポート7545で実行されます。実行後、デフォルトで10個のアカウントが作成され、各アカウントの残高は100ETHになります。

truffle.jsを変更する

チェーンにデプロイするには、トリュフにIP、ポート、およびネットワークIDを通知する必要があります。truffle.jsを変更します。

module.exports = {  
    networks: {  
        development: {  
            host: 'localhost',  
            port: '7545',  
            network_id: '*' // Match any network id  
        }  
    }  
}; 


コンパイルしてデプロイする

トリュフコンパイル  

 コントラクトが変更された場合、truffle compileは変更されたコントラクトのみをコンパイルします。コントラクト全体のコンパイルを強制するには、trufflecompile--compile-allを使用します。


トリュフの移行

移行/2_deploy_contracts.js 

 必要に応じてパラメータを使用

module.exports = function(deployer) {
  deployer.deploy(Greeter,"Hello, World!");//"参数在第二个变量携带"
};
var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
deployer.deploy(Voting, ['Alice', 'Bob', 'Cary'], {gas:
290000});
};

上記からわかるように、デプロイヤーは、コンストラクターパラメーターに続く最初のパラメーターがコントラクト名であることを期待しています。

この場合、候補の配列であるパラメーターは1つだけです。3番目のパラメーターは、コードのデプロイに必要なガスを指定するために使用するハッシュです。ガスの量は、契約の規模によって異なります。投票契約の場合、290000で十分です。

契約住所 

テスト契約


テストコンテンツ

テストコードは、主にMetaCoinのインターフェイスが使用可能かどうかをテストするために、MetaCoinのサンプルコードで記述されています。

contract TestMetacoin {

// 测试已经部署的智能合约
function testInitialBalanceUsingDeployedContract() public {
    MetaCoin meta = MetaCoin(DeployedAddresses.MetaCoin());

    uint expected = 10000;

    Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");
}


// 测试新的智能合约
function testInitialBalanceWithNewMetaCoin() public {
    MetaCoin meta = new MetaCoin();

    uint expected = 10000;

    Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");
}

}


テスト契約

コマンドを直接入力して、契約をテストします。

truffle test



結果は、5つのテストすべてに合格したことを示しています。

使える

テストを呼び出すためのjs、solコントラクトテストを書くために使用することもできます 


———————————————
著作権ステートメント:この記事は、CSDNブロガー「MyHerux」によるオリジナルの記事です。CC4.0BY-SAの著作権契約に従い、元のソースリンクとこのステートメントを添付してください転載用。
元のリンク:https://blog.csdn.net/MyHerux/article/details/80340095


 

おすすめ

転載: blog.csdn.net/u013288190/article/details/123840776