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

fffmCQ.jpg

本教程从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

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

连接开发网络

varWeb3a=require('web3');varweb3a=newWeb3('http://47.241.91.2:6789');console.log(web3a.currentProvider)

当然,我们也可以使用web3.setProvider及web3.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的全部内容,里面的注释说明了每一段代码的用处。

asyncfunctionmain(){varWeb3a=require('web3');varweb3a=newWeb3a('http://47.241.91.2:6789');//节点的协议版本,返回结果为16进制字符串varversion=awaitweb3a.platon.getProtocolVersion();console.log("Alaya节点的协议版本:"+web3a.utils.hexToNumber(version));//Alaya节点是否正在同步,返回true/falsevarsyncing=awaitweb3a.platon.isSyncing();console.log("Alaya节点是否正在同步:"+syncing);//当前gas价格,该价格由最近的若干块的gas价格中值决定。单位为VON vargasPrice=awaitweb3a.platon.getGasPrice();console.log("GasPrice:"+gasPrice);//返回当前块编号varblockNumber=awaitweb3a.platon.getBlockNumber();console.log("BlockNumber:"+blockNumber);//获取指定块中特定账户地址的余额,单位VONvaraddress="atp1td535z2n3c7rjmsxuxdafd9gu8waz5lfx2a3c9";varbalance=awaitweb3a.platon.getBalance(address);console.log("AddressBalance:"+balance);//返回指定块编号或块哈希对应的块varblockHash="0x577e9777f0ee1cf1b4d2d45a959ee57a59ebd0927740df4cd483c99eb5c58e83";blockNumber=10418171;varblockByHash=awaitweb3a.platon.getBlock(blockHash);console.log("GetBlockbyHash:"+JSON.stringify(blockByHash));varblockByNumber=awaitweb3a.platon.getBlock(blockNumber);console.log("GetBlockbyNumber:"+JSON.stringify(blockByNumber));//返回指定块中的交易数量,和上一个函数一样,参数都可以为blockHash或blockNumbervartransCount=awaitweb3a.platon.getBlockTransactionCount(blockHash);console.log("TransactionNumberinBlock:"+transCount);//返回具有指定哈希值的交易对象vartransHash="0xa4414b82479af4dbdf4bab822f46f2414c200152553758678e506195b0fa9cfb";vartrans=awaitweb3a.platon.getTransaction(transHash);console.log("Transaction:"+JSON.stringify(trans));//指定地址发出的交易数量。此函数非常有用,可以用于确定交易的nonce varaccountTransCount=awaitweb3a.platon.getTransactionCount(address);console.log("AccountTransactionCount:"+accountTransCount);}main();

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

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

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

(未完待续)

声明:该文观点仅代表作者本人,与炒币网无关。炒币网系信息发布平台,仅提供信息存储空间服务。对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对文章观点负责。 提示:投资有风险,入市须谨慎。本资讯仅供参阅,不作为投资理财建议。

发表评论

登录后才能评论