调用Safe API POST请求时签名验证异常求助
问题排查:Safe多签交易签名验证错误
问题描述
我通过Metamask私钥创建signer并生成交易签名,调用Safe交易提交API时,返回签名者地址不属于Safe所有者或委托方的错误,但错误里的签名者地址并非我实际使用的地址(我用的是Safe所有者列表中的0xE28312CF65663803d1317c1ccf261E1edEC1FF6d)。有人提示错误可能源于签名生成方式,需要帮忙排查。
签名生成代码
const signer = new ethers.Wallet(PRIVATE_KEY as string, provider) const safeInstance = new ethers.Contract(safeAddress, safeAbi, signer) const safeTrxHash = await safeInstance.getTransactionHash( trxInput.to, trxInput.value, trxInput.data, trxInput.operation, trxInput.safeTxGas, trxInput.baseGas, trxInput.gasPrice, trxInput.gasToken, trxInput.refundReceiver, trxInput.nonce, ) const signature = (await signer.signMessage(safeTrxHash)) .replace(/1b$/, '1f') .replace(/1c$/, '20')
返回错误信息
提交签名后得到如下错误:
{"nonFieldErrors":["Signer=0x2C7DC84b0aad92978B8D2F2fc72aBd6013cF6EB4 is not an owner or delegate. Current owners=['0xE28312CF65663803d1317c1ccf261E1edEC1FF6d']. Delegates=set()"]}
内容的提问来源于stack exchange,提问作者Angel Lakra
相关产品推荐
相关产品推荐

