【本文目標】
(1)采用Itruffle develop部署到本機測試網絡
(2)采用INFURA配置的方式把智能合約部署到ROPSTEN測試網絡;
(3)采用INFURA配置的方式把智能合約部署到以太坊主網絡;
(4)解決truffle-hdwallet-provider下載錯誤;
【版本】(盡量更新到最新版本)
node版本:v8.10.0
npm版本:5.6.0
ubantu操作系統(window安裝npm install truffle-hdwallet-provider
需要安裝其他東西搜了半天無解)
1.TRUFFLE的安裝
$ npm install -g truffle
輸入truffle version
查看版本確認是否安裝成功
2.下載truffle webpack進行環境搭建實戰
mkdir webpack
cd webpack
truffle unbox webpack
Truffle的官方Boxes地址
2.1、安裝完輸入truffle develop
進入truffle自帶的開發環境,默認開發端口9545
2.2、編譯:輸入compile
(可能會報錯缺少truffle-hdwallet-provider,下載sudo npm install truffle-hdwallet-provider如果也報錯。解決方法:sudo apt-get install build-essential再重新下載)
2.3、輸入migrate
輸出如下,說明合約部署完成
Running migration: 1_initial_migration.js
Replacing Migrations...
... 0x2ff0e8bc14ae2e58c53cddaa1e0b2d39bb611209b93c39bc943d45664e7dd409
Migrations: 0x149eb3895c8776bf293e0253921686f22ef9a67a
Saving successful migration to network...
... 0xdf97e231bb1121b32e7a5623525bc0bde24b6eb130ef8176263178db4ce416d7
Saving artifacts...
Running migration: 2_deploy_contracts.js
Replacing ConvertLib...
... 0x1462e0afea62507fc76bbe5aeffa67b22a150964f24253ef9048d177c2852820
ConvertLib: 0xf4b9909d2a88e58d74b8cd6849bfac90e1f7c1ce
Linking ConvertLib to MetaCoin
Replacing MetaCoin...
... 0xb6503716eacaff1aa1fc8a9292c354c0ffcf3ba85f670637f9f15af4874285bc
MetaCoin: 0xab646240b0f34dd7b0261090323ae2f7fb8384fa
Saving artifacts...
3、 配置以太坊環境
truffle.js是truffle的配置文件,啟動好以太坊本地結點以后,我們需要讓truffle去識別它并使用它,這就需要在truffle.js中配置相關屬性(這個文件配置好了infura ropsten kovan mainnet節點)本機測試節點直接跳到第四步。
在這里申請一個infura賬號:https://infura.io/dashboard。
var HDWalletProvider = require("truffle-hdwallet-provider");
//infura部署所需依賴
var mnemonic = "length child **** either **** beach spoon hole puppy***** arctic middle";
//助記詞
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 9545,//truffle develop端口
gas: 750000000,
network_id: "*" // Match any network id
},
kovan: {
gasPrice: 500000000000,
provider: function() {
return new HDWalletProvider(mnemonic,
"https://kovan.infura.io/v3/bab**************f1afc5fdf3a0a")
},
network_id: 3
},
ropsten: {
// gas: 8000000,
gasPrice: 8000000000,
provider: function() {
return new HDWalletProvider(mnemonic,
"https://ropsten.infura.io/v3/bab911************1afc5fdf3a0a")
},
network_id: 2
},
mainnet: {
gas: 7500000,
gasPrice: 6000000000,
provider: function() {
return new HDWalletProvider(mnemonic,
"https://mainnet.infura.io/v3/bab911f**************afc5fdf3a0a")
},
network_id: 1
}
},
solc: {
optimizer: {
enabled: true,
runs: 200
}
}
};
4、運行你的第一個dapp
重新打開另一個命令行窗口輸入:npm run dev
進入 之前打開的truffle develop窗口找到第一個錢包的私鑰,把小狐貍錢監聽到本地連接9545端口看圖操作,我用的端口是8545。
小狐貍錢包導入剛才的私鑰,你會發現你的網頁上有1000個META,也可以實現轉賬操作。
5、切換到infura以太坊主網和ropsten測試網絡
復制上述配置文件到truffle.js 文件里,私鑰改成你自己的,申請的API-KE也改成你在infura申請的。
進入app/scripts/index.js文件倒數第四行,本機測試網絡改成infura ropsten測試網絡
window.web3 = new Web3(new Web3.providers.WebsocketProvider("wss://ropsten.infura.io/ws"));
這次不用進入truffle develop
,直接輸入truffle migrate --network ropsten --reset --compile-all
合約部署有點慢,有可能會報gas錯誤,進入truffle.js配置文件,提高gasprice。
小狐貍錢包切換到ropsten測試網絡,導入truffle.js文件第二行的助記詞,這是你在infura的錢包。
如何切換到以太坊主網?app/acripts/index.js倒數第四行ropsten改成mainnet,,確保truffle.js有mainnet主網的配置節點。重新編譯部署合約````truffle migrate --network mainnet --reset --compile-all```
over(還是有報錯留言)