Icon Link资产 ID

资产 ID 可以使用 AssetId 类型表示。它的定义与 Sway 标准库类型相匹配,是围绕内部 Bits256 值的 Struct 包装器。

// #import { AssetId };
 
const assetId: AssetId = {
  bits: Bits256,
};

Icon Link使用资产 ID

AssetId 类型可以与您的合约调用集成。考虑以下可以比较并返回资产 ID 的合约:

contract;
 
abi EvmTest {
    fn echo_asset_id() -> AssetId;
    fn echo_asset_id_comparison(asset_id: AssetId) -> bool;
}
 
const ASSET_ID: AssetId = AssetId::from(0x9ae5b658754e096e4d681c548daf46354495a437cc61492599e33fc64dcdc30c);
 
impl EvmTest for Contract {
    fn echo_asset_id() -> AssetId {
        ASSET_ID
    }
 
    fn echo_asset_id_comparison(asset_id: AssetId) -> bool {
        asset_id == ASSET_ID
    }
}

AssetId 类型可以与 SDK 集成,并传递给合约函数,如下所示:

// #import { AssetId };
 
const assetId: AssetId = {
  bits: Bits256,
};
 
const { value } = await contract.functions.echo_asset_id_comparison(assetId).simulate();
 
expect(value).toBeTruthy();

并验证返回值:

// #import { AssetId };
 
const assetId: AssetId = {
  bits: Bits256,
};
 
const { value } = await contract.functions.echo_asset_id().simulate();
 
expect(value).toEqual(assetId);