在以太坊側鏈POA網路與xDai穩定幣鏈進行DApp開發

買賣虛擬貨幣
由於以太坊又慢又貴的POW共識(儘管如此,以太坊依舊是最受歡迎的DApp平臺),催生了各種以太坊側鏈的方案用來減少以太主網的擁塞,前面我們介紹了Loom SDK, 這篇部落格介紹下POA Network以及xDai。如果大家想穩定的數字貨幣做一些智慧合約應用,在Libra[1]還沒有上線之前,也許你可以嘗試一下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瀏覽器[2] 檢視詳情, 值得提一下,BlockScout 是POA Network的另一個貢獻,這是一個功能強大的開源的區塊瀏覽器,支援所有以太坊協議的網路。Github庫[3]POA 網路的主網稱為POA Core,他還有一個測試網路為POA Sokol。其實以太坊主網也有一個POA共識的測試網叫 Kovan 。POA的橋接技術(TokenBridge)POA最大的價值在於其橋接技術,TokenBridge是一個互操作性協議,它使得以太坊網路和POA網路之間可以相互通訊(互動)。備註:TokenBridge 之前為 POA Bridge, 因此很多文件裡沒有及時跟隨更改, TokenBridge程式碼庫[4]。
目前橋接技術已經完成的功能有: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[5], 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瀏覽器[6] 檢視詳情。在POA 網路上部署應用
我之前有一個教程在以太坊網路上開發了一個記事本應用[7], 這個應用每新增一條記錄會消耗不少的gas費用,現在我們把這個記事本應用部署到 POA 網路上。利用水管獲取POA幣

把應用部署到 POA 網路上,需要要消耗一點POA幣,我們得先想方法獲得一些POA,這裡我們我使用POA測試網路POA Sokol提供的水管 https://faucet-sokol.herokuapp.com 獲取(如果要使用POA主網則需要去交易所購買POA),進入頁面之後,可以看到如下介面:

注意一下: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錢包外掛之外,還可以使用POA基於MetaMask定製的Nifty 錢包[8],Nifty預設就支援POA的各個網路,Nifty 錢包如下圖:

備註:檢視下賬號也可以在sokol的blockscout瀏覽器 [9]檢視,Metamask 連線POA網路也是為後面使用DApp做準備。

使用 Truffle 部署合約到POA網路

Truffle 的基本使用,以及開發這個記事本DApp,本文就不再重複介紹,參考前面的文章:Truffle教程[10], 用 Truffle 開發一個鏈上記事本[11],這裡主要介紹如果Truffle如何了連線到POA網路。

先把DApp程式碼克隆到本地,大家可訂閱跨鏈技術小專欄[12]獲取原始碼。

truffle配置加入POA網路

然後開啟truffle-config.js 檔案,加入一個sokol網路, 方法如下:

module.exports = {

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

上面 mnemonic 處大家用自己的助記詞代替。

部署合約

然後使用命令truffle migrate --network sokol 進行部署:

> 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的表格:

下一遍我們繼續介紹在以太坊網路和POA網路之間如何使用橋接技術轉移代幣。最後安利一下我的跨鏈技術小專欄[13],現在訂閱只要19元,訂閱要趁早。

參考文章

1.What is POA and How is it Unique?[14]
2.POA - Part 1 - Develop and deploy a smart contract[15]
3.POA - Getting Started[16]
4.POA-Network-Whitepaper[17]
5.POA bridge[18]
6.xDai Chain[19]

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;