XAPC存儲鏈有哪些獨特優(yōu)勢?
XAPC的創(chuàng)建,來自于金融實踐者的大量工作,并且始終圍繞他們的需求進行設(shè)計。當(dāng)然,它的設(shè)計靈感也會來自于以往的工作,包括 Todd Boyle 和 Ian Grigg 在論文中關(guān)于三式會計的介紹,以及已有分布式賬本平臺(例如比特幣和以太坊)的相關(guān)因素。這些方面的信息,對不了解XAPC的人來說,是一個很好的途徑,以便于快速掌握XAPC。
提到XAPC,我們難免會想到其他平臺,如比特幣、以太坊等。
XAPC與比特幣有顯著相似點:
通過交易創(chuàng)建和花費的狀態(tài)是不可篡改的;
交易有多項輸入和輸出,比特幣有時會把賬本稱作“UTXO 未花費的交易輸出集”,作為結(jié)果輸出;
合約是純粹的函數(shù),合約并無存儲或與其他事物進行交互的能力。通過相同交易,合約的確認函數(shù)會產(chǎn)生相同的結(jié)果。
當(dāng)然二者也存在著差異。比特幣交易有單獨嚴格的數(shù)據(jù)格式,并且除了比特幣數(shù)量和相關(guān)花費規(guī)則(腳本),只能保存極少的數(shù)據(jù)。相比之下,XAPC的狀態(tài)可以包含任意類型的數(shù)據(jù)。另外,我們的交易不僅可以調(diào)用輸入合約,也可以調(diào)用輸出合約。
比特幣交易的確認機制僅在已消費的輸入狀態(tài)下由合約代碼控制。而我們使用“合約”這個詞,指的是在交易確認之前,可以處理各種不同任務(wù)的一系列業(yè)務(wù)邏輯。比如,現(xiàn)在我們的合約還包含生成合法交易的代碼(一般在比特幣中被稱作“錢包代碼”)。比特幣腳本僅能得到一串固定的字節(jié)數(shù)組作為輸入項,這意味著合約無法判斷整個交易的結(jié)構(gòu),從而嚴格約束合約能做什么。而我們的合約是圖靈完整的,可使用任何普通編程語言
在 JVM 上工作。XAPC允許在交易中指定任意精確的時間邊界,而不依賴挖礦產(chǎn)生區(qū)塊的時間。XAPC和以太坊相似之處在于,代碼運行在相對強大的虛擬機上,并能包含復(fù)雜的邏輯??捎梅菂R編程序設(shè)計語言編寫合約程序。兩者都意在為不同類型的金融合約建模。
然而,以太坊中的“合約”是指程序的實例化,被每一個參與其中的節(jié)點所復(fù)制和維護。
這種實例化非常像面向?qū)ο缶幊讨械膶ο螅嚎梢越邮蘸桶l(fā)送消息,升級本地存儲等等。相比之下,XAPC對節(jié)點上智能合約的執(zhí)行方法是一組函數(shù),其中僅有一個函數(shù)用來保持系統(tǒng)同步(確認函數(shù))。那個函數(shù)單純而且無狀態(tài)可言(比如,它不可能與系統(tǒng)的其他部分進行交互)。因為合約沒有任何類型的可變存儲器,因此沒有“消息”的概念。