本文へスキップ
このページは英語からの機械翻訳を使用しており、誤りや不明瞭な表現が含まれている可能性があります。最も正確な情報については、オリジナルの英語版をご覧ください。頻繁な更新のため、一部のコンテンツはオリジナルの英語になっている可能性があります。Crowdinでの取り組みに参加して、このページの翻訳改善にご協力ください。 (Crowdin translation page, Contributing guide)

caver.contract

caver.contractオブジェクトは、kaiaブロックチェーンプラットフォーム上のスマートコントラクトとのやり取りを容易にする。 新しいコントラクト・オブジェクトを作成する際、そのスマート・コントラクトのJSONインターフェースを提供する必要がある。caver-jsは、javascriptでコントラクト・オブジェクトを使用するすべての呼び出しを、RPCを介した低レベルABI呼び出しに自動的に変換する。

これにより、スマート・コントラクトをJavaScriptのオブジェクトのように扱うことができる。

caver.contract.create


caver.contract.create(jsonInterface [, address] [, options])

JSON インターフェース・オブジェクトに定義されたすべてのメソッドとイベントを持つ、新しいコントラクト・インスタンスを作成します。 この関数は、new caver.contract と同じ働きをする。

NOTE caver.contract.createは、caver-js v1.6.1からサポートされています。

パラメーター

new caver.contract](#new-contract) を参照。

リターン・バリュー

new caver.contract](#new-contract) を参照。


const contract = caver.contract.create([
{
constant: true,
inputs: [{ name: 'interfaceId', type: 'bytes4' }],
name: 'supportsInterface',
outputs: [{ name: '', type: 'bool' }],
payable: false,
stateMutability: 'view',
type: 'function',
},
...
], '0x{address in hex}')

caver.contract


new caver.contract(jsonInterface [, address] [, options])

JSON インターフェース・オブジェクトに定義されたすべてのメソッドとイベントを持つ、新しいコントラクト・インスタンスを作成します。

パラメーター

名称タイプ説明
jsonInterfaceオブジェクトインスタンス化するコントラクトのJSONインターフェース
住所ストリング(オプション) 呼び出すスマート・コントラクトのアドレス。 myContract.options.address='0x1234...'`を使って後で追加することができる。
オプションオブジェクト(オプション)契約のオプション。 詳細は以下の表を参照のこと。

オプション・オブジェクトには以下のものが含まれる:

名称タイプ説明
よりストリング(オプション) 取引を行うアドレス。
ガス価格ストリング(オプション)取引に使用するガス価格(peb)。
ガス番号(オプション) 取引に提供されるガスの最大値(ガスリミット)。
データストリング(オプション)契約のバイトコード。 契約が配備されるときに使用される。
フィーデレゲーションブーリアン(オプション) 手数料委任取引を使用するかどうか。
料金支払者ストリング(オプション)トランザクションFeeを支払方のアドレス。 feeDelegationtrue のとき、その値はトランザクションの feePayer フィールドに設定される。
手数料率ストリング(任意)手数料支払者が負担する取引手数料の比率。 feeDelegationtrue で、feeRatioに有効な値が設定されている場合、部分的な料金委譲トランザクショ ンが使用される。 有効範囲は1~99。 0や100以上の比率は許されない。

リターン・バリュー

タイプ説明
オブジェクトすべてのメソッドとイベントを持つ契約インスタンス。


const myContract = new caver.contract([...], '0x{address in hex}', { gasPrice: '25000000000' })

myContract.options


myContract.options

契約インスタンスの options オブジェクト。 fromgasgasPricefeePayer および feeRatio は、トランザクションを送信する際のフォールバック値として使用される。

プロパティ

名称タイプ説明
住所ストリング契約が展開されている住所。
jsonInterface配列契約の JSON インターフェース。
よりストリング契約展開/実行トランザクションが送信されるデフォルトのアドレス。 トランザクションの作成時に from アドレスが定義されていない場合、この myContract.options.from がトランザクションの作成に常に使用される。
ガス価格ストリング取引に使用するペブでのガス料金。
ガス番号取引に提供されるガスの上限(ガスリミット)。
データストリング契約のバイトコード。 契約が配備されるときに使用される。
フィーデレゲーションブーリアン(オプション) 手数料委任取引を使用するかどうか。
料金支払者ストリング(オプション)取引手数料を支払う手数料支払人の住所。 feeDelegationtrue のとき、その値はトランザクションの feePayer フィールドに設定される。
手数料率ストリング(任意)手数料支払者が負担する取引手数料の比率。 feeDelegationtrue で、feeRatioに有効な値が設定されている場合、部分的な料金委譲トランザクショ ンが使用される。 有効範囲は1~99。 0や100以上の比率は許されない。

NOTE feeDelegationfeePayerfeeRatio は caver-js v1.6.1 からサポートされています。


> myContract.options
{
address: [Getter/Setter],
jsonInterface: [Getter/Setter],
from: [Getter/Setter],
feePayer: [Getter/Setter],
feeDelegation: [Getter/Setter],
feeRatio: [Getter/Setter],
gasPrice: [Getter/Setter],
gas: [Getter/Setter],
data: [Getter/Setter]
}
> myContract.options.from = '0x1234567890123456789012345678901234567891' // default from address
> myContract.options.gasPrice = '25000000000000' // default gas price in peb
> myContract.options.gas = 5000000 // provide as fallback always 5M gas
> myContract.options.feeDelegation = true // use fee delegation transaction
> myContract.options.feePayer = '0x1234567890123456789012345678901234567891' // default fee payer address
> myContract.options.feeRatio = 20 // default fee ratio when send partial fee delegation transaction

myContract.options.address


myContract.options.アドレス

この契約インスタンス myContract に使用されるアドレス。 この契約からcaver-jsによって生成されるすべてのトランザクションは、このアドレスをトランザクションのtoとして含む。

プロパティ

名称タイプ説明
住所string \このコントラクトのアドレス。まだ設定されていない場合は null


> myContract.options.address
'0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae'
// 契約アドレスを設定
> myContract.options.address = '0x1234FFDD...'

myContract.options.jsonInterface


myContract.options.jsonInterface

この契約の ABI myContract から派生した JSON インターフェースオブジェクト。

プロパティ

名称タイプ説明
jsonInterface配列この契約の JSON インターフェース。 これを再設定すると、コントラクト・インスタンスのメソッドとイベントが再生成される。


> myContract.options.jsonInterface
[
{
constant: true,
inputs: [ { name: 'interfaceId', type: 'bytes4' } ],
name: 'supportsInterface',
outputs: [ { name: '', type: 'bool' } ],
payable: false,
stateMutability: 'view',
type: 'function',
signature: '0x01ffc9a7',
},
...
{
anonymous: false,
inputs: [
{ indexed: true, name: 'owner', type: 'address' },
{ indexed: true, name: 'spender', type: 'address' },
{ indexed: false, name: 'value', type: 'uint256' }
],
name: 'Approval',
type: 'event',
signature: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',
},
]
// set a new jsonInterface
> myContract.options.jsonInterface = [...]

myContract.clone


myContract.clone([contractAddress])

現在の契約インスタンスをクローンします。

パラメーター

名称タイプ説明
契約住所ストリング(オプション)新しい契約の住所。 省略された場合、元のインスタンスのアドレスが設定される(例:myContract.options.address)。

リターン・バリュー

タイプ説明
オブジェクトクローン化された新しい契約インスタンス。


> myContract.clone()
Contract {
currentProvider:[Getter/Setter],
...
_keyrings:KeyringContainer { ... }
}.

myContract.deploy


myContract.deploy(options, byteCode [, param1 [, param2 [, ...]])

契約をkaiaネットワークに展開する。 デプロイに成功すると、プロミスは新しいコントラクト・インスタンスで解決される。 既存のmyContract.deploy関数の使い勝手とは異なり、この関数はkaiaネットワークに直接トランザクションを送信する。 返されたオブジェクトで send() を呼び出す必要はない。

NOTE caver.walletに署名を行うには、optionsまたはmyContract.optionsfromfeePayerに対応するキーリングのインスタンスが含まれていなければならない。

NOTE myContract.deploy は caver-js v1.6.1 からサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクト送信に使用するオプション。 詳細はmethods.methodName.sendの表を参照のこと。
バイトコードストリング契約のバイトコード。
パラメーターミックス(オプション) デプロイ時にコンストラクタに渡されるパラメータ。

リターン・バリュー

PromisePromiEvent を返す:プロミスは新しいコントラクトのインスタンスで解決される。

タイプ説明
プロミイベントプロミスを組み合わせたイベント・エミッター。 取引レシートが利用可能になれば解決する。 もし send()myContract.deploy() から呼ばれた場合、プロミスは新しいコントラクトのインスタンスで解決されます。

PromiEventでは、以下のイベントが利用可能です:

  • トランザクションハッシュ transactionHash: トランザクションが送信され、トランザクションハッシュが利用可能になった直後に発生する。 型は string である。
  • receipt:トランザクションのレシートが利用可能になったときに発生する。 詳細については、caver.rpc.klay.getTransactionReceipt を参照してください。 型は object である。
  • error:送信中にエラーが発生した場合に発生する。 ガス欠エラーの場合、2番目のパラメータはレシートとなる。 その型は Error である。


// Deploy a smart contract without constructor arguments
> myContract.deploy({
from: '0x{address in hex}',
gas: 1500000,
}, '0x{byte code}')
.on('error', function(error) { ... })
.on('transactionHash', function(transactionHash) { ... })
.on('receipt', function(receipt) {
console.log(receipt.contractAddress) // contains the new contract address
})
.then(function(newContractInstance) {
console.log(newContractInstance.options.address) // instance with the new contract address
})
// Deploy a smart contract with constructor arguments
> myContract.deploy({
from: '0x{address in hex}',
gas: 1500000,
}, '0x{byte code}', 'keyString', ...)
.on('error', function(error) { ... })
.on('transactionHash', function(transactionHash) { ... })
.on('receipt', function(receipt) {
console.log(receipt.contractAddress)
})
.then(function(newContractInstance) {
console.log(newContractInstance.options.address)
})
// Deploy a smart contract with fee delegation transaction (TxTypeFeeDelegatedSmartContractDeploy)
> myContract.deploy({
from: '0x{address in hex}',
feeDelegation: true,
feePayer: '0x{address in hex}',
gas: 1500000,
}, '0x{byte code}')
.on('error', function(error) { ... })
.on('transactionHash', function(transactionHash) { ... })
.on('receipt', function(receipt) {
console.log(receipt.contractAddress)
})
.then(function(newContractInstance) {
console.log(newContractInstance.options.address)
})
// Deploy a smart contract with partial fee delegation transaction (TxTypeFeeDelegatedSmartContractDeployWithRatio)
> myContract.deploy({
from: '0x{address in hex}',
feeDelegation: true,
feePayer: '0x{address in hex}',
feeRatio: 30,
gas: 1500000,
}, '0x{byte code}')
.on('error', function(error) { ... })
.on('transactionHash', function(transactionHash) { ... })
.on('receipt', function(receipt) {
console.log(receipt.contractAddress)
})
.then(function(newContractInstance) {
console.log(newContractInstance.options.address)
})

myContract.deploy


myContract.deploy(options)

スマートコントラクトをkaiaにデプロイする際に使用したオブジェクトを返します。 スマートコントラクトのデプロイ・トランザクションは、myContract.deploy({ data, arguments }).send(options) を呼び出すことで送信できる。 デプロイに成功すると、プロミスは新しいコントラクト・インスタンスで解決される。

パラメーター

名称タイプ説明
オプションオブジェクト展開に使用するオプションオブジェクト。 以下の表を参照してください。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
データストリング契約のバイトコード。
引数配列(オプション) デプロイ時にコンストラクタに渡される引数。

リターン・バリュー

タイプ説明
オブジェクト契約配布のための引数や関数が定義されたオブジェクト。 以下の表を参照してください。

このオブジェクトには以下が含まれる:

名称タイプ説明
引数配列options.argumentsに渡された引数。
送信機能カイアにコントラクトをデプロイする関数。 この関数の結果としてのプロミスは、新しいコントラクト・インスタンスで解決される。
サイン機能送信者としてスマートコントラクトのデプロイ取引に署名する関数。 sign関数は署名されたトランザクションを返す。
SignAsFeePayer機能スマートコントラクトのデプロイ取引に手数料支払者として署名する機能。 signAsFeePayer 関数は署名されたトランザクションを返す。
推定ガス機能配備に使用されるガスを見積もる関数。 この機能を実行しても、契約は破棄されない。
encodeABI機能デプロイのABIをエンコードする関数で、コントラクトデータ+コンストラクタのパラメータとなる。 この機能を実行しても、契約は破棄されない。

注意 myContract.deploy({ data, arguments }).sign(options)myContract.deploy({ data, arguments }).signAsFeePayer(options) は caver-js v1.6.1 以降でサポートされています。


> myContract.deploy({
data: '0x12345...',
arguments: [123, 'My string']
})
.send({
from: '0x1234567890123456789012345678901234567891',
gas: 1500000,
value: 0,
}, function(error, transactionHash) { ... })
.on('error', function(error) { ... })
.on('transactionHash', function(transactionHash) { ... })
.on('receipt', function(receipt) {
console.log(receipt.contractAddress) // contains the new contract address
})
.then(function(newContractInstance) {
console.log(newContractInstance.options.address) // instance with the new contract address
})
// When the data is already set as an option to the contract itself
> myContract.options.data = '0x12345...'
> myContract.deploy({
arguments: [123, 'My string']
})
.send({
from: '0x1234567890123456789012345678901234567891',
gas: 1500000,
value: 0,
})
.then(function(newContractInstance) {
console.log(newContractInstance.options.address) // instance with the new contract address
})
// Simply encoding
> myContract.deploy({
data: '0x12345...',
arguments: [123, 'My string']
})
.encodeABI()
'0x12345...0000012345678765432'
// Gas estimation
> myContract.deploy({
data: '0x12345...',
arguments: [123, 'My string']
})
.estimateGas(function(err, gas) {
console.log(gas)
})

myContract.send


myContract.send(options, methodName [, param1 [, param2 [, ...]])

スマートコントラクトの機能を実行するためにトランザクションを提出する。 これにより、スマート・コントラクトの状態を変更することができる。

この関数で使用されるトランザクションタイプは、options または myContract.options で定義された値に依存する。 myContract.sendで手数料を委譲したトランザクションを使用したい場合は、feeDelegationfeePayerを適切に設定する必要がある。

NOTE caver.walletに署名を行うには、optionsまたはmyContract.optionsfromfeePayerに対応するキーリングのインスタンスが含まれていなければならない。

NOTE myContract.send は caver-js v1.6.1 以降でサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクト送信に使用するオプション。 詳細はmethods.methodName.sendの表を参照のこと。
メソッド名ストリング実行するコントラクト関数のメソッド名。
パラメーターミックス(オプション) スマートコントラクト関数に渡されるパラメータ。

リターン・バリュー

PromisePromiEvent を返す。

タイプ説明
プロミイベントプロミスを組み合わせたイベント・エミッター。 取引レシートが利用可能になれば解決する。 約束は新しい契約インスタンスで解決される。

PromiEventでは、以下のイベントが利用可能です:

  • transactionHash:トランザクションが送信され、トランザクションハッシュが利用可能になった直後に発生する。 型は string である。
  • receipt:トランザクションのレシートが利用可能になったときに発生する。 詳細については、caver.rpc.klay.getTransactionReceipt を参照してください。 その型は object である。
  • error:送信中にエラーが発生した場合に発生する。 ガス欠エラーの場合、2番目のパラメータはレシートとなる。 その型は Error である。


// Send a SmartContractExecution and use the promise
> myContract.send({ from: '0x{address in hex}', gas: 1000000 }, 'methodName', 123).then(console.log)
{
blockHash: '0x294202dcd1d3c422880e2a209b9cd70ce7036300536c78ab74130c5717cb90da',
blockNumber: 16342,
contractAddress: null,
from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
gas: '0xf4240',
gasPrice: '0x5d21dba00',
gasUsed: 47411,
input: '0x983b2...',
logsBloom: '0x00800...',
nonce: '0x1cd',
senderTxHash: '0xe3f50d2bab2c462ef99379860d2b634d85a0c9fba4e2b189daf1d96bd4bbf8ff',
signatures: [ { V: '0x4e43', R: '0x2ba27...', S: '0x50d37...' } ],
status: true,
to: '0x361870b50834a6afc3358e81a3f7f1b1eb9c7e55',
transactionHash: '0xe3f50d2bab2c462ef99379860d2b634d85a0c9fba4e2b189daf1d96bd4bbf8ff',
transactionIndex: 0,
type: 'TxTypeSmartContractExecution',
typeInt: 48,
value: '0x0',
events: {...}
}
// Send a SmartContractExecution and use the event emitter
> myContract.send({ from: '0x{address in hex}', gas: 1000000 }, 'methodName', 123)
.on('transactionHash', function(hash) {
...
})
.on('receipt', function(receipt) {
console.log(receipt)
})
.on('error', console.error)
// Send a FeeDelegatedSmartContractExecution
> myContract.send({
from: '0x{address in hex}',
gas: 1000000,
feeDelegation: true,
feePayer: '0x{address in hex}',
}, 'methodName', 123).then(console.log)
{
blockHash: '0x149e36f279577c306fccb9779a0274e802501c32f7054c951f592778bd5c168a',
blockNumber: 16458,
contractAddress: null,
feePayer: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
feePayerSignatures: [ { V: '0x4e43', R: '0x48c28...', S: '0x18413...' } ],
from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
gas: '0xf4240',
gasPrice: '0x5d21dba00',
gasUsed: 57411,
input: '0x983b2d5600000000000000000000000022bb89bd35e7b12bd25bea4165cf0f9330032f8c',
logsBloom: '0x00800...',
nonce: '0x1f5',
senderTxHash: '0x5b06ca5046229e066c11dfc0c74fcbc98509294370981f9b142378a8f2bd5fe8',
signatures: [ { V: '0x4e44', R: '0xfb707...', S: '0x641c6...' } ],
status: true,
to: '0x361870b50834a6afc3358e81a3f7f1b1eb9c7e55',
transactionHash: '0x0e04be479ad06ec87acbf49abd44f16a56390c736f0a7354860ebc7fc0f92e13',
transactionIndex: 1,
type: 'TxTypeFeeDelegatedSmartContractExecution',
typeInt: 49,
value: '0x0',
events: {...}
}
// Send a FeeDelegatedSmartContractExecutionWithRatio
> myContract.send({
from: '0x{address in hex}',
gas: 1000000,
feeDelegation: true,
feePayer: '0x{address in hex}',
feeRatio: 30,
}, 'methodName', 123).then(console.log)
{
blockHash: '0x8f0a0137cf7e0fea503c818910140246437db36121871bc54b2ebc688873b3f3',
blockNumber: 16539,
contractAddress: null,
feePayer: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
feePayerSignatures: [ { V: '0x4e43', R: '0x80db0...', S: '0xf8c7c...' } ],
feeRatio: '0x1e',
from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
gas: '0xf4240',
gasPrice: '0x5d21dba00',
gasUsed: 62411,
input: '0x983b2d560000000000000000000000007ad1a538041fa3ba1a721f87203cb1a3822b8eaa',
logsBloom: '0x00800...',
nonce: '0x219',
senderTxHash: '0x14c7b674a0e253b31c85c7be8cbfe4bf9d86e66e940fcae34b854e25eab1ce15',
signatures: [ { V: '0x4e43', R: '0xd57ef...', S: '0xe14f3...' } ],
status: true,
to: '0x361870b50834a6afc3358e81a3f7f1b1eb9c7e55',
transactionHash: '0xfbf00ec189aeb0941d554384f1660ffdac7768b3af2bb1526bcb3983215c1183',
transactionIndex: 0,
type: 'TxTypeFeeDelegatedSmartContractExecutionWithRatio',
typeInt: 50,
value: '0x0',
events: {...}
}

myContract.sign


myContract.sign(options, methodName [, param1 [, param2 [, ...]])

スマートコントラクトを展開したり、スマートコントラクトの機能を実行したりするために、送信者としてスマートコントラクト取引に署名する。

}, 'constructor', byteCode, ...)`.

この関数で使用されるトランザクションタイプは、options または myContract.options で定義された値に依存する。 myContract.signで手数料を委譲したトランザクションを使用したい場合は、feeDelegationtrueとして定義する必要がある。

NOTE caver.walletは、署名を行うために、optionsまたはmyContract.optionsfromに対応するキーリングのインスタンスを含んでいなければならない。

NOTE myContract.signはcaver-js v1.6.1からサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクト送信に使用するオプション。 詳細はmethods.methodName.sendの表を参照のこと。
メソッド名ストリング実行するコントラクト関数のメソッド名。 スマート・コントラクトをデプロイするためのトランザクションに署名したい場合は、メソッド名の代わりに「コンストラクタ」文字列を使用する。
パラメーターミックス(オプション) スマートコントラクト関数に渡されるパラメータ。 スマート・コントラクトをデプロイしたトランザクションに署名したい場合は、byteCodeとコンストラクタのパラメータを渡す。

リターン・バリュー

Promise return Transaction - 署名されたスマートコントラクトのトランザクション。


// Sign a SmartContractDeploy
> myContract.sign({ from: '0x{address in hex}', gas: 1000000 }, 'constructor', byteCode, 123).then(console.log)
SmartContractDeploy {
_type: 'TxTypeSmartContractDeploy',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x4e43', _r: '0xeb6b5...', _s: '0x5e4f9...' } ],
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x2a5'
}
// Sign a FeeDelegatedSmartContractDeploy
> myContract.sign({ from: '0x{address in hex}', feeDelegation: true, gas: 1000000 }, 'constructor', byteCode, 123).then(console.log)
FeeDelegatedSmartContractDeploy {
_type: 'TxTypeFeeDelegatedSmartContractDeploy',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x4e43', _r: '0xee0f5...', _s: '0x31cbf...' } ],
_feePayer: '0x0000000000000000000000000000000000000000',
_feePayerSignatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x320'
}
// Sign a FeeDelegatedSmartContractDeployWithRatio
> myContract.sign({ from: keyring.address, feeDelegation: true, feeRatio: 30, gas: 1000000 }, 'constructor', byteCode, 123).then(console.log)
FeeDelegatedSmartContractDeployWithRatio {
_type: 'TxTypeFeeDelegatedSmartContractDeployWithRatio',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x4e44', _r: '0x4c2b0...', _s: '0x47df8...' } ],
_feePayer: '0x0000000000000000000000000000000000000000',
_feePayerSignatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feeRatio: '0x1e',
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x306'
}
// Sign a SmartContractExecution
> myContract.sign({ from: '0x{address in hex}', gas: 1000000 }, 'methodName', 123).then(console.log)
SmartContractExecution {
_type: 'TxTypeSmartContractExecution',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x4e44', _r: '0xb2846...', _s: '0x422c1...' } ],
_to: '0x361870b50834a6afc3358e81a3f7f1b1eb9c7e55',
_value: '0x0',
_input: '0x983b2...',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x23b'
}
// Sign a FeeDelegatedSmartContractExecution
> myContract.sign({
from: '0x{address in hex}',
gas: 1000000,
feeDelegation: true,
}, 'methodName', 123).then(console.log)
FeeDelegatedSmartContractExecution {
_type: 'TxTypeFeeDelegatedSmartContractExecution',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x4e43', _r: '0xf7676...', _s: '0x42673...' } ],
_feePayer: '0x0000000000000000000000000000000000000000',
_feePayerSignatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_to: '0x361870b50834a6afc3358e81a3f7f1b1eb9c7e55',
_value: '0x0',
_input: '0x983b2...',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x254'
}
// Sign a FeeDelegatedSmartContractExecutionWithRatio
> myContract.sign({
from: '0x{address in hex}',
gas: 1000000,
feeDelegation: true,
feeRatio: 30,
}, 'methodName', 123).then(console.log)
FeeDelegatedSmartContractExecutionWithRatio {
_type: 'TxTypeFeeDelegatedSmartContractExecutionWithRatio',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x4e44', _r: '0x58b06...', _s: '0x637ff...' } ],
_feePayer: '0x0000000000000000000000000000000000000000',
_feePayerSignatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feeRatio: '0x1e',
_to: '0x361870b50834a6afc3358e81a3f7f1b1eb9c7e55',
_value: '0x0',
_input: '0x983b2...',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x262'
}

myContract.signAsFeePayer


myContract.signAsFeePayer(options, methodName [, param1 [, param2 [, ...]])

スマートコントラクトを展開する、またはスマートコントラクトの機能を実行するために、手数料の支払い者としてスマートコントラクト取引に署名する。

スマート・コントラクトがデプロイされている場合、'constructor' を methodName に入力することができる。例えば、myContract.signAsFeePayer({ from, feeDelegation: true, feePayer, .... }, 'constructor', byteCode, ...).

この関数で使用されるトランザクションタイプは、options または myContract.options で定義された値に依存する。 signAsFeePayer は取引手数料の支払者として署名する関数なので、feeDelegation フィールドは true として定義しなければならない。 また、feePayerフィールドに料金支払者のアドレスを定義しなければならない。

NOTE caver.walletに署名を行うには、optionsまたはmyContract.optionsfeePayerに対応するkeyringインスタンスが含まれていなければならない。

NOTE myContract.signAsFeePayer は caver-js v1.6.1 以降でサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクト送信に使用するオプション。 詳細はmethods.methodName.sendの表を参照のこと。
メソッド名ストリング実行するコントラクト関数のメソッド名。 スマート・コントラクトをデプロイするためのトランザクションに署名したい場合は、メソッド名の代わりに「コンストラクタ」文字列を使用する。
パラメーターミックス(オプション) スマートコントラクト関数に渡されるパラメータ。 スマート・コントラクトをデプロイしたトランザクションに署名したい場合は、byteCodeとコンストラクタのパラメータを渡す。

リターン・バリュー

Promise return Transaction - 署名されたスマートコントラクトのトランザクション。


// Sign a FeeDelegatedSmartContractDeploy
> myContract.signAsFeePayer({ from: '0x{address in hex}', feeDelegation: true, feePayer: '0x{address in hex}', gas: 1000000 }, 'constructor', byteCode, 123).then(console.log)
FeeDelegatedSmartContractDeploy {
_type: 'TxTypeFeeDelegatedSmartContractDeploy',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_feePayerSignatures: [ SignatureData { _v: '0x4e43', _r: '0xe0641...', _s: '0x1d21e...' } ],
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x32a'
}
// Sign a FeeDelegatedSmartContractDeployWithRatio
> myContract.signAsFeePayer({ from: keyring.address, feeDelegation: true, feePayer: '0x{address in hex}', feeRatio: 30, gas: 1000000 }, 'constructor', byteCode, 123).then(console.log)
FeeDelegatedSmartContractDeployWithRatio {
_type: 'TxTypeFeeDelegatedSmartContractDeployWithRatio',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_feePayerSignatures: [ SignatureData { _v: '0x4e44', _r: '0x307bd...', _s: '0x75110...' } ],
_feeRatio: '0x1e',
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x359'
}
// Sign a FeeDelegatedSmartContractExecution
> myContract.signAsFeePayer({
from: '0x{address in hex}',
gas: 1000000,
feeDelegation: true,
feePayer: '0x{address in hex}',
}, 'methodName', 123).then(console.log)
FeeDelegatedSmartContractExecution {
_type: 'TxTypeFeeDelegatedSmartContractExecution',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_feePayerSignatures: [ SignatureData { _v: '0x4e43', _r: '0xc58ba...', _s: '0x76fdb...' } ],
_to: '0x4a9d979707aede18fa674711f3b2fe110fac4e7e',
_value: '0x0',
_input: '0x983b2...',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x36c'
}
// Sign a FeeDelegatedSmartContractExecutionWithRatio
> myContract.signAsFeePayer({
from: '0x{address in hex}',
gas: 1000000,
feeDelegation: true,
feePayer: '0x{address in hex}',
feeRatio: 30,
}, 'methodName', 123).then(console.log)
FeeDelegatedSmartContractExecutionWithRatio {
_type: 'TxTypeFeeDelegatedSmartContractExecutionWithRatio',
_from: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0x69c3a6e3485446118d8081063dcef2e65b69ae91',
_feePayerSignatures: [ SignatureData { _v: '0x4e44', _r: '0xeb78d...', _s: '0x2864d...' } ],
_feeRatio: '0x1e',
_to: '0x4a9d979707aede18fa674711f3b2fe110fac4e7e',
_value: '0x0',
_input: '0x983b2...',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x37b'
}

myContract.call


myContract.call('methodName', [param1 [, param2 [, ...]])
myContract.call(options, 'methodName', [param1 [, param2 [, ...]])

定数メソッドを呼び出し、そのスマートコントラクトメソッドをkaia仮想マシン内でトランザクションを送信せずに実行する。 呼び出しによってスマート・コントラクトの状態を変更することはできない。

NOTE myContract.callはcaver-js v1.6.1からサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクト(オプション) 呼び出しに使用するオプション。 詳しくはmethods.methodName.callの表を参照のこと。
メソッド名ストリング呼び出す契約関数のメソッド名。
パラメーターミックス(オプション) スマートコントラクト関数に渡されるパラメータ。

リターン・バリュー

Mixed を返す Promise - スマートコントラクトメソッドの戻り値。 単一の値を返す場合は、そのまま返される。 複数の戻り値を持つ場合は、プロパティとインデックスを持つオブジェクトを返す。


> myContract.call('methodName').then(console.log)
Jasmine
> myContract.call({ from: '0x{address in hex}' }, 'methodName', 123).then(console.log)
Test Result

myContract.decodeFunctionCall


myContract.decodeFunctionCall(functionCall)

関数コールをデコードし、パラメータを返す。

NOTE myContract.decodeFunctionCall は caver-js v1.6.3 以降でサポートされています。

パラメーター

名称タイプ説明
ファンクションコールストリングエンコードされた関数呼び出し文字列。

リターン・バリュー

タイプ説明
オブジェクトプレーンパラメータを含むオブジェクト。 result[0]は、パラメーターの順番で配列のようにアクセスできるように用意されているので、それを使うことができる。


// The myContract variable is instantiated with the below abi.
// [
// {
// constant: true,
// inputs: [{ name: 'key', type: 'string' }],
// name: 'get',
// outputs: [{ name: '', type: 'string' }],
// payable: false,
// stateMutability: 'view',
// type: 'function',
// },
// {
// constant: false,
// inputs: [{ name: 'key', type: 'string' }, { name: 'value', type: 'string' }],
// name: 'set',
// outputs: [],
// payable: false,
// stateMutability: 'nonpayable',
// type: 'function',
// },
// ]
> myContract.decodeFunctionCall('0xe942b5160000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000036b65790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000576616c7565000000000000000000000000000000000000000000000000000000')
Result {
'0': '2345675643',
'1': 'Hello!%',
__length__: 2,
myNumber: '2345675643',
mystring: 'Hello!%'
}

myContract.methods


myContract.methods.methodName([param1 [, param2 [, ...]])
myContract.methods['methodName']([param1 [, param2 [, ...]])

そのメソッドのトランザクションオブジェクトを作成し、そのオブジェクトを呼び出したり、送信したり、推定したり、ABIエンコードしたりすることができる。

このスマート・コントラクトのメソッドは、以下の方法で利用できる:

  • メソッド名: myContract.methods.methodName(123) または myContract.methods[methodName](123)
  • メソッドのプロトタイプ:myContract.methods'methodName(uint256)'`。
  • メソッドのシグネチャ: myContract.methods['0x58cf5f10'](123)

これにより、JavaScriptコントラクト・オブジェクトから、同じ名前で異なるパラメータを持つ関数を呼び出すことができる。

cf)機能シグネチャ(機能セレクタ)

関数のシグネチャのKeccak-256(SHA-3)ハッシュの最初の(ビッグエンディアンの左 上位)4バイト。

関数のシグネチャは2つの異なる方法で指定できます。 caver.abi.encodefunctionSignature('funcName(paramType1,paramType2,...)') 2. caver.utils.sha3('funcName(paramType1,paramType2,...').substr(0, 10)`.

元)


caver.abi.encodefunctionSignature('メソッド名(uint256)')
> 0x58cf5f10
caver.utils.sha3('methodName(uint256)').substr(0, 10)
> 0x58cf5f10

パラメーター

JSONインターフェイスで定義された、このスマート・コントラクトに属するメソッドのパラメータ。

リターン・バリュー

契約実行のための引数と関数が定義されたオブジェクト:

名称タイプ説明
引数配列このメソッドに渡される引数。
コール機能トランザクションを送信することなく(スマートコントラクトの状態を変更することはできません)、kaia仮想マシン上でスマートコントラクト内の定数メソッドを呼び出し、実行する関数。
送信機能kaiaにトランザクションを送信し、そのメソッドを実行する関数(スマートコントラクトの状態を変更できる)。
サイン機能送信者としてトランザクションに署名する関数。 sign関数は署名されたトランザクションを返す。
SignAsFeePayer機能手数料支払い者として取引に署名する関数。 signAsFeePayer 関数は署名されたトランザクションを返す。
推定ガス機能その関数は、実行に使用されるガスを推定する。
encodeABI機能このメソッドのABIをエンコードする関数。 これは、トランザクションを使って送信したり、メソッドを呼び出したり、別のスマート・コントラクトのメソッドに引数として渡したりすることができる。

NOTE signsignAsFeePayer は caver-js v1.6.1 からサポートされています。


// Calling a method
> myContract.methods.methodName(123).call({ ... }, function(error, result) { ... })
> myContract.methods.methodName(123).call({ ... }).then((result) => { ... })
// Sending basic transaction and using the promise
> myContract.methods.methodName(123).send({
from: '0x{address in hex}',
...
}).then(function(receipt) {
// receipt can also be a new contract instance, when coming from a "contract.deploy({...}).send()"
})
// Sending basic transaction and using the eventEmitter
> myContract.methods.methodName(123).send({
from: '0x{address in hex}',
...
}).on('transactionHash', function(hash) {
...
})
.on('receipt', function(receipt) {
...
})
.on('error', console.error)
// Sending fee delegation transaction and using the promise
> myContract.methods.methodName(123).send({
from: '0x{address in hex}',
feePayer: '0x{fee-payer address}',
feeDelegation: true,f
...
}).then(function(receipt) {
// receipt can also be a new contract instance, when coming from a "contract.deploy({...}).send()"
})
// Sending partial fee delegation transaction and using the promise
> myContract.methods.methodName(123).send({
from: '0x{address in hex}',
feePayer: '0x{fee-payer address}',
feeDelegation: true,
feeRatio: 30,
...
}).then(function(receipt) {
// receipt can also be a new contract instance, when coming from a "contract.deploy({...}).send()"
})
// sign the basic transaction
> myContract.methods.methodName(123).sign({
from: '0x{address in hex}',
feeDelegation: true,
...
}).then(function(signedTx) { ... })
// sign the fee delegation transaction
> myContract.methods.methodName(123).sign({
from: '0x{address in hex}',
feeDelegation: true,
...
}).then(function(signedTx) { ... })
// sign the partial fee delegation transaction
> myContract.methods.methodName(123).sign({
from: '0x{address in hex}',
feeDelegation: true,
feeRatio: 30,
...
}).then(function(signedTx) { ... })
// sign the fee delegation transaction as a fee payer
> myContract.methods.methodName(123).signAsFeePayer({
from: '0x{address in hex}',
feePayer: '0x{fee-payer address}',
feeDelegation: true,
...
}).then(function(signedTx) { ... })
// sign the partial fee delegation transaction as a fee payer
> myContract.methods.methodName(123).signAsFeePayer({
from: '0x{address in hex}',
feePayer: '0x{fee-payer address}',
feeDelegation: true,
feeRatio: 30,
...
}).then(function(signedTx) { ... })

methods.methodName.call


myContract.methods.methodName([param1 [, param2 [, ...]]).call(options [, callback])
myContract.methods['methodName']([param1 [, param2 [, ...]]).call(options [, callback])

定数メソッドを呼び出し、そのスマートコントラクトメソッドをkaia仮想マシン内でトランザクションを送信せずに実行する。 呼び出しによってスマート・コントラクトの状態を変更することはできない。 ショートカット関数として提供されているmyContract.callを使用することを推奨する。

パラメーター

名称タイプ説明
オプションオブジェクト(オプション) 呼び出しに使用するオプション。 詳細は以下の表を参照のこと。
コールバック機能(オプション) このコールバックは、スマート・コントラクト・メソッドの実行結果を第2引数として、またはエラー・オブジェクトを第1引数として発行されます。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
よりストリング(オプション) 契約メソッドを呼び出す際のアドレス。
ガス価格ストリング(オプション)この呼び出しに使用するガス価格(peb)。
ガス番号(オプション) この呼に供給されるガスの最大値(ガスリミット)。

リターン・バリュー

Mixed を返す Promise - スマートコントラクトメソッドの戻り値。 単一の値を返す場合は、そのまま返される。 複数の戻り値を持つ場合は、プロパティとインデックスを持つオブジェクトを返す。


// using the promise
> myContract.methods.methodName(123).call({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.then(function(result) {
...
})


// Solidity:MULTIPLE RETURN VALUES
contract MyContract {
function myFunction( public returns(uint256 myNumber, string memory myString) {
return (23456, "Hello!%");
}.
}


> var MyContract = new caver.contract(abi, address)
> MyContract.methods.myfunction().call().then(console.log)
Result {
mynumber: '23456',
mystring: 'Hello!%',
0: '23456',
1: 'Hello!%'
}


// Solidity:SINGLE RETURN VALUE
contract MyContract {
function myfunction( public returns(string memory mystring) {
return "Hello!%";
}.
}


> var MyContract = new caver.contract(abi, address)
> MyContract.methods.myfunction().call().then(console.log)
"Hello!%"

methods.methodName.send


myContract.methods.methodName([param1 [, param2 [, ...]]).send(options [, callback])
myContract.methods['methodName']([param1 [, param2 [, ...]]).send(options [, callback])

スマートコントラクトをデプロイしたり、スマートコントラクトの機能を実行したりするためのトランザクションを送信する。 これにより、スマート・コントラクトの状態を変更することができる。 ショートカット関数として提供されているmyContract.sendを使用することを推奨する。

スマートコントラクトをデプロイする場合、methodName に 'constructor' を入力することができる。例えば myContract.methods.constructormyContract.methods['constructor'] などだが、myContract.deploy 関数を使用することを推奨する。

この関数で使用されるトランザクションタイプは、options または myContract.options で定義された値に依存する。 methods.methodName.sendを使用して手数料を委譲したトランザクションを使用したい場合は、feeDelegationfeePayerを適切に設定する必要があります。

NOTE caver.walletに署名を行うには、optionsまたはmyContract.optionsfromfeePayerに対応するキーリングのインスタンスが含まれていなければならない。

パラメーター

名称タイプ説明
オプションオブジェクト送信に使用するオプション。 詳細は以下の表を参照のこと。
コールバック機能(オプション) このコールバックは、"transactionHash"、またはエラーオブジェクトを第一引数として最初に起動される。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
よりストリングトランザクションの送信元アドレス。 省略された場合は、myContract.options.fromが使用される。
ガス番号この取引で提供されるガスの上限(ガスリミット)。
ガス価格ストリング(オプション)この取引に使用するガス価格(peb)。
価値number \(オプション)このトランザクションによってスマートコントラクトのアドレスに転送されるpebの値。
フィーデレゲーションブーリアン(オプション、デフォルト false) フィー委任トランザクションを使用するかどうか。 省略された場合、myContract.options.feeDelegationが使用される。
料金支払者ストリング(オプション)取引手数料を支払う手数料支払人の住所。 feeDelegationtrue のとき、その値はトランザクションの feePayer フィールドに設定される。 省略された場合、myContract.options.feePayerが使用される。
手数料率ストリング(任意)手数料支払者が負担する取引手数料の比率。 feeDelegationtrue で、feeRatioに有効な値が設定されている場合、部分的な料金委譲トランザクショ ンが使用される。 有効範囲は1~99。 0や100以上の比率は許されない。 省略された場合、myContract.options.feeRatioが使用される。

NOTE feeDelegationfeePayerfeeRatio は caver-js v1.6.1 からサポートされています。

リターン・バリュー

PromisePromiEvent を返す。

タイプ説明
プロミイベントプロミスを組み合わせたイベント・エミッター。 取引レシートが利用可能になれば解決する。 約束は新しい契約インスタンスで解決される。

PromiEventでは、以下のイベントが利用可能です:

  • transactionHash:トランザクションが送信され、トランザクションハッシュが利用可能になった直後に発生する。 型は string である。
  • receipt:トランザクションのレシートが利用可能になったときに発生する。 詳細については、caver.rpc.klay.getTransactionReceipt を参照してください。 型は object である。
  • エラー:送信中にエラーが発生した場合に発生する。 ガス欠エラーの場合、2番目のパラメータはレシートとなる。 その型は Error` である。


// using the promise
> myContract.methods.methodName(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.then(function(receipt) {
// receipt can also be a new contract instance, when coming from a "contract.deploy({...}).send()"
})
// using the event emitter
> myContract.methods.methodName(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.on('transactionHash', function(hash) {
...
})
.on('receipt', function(receipt) {
console.log(receipt)
})
.on('error', console.error) // If there is an out-of-gas error, the second parameter is the receipt.
// receipt example
{
"transactionHash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
"transactionIndex": 0,
"blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
"blocknumber": 3,
"contractAddress": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
"gasUsed": 30234,
"events": {
"eventName": {
returnValues: {
myIndexedParam: 20,
myOtherIndexedParam: '0x123456789...',
myNonIndexParam: 'My string'
},
raw: {
data: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
topics: ['0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7', '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385']
},
event: 'eventName',
signature: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
logIndex: 0,
transactionIndex: 0,
transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
blocknumber: 1234,
address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
},
"MyOtherEvent": {
...
},
"MyMultipleEvent":[{...}, {...}] // If there are multiples of the same events, they will be in an array.
}
}
// Deploy the contract
> myContract.methods.constructor('0x{byte code}', 123).send({ from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', gas: 1000000 })
> myContract.methods['constructor']('0x{byte code}', 123).send({ from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', gas: 1000000 })

methods.methodName.sign


myContract.methods.methodName([param1 [, param2 [, ...]]).sign(options)
myContract.methods['methodName']([param1 [, param2 [, ...]]).sign(options)

スマートコントラクトを展開したり、スマートコントラクトの機能を実行したりするために、送信者としてスマートコントラクト取引に署名する。 ショートカット関数として提供されているmyContract.signを使用することを推奨する。

スマートコントラクトがデプロイされている場合は、myContract.methods.constructormyContract.methods['constructor']のように、methodNameに'constructor'を入力することができる。

この関数で使用されるトランザクションタイプは、options または myContract.options で定義された値に依存する。 methods.methodName.signによって手数料を委譲されたトランザクションを使用したい場合は、feeDelegationtrueとして定義しなければならない。

NOTE caver.walletは、署名を行うために、optionsまたはmyContract.optionsfromに対応するキーリングのインスタンスを含んでいなければならない。

NOTE methods.methodName.sign は caver-js v1.6.1 からサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクトトランザクションの作成に使用されるオプション。 詳しくはmethods.methodName.sendのパラメータ表を参照のこと。

リターン・バリュー

Promise return Transaction - 署名されたスマートコントラクトのトランザクション。


// Sign a SmartContractDeploy transaction
> myContract.methods.constructor(byteCode, 123).sign({ from: '0x{address in hex}', gas: 1000000 }).then(console.log)
SmartContractDeploy {
_type: 'TxTypeSmartContractDeploy',
_from: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_gas: '0xf4240',
_signatures: [
SignatureData {
_v: '0x07f6',
_r: '0x26a05...',
_s: '0x3e3e4...'
}
],
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x3e9',
_gasPrice: '0x5d21dba00',
_nonce: '0x2f6'
}
> myContract.methods['constructor'](byteCode, 123).sign({ from: '0x{address in hex}', gas: 1000000 }).then(console.log)
// Sign a FeeDelegatedSmartContractDeploy transaction
> myContract.methods.constructor(byteCode, 123).sign({ from: '0x{address in hex}', feeDelegation: true, gas: 1000000 }).then(console.log)
FeeDelegatedSmartContractDeploy {
_type: 'TxTypeFeeDelegatedSmartContractDeploy',
_from: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x07f5', _r: '0xa74f7...', _s: '0x0991e...' } ],
_feePayer: '0x0000000000000000000000000000000000000000',
_feePayerSignatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x3e9',
_gasPrice: '0x5d21dba00',
_nonce: '0x2f6'
}
> myContract.methods['constructor'](byteCode, 123).sign({ from: '0x{address in hex}', feeDelegation: true, gas: 1000000 }).then(console.log)
// Sign a SmartContractExecution transaction
> myContract.methods.methodName('0x...').sign({ from: '0x{address in hex}', gas: 1000000 }).then(console.log)
SmartContractExecution {
_type: 'TxTypeSmartContractExecution',
_from: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x07f5', _r: '0xafbf9...', _s: '0x10ea0...' } ],
_to: '0xbc6723431a57abcacc4016ae664ee778d313ca6e',
_value: '0x0',
_input: '0x983b2d5600000000000000000000000060498fefbf1705a3db8d7bb5c80d5238956343e5',
_chainId: '0x3e9',
_gasPrice: '0x5d21dba00',
_nonce: '0x2f6'
}
> myContract.methods['methodName']('0x...').sign({ from: '0x{address in hex}', gas: 1000000 }).then(console.log)
// Sign a FeeDelegatedSmartContractExecution transaction
> myContract.methods.methodName('0x...').sign({ from: '0x{address in hex}', feeDelegation: true, gas: 1000000 }).then(console.log)
FeeDelegatedSmartContractExecution {
_type: 'TxTypeFeeDelegatedSmartContractExecution',
_from: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x07f6', _r: '0xdfc14...', _s: '0x38b9c...' } ],
_feePayer: '0x0000000000000000000000000000000000000000',
_feePayerSignatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_to: '0xbc6723431a57abcacc4016ae664ee778d313ca6e',
_value: '0x0',
_input: '0x983b2d5600000000000000000000000060498fefbf1705a3db8d7bb5c80d5238956343e5',
_chainId: '0x3e9',
_gasPrice: '0x5d21dba00',
_nonce: '0x2f6'
}
> myContract.methods['methodName']('0x...').sign({ from: '0x{address in hex}', feeDelegation: true, gas: 1000000 }).then(console.log)

methods.methodName.signAsFeePayer


myContract.methods.methodName([param1 [, param2 [, ...]]).signAsFeePayer(options)
myContract.methods['methodName']([param1 [, param2 [, ...]]).signAsFeePayer(options)

スマートコントラクトを導入する、またはスマートコントラクトの機能を実行するために、手数料の支払い者としてスマートコントラクト取引に署名する。 ショートカット関数として提供されているmyContract.signAsFeePayerを使用することをお勧めします。

スマートコントラクトがデプロイされている場合は、myContract.methods.constructormyContract.methods['constructor']のように、methodNameに'constructor'を入力することができる。

この関数で使用されるトランザクションタイプは、options または myContract.options で定義された値に依存する。 signAsFeePayer は取引手数料の支払者として署名する関数なので、feeDelegation フィールドは true として定義しなければならない。 また、feePayerフィールドに料金支払者のアドレスを定義しなければならない。

NOTE caver.walletに署名を行うには、optionsまたはmyContract.optionsfeePayerに対応するkeyringインスタンスが含まれていなければならない。

NOTE methods.methodName.signAsFeePayer は caver-js v1.6.1 からサポートされています。

パラメーター

名称タイプ説明
オプションオブジェクトトランザクションの作成に使用されるオプション。 詳しくはmethods.methodName.sendのパラメータ表を参照のこと。

リターン・バリュー

Promise return Transaction - 署名されたスマートコントラクトのトランザクション。


// Sign a FeeDelegatedSmartContractDeploy transaction
> myContract.methods.constructor(byteCode, 123).signAsFeePayer({ from: '0x{address in hex}', feeDelegation: true, feePayer: '0x{address in hex}', gas: 1000000 }).then(console.log)
> FeeDelegatedSmartContractDeploy {
_type: 'TxTypeFeeDelegatedSmartContractDeploy',
_from: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_feePayerSignatures: [ SignatureData { _v: '0x07f6', _r: '0x2c385...', _s: '0x7fa79...' } ],
_to: '0x',
_value: '0x0',
_input: '0x60806...',
_humanReadable: false,
_codeFormat: '0x0',
_chainId: '0x3e9',
_gasPrice: '0x5d21dba00',
_nonce: '0x2f6'
}
> myContract.methods['constructor'](byteCode, 123).signAsFeePayer({ from: '0x{address in hex}', feeDelegation: true, feePayer: '0x{address in hex}', gas: 1000000 }).then(console.log)
// Sign a FeeDelegatedSmartContractExecution transaction
> myContract.methods.methodName(123).signAsFeePayer({ from: '0x{address in hex}', feeDelegation: true, feePayer: '0x{address in hex}', gas: 1000000 }).then(console.log)
> FeeDelegatedSmartContractExecution {
_type: 'TxTypeFeeDelegatedSmartContractExecution',
_from: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_gas: '0xf4240',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0x60498fefbf1705a3db8d7bb5c80d5238956343e5',
_feePayerSignatures: [ SignatureData { _v: '0x07f6', _r: '0x793eb...', _s: '0x0f776...' } ],
_to: '0x294b2618f29714732cfc202d7be53bf5efee90dd',
_value: '0x0',
_input: '0x983b2d5600000000000000000000000060498fefbf1705a3db8d7bb5c80d5238956343e5',
_chainId: '0x3e9',
_gasPrice: '0x5d21dba00',
_nonce: '0x2f6'
}
> myContract.methods['methodName'](123).signAsFeePayer({ from: '0x{address in hex}', feeDelegation: true, feePayer: '0x{address in hex}', gas: 1000000 }).then(console.log)

methods.methodName.estimateGas


myContract.methods.methodName([param1 [, param2 [, ...]]).estimateGas(options [, callback])

kaia仮想マシンで実行されるメソッドの実行にかかる時間を見積もります。 スマート・コントラクトの状態がその時点で異なる可能性があるため、この推定値は、後にトランザクションを送信する際に使用される実際のガスと異なる可能性がある。

パラメーター

名称タイプ説明
オプションオブジェクト(オプション) 呼び出しに使用するオプション。 詳細は以下の表を参照のこと。
コールバック機能(オプション) このコールバックは、第2引数としてガス推定結果と共に、または第1引数としてエラーオブジェクトと共に起動される。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
よりストリング(オプション)コントラクト・メソッドの呼び出し元のアドレス。
ガス番号(オプション) この呼に供給されるガスの最大値(ガスリミット)。 特定の値を設定することで、ガス欠エラーの検出に役立つ。 すべてのガスが使用された場合、同じ数値が返される。
価値number \(オプション) このコントラクト関数を実行するためのトランザクションがkaiaに送信された場合に、スマートコントラクトのアドレスに転送されるpebの値。

リターン・バリュー

プロミスnumber` を返す。

タイプ説明
番号コール/トランザクションのシミュレーションに使用されるガス。


> myContract.methods.methodName(123).estimateGas({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.then(function(gasAmount) {
...
})
.catch(function(error) {
...
})

methods.methodName.encodeABI


myContract.methods.methodName([param1 [, param2[, ...]]).encodeABI()

このメソッドのABIをエンコードする。 これは、トランザクションを送信したり、メソッドを呼び出したり、別のスマート・コントラクトのメソッドに引数として渡したりするのに使うことができる。

パラメーター

JSONインターフェイスで定義された、このスマート・コントラクトに属するメソッドのパラメータ。

リターン・バリュー

タイプ説明
ストリングトランザクションまたはコールで送信するためにエンコードされたABIバイトコード。


> myContract.methods.methodName(123).encodeABI()
'0x58cf5f1000000000000000000000000000000000000000000000000000000000000007B'

myContract.once


myContract.once(event [, options], callback)

イベントに登録し、最初のイベントまたはエラーの直後に登録を解除する。 発火するのは1つのイベントのみ。

パラメーター

名称タイプ説明
イベントストリングすべてのイベントを取得するには allEvents を指定する。
オプションオブジェクト(オプション) サブスクリプションに使用されるオプション。 詳細は以下の表を参照のこと。
コールバック機能このコールバックは、2番目の引数として最初のイベント、または1番目の引数としてエラーに対して発生する。 イベント構造の詳細については、myContract.getPastEvents を参照のこと。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
フィルターオブジェクト(オプション) インデックス化されたパラメータでイベントをフィルタリングできます。例えば、{filter: {mynumber: [12,13]}} は「mynumber」が12または13であるすべてのイベントを意味します。
トピックス配列(オプション) これにより、イベント フィルタのトピックを手動で設定できます。 フィルタープロパティとイベントシグネチャを考えると、topic[0]は自動的に設定されない。

リターン・バリュー

Promiseobject - イベントオブジェクトを返す。 イベント・オブジェクトの詳細については、myContract.getPastEvents を参照してください。


> myContract.once('eventName', {
filter:filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // 配列を使用すると OR: 例: 20 または 23
}, function(error, event) { console.log(event) })
// イベント出力の例
{
returnValues: {
myIndexedParam: 20,
myOtherIndexedParam: '0x123456789...',
myNonIndexParam: 'My string'
}
raw:{
data:'0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
topics:['0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7', '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385']
},
event:'eventName',
signature: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
logIndex:0,
transactionIndex:0,
transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
blockHash:'0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
blocknumber: 1234,
address:'0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
}

myContract.subscribe


myContract.subscribe(event [, options], callback)

イベントを購読する。 この関数は、myContract.events.eventName と同じ働きをします。

イベントの登録を解除するには、 subscribe 関数によって返されたサブスクリプションオブジェクトの unsubscribe 関数を呼び出します。

NOTE myContract.subscribe は caver-js v1.9.1-rc.1 以降でサポートされています。

パラメーター

名称タイプ説明
イベントストリングすべてのイベントを取得するには allEvents を指定する。
オプションオブジェクト(オプション) サブスクリプションに使用されるオプション。 詳細は以下の表を参照のこと。
コールバック機能このコールバックは、2番目の引数として最初のイベント、または1番目の引数としてエラーに対して発生する。 イベント構造の詳細については、myContract.getPastEvents を参照のこと。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
フィルターオブジェクト(オプション) インデックス化されたパラメータでイベントをフィルタリングできます。例えば、{filter: {mynumber: [12,13]}} は「mynumber」が12または13であるすべてのイベントを意味します。
トピックス配列(オプション) これにより、イベント フィルタのトピックを手動で設定できます。 フィルタープロパティとイベントシグネチャを考えると、topic[0]は自動的には設定されない。

リターン・バリュー

Promiseobject - イベントオブジェクトを返す。 イベント・オブジェクトの詳細については、myContract.getPastEvents を参照してください。


> const subscription = myContract.subscribe('eventName', {
filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // Using an array means OR: e.g. 20 or 23
}, function(error, event) { console.log(event) })
{
returnValues: {
myIndexedParam: 20,
myOtherIndexedParam: '0x123456789...',
myNonIndexParam: 'My string'
},
raw: {
data: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
topics: ['0xfd43a...', '0x7f9fa...']
},
event: 'eventName',
signature: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
logIndex: 0,
transactionIndex: 0,
transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
blocknumber: 1234,
address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
}
> subscription.unsubscribe() // unsubscribe the event

myContract.events


myContract.events.eventName([options][, callback])

イベントを購読する。

パラメーター

名称タイプ説明
オプションオブジェクト(オプション) サブスクリプションに使用されるオプション。 詳細は以下の表を参照のこと。
コールバック機能(オプション) このコールバックは、第2引数のイベント、または第1引数のエラーごとに発生します。

オプション・オブジェクトには、以下のものを含めることができる:

名称タイプ説明
フィルターオブジェクト(オプション) インデックス化されたパラメータでイベントをフィルタリングできます。例えば、{filter: {mynumber: [12,13]}} は「mynumber」が12または13であるすべてのイベントを意味します。
フロムブロック番号(オプション) イベントを取得するブロック番号。
トピックス配列(オプション) これにより、イベント フィルタのトピックを手動で設定できます。 フィルタープロパティとイベントシグネチャを考えると、topic[0]は自動的に設定されない。

リターン・バリュー

イベントエミッター`である:イベントエミッタは以下のイベントを持つ:

名称タイプ説明
データオブジェクトeventオブジェクトを引数として、受信したイベントごとに発火する。
接続済みストリングサブスクリプションが正常に接続された後に一度だけ発生します。 これはサブスクリプションIDを返す。
エラーオブジェクトサブスクリプションでエラーが発生したときに発火する。

NOTE connected は caver-js v1.5.7 で利用可能です。

返されたイベント object の構造は以下のようになる:

名称タイプ説明
イベントストリングイベント名。
署名string \匿名イベントの場合は null となる。
住所ストリングこのイベントが発生したアドレス。
戻り値オブジェクトイベントから返される値、e.., {myVar: 1, myVar2: '0x234...'}.
ログインデックス番号ブロック内のイベントインデックス位置の整数。
トランザクションインデックス番号イベントが作成されたトランザクションのインデックス位置の整数。
トランザクションハッシュ32バイト文字列このイベントが作成されたトランザクションのハッシュ。 まだ保留中の場合は null とする。
ブロックハッシュ32バイト文字列このイベントが作成されたブロックのハッシュ。 まだ保留中の場合は null とする。
ブロック番号番号このログが作成されたブロック番号。 保留中の場合は null となる。
raw.dataストリングインデックスのないログパラメータを含むデータ。
raw.topics配列最大4つの32バイトのトピックを持つ配列で、トピック1-3にはイベントのインデックス付きパラメータが含まれる。
アイドルストリングログの識別子。 これは、"log_"文字列とkeccak256(blockHash + transactionHash + logIndex).substr(0, 8)を連結したものである。


> myContract.events.eventName({
filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // Using an array means OR: e.g. 20 or 23
fromBlock: 0
}, function(error, event) { console.log(event) })
.on('connected', function(subscriptionId){
console.log(subscriptionId)
})
.on('data', function(event){
console.log(event) // same results as the optional callback above
})
.on('error', console.error)
// event output example
{
returnValues: {
myIndexedParam: 20,
myOtherIndexedParam: '0x123456789...',
myNonIndexParam: 'My string'
},
raw: {
data: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
topics: ['0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7', '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385']
},
event: 'eventName',
signature: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
logIndex: 0,
transactionIndex: 0,
transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
blocknumber: 1234,
address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
id: 'log_41d221bc',
}

events.allEvents


myContract.events.allEvents([options] [, callback])

myContract.events](#mycontract-events) と同じですが、このスマートコントラクトからのすべてのイベントを受け取ります。 オプションで、filterプロパティはこれらのイベントをフィルタリングすることができる。

getPastEvents


myContract.getPastEvents(event [, options] [, callback])

この契約の過去のイベントを取得します。

パラメーター

名称タイプ説明
イベントストリング全てのイベントを取得するには "allEvents" とする。
オプションオブジェクト(オプション) サブスクリプションに使用されるオプション。 詳細は以下の表を参照のこと。
コールバック機能(オプション) このコールバックは、第2引数にイベントログの配列、第1引数にエラーを指定して起動されます。

オプション・オブジェクトには、以下を含めることができる:

名称タイプ説明
フィルターオブジェクト(オプション) インデックス化されたパラメータでイベントをフィルタリングできます。例えば、{filter: {mynumber: [12,13]}} は「mynumber」が12または13であるすべてのイベントを意味します。
フロムブロック番号(オプション) イベントを取得するブロック番号。
ブロックする番号(オプション) イベントを取得するブロック番号 (デフォルトは "latest").
トピックス配列(オプション) これにより、イベント フィルタのトピックを手動で設定できます。 フィルタープロパティとイベントシグネチャを考えると、topic[0]は自動的に設定されない。

リターン・バリュー

プロミス ``PromiseArray` - 指定されたイベント名とフィルターにマッチする、過去のイベントオブジェクトを含む配列 を返す。

イベント・オブジェクトには以下のものが含まれる:

名称タイプ説明
イベントストリングイベント名。
署名string \匿名イベントの場合は null
住所ストリングこのイベントが発生した住所
戻り値オブジェクトイベントからの戻り値、例えば {myVar: 1, myVar2: '0x234...'}.
ログインデックス番号ブロック内のイベントインデックス位置。
トランザクションインデックス番号イベントが作成されたトランザクションのインデックス位置。
トランザクションハッシュストリングこのイベントが作成されたトランザクションのハッシュ。
ブロックハッシュストリングこのイベントが作成されたブロックのハッシュ。保留中の場合はnull。
ブロック番号番号このログが作成されたブロック番号。保留中の場合はnull。
オブジェクトオブジェクトは datatopic を定義する。 raw.dataには、インデックス化されていないログパラメータが含まれている。 raw.topicは、最大4つの32バイトのトピックを持つ配列であり、トピック1-3には、イベントのインデックス化されたパラメータが含まれる。


> myContract.getPastEvents('eventName', {
filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // Using an array means OR: e.g. 20 or 23
fromBlock: 0,
toBlock: 'latest'
}, function(error, events) { console.log(events) })
.then(function(events) {
console.log(events) // same results as the optional callback above
})
[{
returnValues: {
myIndexedParam: 20,
myOtherIndexedParam: '0x123456789...',
myNonIndexParam: 'My string'
},
raw: {
data: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
topics: ['0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7', '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385']
},
event: 'eventName',
signature: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
logIndex: 0,
transactionIndex: 0,
transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
blocknumber: 1234,
address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
},{
...
}]

ページを改善してください。