这篇文章重点介绍了Algorand智能合约架构的链下组件,该组件由Jing Chen,Maurice Herlihy,Victor Luchangco,Silvio Micali和Liuba Shrira开发。完整的技术论文将在不久的将来发布。
智能合约使区块链可编程。像自动售货机一样,智能合约建立了明确定义的资产转移程序。例如,爱丽丝(Alice)想购买鲍勃(Bob)发行的代币,因此她将代币发送给鲍勃(Bob)的智能合约。合约的代码对代币进行统计,可以检查爱丽丝是否在智能合约的合格投资者数据库中,然后将正确数量的代币转移到爱丽丝的帐户中。交换是透明的:Alice可以检查合约的代码,并且代码在Bob的参与下运行。
本文描述了Algorand的智能合约架构,以及为什么它与以前的方法有很大的不同。特别是,Algorand的智能合约体系结构包含多种工具,因为Algorand的用户需要解决多种问题。
两层架构
首先,为了满足日常需求,Algorand提供了Layer-1智能合约,这是用于日常交易的安全快速路径。(我们将马上回顾这种智能合约。)第二,Algorand为需要更多定制的智能合约的“长尾” 提供(第2层)链下合约。这些是我们在此介绍的智能合约。
与以太坊智能合约的比较
以太坊区块链是第一个展示智能合约功能的区块链,因此以太坊智能合约是分析后续技术的自然起点。在区块链社区中已广泛讨论了它们的优缺点,这些讨论引发了各种智能合约语言的新设计。在这里,我们关注两个对Algorand区块链特别重要的问题。
1.简单的问题通常需要复杂而脆弱的解决方案。
假设Alice和Bob约定,如果Alice向Bob发送100个“ DollarCoins”,那么Bob将向Alice转移100个“ BobTokens”。爱丽丝希望能够确保是否支付货币,她会得到代币,而鲍勃也希望得到类似的保证。这种由相互可疑的各方控制的都发生或都不发生的交易称为原子交换。
使用以太坊的智能合约对原子交换进行编程需要哈希的时间锁合约(或类似协议),它是一种精致的、定时的多阶段协议,其中的任何编程错误都可能造成灾难性的后果。相比之下,如先前的所述,Algorand Layer-1智能合约为原子交换和相关问题提供了一种简单而安全的解决方案。
2.每个人都必须等待其他人
考虑一家迷人的法国奶酪店。在此,不允许客户自行选择。取而代之的是,所有的奶酪都放在柜台后面,由店主掌控。客户在柜台前排队。例如某个生产线负责人的客户正在寻找特定地区的山羊奶酪。店主解释说,他有3种这样的奶酪口味,一种是温和的,一种是中等的,一种是强烈的,但中等的则有点咸。在充分的讨论了这些奶酪的相对优点之后,客户做出选择。店主将奶酪切成薄片并称重,将其包裹在纸中,然后计算出价格。客户掏钱,付款,拿走包裹并离开,对自己的购买感到满意。然后是对下一位客人服务。
与传统的法国奶酪店一样,每个智能以太坊智能合约执行都会阻止整个区块链的延长。更糟糕的是,每个矿工必须重新执行每个合约调用,每个新矿工必须重新执行曾经发生的每个合约调用。以太坊的传统“奶酪店”架构存在可扩展性危害,严重限制了新区块的生产速度。
我们将看到,Algorand的链下合约的结构更像一个现代超市。在这里,客户无需问店主即可自行选择。一旦客户决定要购买什么,她就会在登记处短暂排队等待付款。犹豫不决的购物者在不同种类的山羊奶酪之间犹豫不决,不会延迟其他购物者,也不会独自限制客户获得服务的速度。
注:Algorand链下契约应不与二层支付网络如闪电的网络相混淆。支付网络是专用的:它们仅用于将付款从一方发送到另一方。相比之下,Algorand链下合约是灵活的通用程序。