Truffleを使ってEthereumの分散アプリケーションを開発する




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プロトコル、公開鍵暗号などビットコインを支える技術について詳細に解説されています。また、サンプルコードを通して実際に手を動かして学べるので非常に濃い内容となっています。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です