banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

以太坊的五個主要部分:

以太坊為五個主要部分:#

“以太坊 101” 基礎篇

“以太坊 201” 深入探討更為複雜的概念

(以太坊 301)加密語境中關於身份認定部分

(以太坊 401)去中心化金融部分

(以太坊 501)關於以太坊的未來部分,最後這一部分尤其探討向 PoS (權益證明機制) 的過渡(如果現在這些與你無關,則不要過於憂慮)。

在每一部分,我解釋了很多複雜的專業術語,編制了許多實用的圖表,以通俗的語言闡釋以太坊中最為重要的概念性主題。並且,我還在指南的末尾附上了額外資料,供大家繼續深耕。

在了解以太坊時,你可以針對性地運用指南的不同部分進行快速閱讀和檢查,或將指南作為探索未來的一個靈感點,或作為一個鏈接分享給最近對加密領域感興趣的朋友。

舉例來說,可以按 Ctrl+F 鍵查找 “Uniswap” 更多地了解去中心化交易所。或者,還可以檢索 “ wallet ”(錢包)學習更多有關非托管錢包的安全知識。

在 Vitalik Buterin(以太坊聯合創始人)的一篇熱門博客帖子中,他寫道,

“有時候,差別極小的過度簡化正是我們了解世界所需要的東西。”

通過將這些複雜的話題濃縮為極簡的內容,我希望這則指南可以幫助所有人了解以太坊世界。

以太坊 101 - 基礎篇

在認識以太坊之前,我們需要了解它的基礎概念。

在這個部分,我將闡釋什麼是區塊鏈,區塊如何添加到鏈上,以太坊如何像世界計算機一般運作,以及智能合約如何運行。

區塊鏈 - 區塊鏈是指特定網絡中一系列獨立計算機處理和維護的所有交易的公開記錄本。比起用中心化的方式管理這些交易數據庫(就如 Amazon 或 Facebook 控制自己數據的方式),區塊鏈上不存在單個數據所有者,使之去中心化。在這個網絡中的計算機遵循著特定的規範和機制,以保存所有交易的記錄。

這些規範讓計算機能夠同意網絡中發生的所有(交易)行為,或就其達成共識:計算機 A 是否轉出資金給計算機 B ,計算機 B 是否發送這些資金給計算機 C,以及什麼時候呢?上週發生了什麼事呢?六個月前發生了些什麼?

網絡中的計算機是獨立的,因此,計算機 D 和 E(和 F 和 G ......)可能不認識計算機 A、B 或 C。區塊鏈的一系列規則意味著,單個計算機無須獨自驗證其他計算機提供的數據的準確性,就能對區塊鏈歷史上發生的交易達成一致。

換句話說,計算機之間不用信任彼此就可以達成共識。在網絡中的計算機之間,這種去信任共識機制具有舉足輕重的重要性。

區塊鏈數量十分龐大,每一條鏈遵循著自行設置的規範達成共識。以太坊區塊鏈致力於為給不同領域中酷炫的、新穎的應用提供基礎設施服務與設計空間,比如遊戲、藝術、金融和社交媒體類的應用。

共識機制 - 當區塊鏈上的所有計算機都同意發生在網絡中的事實,這就是 “達成共識”。單個計算機之間根據區塊鏈的規則達成共識,並且每一次將新交易打包至鏈上,所有計算機都需要經歷達成共識的過程。

一旦這些計算機達成共識,交易區塊則被打包到區塊鏈上,成為網絡歷史記錄中的一部分。

大致的意思是,假設計算機對每次新交易添加至鏈上的行為無異議,那就相當於同意了區塊鏈的整個歷史記錄,因為他們不得不參與其中的每一環。

共識是一個支撐整個區塊鏈世界的重要概念。如何在不信任網絡中任何參與者的情況下,驗證上面發生的交易,這是一個非常難以解決的人類問題,而區塊鏈是這一問題的最優解。不同規範(或是 “共識機制”)可以促使個人計算機在區塊鏈中達成共識。下面介紹兩種主要共識機制:

工作量證明(PoW)- 在工作量證明機制中,計算機之間以競賽的方式解決複雜的數學問題。網絡會給第一台解決問題的計算機提供經濟獎勵,這激勵著計算機背後的人不斷更新並運行節點(換言之,確保網絡一直處理交易)。

也許你曾聽過,這種競相解決計算密集型數學問題的過程就叫 “挖礦”。基本上,經驗證為合法的交易,可以安全地添加到區塊鏈上。這也是比特幣區塊鏈以及當前以太坊區塊鏈在實施的規則。

工作量證明機制也有它的缺點,主要是

1)最強大的(和最昂貴的)計算機能夠更快地解決問題,因此,富者更富;

2)在計算機上解決高難度的數學問題需要消耗很多精力,這已經成為整個區塊鏈最為人詬病的一點。

權益證明機制(PoS)- 相對於耗費大量算力來達成共識(如 PoW),權益證明機制則是利用懲罰的風險(和一些經濟激勵)約束 / 激勵參與者。

在權益證明機制中,參與者籌備資金(技術角度而言,他們 “質押” 自己的資金),並換取進入隨機選拔程序的資格。被隨機選中的計算機需要驗證下一批即將到來的交易。當隨機選中的計算機正確地處理交易(在權益證明機制的限制範圍內),可以獲得獎勵。

如果被網絡隨機選中的參與者違反了權益證明機制的規定,那麼這個參與者質押的資產就會減少(或 “被罰沒”)。

PoS 區塊鏈不會同時請求網絡中的所有計算機破解那些數學難題,而是通過隨機選取計算機進行交易驗證。略過繁重的計算過程可以減輕 PoW 機制出現的兩大主要問題。這也是以太坊在規劃 2022 年部署下一代區塊鏈時,打算啟用這套共識機制的部分原因。

節點 - 為了以太坊區塊鏈的運作,網絡中的參與者需要運行特定的軟件,協助他們與區塊鏈進行交互。我傾向於認為,每個節點作為獨立計算機運行著以太坊軟件。

同樣地,節點(網絡中的參與者)越多就越去中心化,但有時,維護所有節點有些麻煩,因此,不同的節點針對不同的目的:

全節點 - 全節點用來儲存完整的區塊鏈數據,幫助區塊進行驗證並打包到鏈上。這類節點還為過去的交易提供有效性證明。

輕節點 - 輕節點的功能在設計上相對少於全節點。比起儲存完整的區塊鏈數據,輕節點僅僅儲存較少量過去交易的證明。這類節點讓更多人參與到網絡中,因為它們存儲更少的數據,運行起來更加經濟。

歸檔節點 - 歸檔節點是以太坊世界的程序庫 / 維基百科詞典。它們儲存全節點所有的數據,甚至更多。分析工具和錢包提供商也許會利用歸檔節點來拉取很久之前的信息。

客戶端 - 這是以太坊的軟件,使得計算機(節點)能夠同以太坊網絡進行交互。單個節點可以選擇他們想用的客戶端軟件,但多用一些不同類型的客戶端對於去中心化至關重要,以免其中某個客戶端出現 bug 或者問題。

現在有執行客戶端和共識客戶端兩種類型,但這不在指南介紹的範圍內。

現如今,鏈上有很多可用的客戶端,最近以太坊社區爭取讓最大的一些節點運行機構多樣化其運行節點的客戶端。

重要的是,任何想要參與運行以太坊網絡的用戶,都可以創建他們自己的客戶端,這意味著用戶不必信賴第三方實體為其驗證區塊鏈。

狀態 - 以太坊區塊鏈的狀態指的是在任何特定時間點區塊鏈上的賬戶餘額情況。一旦有新的事物產生(比如處理一個新的交易區塊),那麼狀態則會更新並精確地反映區塊鏈在打包新交易後的狀況。

以太坊的狀態保存不同賬戶及其餘額的信息。換句話說,一旦區塊鏈驗證新的交易,狀態也會隨之更新,利用剛添加的新交易信息反映出新的賬戶餘額。

側欄 - 如何將區塊打包到區塊鏈上?

一個用戶可能想用以太坊區塊鏈發送一些資金給另一個用戶。一旦發起方用戶這邊發起了交易,這筆交易就要在接收方用戶收到這筆錢之前,被打包至交易鏈上。

當這樣一筆交易打包到以太坊區塊鏈上,各個節點需要在交易打包上鏈並變成其一部分歷史之前,完成整個達成共識的過程。

在下圖中,它討論的是上述的簡單交易,就是一個用戶發送資金給另一位用戶。這筆交易被打包成區塊,等待節點一同達成共識後將它添加至鏈上。

image

image

來源: Understanding Ethereum

事實上,區塊鏈只是所有用戶對於發生在網絡中的歷史交易達成共識的方式,而區塊鏈狀態是已實時更新過新交易的賬戶餘額。

image

源: Understanding the Ethereum Yellow Paper

智能合約 - 在一定程度上,智能合約類似於物理世界中使用的傳統合約的電子版。在傳統合約中(例如雇傭合同或者公寓租賃),兩個及以上的合約方建立一套條款,再通過律師和司法系統執行合約中的條款。

而在智能合約中,兩個及以上的用戶也是創建一套規則,卻不是通過司法體系執行合約,而是由程序代碼編寫成智能合約,發送到區塊鏈(或者部署在區塊鏈上)。智能合約會根據已編好的代碼自動運行,而不需要律師執行。

上述的側欄部分敘述了區塊打包上鏈的過程。智能合約是經由區塊內的交易部署到鏈上的代碼。未來的交易可以 “調用” 或與智能合約交互。

舉個簡單的例子,A 用戶希望和 B 用戶就比特幣在未來兩年內的價值打賭。A 用戶認為比特幣在 2032 年 1 月 1 日時會超過 100,000 美元,而 B 用戶則認為比特幣會低於這個價格。

那麼,兩位用戶可以建立一個智能合約,在合約裡放置彼此的資金,再約定一條簡單的規則:如果比特幣在 2032 年 1 月 1 日超過了 100,000 美元,智能合約則釋放這些資金給 A 用戶,反之,智能合約將資金打給 B 用戶。這個交易過程十分簡單、直接且去信任。

智能合約允許任何人以去信任的方式在世界計算機上部署代碼,並且,也使得任何人去信任式地驗證代碼的內容(只要他們可以讀懂代碼!)

最終,智能合約技術的存在已為一波湧現的去中心化應用浪潮帶來巨大的機遇,而沒有區塊鏈技術,這些就無法成為現實。

比特幣和以太坊最大的區別是,以太坊催生了一波智能合約計算平台的浪潮,這些平台是可以編寫智能合約代碼並直接部署到鏈上的區塊鏈。

以太坊基金會研究員 John Stark 寫了一部關於智能合約的文章,如果你願意更加深入了解這個概念,我建議你閱讀這篇文章。

以太幣(ETH)- 以太幣是支持以太坊區塊鏈的原生貨幣。在工作量證明機制中,(挖礦)獎勵通過以太幣支付給解決數學難題的計算機。並且,參與者在權益證明機制中質押的資金也是用以太幣 (需質押 32 ETH)。

以太幣是加密貨幣的名字,以太坊是網絡的名字。

以太坊虛擬機(EVM)- 以太坊虛擬機這個名字是指 “虛擬的” 計算機,它由所有參與以太坊網絡的獨立小型計算機組成。這樣單個的大型計算機並非實際上處於某個位置的 “物理層面的” 計算機,而是尤如一台大型計算機(全球性的)一般工作。

以太坊區塊鏈的狀態就活躍在這台計算機上,並且,當下個區塊打包至鏈上時,它負責執行狀態更新的規範。如果以太坊網絡中的用戶想將智能合約代碼納入自己的交易中,那麼這個代碼便會在 EVM 上運行。

側欄 - 以太坊虛擬機如何運作?

儘管對於新手來說,可能沒必要了解 EVM 運行的複雜性,但它是以太坊區塊鏈的重要組成部分,還能幫助讀者大致了解去中心化如何規模運作。

如下圖,儘管圖片有些複雜,但畫得不錯。一起按照步驟來看:

image

們首先從以太坊區塊鏈在特定時間點的狀態開始。這左邊的方框稱作 “世界狀態 σ t”

一筆交易被打包到鏈上,例如從一個錢包轉移以太幣到另一個錢包,在圖表頂端上的方框,就是 “信息調用交易”。

在交易發生之前的以太坊狀態(再次提示,左邊的方框)加上新交易(頂上的方框)的輸入數據,都在 EVM 上運行。在這裡,EVM 更新區塊鏈的狀態。

一旦 EVM 更新了狀態,新的狀態 “World state σ t+1” 會被儲存起來。

代幣 - 通常,代幣指區塊鏈上的資產。代幣可以代表許多不同類型的資產。

舉個例子,一般認為代幣是可以當成貨幣的資產,或者是在具體決策過程中給持有者提供投票權的資產 (治理代幣),又或者完全可以作為其他東西。代幣是加密世界中代表著不同種類資產的價值的原子單位。

同質化代幣 (fungible token) - 這個術語 “ fungible ” 指的是可以相互轉換的一些商品或是物品,即可替換性。這不是一個加密原生術語,一般的貨幣指的是同質化貨幣。

例如,我口袋裡的 1 美元可以換成你口袋裡的 1 美元,並且這兩個 1 美元都可以用來買 1 美元的東西,它們是等價的。當可替代性應用於加密概念中,它指是否可以與其同一集合中的其他加密資產進行互換。我的以太幣和你的以太幣可以互換。

非同質化代幣(NFTs)- 非同質化代幣指的是所有因其獨一無二的存在而不可互換的數字資產。

雖然 NFT 主要是因為數字藝術和數字藏品出圈的,但它不止於這種表現形式,它可以是任何獨一無二的數字資產。

數字藝術和數字藏品恰好是 NFT 最早的用例之一,而已經引起了廣泛公眾的共鳴。這種代幣引起了許多人對加密界的興趣,但我認為諸如無聊猿和 NBATopShot 此類 NFT 項目的興起導致廣大公眾低估了在以太坊區塊鏈這樣的可信結算層上部署獨一無二的數字資產所帶來的其他方面的效用。

從概念上看, NFT 還可以應用於許多數字收藏品以外的其他用例。如果一種產品或者服務需要能夠驗證某種特定數字資產的所有權和其稀缺性的有效性,那麼公共區塊鏈上的 NFT 就派上用場了。

例如,音樂會場地可能會用 NFT 替代門票,或者視頻遊戲的設計師可以將那些難以在遊戲中獲得的資產轉為 NFT,由此用戶之間可以轉讓或交易。

這個概念還能玩出新花樣:一些資產可以既是同質化的,又是非同質化的,這取決於同它們進行比較的集合。例如,如果我持有一個 19 世紀的 1 美元老幣,並將它作為收藏品放置於玻璃罐中。這很明顯,這 1 美元(非同質化的!)和被揉作一團後塞在口袋的美元新鈔截然不同。

不過,如果我將玻璃罐裡的 1 美元掏出來去星巴克消費,他們(可能)願意收下它。這是因為,從某種程度上看,它跟其他一美元紙幣是可互換的,儘管從其他角度而言,它們完全不是一回事。

image

來源: Graphical Guide to Understanding Uniswap

以太坊 201 - 進一步深入了解

在這一部分,我將闡述 gas 成本高昂的原因,可組合性如何運作,以及用戶如何與創建在以太坊上的應用交互。

燃料 (Gas) - 與以太坊區塊鏈的每次交互都會消耗成本 (gas),而這個成本取決於以太坊虛擬機運行那段特定代碼需要消耗多少算力。

由於區塊鏈上的每個區塊的空間只能容納固定數量的交易,而 gas 的概念可以幫助以太坊分配稀缺的區塊空間資源。

越是複雜的交易可能需要支付越多的 gas 才能完成。比如,從一個錢包發送以太幣到另一個也許只需要在虛擬機上運行幾行代碼,因此,它需要的 gas 少於算力大的交互所需的 gas,如在去中心化交易所兌換一些代幣(閱讀下文的去中心化金融部分了解更多)。

你可以把 gas 看作類似於中心化的信用卡公司收取服務的手續費。

例如自 20 世紀 50 年代創建、運作且維護到現在的 Visa ,會向所有使用 Visa 網絡的交易收取固定的 3% 費用。

相對而言,以太坊的 “手續費” 並不固定,它基於交易時網絡的供需情況而定。Gas 費用於支付參與以太坊區塊鏈運作的計算機(請閱讀下文了解更多)。

Gas 以 ETH 計價,並且用戶可以選擇支付更多的 gas(通過給計算機支付小費的方式)以加速交易時間,提高交易打包到下一区塊的機率。

Gwei - 在技術上 Gas 的價格表示為 wei ,是 ETH 最小的增量單位。1 wei 等於 0.000000000000000001 ETH(10 (18) wei,也就是用 5 個逗號才能表示 1 ETH),1 gwei 等於 1,000,000,000 wei,所以比較 gas 價格時,用 gwei 兌 ETH 的計價方式更為方便。

用戶已經習慣了以 gwei 為單位來表示 gas 價格。比如 0.0001 ETH 是 1 gwei,這個 gas 費用很低。用戶可以使用 Gas.Watch 留意實時的 gas 價格。Gas 會隨著打包進區塊鏈的交易需求上下波動。

它應該是發音為 gwey,但我聽過有人讀 goo-ee。所以,我不太敢向別人問它的讀音。

側欄 - 為什麼需要 gas,它如何應用?

負責驗證區塊鏈交易的計算機需要在經濟上給予激勵。如果不發放這些激勵,將難以說服他們運維計算機和區塊鏈,而要是鏈上沒有充足的計算機進行運行,就將導致區塊鏈變得過度中心化,僅由幾個用戶控制。

如上所述,支付給網絡參與者的 gas 會根據打包進區塊鏈的交易需求而波動。

image

來源: Understanding Ethereum

Solidity - Solidity 是一種編程語言,用戶可以用它在以太坊區塊鏈中編寫智能合約以及創建去中心化應用。

重要的是,Solidity 是圖靈完備的編程語言,這基本意味著 “任何你可以編寫成代碼的東西都可以用 Solidity 寫”。這說明,開發者能夠使用 Solidity 在以太坊上開發大量的酷炫玩意。

可組合性 - 由於智能合約作為開源代碼部署在以太坊上,所以,任何人都可以基於這些智能合約構建(或者 “分叉” 代碼並自行改變),這表明以太坊 (以及其他類似區塊鏈) 上的應用是可組合的。

可以將可組合性看作是區塊鏈的 API 。儘管按理說早幾代前開發者就能夠基於其他技術基礎設施創建應用,但加密可組合性對比其他領域的不同主要表現在:它所有底層協議都是去中心化的。

換句話說,開發者無需擔憂會有某個中心化實體,掌控全部的底層數據並突然改變平台的規則,或是限制開發者的訪問,比如 2018 年基於推特 API 構建應用的開發者們遇到的情況那樣。

側欄 - 可組合性的案例有哪些?在實際中如何應用?

可組合性指的是開發者可以利用已經構建和部署在公鏈上的其他應用創建新的應用。

例如,Compound 作為一個 DeFi 應用,如高能儲蓄賬戶一樣能讓用戶通過存款賺取利潤。假設一個項目(例如 Argent 加密錢包)的開發者希望將 Compound 嵌入他們構建的應用中,那麼他們無需重建系統就可以輕鬆地集成 Compound 。這就是可組合性。

image

來源: Understanding Ethereum

以太坊改進提案(EIP)- 鑒於如以太坊這類區塊鏈在本質上是公開的、去中心化和開源的,其開發者社區修改協議的方式與中心化實體做決策的方式相去甚遠。現代開源社區(比如 Linux 和 Python 的活躍社區)和以太坊的開發過程更加相似。

以太坊社區已經制定了一套流程以概述社區成員該如何向以太坊協議提出改進建議。這些流程包括提供進行討論的公共論壇和鼓勵社區參與開源,這對於以太坊區塊鏈來說尤為重要,因為它是去中心化的區塊鏈且依賴於全球分布的社區對其進行監督和改進。

提案可以與區塊鏈遵循的核心規則相關 (比如何時達成共識),也可以就以太坊核心構建部件提議一個標準化版本如非同質化代幣或者錢包(下文會展開描述)。當用戶利用以太坊的可組合性並基於某些已標準化的規範來構建一個應用時,顯而易見代碼將按預期運行。

以太坊註釋請求(ERC)- ERC 是 EIP 的一種類別,具體來說,ERC 是描述 “應用級別的標準和協定” 的一種 EIP 。

這類 EIP 值得在這提一提,因為它是以太坊上最重要且最具知名度的一些使用案例的合約標準的模板。開發者在以太坊上構建時可以使用這些合約標準以節約時間和精力,而不用從頭開始。一些廣為人知的 ERC 如下:

ERC - 20 :這是同質化代幣的一種代幣標準。

ERC - 721 :這是非同質化代幣的一種代幣標準。

ERC - 1155 :這是優化了部分 ERC - 20 和 ERC - 721 的代幣標準,一般應用於碎片化非同質化代幣。

側欄 - 為何要分解(或使其可替代)非同質化代幣?

儘管碎片化 NFT 這個概念本身聽起來像悖論,但這也有幾個不同的用例。

最好的解讀方式是,一些藝術品價格高昂(比如 Beeple 的 NFT 以 6900 萬美元的價格售出或蒙娜麗莎這副名畫),普通人很難買得起。碎片化一個昂貴的 NFT,使得消費者有機會持有(價值連城、非同質化)代幣的一小部分。

圖片 來源: Algorand

值得注意的是,大多數分解後的 NFT 碎片之間具有可替代性,因此,某個用戶持有的蒙娜麗莎面部碎片不會和手部碎片或是背景碎片相斥(即碎片之間是等價的)。

這些不同部位的碎片實際上並不是可替代的(比起臉部碎片,我更樂意花更少的錢購買背景碎片)而現實中,用戶只會持有整個藝術品的一片小小的可替代碎片。

碎片化 NFT 不止是錢的問題。NFT 代表著獨一無二的數字資產,所以 NFT 碎片化還隱含著所有權、身份和社區的概念。

測試網 - 測試網是區塊鏈的副本,它使開發者得以盡情開發,並測試代碼在 “主網” 區塊鏈上將是何種運行情況。

當開發者在區塊鏈上部署了智能合約後,儘管有些智能合約已經不再應用,但只要區塊鏈一直活躍,這些代碼都是可見的。

由於存在這種永久性以及智能合約有可能與大額資金交互,開發者會希望通過在測試網測試以確保代碼會按預期運行。

在以太坊案例中,有一堆的測試網(比如 Rinkby 、 Ropsten 和 Kovan )可供開發者在不用冒險動用真實資產的情況下,測試自己的代碼。測試網是加密軟件開發者的開發實踐環境。

水龍頭 - 水龍頭會分發 “虛假的” ETH 給開發者,所以他們能用這些測試幣在測試網測試智能合約。

開發者需要 ETH 部署智能合約並與之進行交互,但與主網的 ETH 不同,測試網的測試幣不具有實際的經濟價值。水龍頭是開發者獲取 ETH 測試幣的簡便渠道。

設想你是一名開發者,準備在以太坊上部署智能合約。假設你手頭上的智能合約將處理一些資金,可能類似於一個去中心化的交易所(在下文的去中心化金融部分有探討)。

首先,你想在測試網上測試智能合約。以確保代碼的運行達到預期。你將需要一些測試網的 ETH 來運行智能合約。

然而,要謹記測試網只是以太坊區塊鏈的副本,所以測試網上面的 ETH 本質上是 “虛假的”,因此,這些代幣不能兌換成主網鏈的 ETH 。

如果讀者想用以太幣測試合約並觀察它的實際運行,那麼水龍頭可以方便用戶獲取 ETH ,並在測試網上盡情使用 / 揮霍。

預言機 - 根據需要,預言機可以用來連接區塊鏈和外部系統。在某些時候,可以創建在以太坊上的應用,希望與非以太坊網絡所保護的外部數據流進行交互。一些數據不得不從鏈下獲取,就如今天的天氣或者籃球比賽的分數。

因此,預言機是通向 “現實世界” 的接口。

為了農作物的保險起見,預言機可用於查詢佛羅里達州靠近橙子種植地的天氣,或是用於驗證去中心化體育博彩應用的記分。預言機具有潛在的信任隱患(因為構成區塊鏈的計算機網絡無法真的驗證佛羅里達的天氣如何),但是對於這些需要預言機的應用來說,有良好的方案可以解決這一隱患。

預言機提供商 (如 Chainlink) 構建了某種系統以試圖確保其預言機不易受攻擊 (但是單個預言機仍然是區塊鏈上易受攻擊的弱點)。

讀者可以設想一下:為預言機系統 (由多個預言機組成) 建立一種共識機制,儘管其中存在易攻擊點 (因為鏈下數據總是可能會以某種方式被操縱),但是仍然

需要 9/16 個預言機對預言機網絡的信息達成共識。或者類似的機制。

內存池 - 當一筆交易已被用戶提交,但是還未被驗證和打包上鏈,這種待處理的交易會被發送到一個等待區域,叫做內存池。

在處理交易之前,網絡中的計算機節點會驗證交易的有效性。舉例來說,賬戶在發送交易時,可能會花費超過賬戶內的有效資金,或是可能出現私鑰與發起方錢包(更多請看下文的錢包和身份認證的部分)的公鑰不匹配的情況。當網絡中的計算機在驗證這些潛在隱患時,這些待處理的交易就在內存池中等待。

在技術上而言,網絡中的每個參與者都有自己的內存池,但為了讓入門級別的讀者更好理解,把內存池想象成所有區塊鏈交易的等待區域是可以接受的。

通常,交易在內存池中等待幾秒鐘到幾分鐘不等,這取決於需求量(下文進一步討論可擴展性)。

以太坊上待處理的交易可以在數據供應器上看到,比如 Etherscan 。

側欄 - 用戶和應用如何與以太坊交互?

用戶幾乎都是通過如 Chrome 等瀏覽器使用網頁應用。這些網頁應用使用特定的庫(如 web3.js 或者 ethers.js )建成,這些庫使得網頁應用可以直接同區塊鏈節點實現交互

image

來源: Understanding Ethereum

開發者建立的應用,通過節點運行客戶端軟件的方式與以太坊進行交互。在下面的示例中,運行的客戶端是 Geth ,它是一個用來與以太坊區塊鏈交互的命令行界面。

也有像 Infura 這樣 “節點即服務” 的供應商,它讓開發者得以便捷地與服務供應商控制的節點進行交互,這和開發者如何利用 AWS 訪問伺服器空間的過程是類似的。接下來,這些節點可以在以太坊上與智能合約和單個賬戶餘額產生交互。

這和當下其他軟件產品的 “後端” VS. “前端” 大不相同。在左下圖表中,我們可以看到一個用戶如何連接傳統的網頁應用。

在這個圖的旁邊,是一個基於以太坊的應用的架構例子。兩者極其類似!區別就是,以太坊作為一個後端基礎設施服務於加密應用,這使得它具有全球化、無需許可和抗審核的特性。

image

來源: The Architecture of a Web3.0 Application

以太坊 301 - 錢包和身份

根據設計,區塊鏈使得用戶能夠自我保管資產,但錢包的作用不僅是給了用戶自我托管的權利,它還是用戶在加密世界的自我呈現。

在這一部分,我將介紹 DAO 和身份的關係,以及用戶如何保證錢包安全問題。

錢包 - 將你的資產存在加密錢包中,就好比將現金存在物理錢包裡。但是這些加密錢包還儲存著代表你和你的行為的信息,例如你交互過的應用以及用該錢包做過的交易。

需要記住的是,根據設計,區塊鏈交易是公開透明的,由此,當你使用錢包在以太坊上做些什麼的時候,你的錢包管理著關於這些交易的可追溯、公開的數據。

這些可追溯數據強調了 web3 中 “持有自己的數據” 的理念 —— 你的資產、交易歷史、與去中心化應用交互的數據會隨著你的錢包移動。而且,與物理錢包相區別的是,許多加密用戶會使用多個用途不同的加密錢包。

在這裡,還需要了解其他的定義才能完整地解釋錢包的概念:

公鑰 - 這是一行長代碼,代表錢包的對外地址。公鑰好比你的家庭地址;這個地址是獨一無二,不是秘密(公共記錄等)。而這個地址對應著一個家庭(或在這個案例中,地址對應著你的某個賬戶)。

你可能會與想給你寄信或禮物的朋友分享你的地址,但就算有人在當地政府的財產記錄中看到你的家庭地址,那也沒什麼。如果有人看到你的公鑰,那也是沒問題的。

私鑰 - 在另一方面,私鑰是錢包的密碼,所以不能讓別人知道你的私鑰。私鑰會對應特定錢包的公鑰,因此,如果有人得到了私鑰,他們可以完全訪問錢包。

私鑰就像家裡的鑰匙,你並不介意有人隨機知道了你家的地址,但是如果他們有你家的鑰匙,那你必然惴惴不安。

再次重申 —— 任何人得到了私鑰都可以接入對應的錢包,不要將私鑰告訴任何人,也不要儲存在別人可以找到的地方。

側欄 - 公鑰和私鑰的原理是?

公鑰和私鑰背後的機制是非常重要的基礎知識。基本上,公鑰和私鑰是用於加密和驗證身份的一種方法,叫做私鑰密碼學。

謹記公鑰是面向外部公開的。當用戶向其朋友的錢包發起交易時(使用朋友的公鑰),就相當於給交易上鎖,只有當用戶的朋友確實持有接收方錢包的私鑰時,才能把鎖解開。儘管交易是可見的(因為它存在公鏈上),但沒有特定私鑰(私鑰對應的持有資產的錢包)的情況下無法 “解鎖” 這些資產。

不管你是以太坊上搭建項目的開發者或者只是用戶,一定要了解公鑰和私鑰的區別,這很重要。誤用(或者 “放錯”)公私鑰可能造成嚴重的資金後果,並且,這和忘記中心化網站上的密碼不同,應用開發者無法幫助用戶恢復密鑰。

隨著更多用戶創建加密錢包並在區塊鏈上交易,這種交易模式將會更為標準化。同時,注意學習曲線以及幫助向其他用戶解釋也尤為重要。

image

來源: How to Generate Public and Private Keys

助記詞 - 一組助記詞(通常是 12 到 24 個隨機的詞)是錢包在緊急情況下最終的錢包恢復工具。它需要像私鑰一樣被同等保護起來,因為丟失助記詞或者將它保存在會被發現的地方,就意味著錢包的一切都暴露了。

用戶一定要採取合適的方式保存助記詞,保證其安全性和機密性。

錢包應用的開發者無法訪問助記詞,所以,如果讀者丟失了自己的密鑰和助記詞,那麼你的錢包就不能再恢復。如果僅僅丟失了私鑰,那還可以用助記詞來恢復錢包。

托管錢包 - 這類錢包由托管方(任何負責管理錢包資金的中心化實體)負責管理,比如一個常規的 Coinbase 賬戶就是托管的。這些托管者負責管理錢包(因此,如果用戶使用了一個托管錢包,就不必保管自己私鑰)中的基本資產,為提供用戶更為中心化、更順暢的用戶體驗。

這種用戶體驗通常不包括加密原生的身份認證機制,例如,一位用戶可以使用 Google 郵箱地址和密碼登錄 Coinbase 的賬戶。

托管錢包是一種開啟加密之旅的好方式,同時也是兌換現金資產為加密貨幣的實用方法。另一方面,鑒於這些托管者都由中心化機構持有和管理,所以也帶來了去中心化旨在解決的一些問題,比如數據所有權、信息流控制以及潛在的監管要求。

加密界有句關於托管錢包流行語 ——“無鑰即無幣”。

即便是 Coinbase 的 CEO Brian Armstrong 曾經也提過非托管錢包的重要性,因為托管錢包的提供商會有受到政府監管的風險。對那些傾向於以一種完全去中心化的方式管理自己的資產和交易的用戶來說,非托管錢包是更好的選擇。

非托管錢包 - 這類錢包的管理者只是...... 你!軟件供應商(如 MetaMask, Argent 和 Rainbow 等)提供用戶訪問自己錢包的軟件,但主要的是,錢包資產存放在鏈上而不是錢包提供商那裡。

因此,如果 MetaMask 錢包發生了些什麼導致無法訪問,那麼用戶可以跳轉到 Rainbow 錢包,導入他們的錢包(不用得到 MetaMask 的允許)並通過 Rainbow 操作自己的資產。

還有一種非托管硬件錢包,它的私鑰直接保存在物理設備中(通常是看起來像 USB 的小金屬物件)。

非托管錢包的使用伴隨著管理公鑰、私鑰和助記詞的負擔,但這種錢包給予用戶以自治權(直接持有資產)和訪問以太坊世界的唯一身份。

以太坊應用允許用戶 “使用以太坊登錄”(Sign in with Ethereum, SIWE),即 “使用自己的非托管錢包登錄”。由此,非托管錢包代表了用戶的身份,這些錢包擴展了加密界的設計空間,比如關於身份、憑證和所有權的新思維方式。

社會恢復錢包 - 這是由一些非托管錢包提供商支持的一種錢包恢復策略。

這種錢包不需要助記詞(有用戶丟失過助記詞),用戶可以委任其社交網絡中的其他人,驗證錢包是否是否對應於它應該對應的人。通過社交恢復錢包,用戶可以基於其社交圈的信任網絡作為其非托管錢包的後盾,同時仍然保留非托管錢包的自我托管 / 去中心化 / 單點登錄的優勢。

Argent 是社會恢復錢包的一個用例。

側欄 - 用戶如何注意錢包的使用安全?

我不打算在這一欄目用圖表,因把全部有關錢包安全的必要信息放進單個圖表並不現實。在加密界中,錢包的安全性至關重要,值得我們耗費一些時間探索資金管理的最佳操作。

@Punk6529 發布了一篇很棒的推特長文,涵蓋了安全使用錢包需要注意的所有信息。

Vitalik 就此寫過大幅的篇章論述社會社交恢復錢包的重要性(點擊此處閱讀中文版)。而這裡是來自硬件錢包供應商 Ledger 關於錢包安全的更多信息。

這裡是 @Punk6529 長推文中的一些亮點,不過我強烈建議讀者自行上推特閱讀這篇推文:

“與公鑰不同,永遠不要將私鑰透露給任何人。如果有人獲取了你的私鑰,那就玩完了。”

“地址 / 公鑰:你的郵箱地址(可以共享)

私鑰:收件箱的密碼(永不共享)

錢包:保存私鑰

助記詞:私鑰恢復系統(永不共享)

密碼 (可選項):創建新錢包的額外密碼(永不丟失)

安全性和彈性是相悖的目標:將私鑰打印在宣傳單的行為極具彈性,但你的 NFT 將會不翼而飛 (私鑰泄露了)。你可以通過摧毀私鑰的方式輕鬆解決安全性問題,而後果是,你本人也無法訪問自己的 NFT 。平衡安全性和彈性這兩個目標是門藝術。

以太坊域名服務(ENS)- 以太坊域名服務是為以太坊區塊鏈而生的開源域名系統,某種程度上類似於傳統網站的域名提供商。

ENS 將以太坊上的地址映射為人類可讀的名字,因此我才能使用譬如 “brunny.eth” 作為我的地址,而不是這一長串的公鑰:0xF67cAEbBbE7b630d137d2901637C02899ED3211b。

讀者可以在自己的加密錢包(托管的或者非托管的)裡直接嘗試一下:創建一筆發送少量 ETH 的小額交易,不要用我的公鑰,而是把 “brunny.eth” 作為接受者。這個服務會匹配 “ brunny.eth ” 和對應的錢包地址。

總的來說,作為公共物品,ENS 域名對以太坊生態系統中的身份而言十分重要,因而它們值得有自己版本的域名系統。

去中心化自治組織(DAOs)- DAO 是加密原生的組織形式。它可以是基於加密原生規則進行自我管理與組織的公司、非營利機構、社會團體或是其他任何類型的組織。

這裡的加密原生規則是指類似於社區所有權、透明性和去中心化等概念,而值得注意的是,去中心化有一個光譜,而不是非開即關的兩種極端。

不似傳統公司在實體創建和領導組織架構方面的中心化持有和管理,DAO 則為無中心實體下決策的加密原生項目和商業的經營而設計架構,並致力於爭取項目的社區所有權。

許多 DAO 的另一個願景是完全去中心化和民主化的實現。也就是,DAO 的各種決策由主要參與者以民主的方式票選得出。

DAO 不僅能針對鏈上的應用級別產品的變動進行投票,還能發揮獎勵和激勵系統參與者的作用。

一部分 DAO 確實十分接近自治的程度,某種意義上,自動執行的智能合約代碼運行著 DAO 的許多函數。

這方面的一個例子就是 DeFi 中的 DAO,這種 DAO 的核心價值定位是,對於 DeFi 中服務於某些目的智能合約的去中心化維護。大多數 DAO 向著去中心化的方向逐步發展,這其中的大部分更類似於與銀行賬戶的多人聊天,而不是真正意義上的自治化組織。

DAO 實際上是各種事物的社會副產品,包括無需許可區塊鏈、非托管錢包、身份認證工具(如 ENS 等)以及生態參與者的共享意願。

DAO 值得用專門的一部分展開描述(甚至是用整篇指南!),但我個人觀點是,大家在加密界中參加的 DAO 正是重新定義數字原生身份的關鍵,所以在本章節中與 “身份” 一起談 DAO 最說得通。

  1. 1. 狹義 DAC

前面所述的 DAC 是一個較為寬泛的概念。但是作為一個嚴格意義上的 DAC 首先需要完全意義的去中心化。這體現在不依賴於中心化的伺服器,不依賴於中心化的中央領導機構,甚至不依賴於中心化的域名。

對於狹義 DAC,首先整套系統以及行為準則必須是徹底公開透明的,如果他是以軟件或者網絡系統的形式出現,那麼必須是徹底開放源代碼的。每一個參與的節點都有權利了解系統運行的每一個細節、每一行代碼。

其次,起着中心化作用的伺服器必須將其計算和儲存功能去中心化,通過分佈式的方案,將計算能力和儲存能力通過公平和開放的原則,部署在每一個參與系統的節點當中。每一個節點都可以參與到整個系統的計算和儲存運算當中,根據自身所擁有的能力來提供服務,而整個系統會根據節點貢獻能力的大小提供相應的回饋。這種回饋很可能是一種系統股份的獎勵。根據系統,通常將這種節點為系統提供服務的行為稱為挖礦(Mining),而將提供挖礦行為的節點稱為礦工(Miner)。

  1. 1. 狹義 DAC

前面所述的 DAC 是一個較為寬泛的概念。但是作為一個嚴格意義上的 DAC 首先需要完全意義的去中心化。這體現在不依賴於中心化的伺服器,不依賴於中心化的中央領導機構,甚至不依賴於中心化的域名。

對於狹義 DAC,首先整套系統以及行為準則必須是徹底公開透明的,如果他是以軟件或者網絡系統的形式出現,那麼必須是徹底開放源代碼的。每一個參與的節點都有權利了解系統運行的每一個細節、每一行代碼。

其次,起着中心化作用的伺服器必須將其計算和儲存功能去中心化,通過分佈式的方案,將計算能力和儲存能力通過公平和開放的原則,部署在每一個參與系統的節點當中。每一個節點都可以參與到整個系統的計算和儲存運算當中,根據自身所擁有的能力來提供服務,而整個系統會根據節點貢獻能力的大小提供相應的回饋。這種回饋很可能是一種系統股份的獎勵。根據系統,通常將這種節點為系統提供服務的行為稱為挖礦(Mining),而將提供挖礦行為的節點稱為礦工(Miner)。

而作為整個系統的開發者和領導者,其在系統中所處的位置必須和系統中參與的其他人(節點)是平等的,並不具備任何的特權。無論是項目領導者還是開發者,他們和參與系統的其他人僅僅是分工不同,並且需要對社區內的質疑聲做出回應。而一旦有超過 51%(這一比例並非固定,可根據 DAC 的最初條款進行修改)的節點反對其行為,則可以將其罷免並推舉新的領導人。而其餘的人必須遵守這些決定,或者自主離開 DAC。理論上如果 DAC 出現巨大的對抗,而雙方意見無法調和,則可以分裂成兩個 DAC 獨立發展。

對於嚴格意義上的 DAC,在整個系統中不應該存在任何中心化的重要事物,如域名、版權等任何公司資產。即這些東西不能屬於系統的某個人或者某一些人,如果有,則必須將其去中心化。如果不能將其去中心化,則必須舍棄。

也許有些人覺得狹義的 DAC 有些苛刻,但是如果不能夠做到徹底去中心化,就不能把整個環節中的人為因素降到最低。類似 Bitcoin、BitShares 都是符合狹義 DAC 的概念。

  1. 1. 廣義 DAC

從大的範圍來看,有很多傳統中心化的組織或者系統也有機會改造成 DAC,或者某些組織系統因為部分原因不能徹底做到完全去中心化,但是仍舊不妨礙它們成為一個 DAC。比如有些網站,因為域名本身就是一個中心化的事物,到目前為止,在客觀上我們還不能將所有的域名都去中心化,但是在保留部分中心化的資產的前提下還是可以成為一個廣義上的 DAC。

但是即使作為廣義上的 DAC,最基本的原則仍舊是系統內所有的行為準則公開,還有節點內的民主與公平。這些規則將包括整個系統的目標、運營機制、利益分配機制、節點服務(挖礦)機制和投票機制。毫無疑問,系統中一切規則和準則的公開透明必須是所有 DAC 的底線,而且所有的細節必須是明確且可以量化,含糊不清或者無法量化的細則對於系統是毫無幫助的。

節點中的民主和公平也是 DAC 不可以突破的底線。在廣義 DAC 中,這個民主和公平是相對而言的。由於一些無法改變的客觀原因,可以允許一定程度的資產和權利不平等,如某個伺服器和域名歸屬於系統中的某個人,但是這個不平等程度必須在系統可控範圍內。如果系統中參與的某一個人(節點)或者某一群人(節點)相對於其他人(節點)有著更多不可轉讓的權利,這個系統將不能稱為 DAC。這個不可轉讓是指在系統通過全體一致投票後,即使獲得超過 51% 的投票數但仍舊有無法罷免的權利和資產的情況出現,這個組織將無法被認為是一個 DAC。

  1. 1. 小結

從以上的定義可以看出,廣義 DAC 和狹義 DAC 主要是在民主和公平之間出於客觀條件做出了一些讓步。但是筆者認為,廣義 DAC 是目前組織和系統在向狹義 DAC 轉變過程中的過渡階段,我們應該相信嚴格意義上的 DAC 才是今後我們追逐的目標。

(三)DAC 定律

科幻小說中阿西莫夫的機器人三定律非常著名。同樣,對於和機器人機制十分相似的 DAC,參與定義 DAC 的 Stan Larimer 給我們的 DAC 也準備了三定律。

第一定律

一個 DAC 必須遵循自己發布的商業規則。

第二定律

除非違背第一定律,一個 DAC 只能在股東同意的時候改變規則。

第三定律

在不違背第一和第二定律的前提下,DAC 必須保護自己。

在具體實踐 DAC 時,這三個定律應該被認真地放入 DAC 的系統準則中,並且能夠讓所有股東檢驗這三條定律是否得到了嚴格的制定。通過這三條定律,將可以監控系統中股東權益的保護以及其他的規則如何被更改,但它們自己永遠不可以自主更改這些規則。

第一定律:誠信機制

靠多個 DAC 節點對每一個 DAC 節點的行為進行互相審查,來確保所有的規則能夠被強制實施。而單個節點的無賴行為則會被集體簡單封鎖。即使是系統的製造者不遵守規則也是無效的,而有敵意的高壓控制將會是無效的。

第二定律:不可侵蝕機制

能夠確保在沒有多數股東同意的情況下,對任何 DAC 規則(源代碼)的更改都是不被執行的,沒有集體一半以上的投票來同意採納,對極少數節點的侵蝕也是不會成功的。

第三定律:自我保護

能夠讓整個系統採取更多的手段,以抵擋對 DAC 生存造成任何威脅的能力。前兩個定律已經降低了引入壞的節點的可能。一個公開的系統或者是開源軟件,能夠通過上述手段來極大地防止因為引入不良節點而造成整個系統崩潰的可能。

然而一個更嚴重的危險是,對那些必須暴露於所有險惡環境的 DAC,以及那些不斷受到嚴格監管的 DAC 開發者和系統內的人员及節點,有可能被採用很多方式,如關閉網站,通過法律加強監管,發布禁令,甚至是更加黑暗的方法監管和束縛,而這對於 DAC 來說往往可能會受到致命的傷害。如果要作為一個能夠被信任的實體存在,DAC 最好的辦法就是通過節點服務走向國際自治。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。