中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

區塊鏈的以太坊網絡智能合約原理是什么

發布時間:2022-01-19 10:12:54 來源:億速云 閱讀:234 作者:iii 欄目:互聯網科技

今天小編給大家分享一下區塊鏈的以太坊網絡智能合約原理是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1

區塊鏈101

區塊鏈簡而言之就是非中心化的分布式賬本,一種多方參與者共享的特定類型數據庫。

賬本中保存在區塊鏈網絡中發生所有的交易,每個加入網絡的節點都有數據的全量拷貝。經濟激勵模型削弱甚至消除了獨立節點之間的信任基礎,在不需要信任的開放網絡中轉移數字資產。

區塊鏈世界奉行 Don't trust, verify it 原則。

2

智能合約

圖靈完備的智能合約讓以太坊成為繼比特幣之后區塊鏈技術最大的亮點。比特幣是數字資產作為價值的載體,而以太坊超越了數字資產屬性,賦能去中心化應用。智能合約是能夠在區塊鏈網絡運行的代碼邏輯。

3

以太坊賬戶模型和狀態模型

比特幣使用 UTXO 模型,而以太坊使用賬戶模型。智能合約在以太坊中也屬于賬戶。以太坊網絡有且僅有一個經常被更新的 State trie 全局狀態。state trie 通過健值對維護所有在以太坊網絡發生過交易的賬戶。

key 為長度為 160 bit 的以太坊地址,value 為下面四個要素使用 RLP (Recursive-Length Prefix 編碼方法) 編碼而來。每個賬戶都是 state trie 的一個節點,所有賬戶的 state trie 做類默克爾樹得到根節點 (State Trie?—?Keccak-256-bit hash of the state trie’s root node stored as the “stateRoot” value)

  • nonce

  • balance

  • storageRoot

  • codeHash

下圖為 state trie 與區塊的關系

區塊鏈的以太坊網絡智能合約原理是什么

Relationship between the State Trie (leveldb implementation of a Merkle Patricia Trie) and an Ethereum block

兩種賬戶 nonce (賬戶中成功轉賬次數) 和 balance (eth 余額) 字段都有數據,智能合約賬戶 storageRoot (保存合約的所有數據)和 codeHash (保存合約代碼編譯后字節碼) 有數據,而普通賬戶這兩個字段為空。

合約的數據保存在 storage trie 中,正如 state trie 一樣,storage trie 同樣存儲格式同樣為健值對 (keys are storage locations and values are storage values) 對應合約中變量名和值,這些健值對通過默克爾散列之后得到 storageRoot 存儲在賬戶中。

下圖為 storage trie 和 state trie 的關系

區塊鏈的以太坊網絡智能合約原理是什么

eth_storage_tree.png

值得強調的是:區塊數據只保存 transaction trie (類似比特幣中的區塊頭中存儲所有區塊中的交易默克爾樹根結點), state trie root  和 receipts trie root。

4

智能合約賬戶

contract Counter {

    uint counter;
   function Counter(

) public {

        counter = 0; 

    }    function

count() public {

        counter 
   = counter + 1; 

    }

 }

簡單的智能合約,類型為 uint 的 counter 為合約的狀態,count 函數被調用之后, counter 值加 1

區塊鏈的以太坊網絡智能合約原理是什么

smart_contract_account.png

5

以太坊交易

交易信息中有個比較特殊的字段 data , 這個字段值結合 to 字段可把以太坊交易分為三大類:

轉賬

  • TO 收款地址

  • DATA 為空或任意交易備注信息

  • AMOUNT 交易 ether 數量

新建合約

  • TO 字段為空,新建合約被觸發

  • DATA 字段為智能合約字節碼

  • AMOUNT 字段可為空或任意數,非負數則轉賬給新建的合約賬戶

調用合約

  • TO 字段為合約賬戶地址

  • DATA 字段為合約函數及其參數

  • AMOUNT 空或任意數

// Transfer of value

{

    to: '0x687422eEA2cB73B5d3e24
2bA5456b782919AFc85',

    value: 0.0005

    data: ‘0x’ // 
Could also send a message here 
if we want to

}

// Create smart contract

{

    to: '',
    value: 0.0

    data: ‘0x60606040523415610
00c57fe5b60405160c0806……………’
 }

// Call contract

{

    to: '0x687422eEA2cB73B5d3e2
42bA5456b782919AFc85',  

// Contract

    value: 0.0

    data: '0x606060405234156100
0c57fe5b60405160c0806……………'

}

值得強調的是,在以太坊交易中有 gas 的概念,在以太坊網絡跑運用需要一定的成本,同時必須設置 gas 上限,交易執行完成之后,剩余的 gash 將會返還。

以上就是“區塊鏈的以太坊網絡智能合約原理是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋江市| 文安县| 家居| 芷江| 京山县| 会宁县| 高安市| 马山县| 榕江县| 霸州市| 扶风县| 中卫市| 镇坪县| 江北区| 兴山县| 青阳县| 清苑县| 安西县| 儋州市| 咸丰县| 马鞍山市| 乐业县| 南城县| 灌阳县| 武邑县| 贵定县| 台南县| 寻乌县| 加查县| 松阳县| 通山县| 会泽县| 旬阳县| 梓潼县| 蕉岭县| 甘肃省| 伽师县| 安西县| 华容县| 铜鼓县| 涞源县|