智能合約開發(fā)環(huán)境搭建及Hello World合約

轉(zhuǎn)自 :https://learnblockchain.cn/2017/11/24/init-env/

開發(fā)環(huán)境搭建

Solidity安裝

強(qiáng)烈建議新手使用Browser-Solidity來進(jìn)行開發(fā)啊终。
Browser-Solidity是一個(gè)基于瀏覽器的Solidity,就可以不用安裝Solidity趟脂,本文的Hello World教程也將基于Browser-Solidity來進(jìn)行昔期。

如果你想自己安裝請參考Solidity安裝指引佛玄。

geth 安裝

Mac下安裝命令如下:其他平臺參考:geth官方安裝指引

brew tap ethereum/ethereum
brew install ethereum

啟動環(huán)境

geth --datadir testNet --dev console 2>> test.log

啟動環(huán)境

命令參數(shù)說明(更多命令詳解可閱讀Geth命令用法-參數(shù)詳解篇):

  • –dev 啟用開發(fā)者網(wǎng)絡(luò)(模式)梦抢,開發(fā)者網(wǎng)絡(luò)會使用POA共識,默認(rèn)預(yù)分配一個(gè)開發(fā)者賬戶并且會自動開啟挖礦蕊梧。
  • –datadir 后面的參數(shù)是區(qū)塊數(shù)據(jù)及秘鑰存放目錄腮介。
    第一次輸入命令后,它會放在當(dāng)前目錄下新建一個(gè)testNet目錄來存放數(shù)據(jù)甘改。
  • console 進(jìn)入控制臺
  • 2>> test.log 表示把控制臺日志輸出到test.log文件

準(zhǔn)備賬戶

$ >eth.accounts 查看賬戶
也可以使用personal.listAccounts查看賬戶

$ >eth.getBalance(eth.accounts[0])
查看賬戶里的余額
開發(fā)者網(wǎng)絡(luò)預(yù)置賬戶中余額很大灭抑,可以新建一個(gè)賬戶測試使用

$ >personal.newAccount("YourPassword")
創(chuàng)建賬戶

$ >eth.sendTransaction({from: 'address1', to: 'address2', value: web3.toWei(1, "ether")})
因?yàn)槲覀儼l(fā)布合約需要賬戶中有金額名挥,故轉(zhuǎn)賬一些與測試地址

$ >personal.unlockAccount(eth.accounts[1],"YourPassword");
發(fā)布智能合約需要解鎖賬戶禀倔,使用剛才設(shè)置的密碼

編寫合約代碼

現(xiàn)在我們來開始編寫第一個(gè)智能合約代碼,solidity代碼如下:

pragma solidity ^0.4.18;
contract hello {
    string greeting;
    
    function hello(string _greeting) public {
        greeting = _greeting;
    }

    function say() constant public returns (string) {
        return greeting;
    }
}

簡單解釋下愧杯,我們定義了一個(gè)名為hello的合約鞋既,在合約初始化時(shí)保存了一個(gè)字符串(我們會傳入hello world)邑闺,每次調(diào)用say返回字符串。
把這段代碼寫(拷貝)到Browser-Solidity抵乓,如果沒有錯(cuò)誤靶衍,點(diǎn)擊Details獲取部署代碼颅眶,如:


在彈出的對話框中找到WEB3DEPLOY部分涛酗,點(diǎn)拷貝偷厦,粘貼到編輯器后沪哺,修改初始化字符串為hello world酌儒。

部署合約

var _greeting = "Hello World" ;
var helloContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"say","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_greeting","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]);
var hello = helloContract.new(
   _greeting,
   {
     from: web3.eth.accounts[1], 
     data: '0x6060604052341561000f57600080fd5b6040516102b83803806102b8833981016040528080518201919050508060009080519060200190610041929190610048565b50506100ed565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061008957805160ff19168380011785556100b7565b828001600101855582156100b7579182015b828111156100b657825182559160200191906001019061009b565b5b5090506100c491906100c8565b5090565b6100ea91905b808211156100e65760008160009055506001016100ce565b5090565b90565b6101bc806100fc6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063954ab4b214610046575b600080fd5b341561005157600080fd5b6100596100d4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561009957808201518184015260208101905061007e565b50505050905090810190601f1680156100c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100dc61017c565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101725780601f1061014757610100808354040283529160200191610172565b820191906000526020600020905b81548152906001019060200180831161015557829003601f168201915b5050505050905090565b6020604051908101604052806000815250905600a165627a7a723058204a5577bb3ad30e02f7a3bdd90eedcc682700d67fc8ed6604d38bb739c0655df90029', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 });

第1行:修改字符串為Hello World
第2行:修改合約變量名
第3行:修改合約實(shí)例變量名,之后可以直接用實(shí)例調(diào)用函數(shù)榴啸。
第6行:修改部署賬戶為新賬戶索引鸥印,即使用新賬戶來部署合約库说。
第8行:準(zhǔn)備付的gas費(fèi)用片择,IDE已經(jīng)幫我們預(yù)估好了。
第9行:設(shè)置部署回調(diào)函數(shù)啰挪。

拷貝回geth控制臺里嘲叔,回車后,看到輸出如:

Contract mined! address: 0x79544078dcd9d560ec3f6eff0af42a9fc84c7d19 transactionHash: 0xe2caab22102e93434888a0b8013a7ae7e804b132e4a8bfd2318356f6cf0480b3

說明合約已經(jīng)部署成功锰什。
此時(shí)test.log日志中會有挖礦記錄
而且此時(shí)可以看到賬戶余額有減少

運(yùn)行合約

> hello.say()
"Hello World"

看到輸出就表明合約運(yùn)行完成歇由,此時(shí)可以運(yùn)行’hello‘ 查看實(shí)例


運(yùn)行截圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沦泌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谢谦,更是在濱河造成了極大的恐慌,老刑警劉巖没咙,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祭刚,死亡現(xiàn)場離奇詭異墙牌,居然都是意外死亡喜滨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門棒口,熙熙樓的掌柜王于貴愁眉苦臉地迎上來无牵,“玉大人内舟,你說我怎么就攤上這事〕涞海” “怎么了崔梗?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵蒜魄,是天一觀的道長场躯。 經(jīng)常有香客問我踢关,道長,這世上最難降的妖魔是什么秕脓? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮芙贫,結(jié)果婚禮上磺平,老公的妹妹穿的比我還像新娘。我一直安慰自己褪秀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布乙埃。 她就那樣靜靜地躺著锯岖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遇伞。 梳的紋絲不亂的頭發(fā)上鸠珠,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天渐排,我揣著相機(jī)與錄音驯耻,去河邊找鬼炒考。 笑死斋枢,一個(gè)胖子當(dāng)著我的面吹牛杏慰,可吹牛的內(nèi)容都是我干的炼鞠。 我是一名探鬼主播谒主,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼霎肯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了榛斯?” 一聲冷哼從身側(cè)響起观游,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驮俗,沒想到半個(gè)月后懂缕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡王凑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年搪柑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片索烹。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡工碾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出百姓,到底是詐尸還是另有隱情渊额,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布垒拢,位于F島的核電站舱权,受9級特大地震影響宴倍,放射性物質(zhì)發(fā)生泄漏脖捻。R本人自食惡果不足惜地沮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一畏铆、第九天 我趴在偏房一處隱蔽的房頂上張望蛋勺。 院中可真熱鬧贼陶,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逛薇。三九已至卧秘,卻和暖如春羞福,著一層夾襖步出監(jiān)牢的瞬間卖陵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婿滓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓锋华,卻偏偏與公主長得像衍腥,于是被迫代替她去往敵國和親芜辕。 傳聞我的和親對象是個(gè)殘疾皇子倔丈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容