如何编码(encode)一个Solidity library的function调用

有一个library合约

interface Market {
  struct Item {
    address xxx;
    bytes xxx;
  }

  struct Order {
    uint256 xxx;
    address xxx;
    Item[] xxx;
    }
}
library LIB {
  function buy(Market.Order memory order, uint amount) public {
    xxx
  }

在library中编译好的selector是: "buy(Market.Order,uint)":"217dbe21"

同样的buy方法如果是在contract中selecotor是: "buy((uint256,address,(address,bytes)[]),uint256)": "51a8405c"

且只有contract编译好的json文件中有abi,期间尝试过使用contract的abi编译后替换前4位的selector,但是调用仍不成功。所以library中参数为结构体的方法应该如何编码调用data。

请先 登录 后评论

1 个回答

Tiny熊
  擅长:智能合约,以太坊
请先 登录 后评论
  • 1 关注
  • 0 收藏,2137 浏览
  • 663 提出于 2022-05-11 15:38