XAPC存储链有哪些独特优势?
扫描二维码
随时随地手机看文章
XAPC的创建,来自于金融实践者的大量工作,并且始终围绕他们的需求进行设计。当然,它的设计灵感也会来自于以往的工作,包括 Todd Boyle 和 Ian Grigg 在论文中关于三式会计的介绍,以及已有分布式账本平台(例如比特币和以太坊)的相关因素。这些方面的信息,对不了解XAPC的人来说,是一个很好的途径,以便于快速掌握XAPC。
提到XAPC,我们难免会想到其他平台,如比特币、以太坊等。
XAPC与比特币有显著相似点:
通过交易创建和花费的状态是不可篡改的;
交易有多项输入和输出,比特币有时会把账本称作“UTXO 未花费的交易输出集”,作为结果输出;
合约是纯粹的函数,合约并无存储或与其他事物进行交互的能力。通过相同交易,合约的确认函数会产生相同的结果。
当然二者也存在着差异。比特币交易有单独严格的数据格式,并且除了比特币数量和相关花费规则(脚本),只能保存极少的数据。相比之下,XAPC的状态可以包含任意类型的数据。另外,我们的交易不仅可以调用输入合约,也可以调用输出合约。
比特币交易的确认机制仅在已消费的输入状态下由合约代码控制。而我们使用“合约”这个词,指的是在交易确认之前,可以处理各种不同任务的一系列业务逻辑。比如,现在我们的合约还包含生成合法交易的代码(一般在比特币中被称作“钱包代码”)。比特币脚本仅能得到一串固定的字节数组作为输入项,这意味着合约无法判断整个交易的结构,从而严格约束合约能做什么。而我们的合约是图灵完整的,可使用任何普通编程语言
在 JVM 上工作。XAPC允许在交易中指定任意精确的时间边界,而不依赖挖矿产生区块的时间。XAPC和以太坊相似之处在于,代码运行在相对强大的虚拟机上,并能包含复杂的逻辑。可用非汇编程序设计语言编写合约程序。两者都意在为不同类型的金融合约建模。
然而,以太坊中的“合约”是指程序的实例化,被每一个参与其中的节点所复制和维护。
这种实例化非常像面向对象编程中的对象:可以接收和发送消息,升级本地存储等等。相比之下,XAPC对节点上智能合约的执行方法是一组函数,其中仅有一个函数用来保持系统同步(确认函数)。那个函数单纯而且无状态可言(比如,它不可能与系统的其他部分进行交互)。因为合约没有任何类型的可变存储器,因此没有“消息”的概念。