1. 程式人生 > >利用truffle與智能合約進行交互

利用truffle與智能合約進行交互

調用 方便 style person 部署項目 17.1 ubunt AR exp

系統 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與智能合約進行交互