深入浅出EOSJS:连接到主网、测试网、交易

当前位置:首页 > 币圈百科 > 深入浅出EOSJS:连接到主网、测试网、交易

深入浅出EOSJS:连接到主网、测试网、交易

2023-01-20币圈百科211

eojs是EOSIO区块链的通用库,这里使用eosjs的目的是使用eosjs库中封装的交易的接口,使用及其简单,可在此处查看eosjs开发手册

一、EOSJS简单用法

安装安装EOSJS获取当前区块链的信息和查询指定区块的信息Eos=require(' Eos js ')Eos=Eos()Eos。getinfo((error,result)={ console.log('info:'error,result)})eos.getBlock(10,(error,result)={ console.log('block:'error,result)})首先启动本地节点网络。nodeos-e-p EOS io-plugin EOS io:chain _ API _ plugin-plugin EOS io:history _ API _ plugin-plugin EOS io:wallet _ API _ plugin通过命令行节点索引。射流研究…运行以上脚本,输出如下徐丽@ Ubuntu:~/Desktop/demo/eojsdemo $ node index。jsinfo:null { server _ version:' a 228 B1 DC 'chain _ id:' cf 057 bbfb 72640471 FD 910 BCB 67639 c 22 df 9 f 92470936 cddc 1 ade 0 e 2e 2 f 2e 7 DC 4 f 'head_block_num: 9259,last _ un reversible _ block _ num:9258,last _ un reversible _ block _ id:' 000242 a 811 header _ extensions:' qknkukgxayunnhs 6 pvri 8 ndim 5 xe 7 suheop 8 yzrnjbkemsrs '事务:[],block_extensions: [],id:' 00000000 A8 ab 5a b5 ab D5 Abd 8 f 55 B1 a 29 F8 a7 b5 a 1a 9 ad 722 ffeb 4 dfca 4 f 32110 f 4 df 2若链id:为cf 057 bbfb 72640471 FD 910 BCB 67639 c 22 df 9 f 92470936 cddc 1 ade 0 e 2e 2 f 2e 7 DC 4f '则证明连接到了本地网络

二、连接到测试网络

需要如下配置厄俄斯对象连接到指定的网络。修改以上代码eos=Eos()为如下代码。 config={ //chainId:' '密钥提供者:[' 5kqwrpbwdl 6 phxujxw 37 fssqz 1 jiw STS 4c qqzdeyxtp 79 ZK VFD 3 '],http端点:' http://丛林。隐狮。io:18888 '}eos=Eos(config)chainId:通过eos.getInfo方法获取到的链身份证明(identification)值填写在该字段中,用于连接到不同的网络中的必填字段关键供应商:用于签名事务的私钥,当前测试案例可随意填写,后续我们再介绍如果填写该字段的值httpEndpoint:提供nodeos服务的地址。

输出如下

徐丽@ Ubuntu:~/Desktop/demo/eojsdemo $ node index。jsinfo:null { server _ version:' 08819 aae 'chain _ id:' 038 f 4 b 0 fc 8 ff 18 a 4 f 0842 A8 f 0564611 f 6e 96 e 8535901 DD 45 e 43 AC 8691 a 1c 4 DCA 'head_block_num: 14459108,last _不可逆_block_num: 14458782,最后若链id:为038 F4 b 0 fc 8 ff 18 a4 f 0842 A8 f 0564611 F6 e 96 e 8535901 DD 45 e 43 AC 8691 a 1c 4d ca '则证明连接到了测试网络

三、获取丛林测试网节点地址

大家可能会有疑问,上面配置中httpEndpoint字段的地址怎么样获取十.打开丛林网站地址是http://jungle.cryptolions.io/点击应用程序接口端点按钮

随意选择一个地址在应用程序接口端点列表中展示了多个连接地址,随意选复制一个即可。上面代码示例中则是选择了第一个地址http://丛林。隐狮。io:18888。

四、连接到主网25729F82-18C1-491A-A58E-4C754FDA0A8AEC7EA31D-CA19-48EB-9386-C9EEDEE78457只需修改配置信息中的httpEndpoint字段,如下。config={ //chainId:' '密钥提供者:[' 5kqwrpbwdl 6 phxujxw 37 fssqz 1 jiw STS 4c qqzdeyxtp 79 ZK VFD 3 '],http端点:' https://node 1。兹伯奥斯。' com '}eos=Eos(配置)输出如下徐丽@ Ubuntu:~/Desktop/demo/eojsdemo $ node index。jsinfo:null { server _ version:' 78708 df 4 'chain _ id:' ACA 376 f 206 b 8 fc 25 a 6 ed 44 dbdc 66547 c 36 c 6 c 33 e 3a 119 FB beaef 943642 f 0 e 906 'head_block_num: 16481648.块:空{时间戳:' 2018-06-09T11:56:34.000 '制作者:' eosio '

若链id:为ACA 376 f 206 b 8 fc 25 a 6 ed 44 dbdc 66547 c 36 c 6 c 33 e 3a 119 FB beaef 943642 f 0 e 906 '则证明连接到了主网

五、获取主网节点地址

打开eospark网站地址是https://eospark.com。在该网站可查询所有超级节点接入点网址。选择超级节点随意选择一个超级节点即可十.选择接入点地址随意选择一个接入点地址即可。上面代码示例中则是选择了第一个地址https://node1.zbeos.com。

六、EOSJS配置

以下的教程在不特别说明的情况下,都是在本地网络上进行的开发

在前面介绍了简单的配置eos,在开发中我们一般需要如下完整的配置。let Eos=require(' Eos js ')let binary en=require(' binary en ')config={ chain id:' cf 057 bbfb 72640471 FD 910 BCB 67639 c 22 df 9 f 92470936 cddc 1 ade 0 e 2 f 2e 2 e 7 DC 4 f '密钥提供者:[' 5 kyu 9 xsv 3 xy 674 exf digd 5 srqxu 6 jzeulzxatcy 3 huazrht '],http点进制数据。要连接的区块链的唯一ID,这是有效交易签名所必需的字段100 蓑衣网小编2022 .chainId通过?get_infoAPI调用提供。签署的所有交易仅对具有此chainId的区块链有效。出于安全原因验证chainId。密钥提供者:数组|字符串数据。提供用于签名事务的私钥。 如果提供了多个私钥,并且您不能确定使用哪个私钥,则可以调用get_required_keysAPI来获取要签名的密钥。KeyPrefix:字符串数据。更改公钥前缀。HttpEndpoint:字符串数据。提供nodeos服务的地址,如本地节点地址:http://127.0.0.1:8888。ExpireInSeconds:数字数据。基于nodeosd的时间,事务过期前的秒数。Broadcast:布尔值,默认为真。使用true将事务发布到区块链,使用false获取已签名的事务。Verbose:布尔值,默认情况下为false。详细记录。Debug:布尔值,默认情况下为false。低级调试日志记录。Sign:布尔值,默认为真。用私钥签署交易。保留未签名的事务避免了提供私钥的需要。授权:数组|授权数据。代替eosjs的默认授权,签名帐户和权限通常在multisig配置中标识。授权可以是account@permission格式的字符串,如下:{ authorization:' user @ active ' } 1430DB737-46AC-4418-8F96-8FF30EF6D9ED注意:授权适用于个人操作,不属于Eos(config)。19D0EEE1-94DF-4F7A-B00D-3AB4789F88B5蓑衣网小编2022可选项:

可以在EOSJS方法的参数之后提供可选项,如下操作。

options = { authorization: 'user@active', broadcast: true, sign: true}eos.transfer('user', 'test', '1.0000 SYS', '', options)

七、创建账号

transaction函数接受标准区块链事务。

下面使用了newaccount去创建账号,新帐户需要抵押一定的代币用于RAM和带宽资源。使用已经存在的user账号去创建新账号user2。

代码需求:

keyProvider字段中需要填写user的active权限的私钥必须解锁user账号的active权限的私钥所在的钱包新账号user2的owner权限与active权限的公钥都是使用的局部变量pubkey里的值let Eos = require('eosjs')let binaryen = require('binaryen')config = { chainId: "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f", keyProvider: ["5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"], httpEndpoint: 'http://127.0.0.1:8888', binaryen: binaryen, expireInSeconds: 60, broadcast: true, verbose: false, sign: true}eos = Eos(config)async function transaction() { pubkey = 'EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV' let createor = "user" let acocunt = "user2" let data = await eos.transaction(tr => { tr.newaccount({ creator: createor, name: acocunt, owner: pubkey, active: pubkey }) tr.buyrambytes({ payer: createor, receiver: acocunt, bytes: 8192 }) tr.delegatebw({ from: createor, receiver: acocunt, stake_net_quantity: '10.0000 EOS', stake_cpu_quantity: '10.0000 EOS', transfer: 0 }) }) console.log(JSON.stringify(data))}transaction()运行后返回的数据为json字符串,经过格式化后数据较多,下面只展示了前面一部分{ "broadcast": true, "transaction": { "compression": "none", "transaction": { "expiration": "2018-09-15T06:55:34", "ref_block_num": 10949, "ref_block_prefix": 1636345996, "max_net_usage_words": 0, "max_cpu_usage_ms": 0, "delay_sec": 0, "context_free_actions": [], "actions": [ { "account": "eosio", "name": "newaccount", "authorization": [ { "actor": "user", "permission": "active" } ],......运行后即可查询到公钥EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV所关联的账号有user2,如下所示

八、代币转账

下面代码是实现user向tserer转账,转的代币是EOS,数额为1。

代码需求:

keyProvider字段中需要填写user的私钥必须解锁user账号的私钥所在的钱包user必须拥有EOS代币,且余额不小于1Eos = require('eosjs')let binaryen = require('binaryen')config = { chainId: "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f", keyProvider: ["5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"], httpEndpoint: 'http://127.0.0.1:8888', binaryen: binaryen, expireInSeconds: 60, broadcast: true, verbose: false, sign: true}eos = Eos(config)async function sendTransaction() { options = { authorization: 'user@active', broadcast: true, sign: true } let data = await eos.transaction(eos => { eos.transfer('user', 'tester', '1.0000 EOS', 'lixu', options) }) console.log("data:",data)}sendTransaction()在运行转账代码之前,先查询一下user与tester的代币余额,如下

运行后返回的数据为json字符串,经过格式化后数据较多,下面只展示了前面一部分{ "broadcast": true, "transaction": { "compression": "none", "transaction": { "expiration": "2018-09-15T07:28:07", "ref_block_num": 14856, "ref_block_prefix": 3593559935, "max_net_usage_words": 0, "max_cpu_usage_ms": 0, "delay_sec": 0, "context_free_actions": [ ], "actions": [ { "account": "eosio.token", "name": "transfer", "authorization": [ { "actor": "user", "permission": "active" } ],......运行后user账号的EOS代币余额会减少1个,由74变成了75;同时tester账号的EOS代币余额会增加1个由25变成了26,如下所示。14B473CD-9D2E-49D0-B2B2-7333D08599C8

九、总结

连接指定网络主要是设置httpEndpoint字段的地址,地址可以通过网站获取。连接到网络后注意设置chainId字段。

根据chainId可以确定连接的网络类型:

本地网络:cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f测试网络:038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca主网:aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906924CD145-485A-4CD2-B003-74A4E678AB25对象eos操作时所带有的私钥由keyProvider配置,很关键,若填错则无权限操作。019CEFDA-89E6-4AC6-AF07-5376E3A6DCF1

版权声明:博客中的文章版权归博主所有,未经授权禁止转载,转载请联系作者取得同意并注明出处。未经授权禁止转载、改编,转载请注明出处!

深入浅出EOSJS:连接到主网、测试网、交易 | 分享给朋友: