開發基於以太坊智慧型合約的DApp

2021-09-20 08:32:24 字數 2821 閱讀 4504

梳理一下架構關係:

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...