Querying the Chain

Icon Link查询链

一旦您设置了提供者,就可以与 Fuel 区块链进行交互了。

我们可以连接到 本地外部 节点:

Icon InfoCircle
  1. 运行本地节点
  2. 连接到外部节点

让我们来看一些示例。

Icon Link获取基础资产ID

基础资产是用于在链上执行任何交易的基础资产。应该从提供者中获取,然后在交易中使用。

// #import { Provider, FUEL_NETWORK_URL, ScriptTransactionRequest };
 
// Fetch the base asset ID using the provider
const provider = await Provider.create(FUEL_NETWORK_URL);
const baseAssetId = provider.getBaseAssetId();
// 0x...
 
// Create a transaction request
const transactionRequest = new ScriptTransactionRequest();
// Use the base asset for an operation
transactionRequest.addCoinOutput(recipientAddress, 100, baseAssetId);

Icon Link从地址获取所有硬币

此方法返回钱包中的所有硬币(可选给定资产ID),包括已花费的硬币。

// #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],
]);
 
// get single coin
const coin = await wallet.getCoins(baseAssetId);
// [{ amount: bn(42), assetId: baseAssetId }]
 
// get all coins
const coins = await wallet.getCoins();
// [
//   { amount: bn(42), assetId: baseAssetId }
//   { amount: bn(100), assetId: assetIdA }
// ]

Icon Link从地址获取可花费的资源

最后一个参数表示您想要花费多少。此方法仅返回可花费的、即未花费的硬币(给定资产ID)。如果您要求可花费的金额大于您拥有的未花费硬币的金额,则会返回错误。

// #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);

Icon Link从地址获取余额

获取地址的所有可花费资产的余额。这与获取硬币不同,因为我们只返回数字(每个资产ID的UTXO硬币金额总和),而不返回UTXO硬币本身。

// #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 }
// ]

Icon Link获取区块

此方法返回与给定查询匹配的区块链上的所有块。下面的代码片段显示如何获取最后 10 个块。

// #import { Provider, FUEL_NETWORK_URL };
const provider = await Provider.create(FUEL_NETWORK_URL);
// Force-producing some blocks to make sure that 10 blocks exist
await provider.produceBlocks(10);
const blocks = await provider.getBlocks({
  last: 10,
});

Icon Link通过其 nonce 获取消息

您可以使用 getMessageByNonce 方法通过其 nonce 检索消息。

// #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);