0x-start-project源码学习 - 7

之前的订单交易都是以单一币种之间的交换为例,如用户A使用TokenA换取用户B的TokenB,但是0x还支持多币种资产的交易,如用户A使用TokenA和TokenC换取用户B的TokenB。

fill_order_multi_asset场景中就介绍了这种方式,当单一币种交易生成AssetData时,是通过encodeERC20AssetData传入对应的代币地址,需要多币种交易时,使用encodeMultiAssetData来传入多个币种信息即可。

1
2
3
4
5
6
// 通过encodeMultiAssetData可以打包多种数据资产
// 指定对应的交易金额,和代币
const makerAssetData = assetDataUtils.encodeMultiAssetData(
[makerAssetAmount, erc20AssetAmount],
[erc721AssetData, erc20AssetData],
);

在创建订单时,makerAssetAmount只需要按其中一种资产金额输入即可。

1
2
3
4
// the amount the maker is selling of maker asset (1 set of ERC721 Token and ERC20 tokens)
// when set to 1, this order cannot be partially filled.
// ERC721:1 ERC20:0.2
const makerAssetAmount = new BigNumber(1);