本篇文章的作者是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
直播|Ruby > 跨界區塊鏈后那些有趣的事兒:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第5期20:00準時開始,本期“后浪”仙女 鏈聞 市場負責人Ruby將在直播間聊聊“跨界區塊鏈后那些有趣的事兒”,感興趣的朋友掃碼移步收聽![2020/6/19]
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
聲音 | Jameson Lopp:比特幣是一個非常有趣的實驗:據cointelegraph報道,比特幣開發者Jameson Lopp稱,我相信比特幣是一個非常有趣的實驗,如果從長遠來看,如果成功,不僅可以徹底改變金錢,還可以徹底改變我們對治理的看法,可以實現向無政府資本主義社會的過渡。[2019/1/1]
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模型設計中提供的幫助~
聲音 | Joseph Young: 加密貨幣對千禧一代來說是最有趣的金融標的:福布斯財經評論員 Joseph Young在社交媒體中表示,對于千禧一代來說,加密貨幣是最有趣的金融標的。在加密貨幣領域,千禧一代愿意積累有關期貨市場、ETF、市場增長、基礎設施和創業生態系統的知識。這比任何大學課程都要好。[2018/11/14]
新加坡區塊鏈公司Propine宣布完成了一筆120萬美元的種子輪融資,領投方為本土風險投資公司DecacornCapital.
1900/1/1 0:00:00譯者按:密碼貨幣凜冬已至,以太坊也跌破了100美元,在價格屢創新低的同時,其生態系統的一些數字卻呈現了不斷上升的趨勢,來自以太坊社區的ConsenSys公司列出了一系列相關數字.
1900/1/1 0:00:00在最近的一陣暴跌之后,市場似乎開始了復蘇的跡象,并且再次看到了一波又一波的上漲。不過,我們可能想稍微潑一點點冷水,研究一個有趣的話題——如果攻擊比特幣、以太坊、比特幣現金和萊特幣四個主流加密貨幣.
1900/1/1 0:00:00ETH作為資產發行平臺,隨項目市場轉淡,8月開始項目方和早期基金集中出清,整個八月到九月ETH與BTC價格波動脫鉤.
1900/1/1 0:00:00本文來自:碳鏈價值,作者:LanreIg,編譯:MorphoHawkes、Diana星球日報經授權轉發。上周的BCH分叉大戰,讓人們對POW世界的安全產生了心理陰影.
1900/1/1 0:00:00(圖片來源于網絡)12月05日,新上線的又一款EOS競猜類游戲Fastwin遭到黑客攻擊,區塊鏈安全公司PeckShield態勢感知平臺捕捉到了該攻擊行為并率先進行了安全播報披露.
1900/1/1 0:00:00