【劉文彬】探路以太坊

原文鏈接:醒者呆的博客園,https://www.cnblogs.com/Evsward/p/ethereum.html

關(guān)鍵字:以太坊五鲫,加密貨幣河绽,crowdsale返劲,geth,console,web3.js

以太坊簡(jiǎn)介

一句話簡(jiǎn)介:以太坊是一個(gè)基于功能齊全的編程語(yǔ)言構(gòu)建的眾多去中心化區(qū)塊鏈應(yīng)用的平臺(tái)窟蓝。

下面來(lái)解讀一下這句話:

  • 平臺(tái):首先以太坊是一個(gè)平臺(tái)罪裹,這個(gè)平臺(tái)上面有很多應(yīng)用。
  • 應(yīng)用:這些應(yīng)用是是去中心化的疗锐,基于區(qū)塊鏈技術(shù)坊谁。所以這些應(yīng)用可以實(shí)現(xiàn)永不停歇,因?yàn)樗欠植际降幕ブ行幕目谏郑赑2P網(wǎng)絡(luò)的,這些應(yīng)用被管理在以太坊錢(qián)包上面雇卷。
  • 錢(qián)包:以太坊錢(qián)包鬓椭,本質(zhì)上以太坊錢(qián)包也是其中一個(gè)應(yīng)用颠猴,它是一個(gè)網(wǎng)關(guān),可以管理所有基于以太坊平臺(tái)的應(yīng)用小染,它可以讓你持有或者保護(hù)以太幣或其他建立在以太坊上的加密資產(chǎn)翘瓮。以太坊錢(qián)包也可以實(shí)現(xiàn)直接對(duì)智能合約的寫(xiě)入、部署以及使用裤翩。
  • 區(qū)塊鏈:以太坊區(qū)塊鏈?zhǔn)且粭l強(qiáng)大的资盅,分享型的,全球性的基礎(chǔ)設(shè)施踊赠,用來(lái)證明財(cái)產(chǎn)的歸屬者以及財(cái)產(chǎn)的交易流向呵扛。通過(guò)這一條鏈,可以實(shí)現(xiàn)眾多應(yīng)用筐带,開(kāi)發(fā)者可以創(chuàng)建交易所今穿、存儲(chǔ)債務(wù)登記以及證實(shí)各種允諾等應(yīng)用玩法。這些應(yīng)用可以對(duì)各種實(shí)體期貨進(jìn)行交易伦籍,避免中間人攻擊以及交易對(duì)方欺騙蓝晒。
  • 智能合約:這些應(yīng)用是使用一個(gè)功能齊全的編程語(yǔ)言構(gòu)建的,這個(gè)語(yǔ)言指的是智能合約帖鸦,而智能合約無(wú)疑是采用Go語(yǔ)言開(kāi)發(fā)的芝薇。智能合約是這些應(yīng)用的“驅(qū)動(dòng)”,通過(guò)智能合約富蓄,應(yīng)用可以完全按照編程所寫(xiě)去執(zhí)行剩燥,而不會(huì)涉及downtime,審查,欺騙以及第三方干擾立倍。

關(guān)于以太坊錢(qián)包灭红,官方有一句話是 It allows you to hold and secure other crypto-assets built on Ethereum, 以太坊允許你持有和保護(hù)基于以太坊的加密資產(chǎn)口注,那么第一個(gè)問(wèn)題這個(gè)加密資產(chǎn)是否可以自行創(chuàng)建变擒?加密資產(chǎn)是否也可以是類(lèi)似于以太幣的電子貨幣?是的是的寝志,完全可以娇斑,下面我們將具體介紹。

加密貨幣

使用智能合約的一種新語(yǔ)言Solidity材部,設(shè)計(jì)并發(fā)行你自己的加密貨幣毫缆。

上面講到了各種實(shí)體期貨以及以太幣等資產(chǎn),那么如果我想在以太坊平臺(tái)上建立一個(gè)應(yīng)用乐导,應(yīng)用內(nèi)部的交易使用我自己的加密貨幣呢苦丁?這個(gè)加密貨幣可以代表真實(shí)世界的商品。這種加密貨幣會(huì)調(diào)用以太坊統(tǒng)一的虛擬幣接口物臂,從而讓基于自定義貨幣的合同均可以兼容以太坊錢(qián)包旺拉,其他合同和交易也均采用這套接口产上。接著,對(duì)于你發(fā)行的加密貨幣是可以設(shè)置一個(gè)固定的總數(shù)或者一個(gè)基于某寫(xiě)規(guī)則而浮動(dòng)的數(shù)量蛾狗。在以太坊中晋涣,你可以:

  • 構(gòu)建一種貨幣可以交易,同時(shí)可設(shè)定他們的發(fā)行量沉桌。
  • 構(gòu)建一個(gè)中心化銀行來(lái)發(fā)行貨幣谢鹊。
  • 設(shè)計(jì)一種基于難題的加密貨幣团赏。

請(qǐng)參考詳細(xì)開(kāi)發(fā)文檔

眾募

如果你已經(jīng)有想法并準(zhǔn)備在以太坊上面做點(diǎn)什么称近,但是缺乏啟動(dòng)資金。同樣可以使用以太坊,創(chuàng)建一個(gè)合同來(lái)募集貢獻(xiàn)者的資金直到達(dá)成某種目標(biāo)冰抢。根據(jù)成果,這筆錢(qián)要么被發(fā)放到項(xiàng)目擁有者手里要么原路返還給貢獻(xiàn)者們艘狭。所有的過(guò)程不需要中間的仲裁人挎扰,票據(jù)交換所或者不確信的對(duì)他人的信任。對(duì)了巢音,你甚至可以使用上面你自己創(chuàng)建的加密貨幣來(lái)追蹤對(duì)貢獻(xiàn)者的報(bào)酬遵倦。通過(guò)以太坊,你可以:

  • 通過(guò)預(yù)售一件產(chǎn)品募集到一筆資金官撼,哪怕這個(gè)產(chǎn)品還僅是在雛形階段梧躺。
  • 通過(guò)出售一個(gè)區(qū)塊鏈組織里的虛擬分享來(lái)募集資金。
  • 拍賣(mài)有限數(shù)量的物品傲绣。

請(qǐng)參考詳細(xì)開(kāi)發(fā)文檔

眾籌crowdfund和眾募crowdsale的區(qū)別掠哥?

Crowdfunding簡(jiǎn)單點(diǎn)就是你有個(gè)想法,然后通過(guò)團(tuán)購(gòu)和預(yù)售(一些實(shí)際商品或者一些承諾把你名字放在電影啥的等)的方式募集項(xiàng)目資金秃诵。

crowdsale 也叫ICO (Initial Coin Offering)是很多區(qū)塊鏈項(xiàng)目续搀, 在項(xiàng)目正式推出之前銷(xiāo)售token,旨在為這個(gè)項(xiàng)目的開(kāi)發(fā)籌集資金菠净,也可以拿來(lái)測(cè)試大眾對(duì)產(chǎn)品的興趣禁舷。在許多情況下,在crowdsale買(mǎi)了token后會(huì)被拿到公開(kāi)市場(chǎng)上購(gòu)買(mǎi)和出售毅往,會(huì)獲得獨(dú)立于應(yīng)用程序自己的市場(chǎng)價(jià)值牵咙。這也是吸引早期adopter的一種方法,他們相信這個(gè)token的價(jià)值攀唯,有升值空間. 還有和Crowdfunding不一樣的是洁桌,crowdsale能夠讓那些投資者很快將持有的token在數(shù)字貨幣交易所中進(jìn)行交易。而且token流動(dòng)性極強(qiáng)的優(yōu)勢(shì)也會(huì)導(dǎo)致項(xiàng)目估值產(chǎn)生更好的溢價(jià)革答。區(qū)塊鏈行業(yè)中最有名的Crowdsale是2014年9月的以太坊战坤,大概籌集了價(jià)值1800萬(wàn)美元的比特幣曙强。

引用自[知乎](https://www.zhihu.com/question/55920197/answer/147711837)

民主

實(shí)際上就是一個(gè)投票系統(tǒng)。

創(chuàng)建一個(gè)自治組織途茫,有規(guī)則來(lái)約束如何花錢(qián)以及幫助你或者其他投資者做決定碟嘴。

現(xiàn)在,你有了自己的想法和有擔(dān)保的資金囊卜,也有了自己發(fā)行的貨幣娜扇,你可能是時(shí)候需要雇傭一個(gè)可信的財(cái)務(wù)官來(lái)幫助你管理賬戶,組織董事會(huì)以及一堆的文書(shū)工作栅组。然而雀瓢,你可以將這些工作全都交給以太坊智能合約,它將收集你的支持者們的提議書(shū)玉掸,并通過(guò)一個(gè)完全透明可信的投票流程提交他們刃麸。

這相當(dāng)于你擁有了一個(gè)機(jī)器人來(lái)幫助你打理一切,這其中最重要的一個(gè)好處就是:

可以免疫外部影響司浪,只會(huì)依照你自己編寫(xiě)的程序代碼堅(jiān)決執(zhí)行泊业。而且因?yàn)橐蕴痪W(wǎng)絡(luò)的去中心化特性,你將能夠獲得7*24小時(shí)百分百的全時(shí)線上服務(wù)保證啊易。

通過(guò)以太坊吁伺,你可以實(shí)現(xiàn):

  • 一個(gè)虛擬的組織,組員們可以公平投票來(lái)處理問(wèn)題租谈。
  • 一個(gè)透明的協(xié)會(huì)基于股東們的投票篮奄。
  • 你自己的國(guó)家,擁有一個(gè)不變的憲法割去。
  • 一個(gè)更好的協(xié)商民主窟却。

以太坊環(huán)境搭建

這里通過(guò)github下載源碼進(jìn)行搭建,ethereum地址:

git clone https://github.com/ethereum/go-ethereum && cd go-ethereum

構(gòu)建geth命令:

make geth

構(gòu)建所有工具:

make all

完整工具包包括:abigen bootnode ethereumwallet evm faucet geth mist puppeth rlpdump swarm wnode

安裝工具

sudo ln -s $PWD/build/bin/* /usr/local/bin/

將編譯好的所有工具軟連接到/usr/local/bin目錄下劫拗,該目錄本身就在PATH環(huán)境變量下间校,所以我們可以在任意位置使用這些剛剛編譯好的工具了。

每次對(duì)工具的編譯页慷,尤其是geth憔足,都是調(diào)試的方式。

geth(go ethereum)

以太坊主要的命令行客戶端工具酒繁。它是以太坊網(wǎng)絡(luò)(可以是私有滓彰、公有或者測(cè)試網(wǎng)絡(luò))的一個(gè)入口點(diǎn)。能夠作為一個(gè)完整的節(jié)點(diǎn)(默認(rèn))州袒、存檔節(jié)點(diǎn)(保存所有歷史狀態(tài))或一個(gè)輕型節(jié)點(diǎn)(檢索存活數(shù)據(jù))揭绑。它可以被其他進(jìn)程通過(guò)在JSON RPC在HTTP、WebSocket或IPC傳輸協(xié)議頂端暴露端點(diǎn),作為進(jìn)入以太坊網(wǎng)絡(luò)的網(wǎng)關(guān)他匪。

abigen(ABI生成器)

ABI(Application Binary Interface) 應(yīng)用二進(jìn)制接口菇存,在以太坊生態(tài)系統(tǒng)中,它是一個(gè)標(biāo)準(zhǔn)的用來(lái)與合約交互的方式邦蜜。交互包括區(qū)塊鏈外部以及合約之間的交互依鸥。數(shù)據(jù)依據(jù)它的類(lèi)型會(huì)被編碼,正如本規(guī)范中的描述那樣悼沈。編碼不是自我描述,因此需要一個(gè)模式來(lái)解碼贱迟。

源碼生成以太坊合約定義轉(zhuǎn)變?yōu)橐子谑褂茫幾g時(shí)類(lèi)型安全的Go包絮供。它可以操作在以太坊Solidity用于擴(kuò)充功能衣吠。然而它也接受Solidity源文件,讓開(kāi)發(fā)更加流水線化壤靶。記住abigen就是與Solidity相關(guān)的工具命令缚俏。Solidity上面也提到過(guò),是設(shè)計(jì)并發(fā)行自己的加密貨幣的一種語(yǔ)言萍肆。

bootnode(輕型引導(dǎo)節(jié)點(diǎn))

精簡(jiǎn)版的以太坊客戶端實(shí)現(xiàn)袍榆,只加入網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)現(xiàn)協(xié)議,但不能運(yùn)行其他更高級(jí)別的應(yīng)用協(xié)議了塘揣。它可以被用作一個(gè)輕型的引導(dǎo)節(jié)點(diǎn),旨在私有網(wǎng)絡(luò)中尋找節(jié)點(diǎn)宿崭。

evm(以太坊虛擬機(jī))

開(kāi)發(fā)者工具版本的以太坊虛擬機(jī)亲铡。通過(guò)一個(gè)可配置的環(huán)境和執(zhí)行模式,能夠運(yùn)行字節(jié)碼片段葡兑。它的目的在于允許完全孤立不影響其他奖蔓,細(xì)粒度地調(diào)試操作碼。例如evm --code 60ff60ff --debug

gethrpctest(geth rcp test工具)

開(kāi)發(fā)實(shí)用工具讹堤,支持我們的以太坊/RPC測(cè)試套件吆鹤。這些套件能夠校驗(yàn)基線符合以太坊JSON RPC規(guī)范。詳情請(qǐng)參閱測(cè)試套件的readme洲守。

rlpdump(RLP轉(zhuǎn)儲(chǔ))

轉(zhuǎn)儲(chǔ)請(qǐng)參考之前的一篇博文

開(kāi)發(fā)實(shí)用工具疑务,可將二進(jìn)制RLP(遞歸長(zhǎng)度前綴)轉(zhuǎn)儲(chǔ)(以太坊協(xié)議網(wǎng)絡(luò)以及共識(shí)使用的數(shù)據(jù)編碼)至用戶友好的分層表示(例如,rlpdump --hex CE0183FFFFFFC4C304050583616263)

swarm

swarm 是一個(gè)分布式存儲(chǔ)平臺(tái)和內(nèi)容分發(fā)服務(wù)梗醇。

swarm守護(hù)程序和工具知允。這是一個(gè)swarm網(wǎng)絡(luò)的入口點(diǎn)。通過(guò)swarm --help可以查看命令行選項(xiàng)以及子命令叙谨。 詳情參見(jiàn)swarm文檔

puppeth

一個(gè)CLI(Command Line Interface for batch scripting温鸽,命令行界面)的向?qū)С绦颍荚趧?chuàng)建一個(gè)新的以太坊網(wǎng)絡(luò)手负。

geth詳解

geth是以太坊最主要的一個(gè)客戶端命令行交互接口涤垫,由以太坊源碼編譯而成姑尺,直接運(yùn)行在客戶端終端(我們一般都會(huì)將geth命令放到PATH里,在任何位置都可以使用該命令)蝠猬。

geth都可以干嘛呢股缸?下面看一下geth都有什么子命令。

  • account: 賬戶管理
  • attach: 連接到JavaScript交互環(huán)境
  • bug: 打開(kāi)一個(gè)新窗口報(bào)告geth庫(kù)的bug
  • console: 開(kāi)啟一個(gè)JavaScript交互環(huán)境
  • copydb: 從一個(gè)目標(biāo)蓮數(shù)據(jù)文件夾拷貝到本地的鏈上
  • dump: 從存儲(chǔ)中刪除掉一個(gè)指定的區(qū)塊
  • dumpconfig: 顯示配置值
  • export: 導(dǎo)出區(qū)塊鏈到文件
  • import: 從文件導(dǎo)入?yún)^(qū)塊鏈
  • init: 通過(guò)一個(gè)向?qū)С跏蓟粋€(gè)新的創(chuàng)世區(qū)塊(genesis block!)
  • js: 執(zhí)行一個(gè)指定的JavaScript文件
  • license: 展示許可信息
  • makecache: 生成ethash校驗(yàn)緩存(用于測(cè)試)吱雏,ethash是以太坊的計(jì)劃性的PoW(工作量證明)算法敦姻。
  • makedag: 生成ethash挖礦DAG(用于測(cè)試),DAG是一個(gè)比特幣的擴(kuò)容方案
  • monitor: 監(jiān)控使節(jié)點(diǎn)權(quán)值可視化
  • removedb: 除去區(qū)塊鏈和狀態(tài)數(shù)據(jù)庫(kù)
  • version: 打印版本號(hào)
  • wallet: 管理以太坊預(yù)售錢(qián)包

上面提到了一個(gè)重要的信息:JavaScript交互環(huán)境歧杏。

JavaScript交互環(huán)境

console命令可以進(jìn)入一個(gè)JavaScript交互環(huán)境镰惦,也可以使用geth --exec選項(xiàng)加入要執(zhí)行的JavaScript命令在外部執(zhí)行。

這里主要介紹直接進(jìn)入JavaScript控制臺(tái)的操作犬绒,在這個(gè)控制臺(tái)中旺入,你可以使用web3.js的方法通過(guò)JSON RPC調(diào)用所有的以太坊API

  • web3.js 是以太坊源碼中提供的一套基于JS的SDK,開(kāi)發(fā)者可以在終端JavaScript控制臺(tái)亦可以在自己的瀏覽器網(wǎng)頁(yè)中調(diào)用web3.js凯力,可以執(zhí)行以太坊所有的相關(guān)操作茵瘾。
  • geth自己的管理API,是在JavaScript控制臺(tái)中可以直接使用并且自帶命令提示的一套工具咐鹤。

注意:管理API實(shí)際上只是web3.js的部分成員的外露而已拗秘,這些成員包括admin,debug,miner,personal,txpool五個(gè)命令,實(shí)際上對(duì)應(yīng)的就是web3.(admin,debug,miner,personal,txpool)祈惶。

JSON-RPC

JSON-RPC是一個(gè)無(wú)狀態(tài)輕量級(jí)的RPC遠(yuǎn)程程序調(diào)用協(xié)議雕旨。web3.js是通過(guò)該協(xié)議直接調(diào)用了源碼的api方法。

由此可知捧请,我們不必太關(guān)心已封裝好的JSON-RPC協(xié)議的內(nèi)容(除非你想了解細(xì)節(jié))凡涩,在使用geth console的時(shí)候:

  • 如果涉及到admin,debug,miner,personal,txpool五個(gè)命令,可以查看geth管理API即可疹蛉。

實(shí)際上我們只要看web3.js的文檔就足夠了活箕,因?yàn)間eth管理API也包含在其中。

除了介紹的這些子命令外可款,geth命令以及各種子命令都有自己的選項(xiàng)屬性育韩,下面簡(jiǎn)介一些geth命令使用的選項(xiàng)組合。

建立在以太坊主網(wǎng)的完整節(jié)點(diǎn)

目前為止筑舅,用戶希望通過(guò)一種交互手段在以太坊主網(wǎng)上面進(jìn)行一些操作座慰,例如建立賬戶,轉(zhuǎn)賬翠拣,部署與調(diào)用智能合約版仔。對(duì)于這些個(gè)別的用法,用戶并不在意歷史數(shù)據(jù),所以我們可以快速同步到當(dāng)前網(wǎng)絡(luò)中去蛮粮,命令如下:

geth --fast --cache=512 console

這條命令可以做以下三件事:

  • --fast: 使用fast模式打開(kāi)geth的客戶端交互控制臺(tái)益缎。fast模式下,只會(huì)下載與轉(zhuǎn)賬相關(guān)的區(qū)塊然想,而不是完全下載所有的區(qū)塊鏈歷史莺奔。
  • --cache: 將數(shù)據(jù)庫(kù)的內(nèi)存限額調(diào)到512MB,可以顯著增加同步時(shí)間变泄,尤其是機(jī)械硬盤(pán)用戶令哟。這個(gè)參數(shù)是可選的,512的值你也可以設(shè)定高一些或者低一些妨蛹,建議在512MB - 2GB之間屏富。
  • console: 啟動(dòng)geth內(nèi)置的可交互的JavaScript控制臺(tái),進(jìn)入該控制臺(tái)蛙卤,你可以調(diào)用所有的web3.js的函數(shù)(它與geth自己的API)狠半。

通過(guò)下面的命令你可以隨時(shí)加入一個(gè)已經(jīng)在運(yùn)行的geth實(shí)例:

geth attach

建立在以太坊測(cè)試網(wǎng)絡(luò)的完整節(jié)點(diǎn)

面向開(kāi)發(fā)者,如果你想試試創(chuàng)建一個(gè)以太坊合約颤难,你肯定需要用假的貨幣交易來(lái)測(cè)試你的代碼神年,直到你將你的合約真正發(fā)布到以太坊主網(wǎng)上。換句話說(shuō)行嗤,你不會(huì)加入以太坊主網(wǎng)已日,而是你想讓你的節(jié)點(diǎn)加入一個(gè)測(cè)試網(wǎng)絡(luò),這個(gè)測(cè)試網(wǎng)絡(luò)的環(huán)境與以太坊主網(wǎng)是完全一樣的昂验,只是使用的是假的以太幣捂敌。加入測(cè)試網(wǎng)絡(luò)的命令如下:

geth --testnet --fast --cache=512 console

參數(shù)fast和cache,子命令console在上面主網(wǎng)絡(luò)都介紹過(guò)既琴,這些內(nèi)容在測(cè)試網(wǎng)絡(luò)與主網(wǎng)絡(luò)完全一樣。下面仔細(xì)研究一下--testnet參數(shù)泡嘴,它會(huì)重新配置你的geth實(shí)例甫恩。

  • 正常主網(wǎng)絡(luò)的會(huì)使用默認(rèn)地址:/.ethereum,而測(cè)試網(wǎng)絡(luò)使用的默認(rèn)地址為:/.ethereum/testnet酌予。

注意這里面在使用geth attach的時(shí)候磺箕,linux需要改為geth attach

  • 不會(huì)連接到以太坊主網(wǎng)絡(luò)上,客戶端將連接到測(cè)試網(wǎng)絡(luò)抛虫,測(cè)試網(wǎng)絡(luò)使用的是不同的P2P向?qū)Ч?jié)點(diǎn)松靡,不同的網(wǎng)絡(luò)ID以及不同的genesis狀態(tài)。

源碼api

經(jīng)過(guò)查看建椰,源碼的api位置有很多雕欺,包括:

  • node/api.go
  • eth/api.go
  • eth/downloader/api.go
  • eth/filters/api.go
  • consensus/clique/api.go
  • contracts/chequebook/api.go
  • internal/debug/api.go
  • whisper/whisperv2/api.go
  • whisper/whisperv5/api.go
  • whisper/whisperv6/api.go
  • swarm/api/api.go
  • internal/ethapi/api.go

通過(guò)這些api文件,我們可以找到所有的web3.js(開(kāi)放了一部分給geth管理API)調(diào)用的相關(guān)方法。

測(cè)試環(huán)境

  1. github下載相應(yīng)版本源碼屠列,make all或者僅make geth
  2. 本地找一個(gè)位置統(tǒng)一管理本地node(例如我的是work/node/lwbtestnode目錄)
  3. geth --datadir node0(自定義節(jié)點(diǎn)名) account new 啦逆,通過(guò)這條命令連續(xù)創(chuàng)建兩個(gè)node
  4. 本地采用剛剛建好的node進(jìn)入測(cè)試網(wǎng)絡(luò),geth --datadir node0 --testnet --fast --cache=512 console笛洛,(注意夏志,當(dāng)你啟動(dòng)第二個(gè)節(jié)點(diǎn)的console的時(shí)候,會(huì)提示你端口已占用苛让,此時(shí)要再加入一個(gè)參數(shù)--port 30001指定一個(gè)其他的端口號(hào)即可)
  5. 現(xiàn)在兩個(gè)節(jié)點(diǎn)都在本地以太坊測(cè)試環(huán)境啟動(dòng)了console沟蔑,讓我們先來(lái)查看各自的一些信息并相互添加peer,admin.nodeInfo.enode命令查看當(dāng)前節(jié)點(diǎn)的enode信息狱杰,在另一個(gè)節(jié)點(diǎn)的console也查出該信息瘦材,然后使用admin.addPeer("剛查到的另一個(gè)節(jié)點(diǎn)的enode"),然后使用命令net來(lái)查看peer數(shù)量浦旱,為1即正確宇色。
  6. 然后再查一下當(dāng)前節(jié)點(diǎn)的eth信息,以太幣余額命令為:web3.fromWei(eth.getBalance(eth.accounts[0]))颁湖,wei是以太幣最小的單位宣蠕,如果要轉(zhuǎn)換成以太幣,需要使用web3.fromWei函數(shù)來(lái)處理甥捺。
  7. 經(jīng)過(guò)以上操作抢蚀,兩個(gè)新節(jié)點(diǎn)已經(jīng)互為peer,同時(shí)他們的余額都是0镰禾,下面讓其中一個(gè)進(jìn)行挖礦工作:miner.start()皿曲,可以看到隨著挖礦順利進(jìn)行,另一個(gè)console中也在不斷地同步(共識(shí))區(qū)塊消息吴侦。
  8. 停止挖礦屋休,查看當(dāng)前節(jié)點(diǎn)的余額,已經(jīng)不再是0了备韧,我這邊是停在了80個(gè)以太幣(這個(gè)以太幣都是測(cè)試用的劫樟,不是真的以太幣),另一個(gè)節(jié)點(diǎn)由于沒(méi)有挖礦余額還是0织堂。
  9. 下面我們來(lái)做轉(zhuǎn)賬操作叠艳,轉(zhuǎn)賬操作是在余額為80的賬戶里做:
    var sender = eth.accounts[0]
    var receiver = "另一個(gè)節(jié)點(diǎn)的eth.accounts[0]"
    var amount = web3.toWei(9,"ether") //轉(zhuǎn)9個(gè)以太幣,但是是通過(guò)Wei來(lái)做
    personal.unlockAccount(eth.accounts[0]) //交易前先將轉(zhuǎn)賬發(fā)送賬戶解鎖
    eth.sendTransaction({from:sender, to:receiver, value:amount})// 正式轉(zhuǎn)賬事務(wù)提交
  1. 此時(shí)轉(zhuǎn)賬事務(wù)已提交但未生效易阳,所以我們查看兩個(gè)節(jié)點(diǎn)的余額仍未發(fā)生變化附较。
  2. 下面繼續(xù)挖礦,(注意潦俺,挖礦是記賬的機(jī)制拒课,但挖礦不完全為了記賬徐勃,而記賬必須通過(guò)挖礦,所以挖礦是記賬的必要非充分條件)
  3. 當(dāng)前狀態(tài)下捕发,啟動(dòng)挖礦的第一個(gè)區(qū)塊就應(yīng)該包含了我們上面的轉(zhuǎn)賬記錄疏旨,所以不必挖礦太久即可停止。我們?cè)倏匆幌庐?dāng)前余額為86扎酷。

為什么不是80-9=71呢檐涝,是因?yàn)楹髞?lái)挖礦又產(chǎn)生了新的以太幣報(bào)酬,所以余額反而增加了法挨。

  1. 那么如何驗(yàn)證我們的轉(zhuǎn)賬是否正確呢谁榜?我們?nèi)タ戳硪粋€(gè)原來(lái)余額是0的節(jié)點(diǎn),檢查當(dāng)前余額為9凡纳,說(shuō)明它作為轉(zhuǎn)賬接收者已成功接到了以太幣窃植。

總結(jié)

本文針對(duì)以太坊進(jìn)行了初步的研究,包括背景概念荐糜,環(huán)境搭建巷怜,源碼跟蹤,事務(wù)處理等暴氏。而關(guān)于挖礦源碼實(shí)現(xiàn)延塑、共識(shí)算法,p2p網(wǎng)絡(luò)源碼以及發(fā)布自己的web3接口答渔,都是中級(jí)篇需要研究的內(nèi)容关带。

參考資料

  • 文中出現(xiàn)的各種鏈接。

相關(guān)文章和視頻推薦

圓方圓學(xué)院匯集大批區(qū)塊鏈名師沼撕,打造精品的區(qū)塊鏈技術(shù)課程宋雏。 在各大平臺(tái)都長(zhǎng)期有優(yōu)質(zhì)免費(fèi)公開(kāi)課,歡迎報(bào)名收看务豺。

公開(kāi)課地址:https://ke.qq.com/course/345101

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磨总,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笼沥,更是在濱河造成了極大的恐慌舍败,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敬拓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡裙戏,警方通過(guò)查閱死者的電腦和手機(jī)乘凸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)累榜,“玉大人营勤,你說(shuō)我怎么就攤上這事灵嫌。” “怎么了葛作?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵寿羞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赂蠢,道長(zhǎng)绪穆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任虱岂,我火速辦了婚禮玖院,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘第岖。我一直安慰自己难菌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布蔑滓。 她就那樣靜靜地躺著郊酒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪键袱。 梳的紋絲不亂的頭發(fā)上燎窘,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音杠纵,去河邊找鬼荠耽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛比藻,可吹牛的內(nèi)容都是我干的铝量。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼银亲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慢叨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起务蝠,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拍谐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后馏段,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體轩拨,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年院喜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亡蓉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喷舀,死狀恐怖砍濒,靈堂內(nèi)的尸體忽然破棺而出淋肾,到底是詐尸還是另有隱情,我是刑警寧澤爸邢,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布樊卓,位于F島的核電站,受9級(jí)特大地震影響杠河,放射性物質(zhì)發(fā)生泄漏碌尔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一感猛、第九天 我趴在偏房一處隱蔽的房頂上張望七扰。 院中可真熱鬧,春花似錦陪白、人聲如沸颈走。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)立由。三九已至,卻和暖如春序厉,著一層夾襖步出監(jiān)牢的瞬間锐膜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工弛房, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留道盏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓文捶,卻偏偏與公主長(zhǎng)得像荷逞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粹排,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容