这集咱们要动手做些东西了。要想在 Nervos 的 AppChain 上面部署合约,首先要有拥有一个账户,里面要有币。因为部署是有费用的,到时候费用就会从这个账户里面扣除。这集就来完成创建账户并且往里面充值的操作。注意,课程中使用的是 AppChain 的测试网,所以申请到的代币也是测试网代币,是可以免费领取,不花钱的。

基本原理

我们先来生成一个 Nervos AppChain 的账户,也就是 account 。account 主要包含两项内容:地址和私钥。

我的第一直觉是用 Nervos 的 Neuron 钱包去生成。但是在手机上安装了 Neuron 之后,发现 Neuron 生成的 account,对应的私钥是不能导出的,应该是导出功能暂时还没有开发,未来有可能会加上。不管怎么说,部署合约的时候肯定是需要私钥的,所以这个方案放弃。可行的方案是使用官方 SDK Nervos.js 去生成。Nervos.js 可以通过安装 @nervos/chain 这个 npm 包来获取,我们可以在 JS 程序中去导入 Nervos.js ,去操作 Nervos AppChain 。功能跟以太坊的 Web3js 类似。

Nervos.js 不仅仅能帮我们生成账户,后续小节中,我们还要用它来部署智能合约,以及调用部署好的合约。详细的接口介绍可以参考 Nervos.js 的 npm 主页:https://www.npmjs.com/package/@nervos/chain

生成账户

下一步我们来动手生成账户。

mkdir demo
cd demo
npm init -y
yarn add @nervos/chain

命令行中,创建项目文件夹 demo ,进入文件夹生成 package.json 文件之后,安装 @nervos/chain 这个包。

index.js

const Nervos = require('@nervos/chain').default
const nervos = Nervos()
console.log(nervos.appchain.accounts.create())

创建 index.js 文件,里面写一个 nodejs 脚本。commonjs 模块语法导入 nervos 对象。通过 accounts.create() 接口就可以来创建账户了。

node index.js

执行 index.js 脚本,输出信息如下:

{ address: '0x6e30aDFF4d6390935B7fe4e8edC689acF58BC9D7',
  privateKey:
   '0x1771e0005e931151fbb35484e408b5cd63154d2b5dbe2f4e8ec22eb628d2763d',
  signTransaction: [Function: signTransaction],
  sign: [Function: sign],
  encrypt: [Function: encrypt]}

特别注意,私钥 privateKey 是不能泄露给任何人的。上面这个账户就是临时用一下,所以无所谓了。

于是, account 就到手了。

充值

下一步就可以充值了,或者说叫做充代币了,Nervos AppChain 的代币叫 NOS 。

再提一遍,由于我们后续部署只需要部署到测试网,所以代币也不需要购买,只需要到水龙头 https://dapp.cryptape.com/faucet/ 去输入地址获取即可,这个操作基本就是秒到账。

然后,到 AppChain 的区块链浏览器,也就是 microscope.cryptape.com 上,输入账户地址,就可以查询到账户余额了,数值是 0x 打头的,也就是8进制表示的。

也可以用 nervos.js 的 getBalance 接口来读取到余额。

nervos.appchain.getBalance(address).then(console.log)

账户中有了余额,后续操作就都可以顺利进行了。

总结

那我们这个小节就到这里了。总结起来就是干了一件事情,获得 AppChain 的一个账户,然后像里面充值了一些测试网代币。