中國福建網(wǎng)

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

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

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

┊文章閱讀:

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

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

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

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

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

  2,校驗可以做的很完善,增強安全性

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

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

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

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

  1,功能可擴展,支持用戶靈活編程

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

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

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

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

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

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

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

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

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

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

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

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

  3、語法元素太豐富,不夠簡化

  4、針對以上的基本功能沒有直接的語法語義支持

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

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

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

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

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

  1、資產(chǎn)定義

  2、多重簽名

  3、條件支付

  4、存證

  5、抵押

  6、投票

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

  就規(guī)則的語法設(shè)計,是很簡潔易懂的,如下所示:

  <規(guī)則類型>

  {

  //屬性值定義

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

  }

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

  屬性值相當于就是狀態(tài)量,是需要被存儲到節(jié)點賬本中的

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

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

  規(guī)則類型擁有固定的規(guī)則定義格式,節(jié)點核心在源碼一級硬編碼支持,因此,用戶實際上只需要填充自己的屬性值和規(guī)則中的動態(tài)的值,使用模板引擎的方式實現(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":{}

  }

  }

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

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


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