ethereumjs-txでトランザクションを生成する[Infula][sendSignedTransaction]

2018年6月17日

INFURAではプライベートキーを提供していない関係で、sendTransactionを利用することができません。しかし、ethereumjs-txを利用してトランザクションを生成すれば、デプロイしたコントラクトに対してステートを変更することが可能です。

 

開発環境
macOS High Sierra
Truffle v4.1.8
node v8.9.3
web3@1.0.0-beta.34
ethereumjs-tx@1.3.4

 

 

下記関連ページでは、プライベートネットであるGanache上でコントラクトをデプロイしました。

 

web3.jsでブラウザからコントラクトにアクセスする[Ganache]

 

下記は、そのデプロイしたコントラクトのコードですが、set関数にはコントラクトのステートを変更させる処理が記述されています。web3ではこの処理をsendTransactionによって実行する(set関数を呼び出す)ことできます(上記ページ参照)。

 

 

 

ただ、INFURAでデプロイしたコントラクトに対しては、sendTransactionを利用することができません。先に述べたようにINFURAではプライベートキーを提供していないので、web3だけでは署名付きのトランザクションを生成することができず、コントラクトのステートを変更させるような処理を行えないからです。

 

しかし、ethereumjs-txを利用すればトランザクションを生成することが可能となります。今回は、set関数の引数に”hanako”と指定するような処理をトランザクションに設定し、”taro”から”hanako”とコントラクトのステートを変更させるような処理をしてみます。

 

まずは前提として、上記のコントラクトコードをINFURAにデプロイします。その手順に関しては下記のページを参照して下さい。※下記ページ内のHelloWorld.solを、そのまま上記のコントラクトコードに置き換えて下さい。

 

TruffleでINFURAにコントラクトをデプロイする[web3.js]

 

コントラクトをデプロイすることができたら、Node.jsによってそのコントラクトにアクセスします。

 

web3とethereumjs-txをインストールしておきます。

 

 

33行目

nonceには、トランザクションを生成するアカウント(つまりfromに設定しているアカウント)のnonceの値が設定されます。

 

 

参照ページ


https://stackoverflow.com/questions/48838899/sending-signed-transactions-to-ropsten

 

 

LINEで送る
Pocket

Copyright © 2018 思考の葉 All Rights Reserved.  プライバシーポリシー