目的是讓開(kāi)發(fā)者可以在此之上開(kāi)發(fā)Dapp
賬戶Account
state:
- account: 是個(gè)對(duì)象,有20字節(jié)的地址
{
nonce: 序號(hào),
balance: 剩下的錢(qián)
contract code :代碼的hash ,合約賬戶有,外部賬戶就沒(méi)有
storage : 默爾樹(shù)的根hash,默認(rèn)空的
}
- 狀態(tài)轉(zhuǎn)換: 二個(gè)賬戶之間轉(zhuǎn)移價(jià)值和信息
賬號(hào)有2類(lèi)
- externally owned accounts
私鑰控制, 沒(méi)有代碼. 通過(guò)創(chuàng)建交易從它發(fā)送消息, 是最初的發(fā)起者 - contract accounts
合約代碼控制.收到消息后,代碼激活, 它就可以- 對(duì)內(nèi)部存儲(chǔ)讀寫(xiě)
- 發(fā)送消息
- 創(chuàng)建合約
交易transaction
存著externally owned account發(fā)送的消息(message) 的 簽名數(shù)據(jù)包 , 叫交易
里面的數(shù)據(jù)是:
{
接受者
發(fā)送者簽名
一定數(shù)額用于發(fā)送的以太幣
data: 可選
STARTGAS : 數(shù)字,代碼交易執(zhí)行的最多計(jì)算步驟 相當(dāng)于gas limit
GASPRICE:數(shù)字,代表每個(gè)計(jì)算步驟的自己愿意給的價(jià)格
}
gas: 就是俗稱(chēng)的燃料
為了防止代碼無(wú)限循環(huán), 規(guī)定交易必須寫(xiě)計(jì)數(shù)步數(shù)限制STARTGAS
. 計(jì)算的基礎(chǔ)單位是gas
.一般來(lái)說(shuō),計(jì)算一步是一gas
.但是計(jì)算復(fù)雜的或者占空間大的會(huì)更高.另外 一個(gè)byte 算5gas
的費(fèi)用
gasprice 會(huì)影響到該筆交易被打包所需等待的時(shí)間俘种。
如果該交易的操作所使用的gas數(shù)量小于或等于所設(shè)置的gas limit舆瘪,交易會(huì)被處理。但如果gas總消耗超過(guò)gas limit旨怠,所有的操作都會(huì)被重置纯衍,但手續(xù)費(fèi)依舊會(huì)被收取。
區(qū)塊鏈會(huì)顯示這筆交易完成嘗試,但因?yàn)闆](méi)有提供足夠的gas導(dǎo)致所有的合約命令都被復(fù)原惶桐。
交易完成之后沒(méi)有被使用的gas會(huì)以以太幣的形式返還給發(fā)起者。gas消耗只是一個(gè)預(yù)估值潘懊,所以許多用戶會(huì)超額支付gas來(lái)保證他們的交易會(huì)被接受姚糊。
原文:https://blog.csdn.net/wo541075754/article/details/79042558
消息調(diào)用 Messages
合約產(chǎn)生的 交易
和交易很像,就少了一個(gè)gas價(jià)格字段
區(qū)別是 它由合約產(chǎn)生的,而不是外部賬號(hào)
它是一個(gè)虛擬的對(duì)象,不會(huì)被系列化, 只有執(zhí)行環(huán)境存在,合約執(zhí)行CALL
碼時(shí)產(chǎn)生.這樣,合約可以和合約接觸, 就好像外部賬戶和合約接觸一樣
gas 可以被交易或者合約 分配
例子
交易:
{
接受者:是一個(gè)合約賬戶,
發(fā)送者簽名: 一個(gè)外部賬戶的簽名,
一定數(shù)額用于發(fā)送的以太幣: 10 ether value,
data: (2,"CHARLIE"),
STARTGAS : 2000 gas
GASPRICE:0.001 ether gasprice
}
- 檢查
- 2000 * 0.001 = 2 ether.從發(fā)送者賬戶 減掉2個(gè) 變成2000gas
- 假設(shè)交易有170直接, 2000-170*5=1150
- 從發(fā)送者賬戶-10ether, 合約賬戶+10ether
- 運(yùn)行代碼, 把合約存儲(chǔ)器index2設(shè)為"CHARLIE", 假設(shè)這消耗了187gas,1150-187=963, 之前在發(fā)送賬戶扣掉的2000gas 還剩963gas
- 963 gas還給發(fā)送者
以太坊區(qū)塊
和比特幣區(qū)塊的區(qū)別在于, 以太坊區(qū)塊不止保存了交易, 還保存了最近的狀態(tài)
另外, 以太坊區(qū)塊 把區(qū)塊數(shù)量也記入了區(qū)塊