首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用'safeSdk.executeTransaction()‘时获取错误

调用'safeSdk.executeTransaction()‘时获取错误
EN

Ethereum用户
提问于 2022-01-04 18:35:30
回答 1查看 182关注 0票数 1

我有一个保险箱,有一个主人和一个门槛。我试图做一个简单的令牌传输事务,但得到一个错误。

代码语言:javascript
复制
// 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。

代码语言:javascript
复制
{
    "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函数将出现错误-

代码语言:javascript
复制
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)

我只是简单地遵循这个指南并做这里提到的事情。如果有人能帮我解决这个问题我会很感激的。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-01-05 08:45:17

这是sdk/服务组合的一个当前缺点(参见https://github.com/gnosis/safe-core-sdk/issues/125)。最好的方法是在转换tx:data: transaction.data || "0x"时添加一个后备项。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/117991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档