本篇內(nèi)容介紹了“Quorum企業(yè)以太坊環(huán)境怎么搭建”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、江安網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5網(wǎng)站設計、商城建設、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為江安等各大城市提供網(wǎng)站開發(fā)制作服務。
Quorum是一個許可制的以太坊聯(lián)盟區(qū)塊鏈實現(xiàn),包含了金融巨頭JP摩根開發(fā)的一個GETH分支版本,可以在節(jié)點之間實現(xiàn)私有和快速的交易。Quorum為保證隱私對節(jié)點之間的私有交易進行了專門的設計,它使用Raft和Istanbul算法實現(xiàn)共識,使用Tessara和Constellation實現(xiàn)節(jié)點數(shù)據(jù)的加密和共享。在Quorum網(wǎng)絡中交易不需要付費,交易的驗證是由投票共識算法完成的??傮w上來講Quorum類似于以太坊,只是它更關注的企業(yè)環(huán)境下的交易隱私性與可控性,因此每個節(jié)點都需要Quorum網(wǎng)管生成的密鑰對。
學習Quorum區(qū)塊鏈的最好的辦法,就是運行官方提供的7節(jié)點示例。雖然有多種方法來搭建7個節(jié)點,我還是建議使用docker,因為這應該是最簡單的辦法。下面我使用Google云的Ubuntu 18.04。如果你在本地機器或AWS上有ubuntu,也是一樣的。請先確認docker和docker-compose已經(jīng)安裝就緒。
在下面的演示中,我們要搭建7個Quorum節(jié)點,然后考察節(jié)點之間的私有交易是如何運作的。
運行下面的命令來搭建全部7個節(jié)點:
git clone https://github.com/jpmorganchase/quorum-examples.git cd quorum-examples QUORUM_CONSENSUS=raft docker-compose up -d
默認情況下,使用Tessera交易管理器和Istanbul BTF共識來搭建Quorum網(wǎng)絡。因此為了修改為Raft共識算法,我們設置環(huán)境變量QUORUM_CONSENSUS=raft
,然后啟動7個節(jié)點 的后臺運行。
你可以運行docker ps
來查看每個容器的運行狀態(tài)以及其ID。需要稍等一會兒以便容器啟動就緒。
如果要快速掌握以太坊區(qū)塊鏈開發(fā),推薦匯智網(wǎng)的在線互動課程:
java以太坊開發(fā)詳解 | python以太坊開發(fā)詳解 | php以太坊開發(fā)詳解 | C#以太坊開發(fā)詳解
以太坊智能合約與DApp開發(fā)入門 | 以太坊電商DApp實戰(zhàn) | ERC721以太坊通證實戰(zhàn)
要在節(jié)點上部署智能合約,我們需要運行下面的命令進入該節(jié)點的geth控制臺:
docker exec -it quorum-examples_node1_1 geth attach /qdata/dd/geth.ipc
命令中的quorum-examples_node1_1
是節(jié)點1的容器ID。上面的命令進入節(jié)點1的geth控制臺,現(xiàn)在我們可以在控制臺中進行操作。
下面我們要運行部署合約的javascript腳本。如果你查看示例代碼目錄,可以看到在quorum-examples/examples/7nodes目錄下有private-contract.js
和simplestorage.sol
文件。在geth控制臺運行:
> loadScript('/examples/private-contract.js')
命令執(zhí)行需要稍等一會兒。一旦部署成功,上面的命令將返回合約地址,記得拷貝下來或者抄到紙上。上述腳本在節(jié)點1上部署了一個簡單的狀態(tài)值為42的存儲合約,交易是節(jié)點1和節(jié)點7之間私有的,這意味著其他節(jié)點將看不到這個狀態(tài)值。
要驗證這一點,我們可以開啟節(jié)點2的geth終端,使用ABI和合約地址創(chuàng)建合約實例:
> var abi=; > var address=" "; > var contract=eth.contract(abi).at(address); >contract.get() //calling get() method 0
果然。
現(xiàn)在進入節(jié)點7的geth終端,同樣使用ABI和合約地址創(chuàng)建合約實例,然后嘗試讀取狀態(tài)值:
>contract.get() 42
和預期一樣。
現(xiàn)在我們嘗試在節(jié)點7和其他任選節(jié)點之間創(chuàng)建一個新的私有交易,調(diào)用合約的set()
方法來修改狀態(tài)值。這需要使用節(jié)點的公鑰,可以在quorum-examples/examples/7nodes/keys/
目錄下找到全部7個節(jié)點的對應公鑰。
contract.set(4,{from:eth.coinbase,privateFor:[""]});
上面的腳本將設置合約狀態(tài)值為4,并且僅對指定的節(jié)點保持可見。你可以打開這些指定節(jié)點的geth終端查看合約狀態(tài)值,你看到的應該是4。
“Quorum企業(yè)以太坊環(huán)境怎么搭建”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!