當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導(dǎo)讀] 前言:智能合約這個詞你可能聽過無數(shù)遍,但有多少人真正理解什么是智能合約?本文幫你深入理解以太坊智能合約。 你可能聽說過“智能合約”,甚至可能知道它們是在區(qū)塊鏈上運行的代碼。 但是

前言:智能合約這個詞你可能聽過無數(shù)遍,但有多少人真正理解什么是智能合約?本文幫你深入理解以太坊智能合約。

你可能聽說過“智能合約”,甚至可能知道它們是在區(qū)塊鏈上運行的代碼。

但是你如何才能在區(qū)塊鏈上運行代碼?這不是可以輕易理解的簡單概念。

本文解釋了智能合約是如何在以太坊區(qū)塊鏈上運行的。對編程的基礎(chǔ)理解將會有所幫助,因為本文包含了一些用于舉例的簡單代碼。為了清晰起見,本文將其中的一些技術(shù)細(xì)節(jié)稍微進(jìn)行了簡化,但概念是有效的。

區(qū)塊鏈-快速入門

這里不講太多細(xì)節(jié),區(qū)塊鏈技術(shù)的核心概念是分布式賬本。它是一種在眾多參與者之間共享的特殊類型的數(shù)據(jù)庫。

這個特殊的數(shù)據(jù)庫就是一個交易列表,記錄了網(wǎng)絡(luò)中發(fā)生的每一筆交易。每個人都有一個副本。這種去中心化分布結(jié)合強有力的貨幣激勵措施, 消除了各方之間信任的必要性。

傳統(tǒng)意義上,當(dāng)事人之間的信任是通過中間人,即第三方來解決的,比如Paypal、銀行。與你不信任的人之間的交易將通過雙方都信任的中間人進(jìn)行。

有了區(qū)塊鏈,這種需求消失了。因為你可以把你的信任放在網(wǎng)絡(luò)上,在這里,強有力的激勵措施消除了作弊欺騙的欲望(簡而言之:遵守規(guī)則更有利可圖)。

更具體地說:區(qū)塊鏈網(wǎng)絡(luò)是一組機器,它們記錄著相同的交易列表副本(例如,從A轉(zhuǎn)給B的錢)。

因為每個人都有相同的列表,所以很難欺騙網(wǎng)絡(luò)接受錯誤的交易。結(jié)合一些加密算法和貨幣獎勵以便遵守規(guī)則,你的網(wǎng)絡(luò)會非常安全。

所有這些也使得區(qū)塊鏈幾乎是不可變的,因為改變歷史記錄的唯一方法是獲得全網(wǎng)大多數(shù)人的同意。

什么是智能合約?

區(qū)別于比特幣,以太坊最大的不同是引入了智能合約的概念。比特幣是數(shù)字貨幣,以太坊也是數(shù)字貨幣,但遠(yuǎn)不止這些。

“智能合約”這個名稱有點誤導(dǎo)人。它們不是真正的合約,也不特別智能。它們只是一些可以運行在區(qū)塊鏈上的代碼 - 或者說是計算機邏輯運算。

首先,我將介紹有關(guān)智能合約是以太坊網(wǎng)絡(luò)上的一種特殊賬戶。你有用戶賬戶,你還有智能合約賬戶。

一個用戶賬戶包括:

· 一個地址(類似于你的銀行賬號-它也存在于比特幣上)

· 余額(我有多少錢)

一個智能合約賬戶包括:

· 一個地址

· 余額(以太坊)

· 一個狀態(tài)

· 代碼

地址和普通賬戶的地址是一樣的,它是該賬戶的唯一識別符。

余額和普通賬戶也是一樣的概念。唯一令人激動的是,智能合約上的余額意味著代碼可以擁有金錢。它可以處理這些錢,也可能因為編碼錯誤而造成處理不當(dāng)。

智能合約帳戶的狀態(tài)是智能合約中聲明的所有字段和變量的當(dāng)前狀態(tài)。它的工作方式與大多數(shù)編程語言中類的字段變量相同。事實上,一個類的實體化對象可能是理解智能合約的最簡單方法。唯一的區(qū)別是這個對象是永久存在的(除非被編程為自我毀滅)。

智能合約的代碼是編譯好的字節(jié)代碼,以太坊客戶機和節(jié)點可以在上面運行。它是在創(chuàng)建智能合約時執(zhí)行的代碼,并且包含可以調(diào)用的函數(shù)。就像面向?qū)ο缶幊痰恼Z言中的任何對象一樣。

關(guān)于智能合約的趣事:它們可以調(diào)用其它的智能合約。這就開啟了創(chuàng)建自主代理的能力,這些代理可以自己花錢和進(jìn)行交易。

假設(shè)我用上面的代碼創(chuàng)建了一個智能合約。該代碼有一個名為counter的字段,類型為uint(整數(shù))。counter變量的內(nèi)容是本合約的狀態(tài)。每當(dāng)我調(diào)用count()函數(shù)時,任何人都能看到這個智能合約在區(qū)塊鏈上的狀態(tài)將會加1。

稍后我們將通過更多的例子來解釋它是如何工作的,但首先我想回到以太坊和比特幣的交易,并以此來解釋一些事情。

交易水平上,以太坊VS比特幣

比特幣交易非常簡單。你可以只做一件事。一種類型的交易。略過一些細(xì)節(jié),一切都可以歸結(jié)為TO(付給,誰在收錢),F(xiàn)ROM(來自于,誰在付錢)和AMOUNT(數(shù)量,多少錢)。這使得比特幣成為一種價值儲存手段,能夠在網(wǎng)絡(luò)參與者之間傳遞價值。

以太坊的不同之處在于交易還有一個“DATA”(數(shù)據(jù))字段。該“DATA”字段支持三種類型的交易:

價值轉(zhuǎn)移(和比特幣一樣)

· TO接收地址

· DATA字段為空或包含要附加的任何消息

· FROM你

· AMOUNT是你要發(fā)送的以太坊數(shù)量

創(chuàng)建智能合約

· TO字段為空(它觸發(fā)智能合約的創(chuàng)建)

· DATA字段包含編譯為字節(jié)代碼的智能合約代碼

· FROM你

· AMOUNT 可以是0或者任意你想放在合約里的以太坊數(shù)量

創(chuàng)建智能合約

· TO字段為空(它觸發(fā)智能合約的創(chuàng)建)

· DATA字段包含編譯為字節(jié)代碼的智能合約代碼

· FROM你

· AMOUNT 可以是0或者任意你想放在合約里的以太坊數(shù)量

調(diào)用智能合約

· TO字段是智能合約賬戶地址

· DATA字段包含函數(shù)名稱和參數(shù)– 如何調(diào)用智能合約

· FROM你

· AMOUNT可以是0或者任何數(shù)量的以太坊,比如你需要為一項服務(wù)合約支付的數(shù)目

在這些交易中還有更多的字段和復(fù)雜性,但以上這些已經(jīng)很好地解釋了核心概念。讓我們看看關(guān)于這些交易的一些更具體的例子。

以太坊交易

價值轉(zhuǎn)移

非常簡單。TO向一個地址發(fā)送一定數(shù)目的以太坊代幣。你也可以為一筆交易加上一條消息。

創(chuàng)建智能合約

正如以上提到的,一個空的TO字段表示創(chuàng)建一份智能合約。DATA字段包含編譯為字節(jié)代碼的智能合約。

調(diào)用合約

我們稍后會回到這個問題,但是其主要概念是你將交易發(fā)送到你想要調(diào)用的智能合約地址,然后將函數(shù)調(diào)用放在DATA字段中。

注意成本和執(zhí)行

正如你所想象的,你不能一直在區(qū)塊鏈上免費運行計算量很大的程序。

代碼的執(zhí)行是由調(diào)用者用一種叫做gas的東西來支付的。Gas是運行以太坊虛擬機的燃料。你可以將其視為每次執(zhí)行指令的費用(就像一行代碼)。

你需要為一個特定的合約調(diào)用設(shè)置可花費的最大gas。比如,如果你調(diào)用的代碼進(jìn)入了一個永久循環(huán),將會確保在執(zhí)行過程中所花費的gas不會超過設(shè)置的最大gas。

gas(執(zhí)行)的成本由網(wǎng)絡(luò)的礦工(運行代碼的節(jié)點)決定。關(guān)于gas和執(zhí)行,還有很多知識。但以上這些值得牢牢記住。

智能合約如何工作?

當(dāng)一個智能合約被部署到以太坊網(wǎng)絡(luò)時,任何人都可以調(diào)用智能合約的函數(shù)。雖然出于安全考慮該函數(shù)可能阻止人們調(diào)用,但你可以自由嘗試。

假設(shè)有一個MyObject類型的對象。該對象有一個名為myFunction的函數(shù)。要調(diào)用它,只需引用對象的實例、調(diào)用哪個函數(shù)和使用哪個參數(shù)調(diào)用。

像這樣:

myObjectReference.myFuncTIon(parameters);

該函數(shù)返回的任意值,可以將其存在變量中:

myVariable = myObject.myFuncTIon(parameters);

調(diào)用一個智能合約在概念上是一樣的。唯一的區(qū)別是,你必須將調(diào)用相關(guān)的所有信息放在交易中,對其簽名并發(fā)送到網(wǎng)絡(luò)上來執(zhí)行。

假設(shè)你想要調(diào)用函數(shù)myFuncTIon,其中包含智能合約“0x0123456”里的一些參數(shù)。調(diào)用智能合約分四步:

現(xiàn)在,當(dāng)交易被放進(jìn)區(qū)塊鏈中的一個塊,該狀態(tài)變化便會被記錄在整個網(wǎng)絡(luò)中。

世界計算機

許多人把以太坊稱為世界計算機。這是個不錯的類比。它就像一臺由整個世界來維護(hù)的虛擬機。

但是請記住:雖然智能合約是圖靈完備的,并且理論上可以做任何事情,但它們不太適合繁重的計算工作。

以太坊世界計算機就像一臺運行簡單程序的老式慢速計算機。由于成本和安全性,保持以太坊的智能合約小而簡單是至關(guān)重要的。

合約需要的計算量越多,運行的成本就越大。合約越復(fù)雜,就越有可能存在安全漏洞。而且智能合約中的安全漏洞是很難處理的——畢竟區(qū)塊鏈?zhǔn)遣豢勺兊摹?/p>

舉例:通證

回歸重點,我想解釋一下通證是如何工作的。

大多數(shù)這些通證都是在以太坊上創(chuàng)建的,而且概念非常簡單(它運行良好,但是太簡單了,以至于幾乎可以說是愚蠢的)。

如何使用Javascript或其他編程語言編寫一個簡單的貨幣系統(tǒng)?你可以在一個文件中完成所有的操作。你真正需要記錄的是:

1. 總供應(yīng)量

2. 賬戶

3. 賬戶中的余額

4. 資金流向

通過用戶和余額之間的簡單映射,你可以得到123的答案:

該map只是把一個賬戶映射到一筆錢。

使用構(gòu)造函數(shù)(constructor),你可以在自己的帳戶中設(shè)置初始供應(yīng)量 (或分布在任意數(shù)量的賬戶中)

資金的流動是通過簡單的函數(shù)來完成的,即從一個賬戶中減去,然后加在另一個賬戶上。

創(chuàng)建通證與我們在以太坊使用的概念完全相同。當(dāng)然,還有一些更復(fù)雜和額外的功能,但是基本概念非常簡單。

以下就是基本的通證合約在以太坊編程語言中呈現(xiàn)的樣子(再次重申:為清晰起見進(jìn)行了簡化):

這就是基礎(chǔ)編程概念。我認(rèn)為這說明了以太坊作為一個平臺的力量。通過一些簡單的代碼,你可以憑空生成一個代幣,它本質(zhì)上就是由世界計算機記錄的一些變量。歡迎來到新的互聯(lián)網(wǎng)。

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

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

關(guān)鍵字: 阿維塔 塞力斯 華為

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

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

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

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

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

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

關(guān)鍵字: 騰訊 編碼器 CPU

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

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

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

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

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

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

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

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉