用語集
json インタフェース
web3.js は json インタフェースにより、web3.eth.Contract オブジェクトを使用して、スマートコントラクトおよびそのメソッドやイベントを表す JavaScript オブジェクトを作ることが可能です。 json インタフェースの仕様 - 関数
type : "function" または "constructor"
省略可能
デフォルト値: "function"
"fallback" もセット可能ですが、web3.js では扱いません。
name : 関数名
constant : 関数がブロックチェーンの状態を変更しない場合は true
payable : 関数が ether を受け付ける場合は true
デフォルト値: false
stateMutability : 次のいずれか値の文字列
pure : 関数がブロックチェーンの状態を読まない
view : 関数ががブロックチェーンの状態を変更しない
nonpayable : 関数が ether を受け付けない
payable : 関数が ether を受け付ける
inputs : 以下のそれぞれを含むオブジェクトの配列
name : パラメータ名
type : パラメータの型
いわゆる引数とその型が入るよ!hideyoshi.icon
outputs : inputsと同様のオブジェクトの配列
アウトプット
存在しない場合は省略可能
いわゆる戻り値とその型が入るよ!hideyoshi.icon
json インタフェースの仕様 - イベント
type : 常に "event"
name : イベント名
inputs : 次のそれぞれを含むオブジェクトの配列
name : パラメータ名
type : パラメータの型
indexed :
フィールドがログの見出しの一部の場合 true
ログのデータセグメントの一つの場合は false
anonymous : イベントが anonymous(匿名)として宣言されている場合true
サンプル
code:example.js
contract Test {
uint a;
address d = 0x12345678901234567890123456789012;
function Test(uint testInt) { a = testInt;}
event Event(uint indexed b, bytes32 c);
event Event2(uint indexed b, bytes32 c);
function foo(uint b, bytes32 c) returns(address) {
Event(b, c);
return d;
}
}
// would result in the JSON:
[{
"type":"constructor",
"payable":false,
"stateMutability":"nonpayable"
},{
"type":"function",
"name":"foo",
"constant":false,
"payable":false,
"stateMutability":"nonpayable",
"inputs":[
{"name":"b","type":"uint256"},
{"name":"c","type":"bytes32"}],
},{
"type":"event",
"name":"Event",
"inputs":[
{"indexed":true,"name":"b","type":"uint256"},
{"indexed":false,"name":"c","type":"bytes32"}],
"anonymous":false
},{
"type":"event",
"name":"Event2",
"inputs":[
{"indexed":true,"name":"b","type":"uint256"},
{"indexed":false,"name":"c","type":"bytes32"}],
"anonymous":false
}]
原文