以太坊簡介
最後編輯: @Xeift(opens in a new tab), 2024年6月26日
甚麼是區塊鏈?
區塊鏈是一個公共資料庫,在網路中的許多電腦之間更新和共享。
「區塊」是指儲存在連續群組(即「區塊」)中的資料及狀態。 若你給其他人發送以太幣,交易資料須添加至區塊後才算交易成功。
「鏈」指的是每個區塊透過加密方式引用上一個區塊。 換言之,區塊連結在一起。 無法變更區塊內的資料,除非對其後所有區塊進行變更,這需要整個網路達成共識。
網路上的所有電腦必須對所有新區塊及整條區塊鏈達成一致。 此等電腦稱為「節點」。 節點確保與區塊鏈互動的每個人具相同資料。 為了達成這種分佈式共識,區塊鏈需要一共識機制。
以太坊採用權益證明共識機制。 任何想將新區塊添加至區塊鏈的人都必須質押以太幣(以太坊的原生貨幣)作為抵押品並運行驗證者軟體。 接著,這些「驗證者」會被隨機選取以提出區塊,區塊由其他驗證者檢查並添加到區塊鏈上。 以太坊有獎勵及懲罰制度,以激勵參與者保持誠實並儘可能持續上線。
如果想瞭解區塊鏈資料是如何被雜湊後並附加到區塊參考的歷史記錄中,歡迎查看這個由 Anders Brownworth 製作的示範(opens in a new tab),並觀看附上的影片。
觀看 Anders 解釋區塊鏈中雜湊的影片:
甚麼是以太坊(Ethereum)?
以太坊是一條嵌入了電腦的區塊鏈。 它是以去中心化、無需許可、抗審查的方式建立應用程式和組織的基礎。
以太坊宇宙中有一臺單獨的規範電腦(稱為以太坊虛擬機,EVM),網路上的所有參與者都對其狀態達成共識。 所有以太坊網路參與者(每個以太坊節點)都保存有此電腦之狀態的副本。 此外,任何參與者能向此電腦廣播執行任意計算的請求。 每當此類請求被廣播時,網路上的其他參與者將確認、驗證並完成(「執行」)此計算。 此等執行將引起以太坊虛擬機狀態變化,而狀態變化將被提交並傳播至整個網路。
計算請求亦稱為交易請求;所有交易的紀錄及以太坊虛擬機的當前狀態儲存於區塊鏈上,而區塊鏈由所有節點儲存並達成共識。
加密機制確保一旦交易被驗證為有效並添加至區塊鏈上,以後就無法被篡改。 此相同機制也確保所有交易是透過相同的「權限」簽署並執行(除了 Alice 本人外,任何人都不應該能從她的帳戶發送數位資產)。
什麼是以太幣?
以太幣 (ETH) 是以太坊的原生加密貨幣。 以太坊的作用是提供一個計算市場。 此類市場為參與者提供經濟獎勵,激勵其驗證並執行交易請求,並且向網路提供計算資源。
任何廣播交易請求的參與者還必須給網路提供一定數量的以太幣,作為賞金。 網路將此類賞金獎勵給最終驗證交易、執行交易、將交易提交至區塊鏈及廣播交易至網路的任何人。
支付的以太幣數量對應於執行此計算所需的資源。 這些賞金也能阻止惡意參與者蓄意透過請求執行無限計算或其他資源密集類型的指令碼來堵塞網路,因為惡意參與者必須支付使用計算資源的費用。
以太幣也用來為網路提供加密經濟學安全性,主要有以下三種方式:1) 作為一種獎勵方式,獎勵提交區塊或檢舉其他驗證者不誠實行為的驗證者;2) 由驗證者質押,作為對抗不誠實行為的抵押品 - 如果驗證者嘗試從事不良行為,則它們的以太幣可能會被銷毀;3) 用來衡量新提交區塊的「投票」,並輸入共識機制的分叉選擇部分。
什麼是智慧型合約?
實際上,參與者想請求在以太坊虛擬機上進行計算時,不用每次編寫新程式碼。 反之,應用程式開發者將程式(可重複使用的程式片段)上傳到以太坊虛擬機狀態中,使用者請求使用不同的參數來執行此類程式碼片段。 我們將此類上傳並執行的程式稱為網路智慧型合約。
簡單來說,你可以想像智慧型合約為一臺自動販賣機:一個指令碼,在使用某些參數呼叫時,若滿足特定條件,該指令碼會執行一些操作或計算。 舉例來說,如果呼叫者將以太幣發送給特定接收者,一個簡易的販賣智慧型合約可能會建立和指定某件數位資產的所有權。
使用區塊鏈作為其資料層,並為網路支付費用後,任何開發者能可以建立智慧型合約並發佈到網路。 任何使用者也能調用此智慧型合約以執行其程式碼,同樣也要向網路支付費用。
因此,透過智慧型合約,開發者能建立並部屬各種複雜程度且使用者對應的應用程式與服務,例如市場、金融工具、遊戲等。
術語
區塊鏈
以太坊網路之歷史記錄中提交至網路上的所有區塊的順序。 有此名稱的原因是,每個區塊都包含對前一個塊的引用,這有助於維護所有區塊(以及精確歷史記錄)的排序。
以太幣
以太 (ETH)以太坊原生加密貨幣. 使用者向其他使用者支付以太幣,以完成他們的程式碼執行請求。
以太坊虛擬機
以太坊虛擬機為一臺全域虛擬電腦,所有以太坊網路參與者都儲存其狀態並達成共識。 任何參與者都能請求在以太坊虛擬機上執行任何程式碼;程式碼執行會改變以太坊虛擬機的狀態。
節點
儲存以太坊虛擬機狀態的真實電腦。 節點互相通訊,以傳播關於以太坊虛擬機狀態及新出現狀態變化的資訊。 任何使用者還可以透過從節點廣播程式碼執行請求,請求執行程式碼。 以太坊網路本身為所有以太坊節點及其通信之彙總。
帳戶
以太幣儲存之處。 使用者可以初始化帳戶,將以太幣存入帳戶,並將其帳戶中的以太幣轉帳給其他使用者。 帳戶及帳戶餘額儲存於以太坊虛擬機中的一張龐大表格中;它們是以太坊虛擬機全部狀態的一部分。
交易紀錄
「交易請求」為表示以太坊虛擬機上程式碼執行請求的正式術語,而「交易」為已完成的交易請求及相關的以太坊虛擬機狀態變化。 任何使用者都能從節點向網路廣播交易請求。 為了讓交易請求影響達成共識的以太坊虛擬機狀態,必須由其他節點驗證、執行此交易請求並「將其提交至網路上」。 執行任何程式碼都會改變以太坊虛擬機的狀態;提交時,此狀態變化將廣播至網路上的所有節點。 以下為一些交易範例:
- 從我的帳戶發送 X 以太幣至 Alice 的帳戶。
- 將一些智慧型合約程式碼發佈至以太坊虛擬機狀態中。
- 使用 Y 參數來執行以太坊虛擬機中地址 X 處的智慧型合約的程式碼。
區塊
交易量非常龐大,因此交易按批次或區塊「提交」。 區塊通常包含數十乃至數百筆交易。
智慧型合約
一段可重複使用的程式碼片段(程式),由開發者發佈至以太坊虛擬機狀態中。 任何人都可以透過發出交易請求來請求執行智慧型合約的程式碼。 因為開發者能藉由發佈智慧型合約向以太坊虛擬機中編寫任意可執行應用程式(遊戲、市場、金融工具等),此類合約也經常稱為 Dapp 或去中央化應用程式。
了解更多
- 以太坊白皮書
- 以太坊到底是怎麼運作的?(opens in a new tab) - Preethi Kasireddy(注意:此資源仍有參考價值,但請注意它早於合併,因此仍然引述以太坊的工作量證明機制 - 實際上目前是由權益證明保障以太坊的安全)
知道一個曾經幫助你學習更多社區或社團資源? 歡迎在本頁自由編輯或添加內容!!
相關教學影片
- 以太坊開發者指南,第一部分 – 適合初學者的以太坊探索(使用 Python 和 web3.py)