EOS钱包开发:基于测试网络进行开发

  • A+
所属分类:技术

目标

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

前言

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

EOS钱包开发:基于测试网络进行开发

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

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
  • EOS钱包开发:基于测试网络进行开发
      • 那么就肯定是keosd服务不支持了,我们来访问下wallet的API,如下
      • cleos --wallet-url http://jungle.cryptolions.io:38888 --print-request wallet list
      • EOS钱包开发:基于测试网络进行开发
      • 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”,如下图EOS钱包开发:基于测试网络进行开发可见该钱包中虽然还是拥有之前一样的私钥,但是所管理的账号为null。大家应该该记得前面的截图,在本地网络中该钱包的账号有哪些,如下EOS钱包开发:基于测试网络进行开发

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

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

    第一步:

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

    EOS钱包开发:基于测试网络进行开发

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

    第二步:

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

    EOS钱包开发:基于测试网络进行开发

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

    第三步:

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

    • cleos -u http://jungle.cryptolions.io:18888 get account lixutest1111
    • 输出如下EOS钱包开发:基于测试网络进行开发说明已经创建成功,但是没有余额。第四步:将“lixutest1111”账号的私钥导入到“mywallet1”钱包中,将会查看到该账号。EOS钱包开发:基于测试网络进行开发衍生很多人会使用eosio的私钥去控制账号,而每台电脑里eosio设置的私钥都是一样的,我们可以导入eosio的私钥到钱包,那样就可以有了它所控制的所有账号的控制权,还能找到有些账号有EOS测试币,哈哈。OK,那我们导入私钥“5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3”到“mywallet2”钱包中吧,因为里面的账号太多了。下面是我导入后的结果,我截取了前面部分的账号。EOS钱包开发:基于测试网络进行开发

      三、索取EOS测试币

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

      第一步:

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

      EOS钱包开发:基于测试网络进行开发

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

      第二步:

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

      EOS钱包开发:基于测试网络进行开发

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

      第三步:

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

      EOS钱包开发:基于测试网络进行开发

      四、在项目中创建账号

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

      第一步:

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

      EOS钱包开发:基于测试网络进行开发

      第二步:

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

      EOS钱包开发:基于测试网络进行开发

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

      EOS钱包开发:基于测试网络进行开发

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

      第三步:

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

      EOS钱包开发:基于测试网络进行开发

      五、小结

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

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

      未经授权禁止转载、改编,转载请注明出处!

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
漫兮

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: