梳理一下架構關係:
web3.js與以太坊通訊是通過rpc的方式實現的。
ganache-cli模擬了乙個以太坊的測試節點並提供對外的rpc訪問方式(就是例子裡經常說的http://localhost:7545或者http://localhost:8545)。同時在其中內建了m個以太坊帳號,用於測試。
1、安裝nodejs
nmp install -g truffle
3、安裝ganache(原來用testrpc):在記憶體中模擬以太坊執行並對外提供rpc服務。
npm install -g ganache-cli
4、執行ganache-cli
ganache-cli
mkdir project1
truffle init
如果想用truffle中的某個例子,可以用
truffle unbox pet-shop
「pet-shop」是例子名稱
6、編寫智慧型合約
編寫好的智慧型合約的project1.sol檔案放到contracts目錄下
7、編譯和部署智慧型合約
在migrations目錄下建立檔案2_deploy_contracts.js:
var project1 = artifacts.require("project1");
module.exports = function(deployer) ;
之後執行:
truffle compile
truffle migrate
如果你的智慧型合約沒有問題的話,現在你的以太坊智慧型合約應該已經部署到你用來測試的ganache中去了。
這裡可能遇到的問題是:預設的truffle生成的專案,測試用的ganache的位址和埠會被設定成http://localhost:7545,而實際上執行ganache-cli之後的服務埠是http://localhost:8545,需要在truffle.js中修改一下:
module.exports =
}};
8、編寫前端的js**跟以太坊互動
通常需要如下的輔助js庫:
web3provider: null,
contracts: {},
init: function() ,
initweb3: function()
else
},initcontract: function() );
},bindevents: function() ,
refreshplots: function(plots, account) ).then(function(results),,,
],"payable": false,
"statemutability": "view",
"type": "function"
*///那麼:results[0]是uint64
// results[1]是address...
console.log(results[0].length);
}).catch(function(err));
},handleplot: function(event)
//我隨便取帳號列表裡的第3個帳號。
//因為我們連的是ganache-cli的rpc模擬服務,
//其中給我們預製了幾個有eth的帳號
//如果安裝了metamask外掛程式,應該獲得的就是metamask裡的帳號
var account = accounts[2];
divisioninstance = instance;
//呼叫智慧型合約的buyplot函式,該函式需要2個引數,
//後面的{}中的內容跟發起以太坊交易的時候所帶的預設值。
//from: 使用哪個以太坊帳號
//value: 要使用的eth數量,以wei為單位(1eth=10^18wei)
//gas: 礦工費,以wei為單位
return divisioninstance.buyplot(plotid, 3, );
}).then(function(result)).catch(function(error));
});}};
安裝lite-server,在你的truffle專案目錄下,執行:
npm install lite-server
安裝完之後會在專案目錄下聲稱node_modules目錄,lite-server以及依賴的模組都在該目錄下了。
要執行lite-server,還需要編寫專案目錄下的package.json檔案:
,
"scripts": ,
"author": "",
"license": "isc",
"devdependencies": ,
"dependencies":
}
還需要編寫bs-config.json來配置一下lite-server
}
啟動lite-server,執行:
npm run dev
不僅啟動了lite-server,而且會啟動乙個瀏覽器去開啟頁面。
具體的例子網上多如牛毛,就不去寫業務的具體**了。
原文發表在 fastkernel.com/?p=72
以太坊 Ethereum 開發智慧型合約
我們將使用truffle建立乙個智慧型合約專案,該智慧型合約的功能是可以獲取值和設定值。首先建立專案目錄 然後使用truffle init初始化專案,將生成專案模板檔案 truffle init我們可以檢視一下生成的專案目錄 卷 資料 的資料夾 path 列表 卷序列號為 0c52 9cf4 g t...
智慧型合約 以太坊
智慧型合約是執行在可複製 共享的賬本上的電腦程式,可以處理資訊,接收 儲存和傳送價值。2.1 什麼是以太坊 以太坊 ethereum 是乙個分布式計算機,有許多的節點,其中的每乙個節點都會執行智慧型合約,然後把結果存在區塊鏈上。由於整個網路是分布式的,且應用就是乙個個的狀態組成,儲存了狀態就有了服務...
以太坊和智慧型合約
1 什麼是以太坊?以太坊的官方 告訴我們 以太坊是乙個執行著智慧型合約的分布式平台 應用程式完全按照程式執行,不存在故障 審查 欺詐或第三方干預的可能性 2 智慧型合約就是可以處理資金的指令碼。開發語言 solidity 整合開發工具ide remix,乙個基於瀏覽器的整合開發環境 開發框架 tru...