ユーザ用ツール

サイト用ツール


blockchain:truffleを使ったスマートコントラクト開発

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
blockchain:truffleを使ったスマートコントラクト開発 [2022/04/28 00:24] dotblockchain:truffleを使ったスマートコントラクト開発 [2022/04/29 01:44] (現在) dot
行 1: 行 1:
 ====== Truffleを使ったスマートコントラクト開発 ====== ====== Truffleを使ったスマートコントラクト開発 ======
  
-Truffle+Truffle は ethereum スマートコントラクトのコンパイル、マイグレーション、テストを行うためのフレームワークです。
  
 ====== 必要なソフトウエア ====== ====== 必要なソフトウエア ======
行 59: 行 59:
  
  
-TODO: 各ファイルとディレクトリの説明。+各ファイルとディレクトリの説明。
  
-  * truffle-config.js +  * truffle-config.js: truffle の設定ファイル。ethereum ブロックチェーンのアドレス等を設定する。 
-  * contracts +  * contracts: スマートコントラクトのソースコードを格納するディレクトリ。最初からマイグレーションの現在のバージョンを管理するための「Migrations.sol」が作られています。 
-  * migrations +  * migrations: マイグレーションの設定ファイルを格納するディレクトリ。最初からマイグレーションの現在のバージョンを管理するための「1_initial_migration.js」が作られています。 
-  * test+  * test: テストコードを格納するディレクトリ。
  
  
行 280: 行 280:
 truffle(development)> truffle(development)>
 </code> </code>
 +
 +:!: 「BN」は「BigNumber」という意味です。後々、テスト等で値の比較をするときに int とは扱いが変わってきますので、覚えておいてください。
 +
  
 Counter コントラクトの inc を呼び出す。 Counter コントラクトの inc を呼び出す。
行 329: 行 332:
  
 <code JavaScript> <code JavaScript>
 +const Counter = artifacts.require("Counter");
 +
 +/*
 + * uncomment accounts to access the test accounts made available by the
 + * Ethereum client
 + * See docs: https://www.trufflesuite.com/docs/truffle/testing/writing-tests-in-javascript
 + */
 +contract("SimpleCounterTest", function (/* accounts */) {
 +  it("should assert true", async function () {
 +    await Counter.deployed();
 +    return assert.isTrue(true);
 +  });
 +
 +  it("Counter inc", async function () {
 +    let counter = await Counter.deployed();
 +
 +    let before = await counter.get();
 +    await counter.inc();
 +    let after = await counter.get();
 +
 +    // before and after is BN(BigNumber)
 +    return assert.equal(after.toNumber(), before.toNumber() + 1);
 +  });
 +
 +  it("Counter dec", async function () {
 +    let counter = await Counter.deployed();
 +
 +    let before = await counter.get();
 +    await counter.dec();
 +    let after = await counter.get();
 +
 +    // before and after is BN(BigNumber)
 +    return assert.equal(after.toNumber(), before.toNumber() - 1);
 +  });
 +});
 </code> </code>
  
 +===== 実行 =====
 +
 +<code PowerShell>
 +truffle(development)> truffle test
 +Using network 'development'.
 +
 +
 +Compiling your contracts...
 +===========================
 +> Compiling .\contracts\Counter.sol
 +> Compiling .\contracts\Migrations.sol
 +> Artifacts written to C:\Users\shinobu\AppData\Local\Temp\test--15628-Lt5184Kc9NTX
 +> Compiled successfully using:
 +   - solc: 0.8.13+commit.abaa5c0e.Emscripten.clang
 +
 +
 +  Contract: SimpleCounterTest
 +    √ should assert true (55ms)
 +    √ Counter inc (1361ms)
 +    √ Counter dec (1419ms)
 +
 +
 +  3 passing (3s)
 +
 +truffle(development)>
 +</code>
blockchain/truffleを使ったスマートコントラクト開発.1651105475.txt.gz · 最終更新: 2022/04/28 00:24 by dot