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