一旦您设置了提供者,就可以与 Fuel 区块链进行交互了。
我们可以连接到 本地 或 外部 节点:
让我们来看一些示例。
基础资产是用于在链上执行任何交易的基础资产。应该从提供者中获取,然后在交易中使用。
// #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);
此方法返回钱包中的所有硬币(可选给定资产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 }
// ]
最后一个参数表示您想要花费多少。此方法仅返回可花费的、即未花费的硬币(给定资产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);
获取地址的所有可花费资产的余额。这与获取硬币不同,因为我们只返回数字(每个资产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 }
// ]
此方法返回与给定查询匹配的区块链上的所有块。下面的代码片段显示如何获取最后 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,
});
您可以使用 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);