如果你想部署你的智能合約配名,使用錢包部署澈灼,然而節(jié)點(diǎn)又沒(méi)有同步。不用擔(dān)心鲁沥,你不必等待同步節(jié)點(diǎn)荠锭,可以用一些其他的替代方案來(lái)部署你的合約旱眯。下面我們將介紹使用MyEtherWallet + Remix 使用byteCode來(lái)部署我們的合約。
如果你沒(méi)有聽(tīng)過(guò) MyEtherWallet ? 那現(xiàn)在點(diǎn)進(jìn)去看看吧~
# 在MyEtherWallet 部署合約需要什么呢证九?
- solidity 代碼和一個(gè)擁有以太幣的賬號(hào)删豺;
- geth console (生成帶參數(shù)的byteCode會(huì)使用到)
- 聯(lián)網(wǎng) ??
# 使用Remix編譯你的智能合約.
Remix 是一個(gè)非常強(qiáng)大的Solidity編譯器,你可以使用Remix來(lái)編譯愧怜、測(cè)試和部署智能合約呀页。但是我們這里只使用Remix來(lái)編譯我們的智能合約。
在Remix中粘貼上你的Solidity代碼拥坛,通過(guò)點(diǎn)擊【start to compile】編譯智能合約蓬蝶。
# Smart Contract in remix
我們需要從編譯后的智能合約中獲取2樣?xùn)|西:ABI和byteCode。
從左邊的下拉框選擇我們想要部署的合約名猜惋,并且點(diǎn)擊【details】丸氛。滾動(dòng)屏幕,你將會(huì)看到byteCode 和 ABI著摔。
點(diǎn)擊邊上的copy按鈕缓窜,復(fù)制byteCode 和 ABI。
# 為智能合約構(gòu)造函數(shù)設(shè)置默認(rèn)參數(shù)
此時(shí)通過(guò)Remix編譯后的信息中是沒(méi)有參數(shù)信息谍咆,那么我們?cè)撛趺磥?lái)獲取智能合約的構(gòu)造函數(shù)默認(rèn)參數(shù)呢禾锤?
下面關(guān)鍵的部分來(lái)了。
我們使用下面的命令摹察,在geth console 來(lái)獲取最終的byteCode
var abi = abi_provided_by_remix; // 注意不需要""
var rowByteCode = "byte_code_provided_by_remix";
var myContract = eth.contract(abi);
var byteCodeWithParam = myContract.new.getData(param1,param2,{data: rowByteCode});
PS: param1,param2是構(gòu)造函數(shù)的兩個(gè)必須參數(shù)
例如恩掷,如果你的構(gòu)造函數(shù)是這樣的:
function BasicToken (string _name, uint _totalSupply, uint _initialSupply, uint _decimals) public {
owner = msg.sender;
....
}
你需要按照傳遞的參數(shù)的順序獲取byteCode:
var byteCodeWithParam = myContract.new.getData("Test Token", 21000000, 1000000, 4, {data: rowByteCode});
# 在myEtherWallet 中使用 byteCode 部署合約
在 MyEtherWallet.點(diǎn)擊Tab -【contract】
然后點(diǎn)擊【deploy contract】
粘貼我們新生成的byteCode到byteCode文本框中,如果byteCode是正確的供嚎,文本框?qū)@示綠色邊框螃成,否則是紅色邊框。
如果出現(xiàn)紅色邊框查坪,則需要回頭檢查一下是不是哪一個(gè)步驟出錯(cuò)了。
使用byetCode部署
gas Limit的值會(huì)自動(dòng)生成宁炫,你也可以手動(dòng)修改偿曙,需要注意你的gas Limit 能滿足你這次交易即可,否則會(huì)出現(xiàn) out of gas 的錯(cuò)誤羔巢。
你也可以修改gas price望忆,數(shù)值越大交易越快被確認(rèn)罩阵,否則需要等待幾分鐘。
為了使用byteCode部署智能合約启摄,你需要 unlock 你的賬號(hào)來(lái)發(fā)送交易稿壁。
這里有幾種 unlock 你的賬號(hào)的方式,包括: Private key, KeyStore file ,MetaMask等等歉备。選擇任意一種你喜歡的方式即可傅是。
unlock 你的賬號(hào)后,你會(huì)看到【Sign Transaction】 按鈕.
一旦你點(diǎn)擊【Sign Transaction】 按鈕后蕾羊,你會(huì)看到2個(gè)文本框【Raw Transaction】喧笔,【Signed Transaction】和【Deploy Contract】按鈕。
如果你確認(rèn)此處操作沒(méi)有問(wèn)題龟再,那就勇敢的點(diǎn)擊【Deploy Contract】按鈕去部署你的智能合約吧书闸!
交易將會(huì)發(fā)送到blockchain,你馬上就能看到交易的hash值利凑,復(fù)制這個(gè)交易的hash值浆劲,然后在etherscan查看你的交易情況。