在向安全服务提出事务时,我得到的错误如下:
Error: Unprocessable Entity
at sendRequest (C:\Home\Mesha\mesha-be\node_modules\@gnosis.pm\safe-service-client\src\utils\httpRequests.ts:52:9)
at processTicksAndRejections (internal/process/task_queues.js:97:5)我使用下面的代码在后端创建和提议事务:
import SafeServiceClient from "@gnosis.pm/safe-service-client";
const safeService = new SafeServiceClient('https://safe-transaction.rinkeby.gnosis.io');
import Safe, { EthersAdapter } from "@gnosis.pm/safe-core-sdk";
import { ethers } from "ethers";
const HDWalletProvider = require("@truffle/hdwallet-provider");
// Creating web3 provider
const walletProvider = new HDWalletProvider({
privateKeys: [privateKey],
providerOrUrl: ALCHEMY_KEY,
});
const provider = new ethers.providers.Web3Provider(walletProvider);
// Initializing safe-core sdk
const signer: any = provider.getSigner(0);
const ethAdapter = new EthersAdapter({
ethers,
signer,
});
const safeSdk: Safe = await Safe.create({ ethAdapter, safeAddress }); // safeAddress: '0x0A3dAaa3AEbd9A832b87FC94F1aBc15a9e4ed6F5', Rinkeby
const transaction = {
to: '0xb0968a944aF335f0f73900821a52d0066593aC5a',
data: '0x',
value: '1000000000000000',
}
transaction.nonce = await safeService.getNextNonce(safeAddress);
const safeTransaction = await safeSdk.createTransaction(transaction);
await safeSdk.signTransaction(safeTransaction);
const safeTxHash = await safeSdk.getTransactionHash(safeTransaction);
await safeService.proposeTransaction({
safeAddress,
safeTransaction,
safeTxHash,
senderAddress,
}); // Here I am getting the error在调用proposeTransaction之前,当我安慰它们时,所有的输入对我来说似乎都很好:
safeAddress: '0x0A3dAaa3AEbd9A832b87FC94F1aBc15a9e4ed6F5'
safeTransaction: EthSafeTransaction {
signatures: Map {
'0xb0968a944af335f0f73900821a52d0066593ac5a' => EthSignSignature {
signer: '0xb0968a944aF335f0f73900821a52d0066593aC5a',
data: '0xc6eb0fed77c6c6bf3891aa06f6620b0cc53a4646633dfd3148d16868fa45c58d53cdb1359ceabdaddab2cf37e8ca1997ab19669776b75
}
},
data: {
to: '0xb0968a944af335f0f73900821a52d0066593ac5a',
value: '1000000000000000',
data: '0x',
operation: 0,
baseGas: 0,
gasPrice: 0,
gasToken: '0x0000000000000000000000000000000000000000',
refundReceiver: '0x0000000000000000000000000000000000000000',
nonce: 0,
safeTxGas: 0
}
}
safeTxHash: '0x0954a44ef78e4a0cdeabbafb196dd2ab7ee531739c3ecd58636804571fd868ab'
senderAddress: '0xb0968a944aF335f0f73900821a52d0066593aC5a'错误不太有用,因为它没有提供多少信息。在前面使用安全SDK时,我没有遇到这样的错误。
版本:
@gnosis.pm/safe-core-sdk: v1.3.0
@gnosis.pm/safe-service-client: v1.1.1
node: v12.17.0
@truffle/hdwallet-provider: v2.0.0
ethers: v5.5.3发布于 2022-02-02 07:59:35
好的,问题解决了。原因是事务中的to字段未被校验:
const transaction = {
to: '0xb0968a944aF335f0f73900821a52d0066593aC5a',
data: '0x',
value: '1000000000000000',
}我核对了地址,它起作用了:
transaction.to = ethers.utils.getAddress(transaction.to)我认为SDK应该处理这个问题,因为我在前端使用SDK时没有得到这个问题,而且在指南中甚至没有提到这一点。
https://ethereum.stackexchange.com/questions/120535
复制相似问题