以太坊 智能合約學習筆記1
暫時粗略放置,以後會整理,望見諒,對CSDN使用不是很熟練,設計難看望見諒。新手學習,如有問題請大神指教,同時歡迎大家一同學習討論。
1.geth(go ethereum)。
是一個客戶端,是以太坊節點的一個實現,是真正的以太坊環境,也是目前使用最廣泛的客戶端。支持windows、linux和OSX三類操作系統。可以用來管理賬戶、轉賬、部署智能合約等。
下載地址:http://ethereum.github.io/go-ethereum/downloads.
geth安裝、測試與基礎操作。
geth version
geth account list 查看以太坊賬戶 geth account list --datadir xxx
geth account new 創建以太坊賬戶 geth account new --datadir xxx
geth console 通過JS控制檯和JS代碼訪問以太坊網絡 geth --datadir xxx console
geth console 2>>geth.log 2表示日誌通道
啓動geth節點(一些參數可以顧名思義):
geth --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi=“db,eth,net,web3,personal,web3” --datadir private console
geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain “*” --rpcport 8545 --rpcapi=“db,eth,net,web3,personal,web3” --allow-insecure-unlock --datadir private console
進入交互命令行:eth.accounts可以查看賬戶
txpool.status 可以查看交易池的狀態。
2.testrpc。
testrpc是在本地模擬的一個以太坊環境,主要用於開發調試。調試通過後可以部署到真正的以太坊環境中。testrpc本身是一個服務,端口號爲8545。
testrpc安裝、測試與基礎操作。
安裝:npm install -g ethereumjs-testrpc
運行命令:testrpc
3.建立私有鏈。
創世塊:block.json文件
{
"config":
{
"chainId":15,
"homesteadBlock":0
},
"difficulty":"20",
"gasLimit":"2100000",
"alloc":{
}
}
其中各項含義:
chainId:指定了獨立的區塊鏈網絡ID。公鏈的ID是1。
homesteadBlock:值爲0表示有效。
difficulty:挖礦的難易程度,值越小越容易。
gasLimit:挖每個區塊需要消耗資源的上限。
alloc:爲了測試挖礦而臨時分配的賬戶。
初始化區塊鏈:geth init block.json --datadir test
啓動以太坊客戶端:geth --datadir test console 其中datadir參數表示會使用test目錄保存相關文件。
綁定礦工:miner.setEtherbase()
查詢賬號餘額:eth.getBalance()
開始挖礦:miner.start() miner.start(n) n表示線程數
停止挖礦:miner.stop()
控制挖礦數量:miner.start(2);admin.sleepBlocks(10);miner.stop();
查詢當前區塊鏈中的區塊數:eth.blockNumber
4.Remix。
remix是官方推出的開源的Solidity智能合約編寫工具。
在線鏈接:https://remix.ethereum.org
開源地址:https://github.com/ethereum/remix
可以將源代碼下載下來,在自己機器上搭建本地remix,環境問題非常多,新手不建議嘗試。
5.Node.js。
下載地址:http://nodejs.org
6.Solidity編譯器。
用於編譯Solidity源代碼.sol文件,可將其編譯成多種目標文件。
安裝:npm install -g solc
solcjs --abi xxx.sol 將xxx.sol編譯成abi文件
solcjs --abi --bin xxx.sol 可將xxx.sol編譯成xxx_sol_xxx.bin和xxx_sol_xxx.abi
7.Web3.js。
Web3.js是一套API,Web3.js是Node.js的一個模塊。
安裝:npm install web3 是在當前目錄下安裝Web3.js。
npm install [email protected]制定安裝的版本號。
Node.js的repl環境中導入Web3模塊
var Web3 = require(“web3”)只有此目錄下安裝了web3.js纔可以導入。
var web3 = new Web3(new Web3.providers.HttpProvider(“http://localhost:8545”)); 創建we3實例。
8.Ethereum Wallet。
Ethereum Wallet是一個可視化的客戶端,功能與geth類似但是不如geth。
開源代碼地址:https://github.com/ethereum/mist
安裝包地址:https://github.com/ethereum/mist/releases