错误:在调用多重调用合约以太坊的聚合函数时发送交易需要签名者

Sha*_*nka 9 javascript reactjs ethereum ether etherscan

\n

index.js:1 无法获取多重调用块 [{\xe2\x80\xa6}] 1 错误:发送交易需要签名者(操作=“sendTransaction”,代码=UNSUPPORTED_OPERATION,版本=contracts/5.0.2)

\n
\n

多重调用合约地址 - https://etherscan.io/address/0xeefba1e63905ef1d7acba5a8513c70307c1ce441#writeContract

\n

在 Uniswap 界面中工作,但在我的代码中抛出错误,我不知道出了什么问题

\n

Har*_*eno 8

您必须提供签名者才能执行可靠性方法。

您可以从 web3 提供商处获取签名者。

您可以像这样将签名者绑定到合同上

import Contract from './artifacts/contracts/Contract.sol/Contract.json'
const contractDeployedAddress = "0xblah";

const provider = new ethers.providers.Web3Provider(window.ethereum)
const signer = provider.getSigner();
const contract = new ethers.Contract(contractDeployedAddress, Contract.abi, signer)

await contract.someMethodThatRequiresSigning();
Run Code Online (Sandbox Code Playgroud)


Tea*_*Two 3

我有类似的情况,正在@web3-react参考 uniswap 接口代码使用。

@web3-react基于ethers.js,我们必须使用 执行状态改变方法signer。我发布了一个我解决的示例。

const { library, account } = useActiveWeb3React();

const contract = getContract(
      CONTRACT_ADDRESS,
      abi,
      library
    );
const signer = contract.connect(library.getSigner());
signer.someStateChangingMethods();
Run Code Online (Sandbox Code Playgroud)

这可能对你有帮助。https://docs.ethers.io/v5/getting-started/#getting-started--writing