中國(guó)福建網(wǎng)

當(dāng)前位置:中國(guó)福建網(wǎng) > 國(guó)內(nèi) > 正文

Wisdom Chain內(nèi)核設(shè)計(jì)理念一:驗(yàn)證式規(guī)則編程

作者: 編輯 來源:互聯(lián)網(wǎng) 發(fā)布時(shí)間:2020-03-05

┊文章閱讀:

  區(qū)塊鏈的概念始于比特幣,到今天為止,至少也有10年以上的歷史了,一份比特幣白皮書;一份比特幣程序,開啟了區(qū)塊鏈的時(shí)代。這些年來,涌現(xiàn)了一輪又一輪的設(shè)計(jì)思想,光是共識(shí)機(jī)制,就衍生出了若干種,經(jīng)濟(jì)模型的設(shè)計(jì)更是百花齊放。整個(gè)社區(qū),都為一次又一次新概念的出現(xiàn)而歡呼??v觀計(jì)算機(jī)發(fā)展史,除了早期的集成電路的出現(xiàn)以及后來的互聯(lián)網(wǎng)浪潮,很少有一門技術(shù)產(chǎn)品能引起全社會(huì)討論的熱潮,并且橫掃世界各國(guó)的政府、金融機(jī)構(gòu)以及實(shí)體產(chǎn)業(yè)。討論的話題從技術(shù)到經(jīng)濟(jì),再到場(chǎng)景應(yīng)用,再到價(jià)值思想,可以說是涵蓋了相當(dāng)廣泛的范圍??上У氖牵拖裨缦鹊淖诮桃粯?,作為區(qū)塊鏈概念創(chuàng)始之初是比特幣,其創(chuàng)始人也一早就消失了,這就帶來一個(gè)問題,后世之人對(duì)其中的思想可以產(chǎn)生各種解讀,而由于"圣人"不在,概念見地林林總總,因此誰(shuí)也說不了誰(shuí),猶如基督教分為天主教、東正教和新教;伊斯蘭教分為什葉派、遜尼派,雖說同宗,卻是很不同的分支,在一些思想上甚至產(chǎn)生了相悖,這也算是一種分叉吧。

  本文所要討論的話題,便是與智能合約相關(guān)的理念。就區(qū)塊鏈系統(tǒng)來說,智能合約的概念并不是一開始就有的,比如在比特幣中就沒有智能合約的概念,只有支付指令的概念,是一種較為簡(jiǎn)單的逆波蘭表達(dá)式,用于實(shí)現(xiàn)比特幣所有權(quán)的驗(yàn)證轉(zhuǎn)換。早期基于比特幣的其他競(jìng)爭(zhēng)幣也同樣沒有智能合約的概念,只是改改共識(shí)算法或者密碼算法,基本上換個(gè)馬甲就上路了。智能合約的概念是從以太坊開始的,以太坊認(rèn)為,既然比特幣中的轉(zhuǎn)賬是通過一組指令完成的,那為什么不把這個(gè)指令的功能范圍擴(kuò)大呢?比如不但能實(shí)現(xiàn)固定的轉(zhuǎn)賬支付,還能實(shí)現(xiàn)其他各種自定義的功能,將指令的功能定義交給用戶,讓用戶來編程實(shí)現(xiàn),區(qū)塊鏈雖然是新穎的技術(shù)結(jié)構(gòu),但是自定義編程可是很成熟的,在計(jì)算機(jī)領(lǐng)域,主流的編程語(yǔ)言和環(huán)境相當(dāng)多,比如java/javascript/c++/golang/c#等等,隨便移植一個(gè)都能用來實(shí)現(xiàn)用戶編程的功能了。以太坊將移植到區(qū)塊鏈上的編程功能稱之為智能合約。為了統(tǒng)一稱呼簡(jiǎn)單的逆波蘭表達(dá)式和智能合約,我們一并稱之為腳本系統(tǒng)。由于以太坊的帶頭,后續(xù)很多系統(tǒng)都效仿移植其他的編程環(huán)境到區(qū)塊鏈中,比如NEO移植C#的語(yǔ)言環(huán)境;EOS移植WebAssembly語(yǔ)言環(huán)境,F(xiàn)abric移植golang語(yǔ)言環(huán)境,等等。腳本系統(tǒng)分為了兩派,以比特幣為代表的硬編碼指令結(jié)構(gòu)以及以太坊為代表的圖靈完備語(yǔ)言環(huán)境。

  這兩種做法就像什葉派與遜尼派,同宗而不同路,我們這里不去分析那些形而上的意識(shí)形態(tài),就純粹站在技術(shù)角度來簡(jiǎn)要的對(duì)比剖析一下,并且給大家介紹WDC(WisdomChain,中文:智慧鏈)是如何設(shè)計(jì)的。

  先來說硬編碼指令結(jié)構(gòu),我們來列舉其特點(diǎn):

  1,功能固定,方便用戶理解與使用

  2,校驗(yàn)可以做的很完善,增強(qiáng)安全性

  3,整個(gè)系統(tǒng)的功能是有邊界的,易于設(shè)計(jì)專注的系統(tǒng)

  4,編程實(shí)現(xiàn)可以測(cè)試所有可能的功能方面

  5,符合KISS原則(Keep it Simple,Stupid)

  那么,智能合約設(shè)計(jì)又有哪些特點(diǎn)呢?我們也來列舉一下:

  1,功能可擴(kuò)展,支持用戶靈活編程

  2,充分發(fā)揮編程語(yǔ)言的能力,編程語(yǔ)言有的,智能合約全都有

  3,無限發(fā)揮"合約"的理念和應(yīng)用空間

  4,吸引程序員開發(fā)應(yīng)用生態(tài)

  5,突出智能合約中的"智能"

  以上就是兩個(gè)宗派各自的特點(diǎn),乍看一下各有千秋,很難說誰(shuí)更好一些。那么,我們來使用象限法分析一下,任何一個(gè)腳本系統(tǒng),其本質(zhì)無非就是為了實(shí)現(xiàn)一組功能,并且這樣的一組功能是施加在區(qū)塊鏈網(wǎng)絡(luò)而運(yùn)行的。我們可以給出一對(duì)指標(biāo)坐標(biāo),分別是靈活性和安全性。不妨假設(shè)x為靈活性,y為安全性,可見坐標(biāo)系如下:

  如圖所示,(不安全,不靈活)自然是最不好的,兩頭都不占;(不安全,靈活)也是有問題的,如果一個(gè)系統(tǒng)都不安全,還會(huì)有人愿意使用嗎?那么,可選的就只有(安全,不靈活)以及(安全,靈活)了,理想情況下,當(dāng)然是要選擇(安全,靈活),然而有沒有這樣的腳本系統(tǒng)呢?顯然這是很困難的,傳統(tǒng)的語(yǔ)言系統(tǒng)并不是為區(qū)塊鏈場(chǎng)景而設(shè)計(jì)的,更多的是作為一種通用的編程環(huán)境,強(qiáng)調(diào)靈活性而功能強(qiáng)大,語(yǔ)法設(shè)計(jì)靈活多樣化,語(yǔ)義豐富,這就使得如果要實(shí)現(xiàn)一個(gè)安全的程序編程,更多的是要依靠開發(fā)人員的水平,類似于我們的自然語(yǔ)言,能不能表達(dá)出富有哲理的話語(yǔ),能不能寫出華麗的文藻,不是取決于文字的設(shè)計(jì),而是取決于用的人的水平,律師可以寫出滴水不漏的法律協(xié)議合同;作家可以寫出雋永的散文詩(shī)篇;科學(xué)家可以寫出邏輯嚴(yán)密的學(xué)術(shù)論文,然而,絕大多數(shù)的普通人是沒有這個(gè)水平的,編程語(yǔ)言也一樣,即便再怎么進(jìn)行裁剪設(shè)計(jì),由于先天的靈活性和多樣性,使得程序員的編碼行為不容易控制。這些年,我們時(shí)時(shí)可以看到有各種基于智能合約的資產(chǎn)被盜,或許是因?yàn)楹霞s程序編寫有漏洞;或許是因?yàn)閳?zhí)行合約代碼的虛擬機(jī)出問題等原因。更要命的是,由于保有了靈活性,使得腳本程序的功能設(shè)計(jì)完全沒有邊界,這就導(dǎo)致系統(tǒng)無法從機(jī)制上,從技術(shù)上徹底的杜絕有問題的合約程序部署到鏈上。

  我們無意去攻擊那些系統(tǒng)的設(shè)計(jì)缺陷,然而技術(shù)是需要進(jìn)步的,比特幣可以成為先行者,但是先行者接下來的路需要后來者去走。區(qū)塊鏈設(shè)計(jì)的目的是為了實(shí)現(xiàn)一個(gè)所謂的靈活的編程環(huán)境嗎?當(dāng)然不是,我們之所以信任公鏈,信任區(qū)塊鏈上的資產(chǎn),是因?yàn)榘踩?、公證性、不可篡改性是其重要支撐,如若不然,便沒有了存在的意義了,這些是價(jià)值支撐的根本,是我們要解決的主要矛盾,其他的在這個(gè)主要矛盾之前,都是可以退而求其次的。

  那么,WDC (WisdomChain) 是如何設(shè)計(jì)的呢?是剩下的那個(gè)(安全,不靈活)嗎?其實(shí)這么說也不完全,從上述象限法中的幾種情況來看,BTC處于第二象限,ETH、EOS處于第四象限,WDC ( WisdomChain) 處于第一象限,以下我們就簡(jiǎn)要的剖析下WDC(WisdomChain)中的實(shí)現(xiàn)方式。

  首先,WDC(WisdomChain)的設(shè)計(jì)哲學(xué)是否定智能合約的理念的,什么叫合約?就是雙方或者多方約定了一組協(xié)議,并且遵照協(xié)議去執(zhí)行,這叫合約。這是一種商業(yè)傾向的稱呼,不同的商業(yè)實(shí)體之間有不同的合約約定,很多都是與業(yè)務(wù)相關(guān)的,放之于鏈上,一個(gè)業(yè)務(wù)級(jí)別的合約,如何在技術(shù)上來無誤的執(zhí)行呢?這個(gè)是沒有保證的,舉個(gè)例子,合約程序中實(shí)現(xiàn)了一種資產(chǎn),然后設(shè)置一個(gè)管理員,管理員擁有權(quán)限可以增發(fā)、銷毀、凍結(jié)用戶賬戶的資產(chǎn)。請(qǐng)問,這樣的合約符合區(qū)塊鏈的思想嗎?符合價(jià)值觀嗎?區(qū)塊鏈的核心價(jià)值,如上所述,是安全、公證以及不可篡改,可是部署在鏈上的合約卻可以實(shí)現(xiàn)單方面的增發(fā)、銷毀、凍結(jié)。這豈不是自相矛盾,甚至是可笑的。不但是資產(chǎn)合約,其他的也都是同樣的道理,眾籌、投票、交易系統(tǒng),等等,都是可以有漏洞的,只不過有些漏洞明顯,有些漏洞比較隱晦罷了。而更可怕的是,因?yàn)檫@些合約都是使用編程語(yǔ)言實(shí)現(xiàn)的,這完全不是一個(gè)普通大眾能夠去識(shí)別的,公鏈的使用者是公眾,而公眾能夠閱讀合約程序代碼嗎?遑論去辨別安全與否以及是否有隱藏的漏洞。

  因此,WDC(WisdomChain)采用的是一種可閱讀可識(shí)別的規(guī)則描述語(yǔ)句,是規(guī)則而不是合約程序,規(guī)則是一種靜態(tài)的定義而不是一種可能存在不可知行為的動(dòng)態(tài)程序。規(guī)則更是一種外部觸發(fā)機(jī)制,而不是內(nèi)部觸發(fā)的不安全的設(shè)計(jì)??偨Y(jié)下來,大多數(shù)系統(tǒng)的智能合約的實(shí)現(xiàn),基本包含如下的弊端:

  1、缺乏對(duì)區(qū)塊鏈資產(chǎn)定義的專門描述

  2、過于靈活的函數(shù)定義,不能保證腳本的安全性

  3、語(yǔ)法元素太豐富,不夠簡(jiǎn)化

  4、針對(duì)以上的基本功能沒有直接的語(yǔ)法語(yǔ)義支持

  5、支持內(nèi)部觸發(fā),不能確保安全

  6、缺乏經(jīng)濟(jì)金融模型的直接支持

  7、"執(zhí)行"而非"驗(yàn)證"

  8、不能很好的支持面向區(qū)塊鏈的程序升級(jí)

  WDC(WisdomChain)設(shè)計(jì)了專門的規(guī)則語(yǔ)法,實(shí)現(xiàn)了WDC(WisdomChain)所關(guān)注的功能區(qū)域,確定關(guān)注邊界,是哪些邊界呢?如下:

  1、資產(chǎn)定義

  2、多重簽名

  3、條件支付

  4、存證

  5、抵押

  6、投票

  一切腳本內(nèi)核的設(shè)計(jì),都是圍繞著明確的功能邊界來的,這就使WDC擁有功能專注點(diǎn),專注才能更安全,更易于使用。

  就規(guī)則的語(yǔ)法設(shè)計(jì),是很簡(jiǎn)潔易懂的,如下所示:

  <規(guī)則類型>

  {

  //屬性值定義

  //規(guī)則函數(shù)

  }

  I、屬性值定義是指與資產(chǎn)定義相關(guān)的屬性定義

  屬性值相當(dāng)于就是狀態(tài)量,是需要被存儲(chǔ)到節(jié)點(diǎn)賬本中的

  II、規(guī)則函數(shù)是一組驗(yàn)證規(guī)則,決定事務(wù)的調(diào)用以及驗(yàn)證點(diǎn),符合規(guī)則驗(yàn)證后,

  會(huì)根據(jù)規(guī)則進(jìn)行一系列的寫入更新

  規(guī)則類型擁有固定的規(guī)則定義格式,節(jié)點(diǎn)核心在源碼一級(jí)硬編碼支持,因此,用戶實(shí)際上只需要填充自己的屬性值和規(guī)則中的動(dòng)態(tài)的值,使用模板引擎的方式實(shí)現(xiàn)自己的規(guī)則。部署規(guī)則的過程也就是將用戶自己的規(guī)則寫入到區(qū)塊,是通過一條特殊的事務(wù)來。其中資產(chǎn)定義規(guī)則示例如下:

  {

  "ASSET_RULE": {

  "code": "wdcc",

  "offering": 10000,

  "totalamount":10000,

  "create": "xxxx",

  "owner": "yyyy",

  "allowincrease": 0

  "info":{}

  }

  }

  以上定義了一個(gè)代碼為wdcc的資產(chǎn), 初始為10000。并且具備3個(gè)主要是規(guī)則函數(shù),分別是changeowner、transfer以及increased

  鑒于篇幅原因,本文不做詳細(xì)展開,我們將以此來做一個(gè)系列篇,用以詳細(xì)剖析每一個(gè)規(guī)則的具體設(shè)計(jì)。通過規(guī)則設(shè)計(jì),在盡量保有用戶有邊界的靈活性的同時(shí),強(qiáng)力確保安全性。


  • 分類目錄
  • 軟文發(fā)布平臺(tái)
  • 重慶網(wǎng)站建設(shè)
  • 帆布水池
  • 運(yùn)維開發(fā)網(wǎng)
  • 網(wǎng)址導(dǎo)航
  • 淘寶優(yōu)惠券
  • IT新聞
  • 淘寶erp
  • 植物提取物網(wǎng)
  • 站長(zhǎng)網(wǎng)
  • 源碼論壇
  • 激光打標(biāo)機(jī)
  • 丹泊儀器
  • 礦山生態(tài)修復(fù)
  • 青島月子會(huì)所
  • 知識(shí)付費(fèi)
  • 辦公家具
  • 呱呱贊小程序
  • 淄博java培訓(xùn)
  • 小程序開發(fā)
  • seo外包公司
  • 秘樂魔方
  • 工程拍照軟件
  • 速賣通論壇
  • 極客網(wǎng)
  • 甘州文化網(wǎng)
  • 優(yōu)鞋論壇
  • 模型網(wǎng)
  • 寧波小程序開發(fā)