1

目前我得到了这个 abi:

const stakingAbi = [
    'function getStakes(address user) external view returns (Stake[] memory)',
    'function stake7Days(uint128 _amount) external whenNotPaused',
    'function stake14Days(uint128 _amount) external whenNotPaused',
    'function stake30Days(uint128 _amount) external whenNotPaused',
    'function stake90Days(uint128 _amount) external whenNotPaused'
]

Stake结构如下所示:

struct Stake {
    uint16 bonusPercentage;
    uint40 unlockTimestamp;
    uint128 amount;
    bool withdrawn;
}

目前 getStakes 函数不起作用,因为 Ethers 不知道是什么Stake[],我如何在 ABI 中定义它?

4

1 回答 1

1

ethers.js 仍然不支持以人类可读的 ABI 格式指定结构。见https://github.com/ethers-io/ethers.js/issues/315

您需要使用 JSON ABI 格式:https ://docs.ethers.io/v5/api/utils/abi/formats/#abi-formats--solidity

或者,您可以通过返回数组元组来解决它:

function getStakes(address user) external view returns (uint16[] memory, uint40[] memory, uint128[] memory, bool[] memory)
于 2022-02-08T23:42:47.723 回答