基于恒星的多重签名和简要合约

众所周知,恒星基金会在过去数月一直为升级版分布式网络闷头写代码,现在终于可以准备投入使用了。

对于恒星即将使用的全新代码,我不确定能否表达出我的激动之情,但是值得一试。这就像……在清晨雨露中,在遍布三叶草,有着刺猬出没的草地上自由奔跑,又像某种蝴蝶龙一样破茧而出。

更重要的是,这意味着平台已经确实做好准备,开发者们可以创建世界的新金融服务了。在这里,我将介绍升级后的网络的一些优势和特性,然后给出一些也许你用的上的例子。

那么,有何不同?

升级后的恒星网络比原来更加安全,更具伸缩性,以及更加模块化。恒星共识协议(SCP)在网络不满足共识条件时更注重安全性(safety)而不是活性(liveness),因此新系统更不容易发生分叉。

恒星核心程序现在更加易读及优雅。代码量不及原版本的一半,运行却更加快速,耗费更少的内存和磁盘空间(升级后的核心程序只处理共识,同时Horizon,即API服务,处理路径查找以及为恒星核心程序提供web界面)。它还以更简单明晰的形式在更安全的地方保存数据。例如,程序将持续进行备份动作,将数据以XDR格式(XDR是一个互联网标准格式)备份到离线存储上。实时总帐则存在于传统的SQL数据库中。

simple contract

新特性:批量操作和多重签名

新代码有很多值得说道的地方,但是今天我将着重讲述两个特性:批量操作(batching operations)和多重签名账户( multisignature accounts)。

在升级后的网络中,事务(Transactions)将以一组操作(operations)链的方式批量执行。事务满足原子性,即操作要么全部成功,要么全部失败。同一个事务中的操作甚至可以来自不同账户。例如,你可以创建一个事务,其中甲要支付乙,此时丙支付甲。在这种情形下,这个事务将同时需要甲和丙的签名。

并非只有事务可以拥有多重签名,账户也可以拥有多个签名人。多重签名为恒星账户的安全性和权限方面增添了灵活性。你可以为每个签名人分配不同的权重,每个操作分配不同的阈值。如此设计,你可以轻松设计一个m/n方案。例如你可以管理一个多重签名账户,事务可以由一人验证,或者其他三人一起验证。

这一设计提供了多种多样的可能性。例如,将批量操作和多重签名组合使用将使你能够构造所谓的简要合约。简要合约按照以下条件执行约束:1 必须同意总帐中的某一特定变更,和/或 2 变更必须一起发生。这样可以无需使用脚本即可实现约束。

阅读关于操作多重签名的资料,来获取它们如何一起工作的更多信息,或者查看下面的例子。

 

 

简要合约例子:联合众筹

约翰内斯堡需要一座新医院。市政府和一个非政府组织都愿意捐献100万美元,而总花费需要300万美元。它们都希望众筹剩余的100万美元,并确保筹来的每分钱都用于建造医院。同时它们向捐款者保证,如果2016年三月之前没能完成众筹,则将返还捐款。

市政府和非政府组织创建了一个寄存账户(holdingAccount),该账户用于筹集资金,如果2016年三月没达到目标,则返还所筹款项。寄存账户被设置成需要市政府和非政府组织一起验证才能发起事务。

市政府和非政府组织各向寄存账户发送了100万美元。随后它们一起创建了以下事务:

事务1
序列号: N+1
操作:

管理要约:(Manage Offer): 创建一个要约:出售寄存账户发行的100万份的参与代币(participation tokens),每份售价1美元。

签署者: 政府和非营利组织
事务被提交到网络,记录该出售动作的ID,留在事务3中使用。

事务2
序列号: N+2
时间区间: 2016年3月1日到某一天
操作:

支付(payment): 发送300万美元到承包商账户(contractorAccount)

签署者: 政府和非营利组织

事务3
序列号: N+3
操作:

管理要约: 取消事务1中创建的出售要约

支付: 发送100万美元到市政府

支付: 发送100万美元到非营利组织

管理要约: 创建要约,购买100万参与代币,每份出价一美元。

签署者: 政府和非营利组织

事务2和3是公开的,但是并没有提交到恒星网络。任何人都可以将其提交,但是直到2016年3月事务2和3才会生效。同时,根据序列号要求,事务2要先于事务3发生。

如果你要参与捐献建造医院,那么你要进行如下操作:

  1.  信任寄存账号发行的参与代币
  2.  购买参与代币,你会收到代币,而寄存账号会收到资金。
  3. 如果3月1日筹集了100万美元,那么资金会被事务2发送到承包商账户,或者
    如果筹集目标未达到,事务2会失败,事务3会完成。
  4. 如果事务3完成,你可以通过出售代币的方式从寄存账户拿回你的款项。

此设置的参数十分灵活,有很多种可能的变种,包括扩展设计,可以支付个体参与者或者分时支付承包商。

展望未来

多个主要利益相关者进行的无缝众筹(而且免费)只是恒星网络批量操作和多重签名的多种可能的一个例子。我的希望是抛砖引玉:订阅,履约保证,群体储蓄账户以及健康储蓄账户,农产品补贴,退单保证,甚至游戏(我曾有意拿这个举例可是时间不够)。我很高兴看到人们会创造些什么!

长按保存或者分享

Close