查询链
一旦您设置了供应商,就可以准备与 Fuel 区块链进行交互了。
我们可以连接到一个 本地 或者一个 外部 节点:
让我们看一下下面的一些示例。
获取基础资产 ID
基础资产是在链上执行任何交易所使用的基础资产。应该从供应商获取,然后在交易中使用。
ts
// #import { Provider, FUEL_NETWORK_URL, ScriptTransactionRequest };
// 使用提供者获取基本资产ID
const provider = await Provider.create(FUEL_NETWORK_URL);
const baseAssetId = provider.getBaseAssetId();
// 0x...
// 创建事务请求
const transactionRequest = new ScriptTransactionRequest();
// 为操作使用基本资产
transactionRequest.addCoinOutput(recipientAddress, 100, baseAssetId);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
获取地址中的所有币
此方法返回来自钱包的所有币(可选给定资产 ID),包括已花费的币。
ts
// #import { Provider, FUEL_NETWORK_URL, generateTestWallet };
const provider = await Provider.create(FUEL_NETWORK_URL);
const assetIdA = '0x0101010101010101010101010101010101010101010101010101010101010101';
const baseAssetId = provider.getBaseAssetId();
const wallet = await generateTestWallet(provider, [
[42, baseAssetId],
[100, assetIdA],
]);
// 得到一枚硬币
const coin = await wallet.getCoins(baseAssetId);
// [{ amount: bn(42), assetId: baseAssetId }]
// 获得所有硬币
const coins = await wallet.getCoins();
// [
// { amount: bn(42), assetId: baseAssetId }
// { amount: bn(100), assetId: assetIdA }
// ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
获取地址中可花费的资源
最后一个参数表示您想要花费多少。此方法仅返回可花费的,即未花费的币(具有给定资产 ID)。如果您请求的可花费金额超过您拥有的未花费币的数量,则会返回错误。
ts
// #import { Provider, FUEL_NETWORK_URL, generateTestWallet, ScriptTransactionRequest };
const provider = await Provider.create(FUEL_NETWORK_URL);
const assetIdA = '0x0101010101010101010101010101010101010101010101010101010101010101';
const baseAssetId = provider.getBaseAssetId();
const wallet = await generateTestWallet(provider, [
[42, baseAssetId],
[100, assetIdA],
]);
const spendableResources = await wallet.getResourcesToSpend([
{ amount: 32, assetId: baseAssetId, max: 42 },
{ amount: 50, assetId: assetIdA },
]);
const tx = new ScriptTransactionRequest();
tx.addResources(spendableResources);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
获取地址的余额
获取地址的所有可花费资产的余额。这与获取币不同,因为我们只返回数字(每个资产 ID 的 UTXO 币金额之和),而不是 UTXO 币本身。
ts
// #import { Provider, FUEL_NETWORK_URL, generateTestWallet };
const provider = await Provider.create(FUEL_NETWORK_URL);
const assetIdA = '0x0101010101010101010101010101010101010101010101010101010101010101';
const baseAssetId = provider.getBaseAssetId();
const wallet = await generateTestWallet(provider, [
[42, baseAssetId],
[100, assetIdA],
]);
const walletBalances = await wallet.getBalances();
// [
// { amount: bn(42), assetId: baseAssetId }
// { amount: bn(100), assetId: assetIdA }
// ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
获取区块
此方法返回与给定查询匹配的区块链中的所有区块。下面的代码片段显示如何获取最后的 10 个区块。
ts
// #import { Provider, FUEL_NETWORK_URL };
const provider = await Provider.create(FUEL_NETWORK_URL);
// 强制生成一些区块,以确保存在10个区块
await provider.produceBlocks(10);
const blocks = await provider.getBlocks({
last: 10,
});
1
2
3
4
5
6
7
2
3
4
5
6
7
通过其 nonce 获取消息
您可以使用 getMessageByNonce
方法按其 nonce 检索消息。
ts
// #import { FUEL_NETWORK_URL, Provider };
const provider = await Provider.create(FUEL_NETWORK_URL);
const nonce = '0x381de90750098776c71544527fd253412908dec3d07ce9a7367bd1ba975908a0';
const message = await provider.getMessageByNonce(nonce);
expect(message).toBeDefined();
expect(message?.nonce).toEqual(nonce);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9