以太坊智能合約

????????上一章绿鸣,我們講了什么是智能合約谆棺,這一章栽燕,我們結(jié)合以太坊來(lái)講講和更詳細(xì)的學(xué)習(xí)智能合約。

一.賬戶

? ? ????以太坊的核心操作對(duì)象就是賬戶改淑。賬戶又分為兩類:外部所有賬戶和合約賬戶碍岔。

? ? ? ? 外部所有賬戶可能也被簡(jiǎn)稱為“賬戶”,可以這么理解:外部賬戶與其他區(qū)塊鏈電子貨幣的賬戶(如比特幣)一樣朵夏,即外部賬戶具有如下功能和特性:

? ? ? ? 1.人為創(chuàng)建的

? ? ? ? 2.存取貨幣

? ? ? ? 3.是公鑰加密系統(tǒng)加密和產(chǎn)生的賬戶

? ? ? ? 4.以太坊上的外部賬戶還具有創(chuàng)建合約賬戶和部署合約的能力

????????因此蔼啦,外部所有賬戶和合約賬戶,我們都認(rèn)為是一個(gè)狀態(tài)對(duì)象仰猖,這些狀態(tài)主要體現(xiàn)為余額狀態(tài)等捏肢,合約賬戶除擁有余額狀態(tài)外掠河,其還擁有合約存儲(chǔ)狀態(tài)。

? 下面我們來(lái)看看以太坊賬戶的創(chuàng)建猛计、鑰匙文件及備份?

????i.創(chuàng)建賬戶

? ? ? ? ? ?創(chuàng)建賬戶前提是安裝好以太坊和go-ethereum爆捞,相關(guān)鏈接可參考?https://blog.csdn.net/ ? ? ?bylaven?/article/details/80386862?from=groupmessage&isappinstalled=0奉瘤,接著我們可? ? ? ? ?以輸入personal.newAccount()命令創(chuàng)建用戶及設(shè)置密碼

? ? ii.鑰匙文件

? ? ? ? ? ?剛才創(chuàng)建了一個(gè)賬戶,每個(gè)賬戶由一對(duì)公私鑰來(lái)確定煮甥,每個(gè)賬戶其實(shí)就是一個(gè)地址盗温,這個(gè)地址即公鑰的最后20個(gè)字節(jié),這個(gè)地址和私鑰以json格式存儲(chǔ)于keyfile“鑰匙文件”中成肘,并且私鑰將只存儲(chǔ)于用戶客戶端上卖局。密鑰文件格式如下:

{

? ? "address": "6a787f16c2037826fbc112c337d7b571bb19c022",

? ? "crypto": {

? ? ? ? "cipher": "aes-128-ctr",

? ? ? ? "ciphertext": "8ed39b22ab67a787baa4ebb545382255f747328e2a3e2e74970a0f66b422d169",

? ? ? ? "cipherparams": {

? ? ? ? ? ? "iv": "8e0e0905919d6d1669957fdf65f114ce"? ? ? ? },

? ? ? ? ????"kdf": "scrypt",

? ? ? ? ? ? "kdfparams": {

? ? ? ? ? ? "dklen": 32,

? ? ? ? ? ? "n": 262144,

? ? ? ? ? ? "p": 1,

? ? ? ? ? ? "r": 8,

? ? ? ? ? ? "salt": "a2a84d4843dbcb7c0aefa933f37ead073aefe8503ac8497b77828e85467c6822"? ? ? ? },

? ? ? ? "mac": "1fc4a5d260fdd70e772fdc9a28614e82d5ff0adc6c98332f8455c5aa0a3352ad"? ? },

? ? "id": "7bce1a69-79a2-429a-836c-cc2bf72c80de",

? ? "version": 3}

? ? iii.賬戶備份

? ? ? ?從用戶的鑰匙文件中可以看出,以太坊賬戶的私鑰的密文存儲(chǔ)于ciphertext字段中双霍,用戶通過(guò)輸入密碼獲取到私鑰砚偶,而在交易中的所有簽名都得通過(guò)私鑰來(lái)完成,一旦私鑰丟失洒闸,用戶的賬戶將無(wú)法找回染坯,因此,備份賬戶及私鑰對(duì)我們來(lái)說(shuō)相當(dāng)對(duì)重要丘逸。

? ? 備份賬戶信息单鹿,我們只需要找到以太坊對(duì)存儲(chǔ)目錄即可,當(dāng)然各種操作系統(tǒng)以太坊的存儲(chǔ)目錄我這不再贅述深纲,相關(guān)資料可查看區(qū)塊鏈技術(shù)指南的以太坊賬戶備份部分仲锄。

二.以太幣

? ??????Ether幣最小的單位是Wei,即Ether =10^{18}Wei湃鹊,與比特幣一樣儒喊,以太幣也有自己的一套激勵(lì)機(jī)制-----以太坊上賬戶的操作及智能合約部署等都會(huì)支付以太幣才能支撐運(yùn)轉(zhuǎn),以太幣獲得都獎(jiǎng)勵(lì)主要分為:

? ? ? ? 靜態(tài)獎(jiǎng)勵(lì):每挖出一個(gè)區(qū)塊獲得5個(gè)以太幣

? ? ? ? 動(dòng)態(tài)獎(jiǎng)勵(lì):

? ? ? ? ? ? ?1.挖出的區(qū)塊中交易的費(fèi)用歸礦工所有

? ? ? ? ? ? ?2.挖出的區(qū)塊中含叔區(qū)塊涛舍,礦工可以從叔區(qū)塊中領(lǐng)取額外的1/32個(gè)以太幣的獎(jiǎng)勵(lì)(? ? ? ? ? ? 每個(gè)區(qū)塊僅限2個(gè)叔區(qū)塊)澄惊,以太幣通過(guò)這種機(jī)制可以保障大礦池的壟斷。

? ? ? ? 叔區(qū)塊:指那些被挖出來(lái)的分叉鏈上的區(qū)塊(由于網(wǎng)絡(luò)延遲等原因沒(méi)有被同步到新的區(qū)塊中的區(qū)塊)

三.gas

? ? ? ? 智能合約上鏈后無(wú)法修改富雅,為防止惡意用戶智能合約產(chǎn)生死循環(huán)的可能性掸驱,以太坊要求每執(zhí)行一步智能合約都支付相應(yīng)的費(fèi)用,這些費(fèi)用的最小單位就是gas没佑。每個(gè)智能合約消耗的gas是固定的毕贼,但花費(fèi)但gas越多可能能換取但時(shí)間越短(一種以金錢換時(shí)間的做法)。

? ? ? ? 與gas相關(guān)的幾個(gè)概念及關(guān)聯(lián):

? ? ? ? 1.gas花銷

? ? ? ? ?gas花銷是靜態(tài)的蛤奢,主要針對(duì)與每步操作是不變的鬼癣,保證每個(gè)操作的gas花銷都一樣陶贼。??

? ? ? ? 2.gas價(jià)格

? ??????gas價(jià)格是每個(gè)gas所兌換的以太幣都數(shù)量,將隨以太幣的價(jià)格有所波動(dòng)待秃。

? ? ? ? 3.gas費(fèi)用

????????gas價(jià)格乘以gas花銷即gas費(fèi)用拜秧,單位為以太幣。

四.合約

? ? ? ? 以太坊智能合約與賬戶有相當(dāng)關(guān)聯(lián)章郁,上面我們也曾介紹過(guò)賬戶的類型有外部賬戶和合約 ????賬戶枉氮,這里合約賬戶就是用來(lái)專門執(zhí)行以太坊上的智能合約的。

? ? ? ? 1.編寫智能合約

? ? ? ? ? ? 智能合約是一段可被以太坊虛擬機(jī)執(zhí)行的代碼暖庄,這些代碼以二進(jìn)制的形式存儲(chǔ)于區(qū)塊 ????鏈上聊替,也稱為以太坊虛擬機(jī)位碼。目前培廓,使用于開發(fā)以太坊智能合約的語(yǔ)音有solidity惹悄、serpent和LLL語(yǔ)言,具體相關(guān)語(yǔ)言請(qǐng)?jiān)敿?xì)關(guān)注:

http://solidity.readthedocs.io/en/v0.4.24/

https://ethfans.org/wikis/Serpent-%E6%8C%87%E5%8D%97

http://llvm.org/docs/tutorial/index.html

? ? ? ? 下面以solidity編寫一個(gè)例子:

pragma solidity ^0.4.17;

contract HelloWorld

{

address creator;

string greeting;

function HelloWorld(string _greeting) public

{

creator = msg.sender;

greeting = _greeting;

}

function greet() constant returns (string)

{

return greeting;

}

function setGreeting(string _newgreeting)

{

greeting = _newgreeting;

}

/**********

Standard kill() function to recover funds

**********/

function kill(string name) public returns (string)

{

require(keccak256(name) == keccak256("panzuchao"));

return name;

}

}

? ? ? ? 2.部署智能合約及運(yùn)行

? ? ? ? ? ? 以太坊虛擬機(jī)在執(zhí)行時(shí)肩钠,只識(shí)別以太坊虛擬機(jī)位碼泣港,因此,部署時(shí)蔬将,得將上面使用solidity高級(jí)語(yǔ)言寫的代碼譯成以太坊虛擬機(jī)能識(shí)別的以太坊虛擬機(jī)位碼爷速。

? ? ? ? ????下面我將舉例使用truffle來(lái)部署我們上面的智能合約:

? ??????????truffle的安裝等詳見(jiàn):https://blog.csdn.net/loy_184548/article/details/77984366

? ? ? ? ? ? 在控制臺(tái)中輸入truffle migrate或者truffle migrate --reset,如圖:

這樣霞怀,我們等智能合約已經(jīng)部署好啦惫东。

? ? ? ? 3.調(diào)用智能合約

????????經(jīng)過(guò)以上的部署運(yùn)行后,我們可以通過(guò)web3.js或者geth cli客戶端發(fā)起調(diào)用毙石,相關(guān)調(diào)用api可參考

????http://web3js.readthedocs.io/en/1.0/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廉沮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子徐矩,更是在濱河造成了極大的恐慌滞时,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滤灯,死亡現(xiàn)場(chǎng)離奇詭異坪稽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鳞骤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門窒百,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人豫尽,你說(shuō)我怎么就攤上這事篙梢。” “怎么了美旧?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵渤滞,是天一觀的道長(zhǎng)贬墩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)妄呕,這世上最難降的妖魔是什么陶舞? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮绪励,結(jié)果婚禮上吊说,老公的妹妹穿的比我還像新娘。我一直安慰自己优炬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布厅贪。 她就那樣靜靜地躺著蠢护,像睡著了一般。 火紅的嫁衣襯著肌膚如雪养涮。 梳的紋絲不亂的頭發(fā)上葵硕,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音贯吓,去河邊找鬼懈凹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悄谐,可吹牛的內(nèi)容都是我干的介评。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爬舰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼们陆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起情屹,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坪仇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后垃你,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體低矮,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡求晶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汇竭。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖彩郊,靈堂內(nèi)的尸體忽然破棺而出讥耗,到底是詐尸還是另有隱情,我是刑警寧澤望伦,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布林说,位于F島的核電站煎殷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腿箩。R本人自食惡果不足惜豪直,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望珠移。 院中可真熱鬧弓乙,春花似錦、人聲如沸钧惧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浓瞪。三九已至懈玻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乾颁,已是汗流浹背涂乌。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留英岭,地道東北人湾盒。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诅妹,于是被迫代替她去往敵國(guó)和親罚勾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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

  • 前言:本篇作為學(xué)習(xí)筆記的第四篇吭狡,重點(diǎn)分析智能合約的技術(shù)構(gòu)成及設(shè)計(jì)要點(diǎn)荧库,部分基礎(chǔ)概念基于前面篇章內(nèi)容之上不再解釋,但...
    六面閱讀 1,236評(píng)論 0 0
  • 姓名:張漢超 公司:東莞耀升機(jī)電有限公司 組別:4月25-27日六項(xiàng)精進(jìn)245期學(xué)員 【日精進(jìn)打卡第47天】 【知...
    張漢超閱讀 334評(píng)論 0 0
  • 夢(mèng)境是我們通向自我直覺(jué)力最容易接觸的途徑赵刑。 直覺(jué)的心靈是一種神圣的天賦分衫,理性的思維則是忠實(shí)的仆人。我們已創(chuàng)造出一個(gè)...
    魚頭shiny閱讀 721評(píng)論 0 2
  • 文/醒著做夢(mèng)的人 聽窗外的雨滴 滴滴落在青苔與墻縫之間 聽窗外的腳步 聲聲環(huán)繞紅塵與青山之間 聽窗外的貓?zhí)?絲絲撩...
    簡(jiǎn)九五閱讀 320評(píng)論 0 4
  • “張敏般此,你個(gè)廢物蚪战!被戴綠帽子活該!被公司開了更活該铐懊!你看看你現(xiàn)在的德行邀桑,以前自信陽(yáng)光的你哪去了?科乎!被狗吃了嗎壁畸?!”...
    圍巍閱讀 550評(píng)論 0 4