Tezos — 自我進(jìn)化的加密賬本

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捺球,一起剝皮案震驚了整個(gè)濱河市缸浦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氮兵,老刑警劉巖裂逐,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異泣栈,居然都是意外死亡卜高,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門南片,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掺涛,“玉大人耿戚,你說(shuō)我怎么就攤上這事宗雇。” “怎么了码秉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵颠悬,是天一觀的道長(zhǎng)矮燎。 經(jīng)常有香客問(wèn)我定血,道長(zhǎng),這世上最難降的妖魔是什么诞外? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任澜沟,我火速辦了婚禮,結(jié)果婚禮上峡谊,老公的妹妹穿的比我還像新娘茫虽。我一直安慰自己,他們只是感情好既们,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布濒析。 她就那樣靜靜地躺著,像睡著了一般啥纸。 火紅的嫁衣襯著肌膚如雪号杏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天斯棒,我揣著相機(jī)與錄音盾致,去河邊找鬼。 笑死荣暮,一個(gè)胖子當(dāng)著我的面吹牛庭惜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穗酥,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼护赊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了迷扇?” 一聲冷哼從身側(cè)響起百揭,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜓席,沒(méi)想到半個(gè)月后器一,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厨内,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年祈秕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏胃。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡请毛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞭亮,到底是詐尸還是另有隱情方仿,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站仙蚜,受9級(jí)特大地震影響此洲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜委粉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一呜师、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贾节,春花似錦汁汗、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至戴差,卻和暖如春送爸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暖释。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墨吓,地道東北人球匕。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像帖烘,于是被迫代替她去往敵國(guó)和親亮曹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 不管你們知不知道以太坊(Ethereum blockchain)是什么秘症,但是你們大概都聽(tīng)說(shuō)過(guò)以太坊照卦。最近在新...
    Lilymoana閱讀 3,894評(píng)論 1 22
  • 一個(gè)人的離去,像風(fēng)帶走一片樹(shù)葉乡摹,飄飄蕩蕩役耕,歸于塵土。一個(gè)人的一生聪廉,像是四季瞬痘,春生夏長(zhǎng),秋成冬去板熊。只是框全,活著的...
    文小西閱讀 173評(píng)論 0 1
  • 2016.06.05 servlet 405 錯(cuò)誤: 沒(méi)有寫對(duì)public void service()方法 se...
    JAVA小學(xué)生閱讀 368評(píng)論 0 0
  • 睡不著,還沒(méi)有困意干签,就總結(jié)下這個(gè)禮拜吧津辩。 2017年7月31號(hào)~2017年8月6號(hào)。 關(guān)于工作 這個(gè)禮拜上的是A5...
    forest往事閱讀 380評(píng)論 0 0