Kunta:一個新的區塊鏈開發生態系統
今天,我很高興能更深入地了解Kunta平台所提供的功能(即使我們已經為此工作了多年❤)。
對於那些有興趣閱讀我們的論文或瀏覽代碼的人,可以在kunta.io上找到它。
我於2018年9月在喬治亞州亞特蘭大舉行的區塊鏈技術會議上介紹了這項工作。這是該視頻鏈接(在圖片下方):
在此處閱讀全文:https : //arxiv.org/abs/1812.08073
2015年中,我在美國一家領先的保險公司從事研發工作時了解了比特幣。有一天,他們在我的桌子上放了一個文件夾,裡面放著原始的比特幣紙,讓我研究「這件事」,並研究公司是否可以利用基礎技術來獲得競爭優勢。所以我把它帶回家讀了。
我不會說我「從來都不一樣」,這些天我往往會聽到很多,但是我會說,我開始想到的是從未有過的創新。
因此,開始了我對加密貨幣世界的冒險。如果那年我只投資了比特幣,那是另一回事了。
在旅途中,我開始詢問該協議的非常常見的問題,例如:
- 「價值從何而來?」
- 「網路真的真正安全嗎?」
- 「為什麼選擇使用這種方法達成共識?」
- 「誰真正決定了代碼會發生什麼」?
這些研究使我多年來研究了幾種基礎架構協議(實際上包括痴迷於協議中的每一行代碼,並閱讀所有開創性的研究論文)。
在這項工作中,我開始注意到一些趨勢。另外,我需要提及的是,這是我當時的工作,我的僱主希望我領導的區塊鏈項目的這一階段僅持續了大約6-8個月。但是,這足以開始他的職業生涯。
問題
我注意到的問題中心化在:
- 開發者不對稱
- 用戶友好度
- 代碼複雜度
- 項目靈活性
- 具體的設計選擇
開發者不對稱
讓我們從開發者不對稱開始。
問題是「誰來決定協議的設計選擇實際上是什麼?」。
事實是,只有很少一部分人真正做出這些決定。這是由於多種原因造成的,但我認為這對開發人員是一個障礙。我會聽到開發團隊談論公眾「接受」的情況,這是關於開源代碼的有趣概念。當然,開發人員說,「只需分叉代碼」,然後根據自己的喜好對其進行編輯,這使我想到了下一個問題。
代碼複雜度
例如,如果我只是想更改以太坊或比特幣協議中使用的哈希函數,則必須以某種方式更改代碼,並且可能會破壞某些內容。
對於一個強大的計算機科學家而言,閱讀代碼並不困難,但是平均而言,更改給定協議的這種簡單屬性所需的工時比在我研究的項目中要困難得多。
對於大多數外行來說,區塊鏈項目似乎已經很困難,甚至工程師們也無法理解,以便針對自己的用例定製解決方案。
我們在隱性摩擦之上加上的摩擦越多,我相信我們就越會阻礙整個空間為定製用例開發。
用戶/開發人員友好度
另一個問題是用戶友好性,這些天來很多作家都在討論它的用戶友好性,我幾乎不想覆蓋它。例如,如果我想為以太坊(Ethereum)或比特幣(Bitcoin)啟動並運行一個環境,則必須刪除代碼,開始自己的網路,或連接到一個網路。
用一句話來說明這似乎很簡單,但是每個嘗試這樣做的人都會證明這樣做很沮喪。
我確實看到隨著時間的推移情況會越來越好,因為人們/項目傾向于越來越少地將重點放在核心協議上,而將更多的精力放在開發周圍的應用程序上。但是,這只是在臨時解決問題,而不是真正解決問題。我們還看到像亞馬遜這樣的公司正在嘗試「區塊鏈即服務」。
其他能力
上面的幾句話使我開始思考這些系統的設計並非出於友好性,而是從其源頭考慮可定製性。
然後,您有幾個設計決定,我開始對此提出質疑。例如,我在另一篇專門的文章中介紹了智能合約與鏈功能,但這是一個摘要。
傳統上,「智能合約」的表現是增加到一條鏈上的邏輯。受比特幣啟發,我們的信念是應該在鏈開始時就知道並定義網路上的邏輯。我了解到比特幣在生命周期中一直在「升級」,但是使用新邏輯升級鏈,並在部署之前在其中設計邏輯是兩個不同的問題。
對於Kunta,在啟動完整網路之前,首先要設計鏈邏輯。Kunta還支持升級鏈的運行時。
可定製性
這就是Kunta v1的架構,定理證明者從未完成,但是其他所有事物都處於「穩定」狀態。
從項目開始就考慮了Kunta的可定製性。我們不僅致力於將開發人員工具構建到平台中,而且平台的設計是高度模塊化的。我認為這是Tezos之類的項目做對對錯的事情。它們的模塊概念類似,可以在javascript中擴展。
關於塊存儲,目前我們的資料庫是原始平面文件,但是它本身是有意可交易所的,而不是增加軟體依賴性,從而降低了開發人員的友好性。
為了記錄,如果您有寫代碼的技能,那麼用代碼寫的任何東西都是「可交易所的」,只要說出來即可。
對於任何見解或查詢給定鏈,我們在簡單的圖形資料庫中使用三元組存儲-這可以是n-store。我們存儲在圖資料庫中的初始信息很簡單,但是可以進行有效的查詢。最初,我們店誰撰寫了哪些塊,有什麼阻止交易存儲在和帳戶什麼針對性的另一個帳戶等,這本身是高度定製。
可定製性涉及虛擬機,共識和協議的其他方面。
當然,如果沒有可自定義的交易,那麼靈活的區塊鏈協議將是什麼。但是,我們的交易方式相同,但是發展方式不同。
我們利用鏈功能和智能合約模板。
鏈功能是創世模塊和鏈配置中包含的模塊。
因此,在鏈上觸發某些狀態時,將調用這些可驗證的邏輯集。在設計智能合約模板時,系統中甚至不會計算/使用不遵循這些模板的合約。
智能合約模板集是在鏈創建時定義的,並規定了鏈可以執行的邏輯類型。
執行的任何後續事務都必須遵守這些模板,否則甚至不考慮執行。如果交易格式不正確,該交易也會被丟棄。
編程語言注意事項
在2017年項目開始時,我們開始開發自己的語言以開發類似於以太坊的「智能合約」。但是,隨著Rust(編程語言)的流行,社區變得越來越大。同樣,Web Assembly也變得越來越流行。
使用這些資源,由於這兩種語言已完成工作,並且社區規模比我們大,因此使用我們自己的語言進行開發的速度變慢。
通過這些技術,我們已經用用Rust編寫的WASM模塊替換了v1中的虛擬機。
這類似於某些項目,例如Substrate,我將在後續文章中介紹兩者之間的區別。然而,基材將非常選擇的邏輯暴露給成交量筒紙組裝模塊,Kunta的目標是針對給定鏈的多個組件暴露更多的邏輯。
我們還將v1協議使用自己的集成開發環境。
IDE具有用於編譯的語法編輯器,用於節點發現/交互的映射以及用於協議試驗/管理的其他一些資源。用戶可以在本地或從工具內部在雲中設計協議,測試,部署和監視其鏈設計。
自從最初編寫此文件以來,我們已經完成了較新的協議AOS aos.kunta.io
我們很快將在AOS上撰寫更多內容。