配置區塊鏈網路並利用該技術

買賣虛擬貨幣

如何使用開源工具建立一個私有的以太坊區塊鏈,瞭解區塊鏈技術可以增加價值的一些市場和行業。

在第一部分中,我花了很多時間探索加密貨幣以及使其成為可能的機制:區塊鏈。我詳細介紹了一下關於區塊鏈如何工作以及為什麼它如此安全和強大。在第二部分中,我將介紹如何使用開源工具設定和配置您自己的私有以太坊區塊鏈。我也看在這個技術可以帶來一些價值或幫助重新定義人們的方式在更開放的網路上進行交易。建立您自己的私有區塊鏈網路在本節中,我將探討基於以太坊的區塊鏈網路機制 - 具體來說,如何建立一個私有的以太坊區塊鏈,一個託管和共享此區塊鏈的私人網路,一個帳戶,然後如何做一些有趣的事情。什麼是以太坊?以太坊是一個開源和公共區塊鏈具有智慧合約(即指令碼)功能的平臺。它類似於比特幣,但不同之處在於它超越了貨幣交易。
智慧合約是用程式語言編寫的,例如Solidity(類似於C和JavaScript),Serpent(類似於Python),LLL(a類似Lisp的語言)和Mutan(Go-based)。編制智慧合約進入EVM(見下文)位元組碼並部署在以太坊區塊鏈中執行。智慧合約有助於交換金錢,財產,股票或任何有價值的東西,它在透明和無衝突的情況下這樣做避開傳統中間人的方式。如果你還記得第一部分,任何一個典型的佈局區塊鏈是所有節點都連線到每個其他節點的區塊鏈,建立一個網格。在以太坊的世界中,這些節點被引用作為以太坊虛擬機器(EVM),每個EVM將託管一份副本整個區塊鏈。每個EVM也將競爭下一個阻止或驗證交易。一旦新塊被附加到區塊鏈,更新傳播到整個網路,這樣每個節點都是同步的。要成為以太坊網路上的EVM節點,您需要下載並安裝適當的軟體。要做到這一點,你會使用Geth(Go Ethereum)。 Geth是Go的官方實施以太坊協議。它是三個這樣的實現工具之一;另外兩個是用C ++和Python編寫的。這些開源軟體軟體包根據GNU寬通用公共許可證(LGPL)獲得第三個許可版本.所有人的獨立Geth客戶端軟體包支援的作業系統和體系結構(包括Linux)可在這裡使用,軟體包的原始碼託管在GitHub上。Geth是一個用於通訊的命令列介面(CLI)工具與以太坊網路。它旨在充當您的計算機和以太坊網路中的所有其他節點。當一塊正在由網路上的另一個節點,即Geth安裝中挖礦將通知更新,然後將資訊傳遞給更新區塊鏈的本地副本。有了Geth實用程式,你就可以了能夠挖掘以太幣(類似於比特幣,但以太幣可以在兩個地址之間轉移資金,創造智慧合約等等。下載和安裝在我的示例中,我正在配置此以太坊區塊鏈最新的LTS版本的Ubuntu。 請注意,工具本身是不限於此分發或釋出。
從專案網站下載和安裝二進位制檔案下載最新的穩定版本,將其解壓縮並複製到適當的版本

目錄:

$ wget https://gethstore.blob.core.windows.net/builds/
↪geth-linux-amd64-1.7.3-4bb3c89d.tar.gz
$ tar xzf geth-linux-amd64-1.7.3-4bb3c89d.tar.gz
$ cd geth-linux-amd64-1.7.3-4bb3c89d/
$ sudo cp geth /usr/bin/
從原始碼構建如果要從原始碼構建,則需要同時安裝
Go和C編譯器:
$ sudo apt-get install -y build-essential golang
切換到目錄並執行:
$ make geth

從公共儲存庫安裝

如果你在Ubuntu上執行並決定從一個安裝包
公共儲存庫,執行以下命令:

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
入門這是事情,你沒有任何以太開始。隨著那個請注意,我們將此部署限制為“私有”區塊鏈網路這將作為主要的開發或暫存版本執行以太坊網路。從功能的角度來看,這個私有網路將與主要區塊鏈相同,但所有情況除外在這個網路上部署的交易和智慧合約將是隻能訪問此專用網路中連線的節點。 Geth會的幫助這個私人或“testnet”設定。使用該工具,你會能夠做任何以太坊平臺廣告的一切,沒有需要真正的乙太網。請記住,區塊鏈只不過是數字和公共的分類帳按時間順序儲存交易。什麼時候新事務被驗證並配置成塊,塊然後附加到鏈,然後分佈在鏈網路。該網路上的每個節點都將更新其本地副本鏈到最新的副本。但是你需要從某個方面開始 - a開始或起源。每個區塊鏈都以一個創世塊開頭,也就是說,一個塊“零”或鏈的第一個塊。它將是沒有前任的唯一街區。創造你的私人區塊鏈,你需要建立這個創世塊。至這樣做,你需要建立一個自定義的創世紀檔案,然後告訴Geth使用該檔案來建立自己的genesis塊。建立一個目錄路徑來託管所有與以太坊相關的資料配置並更改到config子目錄:
$ mkdir ~/eth-evm
$ cd ~/eth-evm
$ mkdir config data
$ cd  config
開啟首選文字編輯器並將以下內容儲存到a在同一目錄中名為Genesis.json的檔案:
{
    "config": {
        "chainId": 999,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "0x400",
    "gasLimit": "0x8000000",
    "alloc": {}
}
這就是你的genesis檔案的樣子。 這個簡單的JSON格式string描述以下內容:config - 此塊定義自定義鏈的設定。chainId - 這標識你的區塊鏈,因為主要的以太坊網路有自己的,你需要配置自己獨特的您私鏈的價值。homesteadBlock - 定義的版本和協議以太坊平臺。eip155Block / eip158Block - 這些欄位增加了對非向後相容的協議更改為使用的Homestead版本。對於這個例子的目的,你不會利用這些,所以他們被設定為“0”。
difficulty - 此值控制塊的生成時間區塊鏈。值越高,礦工的計算越多執行以發現有效的塊。因為這個例子只是部署一個測試網路,讓我們保持這個低值以減少等待時間。gasLimit- gas是以太坊網路上交易的燃料。如果您不希望在測試中受到限制,請保留高值。alloc - 這部分預付賬戶,但因為你會在本地挖掘你的以太幣,你不需要這個選項。現在是時候例項化資料目錄了。開啟終端視窗,並假設您已安裝Geth二進位制檔案,並且它是透過您的工作路徑訪問,輸入以下內容:
$ geth --datadir /home/petros/eth-evm/data/PrivateBlockchain
 ↪init /home/petros/eth-evm/config/Genesis.json
WARN [02-10|15:11:41] No etherbase set and no accounts found
 ↪as default
INFO [02-10|15:11:41] Allocated cache and file handles
    ↪database=/home/petros/eth-evm/data/PrivateBlockchain/
↪geth/chaindata cache=16 handles=16
INFO [02-10|15:11:41] Writing custom genesis block
INFO [02-10|15:11:41] Successfully wrote genesis state
    ↪database=chaindata
hash=d1a12d...4c8725
INFO [02-10|15:11:41] Allocated cache and file handles
    ↪database=/home/petros/eth-evm/data/PrivateBlockchain/
↪geth/lightchaindata cache=16 handles=16
INFO [02-10|15:11:41] Writing custom genesis block
INFO [02-10|15:11:41] Successfully wrote genesis state
    ↪database=lightchaindata
該命令需要引用工作資料目錄儲存您的私人鏈資料。 在這裡,我已經指定了我家裡eth-evm / data / PrivateBlockchain子目錄。 您還需要告訴該實用程式使用初始化你的創世紀檔案。
此命令使用樹填充資料目錄子目錄和檔案:
$ ls -R /home/petros/eth-evm/
.:
config  data

./config:
Genesis.json

./data:
PrivateBlockchain

./data/PrivateBlockchain:
geth  keystore

./data/PrivateBlockchain/geth:
chaindata  lightchaindata  LOCK  nodekey  nodes  transactions.rlp

./data/PrivateBlockchain/geth/chaindata:
000002.ldb  000003.log  CURRENT  LOCK  LOG  MANIFEST-000004

./data/PrivateBlockchain/geth/lightchaindata:
000001.log  CURRENT  LOCK  LOG  MANIFEST-000000

./data/PrivateBlockchain/geth/nodes:
000001.log  CURRENT  LOCK  LOG  MANIFEST-000000

./data/PrivateBlockchain/keystore:
您的私人區塊鏈現已建立。 下一步涉及開始允許您挖掘新塊並擁有它們的專用網路新增到您的區塊鏈。 為此,請輸入:

admin@chaindaily:~/eth-evm$ geth --datadir
 ↪/home/petros/eth-evm/data/PrivateBlockchain --networkid 9999
WARN [02-10|15:11:59] No etherbase set and no accounts found
 ↪as default
INFO [02-10|15:11:59] Starting peer-to-peer node
    ↪instance=Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.2
INFO [02-10|15:11:59] Allocated cache and file handles
    ↪database=/home/petros/eth-evm/data/PrivateBlockchain/
↪geth/chaindata cache=128 handles=1024
WARN [02-10|15:11:59] Upgrading database to use lookup entries
INFO [02-10|15:11:59] Initialised chain configuration
    ↪config="{ChainID: 999 Homestead: 0 DAO: <nil> DAOSupport:
 ↪false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil>
 ↪Engine: unknown}"
INFO [02-10|15:11:59] Disk storage enabled for ethash caches
    ↪dir=/home/petros/eth-evm/data/PrivateBlockchain/
↪geth/ethash count=3
INFO [02-10|15:11:59] Disk storage enabled for ethash DAGs
 ↪dir=/home/petros/.ethash count=2
INFO [02-10|15:11:59] Initialising Ethereum protocol
    ↪versions="[63 62]" network=9999
INFO [02-10|15:11:59] Database deduplication successful
    ↪deduped=0
INFO [02-10|15:11:59] Loaded most recent local header
    ↪number=0 hash=d1a12d...4c8725 td=1024
INFO [02-10|15:11:59] Loaded most recent local full block
    ↪number=0 hash=d1a12d...4c8725 td=1024
INFO [02-10|15:11:59] Loaded most recent local fast block
    ↪number=0 hash=d1a12d...4c8725 td=1024
INFO [02-10|15:11:59] Regenerated local transaction journal
    ↪transactions=0 accounts=0
INFO [02-10|15:11:59] Starting P2P networking
INFO [02-10|15:12:01] UDP listener up
    ↪self=enode://f51957cd4441f19d187f9601541d66dcbaf560
↪770d3da1db4e71ce5ba3ebc66e60ffe73c2ff01ae683be0527b77c0f96
↪admin@chaindaily[::]:30303
INFO [02-10|15:12:01] IPC endpoint opened: /home/petros/eth-evm/
↪data/PrivateBlockchain/geth.ipc
INFO [02-10|15:12:01] RLPx listener up
    ↪self=enode://f51957cd4441f19d187f9601541d66dcbaf560
↪770d3da1db4e71ce5ba3ebc66e60ffe73c2ff01ae683be0527b77c0f96
↪admin@chaindaily[::]:30303
注意使用新引數networkid。 這個networkid有幫助確保您的網路隱私。 這裡可以使用任何數字。 我已決定使用9999.請注意其他同行加入您的網路將需要使用相同的ID。
您的私人網路現已上線! 請記住,每次您需要訪問你的私人區塊鏈,你需要使用最後兩個具有完全相同引數的命令(Geth工具將不記得它適合你):
$ geth --datadir /home/petros/eth-evm/data/PrivateBlockchain
 ↪init /home/petros/eth-evm/config/Genesis.json
$ geth --datadir /home/petros/eth-evm/data/PrivateBlockchain
 ↪--networkid 9999

配置使用者帳戶

那麼,既然您的私有區塊鏈網路正在執行,您就可以開始與它互動。 但為了做到這一點你需要附加執行Geth流程。 開啟第二個終端視窗。該以下命令將附加到第一個執行的例項終端視窗並帶您進入JavaScript控制檯:

$ geth attach /home/petros/eth-evm/data/PrivateBlockchain/geth.ipc
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.2
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0
 ↪personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

>
是時候建立一個操縱區塊鏈網路的新賬戶了:
> personal.newAccount()
Passphrase:
Repeat passphrase:
"0x92619f0bf91c9a786b8e7570cc538995b163652d"
記住這個字串。 你很快就會需要它。 如果你忘記了這個十六進位制字串,你可以將它重新列印到控制檯輸入:
> eth.coinbase
"0x92619f0bf91c9a786b8e7570cc538995b163652d"
輸入以下指令碼檢查以太幣餘額平衡:
> eth.getBalance("0x92619f0bf91c9a786b8e7570cc538995b163652d")
0
這是另一種檢查餘額而無需輸入的方法整個十六進位制字串:
> eth.getBalance(eth.coinbase)
0
挖礦在主要的以太坊區塊鏈中進行真正的採礦需要一些非常好的專用硬體,如專用圖形處理單元(GPU),就像在第一部分中提到的高階顯示卡上找到的那些但是,因為您正在挖掘私有鏈上的塊低難度級別,你可以沒有這個要求。 至開始挖掘,在JavaScript控制檯上執行以下指令碼:
> miner.start()
Null
第一個終端視窗中的更新您將在顯示的輸出日誌中觀察挖礦活動第一個終端視窗:
INFO [02-10|15:14:47] Updated mining threads
    ↪threads=0
INFO [02-10|15:14:47] Transaction pool price threshold
 ↪updated price=18000000000
INFO [02-10|15:14:47] Starting mining operation
INFO [02-10|15:14:47] Commit new mining work
    ↪number=1 txs=0 uncles=0 elapsed=186.855us
INFO [02-10|15:14:57] Generating DAG in progress
    ↪epoch=1 percentage=0 elapsed=7.083s
INFO [02-10|15:14:59] Successfully sealed new block
    ↪number=1 hash=c81539...dc9691
INFO [02-10|15:14:59] mined potential block
    ↪number=1 hash=c81539...dc9691
INFO [02-10|15:14:59] Commit new mining work
    ↪number=2 txs=0 uncles=0 elapsed=211.208us
INFO [02-10|15:15:04] Generating DAG in progress
    ↪epoch=1 percentage=1 elapsed=13.690s
INFO [02-10|15:15:06] Successfully sealed new block
    ↪number=2 hash=d26dda...e3b26c
INFO [02-10|15:15:06] mined potential block
    ↪number=2 hash=d26dda...e3b26c
INFO [02-10|15:15:06] Commit new mining work
    ↪number=3 txs=0 uncles=0 elapsed=510.357us

[ ... ]

INFO [02-10|15:15:52] Generating DAG in progress
    ↪epoch=1 percentage=8 elapsed=1m2.166s
INFO [02-10|15:15:55] Successfully sealed new block
    ↪number=15 hash=d7979f...e89610
INFO [02-10|15:15:55] block reached canonical chain
    ↪number=10 hash=aedd46...913b66
INFO [02-10|15:15:55] mined potential block
    ↪number=15 hash=d7979f...e89610
INFO [02-10|15:15:55] Commit new mining work
    ↪number=16 txs=0 uncles=0 elapsed=105.111us
INFO [02-10|15:15:57] Successfully sealed new block
    ↪number=16 hash=61cf68...b16bf2
INFO [02-10|15:15:57] block reached canonical chain
    ↪number=11 hash=6b89ff...de8f88
INFO [02-10|15:15:57] mined potential block
    ↪number=16 hash=61cf68...b16bf2
INFO [02-10|15:15:57] Commit new mining work
↪number=17 txs=0 uncles=0 elapsed=147.31us

回到第二個終端視窗等待10-20秒,然後在JavaScript控制檯上開始檢查餘額

> eth.getBalance(eth.coinbase)
10000000000000000000
再等一下,再次列出:
> eth.getBalance(eth.coinbase)
75000000000000000000
記住,這是假的以太幣,所以不要太高興。因為您無法在主要的以太坊網路中使用。要停止挖礦,請呼叫以下指令碼:
> miner.stop()
True
嗯,你做到了。 你建立了自己的私有區塊鏈並開採了一些以太幣。
誰將從今天和未來的技術中受益?儘管區塊鏈最初是圍繞加密貨幣開發的(更具體地說,比特幣),它的用途不止於此。今天,看起來似乎就是這種情況,但還有未開發的行業區塊鏈技術可以重新定義交易方式的市場被處理。以下是一些想到的例子。改善智慧合約以太坊,部署了相同的開源區塊鏈專案,很早就已經在做整個智慧合約了,但是這個想法仍然處於起步階段,隨著它的成熟,它將逐步發展消費者需求。這方面有很大的增長空間區。它可能並最終將進入公司治理(如驗證數字資產,股權等),交易股票,處理智慧財產權和管理財產所有權,如土地所有權登記。實現市場和共享經濟想想eBay,但重新聚焦於點對點。這意味著沒有更多的交易費用,但它也會強調你的重要性個人聲譽,因為沒有單一的機構管理交易或交換商品或服務的市場。
眾籌跟我之前關於權力下放的言論一樣市場,個人或者也有機會公司籌集資金以幫助“啟動”他們的舉措。想想一個更開放,更全球化的Kickstarter或GoFundMe。多媒體共享或託管有抱負或成熟音樂家的點對點網路絕對可以在這裡走很長的路 - 一個內容將達到的地方它的目標受眾直接,並避免支付高額的特許權使用費去工作室,唱片公司和內容發行商。一樣適用於影片和影象內容。檔案儲存和資料管理
透過啟用全球點對點網路,區塊鏈技術將雲端計算提升到一個全新的水平。隨著技術的繼續為了進入現有的雲服務市場,它將面臨挑戰傳統供應商,包括亞馬遜AWS甚至Dropbox和其他人 - 它將以一小部分價格這樣做。例如,冷儲存資料產品今天是一個價值數千億美元的市場。透過在全球和分散的地方分發加密檔案網路,需要單一維護本地資料中心裝置實體顯著減少。社交媒體以及您釋出的內容的管理方式會發生變化這個模型也是如此。在區塊鏈,Facebook或Twitter或任何人否則不能聲稱你選擇分享的內容。利用區塊鏈的另一個好處就是利用密碼學保護您的寶貴資料不被駭客入侵或丟失。物聯網什麼是物聯網(IoT)?這是一個廣義的術語描述網路化管理非常具體的電子裝置,包括加熱和冷卻恆溫器,燈,車庫門等。運用人們可以將軟體,感測器和網路設施相結合輕鬆實現可以自動化和監控家庭的環境和/或商業裝置。供應鏈審計
透過向消費者提供分散式公共分類帳,零售商不能偽造對其產品的索賠。消費者將有能力驗證其來源,無論是食物,珠寶或其他任何東西。身份管理這裡沒有太多要解釋的。威脅是非常真實的。個人資訊的盜竊永遠不會有停止的一天。今天的使用者名稱/密碼系統已經完成了他們的課程,現在是現有認證的時候了框架利用了提供的加密功能區塊鏈。概要這種革命性的技術使組織能夠以這種方式實現十年前不可能的事情。它的潛力是巨大的,似乎任何行業都在處理某種基於交易的行為模型將被技術破壞。這只是時間問題。現在,區塊鏈的未來會是什麼樣子?在這個階段,很難說。但有一件事是肯定的;像IBM這樣的大公司正在對這項技術進行大量投資並建立自己的區塊鏈基礎設施,可以出售給並由企業和金融機構使用。這個但是,可能會產生一些問題。隨著這些大公司的建立區塊鏈基礎設施,他們將申請專利保護他們的技術。並且在他們的資訊庫庫中有這些專利,存在他們可會積極地反對競爭對手企圖詆譭他們及其價值。

更多區塊鏈資訊:http://www.qukuaiwang.com.cn/news

免責聲明:

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

推荐阅读

;