以太坊原始碼解讀(1)以太坊架構與模組結構

2021-09-05 12:50:47 字數 2778 閱讀 6683

以太坊虛擬機器,以太坊中智慧型合約的執行環境

區別去位元幣的utxo,以太坊構建裡賬戶,賬戶分為兩類,內部賬戶和外部賬戶,內部賬戶指合約賬戶,外部賬戶指使用者賬戶

在以太坊網路上的任何乙個訊息的傳遞都是一次交易

以太坊網路的執行機制之一,每執行一步合約**都與要消耗一定的gas,gas的設定一方面是為了提高使用者的作惡成本,另一方面也是為了提高礦工的積極性

挖礦,以太坊網路通過工作量證明機制保證節點之間的同步與網路的安全執行

儲存與主存,storage被稱為儲存,kv形式儲存,memory被稱為主存每次合約被呼叫都會有一塊新的被清除過的主存

p2p對等網路,作為以太坊網路的構成機制之一,保證網路內的所有節點對等

從低到高為 協議層:p2p網路通訊,分布式演算法,加密簽名和資料儲存技術

​ 介面層:介面成與協議層完全的進行分離,包括分布式儲存等

從低到高為 資料層:以key-value的形式儲存資料,使用leveldb資料庫,以及block

網路層:p2p網路
​ 共識層:pow+pos共識

激勵層:mine機制
​ 合約層:實現以**約束行為的方式

block

所有賬戶的相關活動,以交易(transaction)的格式儲存,每個block有乙個交易物件的列表;每個交易的執行結果,由乙個receipt物件與其包含的一組log物件記錄;所有交易執行完後生成的receipt列表,儲存在block中(經過壓縮加密)。不同block之間,通過前向指標parenthash乙個乙個串聯起來成為乙個單向鍊錶,blockchain 結構體管理著這個鍊錶。block包括header和body兩個部分

header

header是block的組成部分主要包括關於block的屬性

熟悉解釋

parenthash

除創世區塊外所有的區塊都有的前乙個區塊的hash

coinbase

礦工的位址

unclehash

叔塊的hash

root

statedb中的根節點的rlp的hash值

txhash

block中tx trie的根節點的rlp的hah值

receipthash

block中的 "receipt trie」的根節點的rlp雜湊值

bloom

bloom過濾器(filter),用來快速判斷乙個引數log物件是否存在於一組已知的log集合中

difficulty

區塊的難度

number

區塊的序號

time

區塊「應該」被建立的時間

gaslimit

區塊內所有gas消耗的理論上限

gasused

區塊內所有transaction執行時所實際消耗的gas總和

nonce

乙個64bit的雜湊數,它被應用在區塊的"挖掘"階段,並且在使用中會被修改

body

熟悉解釋

tracsactions

區塊內部的交易集合

uncles

叔塊集合

blockchain

blockchain結構體被用來管理整個區塊單向鍊錶,在乙個ethereum客戶端軟體(比如錢包)中,只會有乙個blockchain物件存在。同block/header的關係類似,blockchain還有乙個成員變數型別是headerchain, 用來管理所有header組成的單向鍊錶。

headerchain

mptethereum 使用的merkle-patriciatrie(mpt)結構,源自於trie結構,又分別繼承了patriciatrie和merkletree的優點,並基於內部資料的特性,設計了全新的節點體系和插入/載入機制。

包名說明

accounts

以太坊實現的賬戶功能

build

一些配置資訊

cmdm命令列結構

common

提供了公共資料結構,工具類

console

console控制台

contracts

包含containers/docker

core

核心**

crypto

加密和hash演算法

dashboard

eth實現了以太坊的協議

ethclient

提供了以太坊的rpc客戶端

ethdb

eth的資料庫(包括實際使用的leveldb和供測試使用的記憶體資料庫)

ethstats

提供網路狀態的報告

event

實時的事件

internal

les以太坊的輕量級協議子集

light

實現以太坊輕量級客戶端的按需檢索功能

log日誌資訊

metrics

磁碟計數

miner

挖礦與區塊的生成

mobile

移動端使用的warpper

node

節點多種型別

p2p網路協議

params

rlp以太坊hash序列化處理

rpc遠端呼叫

signer

swarm

網路處理

tests

測試trie

以太坊重要的資料結構package trie implements merkle patricia tries.

vendor

第三方whisper

whisper節點協議

原始碼安裝以太坊 wtc

1 安裝go 先更新一下 sudo apt get update sudo apt get y upgradesudo tar xvf go1.9 2.linux amd64.tar gzsudo mv go usr local設定路徑vi etc profile export path path ...

以太坊原始碼 交易(一)

交易是區塊鏈中最基本也是最核心的乙個概念,在以太坊中,交易更是重中之重,因為以太坊是乙個智慧型合約平台,以太坊上的應用都是通過智慧型合約與區塊鏈進行互動,而智慧型合約的執行是由交易觸發的,沒有交易,智慧型合約就是一段死的 可以說在以太坊中,一切都源於交易。下面就來看看在以太坊中交易是什麼樣的,交易裡...

以太坊原始碼分析 Whisper

whisper具有以下基本特性和概念 通訊加密 每一條whisper訊息在網路上都是加密傳輸的,可以選擇非對稱加密 橢圓曲線 和對稱加密 aes gsm 兩種加密演算法之一。envelope 信封 envelope是網路中傳輸的whisper訊息的基本單位,它包含已加密的原始訊息以及訊息相關的控制資...