以太坊技術簡介
什麼是區塊鏈?
區塊鏈是一個公共資料庫,在網路中的許多電腦之間更新和共享。
「區塊」是指資料和狀態被儲存在稱為「區塊」的連續群組中。如果你發送 ETH 給其他人,交易資料需要被加入到一個區塊中才能成功。
「鏈」是指每個區塊在密碼學上都引用其父區塊。換句話說,區塊被鏈接在一起。如果不改變所有後續區塊,區塊中的資料就無法改變,而這將需要整個網路的共識。
網路中的每台電腦都必須對每個新區塊和整條鏈達成一致。這些電腦被稱為「節點」。節點確保每個與區塊鏈互動的人都擁有相同的資料。為了達成這種分散式協議,區塊鏈需要一個共識機制。
以太坊使用基於權益證明 (PoS) 的共識機制。任何想要將新區塊加入鏈中的人都必須質押 ETH(以太坊的原生貨幣)作為抵押品,並執行驗證者軟體。然後,這些「驗證者」可以被隨機選中來提案區塊,其他驗證者會檢查這些區塊並將其加入區塊鏈中。這裡有一個獎勵和懲罰系統,強烈激勵參與者保持誠實並盡可能保持在線。
如果你想了解區塊鏈資料是如何被雜湊並隨後附加到區塊引用歷史記錄中的,請務必查看 Anders Brownworth 的這個演示 (opens in a new tab),並觀看下方隨附的影片。
觀看 Anders 解釋區塊鏈中的雜湊:
什麼是以太坊?
以太坊是一個內建電腦的區塊鏈。它是以去中心化的、無需許可且抗審查的方式建立應用程式和組織的基礎。
在以太坊宇宙中,有一台單一的、權威的電腦(稱為以太坊虛擬機,或 EVM),以太坊網路上的每個人都對其狀態達成共識。每個參與以太坊網路的人(每個以太坊節點)都保存著這台電腦狀態的副本。此外,任何參與者都可以廣播請求,讓這台電腦執行任意計算。每當廣播此類請求時,網路上的其他參與者就會驗證、確認並執行(「執行」)該計算。這種執行會導致 EVM 中的狀態改變,該改變會被承諾並傳播到整個網路。
計算請求被稱為交易請求;所有交易的記錄和 EVM 的當前狀態都儲存在區塊鏈上,而區塊鏈又由所有節點儲存並達成共識。
密碼學機制確保一旦交易被驗證為有效並加入區塊鏈後,以後就無法被篡改。同樣的機制也確保所有交易都以適當的「權限」被簽署和執行(除了 Alice 本人之外,沒有人應該能夠從 Alice 的帳戶發送數位資產)。
什麼是以太幣?
以太幣 (ETH) 是以太坊的原生加密貨幣。ETH 的目的是為了建立一個計算市場。這樣的市場為參與者提供了經濟激勵,以驗證和執行交易請求,並為網路提供計算資源。
任何廣播交易請求的參與者也必須向網路提供一定數量的 ETH 作為賞金。網路將銷毀部分賞金,並將剩餘部分獎勵給最終完成驗證交易、執行交易、將其承諾到區塊鏈並廣播到網路等工作的人。
支付的 ETH 數量與執行計算所需的資源相對應。這些賞金還可以防止惡意參與者透過請求執行無限計算或其他資源密集型腳本來故意堵塞網路,因為這些參與者必須為計算資源付費。
ETH 也被用來以三種主要方式為網路提供加密經濟安全性:1) 它被用作獎勵提案區塊或舉發其他驗證者不誠實行為的驗證者的手段;2) 它由驗證者質押,作為防止不誠實行為的抵押品——如果驗證者試圖作惡,他們的 ETH 可能會被銷毀;3) 它被用來衡量對新提案區塊的「投票」權重,並輸入到共識機制的分叉選擇部分。
什麼是智能合約?
在實踐中,參與者不會每次想要在 EVM 上請求計算時都編寫新程式碼。相反,應用程式開發者將程式(可重複使用的程式碼片段)上傳到 EVM 狀態中,而使用者則透過不同的參數發出執行這些程式碼片段的請求。我們將上傳到網路並由網路執行的程式稱為「智能合約」。
在非常基礎的層面上,你可以把智能合約想像成一種自動販賣機:一個腳本,當使用特定參數呼叫時,如果滿足特定條件,就會執行某些動作或計算。例如,一個簡單的供應商智能合約可以在呼叫者發送 ETH 給特定接收者時,建立並分配數位資產的所有權。
任何開發者都可以建立智能合約並將其公開到網路上,使用區塊鏈作為其資料層,並向網路支付費用。然後,任何使用者都可以呼叫該智能合約來執行其程式碼,同樣需要向網路支付費用。
因此,藉助智能合約,開發者可以建立並部署任意複雜的面向使用者的應用程式和服務,例如:市場、金融工具、遊戲等。
術語
區塊鏈
在網路歷史中已承諾到以太坊網路的所有區塊的序列。之所以這樣命名,是因為每個區塊都包含對前一個區塊的引用,這有助於我們維持所有區塊的順序(從而維持精確的歷史記錄)。
ETH
以太幣 (ETH) 是以太坊的原生加密貨幣。使用者向其他使用者支付 ETH,以完成他們的程式碼執行請求。
EVM
以太坊虛擬機是全球性的虛擬電腦,以太坊網路上的每個參與者都儲存並對其狀態達成共識。任何參與者都可以請求在 EVM 上執行任意程式碼;程式碼的執行會改變 EVM 的狀態。
節點
儲存 EVM 狀態的實體機器。節點相互通訊以傳播有關 EVM 狀態和新狀態改變的資訊。任何使用者也可以透過從節點廣播程式碼執行請求來請求執行程式碼。以太坊網路本身就是所有以太坊節點及其通訊的集合。
帳戶
儲存 ETH 的地方。使用者可以初始化帳戶、將 ETH 存入帳戶,並將 ETH 從他們的帳戶轉帳給其他使用者。帳戶和帳戶餘額儲存在 EVM 中的一個大表中;它們是整體 EVM 狀態的一部分。
交易
「交易請求」是在 EVM 上請求執行程式碼的正式術語,而「交易」是已完成的交易請求以及 EVM 狀態的相關改變。任何使用者都可以從節點向網路廣播交易請求。為了讓交易請求影響達成共識的 EVM 狀態,它必須被另一個節點驗證、執行並「承諾到網路」。任何程式碼的執行都會導致 EVM 中的狀態改變;在承諾時,這種狀態改變會廣播到網路中的所有節點。一些交易的範例:
- 從我的帳戶發送 X 個 ETH 到 Alice 的帳戶。
- 將一些智能合約程式碼發佈到 EVM 狀態中。
- 使用參數 Y 執行 EVM 中地址 X 處的智能合約程式碼。
區塊
交易量非常大,因此交易是分批或以區塊為單位被「承諾」的。區塊通常包含數十到數百筆交易。
智能合約
開發者發佈到 EVM 狀態中的可重複使用的程式碼片段(程式)。任何人都可以透過發出交易請求來請求執行智能合約程式碼。因為開發者可以透過發佈智能合約將任意可執行的應用程式(遊戲、市場、金融工具等)寫入 EVM,所以這些通常也被稱為去中心化應用程式 (dapp)。
下一步
大多數讀者會按順序閱讀文件,但最短的路徑取決於你想要建立什麼:
延伸閱讀
- 以太坊白皮書
- 以太坊到底是如何運作的? (opens in a new tab) - Preethi Kasireddy(注意:此資源仍然很有價值,但請注意它早於合併,因此仍然提到以太坊的工作量證明機制——以太坊現在實際上是使用權益證明 (PoS) 來確保安全的)
比較喜歡視覺學習?
這個影片系列提供了對基礎主題的深入探討:
以太坊基礎知識播放清單 (opens in a new tab)
知道有幫助過你的社群資源嗎?編輯此頁面並將其加入!
相關教學
- 以太坊開發者指南,第 1 部分 – 使用 Python 和 web3.py 對以太坊進行非常適合初學者的探索