區(qū)塊鏈已經(jīng)進(jìn)化出智能合約,DApp等新的技術(shù),區(qū)塊鏈2.0、3.0時代也正在來臨。本文將詳細(xì)介紹智能合約是什么。 區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲項目系統(tǒng): I8I合約2591開發(fā)3365部署、點對點傳輸、共識機制、加密算法等計算機技術(shù)的新型應(yīng)用模式。所謂共識機制是區(qū)塊鏈系統(tǒng)中實現(xiàn)不同節(jié)點之間建立信任、獲取權(quán)益的數(shù)學(xué)算法。這套理論由中本聰在2008年提出,并在2009年發(fā)布了首個比特幣軟件。 比特幣基于Pow算法:通過與或運算,計算出一個滿足規(guī)則的隨機數(shù),即獲得本次記賬權(quán),發(fā)出本輪需要記錄的數(shù)據(jù),全網(wǎng)其它節(jié)點驗證后一起存儲,以工作量證明其價值。雖然其完全去中心化的特點是區(qū)塊鏈的核心思想,也暴露出比特幣Pow共識算法的弊端:資源大量浪費、共識達(dá)成的周期較長和易分叉。 于是,以太坊以Pos+Pow相結(jié)合公式算法給出區(qū)塊鏈更大的發(fā)展空間,也應(yīng)運而生出智能合約這一概念。 那什么又是智能合約呢? 首先,我們希望大家了解智能合約的本質(zhì)。同時,在人們了解智能合約的時候,也解除大家對區(qū)塊鏈在法律上面的誤解。 智能合約不是一個新的概念。“智能合約”(smart contract)這個術(shù)語至少可以追溯到1995年,是由多產(chǎn)的跨領(lǐng)域法律學(xué)者尼克·薩博(Nick Szabo)提出來的。他在發(fā)表在自己的網(wǎng)站的幾篇文章中提到了智能合約。他的定義如下:智能合約(英語:Smart contract)是一種旨在以信息化方式傳播、驗證或執(zhí)行合同的計算機協(xié)議。智能合約允許在沒有第三方的情況下進(jìn)行可信交易。這些交易可追蹤且不可逆轉(zhuǎn)。 從編程角度而言,智能合約就是一段代碼。相比常規(guī)代碼,智能合約具有許多差別與限制,例如: 單線程執(zhí)行 代碼執(zhí)行會消耗資源,不能超出資源限制 目前難以獲取鏈外數(shù)據(jù),例如取得天氣信息、比賽結(jié)果等 其他限制,如TPS 這些特點使得目前智能合約生態(tài)以鏈上資源的治理為核心。就像以太坊上各式各樣的ERC標(biāo)準(zhǔn)與治理方案;EOS上有各種資源模型,比如CPU、RAM、Rex、Bancor協(xié)議等。 顯然,就目前的生態(tài)而言,智能合約對現(xiàn)實世界的影響力有限。 但事物總是在發(fā)展的。目前,已有許多致力于突破這些限制的研究,典型的有Oracle(諭言機,但常被稱為預(yù)言機),它允許智能合約和鏈外進(jìn)行交互,這樣就能大大提高智能合約的使用場景,彷佛一臺電腦通上了網(wǎng);再比如那些突破鏈自身性能瓶頸的嘗試,例如支付通道、跨鏈、plasma、rollup,它們都從不同角度打破安全與性能的枷鎖。 毋庸置疑,智能合約將扮演著越來越重要的角色,將來隨著以太坊2.0的落地,也許會開啟新一個區(qū)塊鏈時代。 智能合約技術(shù) 以太坊采用了Solidity作為智能合約語言,Solidity是一門為實現(xiàn)智能合約而創(chuàng)建的高級編程語言,能在允許以太坊程序的節(jié)點上運行。該語言吸收了C++、JavaScript的一些特性,例如它是靜態(tài)類型語言,支持繼承、庫等。 //SPDX-License-Identifier:GPL-3.0 pragma solidity>=0.4.16<0.9.0; contract SimpleStorage{ uint storedData; function set(uint x)public{ storedData=x; } function get()public view returns(uint){ return storedData; } } |