利用truffle與智能合約進行交互
系統 ubuntu 17.10 , 心好痛,又買了一個
強烈建議使用xshell進行前期的測試工作,很容易管理幾個終端,如下圖,連開5個終端,4個進行實驗,1個查看相關文件參數,比原來在虛擬機方便好多
先了解相關指令,再觀看比較合適:http://truffle.tryblockchain.org/
安裝:
先完成上一條博客的安裝,再來進行下面的操作:http://www.cnblogs.com/tianlongtc/p/8877579.html
#第一個終端
sudo apt install npm #安裝npm
sudo npm install npm@latest -g #升級npm
sudo npm install -g n #安裝nodejs的模塊n
sudo n stable #下載nodejs穩定版
sudo npm install -g truffle #安裝truffle框架
一條一條復制粘貼,好,你的環境搭好了
部署項目:
這裏我直接連接到geth客戶端,而不是選擇連接到testrpc,盡管testrpc使用比geth方便多了
連接到testrpc端的博客有許多,需要的可以自行百度。
#第一個終端
cd /usr/local
mkdir mytest && cd mytest
truffle unbox metacoin #生成默認demo
開啟geth
新開兩個終端:(確保geth已經完成相關部署):http://www.cnblogs.com/tianlongtc/p/8877579.html
#第二個終端
geth --networkid 15 --datadir data --rpc --rpcaddr 108.61.218.173 --rpcport 8545 --nodiscover --port 80 --unlock 0 --ipcpath "/root/.ethereum/geth.ipc"
#第三個終端
geth attach #連接到geth
personal.unlockAccount(eth.accounts[0]) #解鎖賬戶1
指定網絡
#第一個終端
cd /usr/local/mytest
vim truffle.js #下面這段拷進去,註意修改live中的地址
module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 8588,
network_id: "*"
},
live: {
host:"108.61.218.173",
port: 8545,
network_id: 15,
gas: 4612388,
}}
}
新建合約
#第一個終端
cd /usr/local/mytest/contracts
vim Adoption.sol #把下面這段拷進去,對齊什麽的別理啦,拷過來就這樣了,不管了
pragma solidity ^0.4.4;
contract Adoption {
address[16] public adopters; //存儲地址
//采用一個寵物
function adopt(uint petId) public returns (uint) {
require(petId >= 0 && petId <= 15);adopters[petId] = msg.sender;
return petId;
}//返回采用者
function getAdopters() public returns (address[16]) {
return adopters;
}
}
部署合約
#第一個終端
cd /usr/local/mytest/migrations
vim 2_deploy_contracts.js #下面這段拷進去
var Adoption = artifacts.require("./Adoption.sol");
module.exports = function(deployer) {
deployer.deploy(Adoption);
};
調用合約
#第一個終端,下面很多操作需要到終端三進行挖礦操作,確認交易,由於我提前部署,忘記那些了,遇到指令卡住不執行,先試試到終端三執行, miner.start(),也可以在合約三執行txpool.status 查看是否有未確認的交易
truffle console --network live #連接到geth
compile #編譯
migrate #移植
deploy #部署
Adoption.deployed().then(instance => contract = instance) #實例化Adoption
contract.adopt(6) #執行合約函數,領養寵物
contract.getAdopters() #查看寵物主人
參考博客:
http://truffleframework.com/docs/getting_started/javascript-tests
https://blog.csdn.net/diandianxiyu_geek/article/details/78361621
http://truffle.tryblockchain.org/
利用truffle與智能合約進行交互