ABI 簡(jiǎn)述

ABI 簡(jiǎn)述 鏈接

原文:

什么是ABI

ABI是Application Binary Interface的縮寫卡乾,字面意思 應(yīng)用二進(jìn)制接口,可以通俗的理解為 合約的接口說(shuō)明刁赦。當(dāng)合約被編譯后,那么它的abi也就確定了闻镶。
我們先來(lái)看個(gè)極簡(jiǎn)單的合約和它的abi

pragma solidity ^0.4.4;
contract test { 
    string public a;
    function modify_a(string val) {
        a = val;
    }
}

編譯后的字節(jié)碼

6060604052341561000c57fe5b5b60e18061001b6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dbe671f146044578063efa3b144146067575bfe5b3415604b57fe5b60516098565b6040518082815260200191505060405180910390f35b3415606e57fe5b60826004808035906020019091905050609e565b6040518082815260200191505060405180910390f35b60005481565b60006005820260008190555060005490505b9190505600a165627a7a72305820e7910925075fb58319dd637b47520b821714dd11ad896cb6d8272151aff714690029

abi

[{"constant":true,"inputs":[],"name":"a","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"val","type":"uint256"}],"name":"modify_a","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"}]modify_a","outputs":[],"payable":false,"type":"function"}]

為了看起來(lái)更方便甚脉,把它格式化一下

[
  {
    "constant": true,
    "inputs": [

    ],
    "name": "a",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "val",
        "type": "uint256"
      }
    ],
    "name": "modify_a",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "type": "function"
  }
]

可以看到,解析之后是一個(gè)數(shù)組铆农,它包含兩個(gè)對(duì)象牺氨,每個(gè)對(duì)象都對(duì)應(yīng)著一個(gè)合約方法,這里因?yàn)閍是public類型的,編譯的時(shí)候會(huì)自動(dòng)為它生成get()方法波闹,所以這個(gè)合約實(shí)際是包含兩個(gè)方法的酝豪,解析之后的json應(yīng)該不難看懂,下面對(duì)幾個(gè)關(guān)鍵字做以解釋

  • type 方法類型精堕,包括function, constructor, fallback(缺省方法)可以缺省,默認(rèn)為function
  • name 方法名
  • inputs 方法參數(shù)蒲障,它是一個(gè)對(duì)應(yīng)數(shù)組歹篓,數(shù)組里的每個(gè)對(duì)象都是一個(gè) 參數(shù)說(shuō)明
  • name 參數(shù)名
  • type 參數(shù)類型
  • outputs 方法返回值,格式和inputs類型揉阎,如果沒(méi)有返回值可以缺省
  • constant 布爾值庄撮,如果為true指明方法不會(huì)修改合約的狀態(tài)變量
  • payable 布爾值,標(biāo)明方法是否可以接收ether

構(gòu)造方法和缺省方法不能有name 和 outputs , 缺省方法也不能有inputs
向一個(gè)沒(méi)有payable標(biāo)注的方法發(fā)送ether會(huì)拋異常

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毙籽,一起剝皮案震驚了整個(gè)濱河市洞斯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坑赡,老刑警劉巖烙如,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異毅否,居然都是意外死亡亚铁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門螟加,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)徘溢,“玉大人,你說(shuō)我怎么就攤上這事捆探∪槐” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵黍图,是天一觀的道長(zhǎng)曾雕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)雌隅,這世上最難降的妖魔是什么翻默? 我笑而不...
    開(kāi)封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮恰起,結(jié)果婚禮上修械,老公的妹妹穿的比我還像新娘。我一直安慰自己检盼,他們只是感情好肯污,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般蹦渣。 火紅的嫁衣襯著肌膚如雪哄芜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天柬唯,我揣著相機(jī)與錄音认臊,去河邊找鬼。 笑死锄奢,一個(gè)胖子當(dāng)著我的面吹牛失晴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拘央,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼涂屁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了灰伟?” 一聲冷哼從身側(cè)響起拆又,我...
    開(kāi)封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栏账,沒(méi)想到半個(gè)月后帖族,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡发笔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年盟萨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片了讨。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捻激,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出前计,到底是詐尸還是另有隱情胞谭,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布男杈,位于F島的核電站丈屹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏伶棒。R本人自食惡果不足惜旺垒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肤无。 院中可真熱鬧先蒋,春花似錦、人聲如沸宛渐。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至业岁,卻和暖如春鳞仙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笔时。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工棍好, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人糊闽。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓梳玫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親右犹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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