4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Truffleとは

  • スマートコントラクトの開発・テスト・デプロイ周りのコマンドなどを管理してくれるツールチェーン
  • mavenまたはgradleのようにプロジェクト構成などを作成してくれる

やってみたこと

  • プロジェクト作成
    • 下記コマンドで初期化して、初期ファイルを作成してくれます
mkdir my_token
cd my_token
yarn global add truffle
truffle init
スクリーンショット 2017-12-17 08.51.00.png

contracts/Migrations.solファイルはサンプルファイルではなく、マイグレーションを管理するコントラクトである為、削除するとtruffle migrateが動けなくなってしまう

  • 自分のコントラクト追加
    • contractsSingleNumRegister.solファイルを追加し、下記内容を追記する
pragma solidity ^0.4.17;

contract SingleNumRegister {
    uint storedData;

    function set(uint x) public {
        storedData = x;
    }

    function get() public view returns (uint retVal) {
        return storedData;
    }
}
  • デプロイ
    • truffle compile実行しコントラクトをコンパイルする
    • truffle developでコンソール起動する
    • migrateコマンドでマイグレーション実行する
$ truffle compile                                                                                                                      
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/SingleNumRegister.sol...
Writing artifacts to ./build/contracts

$ truffle develop
truffle develop                                                                                                                      0|09:17:45Truffle Develop started at http://localhost:9545/

Accounts:
(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57
(1) 0xf17f52151ebef6c7334fad080c5704d77216b732
(2) 0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef
(3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544
(4) 0x0d1d4e623d10f9fba5db95830f7d3839406c6af2
(5) 0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e
(6) 0x2191ef87e392377ec08e7c08eb105ef5448eced5
(7) 0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5
(8) 0x6330a553fc93768f612722bb8c2ec78ac90b3bbc
(9) 0x5aeda56215b167893e80b4fe645ba6d5bab767de

Mnemonic: candy maple cake sugar pudding cream honey rich smooth crumble sweet treat

truffle(develop)> migrate
Using network 'develop'.

Running migration: 1_initial_migration.js
  Replacing Migrations...
  ... 0xb2f86a092885a3b3f1de6bebec62849e2dec93cf4f68ac58ef94b1a491ec4f58
  Migrations: 0x8cdaf0cd259887258bc13a92c0a6da92698644c0
Saving successful migration to network...
  ... 0xd7bc86d31bee32fa3988f1c1eabce403a1b5d570340a3a9cdba53a472ee8c956
Saving artifacts...
Running migration: 2_single_num_register_migration.js
  Deploying SingleNumRegister...
  ... 0xfb1aa8e153f02d48acd98f7747cbf6f24edbb749289d6d07a825be456335b57e
  SingleNumRegister: 0x345ca3e014aaf5dca488057592ee47305d9b3e10
Saving successful migration to network...
  ... 0xf36163615f41ef7ed8f4a8f192149a0bf633fe1a2398ce001bf44c43dc7bdda0
Saving artifacts...
truffle(develop)>
  • コントラクトとやり取りしてみる
sm = SingleNumRegister.at(SingleNumRegister.address)
// コントラクトのABI情報表示される
...

truffle(develop)> sm.get()
{ [String: '0'] s: 1, e: 0, c: [ 0 ] }
truffle(develop)> sm.get()
{ [String: '0'] s: 1, e: 0, c: [ 0 ] }
truffle(develop)> sm.set(5)
{ tx: '0xa7443bc291fa9072cf3e699be9a9820aaedd2430dbca4d95ebf4882eb65d7fc6',
  receipt:
   { transactionHash: '0xa7443bc291fa9072cf3e699be9a9820aaedd2430dbca4d95ebf4882eb65d7fc6',
     transactionIndex: 0,
     blockHash: '0x1c2bde38ee48aced8041b2d5d6fe327522286953f3be57b4ce36aea39d439c09',
     blockNumber: 5,
     gasUsed: 41642,
     cumulativeGasUsed: 41642,
     contractAddress: null,
     logs: [] },
  logs: [] }
truffle(develop)> sm.get()
{ [String: '5'] s: 1, e: 0, c: [ 5 ] }
truffle(develop)>.exit

// .exit でコンソールを中止する
  • テスト
    • truffle testを実行すれば、テスト実行される
    • truffle のテストはMochaとChainを使ってる

まとめ

  • 一通りコントラクトをデプロイして、やり取りできた
  • マイグレーションの実際処理はまだいろいろ分かってないので、もうちょっと調べてみたい
    • これでコントラクトの修正ができ、バージョンアップとかできるようになる?
    • 古いコントラクトは削除される?
    • 新しいコントラクトから古いコントラクトのデータを引き継ぎできる?

参考記事

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?