《以太坊白皮書》筆記(3)—— 以太坊介紹. 下

《以太坊白皮書》原文鏈接:https://github.com/ethereum/wiki/wiki/White-Paper

Ethereum

Ethereum: a blockchain with a built-in Turing-complete programming language, allowing anyone to write smart contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats and state transition functions.

以太坊: 一個內(nèi)置了圖靈完備的程序語言的區(qū)塊鏈凉翻。任何人可以編寫智能合約莲镣;或者 “可以創(chuàng)造任意屬于自己的規(guī)則” 的去中心化應(yīng)用摆碉;以及交易格式和狀態(tài)轉(zhuǎn)化函數(shù)雳旅。


#4 Ethereum State Transition Function

以太坊中的狀態(tài)轉(zhuǎn)化函數(shù)

以太坊中的狀態(tài)轉(zhuǎn)化函數(shù) APPLY(S, TX) -> S' 可以被定義為:

  1. 檢查交易格式是否正確(例如是否有正確的金額)蕉汪,數(shù)字簽名是否有效舷胜,以及隨機數(shù)是否匹配發(fā)送者的賬戶中的隨機數(shù)涕蚤。如果上述的條件不滿足地来,則返回錯誤卵酪。
  2. 計算交易的費用是否等于 STARTGAS * GASPRICE幌蚊,并通過數(shù)字簽名確認(rèn)發(fā)送者的地址谤碳。在發(fā)送者的賬戶余額中減去交易的費用并增加發(fā)送者賬戶的隨機數(shù)。如果賬戶余額不足溢豆,則返回錯誤蜒简。
  3. 初始化 GAS = STARTGAS,然后根據(jù)交易中每個字節(jié)所需要的 gas 去掉一部分 gas漩仙。
  4. 把交易的數(shù)額從發(fā)送者賬戶轉(zhuǎn)移到接受者賬戶搓茬。如果接受者賬戶不存在,就創(chuàng)建一個新的賬戶队他。如果接受者賬戶是一個合約卷仑,那么執(zhí)行合約中的代碼直到完成執(zhí)行或者消耗完所有的 gas。
  5. 如果因為發(fā)送者的余額不足導(dǎo)致數(shù)額轉(zhuǎn)移失敗麸折,或者合約代碼執(zhí)行完成前消耗完所有 gas锡凝,那么把狀態(tài)回退到交易之前,但交易的手續(xù)費并不會退回垢啼,而且會加到礦工的賬戶中私爷。
  6. 如果交易成功,退換剩余的 gas 對應(yīng)的費用給發(fā)送者膊夹,然后把消耗掉的 gas 對應(yīng)的費用支付給礦工衬浑。

舉個例子,假設(shè)合約代碼為:

if !self.storage[calldataload(0)]:
    self.storage[calldataload(0)] = calldataload(32)

Note

通常來說合約代碼是低等級的 EVM 代碼放刨。上面使用的是一種高等級語言 Serpent工秩。因為這樣更加清晰,而且也可以運行為 EVM 代碼进统。

假設(shè)合約在空的存儲情況下運行助币,且發(fā)送了一個金額為 10,gas 為 2000螟碎,每個以太的 gas 價格為 0.001眉菱,以及 64 字節(jié)數(shù)據(jù)(0-31 字節(jié)表示數(shù)字 2,32-63 字節(jié)表示字符串 CHARLIE)的交易掉分。在這個情景下狀態(tài)轉(zhuǎn)化函數(shù)的過程為:

  1. 檢查交易是否合法以及交易格式是否正確
  2. 檢查交易的發(fā)送至是否有 2000 * 0.001 = 2 的以太余額俭缓。如果有,那么從發(fā)送者的賬戶中減去 2 個以太
  3. 初始化 gas 值為2000酥郭;假設(shè)交易的長度為 170 字節(jié)华坦,且每個字節(jié)的手續(xù)費為 5。gas 值減去 850 剩下 1150
  4. 從發(fā)送者的賬戶余額中減去 10 以太不从,并在接收者賬戶中增加 10 以太
  5. 運行這段代碼(這個例子中代碼的結(jié)果很簡單:檢查存儲中索引為 2 的值惜姐,如果這個索引下的存儲中沒有值,那么把它賦值為字符串 CHARLIE)椿息。假如這段代碼耗費了 187 gas歹袁,那么 gas 值剩余 `1150 - 187 = 963
  6. 返還 963 * 0.001 = 0.963 以太到發(fā)送者的賬戶中坷衍,并返回結(jié)果的狀態(tài)。

如果交易的接收端沒有合約条舔,那么整個交易的手續(xù)費用會變得很簡單:用 GASPRICE 乘上整個交易的字節(jié)長度就能獲得最后的交易手續(xù)費用惫叛。而且交易中一并發(fā)送的數(shù)據(jù)會變得無關(guān)緊要。


#5 Blockchain & Mining

以太坊中狀態(tài)轉(zhuǎn)化的過程

以太坊中的區(qū)塊鏈和比特幣的區(qū)塊鏈大致相同逞刷,但也有不同之處:以太坊的區(qū)塊鏈架構(gòu)和比特幣的不同,交易的列表和最近的狀態(tài)會在以太坊的區(qū)塊鏈中保存一份拷貝妻熊。除此之外夸浅,以太坊中的區(qū)塊的數(shù)量和挖礦難度都會保存在區(qū)塊鏈中。

以太坊中基本的區(qū)塊驗證算法如下:

  1. 檢查引用的上一個區(qū)塊是否存在且有效
  2. 檢查當(dāng)前區(qū)塊的時間戳是否大于上一區(qū)塊且差值小于15分鐘
  3. 檢查區(qū)塊序號扔役、難度帆喇、交易根、叔根和 gas 限額 (一些低等級以太坊特有的) 是否有效
  4. 檢查 POW 是否有效
  5. S[0] 為上一區(qū)塊的最終狀態(tài)
  6. TX 為區(qū)塊包含的 n 條交易的列表亿胸。對于 0...n-1 中所有的 i 坯钦,讓 S[i+1] = APPLY(S[i], TX[i])。如果任一應(yīng)用返回錯誤侈玄,或者 gas 的消耗超出額度婉刀,直接返回錯誤。
  7. S_FINALS[n]序仙,然后把獎勵給予礦工突颊。
  8. 檢查 S_FINAL在 Merkle Tree 中的根節(jié)點是否和當(dāng)前區(qū)塊鏈中最后一個區(qū)塊的狀態(tài)在 Merkle Tree 中的根節(jié)點相同。如果相同潘悼,那么這個區(qū)塊有效律秃。

這樣的算法似乎看上去效率很低,因為每個區(qū)塊都需要儲存所有狀態(tài)的信息治唤。但其實在以太坊中棒动,其效率與比特幣系統(tǒng)可以相提并論,因為所有狀態(tài)都是以樹結(jié)構(gòu)存儲的宾添,每個區(qū)塊的生成只需要對整個樹的某一小部分做修改船惨。通常,對兩個相連的區(qū)塊缕陕,其樹結(jié)構(gòu)大致相同掷漱。因此,數(shù)據(jù)可以只存儲一次榄檬,通過指針(子樹的哈希值)達(dá)到多次引用卜范。另外,由于最新的所有狀態(tài)信息存儲在區(qū)塊鏈中最后一個區(qū)塊中鹿榜,那么就沒有必要再保存整個區(qū)塊鏈的歷史記錄了 —— 這種策略如果應(yīng)用在比特幣系統(tǒng)中海雪,大概可以節(jié)省 5 - 20 倍的存儲空間锦爵。


#6 Applications

通常來講,以太坊為基礎(chǔ)的應(yīng)用有三種類型:

  1. 金融應(yīng)用奥裸。提供給用戶更為強大的渠道去管理用戶的資金险掀,且用戶可以通過這些資金進(jìn)入一些合約。包含子貨幣湾宙,金融衍生品樟氢,對沖合約,儲蓄錢包侠鳄,遺囑埠啃,甚至一些種類的全面的雇傭合約。
  2. 半金融應(yīng)用伟恶。這些應(yīng)用中碴开,用戶的資金需要參與,但資金相關(guān)的只是一小部分博秫,更多的是與錢無關(guān)的部分潦牛。例如一個強制自我獎勵機制的解決計算性問題的應(yīng)用(并不能懂這是什么應(yīng)用。挡育。)巴碗。
  3. 非金融應(yīng)用。例如一些去中心自治系統(tǒng)或者線上投票即寒。

白皮書中還列舉了幾種比較有特點的應(yīng)用:令牌系統(tǒng)良价、金融衍生品和穩(wěn)定價值貨幣、身份和信譽系統(tǒng)蒿叠、去中心存儲明垢、去中心自治組織等。其中比較有意思的是去中心自治組織市咽,下面會詳細(xì)闡述痊银。

DAO

去中心化自治組織(DAO, decentralized autonomous organization)的概念,最早在 Oei Brafman 2007年出版的《海星和蜘蛛》一書中提出:

蜘蛛是中心化(細(xì)胞)組織的例子施绎,如果把它的頭切掉后(整個組織)就無法生存了溯革。海星則是由彼此對等(無中心)的一堆細(xì)胞組成,海星撕下的每只觸手都可成長為完整的海星谷醉。

文中的蜘蛛和海星致稀,分別映射了中心化組織 (現(xiàn)實中的絕大部分組織) 和去中心化組織【隳幔基于區(qū)塊鏈的技術(shù)抖单,這種 “海星“ 得以存在:運行在以太坊系統(tǒng)上的一系列可以實現(xiàn)組織職能的智能合約集合。

中心化的公司或組織結(jié)構(gòu)

對于現(xiàn)在的傳統(tǒng)公司或組織來說,通常其等級結(jié)構(gòu)都是自上而下的矛绘。例如股份制公司耍休,董事會和 CEO 負(fù)責(zé)公司整體的的運營和管理。普通員工的決策并不能影響到整家公司货矮。

去中心化自治組織羊精,或者去中心化自治公司 (DAC, decentralized autonomous company) 與傳統(tǒng)組織或公司相比,最大的不同是:這種公司或組織由所有成員共同擁有和經(jīng)營囚玫,而不是單一個人擁有并經(jīng)營喧锦。比特幣就是一個很好的例子,整個比特幣由所有參與的節(jié)點共同維護(hù)抓督,而沒有一個中心化的 “中央管理者”燃少。網(wǎng)絡(luò)中的任一節(jié)點都是對等的,沒有權(quán)力上的優(yōu)劣本昏。

在這種 DAO 或者 DACs 中,其 “規(guī)則” 通常以代碼的形式寫在智能合約當(dāng)中枪汪。這些 “規(guī)則” 決定了這家公司或組織可以干什么:它是賣東西的涌穆,還是提供服務(wù)的等等。而且雀久,這個 “規(guī)則” 是可以被修改的:只要超過一定數(shù)量的人參與投票并同意宿稀,那么創(chuàng)始人就可以修改原先寫好的智能合約(可以理解成人人都是董事會成員,人人都可以參與決定公司的未來赖捌,同時人人都需要承擔(dān)決策的風(fēng)險)祝沸。

最重要的是,以太坊系統(tǒng)越庇,或者區(qū)塊鏈罩锐,并不限定這個組織或公司的功能和領(lǐng)域,它只提供給組織或公司一個經(jīng)濟(jì)激勵平臺作為基礎(chǔ)卤唉。也就是說涩惑,就像股份制公司一樣,區(qū)塊鏈只是像股市一樣提供給其一個獲得激勵桑驱、回報的平臺竭恬,而公司的產(chǎn)業(yè),取決于參與的股東(DAO/DACs 中的每個節(jié)點)熬的。

Tom Ding 在《2020: A Call for DApps and DAOs》中解釋痊硕,這種形式的公司非常適合完成一些小而簡單,重復(fù)性的工作押框。

每個工作在網(wǎng)絡(luò)中能夠輕易地被分割岔绸,從而工作可被程序或者人為驗證,這個過程非常難被操縱。

因為這種形式的公司其職能由其智能合約的內(nèi)容決定亭螟,而智能合約的執(zhí)行則可以完全自動化挡鞍,“人” 在其中所扮演的角色只是負(fù)責(zé)一些機器力所不能及的事:例如修正整個公司的目標(biāo)或者部分職能。就像一家完全自動化的無人商店预烙,顧客想購買某樣產(chǎn)品只需要在以太坊中發(fā)起相應(yīng)的交易墨微,其余的工作都交給了智能合約去執(zhí)行,“人” 所需要做的只是修改商品的內(nèi)容等等(其實與一些電商平臺如淘寶扁掸、京東等很類似)翘县。


閱讀 Github 上 《Ethereum - White Paper》 的一些筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谴分,隨后出現(xiàn)的幾起案子锈麸,更是在濱河造成了極大的恐慌,老刑警劉巖牺蹄,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忘伞,死亡現(xiàn)場離奇詭異,居然都是意外死亡沙兰,警方通過查閱死者的電腦和手機氓奈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼎天,“玉大人舀奶,你說我怎么就攤上這事≌洌” “怎么了育勺?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罗岖。 經(jīng)常有香客問我涧至,道長,這世上最難降的妖魔是什么桑包? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任化借,我火速辦了婚禮,結(jié)果婚禮上捡多,老公的妹妹穿的比我還像新娘蓖康。我一直安慰自己,他們只是感情好垒手,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蒜焊。 她就那樣靜靜地躺著,像睡著了一般科贬。 火紅的嫁衣襯著肌膚如雪泳梆。 梳的紋絲不亂的頭發(fā)上鳖悠,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音优妙,去河邊找鬼乘综。 笑死,一個胖子當(dāng)著我的面吹牛套硼,可吹牛的內(nèi)容都是我干的卡辰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼邪意,長吁一口氣:“原來是場噩夢啊……” “哼九妈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雾鬼,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤萌朱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后策菜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晶疼,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年又憨,在試婚紗的時候發(fā)現(xiàn)自己被綠了翠霍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡竟块,死狀恐怖壶运,靈堂內(nèi)的尸體忽然破棺而出耐齐,到底是詐尸還是另有隱情浪秘,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布埠况,位于F島的核電站耸携,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辕翰。R本人自食惡果不足惜夺衍,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喜命。 院中可真熱鬧沟沙,春花似錦、人聲如沸壁榕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牌里。三九已至颊咬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喳篇。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工敞临, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人麸澜。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓挺尿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痰憎。 傳聞我的和親對象是個殘疾皇子票髓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344