阅读时间: 3 分钟
读者朋友们好!在上一篇博客中,我们读到了什么是Polkadot.js和如何安装它,所以现在我们将看到我们如何通过创建实例来使用它。所以,让我们开始吧!
我们已经安装了API。我们已经了解了将实际暴露的内容。以及API如何知道要暴露什么。所以让我们来创建一个实际的API实例。
// Import
import { ApiPromise, WsProvider } from '@polkadot/api';
...
// Construct
const wsProvider = new WsProvider('wss://rpc.polkadot.io');
const api = await ApiPromise.create({ provider: wsProvider });
// Do something
console.log(api.genesisHash.toHex());
提供者
专注于构建,任何API都需要一个提供者,我们通过const wsProvider = new WsProvider(...) 。默认情况下,如果没有提供给API,它将构建一个默认的WsProvider 实例来连接到ws://127.0.0.1:9944 。
我们一般建议总是指定端点,因为在大多数情况下,我们要连接到外部节点,即使是本地节点,也最好是明确的,少一些会让你在未来产生疑问的魔法。
WebSocket版本是唯一被API完全支持的提供者类型。一旦你能够访问双向RPC,如WebSocket所提供的,Polkadot/Substrate就真的有了很多可能性。
API实例
API的创建是通过ApiPromise.create 接口完成的,这是一个调用new ,然后等待API连接的快捷版本。如果没有async 语法,这将是。
ApiPromise
.create({ provider: wsProvider }).isReady
.then((api) =>
console.log(api.genesisHash.toHex())
);
在大多数情况下,我们建议使用.create 这个快捷方式,它实际上只是处理了以下需要提供的模板----。
// Create the instance
const api = new ApiPromise({ provider: wsProvider });
// Wait until we are ready and connected
await api.isReady;
// Do something
console.log(api.genesisHash.toHex());
失败
在所有情况下,API都会自动处理重新连接的问题。这意味着,当你连接时,端点还没有(准备好),承诺将不会立即解决,而是在连接时解决。这同样适用于 ,当连接丢失时,API将管理重新连接。
在API不支持被连接的链的情况下,比如它使用了一个未知的元数据版本。ready承诺将无法解决,而是拒绝。
运行时常量
常量查询将向你介绍类型背后的概念以及API与这些类型的交互。同样的概念在API的其余部分也有实现--运行时常量只是一个最简单的起点。
对于一些背景:常量是在运行时定义的值,并作为链操作的一部分使用。这些常量可以作为升级的一部分被改变。
// Initialize the API as per previous sections
...
// The length of an epoch (session) in Babe
console.log(api.consts.babe.epochDuration.toNumber());
// The amount required to create a new account
console.log(api.consts.balances.existentialDeposit.toNumber());
// The amount required per byte on an extrinsic
console.log(api.consts.transactionPayment.transactionByteFee.toNumber());
由于这些是常量,并由元数据定义,所以它不是一个调用,而是立即可用的值--正如你在随后的章节中看到的,不需要对这些await ,它立即返回类型和值供你使用。
感谢您阅读本博客,请继续关注更多关于polkadot.js APIs的内容。
如果你想阅读更多这样的内容? 请订阅Rust Times电子报,每两周一次,直接在您的收件箱中收到洞察力和最新的更新。订阅Rust Times电子报:https://bit.ly/2Vdlld7。