溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

區(qū)塊鏈學(xué)習(xí)(2)--以太坊中基本概念

發(fā)布時(shí)間:2020-07-01 00:33:40 來(lái)源:網(wǎng)絡(luò) 閱讀:3573 作者:daydaydream 欄目:網(wǎng)絡(luò)安全

1、以太幣單位換算。以太坊的單位,沿襲了科學(xué)界的傳統(tǒng),用做過杰出貢獻(xiàn)的數(shù)學(xué)、密碼學(xué)專家的名字命名。以太坊的最小單位是 Wei。

Kwei(Babbage)= 10 的 3 次方 Wei

Mwei(Lovelace)= 10 的 6 次方 Wei

Gwei(Shannon)= 10 的 9 次方 Wei

MicroEther(Szabo)= 10 的 12 次方 Wei

MilliEther(Finney)= 10 的 15 次方 Wei

Ether = 10 的 18 次方 Wei

2、以太坊賬戶不同于比特幣中UTXO。 賬戶分兩類: 外部擁有賬戶(EOA)(普通賬戶),還有合約賬戶。
普通賬戶:存放以太幣的賬戶,可以隨意生成,特性如下:

  • 擁有以太幣余額(以太幣存放的地方,與比特幣的UTXO模式不同)的balance。
  • 用于確定每筆交易只能被處理一次的計(jì)數(shù)器(nonce)。
  • 發(fā)送交易(以太幣轉(zhuǎn)賬、發(fā)布合約、調(diào)用智能合約)
  • 通過私鑰控制
  • 沒有相關(guān)聯(lián)的代碼

合約 賬戶:是功能和數(shù)據(jù)的集合,存在于以太坊的特定地址(合約地址),特性如下:

  • 可以擁有代幣余額
  • 有相關(guān)聯(lián)的代碼
  • 通過交易或消息調(diào)用的方式觸發(fā)并由以太坊虛擬機(jī)(EVM)解釋執(zhí)行

3、以太坊交易:以太坊中一個(gè)賬戶向另一個(gè)賬戶發(fā)送被簽名消息數(shù)據(jù)包的過程,區(qū)塊鏈會(huì)記錄并存儲(chǔ)相關(guān)數(shù)據(jù)。以太坊智能合約改變一個(gè)合約賬戶的數(shù)據(jù)狀態(tài)也是一筆交易,同樣要花費(fèi)手續(xù)費(fèi)。

交易的要素包含以下幾點(diǎn):

  • 消息的發(fā)送者
  • 消息的接收者
  • 簽名信息,用來(lái)證明發(fā)送者有意向通過區(qū)塊鏈向接收者發(fā)送消息
  • 價(jià)值域,從發(fā)送方轉(zhuǎn)移到接受方的以太幣的數(shù)量
  • 可選的數(shù)據(jù)域,用來(lái)儲(chǔ)存智能合約或調(diào)用智能合約的代碼
  • gasLimit,該交易的執(zhí)行時(shí)使用gas的上限
  • gasPrice,交易發(fā)送者愿意支付的gas費(fèi)用的價(jià)格。
  • 一個(gè)單位的gas表示了執(zhí)行一個(gè)基本指令,例如一個(gè)計(jì)算步驟。

4、區(qū)塊gas limit是單個(gè)區(qū)塊允許的最多gas總量,以此可以用來(lái)決定單個(gè)區(qū)塊中能打包多少筆交易。區(qū)塊的gas limit是由在網(wǎng)絡(luò)上的礦工決定的,可以參考https://stats.ethfans.org/ 反饋的數(shù)據(jù)。Gas Price 燃料價(jià)格,GasUsed:該交易消耗的總gas數(shù)量。交易費(fèi) = gasUsed gasPrice,最高交易成本=Gas Price Gas Limit 。

5、交易發(fā)出后,會(huì)向全網(wǎng)廣播,途徑很多個(gè)礦工節(jié)點(diǎn),這些節(jié)點(diǎn)又會(huì)幫你轉(zhuǎn)發(fā)給下一個(gè)節(jié)點(diǎn),直到你的交易被礦工打包進(jìn)區(qū)塊中。每一次轉(zhuǎn)發(fā)都會(huì)消耗一部分Gas,如果被打包之前燃料耗盡,達(dá)到Gas Limit設(shè)置的上限,那這交易就一定會(huì)失敗。ETH會(huì)退回,但燃料費(fèi)還是要扣除。

6、智能合約,以太坊中創(chuàng)新在于它首次提出smart contract(智能合約)的概念和底層實(shí)現(xiàn)。所謂合約是指代碼(功能)和數(shù)據(jù)(狀態(tài))的集合,存在于以太坊區(qū)塊鏈的特定地址。智能合約是通過交易或消息調(diào)用的方式觸發(fā)并由以太坊虛擬機(jī)(EVM)解釋執(zhí)行。

7、EVM是Ethereum Virtual Machine的簡(jiǎn)寫,稱為以太坊虛擬機(jī),EVM是以太坊平臺(tái)最核心的組件,所有的智能合約二進(jìn)制字節(jié)碼都依賴EVM來(lái)執(zhí)行。EVM是一個(gè)運(yùn)行環(huán)境,支持任意復(fù)雜的代碼,在科學(xué)術(shù)語(yǔ)中稱為“圖靈完備的”。

8、Solidity是以太坊官方推薦的以太坊應(yīng)用的高級(jí)編程語(yǔ)言,它的語(yǔ)法類似JavaScript,它被設(shè)計(jì)成以編譯的方式生成以太坊虛擬機(jī)代碼。所以如果我們要?jiǎng)?chuàng)建自己的合約代碼,使用Solidity是非常容易上手的。

9、Browser-solidity是一個(gè)官方提供的基于瀏覽器的合約編譯器,使用它進(jìn)行一些簡(jiǎn)單的合約開發(fā)測(cè)試是非常好用的,另外它的編譯器版本會(huì)及時(shí)更新。Solidity在線編譯器網(wǎng)址:https://ethereum.github.io/browser-solidity

10、Mist是以太坊官方發(fā)布的圖形客戶端,它兼具錢包、開發(fā)調(diào)試于一體的圖形化工具,方便我們創(chuàng)建、開發(fā)、測(cè)試和部署智能合約。Mist支持Windows、Mac 、Linux等各種操作系統(tǒng)。

11、Geth的全稱是Go-ethereum,是一個(gè)以太坊客戶端,也是目前最常用的客戶端,使用Geth進(jìn)行開發(fā)調(diào)試也是比較好用的,Geth客戶端具有完備的操作指令,在我們剛剛接觸以太坊開發(fā)時(shí),使用Geth進(jìn)行簡(jiǎn)單的私鏈調(diào)試是非常好的學(xué)習(xí)環(huán)境。
geth命令用法:

geth [選項(xiàng)] 命令 [命令選項(xiàng)] [參數(shù)…]

命令:

account 管理賬戶
attach 啟動(dòng)交互式JavaScript環(huán)境(連接到節(jié)點(diǎn))
bug 上報(bào)bug Issues
console 啟動(dòng)交互式JavaScript環(huán)境
copydb 從文件夾創(chuàng)建本地鏈
dump Dump(分析)一個(gè)特定的塊存儲(chǔ)
dumpconfig 顯示配置值
export 導(dǎo)出區(qū)塊鏈到文件
import 導(dǎo)入一個(gè)區(qū)塊鏈文件
init 啟動(dòng)并初始化一個(gè)新的創(chuàng)世紀(jì)塊
js 執(zhí)行指定的JavaScript文件(多個(gè))
license 顯示許可信息
makecache 生成ethash驗(yàn)證緩存(用于測(cè)試)
makedag 生成ethash 挖礦DAG(用于測(cè)試)
monitor 監(jiān)控和可視化節(jié)點(diǎn)指標(biāo)
removedb 刪除區(qū)塊鏈和狀態(tài)數(shù)據(jù)庫(kù)
version 打印版本號(hào)
wallet 管理Ethereum預(yù)售錢包
help,h 顯示一個(gè)命令或幫助一個(gè)命令列表

ETHEREUM選項(xiàng):

--config value TOML 配置文件
--datadir “xxx” 數(shù)據(jù)庫(kù)和keystore密鑰的數(shù)據(jù)目錄
--keystore keystore存放目錄(默認(rèn)在datadir內(nèi))
--nousb 禁用監(jiān)控和管理USB硬件錢包
--networkid value 網(wǎng)絡(luò)標(biāo)識(shí)符(整型, 1=Frontier, 2=Morden (棄用), 3=Ropsten, 4=Rinkeby) (默認(rèn): 1)
--testnet Ropsten網(wǎng)絡(luò):預(yù)先配置的POW(proof-of-work)測(cè)試網(wǎng)絡(luò)
--rinkeby Rinkeby網(wǎng)絡(luò): 預(yù)先配置的POA(proof-of-authority)測(cè)試網(wǎng)絡(luò)
--syncmode "fast" 同步模式 ("fast", "full", or "light")
--ethstats value 上報(bào)ethstats service URL (nodename:secret@host:port)
--identity value 自定義節(jié)點(diǎn)名
--lightserv value 允許LES請(qǐng)求時(shí)間最大百分比(0 – 90)(默認(rèn)值:0)
--lightpeers value 最大LES client peers數(shù)量(默認(rèn)值:20)
--lightkdf 在KDF強(qiáng)度消費(fèi)時(shí)降低key-derivation RAM&CPU使用

開發(fā)者(模式)選項(xiàng)

--dev 使用POA共識(shí)網(wǎng)絡(luò),默認(rèn)預(yù)分配一個(gè)開發(fā)者賬戶并且會(huì)自動(dòng)開啟挖礦。
--dev.period value 開發(fā)者模式下挖礦周期 (0 = 僅在交易時(shí)) (默認(rèn): 0)

ETHASH 選項(xiàng):

--ethash.cachedir ethash驗(yàn)證緩存目錄(默認(rèn) = datadir目錄內(nèi))
--ethash.cachesinmem value 在內(nèi)存保存的最近的ethash緩存?zhèn)€數(shù) (每個(gè)緩存16MB ) (默認(rèn): 2)
--ethash.cachesondisk value 在磁盤保存的最近的ethash緩存?zhèn)€數(shù) (每個(gè)緩存16MB) (默認(rèn): 3)
--ethash.dagdir "" 存ethash DAGs目錄 (默認(rèn) = 用戶hom目錄)
--ethash.dagsinmem value 在內(nèi)存保存的最近的ethash DAGs 個(gè)數(shù) (每個(gè)1GB以上) (默認(rèn): 1)
--ethash.dagsondisk value 在磁盤保存的最近的ethash DAGs 個(gè)數(shù) (每個(gè)1GB以上) (默認(rèn): 2)

交易池選項(xiàng):

--txpool.nolocals 為本地提交交易禁用價(jià)格豁免
--txpool.journal value 本地交易的磁盤日志:用于節(jié)點(diǎn)重啟 (默認(rèn): "transactions.rlp")
--txpool.rejournal value 重新生成本地交易日志的時(shí)間間隔 (默認(rèn): 1小時(shí))
--txpool.pricelimit value 加入交易池的最小的gas價(jià)格限制(默認(rèn): 1)
--txpool.pricebump value 價(jià)格波動(dòng)百分比(相對(duì)之前已有交易) (默認(rèn): 10)
--txpool.accountslots value 每個(gè)帳戶保證可執(zhí)行的最少交易槽數(shù)量 (默認(rèn): 16)
--txpool.globalslots value 所有帳戶可執(zhí)行的最大交易槽數(shù)量 (默認(rèn): 4096)
--txpool.accountqueue value 每個(gè)帳戶允許的最多非可執(zhí)行交易槽數(shù)量 (默認(rèn): 64)
--txpool.globalqueue value 所有帳戶非可執(zhí)行交易最大槽數(shù)量 (默認(rèn): 1024)
--txpool.lifetime value 非可執(zhí)行交易最大入隊(duì)時(shí)間(默認(rèn): 3小時(shí))

API和控制臺(tái)選項(xiàng):

--rpc 啟用HTTP-RPC服務(wù)器
--rpcaddr value HTTP-RPC服務(wù)器接口地址(默認(rèn)值:“l(fā)ocalhost”)
--rpcport value HTTP-RPC服務(wù)器監(jiān)聽端口(默認(rèn)值:8545)
--rpcapi value 基于HTTP-RPC接口提供的API
--ws 啟用WS-RPC服務(wù)器
--wsaddr value WS-RPC服務(wù)器監(jiān)聽接口地址(默認(rèn)值:“l(fā)ocalhost”)
--wsport value WS-RPC服務(wù)器監(jiān)聽端口(默認(rèn)值:8546)
--wsapi value 基于WS-RPC的接口提供的API
--wsorigins value websockets請(qǐng)求允許的源
--ipcdisable 禁用IPC-RPC服務(wù)器
--ipcpath 包含在datadir里的IPC socket/pipe文件名(轉(zhuǎn)義過的顯式路徑)
--rpccorsdomain value 允許跨域請(qǐng)求的域名列表(逗號(hào)分隔)(瀏覽器強(qiáng)制)
--jspath loadScript JavaScript加載腳本的根路徑(默認(rèn)值:“.”)
--exec value 執(zhí)行JavaScript語(yǔ)句(只能結(jié)合console/attach使用)
--preload value 預(yù)加載到控制臺(tái)的JavaScript文件列表(逗號(hào)分隔)

網(wǎng)絡(luò)選項(xiàng):

--bootnodes value 用于P2P發(fā)現(xiàn)引導(dǎo)的enode urls(逗號(hào)分隔)(對(duì)于light servers用v4+v5代替)
--bootnodesv4 value 用于P2P v4發(fā)現(xiàn)引導(dǎo)的enode urls(逗號(hào)分隔) (light server, 全節(jié)點(diǎn))
--bootnodesv5 value 用于P2P v5發(fā)現(xiàn)引導(dǎo)的enode urls(逗號(hào)分隔) (light server, 輕節(jié)點(diǎn))
--port value 網(wǎng)卡監(jiān)聽端口(默認(rèn)值:30303)
--maxpeers value 最大的網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量(如果設(shè)置為0,網(wǎng)絡(luò)將被禁用)(默認(rèn)值:25)
--maxpendpeers value 最大嘗試連接的數(shù)量(如果設(shè)置為0,則將使用默認(rèn)值)(默認(rèn)值:0)
--nat value NAT端口映射機(jī)制 (any|none|upnp|pmp|extip:<IP>) (默認(rèn): “any”)
--nodiscover 禁用節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制(手動(dòng)添加節(jié)點(diǎn))
--v5disc 啟用實(shí)驗(yàn)性的RLPx V5(Topic發(fā)現(xiàn))機(jī)制
--nodekey value P2P節(jié)點(diǎn)密鑰文件
--nodekeyhex value 十六進(jìn)制的P2P節(jié)點(diǎn)密鑰(用于測(cè)試)

12、Truffle是針對(duì)基于以太坊的Solidity語(yǔ)言的一套開發(fā)框架??梢岳盟_發(fā)去中心化應(yīng)用(Dapps)

13、testrpc是在本地使用內(nèi)存模擬的一個(gè)以太坊環(huán)境,對(duì)于開發(fā)調(diào)試來(lái)說(shuō),更為方便快捷,當(dāng)合約在testrpc中測(cè)試通過后,再部署到geth中去。testrpc不同于geth,geth是真正的以太坊環(huán)境。

14、hash概念:
hash算法是一種加密算法,是把任意長(zhǎng)度的輸入通過散列函數(shù)變換為固定散列長(zhǎng)度的輸出算法。這類算法是公開的,且是一種單向密碼體制,即一個(gè)從明文到密文的不可逆映射,只有加密過程,沒有解密過程。
如:MD5和SHA-1可以說(shuō)是應(yīng)用最廣泛的Hash算法。
具有五個(gè)特性:(1)易計(jì)算,任意給定輸入容易計(jì)算;(2)易壓縮,輸入任意長(zhǎng)度輸出長(zhǎng)度固定;(3)單向性,沒有可逆算法解密;(4)輸入敏感,任何微小改變會(huì)造成輸出很大的變化;(5)抗碰撞性,很難找到輸入不同輸出結(jié)果相同的hash對(duì)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI