區塊鏈教程——區塊鏈技術初學者指南
比特幣和區塊鏈技術的發展如此迅速,即使那些沒有聽說過加密貨幣或瞭解其工作原因的人也在尋求投資和探索這一領域。這個區塊鏈教程部落格將基本上按以下順序提供有關比特幣和區塊鏈的所有基本知識:
- 當前銀行系統的問題-
- Blockchain如何解決這些問題
- 什麼是區塊鏈和比特幣
- 區塊鏈的特點
- 實際的用例
- 演示:使用區塊鏈實施數字銀行
區塊鏈技術和加密貨幣如今已成為人們開始執行標準交易的並行平臺。現在,如果新系統正在慢慢替換現有系統,那麼當前系統必定存在一些問題。我們將通過了解當前銀行系統的問題來開始此區塊鏈教程部落格。
現行銀行系統的問題:
任何現有系統都會遇到一些問題。 讓我們看一下銀行系統最常遇到的一些問題:
- 高交易費用
讓我們看一個更好地理解這個問題的例子:
在這裡,Chandler向Joe傳送100美元,但在Joe收到之前,它必須通過像銀行或金融服務公司這樣值得信賴的第三方。從此金額中扣除2%的交易費用,Joe在交易結束時僅收到98美元。現在這可能看起來不是很大,但想象一下,如果你傳送10萬美元而不是100美元,那麼交易費用也會增加到2,000美元,這是一個很大的數額。根據SNL Financial和CNNMoney的報告,摩根大通,美國銀行和富國銀行在2015年從ATM和透支費中獲得了60多億美元。
- 雙倍花費
雙重支出是數字現金方案中的一個錯誤,其中相同的單個數字代幣被花費兩次或更多次。為了幫助您更好地理解這個問題,讓我舉個例子:
彼得在他的帳戶中只有500美元。他以400美元的價格同時向亞當發起2筆交易,以500美元的價格向Mary發起交易。通常這筆交易不會通過,因為他的賬戶中沒有足夠的900美元餘額。但是,通過複製或偽造與每個數字交易相關聯的數字代幣,他可以在沒有所需餘額的情況下完成這些交易。此操作稱為雙倍花費。
- 網路欺詐和帳戶黑客攻擊
在印度,2016年與信用卡/借記卡和網上銀行相關的欺詐案件數量為14,824起。這些欺詐涉及的淨額為77.79億盧比,其中21億盧比來自網際網路欺詐,41.64億盧比是來自ATM /借記卡相關的欺詐行為。
金融危機和崩潰
想象一下,把你所有的希望交給你信任的人,結果只知道他們已經消失了並只是告知在其他地方丟失了。這就是2007-08年銀行和投資組織大量借貸並將其作為次級抵押貸款借給那些甚至無法償還這些貸款的人們的情況。這反過來導致了有史以來最嚴重的金融危機之一,估計全球損失接近11萬億美元(11,000,000,000,000美元)。這只是最受歡迎的例子之一,我們多久聽說過銀行和金融服務公司因內部欺詐而崩潰?整個第三方系統建立在對中間人的盲目信任之上。
我們已經看到了每個人面臨的一些最常見的問題。擁有一個克服這些問題的系統併為我們提供了一個與Blockchain Technology區塊鏈技術完全相同的產品,這不是很好嗎?
現在讓我們嘗試理解Blockchain和比特幣如何解決這些問題,作為此區塊鏈教程部落格的下一部分:
Blockchain如何解決這些問題?
以下是區塊鏈技術解決上述問題的一些方法:
- 去中心化機制
與由中央或聯邦當局控制和管理的銀行和金融機構相比,區塊鏈系統遵循去中心化的方法。在這裡,作為系統一部分的每個人都對系統的增長和垮臺負有同等責任。參與系統的每個人都擁有一些權力,而不是一個擁有權力的單一實體。
- 公共分類帳
儲存區塊鏈上發生的所有交易細節的分類賬是開放的,並且與系統關聯的每個人都可以完全訪問。加入區塊鏈網路後,你可以下載自啟動以來的完整交易清單。即使完整的分類帳是公開可訪問的,交易中涉及的人員的詳細資訊仍然完全是匿名的。
- 驗證每筆交易
通過交叉檢查分類帳來驗證每個交易,並在幾分鐘後傳送交易的驗證訊號。通過使用幾種複雜的加密和hash演算法,消除了雙重花費的問題。
- 低或無交易費用
交易費通常不適用,但區塊鏈的某些變體確實實現了某些最低交易費用。然而,與銀行和其他金融機構隱含的費用相比,這些交易費用相對較少。如果需要優先完成交易,則可以由使用者新增額外的交易費用,以便優先驗證交易。
現在我們已經談到了現有系統的問題,並瞭解了區塊鏈技術如何克服這些挑戰,我相信你必須對區塊鏈系統有所瞭解。
在這一點上,你可能仍然想知道區塊鏈和比特幣到底是什麼。因此,讓我們嘗試在Blockchain教程的下一部分中理解這些重要的概念。
什麼是區塊鏈和比特幣?
在我們繼續瞭解什麼是區塊鏈之前,瞭解什麼是比特幣很重要:
比特幣是一種加密貨幣和數字支付系統,由一個未知的程式員或一組程式設計師以Satoshi Nakamoto的名義發明。這意味著它們可以像通常的貨幣一樣使用,但不像美元鈔票那樣存在。它們是一種線上貨幣,可用於購買東西。這些類似於人們計算機上存在的“數字現金”。比特幣僅存在於雲中,如Paypal,Citrus或Paytm。即它們是虛擬的,而不是物理的,它們在通過網路在人與人之間轉移時被用作現金。
比特幣系統是基於對等網路的,並且在沒有中間裝置的情況下直接在使用者之間進行交易。這些交易由網路節點驗證,並記錄在稱為區塊鏈的公共分散式分類賬中。由於系統在沒有中央儲存庫或單個管理員的情況下工作,比特幣被稱為第一個去中心化的數字貨幣。
比特幣生產使它們成為獨特的貨幣。與普通貨幣不同,無法根據需要建立比特幣。只能建立2100萬比特幣,其中已創造了1700萬比特幣。只要包含有效交易的塊新增到區塊鏈,就會建立比特幣。這是建立比特幣的唯一方法,通過各種數學和加密演算法,我們確保不會建立或傳播虛假的比特幣。現在讓我們瞭解更多區塊鏈。
什麼是區塊鏈?
區塊鏈可以稱為整個加密貨幣系統的主幹。區塊鏈技術不僅可以幫助使用者使用加密貨幣執行交易,還可以確保相關使用者的安全性和匿名性。它是一個不斷增長的稱為塊的記錄列表,它們使用加密技術進行連結和保護。區塊鏈可以作為“一個開放的分散式分類賬,可以以可驗證和永久的方式記錄雙方之間的交易。”該網路中每個人共享的分類賬是公開的,供所有人檢視。這帶來了透明度和信任進入系統。
塊是區塊鏈的“當前”部分,它記錄了部分或全部最近的交易,並且一旦完成就作為永久資料庫進入Vlockchain。每次塊完成時,都會生成一個新塊。
區塊鏈通常由對等網路管理,共同遵守用於驗證新塊的協議。一旦記錄,任何給定塊中的資料不能追溯地改變而不改變所有後續塊和網路多數的共謀。儲存在區塊鏈中的交易是永久性的。他們不能被黑客攻擊或操縱。一旦我們進入區塊鏈的概念,我們將會更多地瞭解這一點。
現在我希望你對比特幣和區塊鏈有更好的理解。 繼續我們的區塊鏈教程部落格,讓我們看看區塊鏈技術的功能,以幫助我們理解它變得如此受歡迎的原因。
區塊鏈的特點
以下是區塊鏈技術最重要的特點,使其成為革命性的技術:
- SHA256雜湊函式
- 公鑰密碼學
- 分散式分類帳和對等網路
- 工作證明
- 驗證的激勵措施
讓我們嘗試逐一理解它們中的每一個。
SHA256雜湊函式
區塊鏈技術中使用的核心雜湊演算法是SHA256。使用雜湊的目的是因為輸出不僅是“加密”,它不能被解密回原始文字。它是一種“單向”加密函式,對於任何大小的源文字都是固定大小。為了更好地理解,讓我們看一下下面的例子:
如果你看第一個例子,我們將輸入作為“Hello World”並輸出為 a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
。但是,只需在末尾新增“!”,輸出就會完全變為 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069
。如果我們將“H”改為“h”而將“W”改為“w”,則輸出值變為 7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9
。
我希望通過這個例子,你已經瞭解演算法的複雜程度,即使輸入中的最輕微變化也會導致輸出發生巨大變化。
公鑰密碼學
此加密技術通過建立一組稱為公鑰和私鑰的金鑰來幫助使用者。這裡公鑰與其他人共享,而私鑰由使用者保密。要了解這些鍵的作用,讓我們看一下下面的示例,以便更好地理解:
如果Chandler向Joey傳送一些比特幣,該交易將有三條資訊:
- 喬伊的比特幣地址。(喬伊的公鑰)
- 錢德勒送給喬伊的比特幣數量。
- 錢德勒的比特幣地址。(錢德勒的公鑰)
現在,所有這些資料以及加密的數字簽名都通過網路傳送以進行驗證。數字簽名也是Chandler的比特幣地址和他傳送給joey的金額相結合的雜湊值。該數字簽名由私鑰加密。一旦必須驗證此交易的礦工收到此資料,他就會同時執行2個流程:
- 他獲取所有未加密的資料,如Joey和Chandler的交易金額和公鑰,並將其提供給雜湊演算法以獲得雜湊值,我們稱之為Hash1。
- 他接受數字簽名並使用chandler的公鑰對其進行解密,以獲得雜湊值,我們將其稱為Hash2。
如果Hash1和Hash2都相同,那麼這意味著這是一個有效的交易。
分散式分類帳和P2P網路
網路上的每個人都有一份分類帳。沒有單一的集中拷貝。讓我通過以下示例幫助您瞭解分類帳:假設你需要向你的朋友John傳送10個比特幣,其中你的比特幣餘額為974.65,John在此餘額為37,你的餘額將被10BTC扣除記入約翰的賬戶。
Blockchain有一種獨特的方式來實現它。比特幣區塊鏈分類賬中沒有賬戶和餘額。來自第一個交易的每個交易都儲存在一個名為Blockchain的持續增長的資料庫中。平均有大約2050個交易的區塊,截至今天,區塊鏈中有484,000個區塊,交易量約為2.5億。
該分類帳分佈在比特幣區塊鏈的所有使用者之間,即分類帳沒有儲存它的中心位置。網路上的每個人都擁有分類帳的副本,而真實副本是所有分散式分類帳的集合。
工作量證明
你可能想知道每個人是否同樣擁有分類賬,誰將區塊鏈新增到區塊鏈?人們如何信任這個人?
為此,我們有工作證明的概念。它基本上就像解決一個非常大的難題。它需要大量的計算工作。這項工作由我們稱之為礦工的比特幣網路中的人員完成。這些礦工的工作是驗證交易並解決與正在建立的塊相關的複雜數學難題。調整問題的難度,以便平均在10分鐘內解決一個塊。礦工搜尋特定的隨機數(數學值),其給出預定的所需雜湊。目前的難度級別是你需要嘗試大約20.6千萬億的nonce來獲得正確的雜湊值。
每個塊都有一個雜湊值,它是前一個塊的最終雜湊值,交易資料的雜湊值和nonce的組合。塊的最終結果雜湊必須以指定數量的尾隨零開始。正是這種計算找到了滿足條件的隨機數,這種條件使得挖掘的計算成本如此之高。
因此,找到這個nonce的人是成功的礦工,他/她可以將他們的塊新增到區塊鏈中。通過我們的P2P分散式網路,他/她廣播他們的塊並且每個人都驗證雜湊是否匹配,更新他們的區塊鏈並繼續立即解決下一個塊。
驗證的激勵措施
比特幣交易的最後一步是向建立最新區塊的礦工給予獎勵。這種獎勵由區塊鏈系統提供,用於驗證交易和維護區塊鏈。目前每個區塊的獎勵是12.5 BTC3,427,850盧比或53,390美元)。這是比特幣礦業最有趣的部分。
比特幣激勵是產生新貨幣進入系統的唯一途徑,據信到2140年,所有2100萬比特幣將被開採。
有了這個,我希望你現在對區塊鏈技術有更多的瞭解和讚賞。區塊鏈遠不止比特幣。金融業只是區塊鏈旨在破壞的眾多行業之一。繼續我們的區塊鏈教程,現在讓我們看一下IBM和馬士基的一個例子,瞭解供應鏈行業如何被區塊鏈改變。
實際的用例
馬士基是一家丹麥商業集團,在運輸和物流以及能源領域開展業務。自1996年以來,馬士基一直是世界上最大的集裝箱船和供應船運營商。該公司總部位於丹麥哥本哈根,在130個國家設有子公司和辦事處,員工約88,000人。
IBM是一家美國跨國科技公司,自1921年以來主要致力於業務解決方案,安全解決方案和儲存解決方案。
- 業務需求:
作為極具活力的供應鏈行業的一部分,跟蹤最輕微的變化是客戶的最高優先順序。他們需要一種解決方案,使他們能夠完成裝運過程,而不會延誤紙張工作。一種解決方案,能夠將系統的所有利益相關者聚集在一起,並提供貨件的實時狀態。
- 挑戰:
今天,全球貿易中90%的貨物都是由航運業承擔的。這種供應鏈源於點對點通訊的複雜性和絕對數量。這些通訊涉及鬆散耦合的陸地運輸提供商網路。貨運代理,海關,經紀人,政府港口和海運承運商處理。集裝箱貨物的檔案和資訊估計成本是實際物理運輸的兩倍以上。
- 解決方案:
IBM和Maersk正在通過供應鏈生態系統可訪問的分散式許可權平臺解決此問題,該生態系統旨在交換事件資料和處理文件工作流。
Maersk和IBM正在採用區塊鏈技術,通過數字化交易工作流程和端到端跟蹤貨物來建立全球防篡改系統。這消除了摩擦,包括昂貴的點對點通訊。該合作將啟動,具有每年跟蹤數百萬集裝箱旅程的潛在能力,並與海關當局在選定的貿易航線上進行整合。
-
結果:
-
為供應鏈系統中涉及的所有利益相關者提供安全的資料交換平臺。
- 建立了一個防篡改儲存庫,用於儲存作為流程一部分的所有相關文件。
- 定期航運活動有助於減少重大延誤和欺詐行為,每年可節省數十億美元。
- 減少貿易組織之間的壁壘,從而將全球GDP提高3%。
- 幫助將整體交易量增加了12%。
這就是區塊鏈技術如何幫助馬士基,並一直在幫助全球其他許多公司。最後,作為Blockchain教程的一部分,我們將看一個關於如何在系統上設定私有自治Blockchain的演示。
演示:使用區塊鏈實施數字銀行
我們將使用以太坊區塊鏈實施數字銀行。以太坊是一個開源,公共,基於區塊鏈的分散式計算平臺。系統將允許我們:
- 使用固定的市場供應和代幣制作加密貨幣以表示真實世界的資產價值。
- 建立一個自主私有區塊鏈,其中包含花錢的規則。
- 通過驗證交易來挖掘新的乙太網。
該演示可分為4個步驟:
- 克隆Geth程式碼
- 建立Genesis塊
- 為我們的區塊鏈制定規則
- 驗證和挖掘乙太網
第1步:克隆Geth程式碼:
geth是用於執行Go中實現的完整以太坊節點的命令列介面。通過安裝和執行geth,你可以參加以太坊線上網路並且:
- 挖掘真正的以太幣
- 在地址之間轉移資金
- 建立合約併發送交易
- 搜尋塊歷史
從github克隆geth儲存庫。為此,請開啟一個新終端並執行以下命令:
$ git clone https://github.com/ethereum/go-ethereum
從github成功克隆檔案後,我們需要最新版本的geth分支。
$ cd go-ethereum $ git tag
$ git checkout tags/v1.6.7 -b EdurekaEthereumV1.6.7 $ git branch
$ make all
第2步:建立Genesis Block
創世塊是區塊鏈的第一個區塊。改變創世塊是一種明確地讓自己遠離比特幣區塊鏈的方法,即用它自己獨立的歷史開始一個新的網路。要建立genesis檔案,請執行以下命令:
$ cd go-ethereum $ mkdir genesis $ cd genesis $ gedit genesis.json
第3步:為我們的區塊鏈制定規則
我們的區塊鏈規則將包含在我們建立的genesis.json檔案中。 在genesis.json檔案中新增以下程式碼:
{ { "config":{ "chainId": 123, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0, }, "nonce": "0x3", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x4c4b40", "difficulty": :0x400", "mixhash": "0x0000000000000000000000000000000000000000000000000000", "coinbase": "0x000000000000000000000000000000000", "alloc":{ } }
- nonce:64位hash值,證明與mix-hash相結合,已對此塊執行了足夠的計算。
- timestamp:標量值,等於此塊開始時Unixtime()函式的合理輸出。
- mixhash:256位hash,證明與nonce一起在此塊上執行了足夠的計算量。
- difficulty:與隨機數發現塊期間應用的難度級別對應的標量值。
- alloc:允許定義預先填充的錢包列表。這是以太坊特定功能,可以處理“乙太網售前”時期。
- parentHash:整個父塊頭的Keccak 256位雜湊(包括其nonce和mixhash)。
- extraData:可選的,但最大。32位元組長的空間,以保護智慧的資訊為ethernity。
- gasLimit:標量值,等於每塊gas支出的當前鏈範圍限制。
- coinbase:礦工們在該區塊中包含的第一筆交易。
現在我們需要初始化區塊鏈。您可以使用以下命令執行此操作:
$ /home/edureka/go-ethereum/build/bin/geth --datadir ~/ethereum/net3 init genesis/genesis3.json
現在我們已經初始化了區塊鏈,現在是我們給它進行geth控制訪問的時候了。執行以下命令以啟動geth控制檯:
$ /home/edureka/go-ethereum/build/bin/geth --datadir ~/ethereum/net3/ --networkid 3 console
第4步:驗證和挖掘乙太網
在Geth控制檯中,執行以下命令:
personal.newAccount()
:它建立一個新帳戶作為區塊鏈的一部分,其中附加了特定的錢包。
eth.accounts()
:它可以幫助你檢查區塊鏈中的各種帳戶。
eth.blockNumber()
:這有助於你確定區塊鏈中的塊數。
miner.start()
:此函式用於啟動挖掘過程。
你可以在下面看到執行的挖掘應用程式:
miner.stop()
:它停止了挖掘過程。
eth.blockNumber()
:在挖掘過程告訴您執行挖掘操作後您所在的塊編號後執行此命令。 eth.getBalance(account number)
:該命令用於檢查指定帳戶中的以太幣餘額。
退出:退出geth控制檯。
有了這個,我們成功地開採了以太幣並完成了我們的銀行演示。這將我們帶到了這篇部落格的最後。我建議你瀏覽我們的區塊鏈教程和區塊鏈技術部落格,深入瞭解區塊鏈,比特幣,加密貨幣,以太坊,和智慧合約。
- 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和事件等內容。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和事件等。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
匯智網原創翻譯,轉載請標明出處。這裡是 ofollow,noindex">原文