Ethers.js:如何将地址数组编码为 Solidity 字节变量?
Ethers.js: How do I encode an array of addresses into a Solidity bytes variable?
我正在使用 Ether.js 测试我的 Solidity 代码,被测方法需要一个 bytes
参数,我用它来传递地址数组:
function testFunction(bytes calldata params) external {
address[] memory addresses = abi.decode(params, (address[]));
}
如何对 Ethers.js 中的地址数组进行编码以便将其作为参数传递?
您可以使用 AbiCoder.encode(types, values)。要对地址数组进行编码,您可以这样做:
const abi = ethers.utils.defaultAbiCoder;
const params = abi.encode(
["address[]"], // encode as address array
[ [addresses.tokens.weth, addresses.tokens.wbtc] ]); // array to encode
我正在使用 Ether.js 测试我的 Solidity 代码,被测方法需要一个 bytes
参数,我用它来传递地址数组:
function testFunction(bytes calldata params) external {
address[] memory addresses = abi.decode(params, (address[]));
}
如何对 Ethers.js 中的地址数组进行编码以便将其作为参数传递?
您可以使用 AbiCoder.encode(types, values)。要对地址数组进行编码,您可以这样做:
const abi = ethers.utils.defaultAbiCoder;
const params = abi.encode(
["address[]"], // encode as address array
[ [addresses.tokens.weth, addresses.tokens.wbtc] ]); // array to encode