以太坊(Demo)開發測試----全網最全細節
以太坊?區塊鏈?智能合約?
學習一個新的技術棧總是讓人感到頭疼,最近需要做一個關於以太坊的試驗。博主長期不寫代碼了(本來也不怎麼寫,嘿嘿),那更是頭疼的不行,以前主要寫寫C++、C語言什麼的。這個以太坊開發又是web3、js、前端什麼的,我真的不會啊啊啊啊啊啊啊。
說實話,我是壓根不想動的,畢竟寫代碼什麼的最煩了,我只想當個只會BB的 “嘴炮架構師” ,並且只想指揮別人幹活,人生最大理想 ----- “不勞而獲”。但是,但是,但是,沒有辦法,最爲最底層的碼農怎麼能不幹活呢?畢竟,飯總是要喫的吧!
廢話不多說,本人最喜歡學習新的東西,之前大概看了看這個以太坊,也曾嘗試搭個環境淺嘗輒止。但是,學技術的都知道,你要是想要真正的掌握一個技術,必須要認認真真的使用該技術做一個什麼小項目啊,實驗啊,才能說是大略掌握這個技術。
所以這一次爲了真正的好好體會一下以太坊技術,我決定從0開始研究一個區塊鏈的小項目,然後,好好的理解一下這個以太坊技術。
這個小項目就是《區塊鏈技術-進階與實戰》蔡亮 李啓雷 梁秀波 著的這本書的幾個實驗項目。
這是他們項目源碼的地址:https://github.com/Blockchain-book/Ethereum-Score-Hella
安裝一個Linux虛擬機
VM 15.5 pro 在win 10 平臺下建立一個linux Ubuntu 18 虛擬機作爲基本開發環境。
1.虛擬機安裝 & 安裝VMtool
https://jingyan.baidu.com/article/3c48dd34f353fde10ae3587a.html
2.替換阿里源
https://developer.aliyun.com/mirror/
3.更新系統
安裝Nodejs,npm
- 安裝 npm nodejs
nodejs 爲項目運行提供環境,相當於是web服務器;npm 爲我們提供相關環境的包管理服務;
sudo apt-get install nodejs
sudo apt-get install npm
更新
sudo npm install npm -n -g
sudp n stable
安裝GO語言
現成的安裝方法:
https://www.cnblogs.com/swlj/articles/11836198.html
安裝以太坊GO客戶端 geth
官方安裝方法:
https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
選擇自己的系統版本,抄就好了!!
編寫創世文件
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip150Block": 0
},
"difficulty": "1",
"gasLimit": "210",
"alloc": {
}
}
這就是以太坊區塊鏈的創世文件,一個文件定義一個條鏈;
創建私鏈
geth --datadir ~/geth/data init ~/geth/genesis.json
geth --datadir ~/geth/data --nodiscover --rpc --rpcapi eth,web3,personal
已經顯示有一個本地節點出現,然後這個交互式程序就進入了查找其他節點的循環當中;/geth/ 即爲你區塊鏈的相關文件地址
開啓一個新的終端,我們開啓geth客戶端連接到這條區塊鏈中:
geth attach ~/blockchaintest/data/geth.ipc
創建賬戶 並 挖礦
從這個錘子的標誌看,我們已經挖到了礦,並且以太坊區塊鏈塊數現在爲1,賬號1 挖到了500…000 Wei 。
轉賬操作:
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],gas:10,‘gasPrice’:web3.toWei(5,‘gwei’),“value”:“10000”})
報錯了,需要私鑰或者解鎖賬戶,然而我沒記當時開啓賬戶的私鑰,尷尬。
Testrpc 安裝
Testrpc 是一種方便的客戶端,專門用來測試智能合約,可以減免挖礦的過程,直接將消息打包入區塊,便於測試。
sudo npm install -g ethereumjs-testrpc
安裝truffle
sudo npm install -g truffle