用于区块链开发的Polkadot.js API (第二部分)

340 阅读3分钟

阅读时间: 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());

Polkadot and substratePolkadot and substrate

提供者

专注于构建,任何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。

Knoldus-blog-footer-imageKnoldus-blog-footer-image

分享Knol。

相关信息