在以太坊侧链 POA 网络与 xDai 稳定币链进行 DApp 开发

由于以太坊又慢又贵的 POW 共识(尽管如此,以太坊依旧是最受欢迎的 DApp 平台),催生了各种以太坊测链的方案用来减少以太主网的拥塞,前面我们介绍了 Loom SDK, 这篇博客介绍下 POA Network 以及 xDai。
如果大家想稳定的数字货币做一些智能合约应用,在 Libra 还没有上线之前,也许你可以尝试一下 xDai。

什么是 POA 网络

POA 网络定位于以太坊的侧链(兼容以太坊协议),它使用一个全新的 POA 的共识机制

备注:POA 项目官方现在更愿意把 POA 作为自治证明共识(Proof of Autonomy)的缩写,而不是使用权威证明(Proof of Authority)

POA 共识是一种更直接有效的 POS 共识形式,它的验证者必须经过身份验证(貌似还会签署法律文件),在 POS 上通常是需要获得足够的选票(代币)来提高作恶成本,而 POA 则是靠验证者的信誉来做担保,作为一个二层网络,通常只有较小额的交易,追求性能而牺牲一些网络安全性可以理解,这也是二层网络通常的做法。

POA 网络启动时有 12 个验证者(现在有 20 多个), 这些验证者通过智能合约来管理,智能合约也加入了治理模式,验证者可以投票添加或删除验证者甚至是更新治理合约。验证者验证者出块的几率均等,每产生一个块可以过得一个 POA 币(侧链的原生代币)以及所有的手续费。

PoA 网络平均每 5 秒出一个块, 区块大小是 800 万 Gas,Gas price 固定为 1GWei(1POA=1,000,000,000Gwei), 因此可以推算 PoA 网络大概比以太坊快3倍,而运行 DApp 的 gas 费用则大大降低,当前一个 POA 的价格不到 0.2 元,历史最高时也只有6元,不像一个以太几千上万的价格。

PoA 网络出块信息可以在 blockscout 浏览器 查看详情, 值得提一下,BlockScout 是 POA Network 的另一个贡献,这是一个功能强大的开源的区块浏览器,支持所有以太坊协议的网络。Github 库

POA 网络的主网称为 POA Core,他还有一个测试网络为 POA Sokol。其实以太坊主网也有一个 POA 共识的测试网叫 Kovan 。

POA 的桥接技术 (TokenBridge)

POA 最大的价值在于其桥接技术,TokenBridge 是一个互操作性协议,它使得以太坊网络和 POA 网络之间可以相互通信(交互)。

备注:TokenBridge 之前为 POA Bridge, 因此很多文档里没有及时跟随更改, TokenBridge 代码库

目前桥接技术已经完成的功能有:

  1. 允许用户把自己在 POA 网络的原生代币 POA 转移到以太坊网络,在以太坊网络生成对应的 POA20 代币,POA20 是以太坊网络的 ERC 20 代币。
  2. 允许把以太坊网络的 ERC 20 代币转移到 POA 网络(或其他链),这些转移并不会重复产生新的币,它会在接收链创建对应的币而在发起链销毁对应的币。
  3. 不同网络之间的 ERC20 代币相互转移,有了这个技术我们就可以把昂贵的链上交易转移价格低廉的侧链,让区块链落地有了更多的可能。

其实,POA 桥接技术不仅仅可以用于以太坊网络和 POA 网络相互通信,也有其他的项目使用 TokenBridge 来进行 token 的转移,如:Sentinel Chain 和 Virtue Poker。

稳定币链 xDai Chain

最近 Libra 关注度太高,很多朋友知道它是 Facebook 发行的一个稳定币链,稳定币链要排个辈分的话,Libra 应该叫 xDai 一声大哥。

DAI 是以太坊上通过抵押数字资产发行的稳定币,一个 Dai=1 美元, 不熟悉的同学可以看我一篇文章理解去中心化稳定币 DAI, xDai Chain 是 DAI 背后的团队 MakerDAO 和 POA Network 合作推出的一条基于稳定币的 POA 共识链,xDai Chain 也是 POA 共识机制及 TokenBridge 相结合的最好的一个例子。

xDai 链和 POA Core 一样是以太坊网络上的侧链,XDAI 是侧链上原生代币(用来支付链上交易的 Gas),DAI 是对应在以太坊的 ERC20 代币,注意,xDai 链是不支持挖矿的,而是必须通过把 Dai 通过 TokenBridge 转移到 xDai 链产生 XDAI 币。其他的特性和 POA Core 一样, 如 5 秒的块生成时间,每笔交易的 gas 成本为 1Gwei,这样在 xDai 链上的交易成本就非常低。

xDai 解决了阻碍数字货币用于日常交易的两个主要因素:价格波动大及手续费高,把一些应用部署到 xDai 链上来会是个不错的选择。 后面我们会有文章介绍。

xDai 网络出块信息可以在 blockscout 浏览器 查看详情。

在 POA 网络上部署应用

我之前有一个教程在以太坊网络上开发了一个记事本应用 , 这个应用每添加一条记录会消耗不少的 gas 费用,现在我们把这个记事本应用部署到 POA 网络上。

利用水管获取 POA 币

把应用部署到 POA 网络上,需要要消耗一点 POA 币,我们得先想方法获得一些 POA,这里我们我使用 POA 测试网络 POA Sokol 提供的水管 https://faucet-sokol.herokuapp.com 获取 (如果要使用 POA 主网则需要去交易所购买 POA),进入页面之后,可以看到如下界面:

获取Sokol网络代币

注意一下:Sokol 水管为了防止被程序撸羊毛,加入了 Google 人机身份验证,所以这个页面需要大家翻墙访问,输入自己的以太坊账号,点击 “REQUEST 0.5 SPOA”,就可以获取到 POA Sokol 测试的代币 0.5 SPOA。

 Metamask 连接到 POA 网络

接下来在 Metamask 查看下账号的 SPOA 余额,看看是否到账,由于 Metamask 默认网络里面没有 POA 网络,所有我们通过 “CUSTOM RPC” 添加一个网络,在 “New RPC URL” 里输入 https://sokol.poa.network ,如下图:

Metamask添加RPC

查了使用 Metamask 钱包插件之外,还可以使用 POA 基于 MetaMask 定制的 Nifty 钱包,Nifty 默认就支持 POA 的各个网络,Nifty 钱包如下图:

Nifty

备注: 查看下账号也可以在 sokol 的 blockscout 浏览器 查看,Metamask 连接 POA 网络也是为后面使用 DApp 做准备。

使用 Truffle 部署合约到 POA 网络

Truffle 的基本使用,以及开发这个记事本 DApp,本文就不再重复介绍,参考前面的文章:Truffle 教程 , 用 Truffle 开发一个链上记事本,这里主要介绍如果 Truffle 如何了连接到 POA 网络。

先把 DApp 代码克隆到本地,大家可订阅跨链技术小专栏获取源代码。

truffle 配置加入 POA 网络

然后打开 truffle-config.js 文件,加入一个 sokol 网络, 方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
module.exports = {

  networks: {
    ...
    sokol: {
          provider: function() {
                return new HDWalletProvider(mnemonic, "https://sokol.poa.network")
          },
          network_id: 77,
          gasPrice: 1000000000
    },
    ...

上面 mnemonic 处大家用自己的助记词代替。

部署合约

然后使用命令 truffle migrate --network sokol 进行部署:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
> truffle migrate --network sokol

...

2_deploy_contract.js
====================

   Deploying 'NoteContract'
   ------------------------
   > transaction hash:    0x48dbba680f3f227b0e6aba42ecf467bf4xlb1324e0d765dcd
   > Blocks: 2            Seconds: 9
   > contract address:    0xb89ccfF5c3D4A15F69xLB9D0a9C3ce4a87047a6a
   > block number:        9867109
   > block timestamp:     1563892140
   > account:             0x1a197940bd151xlb53aF8eD04996A880a251D454
   > balance:             0.999159377
   > gas used:            537207
   > gas price:           1 gwei
   > value sent:          0 ETH
   > total cost:          0.000537207 ETH


   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:         0.000537207 ETH


Summary
=======
> Total deployments:   2
> Final cost:          0.0007986 ETH

 启动 DAPP 应用

npm run dev 启动 DAPP 服务, 在浏览起输入地址:http://localhost:3000 运行 DApp,因为刚刚 MetaMask 已经连接好了 POA 的测试网络 Sokoa, 现在可以直接和 DApp 进行交付。

在稳定币链 xDai 网络上部署应用

在 xDai 网络上部署和前面的 POA 测试网络步骤完全一起,只需要把上面 RPC URL 更改为 https://dai.poa.network
下面是一个各个网络对应 RPC URL 及网络 ID 的表格:

网络名称 RPC URL 网络 ID 代币 浏览器 URL
sokol 测试网 https://sokol.poa.network 77 SPOA https://blockscout.com/poa/sokol/
POA 主网 https://core.poa.network 99 POA https://blockscout.com/poa/core
xDai https://dai.poa.network 100 xDai https://blockscout.com/poa/dai

下一遍我们继续介绍在以太坊网络和 POA 网络之间如何使用桥接技术转移代币。最后安利一下我的跨链技术小专栏,现在订阅只要 19 元,订阅要趁早。

参考文章

  1. What is POA and How is it Unique?
  2. POA – Part 1 – Develop and deploy a smart contract
  3. POA – Getting Started
  4. POA-Network-Whitepaper
  5. POA bridge
  6. xDai Chain
© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享