DApps開発のフレームワークTruffle
どうも、Ethereumの分散アプリケーションが大好きになった高妻です。
今回は、Ethereumの分散アプリケーション開発を効率化するtruffle(トリュフ)について説明します。
TruffleはEtherreumを開発したConsenSysが開発しているフレームワークなので使わない手はないですね。公式サイトはこちら。
まずは雛形の作成
インストールはnpmでします。
npm install -g truffle
雛形作成
mkdir sample cd sample truffle init
雛形は下記のような構成になっています。treeはMacの場合brewでインストールできるので試してみてください。
$ tree . ├── contracts │ ├── ConvertLib.sol │ ├── MetaCoin.sol │ └── Migrations.sol ├── migrations │ ├── 1_initial_migration.js │ └── 2_deploy_contracts.js ├── test │ ├── TestMetacoin.sol │ └── metacoin.js └── truffle.js
Solidityのコンパイル
とりあえず雛形ソースコードのコンパイルをしてみます。/build配下にコンパイル後のソースコードが生成されるみたいです。
$ truffle compile Compiling ./contracts/ConvertLib.sol... Compiling ./contracts/MetaCoin.sol... Compiling ./contracts/Migrations.sol... Writing artifacts to ./build/contracts
テスト実行
次にテストを実行してみます。Warningはたくさん出てましたが全て通りました。簡単ですね。
$ truffle test TestMetacoin ✓ testInitialBalanceUsingDeployedContract (32711ms) ✓ testInitialBalanceWithNewMetaCoin (12230ms) Contract: MetaCoin ✓ should put 10000 MetaCoin in the first account ✓ should call a function that depends on a linked library ✓ should send coin correctly (31541ms) 5 passing (2m)
コントラクトのデプロイ
デプロイをするにはデプロイ先のプライベート・ネットを先に立ち上げます。Passphraseが聞かれるので一番最初のアカウント作成時のものを入力してください。
geth --datadir ./datadir --networkid 10 --ipcpath /Users/ユーザー名/Library/Ethereum/geth.ipc --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" --unlock 0 console 2>> /tmp/geth.log
立ち上げるのに成功したらデプロイを行います。デプロイも簡単に完了しました。
$ truffle deploy Using network 'development'. Running migration: 1_initial_migration.js Deploying Migrations... ... 0x80b3eefcc82a2bd15711ff1eb95fa42d5e12e350a8727bc1a5dcccf2776ea0d0 Migrations: 0x4562df311481f168a1ae380fdc0118cb4574eef5 Saving successful migration to network... ... 0x5469e28236296e2ca79c1b89f9aa4f4044de39954f6d24d1ed092c5f586752e1 Saving artifacts... Running migration: 2_deploy_contracts.js Deploying ConvertLib... ... 0xc27ffdec853ece379796e4a28b9d1524b2842fe585a34515a1a0c17d5ac9cf2d ConvertLib: 0xa02d0dbc4958eec5513ebb0ea957cab7c8277432 Linking ConvertLib to MetaCoin Deploying MetaCoin... ... 0x1434b4426e9049ab58bf0e3a74c69ed5b9bec9863e48daf9f5ac25034164ac49 MetaCoin: 0x647a82ec562f8ddeef2c5fce20094cd8306af371 Saving successful migration to network... ... 0xad86e4c2a6420867bafa1be6aaf850f922f3b3f4d1a702480715d8062fe66947 Saving artifacts...
コントラクトのメソッド呼び出し
ここからがまだ分からないのでわかったら追記します!
関連記事も読んでみてください!
おすすめ書籍
Ethereumを使ったDApps開発を学びたいなら今だとこの1冊が1番良いです!開発環境の構築から使うべきツール、フレームワーク、実装方法・注意点まで網羅的に解説されている書籍なのでおすすめです。出版も2018年1月ということでかなり新しい本で、DMM Bitcoinを作っているネクストカレンシー所属の方が書いているので信頼できます。
ビットコインとブロックチェーンの詳細をしっかりと学びたい方にはこちらの書籍が非常におすすめです。ウォレットの仕組み、楕円曲線暗号、P2Pプロトコル、公開鍵暗号などビットコインを支える技術について詳細に解説されています。また、サンプルコードを通して実際に手を動かして学べるので非常に濃い内容となっています。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す