以太坊 搭建私鏈部署合約

2022-05-28 22:33:20 字數 2796 閱讀 9881

geth --datadir /usr/install/geth/db/dev/ --dev console 2>>/usr/install/geth/log/dev/output.log
執行命令後,進入geth控制台,像這樣:

引數說明:

--dev 啟用開發者網路(模式),開發者網路會使用poa共識,預設預分配乙個開發者賬戶並且會自動開啟挖礦。

--datadir 後面的引數是區塊資料及秘鑰存放目錄。

console 進入控制台

2>> output.log 表示把控制台日誌輸出到output.log檔案

為了方便檢視日誌,我們另起乙個終端檢視geth輸出的日誌資訊

檢視私鏈中當前存在的賬戶:

eth.accounts

personal.listaccounts

這裡是由於我之前建立過賬戶,所以有兩個賬戶。

檢視賬戶中的餘額:

eth.getbalance(eth.accounts[0])
accounts[0]表示檢視第乙個賬戶即開發者賬戶的餘額。可以看到擁有大量的餘額。

開發者賬戶因餘額太多,如果用這個賬戶來部署合約時會無法看到餘額變化,為了更好的體驗完整的過程,這裡選擇建立乙個新的賬戶。

personal.newaccount("

123456

")

123456為新賬戶的密碼,回車後,返回乙個新賬戶。

檢視鏈上的賬戶數,可以看到賬戶陣列包含了3個賬戶,新賬戶在第三個(索引為2)位置。

現在檢視新賬戶的新餘額,可以發現是0.

沒有餘額的賬戶是沒法部署合約的,那我們就從開發者賬戶轉99以太幣給新賬戶。

eth.sendtransaction()
我這裡轉了兩次,可以看到現在新賬戶有198個以太幣了。

web3.towei(99,"ether"),這個是geth提供的單位轉換工具,1ether = 10^18 wei,轉賬時的單位是wei

在部署合約(需要花費以太幣)前需要先解鎖賬戶(就像銀行轉賬要輸入密碼一樣),使用以下命令:

personal.unlockaccount(eth.accounts[2],"

123456

")

如果不解鎖,則無法進行轉賬等交易,解鎖後則可以進行交易。

這裡我們用新賬戶給開發者賬戶轉了98個以太幣,在轉賬的過程中消耗了gas,因此轉換後新賬戶的餘額並不是100以太幣。

開啟:

編寫第乙個智慧型合約,solidity**如下:

pragma solidity ^0.4.21;

contract hello

function

say() constant public returns (string)

}

點選右側下拉框,選擇乙個編輯器版本,等待編輯器版本載入完成後,點選start to compile,開始編譯

編譯完成後,點選details,找到web3deploy部分,點拷貝。

修改第一行初始化資料為: var _greeting = "hello world" ,將_greeting賦值為自己的值

修改第六行資料為:from: web3.eth.accounts[2],預設的第一賬戶,我們改為第三個賬戶(剛剛新建的賬戶)

var _greeting = "hello world";

var hellocontract = web3.eth.contract(,"payable":false,"statemutability":"view","type":"function"},],"payable":false,"statemutability":"nonpayable","type":"constructor"}]);

var hello = hellocontract.new

( _greeting,

, function

(e, contract)

})

拷貝會geth控制台裡,回車後,看到輸出,說明合約已經部署成功。,

這裡我們可以看到在部署合約之前,新賬戶是99個以太幣,在合約部署之後,以太幣減少了。

hello.say()
我們會看到輸出的內容就是我們之前定義的_greeting的值

參考文章:

以太坊私鏈搭建

搭建私有鏈官方文件 network id 隔離網路 ethereum options networkid value network identifier integer,1 frontier,2 morden disused 3 ropsten,4 rinkeby default 1 networ...

搭建一條以太坊私鏈

建立乙個json檔案,放到你想要放的位置,內容如下 difficulty 200000000 gaslimit 2100000 alloc f41c74c9ae680c1aa78f42e5647a62f353b7bdde 我在這裡建立了乙個叫test genesis.json的檔案,內容就是上面的 ...

以太坊區塊鏈開發 私鏈

1.首先檢視我們兩個私鏈錢包的以太坊wei餘額,後續我們寫轉賬到區塊鏈位址 2.然後我們啟動私鏈 geth identity secbro etherum rpc rpccorsdomain datadir 私鏈資料資料夾絕對路徑 port 30303 rpcapi db,eth,net,web3 ...