1、注冊infura獲取API-KEY
網(wǎng)址: https://infura.io/
我們?yōu)槭裁匆褂胕nfura戚丸?
我們使用truffle部署只能部署到我們本地運行的網(wǎng)絡,不管是測試網(wǎng)絡创葡,還是你運行ETH主網(wǎng)桶雀,都需要部署到本地運行的節(jié)點上。因為Infura是一個托管的以太坊節(jié)點集群浪箭,可以將你開發(fā)的以太坊智能合約部署到infura提供的節(jié)點上,而無需搭建自己的以太坊節(jié)點辨绊∧唐埽可能你還不了解Infura,但如果你使用過MetaMask门坷,那么就已經(jīng)接觸過Infura了宣鄙,因為它是MetaMask背后的以太坊供應商。
注冊登陸后步驟如下:
我們新建一個項目默蚌,起名為TEST冻晤,然后會自動生成API key和秘鑰,以及網(wǎng)絡地址绸吸,這些在truffle.js 里需要配置的鼻弧。
在這個例子中,我們將遷移到Ropsten測試網(wǎng)絡锦茁,所以我們要把ENDPOINT 選項中選擇ROPSTEN網(wǎng)絡攘轩。
2、truffle 部分
新建文件加truffle蜻势,然后cd 到這個文件夾內(nèi)撑刺,在命令行窗口輸入命令truffle init
初始化項目鹉胖,就能看到turffle文件夾內(nèi)出現(xiàn)了一些文件和文件夾握玛,詳情請看教程十六,上有截圖
我們還是通過那個簡單的HelloWorld合約甫菠,來熟悉Truffle框架的合約網(wǎng)絡部署
1挠铲、在contracts文件夾內(nèi)新建一個HelloWrold.sol合約,合約內(nèi)容如下
pragma solidity ^0.4.24;
contract HelloWorld{
uint i = 8;
function getI ()public view returns(uint){
return i;
}
function addI (uint s)public view returns(uint){
return (i+s);
}
}
2、編輯你的truffle.js文件來啟用HDWalletProvider并為部署到Ropsten進行必要的配置寂诱,我們需要下載HDWalletProvider 插件
在控制臺中使用命令npm install truffle-hdwallet-provider
下載完成后truffle文件夾內(nèi)會出現(xiàn)一個 node_modules 文件夾拂苹,里面就是我們下載的插件
3、修改tuffle.js文件,這里我們就要用到infura 注冊后創(chuàng)建新項目得到的那些痰洒。
var HDWalletProvider = require("truffle-hdwallet-provider");
// infura 注冊后獲取的api-key
// var infura_apikey = "306de3600a284848a8d211bda70b9d5b";
// 接下來瓢棒,提供助記詞(mnemonic)來生成你的賬戶浴韭。 進入 MetaMask -> Settings -> reveal seed words 復制到這里
//警告 :在此過程中,我們強烈建議將助記符存儲在另一個(秘密)文件中脯宿,以降低助記符泄漏風險念颈。 如果有人知道你的助記符,他們將擁有你所有的地址和私鑰连霉!我這個地址是測試地址榴芳,沒有主網(wǎng)的ETH代幣,所以無所謂跺撼!
var mnemonic = "section achieve bright crowd garage similar couple plate check fury okay utility";
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*"
},
private: {
host: "localhost",
port: 8545,
network_id: "*" // Match any network id
},
ropsten: {
provider: new HDWalletProvider(mnemonic, "https://ropsten.infura.io/v3/306de3600a284848a8d211bda70b9d5b"),
network_id: 3,
gas: 3012388,
gasPrice: 30000000000
},
main: {
provider: new HDWalletProvider(mnemonic, "https://ropsten.infura.io/v3/306de3600a284848a8d211bda70b9d5b"),
network_id: 3,
gas: 3012388,
gasPrice: 1000000000
}
}
};
4窟感、開始編譯我們寫的合約 通過命令 truffle compile
編譯合約,編譯完成后生成一個build文件夾歉井,編譯好的文件在這個文件夾里
5柿祈、在migrations 文件夾內(nèi)新建一個文件2_initial_helloworl.js ,內(nèi)容如下
var HelloWorld = artifacts.require("./HelloWorld.sol");
module.exports = function(deployer) {
deployer.deploy(HelloWorld);
};
目前我們的目錄結構如下
6、遷徙合約到Ropsten網(wǎng)絡 truffle migrate --network ropsten
,若顯示 Network up to date. 則需要用truffle migrate --reset --network ropsten
命令
我們可以將上面的txHash :0xb600ae8ffb76cc2dee81db89d54027c697c94310bc1c383a29a1af13a4acf6c1 放到Ropsten查看酣难。
https://ropsten.etherscan.io/tx/0xb600ae8ffb76cc2dee81db89d54027c697c94310bc1c383a29a1af13a4acf6c1
可以看到谍夭,我們?yōu)g覽器中的合約地址和命令行中的地址是一樣的
現(xiàn)在我們就將我們的合約通過truffle 部署到以太坊的Ropsten測試網(wǎng)絡上了。而我們在本地并沒有運行Ropsten的節(jié)點憨募,同時可以看到我們的部署合約的賬戶上的Ropsten代幣也相應的有減少紧索。。菜谣。