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

Alaya JS SDK 快速入门教程(二):转账与交易 | 技术云图
52jyhcc
52jyhcc
60
阅读
0
评论
2021年10月26日19:14:46 0 60

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

转账交易

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

账号

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

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

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

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

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

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

转账操作

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

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

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

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

var Web3a = require("web3");

var AlayaAccounts = require("web3/packages/web3-eth-accounts");

async function main() {

    let web3a = new Web3a('http://47.241.91.2:6789');

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

    // address for the privatekey below: atp1sznvsju6gjy3kmgnfgm526jf6e8x83twuctefh

    var privateKey="0x5ae02064df442340f861136acbfc4bd62b3d48393903bd6aac77ce0e7aaa9e5e";

    var chainId = 201030; //201018 for mainnet

    // // privatekey for the address below: 0x0727b77a246f2c01c1b7b068c26bd71b81700f7ea003dd1ba68a38885a69a1a5

    var toAddress = "atp1jqtmpjme9gvg6wnuyphzqzgphslfmjtxcy8mt2";

    var act = new AlayaAccounts(web3a.currentProvider, "atp");

    act = act.privateKeyToAccount(privateKey);

    let from = act.address;

    let nonce = web3a.utils.numberToHex(await web3a.platon.getTransactionCount(from));

    let gasPrice = await web3a.platon.getGasPrice();

    let tx = {

        from: from,

        to: toAddress,

        value: "1000000000000000000",

        chainId: chainId,

        gasPrice: gasPrice, 

        gas: "21000", 

        nonce: nonce,

    };

    // 签名交易

    let signTx = await act.signTransaction(tx);

    // 发送交易

    let receipt = await web3a.platon.sendSignedTransaction(signTx.rawTransaction);

    console.log("The receipt of the transaction is: " + JSON.stringify(receipt));

    console.log("sign tx data:\n", signTx.rawTransaction)

}

main();

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

指定hrp;

设置PrivateKey。

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

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

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

打赏 点赞(0)
weinxin
投诉建议
文章名+链接地址,发送到此微信:tourism52
历史上的今天
05月
24
SOAP,Header,元素,SOAPHeader,元素,可选,的,SOAP,Header, 菜鸟教程

SOAP Header 元素

SOAPHeader元素 可选的 SOAP Header 元素包含头部信息。 SOAP Header 元素 可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序...
W3C,XQuery,活动,W3C,XQuery,活动,是,一门,用于,从, 菜鸟教程

W3C XQuery 活动

W3C XQuery 活动 XQuery 是一门用于从 XML 文档中提取数据的语言。 XML 教程 如需学习更多有关 XQuery 的知识,请阅读我们的XQuery 教程。 XQ...
如何,使用,AppML,如何,使用,AppML,通过,以下,4个, 菜鸟教程

如何使用<AppML>

如何使用AppML 通过以下4个简单的步骤演示如何创建AppML的应用程序。 1.创建模型(Model) 使用以下内容创建文件 appml datasource database ...
WMLScript,exit,函数,WMLScript,exit,函数,退出,并向, 菜鸟教程

WMLScript exit() 函数

WMLScript exit() 函数 exit() 函数退出 WMLScript,并向该脚本的调用者返回一条消息。 语法 Lang.exit(value) 成分 描述 value...
10款炫酷的,html5,动画,特效,源码 菜鸟教程

10款炫酷的HTML5动画特效,附源码

HTML5确实非常强大,很多时候我们可以利用HTML5中的新技术实现非常炫酷效果时,这些效果也非常消耗电脑的CPU,但是这些HTML5效果确实能给用户带来不一样的用户体验。今天我要...

Comment list 共有 0 条评论

暂无评论