日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

以太坊开发--geth的使用入门

發布時間:2024/3/26 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以太坊开发--geth的使用入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?geth的全稱是go-ethereum,是一個以太坊客戶端,用go語言編寫,應該是目前最常用的客戶端。當然以太坊客戶端還有用C++,Ruby,Python,Java等其他多種語言編寫的,不同類型的客戶端是為了滿足不同的需求場景。今天我們主要來介紹geth(發音同guess )的使用。

? ? ? 對于我們開發來說,比較普遍有兩種方式打開geth控制臺,以開發方式登錄和私鏈方式登錄。這兩種方式是完全不同的,兩者的賬戶也是不共用的,其中以開發方式登錄相對比較簡單,以私鏈方式登錄還需要進行額外的配置,我會在后面的博客進行介紹。

(1)打開終端Terminal,執行以下命令,以開發方式啟動geth

geth ?--datadir “~/ethdev” --dev?

這會在當前根目錄下創建一個ethdev文件夾,當然這個文件夾的名稱你可以自己取,我們暫且不管這個文件夾是干嘛用的,后面會進行介紹。



(2)geth啟動成功后,重新開一個終端,執行以下命令,打開geth控制臺:

geth --dev console 2>>file_to_log_output

該命令會打開geth控制臺,同時在目錄下生成一個叫做file_to_log_output的日志文件,等下我們會來查看這個日志文件。



(3)查看當前有哪些賬戶

eth.accounts

.

可見當前沒有任何賬戶。

(4)創建一個新賬戶

personal.newAccount(‘密碼')


我們這里創建兩個賬戶。再使用eth.accounts查看賬戶:


就發現有兩個賬戶了。

(5)可以把賬戶賦值給某一個變量,同時查詢賬戶中的余額


可以看到兩個賬戶中的以太幣都是0.因為我們還沒有啟動挖礦。

(6)上面提到過日志文件,我們再重開一個終端,我們使用以下命令打開日志:

tail -f file_to_log_output


我們把這個終端界面放在一邊,等下在geth控制臺中有任何操作時,都可以來這邊看看日志。

(7)在geth控制臺中啟動挖礦:

miner.start()



來觀察日志輸出:


可以看到在日志界面中已經顯示在挖礦了。


(8)停止挖礦

miner.stop()


此時也可以看到日志界面輸出也停止了。


(9)此時我們再來查看兩個賬戶的賬戶余額


由此可見,挖礦所得的以太幣默認是傳入第一個賬戶的。


(10)user1向user2轉移以太幣

eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})


提示我們賬號是鎖定的,所以我們需要解鎖賬戶。


解鎖賬戶后,轉移操作就成功了。打印出來的是本次交易的地址。


(11)再次查看以太幣轉移后的user2賬戶余額


但是發現user2的賬戶還是為0.這是因為沒有礦工來挖礦處理。根據區塊鏈的概念,我們知道,每次交易的確認,其實都是需要挖礦的,也就是被其他礦工共識確認,然后才能加入區塊鏈的賬本中。

好,我們執行“miner.start()”開始挖礦,

.

然后就發現賬戶user2有3個以太幣了。轉賬操作成功。


(12)下面我們來實現下在geth中編譯一個智能合約

contract test {function multiply(uint a) returns(uint d) {return a * 7; } }在geth中執行如下:

source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"

然后編譯該合約:

contract = eth.compile.solidity(source).test

編譯后的結果如下:


code:就是合約編譯后的字節碼文件,在以太坊虛擬機EVM上運行的就是這個字節碼;

abiDefinition:其實就是合約的二進制接口,可用來外部調用;

其他的一些參數也都是可以見名知意了。


然后就要獲取合約的abi(其實該真正要用的abi可以通過https://ethereum.github.io/browser-solidity這個在線編譯器獲得):

abi=[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}]



然后是訪問abi接口:

MyContract=eth.contract(abi)




然后獲得合約的實例:

myContract=MyContract.new({from:user1,data:contract.code})


如果提示你沒有解鎖的話,只要解鎖即可。


調用函數傳遞參數


函數做了乘以7的操作,輸出符合預期。合約執行成功。

?

? ? ? 以上就是對geth最基本的運用,我們會在以后的開發中學習geth更為深入的功能。

總結

以上是生活随笔為你收集整理的以太坊开发--geth的使用入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。