Tezos — 自我進(jìn)化的加密賬本
白皮書(shū)
L.M Goodman
2014 年 9 月 2 日
“我們的論點(diǎn)并不是簡(jiǎn)單的循環(huán)
邏輯旦签,其背后有著獨(dú)到之處养匈∠峋”
— Willard van Orman Quine
摘要
本白皮書(shū)向您介紹 Tezos, 一個(gè)通用的且能夠自我進(jìn)化的加密數(shù)字賬本剑肯。
Tezos 的最大優(yōu)勢(shì)是可以吸收任何一種基于區(qū)塊鏈的賬本好的方面莲绰,其將常
規(guī)區(qū)塊鏈上的各種操作以單純的功能模塊的方式實(shí)現(xiàn)欺旧。通過(guò)網(wǎng)絡(luò)殼(Shell)
利用這些操作處理網(wǎng)絡(luò)層任務(wù)。比特幣蛤签,以太坊辞友,Cryptonote 等等都可以
在 Tezos 內(nèi)通過(guò)網(wǎng)絡(luò)層接口實(shí)現(xiàn),進(jìn)而被表征震肮。
更重要的是称龙,Tezos 支持元數(shù)據(jù)升級(jí):即可以通過(guò)自我修正代碼進(jìn)化協(xié)
議。為此戳晌,Tezos 從一個(gè)種子協(xié)議開(kāi)始定義一整套流程來(lái)讓持幣的用戶來(lái)
對(duì)代碼進(jìn)行修正鲫尊,以及修正這套流程所必須的投票體系本身。這和哲學(xué)家
Peter Suber 的 Nomic[3] 博弈觀點(diǎn)不謀而和沦偎,該觀點(diǎn)的博弈構(gòu)建主要圍繞
一整套內(nèi)省規(guī)則疫向。
除此之外咳蔚,Tezos 的種子協(xié)議被放在一個(gè)純粹的股權(quán)證明系統(tǒng)(POS)上,
支持圖靈完備的智能合約搔驼。Tezos 通過(guò) OCaml 語(yǔ)言進(jìn)行實(shí)現(xiàn)贩汉,該語(yǔ)言是一
套功能強(qiáng)大的函數(shù)式編程語(yǔ)言覆获,提供高速干跛,非歧義語(yǔ)義和語(yǔ)法以及整個(gè)生態(tài)
系統(tǒng)库车。所有的這一切讓 Tezos 成為一個(gè)形式化正確性證明的很好的候選者歹嘹。
以下的白皮書(shū)要求讀者要對(duì)比特幣協(xié)議的一定程度的了解和并理解基本
的加密學(xué)知識(shí)僚饭。
1
目錄
1 簡(jiǎn)介 4
2 自動(dòng)進(jìn)化的加密數(shù)字賬本 4
2.1 數(shù)學(xué)表達(dá) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 網(wǎng)絡(luò) Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1 時(shí)鐘 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2 鏈選擇算法 . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 網(wǎng)絡(luò)層防御 . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 功能表述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 驗(yàn)證鏈 . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.2 協(xié)議進(jìn)化 . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.3 RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 種子協(xié)議 9
3.1 經(jīng)濟(jì) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 幣量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.2 挖礦和簽名獎(jiǎng)勵(lì) . . . . . . . . . . . . . . . . . . . . . . 9
3.1.3 丟失的幣 . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.4 修改規(guī)則 . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 股權(quán)證明機(jī)制 . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 概覽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 時(shí)鐘 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3 隨機(jī)種子生成 . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.4 Follow-the-coin 過(guò)程 . . . . . . . . . . . . . . . . . . . 13
3.2.5 挖礦 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.6 區(qū)塊簽名 . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.7 鏈的權(quán)重 . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.8 公開(kāi)譴責(zé)機(jī)制 . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 智能合約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 合約類型 . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2 起源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.3 交易 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2
3.3.4 存儲(chǔ)費(fèi)用 . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.5 代碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.6 交易費(fèi) . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 總結(jié) 18
3
1 簡(jiǎn)介
在白皮書(shū)的第一部分泳挥,我們將討論抽象區(qū)塊鏈的概念以及自動(dòng)修正的
加密賬本的實(shí)現(xiàn)琅关。在第二部分啦租,我們將具體展開(kāi)描述我們提出的種子協(xié)議哗伯。
2 自動(dòng)進(jìn)化的加密數(shù)字賬本
一個(gè)區(qū)塊鏈協(xié)議包含三層不同的協(xié)議:
- 網(wǎng)絡(luò)協(xié)議,發(fā)現(xiàn)并廣播交易篷角。
- 交易協(xié)議焊刹,定義有效交易。
- 共識(shí)協(xié)議恳蹲,形成針對(duì)唯一鏈的共識(shí)虐块。
Tezos 實(shí)現(xiàn)了一個(gè)一般性的 Shell。該 Shell 是對(duì)交易協(xié)議和共識(shí)協(xié)議是
透明的嘉蕾。我們把交易協(xié)議和共識(shí)協(xié)議統(tǒng)稱為區(qū)塊鏈協(xié)議贺奠。我們將首先給區(qū)塊
鏈一個(gè)數(shù)學(xué)描述,再描述 Tezos 中區(qū)塊鏈的實(shí)現(xiàn)選擇错忱。
2.1 數(shù)學(xué)表達(dá)
一個(gè)區(qū)塊鏈的協(xié)議本質(zhì)上是一個(gè)全局狀態(tài)并發(fā)突變的單子 (monadic)
的實(shí)現(xiàn)儡率,以區(qū)塊為單位操作全局狀態(tài)。區(qū)塊的自由類群 (free monid) 從創(chuàng)始
狀態(tài)開(kāi)始形成一個(gè)樹(shù)狀結(jié)構(gòu)以清。一個(gè)全局標(biāo)準(zhǔn)狀態(tài)就是這個(gè)樹(shù)的滿足一定順
序的最小葉儿普。
以下是其抽象的表達(dá):
- 定義 (S, ≤) 為一個(gè)完全排序的,可以被計(jì)數(shù)的掷倔,可能狀態(tài)的子集眉孩。
- 定義 ? ∈/ S 為一個(gè)特殊的無(wú)效的狀態(tài)
- 定義 B ? S
S∪{?} 為區(qū)塊集合。這個(gè)有效的區(qū)塊集合是 B ∩ S
S
.
在 S 之上的順序被延續(xù)勒葱,所以這里 ?s ∈ S, ? < s勺像。這個(gè)順序決定哪個(gè)
葉在區(qū)塊樹(shù)上將被認(rèn)可。B 中的區(qū)塊可以看做是在這個(gè)狀態(tài)上的操作错森。
總而言之吟宦,任何一個(gè)區(qū)塊鏈協(xié)議1,不論是比特幣涩维,萊特幣殃姓,點(diǎn)點(diǎn)幣袁波,以
太坊,還是 Cryptonote蜗侈,等等篷牌,都可以用以下元組來(lái)決定:
(
S, ≤, ?, B ? S
S∪{?})
1GHOST 是一種可以基于樹(shù)特性對(duì)葉子進(jìn)行排序的方法。然而踏幻,這樣的方式在理論和實(shí)踐上都存在問(wèn)
題枷颊。與之相比,在主鏈添加挖礦證明幾乎總是更好的解決方案该面。
4
這些區(qū)塊鏈的網(wǎng)絡(luò)層協(xié)議基本相同夭苗。其挖礦算法卻發(fā)展迅速,激勵(lì)著區(qū)
塊的創(chuàng)建隔缀。
在 Tezos 中题造,我們?cè)O(shè)計(jì)能夠自省的區(qū)塊鏈協(xié)議,讓區(qū)塊在協(xié)議層上運(yùn)
作猾瘸。這樣我們就能夠遞歸地表示這組協(xié)議:
P =
{(S, ≤, ?, B ? S
(S×P)∪{?})}
2.2 網(wǎng)絡(luò) Shell
僅有一個(gè)形式的數(shù)學(xué)表述并不足以讓我們立刻建立一個(gè)區(qū)塊樹(shù)界赔。我們
還需要一個(gè)連接 Gossip 網(wǎng)絡(luò)和協(xié)議的網(wǎng)絡(luò) Shell。
這個(gè)網(wǎng)絡(luò) Shell 通過(guò)維護(hù)客戶端所知的最優(yōu)鏈進(jìn)而運(yùn)作牵触。它將從三種對(duì)
象那里接受信息淮悼。前兩個(gè)分別是交易和區(qū)塊,確認(rèn)有效后廣播揽思。第三個(gè)是協(xié)
議敛惊,即用來(lái)修改現(xiàn)有協(xié)議的 OCaml 模塊,對(duì)此我們稍后再進(jìn)行詳細(xì)描述绰更。
現(xiàn)在我們主要關(guān)注交易和區(qū)塊瞧挤。
網(wǎng)絡(luò) Shell 最艱巨的部分是保護(hù)節(jié)點(diǎn)免于遭受 DOS 攻擊。
2.2.1 時(shí)鐘
每個(gè)區(qū)塊都有時(shí)間戳儡湾,這個(gè)時(shí)間戳只對(duì)網(wǎng)絡(luò)外殼可視特恬。如果一個(gè)區(qū)塊是
當(dāng)前的,并且其時(shí)間戳在系統(tǒng)時(shí)間的幾分鐘之內(nèi)徐钠,則該區(qū)塊會(huì)被緩沖癌刽,否則
將會(huì)被拒絕。這個(gè)協(xié)議設(shè)計(jì)必須能夠容忍合理的時(shí)鐘漂移尝丐,而且必須假設(shè)時(shí)
間戳可能會(huì)被偽造显拜。
2.2.2 鏈選擇算法
該 Shell 維護(hù)一條單一的鏈,而不是一個(gè)完整的區(qū)塊樹(shù)爹袁。這個(gè)鏈只有在
客戶端獲悉嚴(yán)格意義上的更優(yōu)鏈時(shí)才會(huì)被覆蓋远荠。
從網(wǎng)絡(luò)通信的角度,維護(hù)一個(gè)區(qū)塊樹(shù)會(huì)更加節(jié)省資源失息,但也會(huì)讓網(wǎng)絡(luò)更
加容易被 DDOS 攻擊譬淳,尤其是當(dāng)一個(gè)攻擊者產(chǎn)生大量的低得分但有效分叉
的時(shí)候档址。
但仍然存在一種可能,一個(gè)節(jié)點(diǎn)謊報(bào)了鏈的得分邻梆,客戶端可能會(huì)在處理
大量的區(qū)塊守伸,發(fā)現(xiàn)和揭露該信息謊報(bào),。隨后這個(gè)欺騙節(jié)點(diǎn)將被忽略浦妄。
幸運(yùn)的是尼摹,對(duì)于協(xié)議而言,低得分的鏈創(chuàng)建區(qū)塊的等級(jí)越低剂娄。因此蠢涝,客
戶端可能只需要查看一個(gè)弱分叉的幾個(gè)區(qū)塊,就可以判斷它是不是某鏈的
得分是不是欺騙宜咒。
5
2.2.3 網(wǎng)絡(luò)層防御
此外惠赫,Shell 還具備防御性把鉴。它嘗試連接不同 IP 端的對(duì)等節(jié)點(diǎn)故黑,發(fā)現(xiàn)掉
線的節(jié)點(diǎn)以及禁止惡意節(jié)點(diǎn)。
為防御某些 DOS 攻擊庭砍,協(xié)議可提供 Shell 依賴區(qū)塊大小和交易限制的
環(huán)境场晶。
2.3 功能表述
2.3.1 驗(yàn)證鏈
我們可以通過(guò)以下的 OCaml 類型有效捕捉幾乎所有的抽象區(qū)塊鏈結(jié)構(gòu)
的繼承類。從定義區(qū)塊頭開(kāi)始:
type raw_block_header = {
pred : Block_hash . t ;
header : Bytes . t ;
operations : Operation_hash . t l i s t ;
timestamp : f l o a t ;
}
我們故意沒(méi)有把區(qū)塊頭域強(qiáng)制類型化怠缸,以致于其能夠表征任意內(nèi)容诗轻。但
我們有必要明確類型化 Shell 的相關(guān)操作。這些包括前區(qū)塊的哈希揭北,一個(gè)操
作哈希的列表以及時(shí)間戳扳炬。在實(shí)踐中,包含在一個(gè)區(qū)塊內(nèi)部的操作和區(qū)塊一
起在網(wǎng)絡(luò)層上傳播搔体。操作本身可表征為任意的 blobs 結(jié)構(gòu).
type raw_operation = Bytes . t
Context 模塊封裝了一個(gè)基于磁盤的不可變化的鍵值對(duì)存儲(chǔ)恨樟,在其幫
助下表征狀態(tài)。鍵值對(duì)結(jié)構(gòu)十分通用疚俱,允許我們有效且廣泛表征許多種狀
態(tài)劝术。
module Context = sig
type t
type key = string l i s t
val get : t -> key -> Bytes . t option Lwt . t
val set : t -> key -> Bytes . t -> t Lwt . t
val del : t -> key -> t Lwt . t
(* . . . *)
end
為避免磁盤操作的阻塞,函數(shù)使用異步單子 Lwt[4]呆奕。注意养晋,這個(gè)操作
在上下文中是純函數(shù)式的:當(dāng) set 和 del 都返回一個(gè)新 Context 對(duì)象時(shí),
6
get 操作使用 option 單子而非拋出異常梁钾。Context 對(duì)象模塊將內(nèi)存緩存
和磁盤存儲(chǔ)結(jié)合有效提供不可變化的存儲(chǔ)環(huán)境绳泉。
現(xiàn)在我們能夠定義任意區(qū)塊鏈協(xié)議的模塊類型:
type score = Bytes . t l i s t
module type PROTOCOL = sig
type operation
val parse_block_header : raw_block_header -> block_header option
val parse_operation : Bytes . t -> operation option
val apply :
Context . t ->
block_header option ->
( Operation_hash . t * operation ) l i s t ->
Context . t option Lwt . t
val score : Context . t -> score Lwt . t
(* . . . *)
end
不是和數(shù)學(xué)模型做狀態(tài)比對(duì),相反姆泻,我們利用 score 函數(shù)將 Context
對(duì)象映射到一個(gè)字節(jié)列表圈纺。字節(jié)列表首先按長(zhǎng)度排列秦忿,其次依照字母順序。
類似于軟件的版本化蛾娶,這是一個(gè)相當(dāng)通用的結(jié)構(gòu)灯谣,在表示不同排序時(shí)有著廣
泛應(yīng)用。
為什么不在協(xié)議模塊中定義比較函數(shù)蛔琅?首先表征一個(gè)完全排序函數(shù)的
需求很難執(zhí)行胎许。這經(jīng)常可以從得分映射上得到驗(yàn)證(在上一個(gè)區(qū)塊哈希的基
礎(chǔ)上破壞連接)罗售。其次辜窑,原則上我們需要有對(duì)比不同協(xié)議狀態(tài)的能力。具體
的協(xié)議修改規(guī)則可能讓這個(gè)發(fā)生的可能性變得非常低寨躁,但是網(wǎng)絡(luò) Shell 對(duì)此
并不知曉穆碎。
在決定中繼操作或者添加區(qū)塊至本地區(qū)塊樹(shù)狀數(shù)據(jù)庫(kù)之前,parse_block_header
和 parse_operation 操作將暴露給網(wǎng)絡(luò) Shell职恳,并允許其將完全類型化的
操作和區(qū)塊送至協(xié)議層所禀,還要檢測(cè)這些操作和區(qū)塊是否經(jīng)過(guò)嚴(yán)格封裝。
協(xié)議的核心是 apply 函數(shù):
- 當(dāng)傳一個(gè)區(qū)塊頭部以及附屬的操作列表時(shí)放钦,它會(huì)計(jì)算上下文中做出的
變化色徘,返回一個(gè)修改過(guò)的副本。在內(nèi)部操禀,只有變化才會(huì)保存褂策,和版本
系統(tǒng)中一樣,類似版本處理一樣使用區(qū)塊的哈希颓屑。
- 當(dāng)只是傳操作列表時(shí)斤寂,它將貪心地試圖盡可能生效更多的操作。對(duì)于
協(xié)議自身而言該函數(shù)不是必須的揪惦,但對(duì)于試圖形成有效區(qū)塊的礦工來(lái)
7
說(shuō)卻有極大的用處遍搞。
2.3.2 協(xié)議進(jìn)化
Tezos 最強(qiáng)大的特性是它的協(xié)議自我修正能力,主要通過(guò)暴露給協(xié)議兩
個(gè)過(guò)程函數(shù)實(shí)現(xiàn):
- set_test_protocol 函數(shù)丹擎,使用新協(xié)議替代測(cè)試網(wǎng)絡(luò)中使用的協(xié)議
(通常是持幣者投票決定的協(xié)議)尾抑。
- promote_test_protocol 函數(shù),用當(dāng)前通過(guò)測(cè)試的協(xié)議替代目前正
在運(yùn)行的協(xié)議蒂培。
這些函數(shù)通過(guò)改變目前相關(guān)聯(lián)的協(xié)議來(lái)轉(zhuǎn)換 Context 對(duì)象再愈。當(dāng)下一個(gè)
區(qū)塊在鏈上產(chǎn)生,新的協(xié)議開(kāi)始生效护戳。
module Context = sig
type t
(* . . . *)
val set_test_protocol : t -> Protocol_hash . t Lwt . t
val promote_test_protocol : t -> Protocol_hash . t -> t Lwt . t
end
protocol_hash 函數(shù)是.ml 和.mli 文件 sha256 哈希的 tarball 打包翎冲。
這些文件在運(yùn)行中編譯,有獲取較少的標(biāo)準(zhǔn)函數(shù)庫(kù)權(quán)限媳荒,但被裝在沙箱內(nèi)抗悍,
可能無(wú)法調(diào)用系統(tǒng)函數(shù)驹饺。
這些函數(shù)通過(guò)協(xié)議的 apply 函數(shù)調(diào)用,返回新的 Context 對(duì)象缴渊。
很多條件可能會(huì)觸發(fā)協(xié)議的修改赏壹。在最初的簡(jiǎn)單版本上,持幣者可以通
過(guò)直接投票進(jìn)行協(xié)議修改, 而之后更復(fù)雜的協(xié)議可以通過(guò)逐步投票而獲得接
受衔沼。例如蝌借,當(dāng)一個(gè)持幣者希望一個(gè)修改案被通過(guò),他會(huì)被要求提供計(jì)算機(jī)可
以驗(yàn)證的證據(jù)來(lái)證明他的提案將會(huì)尊重協(xié)議的某些特性指蚁。這是對(duì)協(xié)議修改
合規(guī)性在算法上的有效檢測(cè)菩佑。
2.3.3 RPC
為了簡(jiǎn)易化圖形化工作,這個(gè)協(xié)議暴露了 JSONRPC 的 API凝化。該 API
自身可以被描述為一個(gè)代表各種過(guò)程類型的 json 模式稍坯。通常淶說(shuō),諸如
get_balance 的函數(shù)都可以通過(guò) RPC 來(lái)實(shí)現(xiàn)搓劫。
8
type service = {
name : string l i s t ;
input : json_schema option ;
output : json_schema option ;
implementation : Context . t -> json -> json option Lwt . t
}
這個(gè)名字是一個(gè)字符串列表瞧哟,其目的是允許過(guò)程中出現(xiàn)命名空間。輸入
和輸出是通過(guò)可選擇性使用 json 模式刻畫糟把。
注意這個(gè)指令被用來(lái)在一個(gè)指定的上下文中绢涡,而這個(gè)上下文通常是最
高得分葉子節(jié)點(diǎn)的最近一個(gè)祖先牲剃。例如遣疯,在最高得分葉子節(jié)點(diǎn)之上查詢上下
文 6 個(gè)區(qū)塊,將會(huì)顯示具有六個(gè)確認(rèn)的賬本狀態(tài)凿傅。
界面本身可以裁剪至特定的協(xié)議版本缠犀,或者是由 JSON 數(shù)據(jù)繼承而來(lái)。
3 種子協(xié)議
Much like blockchains start from a genesis hash, Tezos starts with a seed
protocol. This protocol can be amended to reflect virtually any blockchain
based algorithm. 更像是區(qū)塊鏈開(kāi)始于一個(gè)創(chuàng)世哈希聪舒,Tezos 開(kāi)始于一個(gè)種
子協(xié)議辨液。這個(gè)協(xié)議可以被修改來(lái)反映幾乎任何一個(gè)基于區(qū)塊鏈的算法。
3.1 經(jīng)濟(jì)
3.1.1 幣量
Tezos 一開(kāi)始就會(huì)有一百億個(gè)幣箱残,這些幣小數(shù)點(diǎn)后保留兩位滔迈。一個(gè)幣被
稱作 1tez,而最小的單位是分被辑。我們也建議使用 ? (\ua729, “Latin small
letter tz”) 拉丁字母來(lái)代表一個(gè) tez燎悍。這樣的話,一分等于 0.01tez盼理,等于百
分之一 tez谈山。
3.1.2 挖礦和簽名獎(jiǎng)勵(lì)
原則 我們認(rèn)為任何一個(gè)去中心化的貨幣要保證安全性都需要給予參與者
金錢上的獎(jiǎng)勵(lì)。正如在我們的定位白皮書(shū)中提到的宏怔,僅僅依賴于交易費(fèi)進(jìn)行
激勵(lì)會(huì)受到公共地悲劇影響奏路。在 Tezos 中畴椰,我們提供一個(gè)債券和現(xiàn)金獎(jiǎng)勵(lì)的
二元激勵(lì)體系。
9
債券是礦工所購(gòu)買的一年期的安全存款鸽粉。當(dāng)出現(xiàn)雙重簽名的情況下斜脂,這
些債券將會(huì)被收回。
一年以后触机,礦工除了債券以外還將獲得另外的獎(jiǎng)勵(lì)秽褒,作為他們機(jī)會(huì)成本
的補(bǔ)償。債券和獎(jiǎng)勵(lì)的價(jià)值是系統(tǒng)安全的最主要保證威兜,而它們的價(jià)值將僅占
全部?jī)r(jià)值的一小部分销斟。
債券的真正目的是減少獎(jiǎng)勵(lì)的總量,并利用人對(duì)損失的普遍抗拒心理
來(lái)提高網(wǎng)絡(luò)的安全椒舵。
細(xì)則 根據(jù)種子協(xié)議蚂踊,每挖一個(gè)塊將獲得 512Tezos 幣現(xiàn)金獎(jiǎng)勵(lì)以及需要
1536 幣的債券。而每個(gè)區(qū)塊簽名將獲得 32?T
?1 個(gè) tez 的獎(jiǎng)勵(lì)笔宿。這里 ?T
代表以分鐘為單位的區(qū)塊和先前區(qū)塊之間簽名的時(shí)間間隔犁钟。每個(gè)區(qū)塊至多
有 16 個(gè)簽名,但簽名不需要持有債券泼橘。
假設(shè)出塊率為每分鐘一個(gè)區(qū)塊涝动,那么有 8% 的最初貨幣供應(yīng)量在第一年
后應(yīng)該以安全債券的形式被持有。
我們的獎(jiǎng)勵(lì)的計(jì)劃被設(shè)定為 5.4% 的通貨膨脹率炬灭。這個(gè)名義上的通貨膨
脹應(yīng)該是中性的醋粟,它不會(huì)讓有的人變富,而讓其他人變窮重归。2
.
請(qǐng)注意這里的一年周期是根據(jù)區(qū)塊的時(shí)間戳而不是區(qū)塊的數(shù)量決定的米愿,
這是為了抵消礦工挖礦算力不同導(dǎo)致的不確定性。
展望 這個(gè)獎(jiǎng)勵(lì)機(jī)制將給礦工 33% 的債券回報(bào)鼻吮。這個(gè)回報(bào)在初期必須要足
夠高育苟,因?yàn)榈V工和簽名者需要共同持有一整年易波動(dòng)的債券資產(chǎn)。
但是椎木,隨著 Tezos 的成熟违柏,這個(gè)回報(bào)可以被逐漸降低到一個(gè)同期的主流
利率水平,并長(zhǎng)期維持低于 1% 的形式通脹率香椎,但是這樣做的合理性還需要
進(jìn)一步論證漱竖。
3.1.3 丟失的幣
為了減少貨幣基數(shù)變化所帶來(lái)的不確定性,所有的沒(méi)有任何動(dòng)作的地
址和地址上所包含的幣超過(guò)一年(由時(shí)間戳決定)都會(huì)被銷毀士鸥。
2與之相比, 比特幣的挖礦的通貨膨脹讓比特幣的持有者整體變窮闲孤,而中央銀行又讓金融界變得有錢,而
讓儲(chǔ)戶變窮。
10
3.1.4 修改規(guī)則
協(xié)議修改的生效時(shí)間取決于選舉周期讼积,每個(gè)周期的長(zhǎng)度為 N = 217 =
131 072 個(gè)區(qū)塊時(shí)間肥照。考慮到區(qū)塊間隔是一分鐘勤众,所以這個(gè)間隔是三個(gè)月舆绎。這
個(gè)選舉的周期將 2
15 = 32 768 個(gè)區(qū)塊分成四階段。這個(gè)周期相對(duì)比較短们颜,這
主要是為了激勵(lì)早期的協(xié)議的改善吕朵。隨著未來(lái)的修改,這個(gè)周期最終將變
長(zhǎng)窥突。選舉結(jié)果的生效需要滿足一定的法定人數(shù)努溃。法定人數(shù)開(kāi)始于 Q = 80%,
但會(huì)為了反映平均參與度而動(dòng)態(tài)適應(yīng)阻问。當(dāng)且僅當(dāng)需要處理丟失的幣時(shí)梧税,這些
才是必須的。
第一階段 建議修改協(xié)議需要提交一個(gè)代表新協(xié)議的.ml 和.mli 文件的 tarball
打包的哈希称近。持幣人可能會(huì)批準(zhǔn)任意數(shù)量的所提交協(xié)議第队。這也就是批準(zhǔn)
投票,是一個(gè)強(qiáng)健的投票過(guò)程刨秆。
第二階段 在第一階段獲得最多批準(zhǔn)的修改案基礎(chǔ)上進(jìn)行投票凳谦。投票人可
以投票反對(duì)或者棄權(quán)。投棄權(quán)的人也按法定人數(shù)計(jì)算衡未。
第三階段 如果達(dá)到法定人數(shù) (包括明確的棄權(quán))尸执,并且修改案達(dá)到了 80%
的支持率, 那么修改案就會(huì)被批準(zhǔn),并替代測(cè)試協(xié)議眠屎。否則它將被否決剔交。假
設(shè)法定人數(shù)達(dá)到值為 q肆饶,按如下方式更新最小法定人數(shù) Q :
Q ← 0.8Q + 0.2q.
做出以上更新是為了避免因?yàn)閬G失幣的問(wèn)題延緩?fù)镀边^(guò)程改衩。最小法定
人數(shù)是達(dá)到前面選舉法定人數(shù)以上的指數(shù)滑動(dòng)平均。
第四階段 假定修改案被批準(zhǔn)驯镊,在第三階段開(kāi)始的時(shí)候開(kāi)始測(cè)試網(wǎng)絡(luò)運(yùn)行
該修改案葫督。持幣者將進(jìn)行第二次投票來(lái)確認(rèn)他們確實(shí)想要支持測(cè)試協(xié)議替
代主協(xié)議。這也要求一定的法定人數(shù)板惑,以及 80% 的絕大多數(shù)投票者支持橄镜。
我們特地選擇了一個(gè)保守的方法做出修改決定。但是投票人可以自由
地去選擇自己認(rèn)為對(duì)有利的修改提議冯乘,并來(lái)對(duì)這個(gè)修改案進(jìn)行適度的放松
或者收緊洽胶。
11
3.2 股權(quán)證明機(jī)制
3.2.1 概覽
我們的 POS 機(jī)制集成了幾個(gè)不同的觀念,其中包括 Slasher[1]裆馒,chainof-activity[2]
以及 proof-of-burn姊氓。以下的是對(duì)算法的簡(jiǎn)要概覽丐怯。算法組件將
在以下被詳細(xì)地介紹。
區(qū)塊由隨機(jī)的持幣人(礦工)挖出翔横,并包括隨機(jī)的持幣人(簽名人)提
供的前一個(gè)塊的多簽读跷。挖礦和簽名都將獲得一筆小獎(jiǎng)勵(lì),但是也要求存一筆
一年期的押金禾唁,如果期間出現(xiàn)雙挖或者雙簽效览,那么這筆押金將被沒(méi)收。
這個(gè)協(xié)議以2048個(gè)區(qū)塊為周期運(yùn)行荡短。在每個(gè)周期的開(kāi)始丐枉,礦工選擇數(shù)字
做成隨機(jī)種子,提交至倒數(shù)第二個(gè)周期掘托,并在最后一個(gè)周期展現(xiàn)出來(lái)矛洞。通過(guò)
使用隨機(jī)種子,“跟隨幣”策略分配給指定地址的下一個(gè)周期的挖礦權(quán)以及
簽名權(quán)烫映,見(jiàn)下圖1沼本。
3.2.2 時(shí)鐘
協(xié)議在區(qū)塊之間增加了最小延遲。原則上锭沟,任何一個(gè)持幣人都可能挖出
塊抽兆。但是,就一個(gè)特定的塊而言族淮,每個(gè)持幣者都將受到一個(gè)隨機(jī)的最低延期
的制約辫红。最高優(yōu)先級(jí)的持幣人很可能會(huì)在上一個(gè)塊出現(xiàn)后一分鐘后挖出下
一個(gè)。優(yōu)先級(jí)第二的持幣者可能在兩分鐘后挖到下一個(gè)塊祝辣,以此類推贴妻,優(yōu)先
級(jí)第三的會(huì)在三分鐘后挖到下一個(gè)塊。
這將保證在一個(gè)分叉中持有股權(quán)較少的持幣人擁有較低的出塊率蝙斜。否
則名惩,一個(gè)針對(duì) CPU 的 DDos 攻擊將可能欺騙節(jié)點(diǎn),導(dǎo)致其確認(rèn)一個(gè)較長(zhǎng)的
自稱高得分的鏈孕荠。
圖 1: 四階段 POS 機(jī)制
12
3.2.3 隨機(jī)種子生成
每一個(gè)被挖的塊都會(huì)攜帶一個(gè)由礦工選擇的隨機(jī)數(shù)的哈希值娩鹉。這些數(shù)
字必須在下一個(gè)周期的擔(dān)保金沒(méi)收時(shí)間前被公開(kāi)。這個(gè)嚴(yán)厲的懲罰措施可
以防止因礦工拒不提供隨機(jī)數(shù)而有可能導(dǎo)致的對(duì)種子進(jìn)行的熵攻擊稚伍。
惡意的礦工在下一個(gè)周期會(huì)試圖阻止該隨機(jī)數(shù)被公開(kāi)弯予,但是因?yàn)槎鄠€(gè)
隨機(jī)數(shù)可能會(huì)在單個(gè)區(qū)塊中被公開(kāi),這樣的企圖很難成功个曙。
在一個(gè)周期中所有的被公開(kāi)的數(shù)字都將合并到一個(gè)哈希列表中锈嫩,并且
這個(gè)種子將從根部通過(guò)使用scrypt 的密鑰衍生函數(shù)得出。這個(gè)密鑰的衍生
需要經(jīng)過(guò)調(diào)試,使得衍生種子所需的時(shí)間和一臺(tái)普通桌面電腦確認(rèn)區(qū)塊所
需平均時(shí)間百分之一的一小部分的量級(jí)相當(dāng)呼寸。
3.2.4 Follow-the-coin 過(guò)程
為了隨機(jī)選取持幣者那槽,我們引入一個(gè)跟隨幣機(jī)制。
原理 這個(gè)方法最初出現(xiàn)在比特幣中等舔,稱為 follow-the-satoshi骚灸。該過(guò)程假設(shè)
每一個(gè)鍛造出來(lái)的聰單位的比特幣都有唯一的序列號(hào),聰按照創(chuàng)建時(shí)間隱
式排序慌植,通過(guò)區(qū)塊鏈對(duì)其操作和追蹤甚牲。當(dāng)然,單個(gè)分不能夠直接追蹤蝶柿。但是
可以通過(guò)使用一些規(guī)則描述當(dāng)輸入集成起并通過(guò)多個(gè)輸出花出時(shí)發(fā)生的情
況丈钙。
最后, 算法持續(xù)追蹤每一組和密鑰相關(guān)聯(lián)的間隔。每個(gè)間隔表示聰區(qū)間
的范圍交汤。不幸的是雏赦,隨著時(shí)間的延長(zhǎng),數(shù)據(jù)庫(kù)變得越來(lái)越零碎芙扎,使得客戶端
膨脹星岗。
幣卷 通過(guò)建立大的由一萬(wàn)個(gè) tez 組成的幣卷,我們優(yōu)化之前的算法戒洼∏伍伲總共
會(huì)有大約一百萬(wàn)個(gè)卷存在。數(shù)據(jù)庫(kù)把每個(gè)卷地圖映射到其當(dāng)前的所有者圈浇。
每一個(gè)地址都帶有一個(gè)特定卷的集合寥掐,以及一些零錢。當(dāng)我們花掉只占
一個(gè)卷一小部分的幣時(shí)磷蜀,整個(gè)卷就會(huì)被破壞召耘,而它的序列號(hào)會(huì)發(fā)送至卷的
LIFO 隊(duì)列,該隊(duì)列有點(diǎn)像放置廢棄物的場(chǎng)所褐隆。每筆交易都應(yīng)該以最小化破
壞卷的方式處理污它。每當(dāng)一個(gè)地址有足夠的幣來(lái)組成一個(gè)卷,序列號(hào)將從隊(duì)列
中拉出妓灌,再次生成卷轨蛤。
LIFO 隊(duì)列優(yōu)先級(jí)保證了在一個(gè)秘密分叉上挖礦的攻擊者無(wú)法通過(guò)賬戶
間混洗改變的方法,達(dá)到修改其擁有的幣數(shù)的目的虫埂。
13
這樣做會(huì)有一個(gè)很小的問(wèn)題,那就是股份數(shù)被近似為卷值最接近的整
數(shù)圃验。但是相對(duì)于 follow-the-satoshi 方法掉伏,該方法在效率方面提供了很大的
改善。
雖然幣卷被數(shù)字化,這個(gè)方法并不能阻礙那些諸如零幣那樣的使用可
替代性保持的協(xié)議斧散。這些協(xié)議可以使用相同的 limbo 隊(duì)列技術(shù)供常。
動(dòng)機(jī) 上述流程和僅僅按照余額權(quán)重衡量選取隨機(jī)地址的機(jī)制在功能上有
很大的不同。
事實(shí)上鸡捐,在一個(gè)秘密的分叉內(nèi)栈暇,一個(gè)礦工可以試圖通過(guò)提前控制隨機(jī)種
子的生成和賦予自身簽名和挖幣的權(quán)利。如果幣卷是真正隨機(jī)選擇的箍镜,這種
企圖是很難成功源祈,因?yàn)槊孛艿姆植娌荒軌騻卧炷硞€(gè)幣卷的所有權(quán)歸屬,而且
必須要試圖來(lái)造影(preimage)在種子上應(yīng)用的哈希函數(shù)色迂,進(jìn)而實(shí)現(xiàn)簽名和
造幣權(quán)利的分配香缺。
事實(shí)上,在一個(gè) N = 2048 周期內(nèi)歇僧,某個(gè)持有幣卷中一小部分 f 的人
將會(huì)獲得平均值為 fN 的挖礦權(quán)图张,一旦接收到這個(gè)有效的部分,那么 f0 的
標(biāo)準(zhǔn)差將為:
√
1
N
√
1 ? f
f
如果一個(gè)攻擊者通過(guò) W 個(gè)不同種子進(jìn)行窮舉式搜索诈悍,那么他的攻擊的
優(yōu)勢(shì)至多是
(√
2 log(W)
N
√
1 ? f
f
)
fN
個(gè)區(qū)塊祸轮。3 舉個(gè)例子,一個(gè)控制了總量 f = 10% 幣卷的攻擊者侥钳,他可以預(yù)期
在每個(gè)周期挖大約 205 個(gè)區(qū)塊倔撞。假設(shè)他在試圖控制種子的秘密分叉上有超
過(guò)一萬(wàn)億個(gè)哈希的算力,那么其可以分配給自己占總量區(qū)塊 14.7% 的 302
個(gè)塊慕趴。值得注意的是:
- 產(chǎn)生種子的哈希是通過(guò)一個(gè)復(fù)雜的密鑰生成函數(shù)產(chǎn)生的痪蝇,這讓窮舉式
搜索變得不現(xiàn)實(shí)。
- 要想在挖礦中取得線性收益冕房,攻擊者將花費(fèi)平方指數(shù)級(jí)增長(zhǎng)的資源躏啰。
3這是在 W 正態(tài)分布變量的最大期望上的標(biāo)準(zhǔn)界限。
14
3.2.5 挖礦
隨機(jī)種子被重復(fù)用來(lái)選擇幣卷耙册。第一個(gè)被選中的卷將給予它的持有者
一分鐘后挖塊的權(quán)利给僵,這個(gè)第二個(gè)可以在兩分鐘以后,以此類推详拙。
當(dāng)一個(gè)持幣者觀察到種子并認(rèn)識(shí)到他可以在下一個(gè)周期里挖掘一個(gè)高
優(yōu)先級(jí)的塊的時(shí)候帝际,他可以進(jìn)行安全存幣。
存在這樣一個(gè)潛在問(wèn)題饶辙,即沒(méi)有持有人進(jìn)行安全存幣購(gòu)買債券來(lái)挖一
個(gè)特定的塊蹲诀。如果這種情況發(fā)生,那么在 16 分鐘以后弃揽,這個(gè)塊就可以在沒(méi)
有存款的情況下被挖出脯爪。
當(dāng)購(gòu)買債券的人不在挖礦時(shí)则北,購(gòu)買債券的幣將通過(guò)隱式的方式立即返
還這些購(gòu)買人。
3.2.6 區(qū)塊簽名
就這樣我們構(gòu)建了一個(gè)幾乎完備可行的 POS 系統(tǒng)痕慢。但是一個(gè)問(wèn)題是將
一個(gè)鏈的權(quán)重定義為區(qū)塊數(shù)量尚揣,這會(huì)帶來(lái)自私挖礦的問(wèn)題。
為此掖举,我們引入了一個(gè)簽名模式快骗。當(dāng)一個(gè)區(qū)塊被挖出的時(shí)候,隨機(jī)種子
將隨機(jī)分配 16 個(gè)簽名權(quán)利給 16 個(gè)幣卷塔次。
持幣者獲得簽名權(quán)利后一旦觀察到正在被挖出的區(qū)塊就會(huì)上傳區(qū)塊簽
名方篮。這些簽名會(huì)包括在下一個(gè)區(qū)塊里,該工作由試圖保證區(qū)塊鏈中父子包含
關(guān)系的礦工完成俺叭。
簽名人獲得的簽名獎(jiǎng)勵(lì)與區(qū)塊和其先祖區(qū)塊之間的時(shí)間間隔成反比恭取。
因此,簽名人有很強(qiáng)的意愿盡快簽名他們所認(rèn)為在某一時(shí)刻產(chǎn)生的最
優(yōu)的區(qū)塊熄守。他們也有很強(qiáng)的動(dòng)機(jī)達(dá)成簽名哪個(gè)區(qū)塊的共識(shí)蜈垮,因?yàn)楹灻?jiǎng)勵(lì)只
有在區(qū)塊被寫入?yún)^(qū)塊鏈后才能發(fā)放。
如果優(yōu)先級(jí)最高的塊沒(méi)有被挖出(可能是因?yàn)榈V工沒(méi)有在線)裕照,簽名人
會(huì)有因?yàn)榇嬖诘V工遲到的可能性而決定等待一些時(shí)間的動(dòng)機(jī)攒发。但是其它簽
名人可能會(huì)決定簽名優(yōu)先級(jí)最高的塊,一個(gè)新塊可能包含這些簽名晋南,讓那些
等待者一無(wú)所獲惠猿,所以礦工不太可能采取等待的策略。
我們可以假設(shè)存在與之相反的情形负间,簽名者過(guò)于擔(dān)心競(jìng)爭(zhēng)者搶先偶妖,而爭(zhēng)
相對(duì)所看到的第一個(gè)塊進(jìn)行簽名。然而現(xiàn)實(shí)是這種情形其實(shí)對(duì)任何人沒(méi)有
什么好處政溃。簽名者沒(méi)有理由認(rèn)為會(huì)出現(xiàn)這種狀況趾访,更不用說(shuō)去修改他們的程
序代碼來(lái)去這樣做。雖然理論上存在一個(gè)惡意的持幣者試圖擾亂秩序的可
能董虱,但這樣只會(huì)損害自己的利益扼鞋,其他人也不會(huì)效仿。
15
3.2.7 鏈的權(quán)重
我們定義鏈的權(quán)重為簽名數(shù)愤诱。
3.2.8 公開(kāi)譴責(zé)機(jī)制
為了避免一個(gè)區(qū)塊上的雙挖以及雙簽問(wèn)題, 一個(gè)礦工可以在他的區(qū)塊中
加入一個(gè)公開(kāi)譴責(zé)機(jī)制云头。
該公開(kāi)譴責(zé)機(jī)制采取雙簽名的形式。每一個(gè)造幣的簽名或者塊的簽名
都簽入?yún)^(qū)塊高度淫半,構(gòu)成惡意行為的證據(jù)溃槐,這讓不良行為很難隱藏。
盡管我們可以允許任何人來(lái)譴責(zé)不良行為撮慨,但沒(méi)有人比礦工更適合來(lái)
這樣做竿痰。事實(shí)上脆粥,一個(gè)礦工可以簡(jiǎn)單地復(fù)制不良行為的證據(jù)并將其作為自己
的發(fā)現(xiàn)轉(zhuǎn)達(dá)給其他人4砌溺。
而一旦發(fā)現(xiàn)有雙挖或者雙簽影涉,那么其債券將被沒(méi)收。
3.3 智能合約
3.3.1 合約類型
和比特幣的 unspent 輸出不同规伐,Tezos 使用有狀態(tài)的賬戶蟹倾。當(dāng)這些賬戶
規(guī)定了可被執(zhí)行的代碼時(shí),它們也就成了廣泛意義上的合約猖闪。賬本本身也是
一種合約鲜棠,只是沒(méi)有可執(zhí)行的代碼。
每一個(gè)合約都有一個(gè)管理者培慌,對(duì)于賬戶而言豁陆,這個(gè)管理者就是它的擁有
者。如果這個(gè)合約標(biāo)識(shí)為可以被花費(fèi)的吵护,那也意味著管理者可以花費(fèi)與這個(gè)
合約相關(guān)聯(lián)的資金盒音。此外,每一個(gè)合約都可能會(huì)規(guī)定一個(gè)公鑰的哈希用來(lái)簽
署或者挖 POS 協(xié)議內(nèi)的區(qū)塊馅而。私鑰可由或不由管理者控制祥诽。
一個(gè)合約可以正式表示為:
type contract = {
counter : int ; (* counter to prevent repeat attacks *)
manager : id ; (* hash of the contract ’ s manager public key *)
balance : Int64 . t ; (* balance held *)
signer : id option ; (* id of the signer *)
code : opcode l i s t ; (* contract code as a l i s t of opcodes *)
storage : data l i s t ; (* storage of the contract *)
spendable : bool ; (* may the money be spent by the manager? *)
delegatable : bool ; (* may the manager change the signing key? *)
}
4零知識(shí)證明允許任何人從譴責(zé)不良行為獲益,但獲益多少并不十分明確瓮恭。
16
一個(gè)合約的句柄是初始內(nèi)容的哈希值雄坪。試圖創(chuàng)建的合約的哈希不能與
已經(jīng)存在的相同,否則將不會(huì)被包含在一個(gè)有效區(qū)塊內(nèi)屯蹦。
該數(shù)據(jù)表示為一個(gè) union 類型维哈。
type data =
| STRING of string
| INT of int
這里INT 是一個(gè)有符號(hào)的 64 位整數(shù),string 是一個(gè) 1024 字節(jié)的數(shù)組登澜。
存儲(chǔ)空間上限為16 384字節(jié)阔挠,將整數(shù)以八字節(jié)計(jì)數(shù),strings 則以它們的長(zhǎng)度
計(jì)數(shù)帖渠。
3.3.2 起源
起源操作可以用來(lái)創(chuàng)建一個(gè)新的合約谒亦,主要是合約代碼和合約存儲(chǔ)的
初始內(nèi)容。如果該句柄已經(jīng)是一個(gè)已存在的合約的句柄空郊,那么起源操作將被
拒絕份招。(除非是因?yàn)殄e(cuò)誤或惡意,否則基本不會(huì)發(fā)生狞甚。)
合約需要最低 ? 1余額來(lái)保證其正常運(yùn)行锁摔。如果這個(gè)余額低于這個(gè)數(shù)字,
該合約就會(huì)被銷毀哼审。
3.3.3 交易
交易是從一個(gè)合約發(fā)至另一個(gè)合約的消息谐腰,可表示為:
type transaction = {
amount : amount ; (* amount being sent *)
parameters : data l i s t ; (* parameters passed to the s c r i p t *)
(* counter ( invoice id ) to avoid repeat attacks *)
counter : int ;
destination : contract hash ;
}
如果交易使用管理者密鑰簽名孕豹,或者以編程的方式通過(guò)合約中的程序
代碼執(zhí)行,那么交易將從合約發(fā)出十气。當(dāng)這個(gè)交易被接收励背,該交易金額就被加
入目的合約的余額中,并且執(zhí)行目的合約代碼砸西。該代碼可利用接收到的參
數(shù)叶眉,對(duì)合約存儲(chǔ)進(jìn)行讀寫,改變簽名密鑰芹枷,以及發(fā)送交易至其它合約衅疙。
計(jì)數(shù)器的作用是防止中繼攻擊。當(dāng)合約的計(jì)數(shù)等于交易的計(jì)數(shù)的時(shí)鸳慈,該
交易才是有效的饱溢。一旦交易被確認(rèn),計(jì)數(shù)器就會(huì)增加 1走芋,防止該交易被重用绩郎。
該交易也包含客戶端認(rèn)為有效的最近區(qū)塊哈希值。如果攻擊者成功地
迫使一個(gè)分叉進(jìn)行長(zhǎng)重組绿聘,這些交易將不能被整合入?yún)^(qū)塊鏈嗽上,使得分叉顯得
17
明顯偽造。這也是安全的最后一道防線熄攘,雖然 TAPOS 是有效防止這種長(zhǎng)重
組的偉大的系統(tǒng)兽愤,但是該系統(tǒng)對(duì)于防止短期雙花并不是十分有效。
一個(gè) (account_handle, counter) 對(duì)和比特幣中未被花掉的輸出幾乎等
價(jià)挪圾。
3.3.4 存儲(chǔ)費(fèi)用
存儲(chǔ)是網(wǎng)絡(luò)上最重要的成本之一浅萧,在存儲(chǔ)上每增加一個(gè)字節(jié)大約最低
的費(fèi)用為 ? 1。例如哲思,如果交易執(zhí)行后洼畅,一個(gè)整數(shù)被添加到存儲(chǔ)中,并且在
已經(jīng)存在的存儲(chǔ)的字符串上增加 10 個(gè)字節(jié)棚赔,那么 ? 18 將從合約的余額中
取出和銷毀帝簇。
3.3.5 代碼
該語(yǔ)言是基于棧的且具有高級(jí)的數(shù)據(jù)類型和嚴(yán)格的靜態(tài)類型校驗(yàn)。設(shè)
計(jì)的靈感來(lái)自 Forth, Scheme, ML 和 Cat靠益。它有一個(gè)完全描述的指令集 [5]丧肴,
詳細(xì)描述了指令集,類型系統(tǒng)胧后,以及詞法和語(yǔ)義芋浮。這也意味著一個(gè)精準(zhǔn)的完
全參考指南,而不是一個(gè)簡(jiǎn)單的介紹壳快。
3.3.6 交易費(fèi)
到目前為止纸巷,這個(gè)系統(tǒng)和以太坊處理交易的方式很類似镇草。然而,我們?cè)?/p>
處理交易費(fèi)方面卻很不同瘤旨。在以太坊上用戶只要支付隨程序執(zhí)行時(shí)間線性
增長(zhǎng)的費(fèi)用梯啤,就可以運(yùn)行任意長(zhǎng)的程序。雖然這種方式提供了礦工驗(yàn)證交易
的經(jīng)濟(jì)動(dòng)機(jī)裆站,但并不能給同樣參與交易驗(yàn)證的其他礦工相同的動(dòng)機(jī)条辟。在實(shí)踐
中黔夭,大多數(shù)用智能合約編寫的程序都是非常短的宏胯。因此,我們通過(guò)在程序的
執(zhí)行步驟上加上一個(gè)硬性的帽子來(lái)簡(jiǎn)化構(gòu)建過(guò)程本姥。
如果該帽子對(duì)一些程序而言被證明是緊上界肩袍,他們可以在多個(gè)執(zhí)行步
驟上中斷并采取多個(gè)交易完全執(zhí)行的方式。正是因?yàn)?Tezos 是自我進(jìn)化的婚惫,
這個(gè)帽子在未來(lái)可以改變氛赐,或者引入更多的高級(jí)原語(yǔ)。
如果賬戶同意先舷,簽名密鑰可以通過(guò)發(fā)起簽名信息請(qǐng)求修改艰管。
4 總結(jié)
我們認(rèn)為,我們已經(jīng)構(gòu)建一個(gè)較大吸引力的種子協(xié)議蒋川。當(dāng)然牲芋,Tezos 的
真正的潛力存在于:讓持幣者掌控最優(yōu)質(zhì)服務(wù)協(xié)議的選擇權(quán)利。
18
參考文獻(xiàn)
[1] Vitalik Buterin. Slasher: A punitive proof-ofstake
algorithm. https://blog.ethereum.org/2014/01/15/
slasher-a-punitive-proof-of-stake-algorithm/, 2014.
[2] Ariel Gabizon Iddo Bentov and Alex Mizrahi. Cryptocurrencies without
proof of work. http://www.cs.technion.ac.il/~idddo/CoA.pdf, 2014.
[3] Peter Suber. Nomic: A game of self-amendment. http://legacy.earlham.
edu/~peters/writing/nomic.htm, 1982.
[4] Jér?me Vouillon. Lwt: a cooperative thread library. 2008.
[5] Tezos project. Formal specification of the tezos smart contract language.
https://tezos.com/pages/tech.html, 2014.
19