在 CKB 上編程到底有什麼樣的優勢?

在 CKB 上編程到底有什麼樣的優勢?

免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

小編:記得關注哦

來源:NervosNetwork

Nervos 從項目誕生之初,就一直秉持著自己的設計理念,堅持分層的設計方案,底層去解決安全和去中心化的問題,上層去解決效率、擴容、多功能的問題,希望可以通過這樣的方式去解決區塊鏈世界的不可能三角問題。Nervos 是一套完整的解決方案,經濟模型共識虛擬機Cell 模型Layer 2等等,相互之間環環相扣,形成一個完整又緊密的系統。

回到一個開發者所關心的問題,現在已經誕生這麼多公鏈平臺,那麼在 Nervos CKB 上進行編程,究竟會有什麼與眾不同的體驗?在 CKB 上編程,又有什麼樣的優勢呢?

本文試著從 CKB 中資產是一等公民、編程上的靈活性,以及狀態的確定性這三個角度進行闡述。

開發者發行的資產在 CKB 上都是一等公民

在 Nervos CKB 的設計哲學中,如果要將智能合約的風險降到最低,那麼必須要將這些智能合約的「狀態」去中心化。因為狀態決定了資產的所有權,唯有將其去中心化,才能避免因狀態的中心化而導致的智能合約漏洞,進而產生系統性風險,最終造成全部人的資產損失。

回顧過去,我們可以看到 ERC20 的 Token 存在著許多系統的脆弱性,例如著名的 The DAO 事件,以及 2018 年美鏈的合約漏洞,它們都因為智能合約中有 bug,進而造成無數資產所有者的損失。

為什麼單個合約漏洞就能造成如此大的傷害呢?因為 ERC20 發行的 Token 本質上是將所有用戶的資產都存在一個合約地址中,因此當這些 dApp 產生漏洞時,所有該資產的狀態都可能發生變動,從而造成經濟損失。在 ERC20 這樣的模型下發行的資產,就像將該種資產全部都鎖進大金庫中。可想而知,只要金庫的任何一個地方發生了漏洞,那麼外來的人就可以進入金庫,並將所有的資產都搬走。

發行資產是區塊鏈開發者的一項重要的需求,原生代幣和其它發行的資產,都應該是一等公民(First-class Asset),也就是任何一個資產的所有者可以擁有自己的狀態所有權,而不是像 ERC20 Token 那樣,所有持有者的同類型資產都必須共用一把鑰匙。因此,在 Nervos CKB 中,不論是持有 CKByte 這樣的原生代幣,還是持有其他用戶自定義的 Token(User Defined Token,UDT),用戶都是將這些資產分別鎖在自己獨自所有的小格子之中,並且只有用戶自己才有解鎖的鑰匙。

為什麼能夠讓資產成為一等公民?這是因為在 Nervos CKB 中,所有的資產都儲存在泛化的 UTXO 模型——Cell 之中,並且可以通過 Cell 中的 lock>

CKB 是開發者能夠任意玩耍的靈活平臺

Nervos CKB?哦,這是條公鏈啊?那他們的智能合約用啥語言寫啊?

這樣的問題在 CKB 上是不存在的,因為 CKB VM 是基於開源的 RISC-V 指令集開發的,使用了廣泛實現的 ELF 格式,也就是說,任何可以編譯成 RISC-V 程序的語言均可以直接用來為 CKB 開發智能合約;同時結合 Cell 模型這樣的編程模型,我們可以將待驗證的合約放在 type>

我們簡單列舉了一些優勢來告訴你 Nervos CKB 究竟靈活在哪裡:

1.任何語言都有可能在 CKB 上開發:

CKB 核心只定義了底層的虛擬機模型,理論上任何提供了 RISC-V 後端的語言均可以用來開發 CKB 合約,而不需要侷限在特定語言才能夠進行編程,因此這樣的設計在未來可以降低更多開發者的進入門檻,並且更能夠捕獲使用各種語言的開發者進入 CKB 生態之中。

2.你可以用各種密碼學原語來作為資產的鑰匙:

在 CKB 虛擬機上沒有寫死的密碼學原語,因此任何密碼學原語理論上都可以像普通的腳本一樣被部署在 cell 中。這讓 Nervos 的生態可以在不需要分叉的情況下,有了使用各種密碼學技術的可能性。

這種特性的威力是巨大的,舉例來說,你可以用以太坊和其他公鏈的地址和私鑰去簽署和收發 CKB 上的交易,因此如 Metamask 等,這類在其他鏈上擁有成千上萬用戶的工具,可以在開發者開發好一款 CKB 上的產品之後直接為他所用,目前 Lay2 團隊 的 ckb.pw正在做這個方向的努力;另外,像各種先進的密碼學技術如 Schnorr 簽名、BLS 簽名,和 zkSNARKs/zkSTARKs 等,都可以在 CKB 上使用。這也讓安全性相關的簽名機制、異構跨鏈、zk rollup 或 BLS rollup 等分層的實驗性技術未來更有機會在 Nervos 上實現。

3.CKB 上可以實現可更新合約

合約部署後無法更新一直是區塊鏈開發者的心頭之痛,然而因為 CKB 交易中,可以驗證 input cell 中 lock>

4.可以更靈活的支付手續費

對於 CKB 而言,其實交易的手續費支付具有非常大的靈活性,我們可以通過 Open Transaction 的方式,將各個交易進行構造,這樣的情況下我們不但可以更靈活的用各種非原生的代幣支付手續費,繞開因原生代幣不足而無法支付手續費 ,交易無法成功的窘境,甚至在構造交易時,我們還可以選擇讓交易的另一方幫你支付手續費。

5.Cell dep 調用的靈活性

如果您曾經在以太坊上進行開發,就會知道在以太坊上無法通過一個交易調用兩個先前的合約,因為本質上我們需要調用的是兩個合約賬戶,這時候就必須獲得兩次的合約授權(Approved),但在 CKB 中,我們可以將許多的合約通過 cell dep 與 type>

靈活之餘,CKB 的確定性讓你更安心

除了上面提到了靈活性之外,在 CKB 上的開發者還可以在擁抱靈活編程模型的同時,享有確定性。因為做為 Layer 1 的 Nervos CKB,它只負責執行狀態的驗證,狀態的生成發生在鏈下,因此它並不會像以太坊那樣,開發者的合約需要經過計算才能得到成果。在 CKB 中,我們在鏈下就能夠預期交易的輸出狀態,讓整體交易的執行可以滿足「確定性」這個去中心化應用的核心要求。所以,在狀態具有確定性的特性下,開發者的合約可以避免被挪作它用,或是受到惡意攻擊。這樣一來,我們就能夠最大程度的確保整體系統的穩定性。

最後,CKB 為大家提供了極大的靈活性和安全性,而對於它的探索還只是剛剛開始,它的很多功能和潛力還遠遠沒有被大家發現。你是否也想進入 CKB 的世界遨遊一番?正好,我們為開發者們精心準備了一個 CKB 編程體驗課 😜

課程中,除了深入淺出的實操技能外,我們還為大家安排了多位可愛的助教。有興趣的夥伴們趁著現在趕緊一起加入吧,歡迎掃碼報名,或者瞭解這門「CKB 編程體驗課」:https://mp.weixin.qq.com/s/iW8Do5Qz2p0sfP8YPSsrJQ。


分享到:


相關文章: