以太坊(三)MAC以太坊私有鏈創(chuàng)建第一個智能合約

前天搭建了以太坊的私有鏈環(huán)境彬向,今天本來想建立一個基于以太坊的智能合約Demo,發(fā)現(xiàn)很多過去的文檔都已經(jīng)過時了(包括github官網(wǎng))攻冷,折騰了半天娃胆,終于搞定了,現(xiàn)記錄如下等曼。


安裝智能合約編譯器

brew tap ethereum/ethereum
brew install solidity

創(chuàng)建智能合約

新建一個contract文件夾里烦,在文件夾中創(chuàng)建一個demo.sol智能合約文件

pragma solidity ^0.4.20;
contract Demo {
  function print(string str) returns (string content) {
    content = str;
  }
}

編譯,會多出兩個文件禁谦,abi文件就是智能合約相關的接口招驴,bin文件就是智能合約編譯代碼。

> solc -o . --bin --abi demo.sol
> ls
Demo.abi    Demo.bin    demo.sol

在geth中加載這些文件很復雜枷畏,這里我們修改下剛生成的文件

Demo.abi 文件內(nèi)容修改成

var demoContract = eth.contract([{"constant":false,"inputs":[{"name":"str","type":"string"}],"name":"print","outputs":[{"name":"content","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"}])

Demo.bin 文件內(nèi)容修改成

personal.unlockAccount(eth.accounts[0])
var demo = demoContract.new({
  from: eth.accounts[0],
  data: "0x6060604052341561000f57600080fd5b61016c8061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806311114af114610046575b600080fd5b341561005157600080fd5b6100a1600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061011c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e15780820151818401526020810190506100c6565b50505050905090810190601f16801561010e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61012461012c565b819050919050565b6020604051908101604052806000815250905600a165627a7a72305820e95348d1ac4b8934c8fcf9f894565bd48f2452fd4a62d0048a7d82c4b788e4a00029",
  gas: 500000
})

注意:別忘了data必須0x開頭别厘,New合約就得解鎖自己的賬戶,這里解鎖也寫在這里了

回到geth拥诡,加載剛修改的文件触趴,加載bin文件需要輸入賬戶密碼

文件夾contract就運行在geth命令的目錄

> loadScript("contract/Demo.abi")
true
> loadScript("contract/Demo.bin")
Unlock account 0x0416f04c403099184689990674f5b4259dc46bd8
Passphrase:
true

現(xiàn)在智能合約已經(jīng)部署到區(qū)塊鏈上了,但是要挖礦才能生效渴肉,挖完就可以調(diào)用合約方法了

> demo
{
  abi: [{
      constant: false,
      inputs: [{...}],
      name: "print",
      outputs: [{...}],
      payable: false,
      stateMutability: "nonpayable",
      type: "function"
  }],
  address: undefined,
  transactionHash: "0xbe51755e1901b037dfd3e9a597a99111ce58d42da2f9fadf18e0909a5fb688fc"
}
> demo.print
undefined
> miner.start(1);admin.sleepBlocks(1);miner.stop();
INFO [03-01|11:01:52] Updated mining threads                   threads=1
INFO [03-01|11:01:52] Transaction pool price threshold updated price=18000000000
INFO [03-01|11:01:52] Starting mining operation 
INFO [03-01|11:01:52] Commit new mining work                   number=73 txs=1 uncles=0 elapsed=2.428ms
INFO [03-01|11:02:53] Successfully sealed new block            number=73 hash=4b0335…049ed7
INFO [03-01|11:02:53]  mined potential block                  number=73 hash=4b0335…049ed7
INFO [03-01|11:02:53] Commit new mining work                   number=74 txs=0 uncles=0 elapsed=602.175μs
true
> demo.print
function()
true
> demo.print.call("hello world")
"hello world"
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冗懦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子仇祭,更是在濱河造成了極大的恐慌披蕉,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乌奇,死亡現(xiàn)場離奇詭異没讲,居然都是意外死亡,警方通過查閱死者的電腦和手機礁苗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門爬凑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人试伙,你說我怎么就攤上這事嘁信。” “怎么了疏叨?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵潘靖,是天一觀的道長。 經(jīng)常有香客問我蚤蔓,道長卦溢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮既绕,結果婚禮上,老公的妹妹穿的比我還像新娘涮坐。我一直安慰自己凄贩,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布袱讹。 她就那樣靜靜地躺著疲扎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捷雕。 梳的紋絲不亂的頭發(fā)上椒丧,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音救巷,去河邊找鬼壶熏。 笑死,一個胖子當著我的面吹牛浦译,可吹牛的內(nèi)容都是我干的棒假。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼精盅,長吁一口氣:“原來是場噩夢啊……” “哼帽哑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叹俏,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤妻枕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粘驰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屡谐,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年蝌数,在試婚紗的時候發(fā)現(xiàn)自己被綠了康嘉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡籽前,死狀恐怖亭珍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枝哄,我是刑警寧澤肄梨,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站挠锥,受9級特大地震影響众羡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蓖租,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一粱侣、第九天 我趴在偏房一處隱蔽的房頂上張望羊壹。 院中可真熱鬧,春花似錦齐婴、人聲如沸油猫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽情妖。三九已至,卻和暖如春诱担,著一層夾襖步出監(jiān)牢的瞬間毡证,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工蔫仙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留料睛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓摇邦,卻偏偏與公主長得像秦效,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涎嚼,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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