0X01:以太坊智能合約開發(fā)環(huán)境搭建及Hello World的初步嘗試

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

Geth下載

以太坊的官網(wǎng)地址詳見這里榨惰,官網(wǎng)會自動識別當(dāng)前系統(tǒng)羡微,在首頁提供對應(yīng)操作系統(tǒng)的下載鏈接攻冷;也可直接訪問 Geth 下載專區(qū)進行下載丈攒,由于官網(wǎng)的下載經(jīng)常抽風(fēng)切揭,可通過此鏡像下載狞甚。 在官網(wǎng)的頁面會看到 4 種類型的程序,分別支持 Win廓旬、Mac哼审、Linux 和源碼安裝,根據(jù)自己的系統(tǒng)選擇對應(yīng)的安裝程序孕豹。

Geth安裝

安裝步驟沒有過多可介紹的涩盾,直接執(zhí)行對應(yīng)的程序即可安裝。如果采用源代碼安裝需先搭建 Go 編程語言環(huán)境励背,同時需要一定的 Go 語言基礎(chǔ)春霍,然后參考 GitHub 上的安裝步驟安裝即可。此非本節(jié)重點內(nèi)容這里就不再贅述了叶眉。

無論在什么操作系統(tǒng)下安裝完成址儒,我們能夠找的可執(zhí)行的程序是 Geth芹枷。

Solidity安裝

強烈建議新手使用Remix -Solidity IDE來進行開發(fā)。
Remix 是一個基于瀏覽器的Solidity莲趣,就可以不用安裝Solidity鸳慈,本文也將基于Remix Solidity IDE來進行。

啟動環(huán)境

geth是一個以太坊客戶端妖爷,現(xiàn)在利用 geth 啟動一個以太坊(開發(fā)者)網(wǎng)絡(luò)節(jié)點蝶涩。(以linux下為例)

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

執(zhí)行后如圖所示進入控制臺

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

為了更好的理解兽愤,建議新開一個命令行終端彼念,實時顯示日志:

tail -f test.log

準(zhǔn)備賬戶

查看開發(fā)者賬戶:

eth.accounts

使用以下命令創(chuàng)建賬戶:

personal.newAccount("one")

查看現(xiàn)在賬戶列表
給新賬戶轉(zhuǎn)賬:
eth.sendTransaction({from: '0x0ead15dfc60a2697fb0f61f6196a8bf672180149', to: '0x8de9e70d50cd36c1e00b5307817e0a32f0285095', value: web3.toWei(1, "ether")})

看清楚賬戶地址從哪里來到哪里去。

查看余額:

eth.getBalance(eth.accounts[1])

賬戶one的余額
解鎖賬戶:

部署合約前需要先解鎖賬戶(就像銀行轉(zhuǎn)賬要輸入密碼一樣)浅萧,使用以下命令:

personal.unlockAccount(eth.accounts[1],"one")

one是創(chuàng)建的那個賬戶逐沙,這里要根據(jù)你實際創(chuàng)建的名字來填。

編寫智能合約

在Remix -Solidity IDE里新建一個文件


文件名就叫hello吧
寫合約代碼
pragma solidity ^0.4.18;
contract hello {
    string greeting;
    
    function hello(string _greeting) public {
        greeting = _greeting;
    }

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

我們定義了一個名為hello的合約洼畅,在合約初始化時保存了一個字符串(我們會傳入hello world)吩案,每次調(diào)用say返回字符串。
ctrl+s保存一下帝簇,在IDE的右邊點擊Details


在彈出的對話框中找到WEB3DEPLOY部分徘郭,點拷貝,粘貼到編輯器后丧肴,修改初始化字符串為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: '0x608060405234801561001057600080fd5b506040516102a83803806102a8833981018060405281019080805182019291905050508060009080519060200190610049929190610050565b50506100f5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061009157805160ff19168380011785556100bf565b828001600101855582156100bf579182015b828111156100be5782518255916020019190600101906100a3565b5b5090506100cc91906100d0565b5090565b6100f291905b808211156100ee5760008160009055506001016100d6565b5090565b90565b6101a4806101046000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063954ab4b214610046575b600080fd5b34801561005257600080fd5b5061005b6100d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561009b578082015181840152602081019050610080565b50505050905090810190601f1680156100c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561016e5780601f106101435761010080835404028352916020019161016e565b820191906000526020600020905b81548152906001019060200180831161015157829003601f168201915b50505050509050905600a165627a7a72305820ec8886663da8b3392f1bd03a6894f0c1ef7723ba5afe5347d7630a4fdd69b05d0029', 
     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行:修改合約實例變量名,之后可以直接用實例調(diào)用函數(shù)芋浮。
第6行:修改部署賬戶為新賬戶索引抱环,即使用新賬戶來部署合約。
第8行:準(zhǔn)備付的gas費用纸巷,IDE已經(jīng)幫我們預(yù)估好了镇草。
第9行:設(shè)置部署回調(diào)函數(shù)。

然后把它復(fù)制到geth控制臺

出現(xiàn)最后一行則成功了
查看下新賬戶的余額:


變少了

運行合約

hello.say()

至此智能合約開發(fā)流程體驗就完畢了何暇,日后將繼續(xù)探索真正有用的合約的編寫和不部署陶夜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裆站,隨后出現(xiàn)的幾起案子条辟,更是在濱河造成了極大的恐慌黔夭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽嫡,死亡現(xiàn)場離奇詭異本姥,居然都是意外死亡,警方通過查閱死者的電腦和手機杭棵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門婚惫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人魂爪,你說我怎么就攤上這事先舷。” “怎么了滓侍?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵蒋川,是天一觀的道長。 經(jīng)常有香客問我撩笆,道長捺球,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任夕冲,我火速辦了婚禮氮兵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歹鱼。我一直安慰自己泣栈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布醉冤。 她就那樣靜靜地躺著秩霍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚁阳。 梳的紋絲不亂的頭發(fā)上铃绒,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音螺捐,去河邊找鬼颠悬。 笑死,一個胖子當(dāng)著我的面吹牛定血,可吹牛的內(nèi)容都是我干的赔癌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼澜沟,長吁一口氣:“原來是場噩夢啊……” “哼灾票!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茫虽,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刊苍,失蹤者是張志新(化名)和其女友劉穎既们,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體正什,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡啥纸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婴氮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斯棒。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖主经,靈堂內(nèi)的尸體忽然破棺而出荣暮,到底是詐尸還是另有隱情,我是刑警寧澤旨怠,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布渠驼,位于F島的核電站,受9級特大地震影響鉴腻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜百揭,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一爽哎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧器一,春花似錦课锌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至请毛,卻和暖如春志鞍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背方仿。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工固棚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仙蚜。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓此洲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親委粉。 傳聞我的和親對象是個殘疾皇子呜师,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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