比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > BTC > Info

有趣的 DApp 設計模式:First-class Asset_SET

Author:

Time:1900/1/1 0:00:00

本篇文章的作者是Jan,文章闡述了Cell模型中支持的一種非常有趣的DApp設計模式:First-classAsset,它讓加密資產變成區塊鏈中的「一等公民」。喜歡函數式編程的工程師應該很熟悉一個名詞:First-classFunction,翻譯成中文應該叫「頭等函數」或者「一等函數」。First-classFunction指的是一類編程語言,在這些語言中函數是一個完全獨立的概念:函數可以被當作值賦給一個變量,可以被當作參數傳遞給其他函數,也可以被當作返回值從其它函數傳出來。在這樣的語言中我們可以像操縱數據一樣操縱函數,所以在這些語言中函數和數據一樣是「一等公民」。First-classFunction是函數式語言的一個關鍵特性,很多函數式編程的強大能力來源于此。NervosCKB使用Cell模型來構建整個共同知識庫的狀態。Cell模型是一個非常簡單但是與現有區塊鏈設計非常不同的狀態模型,我們在設計Cell模型的時候已經意識到,基于Cell模型的DApp將擁有一些非常不同的性質,就像函數式編程和面向對象編程會產生風格迥異的設計模式和程序特性一樣。在這篇文章中,我想闡述Cell模型可以支持的一種非常有趣的DApp設計模式,我們把它叫做First-classAsset,因為通過它我們可以將用戶自定義的加密資產變成區塊鏈中的「一等公民」。狀態模型的快速入門

在Cell模型之前,各種區塊鏈使用的狀態模型基本上就是兩種:UTXO模型和Account模型。使用UTXO模型的代表是比特幣。UTXO是未被花費的交易輸出的縮寫,一個UTXO可以簡單的理解為是一個比特幣,然而和一般的硬幣不同,每一個UTXO的面值都是不一樣的。每個UTXO中都通過一段鎖腳本記錄了這枚硬幣的所有者是誰,同時保證只有所有者能夠花費這枚硬幣。每一個比特幣全節點都會維護當前所有UTXO的集合,這個集合我們就稱為比特幣賬本的當前狀態。每一次比特幣轉賬都是一個從UTXO集合中刪除幾個硬幣然后又增加幾個新硬幣的過程。由于整個賬本狀態是基于UTXO這個最小單元構建的,我們把它叫做UTXO模型。使用Account模型的代表是以太坊。Account就是賬戶,和銀行賬戶類似,代表了資產的所有者,賬戶里面最重要的數據是余額,記錄這個賬戶持有的以太幣的數量。賬戶是資產所有者的代表,所有者可以是人或者智能合約,外部賬戶通過私鑰簽名來驗證資產所有權,合約賬戶的所有權通過合約代碼來確定,合約代碼和狀態都保存合約賬戶內部。外部賬戶要轉賬的時候,用戶在交易中指明轉賬數量,賬本中的付款方賬戶余額和收款方賬戶余額就會做相應的減少和增加。由于整個賬本狀態是基于賬戶這個最小單元構建的,我們把它叫做Account模型。First-classCoin

債券市場資深人士:拉丁美洲對比特幣的采用是世界上最有趣的地緣發展:債券市場資深人士、南加州大學馬歇爾商學院金融學和經濟學副教授Nik Bhatia發推表示,拉丁美洲對比特幣的采用是世界上最有趣的地緣發展,我全力支持。[2021/6/20 23:50:25]

UTXO模型和Account模型代表了構建賬本狀態的兩種思路。賬本是所有者與資產之間關系的集合。UTXO模型以資產為基礎建模,先構建出「硬幣」的概念,再給硬幣賦予所有者的屬性;Account模型以所有者為基礎建模,先構建出「賬戶」的概念,再給賬戶賦予余額的屬性。以哪種方式作為基礎模型決定了系統中的操作的基本對象是資產還是賬戶。所以我們說,硬幣是UTXO模型中的First-classCitizen,每一個UTXO都是一個具有獨立標識符的對象,Coin是用戶直接操作的對象,賬戶是基于Coin建立的上層概念。因此UTXO是First-classCoin。在Account模型中,賬戶是First-classCitizen,聚合在賬戶余額中的硬幣沒有獨立的標識符。賬戶是用戶直接操作的對象,資產的轉移是由賬戶作為用戶的代理實現的,這一點在接受方是合約賬戶時體現的最為明顯。在這樣的模型下,用戶定義加密資產更像是通過第三方記賬的方式,而非點對點的方式轉移,這個差異會將第三方引入資產轉移流程,增加智能合約的設計復雜度。為了降低這種復雜度,Account模型中的交易需要加入特殊的邏輯,但是這樣的特殊邏輯只有助于原生資產,同時造成對原生資產和用戶自定義資產的不同代碼路徑。對于這些問題,KelvinFitcher寫過一篇LookingatownershipintheEVM進行了很好的分析,在此不再贅述。有了這些背景,我們應該更容易理解CKB的這一設計理念了:有了Cell模型,我們能夠簡化設計,并在NervosCKB上實現作為「一等公民」的用戶定義資產,簡稱First-classAssets.First-classAssets與UTXO一樣,具有獨立標識符,可以被用戶及腳本直接引用和操作。First-classState

國際清算銀行創新樞紐負責人:薩爾瓦多采用比特幣作為法定貨幣是一個有趣的試驗:國際清算銀行創新樞紐負責人Benoit?Coeure:薩爾瓦多采用比特幣作為法定貨幣是一個有趣的試驗,我們認為比特幣是一種投機資產,應該受到監管。(金十)[2021/6/11 23:31:06]

如何實現First-classAssets呢?無論用何種方式,我們都需要記錄所有者和資產之間的關系。這些關系記錄,本質上是經過共識的狀態。要有First-classAssets,必須先有First-classState,而這正是Cell模型的出發點。NervosCKB的名字來自于CommonKnowledgeBase的縮寫。我們之所以把Nervos網絡中的區塊鏈稱為「共同知識庫」,是因為它的責任是持續不斷的對網絡的共同狀態形成全球共識,換句話說,CKB是一個由全球共識維護的狀態庫。一個狀態庫的基本模型,很自然的是將整個狀態劃分為更小的狀態單元組織起來。這些更小的狀態單元,就是Cell。由于Cell是一種狀態單元,有獨立的標識符,可以被直接引用,作為參數傳遞給腳本,它是CKB中的「一等公民」,也就是說狀態是CKB中的「一等公民」。Cell不僅僅是一種First-classState,而且是最簡單的一種First-classState:一個Cell中只有Capacity,Data,Lock以及Contract四個字段。如下圖所示,Cell的所有者可以直接更新Cell中保存的狀態,不需要經過任何中間方,而在Account模型中用戶只能通過合約代碼來操作賬戶內的狀態,狀態實際上是托管在合約手中的。值得指出的是,有了Cell,CKB實際上就獲得了一種有狀態的編程模型。一種普遍的觀點是,以太坊編程模型的表達能力來自圖靈完備的虛擬機,實際上通過賬戶使得智能合約能夠保存計算狀態是一個大過EVM的優點。CKB通過Cell和CKB-VM的組合實現了一種新的有狀態的智能合約編程模型。這個編程模型更加適合Layer2,因為通過分析Layer2協議的共同模式我們可以看到,協議層之間的交互對象應該是狀態對象而不是事件對象,Layer1應該是一個狀態層而不是計算層。CKB編程模型的另一個特點是,不區分數據和代碼。這句話的意思是,與Account模型不同,合約的狀態和代碼都可以儲存在Cell的Data字段中,保存代碼的Cell可以被其它Cell引用,合約的狀態和代碼不需要綁定在一起,存放在一個地方。開發者可以通過一條簡單的指令把代碼Cell或者數據Cell的內容載入運行時內存,然后根據需要自行將其解釋為代碼執行或者數據來讀寫。有了這些底層支持,我們就可以將一個合約的代碼和狀態分開保存在不同的地方:CodeCell的Code字段存放代碼,而StateCell的State的字段則保存狀態;在StateCell中通過Contractref引用CodeCell來建立對自身保存的State的業務邏輯約束,通過Lockref引用另外一個CodeCell來表達StateCell的所有權。每一個StateCell可以屬于不同的用戶,因此在Cell模型下獨立的用戶狀態是非常容易實現的模式。如果想對CKB-VM上的合約編寫有更多了解,請看這兩篇文章:HelloCKB!AnIntroductiontoNervosCKB-VM有了這樣一種編程模型,我們就能構造First-classAsset了。First-classAsset

Ripple CTO:“收集東西的動力”與“數字版權概念”是NFT有趣的兩個點:Ripple首席技術官David Schwartz在最近的一次采訪中表示,他認為與NFT相關的兩個點很有趣,一個是“人們收集東西的動力”,另一個是數字版權的概念。Schwartz指出,盡管許多人目前擁有“捆綁的數字版權”(例如從谷歌Play商店購買的書籍或歌曲),但這些版權的用戶體驗并不好。(CryptoGlobe)[2021/3/22 19:06:28]

CKB中的用戶定義資產可以這樣來構造:設計資產定義合約,規定資產的主要約束;保存合約代碼到AssetDefinitionCell中;在滿足發行權限的情況下,發行者發行資產,并將資產狀態保存在另外的StateCell中。StateCell的Contract字段引用保存了資產定義的CodeCell,保證StateCell的變化受到資產定義的約束;AssetCell的持有者可以通過更新Lock來改變AssetCell的所有者。可以看到,在這樣的設計中,用戶定義的資產是作為獨立對象存在于系統中的,每一份資產都是一個Cell,每一份資產都擁有自己的標識符。我們完全可以認為AssetCell是UTXO的通用化版本。這樣的First-classAsset有如下優點:AssetCell可以被引用,可以直接作為其它合約的參數傳入。只要引用AssetCell的Input有正確的用戶授權,合約就可以正常的使用用戶的AssetCell;資產定義與資產狀態分離。AssetDefinitionCell的所有者是資產的發行者,而AssetCell是屬于每個用戶的。AssetCell的授權邏輯和業務邏輯分離,所有權完全由自己的Lock決定,與AssetDefinition的邏輯無關,這意味著First-classAsset不是托管在資產發行者、開發者或是資產定義合約的手中,而是真正完全屬于用戶的;用戶的資產相互隔離,用戶資產狀態獨立。CKB的經濟模型關注狀態存儲激勵問題:用戶在區塊鏈上保存狀態不僅需要支付寫入費用,而且應該承擔與存儲時間成正比的存儲成本。如果用戶的資產狀態混合在一個地方保存,這些狀態的存儲成本有誰來支付將是一個問題。;只要AssetDefinitionCell的Lock邏輯允許,資產定義可以獨立更新。上面的示意圖只是在CKB上實現First-classAsset的一種方式。除了上面討論的方面,還有一些有趣的細節,例如,AssetDefinitionCell是不是可以有屬于自己的狀態?AssetDefinitionCell以及AssetCell的Capacity應該由誰來提供?對于這些問題,我們已經有了一些非常漂亮的想法。這些細節的設計、討論和實現是我們現在正在進行的工作。Summary

直播|Ruby > 跨界區塊鏈后那些有趣的事兒:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第5期20:00準時開始,本期“后浪”仙女 鏈聞 市場負責人Ruby將在直播間聊聊“跨界區塊鏈后那些有趣的事兒”,感興趣的朋友掃碼移步收聽![2020/6/19]

Cell模型是一個高度抽象的模型,事實上,你不僅可以在Cell上實現First-classAsset,也可以在Cell上模擬Account。通過這篇文章的介紹我們可以看出,Cell模型是一個不同于UTXO模型和Account模型的新設計。除了狀態模型的不同,CKB還將計算轉移到了鏈外,在鏈上只需要對狀態進行驗證的邏輯。獨特的狀態模型和計算驗證分離這兩點決定了CKB的編程模型上必然會出現新的DApp范式和設計模式。從CKB白皮書完成到現在將近一年的時間中,我們看到越來越多的人開始關注和討論First-classState和First-classAsset這兩種新的思路,這些進展讓我們非常興奮。如果你有興趣對First-classState和First-classAsset進行更多的探討,或是在CKB的編程模型上有什么有趣的想法,歡迎聯系我們討論~CKB的代碼已經完全開源,這篇文章介紹的內容在代碼中都已經實現。歡迎給我們的代碼提出各種意見:https://github.com/nervosnetwork/ckb-demo-ruby-sdkhttps://github.com/nervosnetwork/ckbhttps://github.com/nervosnetwork/ckb-vm感謝IanYang,XuejieXiao,KevinWang在CKB和Cell模型設計中提供的幫助~

聲音 | 王新喜:將在1-2天內發布一些關于LTC有趣的內容:萊特幣基金會聯合創始人王新喜在推特表示,將在1-2天內發布一些關于LTC的有趣的內容。[2019/9/6]

Tags:ASSCELLCELSETLASSO價格CELLS價格celsius幣最新RESET

BTC
2019 年區塊鏈和加密貨幣行業 5 大預測_加密貨幣

2018年,對于區塊鏈和加密貨幣行業來說是跌宕起伏的一年,這個年輕的行業仿佛在這一年內經歷了其他行業好幾年才有的繁榮和衰退.

1900/1/1 0:00:00
都在關注算力戰,但其實USDT的危機一直沒有解除_USD

本文來自:哈希派,作者:不碎,星球日報經授權轉發。11月23日下午4點,BCHSV再次追平BCHABC的區塊高度,雙方算力不相上下.

1900/1/1 0:00:00
論文:廣義通證經濟的內涵、邏輯及框架_區塊鏈

本文系國內首篇通證經濟學術論文,奠定了通證經濟的理論基礎與框架,具有重要的理論與現實意義。感謝中國航空工業集團公司原董事長,中共十八屆中央委員會中央委員,中國航空學會理事長林左鳴教授對本文提供的.

1900/1/1 0:00:00
擴容,解決區塊鏈的阿克琉斯之踵——區塊鏈技術引卷之二_ETH

FENBUSHIDIGITAL×通證通研究院聯合出品文:宋雙杰,CFA;Rin,FENBUSHI投資總監;田志遠;Haru特別顧問:沈波;JX導讀隨著區塊鏈的鏈上交易數量飆升.

1900/1/1 0:00:00
那個 73 歲的 ICO 之王,又要競選美國總統了_ORK

約翰·邁克菲最近又舉起他老邁的臂膀,宣稱要參與競選2020年美國總統大選。這位73歲的老人從出生起,度過了他戰亂、學霸、吸、亂、滿世界逃亡以及為雜亂的數字貨幣站臺的一生.

1900/1/1 0:00:00
區塊鏈上的現金流-可編程債券(三步曲)_TOK

區塊鏈上的現金流-可編程債券CashflowontheBlockchain作者:JesusRodriguez@Invectorlabs翻譯:Apatheticco@巴比特專欄編譯&制圖:.

1900/1/1 0:00:00
ads