以太坊概況

你可能已經聽過“區塊鏈”和“智能合約”這兩個術語,但它們實際是什麼意思?我們將揭開其神秘面紗,向你解釋實用的區塊鏈解決方案,然後給你一些如何創建它們的指導。這是一個高層次概述,包括:

區塊鏈基礎

為什麼使用區塊鏈?

什麼是區塊鏈?

區塊鏈如何工作?

以太坊區塊鏈

什麼是以太坊?

什麼是智能合約?

以太坊網絡

分佈式應用(Dapps)

為什麼使用區塊鏈?

當有很多個位於世界各地的參與方,它們之間在無法互相信任、但需要共享數據和傳輸價值情況下,就需要使用區塊鏈了。金融界將這種信任描述為交易對手風險,即其他參與方最後不履約的風險。區塊鏈通過一種創新的數學系統、密碼學和點對點網絡,完全解決了交易對手風險。在我們詳細瞭解它們的工作原理之前,我們需要回顧一些歷史,以及區塊鏈產生的必要性。

第一個數據庫

在20世紀60年代,第一臺計算機式數據庫出現。這些硬件佔據了很多房間,而互聯網還有幾十年才出現,數據通常存儲於中心的實體位置。這是一種中心化方式,意味著數據的位置和訪問都由中央機構控制。中心化系統可由惡意角色從內部或外部控制,所以我們相信這些系統擁有者有足夠意願和資源來保護數據的安全性和完整性。中心化數據庫在今天依然是最常見的,支持著大多數在線和離線應用。

如下圖所示,每個服務器邊上的箭頭都是需要信任的連接。

以太坊概況

共享數據需求

共享大量數據是非常昂貴和麻煩的。我們可以通過在需要共享的各參與方分配數據來緩解這種負擔。讀 / 寫由這個群體中的一方或多方控制,因此受制於類似中心化數據庫的變化方式。

現代共享數據庫使用技術來減少這種損壞,其中部分技術與區塊鏈重疊。根據不同的共享數據庫系統,它可以有以下特點:

  • 永久性:創建一個新拷貝並將舊數據保留為歷史記錄,而不是直接覆蓋舊數據。該記錄可以被訪問,用於證明某一時刻存在的數據。

  • 共識性:對於要共享的數據庫,所有參與方必須就其內容達成一致(達成共識)。有很多種達成共識的方法,其中一種(工作量證明),我們將在下一節區塊鏈中討論。

區塊鏈具有以上特點並將其運用到更深層次,完全解決了信任問題。

什麼是區塊鏈?

區塊鏈是核心是一個共享數據庫,該數據庫稱作分類賬本。就像一個銀行,簡單的區塊鏈分類賬本會跟蹤貨幣(這裡指加密貨幣)所有權。與中心化銀行不同,每個人都有該賬本的拷貝,而且可以驗證彼此的賬戶。這就是區塊鏈的分佈式(或去中心化)特點。每個包含賬本拷貝的連接設備被稱作節點。

區塊鏈網絡中賬戶之間的交互被稱作交易(Transactions),它們可以是貨幣交易,例如發給某個人以太坊中的加密貨幣以太幣;它們還可以是數據傳輸,例如評論或用戶名。區塊鏈上的每個賬戶都有唯一的簽名,讓每個人都知道是哪個賬戶激活該交易。

比起之前的數據庫,區塊鏈除了解決信任問題,還有以下主要優點:

  • 完全去中心化:讀 / 寫數據庫是分散和安全的,單獨某個人或某個組無法控制區塊鏈。

  • 極致容錯:容錯是系統處理損壞數據的能力,雖然容錯能力不是區塊鏈特有的,它將此概念邏輯化,讓每個人共享數據庫來驗證其變化。

  • 獨立驗證:交易可以由任何人驗證,無須第三方,這有時也被稱作脫媒。

現在我們對區塊鏈價值有一定了解,下面讓我們來深入瞭解它們的工作原理。

區塊鏈如何工作?

在一個公鏈中,任何人都可以讀寫數據。讀取數據是免費的,但向公鏈中寫數據是需要花費的。這種花費有助於阻止垃圾內容,並通過支付保護其安全性。網絡上的任何節點都可以參與稱作挖礦的方式來保護網絡。由於挖礦需要計算能力和電費,礦工們的服務會得到一定報酬。

挖礦

網絡中的每個節點可以選擇參與挖礦。通常,節點的礦工需要競爭解決保護區塊鏈內容的數學問題。每個區塊都是剛創建的待處理交易集合,需要添加進鏈條中最新的區塊後面。數學問題比賽的獲勝者創造了下一個區塊,並收到一些加密貨幣作為獎勵。這激勵了節點來保護網絡,防止太多權力掌握在任何一個礦工手中。

哈希

一旦新區塊被開採出來,其他礦工將被通知,它們開始驗證並將這個新區塊添加到其鏈條的副本中。我們之前提到的數學問題稱作加密哈希(或簡稱哈希)。哈希函數是一個特殊單向的過程,它接收數據並返回一個表示該數據固定長度的字符串。雖然原始數據不能從其哈希值中再現,但相同數據始終產生相同的哈希值。因此,未驗證的數據可以使用相同函數進行哈希,並與原始數據比較。 如果它們相同,則數據驗證通過。

一旦一半以上的礦工驗證了新區塊,網絡則就新區塊達成共識,併成為鏈條中永久的一部分。現在這個數據可以很容易被非採礦節點下載(同步),且其有效性得到保證。

這是整個可視化過程:

以太坊概況

1.Bob 嘗試向 Alice 發送 1 ETH。

以太坊概況

2.Bob 和 Alice 的交易與其它自上個區塊之後發生的交易綁定在一起。

以太坊概況

3.礦工們競爭驗證新交易集合產生的區塊。

以太坊概況

4.成功創建新區塊的礦工將會得到報酬。

以太坊概況

5.交易通過驗證,Alice 收到 1 ETH。

什麼是以太坊?

以太坊不僅是一個數據庫,它還允許你在區塊鏈的可信環境中運行程序。以太坊在區塊鏈上搭建了一個名為 EVM(Ethereum Virtual Machine,以太坊虛擬機)的虛擬機。EVM 允許在區塊鏈上驗證和執行代碼,為代碼在每個人的機器上以相同方式運行提供保障。這些代碼包含在智能合約中(更多如下)。

除了追蹤賬戶餘額,以太坊使用相同方法將 EVM 的狀態保存在區塊鏈上。所有節點處理智能合約,來驗證合約本身及其輸出的完整性。

什麼是智能合約?

智能合約是指在 EVM 上運行的程序,它們與其他編程語言十分相似。智能合約可以接受和存儲以太幣、數據、或兩者組合。然後,使用編入合約的邏輯,它可以將以太幣分發到其他帳戶、甚至其他智能合約。你可以看到複雜系統是如何從這種靈活性中發展起來的。

智能合約是用 Solidity 語言編寫的。Solidity 是靜態類型,支持繼承、庫和複雜的用戶定義類型等功能。它的文件擴展名是“.sol”。 Solidity 的語法類似於 JavaScript。 我們將在以後教程中介紹 Solidity 基礎知識,但你也可以通過查看文檔來深入瞭解。

這裡繼續 Bob 和 Alice 的智能合約案例。這一次,他們正在使用託管合約(一個貨幣儲存空間,儲存一定貨幣直到滿足某條件),以便在最終交易之前存儲其以太幣。

以太坊概況

1.Alice 想僱傭 Bob 來建立一個露臺。為了讓雙方保持誠實,Alice 同意在託管合約中存放露臺款項,Bob 同意在合約中存入同等金額。

以太坊概況

2.Bob 完成了露臺,Alice 很激動!她許可智能合約釋放資金。

以太坊概況

3.Bob 收回了 1 ETH 的抵押,和 Alice 支付的 1 ETH

在更復雜的託管合約中,如果 Bob 沒有完成露臺,或他完成的非常糟糕,可以將規定寫入合約代碼中,以釋放 Bob 給 Alice 的抵押。

以太坊網絡

到目前為止,我們已經描述了主要網絡(或主網),以太坊的公鏈。任何人都可以創建一個節點並開始驗證交易;因此,它是高度安全的。鏈上的數據,包括賬戶餘額和交易,都是公開的。網絡上的以太幣具有市場價值,並可以交換其他數字貨幣、或例如美元的法定貨幣。

除了主網,還有測試網絡(本地和公有),以及私有網絡。

本地測試網絡

以太坊區塊鏈可以在本地進行模擬開發。本地測試網絡可以即時處理交易,並且以太幣可以根據需求進行分配。存在一系列的以太坊模擬器;我們推薦我們自己的:Ganache。

公有測試網絡

這些測試網絡是存在和公開的。這些網絡上的以太幣僅用於測試目的,沒有貨幣價值。由於這些網絡是公有的,所以貨幣是免費的,開發人員在最終部署以太坊應用程序到主網之前,需要使用它們測試。

* Ropsten:由以太坊基金會創建的官方測試網絡。

  • Kovan:一種使用“權威證明(Proof of Authority)”共識方法的公有測試網絡。這意味著其交易由選定人員進行驗證,從而只需要4秒的出塊時間。此測試環境上的以太幣供應也受到控制,以減輕垃圾內容的攻擊。這個鏈條的信息是公開的。 Kovan 是由 Parity 科技創建的,需要他們的 Parity 以太坊客戶端。

  • Rinkeby:一個同樣使用權威證明的官方測試網絡。 任何以太坊客戶端都可以訪問,由以太坊基金會創建。

私有 / 企業網絡

私有以太坊網絡允許各參與方共享數據,而不使其公開訪問。私有區塊鏈是一個很好的選擇,當:

  • 分享敏感數據,如醫療保健記錄,這是不允許或不希望公開的。

  • 小團體需要更大的容量。隨著網絡規模的縮小,私有區塊鏈可以擴展到更大的規模,並處理比公鏈更重的讀 / 寫量。

基於以太坊的私鏈同樣運行EVM,因此也兼容 Truffle 和其他開發工具。摩根大通最初開發的Quorum就是一個非常好的例子,也與Truffle兼容。更多關於在Quorum上使用Truffle的內容請訪問我們的博客。

Dapps(分佈式應用程序)

使用智能合約的應用程序大多數(雖然不是全部)的後端處理稱為 dapps,分佈式應用程序的縮寫。這些 dapps 的用戶界面使用包括你可能已經知道的語言:HTML,CSS和JavaScript。這些文件可以託管在傳統可信的 Web 服務器上,或無需信用的分佈式文件服務上,如 Swarm 或 IPFS。

鑑於以太坊區塊鏈的好處,dapp 可能是許多行業的解決方案,包括但不限於:

  • 檔案保存

  • 貨幣(金融)

  • 供應鏈

  • 房地產

  • 交易市場

…這種例子不勝枚舉。我們將在不久後提供如何建立自己的 dapps 的詳細教程,所以將本教程加入書籤,並繼續關注吧。


原文鏈接: http://truffleframework.com/tutorials/ethereum-overview

翻譯&校對: Nina & Elisa

關於EthFans

建立最好的以太坊中文技術社區,持續推廣和普及以太坊的技術,幫助以太坊釋放區塊鏈和智能合約的潛力,併為開發者提供更好的平臺和機會。我們相信區塊鏈和智能合約會在將來不斷證明其巨大的潛力,並在創新、社會效率,以及新的機會方面會對世界產生巨大的影響。


分享到:


相關文章: