Alaya JS SDK 快速入门教程(二):转账与交易 | 技术云图

fffmCQ.jpg

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

转账交易

连接到Alaya网络并获取到Alaya网络的相关信息您已经成功了一半,但实际上如果要进行相关开发的话,账号相关的操作是非常必要的。毕竟如果没有账号,那么只能是Alaya旁观者,如果真要成为Alaya的参与者,账号是必不可少的。下面我们就从创建账号开始说明账号的使用及相关信息的获取。

账号

在开始之前,先大致介绍一下账号(Account)的概念:

Alaya JS SDK 快速入门教程(二):转账与交易 | 技术云图

Alaya使用了与以太坊相类似的账号体系,具体可以参照Alaya总体方案:

https://alaya.network/alaya-devdocs/zh-CN/Architecture#账户模型

账户:就像你的一个保险箱。在Alaya中会存储每个账户的状态。

私钥:私钥可以完全控制账户,所以私钥要妥善保存。私钥有两种表现形式:助记词(Mnemonic)和主密钥(Master Key)。助记词是12个单词,主要作用是帮助你记住密钥。请注意,如果你的助记词泄露,那么你的密钥就已经泄露。主密钥是一个64位16进制数。这个密钥一般在程序中使用,人为使用或记忆比较难。

公钥:可以看成你的账号地址或者银行卡号之类的。公钥进行一次hash操作之后生成地址。别人可以用地址(或者公钥)给你转账,当然也可以查看你的操作流水。

转账操作

无论是转账,还是后面其他的操作,一次交易的一般流程如下:

Alaya JS SDK 快速入门教程(二):转账与交易 | 技术云图

转账操作和下一节所述的签名操作是账户最常用的操作。但实际上在转账操作中也涉及了对数据的签名,但关于签名的更多细节不会在此节中展开。

注:!!!!将主网的私钥写到代码上并分享给别人是非常危险的操作!!!!

下面我们看一下转账的具体代码:

varWeb3a=require("web3");varAlayaAccounts=require("web3/packages/web3-eth-accounts");asyncfunctionmain(){letweb3a=newWeb3a('http://47.241.91.2:6789');//!!!!将主网的私钥写到代码上并分享给别人是非常危险的操作!!!!//addressfortheprivatekeybelow:atp1sznvsju6gjy3kmgnfgm526jf6e8x83twuctefhvarprivateKey="0x5ae02064df442340f861136acbfc4bd62b3d48393903bd6aac77ce0e7aaa9e5e";varchainId=201030;//201018formainnet////privatekeyfortheaddressbelow:0x0727b77a246f2c01c1b7b068c26bd71b81700f7ea003dd1ba68a38885a69a1a5vartoAddress="atp1jqtmpjme9gvg6wnuyphzqzgphslfmjtxcy8mt2";varact=newAlayaAccounts(web3a.currentProvider,"atp");act=act.privateKeyToAccount(privateKey);letfrom=act.address;letnonce=web3a.utils.numberToHex(awaitweb3a.platon.getTransactionCount(from));letgasPrice=awaitweb3a.platon.getGasPrice();lettx={from:from,to:toAddress,value:"1000000000000000000",chainId:chainId,gasPrice:gasPrice,gas:"21000",nonce:nonce,};//签名交易letsignTx=awaitact.signTransaction(tx);//发送交易letreceipt=awaitweb3a.platon.sendSignedTransaction(signTx.rawTransaction);console.log("Thereceiptofthetransactionis:"+JSON.stringify(receipt));console.log("signtxdata:/n",signTx.rawTransaction)}main();

请注意账号act的生成过程,由于Alaya网络的hrp为atp,所以设置过程需要两步:

指定hrp;

设置PrivateKey。

分别对应上述代码中的第14、15行。

这里有必要对如何创建并填充交易信息来进行一点说明。在JavaScript中,交易可以直接用字典类型,其中有很多字段需要从Alaya网络中查询,如nonce,gasPrice可以从网络中查找到推荐值,也可以自行设置。

后面的签名也是一个异步操作,但其所有签名操作都是在本地执行的,是离线签名。

签名后就是发送交易,交易发送成功会返回交易的收据。收据中包含了大量交易信息,具体可以参照JS SDK · Alaya:

https://alaya.network/alaya-devdocs/zh-CN/JS_SDK/#web3platongettransactionreceipt

(未完待续)

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

发表评论

登录后才能评论