ETH Truffle開發入坑之路

【本文目標】

(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

批注 (4).png

進入 之前打開的truffle develop窗口找到第一個錢包的私鑰,把小狐貍錢監聽到本地連接9545端口看圖操作,我用的端口是8545。
批注 (4).png

小狐貍錢包導入剛才的私鑰,你會發現你的網頁上有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(還是有報錯留言)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容