❶ 以太坊多節點私有鏈部署
假設兩台電腦A和B
要求:
1、兩台電腦要在一個網路中,能ping通
2、兩個節點使用相同的創世區塊文件
3、禁用ipc;同時使用參數--nodiscover
4、networkid要相同,埠號可以不同
1.4 搭建私有鏈
1.4.1 創建目錄和genesis.json文件
創建私有鏈根目錄./testnet
創建數據存儲目錄./testnet/data0
創建創世區塊配置文件./testnet/genesis.json
1.4.2 初始化操作
cd ./eth_test
geth --datadir data0 init genesis.json
1.4.3 啟動私有節點
1.4.4 創建賬號
personal.newAccount()
1.4.5 查看賬號
eth.accounts
1.4.6 查看賬號余額
eth.getBalance(eth.accounts[0])
1.4.7 啟動&停止挖礦
啟動挖礦:
miner.start(1)
其中 start 的參數表示挖礦使用的線程數。第一次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢,等進度達到 100% 後,就會開始挖礦,此時屏幕會被挖礦信息刷屏。
停止挖礦,在 console 中輸入:
miner.stop()
挖到一個區塊會獎勵5個以太幣,挖礦所得的獎勵會進入礦工的賬戶,這個賬戶叫做 coinbase,默認情況下 coinbase 是本地賬戶中的第一個賬戶,可以通過 miner.setEtherbase() 將其他賬戶設置成 coinbase。
1.4.8 轉賬
目前,賬戶 0 已經挖到了 3 個塊的獎勵,賬戶 1 的余額還是0:
我們要從賬戶 0 向賬戶 1 轉賬,所以要先解鎖賬戶 0,才能發起交易:
發送交易,賬戶 0 -> 賬戶 1:
需要輸入密碼 123456
此時如果沒有挖礦,用 txpool.status 命令可以看到本地交易池中有一個待確認的交易,可以使用 eth.getBlock("pending", true).transactions 查看當前待確認交易。
使用 miner.start() 命令開始挖礦:
miner.start(1);admin.sleepBlocks(1);miner.stop();
新區塊挖出後,挖礦結束,查看賬戶 1 的余額,已經收到了賬戶 0 的以太幣:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
用同樣的genesis.json初始化操作
cd ./eth_test
geth --datadir data1 init genesis.json
啟動私有節點一,修改 rpcport 和port
可以通過 admin.addPeer() 方法連接到其他節點,兩個節點要要指定相同的 chainID。
假設有兩個節點:節點一和節點二,chainID 都是 1024,通過下面的步驟就可以從節點二連接到節點一。
首先要知道節點一的 enode 信息,在節點一的 JavaScript console 中執行下面的命令查看 enode 信息:
admin.nodeInfo.enode
" enode://@[::]:30303 "
然後在節點二的 JavaScript console 中執行 admin.addPeer(),就可以連接到節點一:
addPeer() 的參數就是節點一的 enode 信息,注意要把 enode 中的 [::] 替換成節點一的 IP 地址。連接成功後,節點一就會開始同步節點二的區塊,同步完成後,任意一個節點開始挖礦,另一個節點會自動同步區塊,向任意一個節點發送交易,另一個節點也會收到該筆交易。
通過 admin.peers 可以查看連接到的其他節點信息,通過 net.peerCount 可以查看已連接到的節點數量。
除了上面的方法,也可以在啟動節點的時候指定 --bootnodes 選項連接到其他節點。 bootnode 是一個輕量級的引導節點,方便聯盟鏈的搭建 下一節講 通過 bootnode 自動找到節點
參考: https://cloud.tencent.com/developer/article/1332424
❷ 公有鏈,私有鏈與聯盟鏈有何不同
根據用戶需求和場景應用不同,區塊鏈分為公有鏈(PublicBlockchain)、私有鏈(PrivateBlockchain)以及聯盟鏈(ConsortiumBlockchain)三大類。
公有鏈去中心化程度。這種以比特幣以及以太坊為代表的公有區塊鏈,不受第三方機構控制,世界上所有的人都可讀取鏈上的數據記錄、參與交易以及競爭新區塊的記賬權等。
程序開發者無權干涉用戶,各參與者(即節點)可自由加入以及退出網路,並按照意願進行相關操作。
私有區塊鏈則完全相反,該網路的寫入許可權由某個組織或者機構全權控制,數據讀取許可權受組織規定,要麼對外開放、要麼具有一定程度的訪問限制。
簡單來說,可以將其理解為一個弱中心化或者多中心化的系統。由於參與節點具有嚴格限制且少;與公有鏈相比,私有鏈達成共識的時間相對較短、交易速度更快、效率更高、成本更低。
而聯盟鏈則是介於公有鏈以及私有鏈之間的區塊鏈,可實現「部分去中心化」。
鏈上各個節點通常有與之相對應的實體機構或者組織;參與者通過授權加入網路並組成利益相關聯盟,共同維護區塊鏈運行。
從某種程度上來說,聯盟鏈也屬於私有鏈的范疇,只是私有化程度有所不同而已。為此其同樣具有成本較低、效率較高的特點,適用於不同實體間的交易、結算等B2B交易。
總的來說,公有鏈的進入門檻最低,而私有鏈以及聯盟鏈則在開放程度上有所限制。
❸ 公有鏈,私有鏈與聯盟鏈有何不同
公有鏈向所有人開放,私有鏈向滿足特定條件的個人開放,聯盟鏈向授權的組織或機構開放。
公有鏈,也就是公共區塊鏈(Public blockchains),是指全世界任何一個人都可以讀取、任何一個人都可以發送交易且交易能夠獲得有效確認的共識區塊鏈。
私有鏈,也就是完全私有區塊鏈(Fully private blockchains),是指寫入許可權完全在一個組織手裡的區塊鏈,所有參與到這個區塊鏈中的節點都會被嚴格控制。
聯盟鏈,即聯盟區塊鏈(Consortium blockchains),是指有若干組織或機構共同參與管理的區塊鏈,每個組織或機構控制一個或多個節點,共同記錄交易數據,並且只有這些組織和機構能夠對聯盟鏈中的數據進行讀寫和發送交易。
區塊鏈有公有鏈,私有鏈與聯盟鏈三種。
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。
區塊鏈(Blockchain)是比特幣的一個重要概念,它本質上是一個去中介化的資料庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。
❹ 公有鏈、聯盟鏈、私有鏈是什麼意思
公有鏈是指全世界任何人都可讀取、發送交易且交易能獲得有效確認的、也可以參與其中共識過程的區塊鏈。
聯盟鏈,只針對某個特定群體的成員和有限的第三方,其內部指定多個預選節點為記賬人,每個塊的生成由所有的預選節點共同決定。
私有鏈指的是對單獨的個人或實體開放。
希望對你有幫助,望採納。
❺ 什麼是公有鏈什麼是私有鏈什麼是聯盟鏈
1.公共區塊鏈(Public
blockchains)
公共區塊鏈是指全世界任何人都可讀取的、任何人都能發送交易且交易能獲得有效確認的、任何人都能參與其中共識過程的區塊鏈——共識過程決定哪個區塊可被添加到區塊鏈中和明確當前狀態。作為中心化或者准中心化信任的替代物,公共區塊鏈的安全由「加密數字經濟」維護——「加密數字經濟」採取工作量證明機制或權益證明機制等方式,將經濟獎勵和加密數字驗證結合了起來,並遵循著一般原則:每個人從中可獲得的經濟獎勵,與對共識過程作出的貢獻成正比。這些區塊鏈通常被認為是「完全去中心化」的。數字貨幣交易平台幣匯8bihui.com/xcyqm
2.聯盟區塊鏈:(Consortium
blockchains)
聯盟區塊鏈是指其共識過程受到預選節點控制的區塊鏈;例如,不妨想像一個有15個金融機構組成的共同體,每個機構都運行著一個節點,而且為了使每個區塊生效需要獲得其中10個機構的確認(2/3確認)。區塊鏈或許允許每個人都可讀取,或者只受限於參與者,或走混合型路線,例如區塊的根哈希及其API(應用程序介面)對外公開,API可允許外界用來作有限次數的查詢和獲取區塊鏈狀態的信息。這些區塊鏈可視為「部分去中心化」。
3.完全私有區塊鏈(Fully
private
blockchains)
完全私有的區塊鏈是指其寫入許可權僅在一個組織手裡的區塊鏈。讀取許可權或者對外開放,或者被任意程度地進行了限制。相關的應用囊括資料庫管理、審計、甚至一個公司,盡管在有些情況下希望它能有公共的可審計性,但在很多的情形下,公共的可讀性並非是必須的。
❻ Docker 搭建以太坊私有鏈
首先需要安裝 Docker,Docker 的安裝和使用可以參看阮一峰老師的 《Docker 入門教程》 。
Ethereum 官方是支持 docker 的,可以參看 官方文檔 。
centOS
其中 -v /home/linshan/works/block-chain/ethereum:/root 是把我們當前的 ethereum 目錄,掛到了docker 的 /root 下。
在 Windows 環境下使用 -v /home/linshan/works/block-chain/ethereum:/root 不能啟動容器,原因不明,所以在 Windows 下先不要使用目錄掛載。
各欄位具體用途參看 官方文檔 。
Windows
Windows 不必創建 start-ethereum.sh 文件, genesis.json 也可以在 Docker 容器啟動後創建。
centOS
Windows
運行成功後執行
進入 docker 容器命令行
因為 Windows 沒有掛載共享目錄,所以 root 目錄下沒有 genesis.json 文件,我們要在這裏手動創建 genesis.json 文件,內容要和 centOS 的一致。
data 用來存放區塊數據
geth 的參數參看 以太坊客戶端Geth命令用法-參數詳解
啟動私有節點後進入 geth 命令行執行:
輸出的內容就是節點信息,我們在手動連接節點是會用到,注意要把「0.0.0.0「換成你自己的IP,然後將這個信息發送給其他節點。手動連接節點有兩種方式:
當然不管使用哪種方法連接節點都要保證創世區塊文件 genesis.json 一致,還有在啟動時 networkid 也要一致。
至此以太坊私有鏈已搭建完畢。
geth命令
docker命令
❼ 區塊鏈,4種類型,知多少
——你好,我是心態,專注分享對區塊鏈的認知與投資思考。希望能幫到你。
區塊鏈根據不同的使用需求和場景,區塊鏈分為:公有鏈、聯盟鏈、私有鏈和混合鏈4種類型。
1.公有鏈
公有鏈,是指全世界任何節點的任何人,在任何地理位置,都可以進入系統讀取數據、發送交易、競爭記賬等參與共識的區塊鏈。沒有任何機構或個人可以篡改其中的數據,因此公有鏈是完全去中心化的。
比特幣和以太坊都是公有鏈的代表。公有鏈一般通過發行代幣(Token)來鼓勵參與者競爭記賬(即挖礦),以確保數據的安全性和共識更新。
比特幣平均每10分鍾產生1個區塊,且其POW機制很難縮短區塊時間,POS機制相對而言可縮短區塊時間,但更易產生分叉。所以交易需要等待更多確認才被認為安全。
一般認為,比特幣中的區塊經過6個確認後才是足夠安全的,這大概需要1個小時。這樣的確認速度難以滿足商業級的應用。因此,ETH及EOS等支持更多寫入速度的公有鏈正在不斷發展。
2.聯盟鏈
聯盟鏈是指有若干機構共同參與和管理的區塊鏈,每個機構都運行N個節點。
聯盟鏈的數據只允許系統內不同的機構進行讀寫和交易,通過數字證書的方式實現基於PKI的身份管理體系交易或提案的發起,以參與方共同簽名驗證來達成共識,因此不需要工作量證明(POW),也不存在數字貨幣(代幣),提高了交易達成的效率,節約了大量計算成本(算力硬體投入和電力能源消耗)。
通常情況下,參與聯盟鏈的節點會被劃分不同的讀寫許可權,能支持每秒1000次以上的數據寫入。
3.私有鏈
私有鏈與公有鏈完全去中心化不同,私有鏈的進入許可權由某個組織進行控制,各個節點參與資格由該組織授權控制。
由於參與的各個節點是有限且可控的,私有鏈往往擁有很快的處理速度,能支持每秒1000以上的數據寫入,同時降低內部各個節點的交易成本。
節點可以實名參與,因此具有確認身份的金融屬性。私有鏈的價值主要是提供安全、可追溯、不可篡改、自動執行的運算平台,可以同時防範來自內部和外部對數據的安全攻擊或篡改,這在傳統的系統中是很難做到的。
私有鏈的應用場景一般在企業內部,如分公司的庫存管理,各地數據的匯總統計等,也可以用在政府的預算和執行等可以被公眾監督的領域。大型金融集團目前也傾向於使用私有鏈技術。
4. 混合鏈
當公有鏈和私有鏈的各自優勢相結合時,就會出現混合鏈。混合鏈的開發難度大,但前景廣闊。
未來市場上,一定會出現巨頭型的底層技術和協議開發的公司,這些巨頭公司會架設出不同用途的公有鏈、私有鏈或者聯盟鏈,基於對性能和安全性及應用場景的不同需求,然後嫁接不同行業的應用。比如一條支持高並發的通信類公有鏈,一條側重安全性的支付聯盟鏈,等等。
(感謝閱讀)
點個贊,點個關注,就是對我最大的支持,咱們明天見。
❽ 以太坊私有鏈如何更新版本
以太坊私有鏈更新版本的方法:
1、獲取以太坊私有鏈系統的當前版本對應的當前版本號;
2、基於所述當前版本號,確定所述以太坊私有鏈系統的升級版本的升級版本號;
3、將所述以太坊私有鏈系統升級為所述升級版本號對應的升級版本。
❾ 什麼是聯盟鏈
隨著區塊鏈技術的發展,越來越的個人及企業也開始關注區塊鏈,而和區塊鏈聯系最為緊密的,恐怕就是金融行業了。
然而雖然比特幣區塊鏈大受熱捧,但畢竟比特幣區塊鏈是屬於公有區塊鏈,公有區塊鏈有著其不可編輯,不可篡改的特點,這就使得公有鏈並不適合企業使用了,畢竟如果某金融企業開發出一個區塊鏈,無法受其主觀控制,那對於他的意義就不大了。
因此私有鏈就應運而生了,但私有鏈雖然能夠解決以上的問題,如果僅僅只是各個企業自己單獨建立,那麼還將是一個個孤島。
如果能夠聯合起來開發私有區塊鏈,最好不過了。
這就是今天要講的主題:聯盟鏈。
聯盟鏈本質上仍然屬於一種私有鏈
聯盟鏈本質上仍然是一種私有鏈,只不過它比單個小組織開發的私有鏈更大,卻又沒有公有鏈這么大的規模,可以理解為它是介於私有鏈和公有鏈之間的一種區塊鏈。
聯盟區塊鏈是指其共識過程受到預選節點控制的區塊鏈;例如,不妨想像一個有15個金融機構組成的共同體,每個機構都運行著一個節點,而且為了使每個區塊生效需要獲得其中10個機構的確認(2/3確認)。區塊鏈或許允許每個人都可讀取,或者只受限於參與者,或走混合型路線,例如區塊的根哈希及其API(應用程序介面)對外公開,API可允許外界用來作有限次數的查詢和獲取區塊鏈狀態的信息。這些區塊鏈可視為「部分去中心化」。
聯盟鏈的特點
1.部分去中心化
與公有鏈不一樣,聯盟鏈在某種程度上只屬於聯盟內部的成員所有,且很容易達成共識,因為畢竟聯盟鏈的節點數是非常有限的。
2.可控性較強
公有鏈是一旦區塊鏈形成,將不可篡改,這主要源於公有鏈的節點一般是海量的,比如比特幣節點太多,想要篡改區塊數據,幾乎不可能,而聯盟鏈,只要所有機構中的大部分達成共識,即可將區塊數據進行更改;
3.數據不會默認公開
不同於公有鏈,聯盟鏈的數據只限於聯盟里的機構及其用戶才有許可權進行訪問。
4.交易速度很快
跟私有鏈一樣,聯盟鏈本質上還是私有鏈,因此由於其節點不多的原因,達成共識容易,交易速度自然也就快很多。
聯盟鏈的應用
目前已經有了很多的聯盟鏈,比較知名的有:
1.R3區塊鏈聯盟
R3區塊鏈聯盟於2015年9月份成立,目前已經有大約40多家國際銀行組織加入,成員幾乎遍布全球。其主要致力於為銀行提供探索區塊鏈技術的渠道以及建立區塊鏈概念性產品。該聯盟成立之後,召開了一系列的研討會。R3表示,其允許銀行加入的「初始窗口」已經關閉,2016年,該聯盟將尋求與非銀行金融機構和團體合作。R3使用以太坊和微軟Azure技術,將11家銀行連接至分布式賬本。R3公司對於自己正在做的事情非常肯定,它說,區塊鏈技術受到了世界各地銀行的歡迎,已經有一些銀行不僅在跟R3合作探索區塊鏈技術,還自己開展區塊鏈技術的調查研究。2016年4月,R3CEV與微軟正式建立合作關系,研究實驗區塊鏈應用。
R3CEV是一個知名的聯盟鏈
2.超級賬本(Hyperledger)
超級賬本(Hyperledger)是Linux基金會於2015年發起的推進區塊鏈數字技術和交易驗證的開源項目,加入成員包括:荷蘭銀行(ABN AMRO)、埃森哲(Accenture)等十幾個不同利益體,目標是讓成員共同合作,共建開放平台,滿足來自多個不同行業各種用戶案例,並簡化業務流程。由於點對點網路的特性,分布式賬本技術是完全共享、透明和去中心化的,故非常適合於在金融行業的應用,以及其他的例如製造、銀行、保險、物聯網等無數個其他行業。通過創建分布式賬本的公開標准,實現虛擬和數字形式的價值交換,例如資產合約、能源交易、結婚證書、能夠安全和高效低成本的進行追蹤和交易。據相關資料顯示,目前已經有北京AiYi數字金融技術公司、Belink(數貝荷包)、BitSE和Onchain共4家中國公司加入。
3.俄羅斯區塊鏈聯盟(俄羅斯版R3)
這個私鏈聯盟正式成立於2016年7月1日,其成員包括支付公司QIWI、B&N銀行、漢特-曼西斯克銀行(Khanty-Mansiysk Otkritie Bank)、盛寶銀行(Tinkoff Bank)、莫斯科商業世界銀行(MDM Bank)以及埃森哲咨詢公司(Accenture)。這個被稱為「俄羅斯版R3」的區塊鏈聯盟於第25屆俄羅斯國際金融會議上正式宣告成立,該次會議的主辦方為俄羅斯央行。這個區塊鏈聯盟的主要目標是發展區塊鏈概念驗證;進行合作研究和政策宣傳;創建區塊鏈技術的共同標准。同時,他們公開宣布將積極建立與國內監管部門和政府的合作。
❿ 搭建geth私有鏈和聯盟鏈網路
操作系統:linux或Mac OS
安裝geth執行以下命令:
linux:sudo apt-get install ethereum
Mac OS:brew install ethereum
直接創建兩個geth的工作目錄,用於之後的組建聯盟鏈的使用:
mkdir eth-private1
mkdir eth-private2
首先 cd eth-private1 進入節點1的工作目錄該目錄下執行下面命令
geth --datadir data --nodiscover console (data是之後geth節點的數據目錄,可自行修改)
使用geth自帶的工具 puppeth 用於生成創世區塊,過程如下:
puppeth
+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
| |
| This tool lets you create a new Ethereum network down to |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail. |
| |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset. |
+-----------------------------------------------------------+
Please specify a network name to administer (no spaces, please)
輸入私鏈名稱後,會出現二級菜單,現在2:配置一個新的創世快
What would you like to do? (default = stats)
再次出現二級菜單,讓你選擇共識機制(這里採用poa共識)
Which consensus engine to use? (default = clique)
Ethash - proof-of-work(PoW) :工作量證明,通過算力達成共識 (以太坊就是使用這種方式)
Clique - proof-of-authority(PoA): 權威證明、通過預先設定的權威節點來負責達成共識 (不消耗算力,一般用於私有鏈測試開發)
如果選擇Pow的共識方法,直接輸入1,回車即可。
如果選擇PoA的共識方法,輸入2後會提示讓你選擇處快的間隔時間,一般測試開發使用可以設置相對的將處快時間設置較少5秒即可,然後會讓你選擇哪個賬戶來作為權威生成區塊(至少有一個,輸入剛才創建的賬戶,若只是單節點就輸入那個節點目錄生成的地址,若想組建聯盟鏈就填寫生成的兩個地址)
How many seconds should blocks take? (default = 15)
選擇好共識機制後會讓你指定給那些賬號初始化ether(至少有一個),輸入我們剛才創建的賬戶地址回車即可。
Which accounts should be pre-funded? (advisable at least one)
選擇輸入私有鏈的網路ID,任意數字即可(不能為1,1是公鏈),也可以不輸入會給定一個隨機數作為私有鏈的網路ID
Specify your chain/network ID if you want an explicit one (default = random)
選擇導出創世區塊配置文件
選擇導出創世區塊配置文件的保存路徑,可以保存到當前目錄,直接按回車即可
Which file to save the genesis into? (default = my-private-chain.json)
INFO [02-09|14:56:33] Exported existing genesis block
這樣就完成了創世區塊文件的配置了,直接退出puppeth即可。
輸入命令 geth --datadir data init private.json 其中data自己制定,private.json就是剛才生成的創世區塊
若出現如圖錯誤:
輸入命令:
geth --datadir data --syncmode full --port 2001 --networkid 1234 --rpc --rpcport "8545" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcapi "db,eth,net,web3,personal,admin,clique" --nodiscover console 進入控制台
--datadir data:節點的數據目錄
--syncmode full:塊同步的方式(若只是單節點可不填)
--port 2001: 網卡監聽埠
--networkid 1234:網路標識符
--rpc:開啟rpc服務
--rpcport "8545":rpc服務的埠
--rpccorsdomain "*":允許跨域請求的域名列表(逗號分隔)(瀏覽器強制)
--rpcaddr "0.0.0.0" :HTTP-RPC伺服器介面地址(默認值:「localhost」)
--rpcapi "db,eth,net,web3,personal,admin,clique":基於HTTP-RPC介面提供的API(私有鏈可以任意開發,公有鏈需要謹慎)
--nodiscover:不允許節點自動加入
若想搭建聯盟鏈,必須保證創世區塊一致,進入到剛才創建的eth-private2的目錄
將之前生成的創世區塊拷貝過來,初始化創世區塊,然後使用啟動命令啟動分別啟動兩個節點,進入控制台,使用 admin.nodeInfo 命令獲取節點的信息
總結:
兩個伺服器部署兩個節點是可以聯通的,但是只能使用兩個節點對應的地址進行挖礦,所以只能是兩個節點對應兩個地址進行挖礦,使用poa共識,當一個節點掛掉,挖礦停止,因為poa共識挖礦必須超過50%的節點進行錢增,現在只是兩個節點,掛掉一個節點挖礦就會停止等待另一個節點的確認,停掉的節點可以通過正常運作的節點信息重新連接到網路中。
問題:
同步塊有可能報錯情況:
1:Synchronisation failed "retrieved hash chain is invalid" 解決目前找到的方法是removedb 數據目錄 ,重新init創世區塊
2:內存溢出初步確認為開啟rpc服務造成的,有可能伺服器惡意被黑,暴力破解密碼,佔有內存,解決,將伺服器的ip設置一條防火牆
若存在問題可給本人留言或訪問本人的github: https://github.com/qi-shuo/geth-document 記錄了一些本人搭建使用的命令