<cite id="1ndtl"></cite>
<ruby id="1ndtl"></ruby>
<strike id="1ndtl"></strike>
<span id="1ndtl"><dl id="1ndtl"></dl></span><span id="1ndtl"><dl id="1ndtl"></dl></span>
<strike id="1ndtl"></strike>
<strike id="1ndtl"><dl id="1ndtl"><del id="1ndtl"></del></dl></strike>
<span id="1ndtl"></span>
<span id="1ndtl"><dl id="1ndtl"></dl></span>
<strike id="1ndtl"></strike>
<strike id="1ndtl"></strike><span id="1ndtl"><dl id="1ndtl"></dl></span>
<strike id="1ndtl"></strike><strike id="1ndtl"></strike>
<strike id="1ndtl"></strike>
<span id="1ndtl"></span>
<span id="1ndtl"><dl id="1ndtl"></dl></span>
<th id="1ndtl"><noframes id="1ndtl"><span id="1ndtl"><video id="1ndtl"><strike id="1ndtl"></strike></video></span> <strike id="1ndtl"></strike>
<strike id="1ndtl"></strike>
<span id="1ndtl"><dl id="1ndtl"></dl></span>
  1. 首頁
  2. 以太坊去中心化交易所(《以太坊白皮書》解讀-下一代智能合約和去中心化應用平臺)

以太坊去中心化交易所(《以太坊白皮書》解讀-下一代智能合約和去中心化應用平臺)

《以太坊白皮書》-下一代智能合約和去中心化應用平臺

首先,開篇說了2009年中本村的全球社會化大實驗-比特幣的一些問題,比如比特幣沒有內在價值,但是他是區塊鏈領域的開山之作。接著說了以太坊要做什么?就是它計劃提供一種圖靈完備的編程語言用于區塊鏈中,就是我們現在知道的智能合約。

第一章 比特幣基本概念

2009年,中本聰首次實施了分布式貨幣,通過公鑰密碼體制來管理所有權與公式算法追蹤誰擁有貨幣的結合,即我們知道的工作量證明。工作量證明解決了兩個問題,第一就是他解決了網絡中的節點共同商定對比特幣賬本的更新問題,第二就是他允許了自由進入共識的流程機制,解決了誰來影響共識的政治問題。但是有個問題就是節點的權重和他的算力成正比。

比特幣的狀態轉換系統

實際上比特幣的賬本可以被認為是一個狀態轉換系統,其中存在一個所有現有比特幣的所有權狀態組成的“狀態”和一個狀態轉換功能。“狀態”就是已產生和未用完的貨幣的集合(未使用的交易輸出或者UTXO),每個UTXO有一個面額和一個擁有者,本質上就是一個密碼公鑰。交易包含一個或者多個輸入,每個輸入要包含對現有UTXO的引用和由所有者地址相關的私鑰生成的加密簽名,以及一個或者多個輸出,每個輸出要添加到新的UTXO中去。

Mining挖礦

比特幣的分布式共識需要網絡中的節點不斷嘗試生成“塊”的交易包,網絡每10分鐘產生一個塊,每個塊都有一個時間戳,和一個隨機數,一個前一個塊的引用和一個自上次產生以來的所有交易列表。

這里挖礦的概念就不詳細介紹,可以去查看比特幣白皮書。或者參考解讀中本聰的比特幣白皮書

然后說了惡意攻擊的情況,因為比特幣是密碼學安全的,所以攻擊將會瞄準系統中不受密碼學保護的部分:交易順序。其實就是雙花模型。

1:發送比特幣給一個商戶,購買一些產品(比如某NFT或者數字藏品),

2:等待商品發貨

3:創建另外一個交易,將剛才的比特幣發送給自己另外一個賬戶

4:試圖讓網絡相信,那比發送給自己的交易是第一筆交易。

正常的工作順序應該是,比如1交易發生,幾分鐘后礦工把交易包含在一個區塊中,比如27000區塊,在1個小時后,大約新產生了5個區塊都指向這個交易,然后商家就會把產品交付出去。但是如果攻擊者發起攻擊,那么他得先產生另外一個版本的“27000”區塊,然后把父區塊指向26999,然后他還得產生新的27001-27005指向自己的27000區塊,因為比特幣的規則是,最新的區塊默認是最長的一個,所以攻擊者想要自己比其他的區塊長,那么他得比其他的網絡有更多的算力才行(51%攻擊)。

默克爾樹

因為比特幣的存儲是在多級數據結構中,區塊的“散列”實際只是塊頭的散列,包含時間戳、隨機數、先前區塊散列和Merkle數的數據結構的根散列。Merkle數是一種二叉樹,由一組根節點組成,每個節點是由兩個子節點的散列,最后一個是單一的根節點,代表樹的頂部。如果惡意用戶想要改變虛假交易替換Merkle樹的底部,都會導致上方節點改變,最后改變整個根,所以可以很輕易的判斷出他是否為有效交易。

目前來說,由于Merkle樹協議,之前的節點是存儲全部的賬本的,到2014年的時候,已經占用了15GB的磁盤空間,所以出現了一種“輕節點”,既他只存儲了頭部區塊和與他們相關交易的分支。

其他區塊鏈的應用

Namecoin 是2010年創建,叫分布式名稱注冊數據庫,比如人們以“張三”貯存一個賬戶,那么其他人再用張三這個名字注冊既不被認可,因為他采取的方法是first-to-file模式。

Colord coin,它是一種協議,允許人們在比特幣鏈上創建自己的數字貨幣,人們創建的數字貨幣用一種不同的顏色來進行區分(實際是命名一種顏色的UTXO).

上面兩個案例說明了在比特幣網絡上創建一種共識協議的方式,第一種的弊端就是要搭建一套獨立的網絡,這比較困難,第二種就是應用太小不能保證自己的安全,因為V神認為分布式共識技術的應用程序將遵循冪律分布。

腳本

雖然可以在比特幣上實現簡單的腳本,但是還是有如下的缺陷:

1. 缺乏圖靈完備,它不支持所有的計算,缺少主要的是類循環。

2. 價值盲0UTXO無法對可撤銷的金額進行精細化控制。

3. 缺乏狀態-UTXO只有用完和沒用完兩種狀態。

4. 區塊鏈盲,UTXO對區塊鏈數據(隨機數、時間戳、區塊哈希)視而不見。

綜上,以太坊就是要建立一個新的區塊鏈,可以使用腳本構建元協議,并且該協議是無限制的,而腳本也是很容易和標準化的。

以太坊

以太坊通過構建本質上最終的抽象基礎層來實現的區塊鏈網絡:一種內置圖靈完備的編程語言,允許任何人編寫智能合約和分布式計算程序,這些程序可以為所有權,交易格式和狀態轉換函數編制自己的規則。

以太坊賬戶

在以太坊中,狀態有“賬戶”的對象組成,每個賬戶有20個字節的地址,狀態轉換是賬戶之間的價值和信息的直接轉移。包含4個字段:

1隨機數,用于確定每筆交易只能被處理一次的計算機

2. 賬戶的余額

3. 賬戶的合約代碼

4. 賬戶的存儲

“以太”是以太坊內部的主要加密燃料,用于支付交易費用。賬戶分為兩種類型,外部所有的賬戶,由私鑰控制,合同賬戶由合同代碼控制。外部所有的賬戶沒有代碼,人們從外部所有賬戶發送消息,以創建和簽署交易; 在合同賬戶中,合約賬戶每次收到消息后,代碼激活,將允許對內部存儲進行讀寫和發送其他消息或者依次創建合約。

消息和交易
“交易”術語在以太坊中是指被外部所有賬戶發送的存有消息的經過簽署的數據包。交易包含:
1.消息的接受人

2. 能證明發送者身份的簽名

3. 一定數量的從發送者轉移至接受者的以太幣

4. 一個可選的數據字段

5. 一個可選的數據字段

6. TARTGAS值,代表交易被執行時可以運行的最大計算步驟數

7. GASPRICE值,代表發送者為每個計算步驟支付的費用

對于6和7主要是為了防止代碼中的意外和惡意無限循環,因為每一步驟都需要花費gas費。

消息

合約具有向其他合約發送“消息”的能力。消息是從沒有被序列化的,只存在于以太坊執行環境的虛擬對象。消息包含:

1. 消息的發送者

2. 消息的接受者

3. 與消息一起被轉移的以太幣數量

4. 可選的數據字段

5. STARTGAS值

消息其實就是一個交易,它是由合同產生的而不是外部參與者生產的,一條消息會導致接收人賬戶運行其代碼。

以太坊的狀態轉換函數

1. 檢查交易是否被構建完好(例如,有正確的值),簽名是否正確,隨機數是否與發送者賬戶的隨機數匹配。如果不是,返回錯誤。

2. 通過 STARTGAS * GASPRICE計算出交易費用,確定發生地址來自于簽名,從發送者賬戶減去費用,同時增加發送者的隨機數。如果沒有足夠的余額,返回錯誤。

3. 初始化 GAS = STARTGAS,在交易中支付確定每字節數量的gas。

4. 從發送者賬戶轉移交易數額至接受者的賬戶。如果接受者的賬戶不存在,創建一個。如果接受者賬戶是一個合約,運行合約代碼要么完成,要么用光了所有的gas。

5. 如果是因為發送者沒有足夠的錢而導致轉移失敗,或者是代碼運行用光了gas,除了支付的費用外,恢復所有狀態的更改,并將費用支付給礦工的賬戶。

6. 相反的情況,將剩余的費用找零給發送者,支付消耗的費用給礦工。

舉個例子,這段很重要,看懂了你就理解了以太坊的交易邏輯。

假設,合約的存儲從空開始,交易是發送:10個以太幣,2000gas,0.001 gasprice 和 64字節,其中字節0-31代表數字2,字節32-63代表字符串CHARLIE。

1. 檢查交易是否有效并組織完好

2. 檢查交易發送者至少擁有2000 * 0.001 = 2 個以太幣,并從其賬戶上扣減2個以太幣

3. 始化 gas = 2000,假定交易是170字節,每字節5gas,減去850gas,剩下 1150 gas

4. 從發送者賬戶減去10個以太幣,將其增加到合約賬戶

5. 檢查合約賬戶的存儲索引 2 是否被使用,提示沒有,則將存儲索引2的數據設置為 CHARLIE 。假設這花費了187gas,余下的就是 1150 - 187 = 963 gas

6. 返還 963 * 0.0001 = 0.963 以太幣到發送者賬戶,同時返回結果狀態。

執行代碼

以太坊合約中的代碼采用低級的基于堆棧的字節碼編寫的,稱為“EVM代碼”,它是由一些列字節組成,每個字節表示一個操作,然后程序計數器+1.知道代碼循環結束或者錯誤或者STOP。而這些操作可以訪問三種類型的數據存儲:

1. 堆棧,數據壓入淡出的后進先出容器

2. 內存,一個無限拓展的字節數組

3. 合約的長期存儲,一個鍵值存儲,與堆棧和內存在計算結束后重置不同,他會長期保存。

EVM執行時,它的完整計算狀態可以由元組(block_state,transaction,message,code,memory,stack,pc,gas)定義,其中block_state表示賬戶的全局狀態并包含余額和存儲。在每輪執行前,都可以通過指令來找到全部元組的定義,然后運行時,改變元組定義,將gas減少1,PC th值加一。

區塊鏈和挖礦

以太坊的區塊鏈和比特幣有相似的地方,但是也有區別,以太坊的區塊不僅包含交易列表和最新狀態副本,還包含區塊號和難度。

他的數據結構不是采用了Merkle樹,而是用了Patricia樹,相比較來說,稍微高效了一點,比比特幣節省了5-20倍的空間。

應用

總的來說有三種應用,現在我們知道以太坊上目前有成千上萬的應用了。

第一類是金融程序,包括電子貨幣、金融衍生品、套期保值合約、儲蓄錢包、雇傭合同等等。

第二類半金融應用

第三類在線投標、分布式治理等應用。

代幣系統:

這里就不多說了,懂得都懂,但是需要補充一下,以太幣的優勢,就是他可以以貨幣支付交易費,既所有的應用都可以直接使用以太幣來進行交易,這就讓以太幣很有價值,意味著上面跑的應用越多,以太幣的價值就越大。

舉例應用

1. 金融衍生品和價值穩定的貨幣,這個太多了,一搜一大把。

2. 身份和信譽系統,比如前段時間火爆的DNS,域名系統。

3. 去中心化文件存儲,Dropbox。

4. 去中心化自治組織,people等

5. 存儲錢包,metamask。

6. 作物保險

7. 去中心化數據反饋,謝林幣

8. 智能多重簽名托管

9. 云計算

10. 點對點賭博

11. 預測市場

12. 鏈上去中心化市場,uni等。

總結:

以太坊的最初設想是加密貨幣的升級版本,通過高度的編程語言提供一些高級的功能,并且它是圖靈完備的,可以支持任何類型的應用和合約。相信以后以太坊會非常合適作為大量金融和非金融協議的基礎層。

相關文章
美女网站色