當前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導讀] 在上一篇《從一筆交易來看ETH與BTC之異同》中,我們從一筆交易來概略說明了ETH與BTC轉帳交易的不同之處,本篇文章我們要來談以太坊智能合約。不會談到實作部分,而是希望能從實際應用場景切入來說

在上一篇《從一筆交易來看ETH與BTC之異同》中,我們從一筆交易來概略說明了ETH與BTC轉帳交易的不同之處,本篇文章我們要來談以太坊智能合約。不會談到實作部分,而是希望能從實際應用場景切入來說明,讓閱讀完本文的讀者都能充分理解智能合約的技術運作原理。

好!那本文便開始啰!我們直接開門見山地來談談:

何謂智能合約?

智能合約本質(zhì)上是一段部署 ( Deploy,即發(fā)布) 到區(qū)塊鏈上的程式碼,因為區(qū)塊鏈上的程式碼(嚴格來說是二進位碼)可以被檢視,所以具備公開透明的特性。智能合約被部署到鏈上后會產(chǎn)生一個合約地址,永久存在于鏈上的區(qū)塊之中。以下用Pelith開發(fā)部署之CryptoCow智能合約為范例做解說。

如何部署智能合約?

我們從智能合約的誕生談起。

開發(fā)者將程式碼開發(fā)完成后,要透過發(fā)送一筆接收地址為“0x0”開頭的交易(一般交易的接收地址為0x開頭,后面接一串字),并在交易的 Input Data內(nèi)放上開發(fā)完成的程式碼。礦工看到接收地址為0x0的交易就會知道交易的發(fā)送者想要部署智能合約,隨后便會將Input Data內(nèi)的程式碼部署到區(qū)塊鏈上,并生成一個合約地址。

然而我們會發(fā)現(xiàn)Input Data充滿了看不懂的文字,似乎跟我們印象中的程式碼不太一樣,原因是在以太坊上儲存的合約邏輯是以Bytecode 的形式,所以開發(fā)者以Solidity開發(fā)的原始碼必須先被編譯成Bytecode 才能部署上鏈。

目前大多數(shù)開發(fā)者使用的開發(fā)工具,如:Remix 本身都具備編譯的功能,開發(fā)者開發(fā)完原始碼后只要一鍵進行編譯的動作便能取得Bytecode 。

至此,我們來整理一下部署智慧合約上鏈的流程:

1. 開發(fā)者以Solidity 編寫完成合約

2. 原始碼編譯為Bytecode

3. 放入交易的Input Data 中

4. 接收地址部分留空(0x0)

5. 節(jié)點(礦工) 判定為要發(fā)送合約上鏈

6. 礦工執(zhí)行,并部署上鏈生成智慧合約

7. 合約擁有自己的「合約地址」,永久存在鏈上

什么是合約地址?

在合約生成之后,會創(chuàng)造出一個合約地址,讓合約(Contract Account)和個人帳戶(Externally Owned Account)一樣都有一個地址,會紀錄追蹤nonce(帳戶的交易次數(shù))和balance(帳戶余額)。

不過合約因為是「被」創(chuàng)造出來的,不像個人帳戶一樣可以「主動操作」來發(fā)送交易給別人,所以我們?nèi)绻褂弥腔酆霞s的功能,必須要以個人帳戶發(fā)送一筆「接收地址為合約地址」的交易,來主動觸發(fā)合約,讓合約執(zhí)行動作。

因此,任何一筆交易的起點都必須是個人帳戶。

接著,我們來實際看看一筆和智能合約互動的交易,下方是一筆很常見的操作合約交易,內(nèi)容是將一顆透過智能合約創(chuàng)造出來的ERC-20 代幣,從一個地址轉移到另一個地址中。而這些操作,必須透過交易發(fā)起者將這些操作以程式原始碼撰寫,編譯后放到Input Data 中。

上方紅框中其實是Etherscan 解碼(Decode)后呈現(xiàn)的樣式,而Solidity 原始碼編譯后其實是長得像下列這樣,以hex(16進位制)的方式表示。

對照上下兩種不同表現(xiàn)形式的圖,我們可以發(fā)現(xiàn)下圖紅底線的部分(0x93316cdf)在上圖中被以 MethodID 標示出來。其實0x后的前8碼表示的是 我們要呼叫合約中的什么 function(在智慧合約撰寫時我們會規(guī)劃有哪些功能是可以使用的),后面接的則是該功能的其它參數(shù)。

而這個 MethodID(0x93316cdf)其實也有許多其它的別名,這邊列舉一些比較常聽到的:HashID、FuncTIon Hash、FuncTIon Signature 等。

因此,知道這個之后,未來我們在操作DAPP 時,便能去檢視背后的操作,也可以直接上以太坊區(qū)塊鏈瀏覽器Etherscan 去追蹤交易(TransacTIon),看是否智慧合約真的有按照DAPP 應用程式介面顯示的狀態(tài)去執(zhí)行功能。

如果不確定這個MethodID是什么功能或會做什么,可以到Ethereum FuncTIon Signature Database 上查詢:

把0x93316cdf 貼上并搜尋后,便能得知這個MethodID 對應的是什么function,可以再以這個function 到智慧合約的程式碼中去確認到底操作了什么。

結論

智能合約是一段部署到區(qū)塊鏈上的程式碼,可以有各式各樣的功能。因為區(qū)塊鏈公開透明的特性,所以可以被任何人檢視和驗證。

合約部署完成后會生成「合約帳戶」,有自己的合約地址。但所有的交易與操作都必須「個人帳戶」發(fā)起,去呼叫合約中的function來執(zhí)行。

想要確認操作合約的交易到底做了什么,可以檢視Input Data內(nèi)0x后的前八碼 MethodID,并查詢這是什么 function,再到合約帳戶中去檢視原始碼來確認。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉