我有一个保险箱,有一个主人和一个门槛。我试图做一个简单的令牌传输事务,但得到一个错误。
// Able to create and sign transaction off-chain successfully
{
"signatures": {}, // here signature is present
"data": {
"to": "0x213C77a6d109c300a3851DE1e42553Ad47f8187e",
"value": "1000",
"data": "0x", // Notice here data is not null
"operation": 0,
"baseGas": 0,
"gasPrice": 0,
"gasToken": "0x0000000000000000000000000000000000000000",
"refundReceiver": "0x0000000000000000000000000000000000000000",
"nonce": 3,
"safeTxGas": 0
}
}在此之后,成功地将事务提交给gnosis服务器,现在当我再次获取事务以执行事务时,data字段将为null。
{
"safe": "0x3C0574fb0FC4F6FFd765724DEC593017b636797a",
"to": "0x213C77a6d109c300a3851DE1e42553Ad47f8187e",
"value": "1000",
"data": null, // Here data is null, I am not able to get it
"operation": 0,
"gasToken": "0x0000000000000000000000000000000000000000",
"safeTxGas": 0,
"baseGas": 0,
"gasPrice": "0",
"refundReceiver": "0x0000000000000000000000000000000000000000",
"nonce": 0,
"executionDate": null,
"submissionDate": "2022-01-04T11:55:15.816271Z",
"modified": "2022-01-04T11:55:15.837756Z",
"blockNumber": null,
"transactionHash": null,
"safeTxHash": "0x38aaff98405aba4cd7ad988ea711c6db4f3a75a118f168f6b9e2cd44638e00ef",
"executor": null,
"isExecuted": false,
"isSuccessful": null,
"ethGasPrice": null,
"gasUsed": null,
"fee": null,
"origin": null,
"dataDecoded": null,
"confirmationsRequired": null,
"confirmations": [
{
"owner": "0x213C77a6d109c300a3851DE1e42553Ad47f8187e",
"submissionDate": "2022-01-04T11:55:15.837756Z",
"transactionHash": null,
"signature": "0x705868eb79f838f303553e95e79d7fe84c38a6433b4d432c66569f0c6db8066d608f4b816e70e7ff614056222db9ad7f1fe7fa0bb354c1db6c9db4b0376dc47c1f",
"signatureType": "ETH_SIGN"
}
],
"signatures": null
}将此multisig事务转换为安全事务后,下面的execute transaction函数将出现错误-
const executeTxResponse = await safeSdk.executeTransaction(safeTransaction)
TypeError: Cannot read properties of null (reading 'length')
at ABICoder.formatParam (index.js?8fce:247)
at eval (index.js?8fce:99)
at Array.map (<anonymous>)
at ABICoder.encodeParameters (index.js?8fce:93)
at eval (index.js?7bbc:450)
at Array.map (<anonymous>)
at Object._encodeMethodABI (index.js?7bbc:449)
at Object._processExecuteArguments (index.js?7bbc:713)
at Object._executeMethod (index.js?7bbc:732)
at GnosisSafeContract_V1_3_0_Web3.getTransactionHash (GnosisSafeContractWeb3.js?528e:34)
at Safe.getTransactionHash (Safe.js?3512:232)
at Safe.executeTransaction (Safe.js?3512:420)
at _callee13$ (safe.js?273a:280)
at tryCatch (runtime.js?2d8a:45)
at Generator.invoke [as _invoke] (runtime.js?2d8a:274)
at Generator.prototype.<computed> [as next] (runtime.js?2d8a:97)
at asyncGeneratorStep (asyncToGenerator.js?d70f:3)
at _next (asyncToGenerator.js?d70f:25)我只是简单地遵循这个指南并做这里提到的事情。如果有人能帮我解决这个问题我会很感激的。
发布于 2022-01-05 08:45:17
这是sdk/服务组合的一个当前缺点(参见https://github.com/gnosis/safe-core-sdk/issues/125)。最好的方法是在转换tx:data: transaction.data || "0x"时添加一个后备项。
https://ethereum.stackexchange.com/questions/117991
复制相似问题