Javascript 发出Web3地址的编码数组
我试着把合同称为:Javascript 发出Web3地址的编码数组,javascript,ethereum,web3,abi,Javascript,Ethereum,Web3,Abi,我试着把合同称为: //伪数据 功能:swapExactETHForTokens(uint256 amountOutMin,地址[]路径,地址到,uint256截止日期) 方法ID:0x7ff36ab5 [0]:000000000000000000000000000000000000000000000000 DD0F593444 [1]: 0000000000000000000000000000000000000000000000000000000000000080 [2] :00000000
//伪数据
功能:swapExactETHForTokens(uint256 amountOutMin,地址[]路径,地址到,uint256截止日期)
方法ID:0x7ff36ab5
[0]:000000000000000000000000000000000000000000000000 DD0F593444
[1]: 0000000000000000000000000000000000000000000000000000000000000080
[2] :00000000000000000000000047c0a182235478ca13d248d049eaa28d4ff7520f
[3] :00000000000000000000000000000000000000000000000000 5F9A1E44
[4]: 0000000000000000000000000000000000000000000000000000000000000002
[5] :000000000000000000C02AA39B223FE8D0A0E5C4F27EAD9083C756CC2
[6] :0000000000000000001A969239E12F07281F8876D11AFCEE081D872ADF
在我的TypeScript代码中,我有:
const abi=web3.eth.abi.encodeFunctionCall(
{
类型:“函数”,
名称:“swapExactTokensForTokens”,
投入:[
{
名称:'amountIn',
类型:“uint256”,
},
{
名称:“amountOutMin”,
类型:“uint256”,
},
{
名称:“路径”,
键入:“地址[]”,
},
{
姓名:'至',
键入:“地址”,
},
{
名称:'截止日期',
类型:“uint256”,
},
],
},
[
来自魏,,
托维,
//问题
web3.eth.abi.encodeParameter('地址[]'[
'0xC02AA39B223FE8D0A0E5C4F27EAD9083C756CC2',
“0x20fe562d797a42dcb3399062ae9546cd06f63280”,
]),
getAddress(),
截止日期,
]
)
从错误中可以看出,encodeFunctionCall似乎不希望使用编码数组(至少是我这样做的)。那么我如何传递一个地址数组呢
(node:21008) UnhandledPromiseRejectionWarning:
Error: expected array value
(argument="path", value="0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000020fe562d797a42dcb3399062ae9546cd06f63280", code=INVALID_ARGUMENT, version=abi/5.0.0-beta.153)
完整来源:我相信
web3.eth.abi.encodeFunctionCall
需要JSON类型的参数,例如address[]
表示为一个简单的字符串数组[“0x…”,“0x…”
请尝试以下操作,而不是:
[
"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"0x20fe562d797a42dcb3399062ae9546cd06f63280"
],
我相信
web3.eth.abi.encodeFunctionCall
需要JSON类型的参数,例如address[]
表示为字符串的简单数组[“0x…”,“0x…”
请尝试以下操作,而不是:
[
"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"0x20fe562d797a42dcb3399062ae9546cd06f63280"
],
encodeFunctionCall
需要所有字符串。我甚至尝试过串数组,但没有骰子。我遇到了类似的问题@果戈的建议是正确的。您应该直接传递数组,而不通过.abi.encodeParameterencodeFunctionCall
需要所有字符串。我甚至尝试过串数组,但没有骰子。我遇到了类似的问题@果戈的建议是正确的。您应该直接传递数组,而不通过.abi.encodeParameter传递它