您的位置:首頁>科技>正文

開墾區塊鏈,不能沒有的模型

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是區塊鏈的原生模型,比特幣含著它出生,但區塊鏈要長大,就不能沒有帳戶餘額模型,因為它可以更快翻出更多姿勢。

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

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

當向王峰解釋為什麼會賣幣時,他說:

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

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

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

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

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

作者:湯強

這也是為什麼人們把乙太坊稱為“狀態機”的原因。

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

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

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

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

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

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

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

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

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

這種設計有什麼好處呢?

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

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

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

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

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

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

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

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

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

結語

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

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

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

當向王峰解釋為什麼會賣幣時,他說:

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

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

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

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

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

作者:湯強

Next Article
喜欢就按个赞吧!!!
点击关闭提示