3 月 5 日,藍港互動創始人王峯問比特幣首富:傳言你有 6 位數比特幣,真的麼?李笑來答:曾經有過,現在沒那麼多。

聽到首富光環叮噹落地的聲音,多少會讓你停頓半秒,雖說去年我們就知道《李笑來的比特幣賬戶並沒有餘額》,但那只是爲理解 UTXO 模型、把銀行的餘額模型抽出來寫的對比文章。

其實,區塊鏈世界也有餘額模型,又稱賬戶模型或賬戶餘額模型。

一、什麼是賬戶餘額模型?

如果 UTXO 是掰不開的硬幣,那賬戶餘額模型就是撕不掉的存摺,存摺上印着你在區塊鏈上擁有的一切。

我們用以太坊舉例,下文特別感謝 Draveness 的智力支持,很難找出比他《UTXO 與賬戶模型》更簡明的文章,不愧是寫了三年博客的編程大神。

以太坊外觀複雜,但掀開蓋子往裏一看,其實只有三塊鋼板:賬戶、交易和區塊。

圖 1 以太坊賬戶模型

賬戶就是存摺,記着你的餘額;

交易就是匯款單,你負責填單簽名輸密碼;

區塊就是銀行,櫃員把交易錄入系統,相當於礦工把交易刻進區塊,都能改變賬戶信息。

以上就是賬戶餘額模式的基本邏輯,這與 UTXO 模型有很大不同。

UTXO 模型中,每筆輸入都是前一筆交易的未花費輸出,環環相扣,不會出現重複交易。

而賬戶模型則與之不同,每次賬戶變動就像塗一層修正液,只能看到最新結果,一旦重複記賬就會次次都錯,那如何防範這種隱患?

以太坊的做法是:在賬戶裏增加一個標籤,交易後標籤數字+1,每次交易前檢查標籤有無重號,一旦重號則取消交易。

這個標籤的名字叫 nonce,看起來和比特幣工作量證明中找的隨機數(nonce)一樣,但以太坊中 nonce 意指“序號”,有了它你就能安心付款。

可是,賬戶中最重要的不是序號,而是餘額。交易的本質是改變雙方餘額。礦工一旦挖到交易信息,就會記入區塊,從而改寫賬戶信息。

圖 2 以太坊賬戶基本結構

序號和餘額構成賬戶最基本的結構,以太坊賬戶的特別之處在於:它有兩種類型。

二、以太坊賬戶類型和內部結構

一種是外部賬戶,它和比特幣地址的功能相同,靠私鑰撬動餘額,如圖 2。

另一種是合約賬戶。每次收到消息時,賬戶中的合約代碼會智能地跑起來,這就是以太坊“智能合約”的來歷。

合約賬戶的基本元素就如下圖:

圖 3 以太坊合約賬戶基本元素

序號能防重複交易,餘額表示當前權益,合約代碼能夠響應特定請求,比如你可以教你男友設置:今年生日發你 1 個以太幣,以後每年增加 1 倍。

另外,每個賬戶還配備存儲空間,內部存有合約代碼和其他數據的哈希值,技術上能防篡改。這就構成合約賬戶的基本框架。

以太坊最著名的合約賬戶當屬 ERC20,ERC 指以太坊認證請求(Ethereum Request for Comment),20 是賬戶編號。ERC20 是發行 Token 的合約,轉 Token 給別人只需調用該合約。

所以你看,發行 Token 很簡單,只需在以太坊上開個賬戶,這和你去銀行櫃面開張卡沒什麼區別,YouTube 上有很多手把手教程,練順手之後,發一種幣就像發一圈牌一樣簡單。

在以太坊上開好戶,然後用這個賬戶發出的 Token 換別人手上的 BTC 或 ETH,這是大多數 ICO 在技術上的實現方式。

ERC20 最大的功能是讓所有人都能當億萬富翁,很簡單:發行 1 萬億個以你名字命名的幣,讓你朋友花 1 塊錢買一個玩玩,這樣你的幣就有了 1 元的市場價格,於是一轉身你就身價萬億。

在技術上,這都得歸功於以太坊的賬戶模式。

此模式中,序號、餘額、合約代碼和存儲信息等,都稱爲狀態。狀態相當於忽明忽暗、五顏六色的燈,整個以太坊就是蓋在我們頭頂上的不停閃爍的霓彩。這也是爲什麼人們把以太坊稱爲“狀態機”的原因。

賬戶模型能高效切換狀態,這爲區塊鏈應用撒出更多可能,比如每個賬戶都既能用智能合約向其他賬戶發消息,又能設定收到消息後如何應對,於是只要把規則寫進代碼,不需要運營人員,僅憑代碼就能幹活。

效率方面,賬戶模型完勝 UTXO,比如當我們計算某個地址的餘額時,賬戶模式會秒出結果,而 UTXO 模型會遍歷網絡中全部的區塊,再加總得出餘額,但 UTXO 並不在乎慢,因爲它堅守的是寫入的數據不可更改。

安全方面,UTXO 模型被公認領先,所以很多人認爲 UTXO 和私鑰的搭配更能保護財富,因爲私鑰代表對財富的擁有權,而 UTXO 又能確保賬戶系統安全,這種觀點看起來很正確,但卻隱藏着一個前提:使用者已經過培訓,而且使用和保管私鑰過程中能處處小心。

保管難度還在其次,最重要的是,私鑰一旦丟失或泄露,用戶將失去所有財富,此時 UTXO 的穩固就會沒有意義。

這是加密數字貨幣普及過程中遇到的首要難題,包括比特幣在內的很多數字貨幣至今束手無策,但這裏有一種新的解題思路,它來自 6 月即將上線、同樣使用賬戶模型的 EOS。

三、讓財富真正屬於普通用戶

EOS 設計者認爲:私鑰對普通用戶並不代表真正的所有權,因爲稍不留心就會丟失財富,這不符合價值保有的本意。

設計系統時,應該分清對財富的控制能力和擁有權利之間的區別。真正的財富應該像本領,即使暫時被別人拿到,但依然屬於你。

所以,EOS 沒有把人的身份綁定在光禿禿的私鑰上,而是標註於一個賬戶,這個賬戶對應一個密碼。

這種設計有什麼好處呢?

最大的好處是普通用戶的財富得到極大的保障,一旦密碼泄露造成財產損失,普通用戶可以多一項選擇:在預設時間內取消交易

比如,你可以預設轉賬 1 萬個幣以上需要 1 小時後才確認,所以一旦有人通過密碼盜取你的財富,你會收到通知,1 小時內,你能通過預設的社交關係人取消交易。

社交關係人可以是默認的身份開設機構,也可以是你指定的親戚朋友。於是,普通用戶突然具備一種能力:在預設時間內,簽署消息指明一筆交易無效,而這種能力的存在本身也能壓制惡意。

這就是 EOS 給我們守護財富的新思路。

當然,回到財富保有的初衷,EOS 的賬戶模式保障了普通用戶擁有財富的權利,但也意味着放棄了專業用戶對財富絕對控制的能力,這部分用戶必然會選擇留在 UTXO+私鑰的世界。

之所以兩種模型會分家,根源還是來自我們熟悉的不可能三角:分佈式、安全和高效三者不可兼得,最多取二。

圖 4 不可能三角和兩種模型的站位

既然都選分佈式,就只能在安全和高效間權衡。比特幣要做的是電子現金系統,安全穩健至上,於是抱着 UTXO 站在圖 4 左邊;而以太坊和 EOS 都希望做成智能合約平臺,追求高效靈活,所以靠右選擇賬戶模型。

賬戶模型的確高效,但必然付出安穩的代價,可這又有什麼辦法呢,爲了開墾區塊鏈的新邊疆,總得先付出些什麼。

結語

UTXO 是區塊鏈的原生模型,比特幣含着它出生,但區塊鏈要長大,就不能沒有賬戶餘額模型,因爲它可以更快翻出更多姿勢。

總之,每個區塊鏈系統最終都面臨兩種模式間的權衡,但目的只有一個:用更低的代價博取更高的收益。

接受王峯採訪前,李笑來說過很多遍:“很少有東西能夠跑贏比特幣,最好的姿勢是持幣睡覺。”但他最後卻賣了幣。

當向王峯解釋爲什麼會賣幣時,他說:

開交易所時,銀行賬戶總被凍結,因爲要保證擠兌時儲備充足,不得不在熊市賣出一些,等幾個月之後凍結,再也買不回那麼多。

是他當初沒有選擇抱幣安逸不得已的結果,即使明知如此,卻依然選擇下地幹活,因爲他的原則是不斷成長,成長才能給他歡樂。

那些賣掉的比特幣是他的尋歡成本,而正是這些成本讓他在成長的跑道上一路狂奔。

一個人之所以值錢,不是他賬戶餘額有錢,而是因爲他的原則值錢。

如果這類創業者最終能墾出一片天地,一定不是因爲姿勢對或者運氣好,真正的原因是:在所有人都看不見光的夜裏,依然肯付代價。

來源鏈接:None