Alaya JS SDK 快速入门教程(一):安装并链接Alaya网络

原创 PlatON PlatON今天

图片

本教程从alaya js sdk的安装开始,分别讲述了连接Alaya网络并执行基本查询、转账及签名操作及智能合约交互的相关内容。本教程力求翔实地展现了Alaya JS SDK的使用方法,让开发者能够快速入门Alaya JS SDK。

在nodejs中安装Alaya js sdk

  • 安装nodejs,建议使用nodejs的LTS版本。
  • 安装lerna。安装前可以使用lerna --version来验证之前是否已经安装过,如果没有安装请使用npm i lerna -g进行全局安装。
  • 初始化nodejs项目。新建一个项目文件夹,并进入此文件夹,如mkdir alaya-js-sdk-examples & cd alaya-js-sdk-examples,然后使用命令npm init -y进行项目初始化。此操作会在alaya-js-sdk-examples下面新建一个文件package.json
  • 安装Alaya的js sdk。仍旧是在之前的文件夹下,使用命令npm i AlayaNetwork/client-sdk-js#0.15.1-develop进行js sdk的安装。
  • 创建basic.js文件。后续可以在此文件中进行开发,在本教程中会在此文件中编写进行基本的RPC查询的代码。

在此部分,我们在basic.js中添加两行代码:

varWeb3a = require('web3');
console.log(Web3a.version);

注:本教程为了便于区分,将原文档中的Web3重命名为Web3a,web3重命名为web3a。这样便于与多数教程中ethereum的Web3与web3进行区分。

  • 运行basic.js代码。在命令行中使用命令node basic.js运行此代码,如果返回类似于以下版本号,说明你已经完成了Alaya js sdk的安装。
0.15.1

注:后面代码在没有特殊说明的前提下,都是在nodejs及网页上可以运行的

连接Alaya区块链并执行基本查询

Alaya的网络分为主网、开发网络和私有网络。为了降低开发成本建议使用开发网络或私有网络进行开发、测试,测试完成后可在主网进行部署。

更多的关于网络的说明请参照:

https://alaya.network/alaya-devdocs/zh-CN/Run_a_fullnode

开发网的相关信息请参照:

https://alaya.network/alaya-devdocs/zh-CN/Join_the_dev_network

为了降低本教程的使用门槛,所以本教程使用开发网络为例进行说明。

连接开发网络

var Web3a = require('web3');
var web3a = new Web3('http://47.241.91.2:6789');
console.log(web3a.currentProvider)

当然,我们也可以使用web3.setProviderweb3.platon.setProvider来设置当前网络。

查询网络基础信息

后续的开发中会有很多异步的调用的例子,在js语法中最常见的有三种:

callback,请参照:

http://nodejs.cn/learn/javascript-asynchronous-programming-and-callbacks

Promises,请参照:

http://nodejs.cn/learn/understanding-javascript-promises

async/await,请参照:

http://nodejs.cn/learn/modern-asynchronous-javascript-with-async-and-await

本文为了简化代码,都是使用的async/await的写法。下面的代码为basic.js的全部内容,里面的注释说明了每一段代码的用处。

async function main() {    
    var Web3a = require('web3');    
    var web3a = new Web3a('http://47.241.91.2:6789');    
    // 节点的协议版本,返回结果为16进制字符串
    var version = await web3a.platon.getProtocolVersion();    
    console.log("Alaya节点的协议版本:" + web3a.utils.hexToNumber(version));  
    // Alaya节点是否正在同步,返回true/false    
    var syncing = await web3a.platon.isSyncing();    
    console.log("Alaya节点是否正在同步:" + syncing);    
    // 当前gas价格,该价格由最近的若干块 的gas价格中值决定。单位为VON    
    var gasPrice = await web3a.platon.getGasPrice();    
    console.log("Gas Price: " + gasPrice);    
    // 返回当前块编号    
    var blockNumber = await web3a.platon.getBlockNumber();    
    console.log("Block Number: " + blockNumber);    
    // 获取指定块中特定账户地址的余额,单位VON
    var address = "atp1td535z2n3c7rjmsxuxdafd9gu8waz5lfx2a3c9";    
    var balance = await web3a.platon.getBalance(address);    
    console.log("Address Balance: " + balance);    
    // 返回指定块编号或块哈希对应的块    
    var blockHash = "0x577e9777f0ee1cf1b4d2d45a959ee57a59ebd0927740df4cd483c99eb5c58e83";    
    blockNumber = 10418171;    
    var blockByHash = await web3a.platon.getBlock(blockHash);    
    console.log("Get Block by Hash: " + JSON.stringify(blockByHash));    
    var blockByNumber = await web3a.platon.getBlock(blockNumber);    
    console.log("Get Block by Number: " + JSON.stringify(blockByNumber));       
    // 返回指定块中的交易数量,和上一个函数一样,参数都可以为blockHash或blockNumber 
    var transCount = await web3a.platon.getBlockTransactionCount(blockHash);    
    console.log("Transaction Number in Block: " + transCount);    
    // 返回具有指定哈希值的交易对象    
    var transHash = "0xa4414b82479af4dbdf4bab822f46f2414c200152553758678e506195b0fa9cfb";    
    var trans = await web3a.platon.getTransaction(transHash);    
    console.log("Transaction: " + JSON.stringify(trans));    
    // 指定地址发出的交易数量。此函数非常有用,可以用于确定交易的nonce    
    var accountTransCount =  await web3a.platon.getTransactionCount(address);    
    console.log("Account Transaction Count: " + accountTransCount);
}
main();

上面的代码只举例了部分比较常用的查询函数,大家可以发现查询函数的使用方法非常单一,以上例子足够说明。

下一期的内容我们将讲述入门教程中的转账交易模块,欢迎大家关注。

特别鸣谢本教程贡献者@RileyGe

(未完待续)

本文转载自https://mp.weixin.qq.com/s/uhoysBbWvxR2pwPXJtxbng

(0)
上一篇 10月 14, 2021 11:07
下一篇 10月 15, 2021 09:41

相关推荐

发表评论

登录后才能评论