基于测试网络进行开发

课程目标

  1. 如何正确连接到测试网络
  2. 使用jungle创建我的第一个账号
  3. 在jungle索取EOS测试币
  4. 在项目中创建账号

前言

咱们的课程到目前已经完成基于本地网络的EOS钱包开发,有三个模块:钱包模块、账号模块、转账模块,另外也能使用eosjs、cleos等。但是基于测试网络会有一些坑和区别,下面我们一起来学习。

一、如何正确连接到测试网络

1. 常见错误

学习快的同学可能自己已经提前尝试连接到测试网络,但是会报错

{"code":0,"name":"exception","what":"unspecified","details":[{"message":"Unknown Endpoint","file":"http_plugin.cpp","line_number":298,"method":"handle_http_request"}]}

我们打开jungle网站,查看jungle测试网节点地址,教程在“深入浅出EOSJS:连接到主网、测试网、交易”章节中作了详细说明。我们还是选用第一个测试地址http://jungle.cryptolions.io:38888

我们测试下为啥会报这样的错误

  • nodeos节点服务是没有问题的,我们能正常获取用户信息等。
cleos -u http://jungle.cryptolions.io:38888 get account lixulixulixu

  • 那么就肯定是keosd服务不支持了,我们来访问下wallet的API,如下
cleos --wallet-url http://jungle.cryptolions.io:38888 --print-request wallet list

2.错误分析

由此可见,jungle.cryptolions.io:38888测试节点上并没配置wallet的API插件,所以连接到测试网络中不支持wallet,但是支持wallet外的其它RPC连接。因为它作为一个公共的服务节点,是不可能帮助大家管理私钥的,那样会非常不安全,大家都会共用相同的钱包和私钥,除非它再为大家做一个用户系统,这就太没有必要了。

因此,我们连接到测试网络的时候,需要自己搭建keosd服务用于管理钱包和私钥。将wallet服务连接到本地服务,而nodeos服务连接到测试网络。这样仅仅是依赖我们的本地钱包应用程序keosd来处理我们的私钥,而账号、交易等是连接到的测试网络,因此该钱包项目上线后会需要我们服务器提供keosd服务。

3. 错误处理

修改config/config.js文件中httpEndpoint和chainId如下


//测试网络
eosconfig:{
    httpEndpoint:"http://jungle.cryptolions.io:18888",
    chainId: "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca", 
    ......
},

而walletAddress地址不能修改,还是连接到的本地IP“http://127.0.0.1:8889”。

现在只需启动keosd服务即可,nodeos可以停掉,然后启动NodeJS后台服务我们,查看前面创建的钱包“mywallet1”,如下图

可见该钱包中虽然还是拥有之前一样的私钥,但是所管理的账号为null。大家应该该记得前面的截图,在本地网络中该钱包的账号有哪些,如下

二、使用jungle创建我的第一个账号

我们已经知道在EOS区块链中创建账号是需要使用已有账号去创建,并需要购买和消耗一定网络资源。那么我们在测试网络中由谁帮我们创建第一个账号呢?下面我们通过jungle网站为我们创建第一个账号。

第一步:

我们打开jungle网站,在导航栏上有一个创建账号按钮是“Create Account”,点击它会出现如下的弹框

注意账号名称在测试网络和主网中必须是12位,自己去创建一对公私钥作为owner与acitve权限的管理者。输入后点击按钮“Create”。

第二步:

然后会弹出如下的交易信息,说明已经创建成功。

可以看见eosio为该账号购买了网络资源:RAM、NET、CPU。具体说明将在下一章介绍。

** 第三步: **

输出命令查看新创建的账号“lixutest1111”的信息

cleos -u http://jungle.cryptolions.io:18888 get account lixutest1111

输出如下

说明已经创建成功,但是没有余额。

第四步:

将“lixutest1111”账号的私钥导入到“mywallet1”钱包中,将会查看到该账号。

衍生

很多人会使用eosio的私钥去控制账号,而每台电脑里eosio设置的私钥都是一样的,我们可以导入eosio的私钥到钱包,那样就可以有了它所控制的所有账号的控制权,还能找到有些账号有EOS测试币,哈哈。OK,那我们导入私钥“5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3”到“mywallet2”钱包中吧,因为里面的账号太多了。下面是我导入后的结果,我截取了前面部分的账号。

三、索取EOS测试币

索取EOS测试币是我们后面交易和购买资源不可缺少的资源。当然,这也离不开jungle网站的支持。

第一步:

我们打开jungle网站,在导航栏上有一个索取EOS的按钮是“Faucet”,点击它会出现如下的弹框

输入后点击按钮“Send Coins”。

第二步:

然后会弹出如下的交易信息,说明已经创建成功。

可以看见是eosio转出了100EOS到该账号,同时“lioninjungle”账号转来了100个JUNGLE代币。

第三步:

查看该账号的详情,将会查收到有100EOS和100JUNGLE。

四、在项目中创建账号

在项目中创建账号的功能已经完成,之前是在本地网络,现在我们运行在测试网络中,看看会有什么区别。

第一步:

新建账号“lixutest1112”,使用“mywallet1”钱包中的任意一个公钥控制。

第二步:

可以看到“mywallet1”钱包中又多了一个账号“lixutest1112”,它的余额显示为0,但是“lixutest1111”的余额由100EOS变为了下面的79.4019EOS。

为何少了20.5EOS呢,我们查看创建账号的代码,如下:

可见我们在转账的时候给新账号买了NET和CPU和花费了10EOS,另外买了8192bytesRAM。所以一共扣掉了约20.5EOS。

第三步:

查看账号“lixutest1112”的网络资源,确实拥有了10个EOS抵押NET和10EOS抵押CPU,RAM有9.325Kib。

五、小结

经过本章内容我们已经成功将钱包项目连接到了真实的测试网络,用于管理钱包私钥的服务是本地搭建的。经过测试我们的功能都已成功,下一章的内容将介绍如何购买网络资源。

项目源码Github地址

作者:李旭

来源:http://www.chaindesk.cn

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦