[文摘]首届区块链数学科学会议精华

12月17日,区块链数学科学会议在北京召开。本次大会由数字资产研究院主办,石榴财经,零壹财经协办。会上,计算机科学家、经济学家、数学家、信息学家、高校学者、区块链专家及行业从业者围绕区块链与数学、人工智能、量子计算机等领域的联系、区块链目前面临的难题以及未来猜想等话题发表了不同的观点。

数字资产研究实验室是数字资产软件平台Blockchain和伦敦帝国理工学院合作推出的研究机构,定位为举办和电子货币和区块链技术相关的研究和应用活动的国际中心。

【报道原文】:
区块链的提问和数学的猜想——首届区块链数学科学会议精华
http://www.01caijing.com/article/33115.htm

在开场致辞中,经济学家朱嘉明表示当前这个时代是一个科学主导的时代,是由若干和整体的科学体系主导的时代,更是科学集群和技术混合成长,相互影响的时代。2019年将是一个非常值得在意的一年,这一年有三件值得纪念的事:麦哲伦航海500周年、人类登月50周年、互联网前身阿帕网诞生50周年。尤其后两件事,改变了过去50年人类历史的走向和轨迹。他表示,这次区块链数学科学会议力求成为21世纪的“梅西会议”,通过数学、密码学、计算机科学、经济学和人工智能之间的跨学科互动,对区块链体系进行科学层面的解构,探讨建立基于区块链应用数学的可能性和路径,最终也希望对数学本身的发展有推动作用。最后,朱嘉明老师引用希尔伯特墓志铭的一句话作为对区块链数学科学的期许:我们必须知道,我们必将知道。

如何看待区块链的发展现状?

过去的十年,区块链逐渐从小众走向主流,但社会对区块链的认知,很大程度上仍然停留在最初的阶段。数字资产研究院常务副院长、零壹财经创始人柏亮在会上表示,目前区块链行业遇到的瓶颈是底层思想的创新。

在经济学家、北京大学经济学院前院长晏智杰看来,区块链技术首先是互联网技术的一次巨大飞跃和升级。它最大的价值在于把互联网这样一个信息传输工具,升级为价值交流的工具,并把市场经济形式推到更高的阶段。其次,区块链的应用之路必将是曲折的。一个国家对区块链的接纳程度与该国的经济发展程度有关:市场经济发展程度越高的国家,越容易接受区块链,反之就容易抵触。在应用领域方面,在金融领域之外,区块链在其他社会领域也有很大的发展,不断地被企业、政府、民众所认识、采纳,这个过程的落实本身也是曲折的。

北京大学网络和信息安全实验室主任陈钟则认为区块链应用的特色包括了去中心化、分布式抗毁、全网溯源、智能合约、同等激励等。而真正有意义的,就是用智能合约来编程,很多规则如果能够在现在构建的区块链上编程、执行,可能会使整个社会的秩序更好、更有效率。

中央财经大学信息学院院长朱建明表示,比特币、区块链的发展对社会生活已经产生了非常大的影响,比特币、区块链发展过程中出现的交易速度、监管等问题并没有影响比特币本身的发展。他认为,最成功的区块链应用仍是数字货币。

清华大学信息技术研究院副院长邢春晓认为,当前的区块链很像20年前的互联网,存在很大的泡沫。但区块链技术还有很多发展机会。区块链所要建设的理想世界是去中心化、可信、安全、公正、高效的自治组织和自治社会,但智慧城市和社会的建设面临诸多挑战。智慧社会的作用主要是机器信任、智能合约和价值传递。他把区块链的最新进展总结为ABCDE的技术,即人工智能(A)、区块链(B)、云计算(C)、大数据(D)和互联网(E,包括移动互联网和物联网)。

南京大学副教授丁晓蔚选择从金融风险的角度看区块链。他认为区块链、大数据、人工智能技术的进步将推动金融信息基础设施架构的变革。区块链可提供更为可信、全面的金融大数据,可以改变信息技术基础设施架构。相应地,监管政策和法规,也会掀起一系列的改良和变革,从而规制金融市场参与者的行为。同时,他就区块链智能合约等技术的应用,是否反而会放大金融风险,甚至于系统性的金融风险的问题,为大家做了诠释,他认为监管沙盒试验可能是一个比较好测试该类风险的方法。

北京邮电大学区块链及安全技术联合实验室主任马兆丰主要从北邮目前的区块链实践经验出发,认为传统的中心化处理的不足之处在于业务处理过于集中、信任中心不总可靠以及增加了交易成本代价。而区块链是一种分布式自组织的可信计算技术。区块链以其“去中心化、高度透明、集体维护、不可篡改、安全可靠”等特性将成为构建未来社会治理的信任基石。

“区块链的底层是数学,中层是法律,上层是经济行为”,原北方电子研究所系统总体中心主任彭雄宏这样解构和分析区块链。在他看来,区块链这种自组织协同技术要求数学在六个方面发挥作用:第一是要真正支持分布式的协同系统;第二是增强共识分布性,扩大公平性和增强系统安全性;第三是加强隐私保护,促进安全授权,提高数据共享程度;第四是加强设计和测试安全性;第五是加强平行世界的建模和仿真,使协同经济效率最优化;最后是丰富区块链的自组织机制。

而经济学家朱嘉明教授回归基础,从数学的角度去看区块链。他指出,区块链已经具备足够的跨学科基础,并已经展现了引入更多数学工具的可能性。根据嵌入理论,目前更多是区块链嵌入数学,但未来数学会更多嵌入区块链。这是一个互通的过程。区块链的应用场景将在学科交叉过程中日益扩大。在所有应用数学体系中,现在可能最具发展前景的是区块链。因此,区块链将是数学世界、关键世界和非关键世界、物理世界和物质世界之间的一个桥梁。

如何看待区块链的跨学科特性?

区块链在人工智能、量子计算、能源系统、物联网、经济金融等领域都可以有应用,因此一个普遍意义上的区块链科学一定是跨学科的。

计算科学家、中科院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃指出,要真正把人工智能系统建起来,需要区块链。建立在大数据基础上的人工智能就像把房子盖在土基、沙基上,知识都是碎片化的,可信度不高。有了区块链,人工智能的地基就相当于变成了钢筋混凝土。

中科院院士张钹指出,人工智能主要通过计算机来模拟人类的理性行为、感性感知以及模拟人类的动作。我们可以把人工智能分成两个阶段:第一阶段是传统人工智能阶段,第二阶段是深度学习时代。人工智能建立的初始,基于知识和经验的物理符号推理模型和神经网络模型都需要依赖人类编辑知识和经验或者人工选择特征输入;深度学习的出现对机器学习做了根本性的改变,从此不需要人工编辑知识和选择特征,只需要原始数据即可。

中国科学院自动化研究所副研究员袁勇指出,从技术特点来分析,区块链和人工智能存在非常互补的关系,“区块链+人工智能”最大的应用是分布式人工智能。他认为区块链和人工智能结合后,区块链会在个体层次的实体形态、组织形式、运作模式、激励机制和管理规则五个方面影响区块链生态。人工智能的基础是大数据,大数据是碎片化、实时、海量、良莠不齐的;而区块链可以架构在大数据和人工智能中间,把大数据变成可信、可靠、可用和高效的数据。

美国普渡大学区块链实验室副主任、本征资本创始合伙人邢大地博士分享了他在区块链、人工智能等领域的实践经验。他指出今天的人工智能还不够完美,并且通过比较可以发现人工智能和区块链、技术和经济学、今日和未来用于人工智能的分布式账本开放数据存在不同; 凡是多方需要共享流程和数据的业务场景都有用区块链提升效率和安全的机会。

除了人工智能,与会专家学者对其他学科领域在区块链上的探索也介绍了他们的经验和见解。

武汉大学电气工程学院教授张俊主要分析了区块链在能源系统场景中的应用情况。他表示,通证经济的核心是激励。通证对实体经济主要有两方面的作用:在实体经济内部进行调节,对实体经济外部环境进行影响。通证经济体系在能源系统中的应用不仅解决一些传统问题,还能增加能源系统的可靠性和稳定性,为能源系统的高效稳定运行提供理想的理论和应用基础。

华南理工大学自动化科学与工程学院副教授崔巍介绍了量子计算机的情况。在他看来,量子计算机对于区块链的影响主要体现在对签名机制、椭圆曲线及POW的影响。虽然密码学界提出了抗量子攻击密码,但实际上现有所有的抗量子密码都没有得到理论上的证明。

北京交通大学计算机与信息技术学院信息安全系主任王伟表示,物联网当前发展面临着一些瓶颈,区块链的身份验证与共识机制有助于避免非法、恶意节点接入,去中心化架构可以提高物联网的可拓展性和兼容性。

中科院信息工程研究所信息安全国家重点实验室副研究员陈宇重点介绍了零知识证明,他认为这一密码学的关键技术工具在大量密码协议的设计中起着不可替代的作用。

区块链面临何种困难与挑战?

区块链在发展中过程中也面临一些困难和挑战,主要体现在技术、应用和监管等方面。

数字资产研究院学术与技术委员会学术委员邹均认为,当前区块链危机主要体现在两方面:其一,币圈由原来的非零和理性博弈走向零和非理性博弈;其二,区块链技术落地时都会遇到不可能三角问题。他表示,区块链共识机制设计里要用到很多博弈论知识。理论上,区块链是一个达到纳什均衡的共识系统。但问题在于,区块链的共识机制是一个静态设计,而博弈论是动态的,所以这里存在矛盾。

Zerohm创始人钟馥百也从技术层面分享了自己做区块链过程中遇到的问题,基于现有新架构,他认为未来一定是多链的结构,一条主链加若干业务链。在开发过程中,除了数学要解决的核心问题外,还需要提供更多应用性。

英拓网络创始人练志锋则指出了区块链发展过程中面临的一些监管问题,他认为现在区块技术还没有一些规范化的东西,和统一的标准,希望区块链专家、数学家和密码学家能合力做出解决方案,尽快建立行业共识。

北京航空航天大学博士生导师蔡维德表示,并行计算、容错机制、网络协议、数据结构、扩展性、实时监管和现代金融系统需求的挑战是区块链面临的最大挑战,实验室的研究数据跟真实数据存在很大差距。

区块链会有怎样的未来?

复旦大学教授,中国计算机学会区块链专委会主任斯雪明认为区块链系统的特点是静态性、多中心、分布式、冗余、高度同构,而目前的区块链系统是高度冗余、高度同构的。理想区块链系统如何构建?根据区块链系统的特点,他从自然界的拟态群飞、群游现象中得到启示,提出了拟态群体异构体系机构。

区块链技术会不会威胁到互联网的存在或者是取代、颠覆互联网? UOC开源社区创始人贾可认为区块链技术是下一代互联网闭环中的最后一环。当前拆解区块链是为了重新理解和认知区块链,形成统一的理论,使之能够真正成为一门多学科交叉的科学。关于未来,他认为下一代互联网以及区块链网络的底层拓扑结构,将不再局限于欧氏几何,而将拓展到更一般的黎曼几何。

原北方电子研究所系统总体中心主任彭雄宏指出,经济模式的发展经历了从传统经济模式到互联网经济模式的转变,在区块链的推动下,未来将进入协同经济模式。在发展脉络上,是从信息互联网走向价值互联网的过程。信息互联网时代最大的特征就是信息的大量聚集并在此基础上产生大数据的应用和需求;价值互联网的特点则是“富合约”,大家都通过合约化的方式来进行价值和资源的流动。富合约的最大特征是可编程,目前有可编程货币,下一个阶段会出现可编程商业,而未来就是可编程社会。

结语

经济学家朱嘉明在会议结尾作出了如下总结:

如果2017年的重要关键词是AI,那么2018年的重要关键词就是区块链,区块链和AI的概念在中国和世界范围内得到了空前的普及,这在科学史、思想史和技术史上都是前所未有的。

在这样的背景下,于世界范围内召开的无数区块链会议其实暴露了三大弱点,首先是大部分区块链会议上传播的思想是非连续的,而我们的思考应当是连续的;其次,区块链会议与会者专攻的学科是单一的,而对区块链的理解是需要跨学科合作的;最后,大部分会议的商业目的和实用目的较多,而区块链会议应该更富思想,在精神层面刺激和引发大家的思考,这方面值得参考的会议便是“梅西会议”。

区块链数学科学会议的主题探讨的问题即数学是否是万能的?数学是不是可以解决区块链的问题?以及我们是否可以立足区块链建立起应用数学的一个新分支?整个会议更重要的意义就是基于数学思考和理解区块链并开拓新的思想,我们并不是为了寻求确定的结论,而是要对建立一整套思想框架做出不懈探索。今天我们所处的时代不再有数学通才、物理通才或经济学通才,达芬奇所处的那个通才时代早在20世纪中期前就结束了。通才时代结束后,我们才更需要让各个学科走在一起做思想的碰撞,这一点是时代的要求也是历史的要求。

这次区块链数学科学会议所探讨的问题,总结起来可以概括为五大问题:

  • 第一,后工业社会之后,特别是在区块链出现之后,这个时代变成什么样了?显然这个时代已经是一个超越政治制度、超越意识形态的时代,身处其中的每一个人都被这个时代所裹挟,如果说这个时代是一个最大的分布式记账系统,那每个人都是分布的节点。

  • 第二,我们如何理解和描述这个时代?这是整个会议讨论最多的问题了,众多专家学者为我们展现出的这个时代最大的特征就是“平行世界”,即物理世界(或物质世界、现实世界)与观念世界(或非物理世界、非实体世界)的平行。现在我们对于平行世界的解释正在深化和丰富,我们每个人每天的时间都分布在两个世界之中,而在后一个世界中我们消磨和花费的时间已经开始远远大于在物理世界中花费的时间。

  • 第三,因为区块链的介入,这个世界是不是变了,或者说这个世界是不是会进一步改变?会议并没有对这个问题做出确定的结论,但与会的学者普遍同意这个世界已经因区块链有了变化,至于变化有多大则是另外一个问题。今天当我们讨论这个时代或者这个世界的时候,已经不可能没有区块链这个概念,区块链已经完全融入了我们的话语体系。

  • 第四,区块链到底是什么?这是会议探讨的根本问题。与会嘉宾的若干个发言都试图对区块链进行分解和解构,把原来的区块链模式用一种全新的视角来解释,这是会议相当重要的成果。

  • 第五,会议探讨了未来,比如探讨了5G、AI、量子力学等对区块链的影响。这些影响离我们不是很遥远,既然在会议上提出来了,希望能引起大家的思考和重视。

最后,一个会议的成功与否并不在于会议能得出确定的结论,而在于能够焕发起大家的想象力。科学家应该是有想象力的,太务实的目的往往不能孕育希望。

UNICEF基于“解决全球性挑战”投资六家区块链初创企业

摘要: UNICEF在本周一(12月10日)宣布,它将向六家区块链初创企业投资10万美元,意在解决一些“使用区块链技术中的全球性挑战”,涉及从医保交付透明度到金融和资源管理等领域。

作者: Nikhilesh De

联合国儿童慈善机构UNICEF(联合国儿童基金会,The United Nations Children’s Fund)正开展对区块链技术研究的资助。

UNICEF在本周一(12月10日)宣布,它将向六家区块链初创企业投资十万美元,意在解决一些“使用区块链技术中的全球性挑战”,涉及从医保交付透明度到金融和资源管理等领域。

据一份新闻稿宣称,该项投资属于一项更大范围的计划之中。该项计划已对二十家技术初创公司做出了投资。

该笔对区块链初创企业的最新投资,是通过UNICEF的创新基金做出的。该基金就早在2016年2月就暗示将推出这一举措,并在今年年初明确启动对适合区块链领域企业的征集工作。

这些初创企业均位于一些发展中的经济体,包括阿根廷、墨西哥、印度、突尼斯和孟加拉国等国。

六家获得投资的企业分别是:开发财务跟踪平台的Atix Labs和Onesmart;建立疾病历史跟踪平台Prescrypto;致力于确保疫苗通过供应链平台提供的Statwig;开发社交协作工具的Utopixar;以及试图开发一种无需互联网访问的离线网络系统的W3 Engineers。

UNICEF的创新首席顾问Chris Fabian在一份声明中解释说,“一旦我们的投资、技术支持和对弱势群体的关注可帮助技术以最公平公正的方式成长和成熟”,这样的项目就会得到基金会的投资。

他补充指出:

“区块链技术仍处于一个早期阶段。在看到如何以及何处使用这项技术创造更美好的世界之前,我们仍要面对大量的试验、失败和经验教训。”

除了做出投资之外,UNICEF还将提供产品和技术上的援助,并将共享其合作伙伴和专家的网络。

接受资助的企业将在未来12个月内给出其项目的开源原型。

UNICEF多年来一直关注区块链的研究。它已在两年前投资了一家聚焦与身份验证技术的初创企业,定制实现交易的智能合约

英文原文: UNICEF Funds 6 Blockchain Startups to ‘Solve Global Challenges’

学术界与区块链的关联概述

摘要: 在业界看来,学术界可以解决区块链目前在可扩展性、隐私和互操作性等方面存在的局限性。本文概要介绍了当前学术界的区块链研究人员和学者,并简述了一些学术界正在构建或已推出的区块链项目。

作者: Wesley Graham

正文:

面对区块链,学术界的趋势如何?大学应该如何参与?已经构建了哪些系统?

观察要点

  • 区块链的区域性中心已在湾区(伯克利和斯坦福大学)和一些国际区域(色列和新加坡)范围内初具雏形。
  • 计算平台受到了大学教授和投资者们的重点青睐。
  • 隐私和可扩展性依然是区块链的主要关注点。

学术界的重要性所在

撰稿人: Wesley GrahamRonen Kirsh

当前绝大多数的主要区块链架构,在很大程度上受限于可扩展性、隐私和互操作性等方面上存在的技术局限。不少投资者认为,学术界是解决这些局限的力量之源。因为正是这些躬耕于学术界的专家学者们,最早提出并引领了加密方法与分布式系统的发展。

出于此考虑,本文意在让读者初步了解当前最具天赋区块链研究人员、学者和思想领袖,并概要介绍一些正在构建的系统、一些引领变革的大学,以及预测下一波贡献将会出现之处。

如何定义“学术”项目?

我们认为,区块链学术项目的特征是:
* 对当前区块链生态系统中存在的一个或多个痛点做出了实质性的贡献。
* 具体工作是由大学研究生和教授牵头完成。
* 项目已成功地实现首轮融资。

学术项目通常是围绕着一些由教授和研究人员牵头的项目开展的,其中还可能包括了一些积极参与的博士生,以及其它一些在此专业领域颇有建树的人士。本文所指的学术项目,还额外考虑了那些使用去中心化账本技术构建并受到资金会和其它投资者投资的项目。

学术生态系统:目前已构建的项目

如上图所列,当前已有不少由学术界牵头并具有一定影响的项目,它们大体可归为“支付架构”类(例如,Liquidity Networks)、“协议”类(隐私保护技术)和“平台”类(数字货币或智能合约解决方案)。这些区块链解决方案主要针对可扩展性和隐私领域。当然,还有其它一些知名项目,意在为存储、安全和分布式共识领域提供解决方案。

智能合约平台是当前学术生态系统的主要活跃投资领域之一。例如,Dfinity (融资6100万美元)、Zilliqa (融资2200万美元)和Spacemesh](https://spacemesh.io/)等项目,就因为项目的融资金额而受到媒体的重点关注。

智能合约投资的增长,可以看成是解决以太坊可扩展性和安全性问题的延续,意在寻求更适合于大规模采纳的替代平台。详细信息,推荐阅读这篇由闪电网(Lightning Network)开发者@StopAndDecrypt撰写的优秀文章

例如,今年早期成功融资4500万美元的Oasis Labs项目,就是瞄准于改进以太坊中存在的一些不足,目标是“解决目前阻碍区块链采纳的一些性能、安全、隐私限制方面的智能合约平台问题”。该项目结合了“智能飞地”(smart enclaves)技术和高性能智能合约执行,为企业解决隐私问题和可扩展性问题提供了独到的解决方案,吸引了来自区块链社区的更广泛关注。

除了智能合约平台,一些研究还在“基础设施层”等关键领域取得了显著成果。例如,适用于实际应用的底层存储实现、支付技术和隐私工具等。

例如,去中心化网络项目Filecoin在去年得到了创纪录的2.57亿美元融资,因此上了头条。此外,研究和实现zkSTARK的Starkware项目团队,引领了对EthereumZCash等现有项目的研发方向。

教授团队:项目出自于哪些大学?

大多数学术驱动型项目均出自于大学教授团队,这些教授多供职于一些传统的“有名望”大学和研发中心,例如康奈尔大学(Thunder CoreSpacemeshIC3)、麻省理工学院(AlgorandEnigmaZerocoin)、新加坡国立大学(ZilliqaKyber Network)和牛津大学(IOHK)等。

特别值得一提的是,湾区在最近十二个月中取得了巨大的发展。伯克利(Oasis LabsZCashStarkwareCoda等项目的创始人出自该学校)和斯坦福(StellarFilecoinBloomCognito等项目创始人出自该学校)等学校在该领域确立了相当大的影响力。

近期,以色列的研究机构也推出了一些项目,主要包括来自ZCashStarkwarePhantom等项目的研究者工作。其中,Spacemesh项目是由以色列荷兹利亚跨学科研究中心(IDC Herzliya)的研究人员牵头,DAG Labs由耶路撒冷希伯来大学(Hebrew University of Jerusalem)的教职人员牵头。通过引入新的共识算法(Spacemesh提出的Proof of Space Time)和数据结构(DAG Labs提出的有向无环图),这些项目提出了独到的可扩展性解决方案。

值得关注的是,一些天使投资者、风险投资公司和对冲基金都开始积极地投资该领域。它们作为早期投资者加入了Dekrypt Capital,参与到我们上面列出的部分项目中。

学术界的推波助澜

展望未来,我们非常期待学术界在构建未来区块链基础设施方面所发挥的作用。

最先进的工具要交付给数十亿用户使用,支撑这些工具的底层技术必须尽可能地接近完善。在培育下一批区块链先行者中,应将学术界需面对的严格公众审查和修订视为最有效的筛选因素之一。

一旦学术界已经开始完善技术并“扩大规模”,就应该鼓励创始人走出校园并寻求企业界参与。我们相信,如果学术界愿意让拥有经验丰富的企业家参与进来,并寻求经验证可靠的早期投资者帮助,这将比那些并不具备这些条件的项目具有更强大的竞争优势。Dekrypt Capital投资公司致力于为学术团队提供积极的支持,目前为止已得到了多个源自校园的项目的认可。

总结

我们看到,业界对层出不穷的学术驱动型项目的兴趣与日俱增。我们也相信,更多可用的基础设施将对未来的应用提供支撑。

本文给出的图片可作为深入探讨学术界在区块链领域作用的一个出发点。我们也将根据其它一些新推出项目的建议做相应的修改。如有必要,可在评论中提供学校和项目信息!!。

特别感谢Jon AllenHoward Wu及Dekrypt Capital团队的其他成员,他们为本文提供了有价值的观察和素材。

作者简介

Wesley Graham是伯克利区块链团队的咨询主管。他之前曾在埃克森美孚和DoC领导区块链项目,目前专注于区块链先知(oracles)和费用市场(Fee Markets)相关的研究。

Dekrypt Capital投资公司简介

Dekrypt Capital是一家专注于区块链基础设施、隐私保护技术和早期风险投资的业界领先投资公司。企业为投资、指导和加速团队开发提供新颖的解决方案,意在解决影响去中心化协议和应用的可扩展性、隐私和互操作性的核心问题。

免责声明:本文并不构成投资建议,也不提供任何购买或出售所涉及公司的证券、代币或其他权益的建议或募捐。Dekrypt Capital对文中所涉及的部分公司和项目有着直接或间接的利益关联。

文中表达的所有观点均为作者自身的观点,不代表作者所属的任何实体的观点。

查看英文原文: An Overview of Academia & Blockchain

三种国产区块链账户模型的比较

区块链系统中一般需要存储两类信息,即交易日志和用户数据。简而言之可以理解为,用户数据保存了账户余额,交易日志保存了账户余额的变化情况。交易日志的存储是由去中心化账本实现的,而用户数据的存储则依赖于区块链的账户模型(account model)。

一、UTXO和Account模型

目前主流的账户模型基本上可分为两类,一类是使用比特币的UTXO,另一类是基于以太坊的账户模型。两者的对比可检索到大量公开的文档,不再详述。这里只阐述其中的一个关键点,就是从交易性能对比两类账户的实现。

UTXO无需维护账户状态(即无状态)并可极大并行,适于提高交易性能。但它并不是一种通用数据结构,而是一种针对交易业务而高度定制的数据结构,对于运行(图灵完备的)智能合约存在大量局限性,这也正是Gavin Wood另辟蹊径提出Account模型的原因。其次,UTXO的每次初始化需要全部的历史交易日志,这种模式在可预见的将来完全不适用于具有大量流水的大型交易系统。一些链考虑引用快照机制降低维护全部历史交易的代价,但是这增加了链的维护代价,主要是防止双花等账户安全性需要重新考虑。

以太坊的账户(Account)模型(包括外部和合约账户)的状态保存在节点中,即MPT方式存储。只需nonce++即可实现交易,可编程性好。虽然账户模型具有更好的设计,易于编程实现,但是出于性能考虑,一些链考虑用函数式编程语言实现基于对象设计的账户模型(正如后面介绍的比原链)。

混合两者的基本考虑就是,既有UTXO的可并行性,又具有账户模型的数字资产发行和管理功能。

二、对比区块链系统

针对用户的关注,我们择取了三种代表性国产区块链系统。它的基本信息为

2.1 比原链(Bytom blockchain)

定位为一种专用于支持多资产管理的公链,意在解决原子资产的不可复制性、资产映射的合规性和资产在链上链下的高效流通等问题。

2.2 BUMO

公链,宣称为“面向全行业的基础公链,可实现商业级的区块链部署”,“在保证系统稳定安全的前提下,能够达到2000TPS”。

2.3 智品链(Zeepin Chain)

主要应用是解决文创产品的版权交易问题。已与NEO建立生态战略伙伴关系,开展多项战略合作。

三、比原链

3.1 项目要点:

  • 账户同时管理多种资产。
  • 结合DPoS和BFT提出一种新的共识算法BFT,宣称实现了较高的交易吞吐量,具备了可扩展性和安全性。
  • 提出了一种支持异构区块链跨链操作的交易架构——互联链(InterChain),在实现智能合约和 Dapp 跨链功能的基础上,提供了良好的隐私保护机制(基于 zkSNARK零知识证明算法)。
  • 良好的开发者和用户社区。

3.2 账户模型

账户对多种资产的高性能管理是比原链的一个卖点。

比原链的账本在设计上属于合约层的概念。为支持多资产管理,每个账户在账本层对应一组BUTXO(比原链的UTXO数据结构),账户下所有BUTXO资产数目总和对应该账户的资产。比原链维护一个全局的BUTXO池,每一种资产都有相对应的一种树型结构的轻量级世界状态,每个区块维护交易哈希和BUTXO哈希(Merkel树根)。每一种资产在执行交易时,会实例化相对应的轻量级虚拟机执行,支持多种不相关的资产并行运行。

四、BUMO

4.1 项目要点:

  • 创新的共识算法:(据白皮书介绍)BUMO 提出一种新的共识算法 BCP(BUMO Consensus Protocol),能够实现较高的交易吞吐量、可扩展性和安全。 BCP 算法是一种动态记账人选举的新算法,每个用户将会被分配权重优先级,优先级可以以用户收益中的权益来衡量,以此为基础形成一种基于用户权重的记账人节点选取机制。
    • 相比于 PoW ,可有效提高交易吞吐量并避免分叉;
    • 相比于 BFT,不需要一套固定的服务器组同时能够抵抗女巫攻击;
    • 相比于PoS,避免恶意领导者单独形成一个分支,降低影响;
    • 相比于 Ripple /Stellar共识算法,无需用户配置复杂的信任策略。
  • 高性能:(据白皮书介绍)正是这种共识机制让BUMO达到快速、好用、安全、稳定的效果,这也使得BUMO的TPS水平到2000笔每秒,超过1500笔每秒的商用水平,其交易确认时间也是秒级。

4.2 账户模型

基于以太坊账户模型,支持图灵完备智能合约。BUMO的账户设计如图,其中也支持多种资产,保存为账户状态。

账本数据也使用MPT存储。定义了多种账户操作。从白皮书看,BUMO账户设计上与以太坊基本一致。

五、智品链

5.1 项目要点:

  • 从该项目的公开资料看,应该是基于NEO的一个实现,尽管NEO是使用C#编写的。

5.2 账户模型

白皮书中未提供更多细节。从对智能合约支持等特性看,应该是采用了以太坊账户模型。

六、汇总对比表

总结一下,下表给出了三种国产链的基本对比。主要参考各自的白皮书和Github代码库。

对比项 比原链 BUMO 智品链
开源
项目活跃程度 十分活跃,贡献者最多,star最多 活跃,有一定数量贡献者和Star  不活跃 
开发语言 golang C golang
账户模型 基于UTXO的BUTXO 以太坊账户模型 以太坊账户模型
共识机制 考虑对矿机ASIC优化的POW,并引入Tensority算法 称为“BCP-NG”,据白皮书称有大量创新,应该是DPoS的一种变体。 称为“GBFT-POS”,POS机制的变体
智能合约 提出了equity智能合约语言和BVM虚拟机 图灵完备的区块链只能合约开发环境,据称支持多种语言开发。
跨链 XRelay,支持对指定“侧链”的跨链交易 支持主链-子链的双层多链结构,支持多个不同主链连接起来,可扩展支持同构和异构的主链。 未见提及
社区 发展很好 一般

Whiteblock指出EOS是一种分布式数据库而非区块链

摘要: 近期,区块链测试方Whiteblock发布了一份测评报告,其中的内容对EOS极为不利,并将EOS称为一种伪装成区块链的“分布式同构数据库”。Whiteblock对EOS协议的多个方面进行了剖析,得出的结论认为EOS在安全性上存在着严重的缺陷,而且网络性能要远低于其宣称所能达到的性能。就此,加密货币新闻网站CCN(CryptoCoinsNews)独家专访了Whiteblock的CTO。

正文:

近期,区块链测试与研究企业Whiteblock Inc.发布了一份测评报告,其中的内容对EOS极为不利,并将EOS称为一种伪装成区块链的“分布式同构数据库”。在这篇名为《对EOS架构、性能和经济性的分析》(“EOS: An Architectural, Performance and Economic Analysis”)的报告中,Whiteblock对EOS协议的多个方面进行了剖析,得出的结论认为EOS在安全性上存在着严重的缺陷,而且网络性能要远低于其宣称所能达到的性能。

惊人的发现

根据这份由Whiteblock研究团队的Brent Xu、Dhruv Luthra、Zak Cole和Nate Blakely等人撰写的报告,被冠以“以太坊终结者”的EOS网络在安全性和协议上存在着多处令人震惊的失败,并会对多种由EOS网络提议的应用造成致命性的破坏。

EOS于今年九月上线以来的两个月时间中,Whiteblock团队持续测试了EOS网络的交易通量是否能达到其所宣称的性能。此外,测试中还包括了EOS对不利网络条件的响应情况、如何应对可变交易率和规模、平均交易完成时间,对分区的容忍度及容错能力。测试结果远非令人满意。

Whiteblock在11月2日就EOS测试而发布的新闻稿中直言不讳地指出:

“EOS并非一种区块链,而是一种分布式同构数据库管理系统。其中最显著的差异在于,EOS的交易并非加密认证的。从本质上看,EOS代币和RAM市场就是一种云服务,网络以黑箱方式向用户提供计算资源承诺,用户通过授信访问。由于EOS在区块生成者的计算能力上缺乏透明度,因此EOS并未提供问责(accountability)机制。”

Whiteblock在“切实可行”的网络条件下测定了EOS的实际通量,结果严重低于EOS市场宣传材料中所宣称的通量。此外,EOS网络中缺失拜占庭容错机制,并存在重复性共识失败这样的基本安全问题。

据CCN今年六月的报道,EOS在其网络主版本发布之后一周内,就因一起由区块生成者导致的事故而陷入争议,该事故导致很多人对EOS网络去中心化的程度产生质疑(译注:指今年七月EOS因私钥生成工具存在安全隐患,创建的私钥被黑客发现漏洞并实施了“彩虹”攻击,导致账户的数字资产被盗,造成了上千万数字资产的损失)。Whiteblock的测试报告确证了人们担忧问题的存在,这将严重地影响到EOS的价值。

Whiteblock对EOS的整体网络给出了结论性意见:

“我们的研究结果表明,EOS所宣称的性能是不准确的。EOS系统是构建在不正确模型的基础之上,这种模型并非真正的去中心化。”

CCN对Whiteblock CTO的独家专访

在测试报告发布后,CCN采访了Whiteblock CTO Zak Cole,独家详细解读了这份关于EOS社区和区块链生态系统的报告内容。

CCN: 你们团队给出的研究结论称EOS交易未经加密验证,因而应称为一种分布式同构数据库而非区块链。这对于EOS生态系统意味着什么?这是否会显著地改变EOS承诺实现的目标(即成为以太坊杀手)。EOS投资者和用户应对此感到担心吗?

Cole: 我希望我们的研究结果能为社区提供健康的讨论基础,而不是挑起竞争对手之间的某种政治战争。我认为,要建立可实现EOS初衷的简明路线图,需要对EOS生态系统的长期目标进行评估。鉴于以太坊和EOS两者间存在着本质上的差别,对比这两个系统是完全没有意义的。前者是一种由加密认证支持的去中心化P2P网络,而后者则是一种优化的分布式数据库,功能上更类似于一些通用云计算平台提供的IaaS服务产品。

Whiteblock是区块链的拥趸,而并非EOS或以太坊等某个特定系统的拥趸。我们研究的目的并非是要证明各系统间孰优孰劣,而是要为社区在建立高性能和功能系统过程中提供可参考的、客观并科学的分析。Whiteblock团队还将为在下周在旧金山召开的EOS黑客马拉松(Hackathon)提供指导。我们的唯一目标是协助构建这样的桥梁,将区块链技术从一种边缘的科学领域,过渡到一种可提供实际应用并塑造未来去中心化世界的可行解决方案。这正是我们推出Whiteblock测试框架的原因所在。

社区所需要的开发工具,应该可以提供透明并客观的性能数据。这些性能数据将甄别事实情况和营销用语,进而掌握这些正在构建中的系统的功能。EOS的最根本性问题在于,它当前无法提供并且在短期内也无法提供其所宣称的通量。EOS根本无法支撑其所提出的数十亿美元愿景。其中尚需再做大量的工作,我希望EOS团队能够兑现所有的承诺。无论如何,它都是对分布式计算的一种非常有意义的实验性探索。

EOS投资者和用户则并不必过分担心,除非他们希望通过投机性下注的方式从游离于监管之外的新兴技术市场中获利。

CCN:你们的研究还指出,EOS的实际通量要显著地低于其所宣称能达到的指标。在外行人看来,这对用户和DApp开发者意味着什么?

Cole: 在选定最适合构建DApp的平台时,开发人员应首先对自身优先考虑的事项做出评估。如果想要尝试实现去中心化P2P交易逻辑的功能,那么就应确保所选定的系统事实上能够提供执行该操作所需的功能。如果想要实现高交易通量,那么就应该考虑使用Shopify或Stripe等的现有的支付网关会存在哪些问题。当然,如果传统的客户-服务器架构同样适用,坚持选用此也无可厚非。

另一项需注意的重要事情是,EOS并非真正地无需交易费用。相反,交易成本会转移给DApp开发人员,使得运行这些DApp的成本非常高昂。我们在很多软件系统中已经看到,这将会创建类似于苹果的App Store这样的应用市场,并且用户最终支付的费用可能会远高于预期。我不知道大家是否还注意到,随着延迟和用户数量的增加,成功处理的交易显著地下降了。这不仅仅是因为通量,而是还有一些更重要的因素在起作用。

CCN:是否EOS从本质上看就会给用户带来安全风险,或者说EOS的上述缺点是可修复的?

Cole: 我认为,EOS系统当前的确存在一些固有的安全漏洞。对于如何确保区块生成者的正常行为方式上,EOS并没有有效地实现博弈论,或采用一些额外的算法机制,也无法保证用户当前存储的资产可供未来使用或访问。EOS共识模型的所有价值都基于区块生成者的能力,而这些区块生成者是由代币持有者投票选出的,并代表他们执行功能。一旦无法阻止区块生成者本身出于自己的利益考虑而做出投票,那么这种共识是否还存在意义?即便存在,EOS也没有提供可以管治区块生成者行为的函数、加密、计算或其他手段。这个问题是非常明显的,完全不需要通过我们为期三个月的研究项目才能发现。

话虽如此,但这些缺点是可以修复的。但如果修复了上述问题,EOS可能会变得与Dash或Syscoin等许多主节点系统(masternode)毫无二致。

CCN:该研究受到了ConsenSys的资助,那么其中是否存在着一些利益冲突? [CCN编者注:ConsenSys是一家对ETH应用做了大量投资的以太坊开发工作室]

Cole: ,我们的研究还得到了除ConsenSys之外大约二十多家机构的资助。例如,Bitshares的联合创始人及Dan Larimer的前合伙人Bo Shen也提供了资助,但Bitshares的大部分技术均是基于EOS的。ConsenSys也资助了一部分研究计划,这并不影响科学的过程,尽管这应被视为争议性问题。同样,我们对以太坊也开展了相同的测试,并指出了以太坊的一些不足之处。以太坊社区接纳了我们的研究结果,并支持我们进一步开展研究。目前,我们已经与数十种区块链系统开展了合作。我们的测试目的并非是要指出某个系统的优点,这不是选美比赛。为了建立更有效和更高性能的系统,我们应该做到客观和透明,找出系统存在的弱点,帮助系统在进一步设计过程中考虑到这些问题并作出优化措施。如果EOS社区对此类性质的测试和观察选择抵触的态度,那么其整个生态系统都将注定会失败,并且肯定永远无法实现其所宣称的规模。

我们的研究报告是公开提供的,其中也指出了以太坊在安全和性能上存在的多个显著问题。

查看英文原文: Interview: Researcher Argues EOS isn’t a Blockchain — Just a Distributed Database

四十种智能合约支持平台(完全版)

大家已经看到,区块链正在改变我们的世界。

区块链解决了人类一直面对的一个重大问题,信任问题。区块链可为任何需信任的事物创建一种不可更改的轨迹,由此解决了信任上的问题。

当然,该技术还具有其它强大之处。

区块链还具有扩展上述特性的能力。区块链可用于创建一旦制定就必须准守的规则,其中每条规则会引发特定的操作行为。换句话说,就是实现智能合约。

本文列出了四十种支持或是用于开发智能合约的平台或项目,它们均在不断的演进中。如果读者发现本文存在任何遗漏或错误,希望能在评论中提出。此外,随着本文作者对这些平台或项目的进一步研究,本文内容将会定期更新。

下面详细列出四十种智能合约平台/项目。

1. 以太坊(Ethereum

优点:

  • 图灵完备。
  • 具有规模最大的可用开发人员社区。
  • 是得到支持最多的智能合约平台。

不足:

  • 它使用Solidity语言。与C++、C#、Python等现代开发语言相比,Solidity并不具有优势。
  • 如果智能合约编写的效率不高,那么实现代价巨大。

智能合约语言:Solidity

现状: 活跃

说明: 以太坊是首批在区块链中引入智能合约概念的平台之一,并得到了开发者社区的最大支持。它宣称实现了图灵完备的智能合约平台。合同代码由每位以太坊网络中的矿工在EVM(以太坊虚拟机)上执行。它是最广为使用的区块链项目平台。

尽管以太坊平台可安全使用,但是其因用户实现代价问题而备受批评。此外,以太坊平台缺乏可扩展性,会导致交易速度不高,不适合当前的现实世界应用。

平台使用Solidity语言。Solodity可以很好地实现图灵完备,但是缺乏现代语言的灵活性,存在的问题包括:

  • 输入和返回参数不支持多维数组(例如,字符串数组)。对此问题存在替代解决方案
  • 智能合约函数支持的参数数量受限(不多于十六个)。否则会给出“stack too deep”错误。

上述问题表明,为适应现代语言的灵活性,该智能合约语言依然需要进一步发展。

有资料列出了Solidity存在的62个问题

学习资源: CryptoZombies主页Solidity官方文档OpenZeppelin以太坊的Medium博客

2. Quorum

优点:

  • 图灵完备。
  • 通过使用constellation,添加了支持网络中两个以上参与者间发送私有交易的特性,因此更适用于企业用户。
  • 将瓦斯(GAS)价格降至零,但依然保持瓦斯限制。这样Quorum在利用瓦斯限制所提供的安全特性的同时,将交易代价(即瓦斯价格*瓦斯限制)降至零。

不足:

  • 开发人员社区相对不大。
  • 因为也使用Solidity作为合约语言,因此具有和以太坊同样的不足之处。

智能合约语言: Solidity

现状: 活跃

说明:

简而言之:

Quorum是以太坊智能合约平台的一种版本,它提供免费的交易,并且还能够使用constellation完成各参与方间的私有交易。

Quorum维护了两个账本,即公开的的私有的。公开账本被公开交易修改,私有账本只针对私有交易所涉及的各方,被私有交易修改。

Quorum与以太坊联系密切,它们使用同一核心平台和语言。因此Quorum也同样继承了以太坊智能平台的优缺点。

学习资源: Quorum文档CryptoZombiesSolidity文档OpenZeppelin

3. Wanchain

优点:

  • 在正常以太坊智能合约平台特性之外,添加了用户隐私特性。
  • 适用于跨链交易。

不足:

  • 和以太坊一样。

智能合约语言: Solidity

现状: 活跃

说明:

Wanchain是以太坊的一个分支,因此它继承了以太坊的许多属性Wanchain,此外提供了用户隐私特性。Wanchain侧重于通过区块链实现当前金融模型的数字化。

Wanchain的隐私特性是通过使用环签名(ring signature)实现的,环签名可实现交易签名者完全匿名,并为接收者提供了验证发件者签名的能力。此外,Wanchain还提供一次性地址(OTA,One Time Addresses)选项,实现了进一步的匿名功能。

Wanchain的分布式账本是建立在以太坊的功能之上,因此任何以太坊DApp都可以在Wanchain上运行,而无需任何代码更改。为了增强这些应用程序,Wanchain提供了许多拥有扩展跨链功能和改善隐私保护的API,扩展了DApp的功能。

学习资源: Wanchain上实现智能合约的文档Wanchain代币CryptoZombiesSolidity文档OpenZeppelinOliver Birch的Medium博客

4. æternity(即æternity)

优点:

  • 引入了新的智能合约语言和VM,实现代码的快速安全执行。
  • 使用状态通道和高效的方式执行合约,维持低代价交易。
  • 通过提供一种版本的EVM,简化了将EVM合约迁移到æternity。

智能合约语言: SophiaSolidity,Varna

现状: 活跃

说明:

æternity智能合约的既定功能目标是支持在链上执行代码。也就是说,代码执行由矿工验证,并且可以改变链状态。

æternity智能合约的设计和实施还具有下述非功能性目标,按重要性顺序列出为:

  1. 合约的执行应该是安全的。
  2. 合约的执行应该是高效的、可扩展的。
  3. 合约的执行应该是低代价的。
  4. 具有从以太坊智能合约迁移的简单方式。

目标一:合约执行应该是安全的

安全合约指的是用户可以指定并自动地验证合约的属性。

为了实现安全合约,æternity设计了一种新的功能语言Sophia,以及一种新的安全虚拟机FTWVM。

目标二:合约执行应该是高效和可扩展的

为实现可扩展的解决方案,æternity提供了状态通道(State Channel)和一种新的共识算法。

为实现高效的合约执行,æternity提供了一种非常高层的语言,支持快速、直接地执行简单的合约。对于更高级的合约,可使用Sophia语言。Sophia将会编译为一个专用于执行Sophia合约的虚拟机。该虚拟机也是一种高层虚拟机,其中具有操作区块链和Sophia数据结构的指令,无需显式管理堆栈和内存。

æternity也使用一种称为“Varna”的高层智能合约语言。该语言类似于比特币的脚本语言,但是不提供循环和固定的瓦斯价格。Varna使用自身的虚拟机HLM(High Level Machine),代码直接被节点软件执行。Varna设计实现高速的日常合约。

目标三:合约执行应该低代价

合约执行的代价最终取决于矿工和用户,但是通过提供状态通道,实现了一种高效的合约执行方式,由此维持了简单高层合约语言的低执行代价。

目标四:具有迁移以太坊智能合约的简单方式

æternity通过提供一个版本的EVM,简化了从EVM合约迁移到æternity。

学习资源: 智能合约文档Sophia文档Sophia简介æternity的Medium博客

5. Zen

优点:

  • 完全性(参见下面给出详细解释)。
  • 鉴于智能合约语言是“独立设计”的,因此更难以出错,并且语言的表达力足以用于“形式化验证”(参见下面给出的详细解释)。

智能合约语言: F*

现状: 活跃

说明:

与其它智能合约项目相比,Zen协议提供了一种完全不同的智能合约实现方式。

下面从智能合约的定义开始解释。从最抽象的意义上看,智能合约是一种设计运行于去中心化环境中的计算机程序。也就是说,智能合约的运行是用于确认区块链的共识。在比特币中,智能合约实现为Bitcoin Scripts形式,用于验证交易正确与否。在以太坊中,智能合约实现为EVM字节码形式,用于更改EVM的状态。

Bitcoin Script的局限性在于它并非“图灵完备”的,也就是说,它不能表达所有计算机程序。如果我们想要在智能合约中表达任意逻辑,那么合约语言必须可执行任意逻辑,这样才能确认共识。图灵完备语言具备表达任何“不停止”程序的能力,即永远不会停止执行的程序。通常,我们并不知道一个程序是否会完成并终止,或是程序需要多长时间才会终止,执行程序需要多少计算资源。正是因为我们不知道执行程序所需的资源,因此不能使用非图灵完备语言确定共识。一个程序可能不会停止,这意味着也无法确定共识。

以太坊的EVM相比Bitcoin Script更具表达力。EVM为每个EVM字节码指令关联了一个“瓦斯价格”(GAS Cost)。用户支付一定量的“瓦斯”,EVM就开始执行智能合约指令。EVM首先计算一条指令的瓦斯价格,如果瓦斯量足够继续执行,那么EVM将从用户支付的瓦斯量中扣除所需瓦斯价格,执行指令并继续。如果在指令执行完成前瓦斯量用尽,那么执行指令将会失败。使用这种方式,EVM可以表达几乎所有的计算。以太坊智能合约的唯一局限性在于合约必须最终终止,因为用户不会为无限循环计算的执行而无限量地支付瓦斯。在实际运行中,我们很少关注那些不会终止的程序,因此这一局限性制基本不构成问题。

EVM解释字节码指令和追踪瓦斯消耗的过程是非常低效的。对于每条指令,EVM必须查看该指令的瓦斯价格,检查剩余瓦斯量是否充足,并从剩余瓦斯量中扣除所需瓦斯价格。使用这种执行模型,很难以优化改进运行时间。

以太坊中所有智能合约必须终止,该局限性已得到广泛关注。实现所有程序必须终止的语言,事实上并非图灵完备的,只是“完备”而已。Zen在表达智能合约中使用了一种完备的语言,而不是依赖于某种通过追踪瓦斯价格确保完备性的执行模型。完备语言并非绝对适用于表达包括循环和递归在内的所有逻辑,Zen协议的问题也正在于此。

Zen的智能合约语言是一种“依赖性类型语言”(Dependently Typed)。也就是说,每个表达式必须具有一个类型,并且类型依赖于表达式和类型。依赖性类型系统的表达力足以用于实现“形式化验证”。这些类型可表达一个表达式中的任意属性。例如,尽管在一些基本类型语言中,我们可以定义数字3的类型为“Integer”。但是在一些独立类型语言中,数字3也可以定义为“Prime Integer”类型,或是定义为“小于10的整数”类型。如何测定类型语言表达程序的资源消耗情况,具体细节参见这篇博客文章

如果类型不正确,那么类型化语言会在编译时产生失败。而非类型化语言则不会这样。如果程序表达了错误的资源消耗或是错误的断言,那么编译将会失败。

Zen协议的智能合约方式使用了这一方式。它用独立类型化源代码表达资源的消耗情况。如果代码编译通过,那么它确保了资源消耗是正确的。鉴于我们使用了完备语言,因此我们知道程序终将结束。而我们从代码本身可了解资源的消耗情况,因此我们就预先知道了代价,进而无需在运行代码前解释字节码指令并计算瓦斯消耗量。这体现了编译代码相对与解释代码的高效性。Zen当前使用了F#语言,并将F#编译为CLI字节码,然后执行。Zen协议也可以使用其他实现方式,例如使用OCaml和C等。

编译过程只需做一次。代码一旦通过编译,就可以多次执行,这极大地提高了效率。

下面进一步详细阐述整个过程。在交易中,用户提交自己的智能合约源代码,节点将编译代码,从中提取程序及表达程序资源消耗的表达式。之后节点执行合约,这要比执行解释型代码更加高效。代码本身就是合约的组成部分,而编译后的二进制代码则不属于合约,并且只存在于节点的本地。在合约提交到“激活”之间存在延迟,使得节点可以在接收到合约后开展并行的合约编译,进而使得合约在数个区块后得以使用。合约的编译并不影响交易通量。

Zen智能合约不仅运行速度快,而且在大部分时间中也可以并行执行。

Zen协议在运行智能合约所需的时间上具有较少的局限性,可以更快地处理包含智能合约的交易。Zen智能合约不仅运行速度快,而且在大部分时间中也可以并行执行。

不同于EVM本身就是共识的组成部分,Zen协议并不整体维持一个虚拟机。不同于EVM的单线程执行方式,Zen合约之间是相互独立的,因此支持并行执行合约。这极大地提高了执行效率,因为现代硬件适合于高度并发。鉴于Zen合约是无状态的,只实现功能,因此合约中不存在竞争条件,或存在其它妨碍并发执行的问题。包含同一智能合约的多个交易可能并不易于并行执行,必须要串行执行。但是,这种方式运行高效,并使用编译后代码,因此性能相比起在EVM上执行同等计算还是要快一些。

学习资源: Zen Medium技术博客Zen官方文档Asher Manning的Medium博客

6. Counterparty

优点:

  • 基于比特币网络的以太坊智能合约(用于共识)。

不足:

  • 和以太坊具有同样的不足之处。

智能合约语言: SoliditySerpent

现状: 活跃

说明:

Counterpart依靠比特币实现共识,但它也支持以太坊智能合约。下面给出其在更高层级上的工作机制:

  • 用户使用Solidity或Serpent等语言编写智能合约代码,并编译为字节码等紧缩格式。
  • Counterparty将创建并广播一个publish交易,将交易代码嵌入到比特币区块链中。这是以一种可花费的方式实现的,并不会“污染”整个区块链。
  • 交易一旦发布,智能合约就“存活”于一个指定的地址上,看上去和正常的比特币地址毫无二至,只是地址以字母”C”开头。
  • 用户进而可以使用Counterparty创建并广播execute交易,调用智能合约代码中指定的函数或方法。
  • 一旦execute交易在广播后得到比特币挖矿者的确认,每个在运行的Counterparty节点将接收到该请求,并执行其中的方法。智能合约代码在执行中,会修改存储在Counterparty数据库中的合约状态。鉴于每个Counterparty节点具有相同的合约代码(由比特币机制确保)和相同的EVM代码,并且所有代码均为确定性的,因此每个节点将实现同样的状态更改。
  • 其他用户也可以向智能合约发送Counterparty资产。这些资产将得到保存,并用于今后的execute调用。该机制对于融资等类型的合约非常有用。
  • 从本质上看,我们所看到的智能合约发布,以及执行合同中特定功能或方法的命令,二者均为比特币区块链上的实际交易。因此,这两个操作会受到比特币约10分钟阻塞时间的限制。但是,执行智能合约代码一旦启动,通常会以节点处理速度运行。

比特币的10分钟区块生成时间限制对EVM的影响

一个合约在编写完成后,将会“发布”到区块链上,其数据将嵌入到区块链中,这确保了所有Counterparty节点执行同一合约代码。合约一旦发布,合约中的函数或方法将被执行。

合约的发布操作和执行操作均作为Counterparty交易发布(在比特币交易中),进而受限于区块生成时间。但是,合约一旦开始执行,就会按节点主机处理性能逐行尽快得到执行,合约中的每一个“执行步骤”并不受限于区块的生成时间,合约方法或调用方法将会立刻得到执行。

这样,区块的生成时间限制从整体上看对合约影响不大,只是会影响合约的最初发布,以及合约中方法的最初执行。

如果读者对Counterparty还有其它不解之处,推荐访问此处提供的扩展资源

学习资源: CounterParty smart contract docs

7. Rootstock (RSK)

优点:

  • 支持基于比特币实现图灵完备的智能合约。

智能合约语言: Solidity

现状: 活跃

说明: Rootstock(RSK)是一种在比特币上集成了图灵完备虚拟机(TCVM,Turing Complete Virtual Machine)的智能合约平台。它还提供了其它一些网络上的改进,例如更快的交易、更好的可扩展性等,以及一些支持新应用场景的特性。

RSK是首个与比特币双向挂钩的开源智能合约平台。它也是通过合并挖掘而奖励比特币矿工,使矿工能够积极地参与到智能合约中。RSK的目标是通过实现对智能合约的支持、近乎实时的支付以及更高的可扩展性,它增加了比特币生态系统的价值和功能。

学习资源: Rootstock

8. RChain

优点:

  • 图灵完备。
  • 智能合约可使用多种行业领先的功能,例如:元编程、响应式数据流、模式匹配等。因此,RChain智能合约具有更好的可编程性。

智能合约语言: RHOLang

说明:

RChain项目侧重于可扩展性。它使用了多线程区块链,并具有自身的智能合约语言,目前是能与以太坊等顶级区块链项目一争高下。RChain的构建遵循如下最小需求:

  • 动态智能合约功能,支持更多的用例实现。
  • 并发执行,支持多个独立的智能合约在执行中齐头并进。
  • 使用Casper智能合约协议,计算强度低,不会浪费资源。

Rho虚拟机(RVM)是一种基于JVM的虚拟机。RVM的执行环境支持操作多个运行智能合约的RVM以多线程方式并发运行。这种并发结构支持将多个独立进程组合为一个不会产生资源竞争的复杂进程。因此,这种架构也支持多链(即每个节点存在多个区块链),并且每个交易由独立执行的VM实例处理。

Rholang合约

RChain节点可使用Rholang合约。Rholang是一种“面向进程”的合约,所有计算通过消息传递方式完成。消息通过一种非常类似于消息队列的“通道”传递。注意在本文中,“命名”(name)和“通道”(channel)是同义词,这是因为Rholang所基于的rho代数中使用了“命名”一词。用户可以在“命名”上发送和接受信息,因此从语义上看,“命名”和“通道”是等价的。用户可以通过此处Web界面试用部分Rholang代码。

RChain为Rholang重建了ERC20功能,支持用户自建代币智能合约并在RChain上部署。在RChain的Github代码库中提供了一些例子。

学习资源: RCHain开发者网站RHOLang教程RChain的Medium博客

9. Qtum

优点:

  • 可以看成是对以太坊智能合约平台的一种改进。它解决了可扩展性、形式化验证工具缺失、使用SPV(简单支付验证,simple payment verification)时最小移动解决方案缺失等问题。

不足:

  • 由于完全兼容EVM并支持Solidity合约,Qtum继承了以太坊智能合约在安全上的缺陷。

智能合约语言: Solidity

现状: 活跃。

说明:

Qtum是一种在设计上兼容以太坊的智能合约平台,它改进了以太坊一些明显的缺陷,例如可扩展性、缺少形式化验证工具,使用SPV时缺少最小移动解决方案等。Qtum使用一种新的底层区块链和共识算法解决了上述问题。在Qtum看来,这些改进使得平台可为轻量级移动和IoT应用提供更好的支持。Qtum项目意在成为一种“企业通用区块链”,有望在未来将其技术应用于金融服务、供应链管理、社会媒体、游戏等行业。

Qtum本质上是一种基于以太坊的智能合约系统,共识使用的是一种改进版本的Blackcoin的PoS,运行在基于比特币的区块链上。Qtum添加了一个自定义的采纳层,将以太坊账户的金额映射到一组比特币UTXO上。

由于Qtum是完全兼容EVM的,并支持Solidity合约语言,因此Qtum也继承了以太坊智能合约在安全上的所有不足之处。

Qtum计划通过添加一种x86虚拟机实现智能合约的扩展,支持使用C++、Java和Haskell等语言开发智能合约。尽管这一改进将使得Qtum项目适用于更多的开发人员,并可使用现有的工具,但是Qtum并未针对继承自Solidity设计中的安全问题做出改进。

Qtum白皮书中指出,Qtum的目标是开发一种称为QSCL(Qtum Smart-Contract Language)的智能合约语言。据白皮书阐述,QSCL是一种“专门用于实现形式化验证”的语言。但是除了一篇由白皮书作者之一发表的学术论文之外,QSCL尚未提供更多可参考细节。在该论文中,论文作者提出了自己开发的一种“跨组织协作本体”语言,但是在论文中并未采用QSCL命名。鉴于QSCL资料的匮乏,看上去Qtum应该已不再推进该创意的实现了。

学习资源: 智能合约开发人员指南Qtum

10. Ark

智能合约语言: 待定。

现状: 不活跃

说明:

Ark意在创建一种类似于以太坊的智能合约平台。ARK提供集成的虚拟机,支持用户发布ARK智能合约。Ark与以太坊的唯一差别在于,Ark使用dPoS作为共识机制,加快了交易速度。

学习资源: ACES Ark转以太坊智能合约服务BoldNinja的Medium博客

11. EOS

优点:

  • 使用WASM快速执行合约。
  • 无交易费用。
  • 智能合约语言使用C++,增加了编程的灵活性。

不足:

  • 想要“超越”以太坊,依然需要得到大量的社区支持。

智能合约语言: C++,C

现状: 活跃。

说明:

EOS.IO合约(也称为“应用”)是作为预编译的WebAssembly应用(即WASM)部署到区块链上的。WASM是使用LLVM和Clang从C/C++程序编译得到的,这意味着用户在部署区块链应用中需要C/C++开发技能。尽管EOS.IO可以使用C开发,但是推荐使用EOS.IO C++ API。这些API提供了更强的类型安全,也更易于阅读。

应用结构

EOS.IO应用对用户动作的响应,是围绕事件/动作处理器设计的。例如,如果用户需要将代币转账给另一个用户,那么该事件可能会被发送者、接收者或者应用本身处理或是拒绝。作为应用开发人员,需要决定用户应采取的行动,以及对于各种行动应调用哪些处理器。

为了提高交易的速度,EOS做了一系列的优化,其中包括采用dPoS作为共识机制、并行执行、阶段性执行等。由于EOS具有高可扩展性、无交易费用、使用C++作为智能合约语言等特性,因此它被认为是以太坊的一种很好的替代平台。但是EOS仍然没有得到广泛使用,其作为智能合约平台的许多优缺点尚待实践检验。

学习资源: EOS开发人员文档eosio的Medium博客

12. Neo

优点:

  • 支持高效的合约执行,并且计算代价低廉。

不足:

  • 开发人员社区的规模有限。

智能合约语言: C#,VB.Net,F#,Java,Kotlin,Python,并计划支持C、C++、Golang和JavaScript。

现状: 活跃。

说明:

NEO智能合约2.0版具有确定性、高性能和扩展能力等特性,它支持验证合约、功能合约和应用合约等类型的合约。

从性能上看,NEO使用轻量级的NeoVM虚拟机作为智能合约执行环境。NeoVM启动非常快速,占用资源很少,适用于小型过程等一些小规模的合约。NeoVM还使用了JIT技术,显著地提高了热点合约的静态编译和缓存。NeoVM的设置中考虑了一系列的加密指令,优化了智能合约中加密算法的执行效率。此外,数据操作指令为直接操作数组和复杂数据结构提供了支持。所有上述考虑提高了NEO智能合约2.0版的性能。

NEO智能合约2.0版通过组合高并发、动态分区和低耦合设计实现了可扩展性。低耦合合约过程在NeoVM中执行,并通过交互服务层与外界交流。这样,大量对智能合约功能的升级可以通过交互服务层的API实现。

从语言方面看,NEO智能合约2.0版与以太坊的区别更加直观。不同于以太坊使用的Solidity语言,NEO智能合约可以直接使用几乎所有高层编程语言。先期支持的语言包括了C#、VB.NET、F#、Java和Kotlin等。NEO为这些语言提供了编译器和插件,用于将高层语言编译为NeoVM支持的指令集。首个实现的编译器使用了MSIL(Microsoft Intermediate Language),因此理论上讲,任何可转译为MSIL的.NET言语以及其它一些语言,都可被NEO支持。

尽管如此,NEO并未得到广泛采用。

学习资源: Neo智能合约官方文档NEO的Medium博客

13. NXT

现状: 活跃

说明:

NXT智能合约并非图灵完备的,但是它在创建模板智能合约中设置了一个图灵完备的脚本层。用户可以选择最适用的模板,并通过调整参数创建自身的智能合约。在NXT看来,从这些模板中创建的智能合约可以覆盖绝大多数的业务应用。NXT智能合约易于编码实现,并可确保系统的安全性。

学习资源: NXT智能合约官方网站

14. Nem

优点:

  • 快速,可扩展。

不足:

  • 略为中心化,透明度略低(详见本节“说明”部分)。

智能合约语言: 无特定语言。

现状: 活跃

说明:

可扩展性是NEM去中心化应用的关键。尽管以太坊可以实现最大每秒十五次交易,但据报道NEM可达到每秒数百次交易。安全性和可用性问题是NEM基金会优先考虑的事项。

NEM区块链通过强大的API提供功能。这些API可被所有编程语言调用,而非局限于特定的“智能合约”语言。NEM提出了“链下协议”这一概念,用于表示使用了NEM API的代码。运行代码的用户无需与区块链做任何交互,只要用户愿意,就可以在任一时刻更新。因此,现有的“智能合约”可以修改。代码根据功能上的不同,可能在或多或少的程度上是无缝的。注意,开发人员不能更改代码在链上已完成的事情,例如,反向交易等。但是开发人员可以在不与区块链交互的情况 下修改这段代码,并使合约自此以后按新修改的功能运行。因此从某种意义上说,NEM正在实现的特性在很大程度上不能称之为去中心化的和透明的,只是具有更好的可扩展性(至少目前为止如此),更易于完成任务。

学习资源: Nem智能合约NEM官方Medium博客

15. Waves

智能合约语言: RIDEON

现状: 活跃。

说明:

Waves在智能合约的实现上是做了一些认真考虑的。备受期待的Waves智能合约,其推出过程可划分为两个阶段。第一阶段已经完成,就是4月28日在测试网络中推出了非图灵完备的智能合约。该初始版本使得社区可以先行测试具有账户控制支持等多种特性的非图灵完备合约。只有在这些特性经过完全测试,并正确地在主网应用后,Waves才会继续推出图灵完备的合约。

非图灵完备智能合约考虑到了大部分通用用例。它是一种实现用户潜在需求业务功能的通用且易用的工具,涉及了从不同区块链上的代币交易,到为用户项目或企业控制共享预算以建立精准机制和术语。此外,非图灵完备的智能合约是完全安全的,它确保了用户不会犯错误,因此合约绝不会出错。

多重签名(MultiSig)帐户是Waves智能合约的首个也是最受欢迎的用例之一。另一个有用的应用是代币冻结,即向用户发送一定数量的代币,但确保它在一段时间内是不可转让的且不可使用的。一个显著的用例是用做投资机制,或是在ICO后的团队/合约方付款。

余额管理是帐户控制的进一步应用。用户可能希望每月定期支付,但要确保其帐户余额不低于特定的余额。或者用户可能希望在一个账户中保留固定数量的资金,并将超出固定数额的资金移到另一个独立帐户中。

学习资源: Waves智能合约官方文档智能合约IDEWaves平台

16. Stratis

优点:

  • 基于广为使用的.NET Framwork。
  • Stratis使用了由微软提供的C#软件包,这些软件包经过了全面的验证和测试。

智能合约语言: C#

现状: 活跃

说明:

Stratis智能合约实现的最重要特性,是使用了“真正的”.NET。也就是说,Stratis智能合约使用.NET Core执行。Stratis的完全节点(Full Node)也是用C#编写的,并使用了与Stratis智能合约相同的执行路线。Stratis智能合约不仅使用了C#语法,而是使用了微软提供的经过全面测试和测试的C#包。

由于智能合约的执行必须是确定性的,因此在编写智能合约时无法使用C#语言和.NET Core软件库的全部功能。Stratis智能合约提供了验证工具,用于检查用户编写的智能合约中是否存在非确定性元素。

Stratis中还引入了与以太坊中一样的“瓦斯”概念。

学习资源: Stratis智能合约官方文档Stratisplatform的Medium博客

17. Stellar

优点:

  • 比以太坊智能合约平台更快速,实现代价更低廉,并且更安全。

智能合约语言: 无特定的语言。

现状: 活跃。

说明:

SSC(Stellar智能合约)与以太坊智能合约存在很大的差异。SSC并非图灵完备的,它实现为一种多方协定,并由交易强制执行。下表列出了Stellar和以太坊的对比情况。注意,两者间的最大不同在于代价和确认时间。Stellar网络上单个交易的代价可低至约0.0000002美元!

:以太坊与Stellar智能合约对比。表中内容来源:https://www.stellar.org/blog/using-stellar-for-ico/。

对比项 Stellar   以太坊 
交易确认的时间(中位数) 5秒 3.5分钟
交易费用  交易费用可忽略不计(低至0.00001 XLM,约合0.0000002美元)。计算无需瓦斯费用 交易费用依赖于计算的复杂度、交易速度、以太的法币价值等。一次转账费用的中位数约0.094美元 。
特性 提供基础抽象的软件库,可用于生成复杂行为。参见“Stellar开发人员文档”。 任何所考虑到的特性,但也有不少特性并未虑及。
安全 去中心化网络。任何人可以运行Strellar核心节点,并验证交易。也可以指定验证者以增强安全性。原子交易由以下基本的、描述性操作组成,形成更可追踪的代码,代码缺陷也少。 去中心化网络。任何人可以运行节点并验证交易。没有用于推选验证者的。提供图灵完备的编程能力,生成的代码可追踪性略低,具有很大风险暴露漏洞。

SSC可使用任何已由Stellar社区提供API的语言编写,包括JavaScript、Python、Golang、PHP等。读者可在Github代码库中找到智能合约的PHP例子代码。

SSC表示了使用各种限制连接在一起并执行的交易组合。下面列出了在创建SSC中需要考虑实现的一些限制:

  • 多签名(MultiSig):指定操作需要哪些密钥验证?特定步骤的执行需要哪一方的同意?MultiSig指一个账户发起的交易需要多方的签名。签名权重和阈值表示了各方在所创建签名中的重要性。

  • 批处理/原子性:那些操作必须一并发生或一同失败?要强制所有操作失败或通过需要什么机制?批处理表示在一个交易中包括多个操作。原子性保证了给定的一系列操作一旦提交网络,如果其中一个操作失败,那么该交易中的所有操作都会失败。

  • 序列:如何确定一系列操作的处理顺序?其中的局限性和依赖关系如何?在Stellar网络中,序列以顺序编号表示。在交易操作中使用序列编号,可确保存在其它交易提交执行情况下指定交易不会成功执行。

  • 时间范围:何时可以开始处理一个交易?时间范围指定了一个交易有效的时间区间限制。使用时间范围实现了SSC中的对时间的限制。

学习资源: Stellar智能合约官方文档, Stellar

18. HyperLedger Fabric

优点:

  • 高度模块化的平台。支持用户对性能、扩展性和安全性的高度可控。

不足:

  • 由于合约是部署在节点上而非网络上的,因此用户必须在网络中的每个节点上部署合约。

智能合约语言: GoLangNode.js

现状: 活跃。

说明:

HyperLedger Fabric是HyperLedger家族中的多个项目之一。

Hyperledger Fabric(HLF)将自己的智能合约称为“链码”(ChainCode)。HLF是一种企业联盟链,具有很好的灵活性,非常适用于业务,因为HLF的业务规则经历了近七年的发展。其它大多数区块链在构建时都没有考虑灵活性。

HyperLeger Fabric链码的结构流图。

Hyperledger Fabric本身是使用Go语言编写实现的,因此其智能合约同样也支持Go语言。这有什么优点?Golang是一种非常高效的编程语言,编译快速。

HLF的合约结构非常简单,其中四个最重要的函数是:

  • PutState:创建新的资产(asset),或更新已有资产。
  • GetState:检索资产。
  • GetHistoryForKey:检索更改历史。
  • DelState:“删除”资产。

特别解释一下DelState函数。HLF使用一种状态数据库存储键及对应的值。这不同于组成区块链的区块序列方式。可使用DelState函数从状态数据库中删除一个键及其关联的值。但是,该函数并没有更改区块链中的区块。

和修改键和值的操作将作为交易记录在区块链上一样,键和值的删除同样会作为交易存储在区块链中。

一个键在被删除后,键的操作历史是可以检索的。HLF提供了GetHistoryForKey()函数检索历史,函数返回值中包括IsDeleted标识,标记一个键值是否已经被删除。一个键可以多次创建、删除然后再创建。所有操作历史都可使用GetHistoryForKey()检索。

学习资源: HLF链码官方文档

19. Corda

优点:

  • 专门设计用于金融领域。

不足:

  • 每个Corda的去中心化应用CorDapp是安装在独立节点层面的,而非安装在整个网络层面。

智能合约语言: Java, Kotlin

现状: 活跃。

说明:

CorDapp简介

CorDapp(即Corda去中心化应用)是运行在Corda平台上的去中心化应用。CorDapp的目标是允许所有节点对更新账本达成共识。为实现这一目标,CorDapp定义了工作流。Corda节点的所有者可以通过RPC调用执行工作流。注意:每个CorDapp是安装在独立节点层面的,而非网络层面。

CorDapp的架构。

从结构上看,CorDapps包括下列主要组件:

1. 状态(State),定义了达成共识的事实。

  • 状态表示了账本上的事实。
  • 要更改状态,首先将当前状态作为历史,然后创建一个更新的状态。

每个节点都具有一个保险存储,用于存储节点本身的所有相关状态。

2. 合约(Contract),定义了组成有效账本更改的情况。

  • 一个有效交易的输入和输出状态必须被合约接受。
  • 合约是使用Java或Koltin等JVM编程语言编写的。

  • 合约的执行是确定性的,合约只根据交易的内容确定是否接受该交易。

  • 在一些情况下,交易的有效性取决于一些外部信息,例如兑换率等。在这些情况下,需要先知(Oracle)的参与。事实(fact)可作为命令组成部分而包括在交易中。而先知就是一种服务,它只签名那些其中包括的事实为真的交易。

3. 服务(Service),提供节点中长存的功能。

  • 节点是一种JVM运行时,提供运行Corda软件中的唯一网络标识。
  • 节点提供两种与外界交换的接口:
    • 网络层:用于与其它节点交互。
    • RPC:用于与其他节点所有者交互。

Corda架构中的核心元素包括:

  • 持久层,用于存储数据。
  • 网络接口,用于与其它节点的交互。
  • RPC接口,用于与其他节点所有者的交互。
  • 服务中枢节点,支持节点工作流调用节点的其它服务。
  • CorDapp接口和提供者。通过安装CorDapp可实现节点的扩展。

5. 序列化白名单(Serialisation whitelistes)

用于限制节点可从链上接收的类型。

编写CorDapp

可使用Java或Kotlin编写CorDapps,也可以混用两种语言编写。每个CorDapp组件均作为Corda软件库的子类或接口,实现为JVM类。Corda软件库的类型包括:

  • 工作流子类FlowLogic;
  • 状态的接口实现ContractState;
  • 合约的接口实现Contract;
  • 服务子类SingletonSerializationToken。

学习资源: Corda智能合约官方文档Corda团队的Medium博客

20. Neblio

智能合约语言: C++,Python,Go,JS,Ruby,.NET,Java,Node.js。

现状: 不活跃。

说明:

NTP1(即Neblio代币协议第一版,Neblio Token Protocol-1)支持根据指导或限制代币交易协议中使用的一组规则而创建的智能合约。例如,代币发行方可以为代币交易设置交易费用结构,并将交易费用置入指定的账户中。代币的锁定和到期规则可用于将代币移动到指定账户,或是用于在一定的时间或特定日期后使代币完全失效。规则还可用于生成限制代币可转移到账户的合同,或是限制允许生成新代币的账户(如果存在的话)。NTP1支持多种智能合约编写语言,原因在于其每个节点内置了RESTful API服务器,用于处理所有的API调用和响应,实现与Neblio网络和区块链的交互。

学习资源: Nebilo官方文档

21. Viacoin

智能合约语言: Java

现状: 活跃。

说明:

Viacoin使用RSK(Rootstock)支持其智能合约功能,并与以太坊兼容。

Rootstock是一种双向锚定(Two-way Peg)的智能合约平台。Rootstock运行一种称为“Rootstock虚拟机”的图灵完备虚拟机,该虚拟机也是与EVM兼容的,并支持运行Solidity编译的智能合约。

Viacoin即将发布0.15.0核心版,其中将实现默克尔抽象语法树(MAST,Merkelized Abstract Syntax Trees)。MAST结构非常简单,支持更小规模的交易,因此更便于智能合约的执行。0.15.0版对实现RSK智能合约非常关键,将为Viacoin提供类似于以太坊的智能合约。RSK近期发布了比特币智能合约平台的首个Beta版。

学习资源: Viacoin的Github代码库

Viacoin Github | Viacoin Reddit | Viacoin Telegram

22. Cardano

优点:

  • 尤其注重以最简单的方式确保智能合约在行为设计上不存在潜在的漏洞。

智能合约语言: Solidity,Plutus

现状: 活跃

说明:

Cardano的智能合约平台称为CCL(即Cardano计算层,Cardano Computation Layer)。CCL尤其注重以最简单的方式确保智能合约在行为设计上不存在潜在的漏洞。CCL包括两个层面,一个层面是形式化指定的虚拟机和语言框架,另一个层面是形式化指定的语言,便于自动验证人类可读的智能合约代码。

Cardano智能合约和虚拟机

CCL的底层称为IELE。IELE提供了虚拟机和通用语言框架实现,其中虚拟机是设计用于简化形式化验证工具的构建,语言框架则用于将智能合约从高层语言转译为可执行指令。IELE的研发是由运行时验证(Runtime Verification)的提出者、UIUC教授Grigore Rosu领导的,并受到IOHK的资助。为构建更安全和高效的虚拟机,Rosu教授的团队正在将他们对KEVMKLLVM的最新研究成果应用于其中。其中,KEVM是EVM使用的一种K框架形式化语义,KLLVM是LLVM中使用的一种K框架形式化语义。

不同于EVM这样基于堆栈的虚拟机,IELE将实现为LLVM这样基于注册器(register-based)的虚拟机。IELE将支持无限数量的注册器,并支持无界整数。IELE避免了使用无界堆栈,因此也无需担心堆栈或算术溢出,这显著地简化了智能合约的定义和验证。和以太坊类似,IELE也使用瓦斯表示资源使用,并防止出现DoS工具。这避免了在形式化验证中出现一些被研究团队认为是“棘手但可控”的挑战性问题。IELE使用K框架简化了验证智能合约匹配规范的自动化工具的开发,这使得IELE支持使用任何在K框架中具有形式化语义的编程语言编写智能合约。

Simon就是其中的一种编程语言。Simon是在Cardano的愿景论文提出的一种高度约束、特定于领域的交易语言,它给出了一组准确定义的基本金融交易原语。这些原语可组合创建更复杂并可验证的合约。关于Simon的介绍性内容不多,但是据称Simon是受到Simon Peyton Jones及其研究同事撰写的“Composing contracts: an adventure in financial engineering”一文的启发。

Simon Peyton Jones是Haskell的主要设计者之一。Haskell是一种静态类型的完全函数化语言,通常用于实现一些存在运行时软件缺陷代价很高问题的应用,并已用于实现Ouroboros。Haskell的设计天然适用于实现可在软件开发过程的早期发现并消除软件缺陷的自动验证工具。ACM Fellow及Haskell的另一位设计者Phil Wadler也出任了IOHK的编程语言的指导专家。因此很自然,Cardano的主要高层通用智能合约语言Plutus中集成了Haskell的大量底层机制。

Plutus是以一种静态类型的函数式编程语言,它具有类似于Haskell的人类可读语法。和Haskell一样,Plutus也将转译为一种更简单的语言Plutus Core,简化了形式化验证。形式化验证工具有助于开发人员推理合约,并验证智能合约行为的特定属性。这些验证工作是一些强大的工具,可用于标出并消除一些存在于合约中漏洞,其中包括非法输入处理、类型不匹配、不明显的非预期代码路径、对作用范围的模糊认识、输入错误、溢出等。例如,通过对某个属性的验证,表明不存在可以更改合同所有者的代码路径,这将防止了出现导致对Parity多签名(Multisig)钱包发出两次攻击的漏洞。现在回头看来,显然该特定属性是有必要的。因此,一些重要的属性完全有可能并未包括在正式规范之中,只有在被一些漏洞利用后才发现其重要性。由此,虽然形式化验证是一种非常强大的工具,但它只能在创建规范时起作用,体现人们当时的全盘考虑情况。

Cardano有计划支持包括Solidity在内的更多高层语言。但是,它只支持“将Solidity用于低保证性的应用,而将Plutus用于需要形式化验证的高保证性应用”。虽然很难想象会有智能合约编写者考虑使用低保证性应用,但是Cardano提供对Solhere的支持,这使得以太坊开发人员和一些已有的合约更易于迁移到Cardano。然而,促使开发人员和合约迁移到Cardano的主要原因并非在于其对Solidity的支持,而是在于Cardano减少了将资金置于于风险中的漏洞。如果经实践验证,IELE、Plutus及其支持验证工具开发的智能合约可避免出现那些困扰Solidity代码的漏洞类型,那么对于那些需要使用智能合约对所控资金获取更好安全性的情况(应该说所有的智能合约均是如此),Cardano无疑是首选平台。

学习资源: Cardano官方文档

23. Tezos

优点:

  • 便于实现链上代码的形式化验证。

智能合约语言: Michelson

现状: 活跃

说明:

Tezos计划通过一种称为“Michelson”的新智能合约语言实现极大地提升安全性。Michelson在设计上聚焦于简化对链代码的形式验证。不同于Solidity,Michelson不编译生成任何输出。它是一种底层的、基于堆栈的、图灵完备的编程语言,由Tezos虚拟机直接解释执行。因此从技术上看,Michelson比Solidity更适合于EVM字节码。Michelson中还包括了一些高级结构,例如Map、集合、Lambdas表达式、加密原语,以及一些专用于合约的操作,这使得开发人员更易于阅读和编写。Michelson是一种纯函数式、强类型和静态类型检查的语言,它简化了构造正确性证明,并消除了多种会破坏Solidity合约的漏洞。

正确性证明并不能给出不会发生任何不良事件的通用证明,而是可以证明程序可满足特定规范中所列举的所有断言。因此,如果由开发人员创建的规范中所包含的断言指定了仅有授权用户才可以更改合约所有者,那么验证者将在Parity多签名钱包部署之前捕获其中的漏洞。但是出于效率上的考虑,开发人员需要考虑断言(回顾前文,这是十分明显的),并在部署代码遭受攻击之前将断言加入到规范中。

虽然人工分析和推理在预防漏洞上的作用是不可替代的,但形式验证也可以作为一种强大的补充工具。形式验证适用于那些漏洞可能会带来灾难性后果的情况,例如,控制大量资产的飞机软件和智能合约。以太坊社区也认识到了这一点,并且开展了多个项目去研究智能合约的形式验证和以太坊虚拟机本身。以太坊社区也正在研究BambooViper等新的编程语言,这些语言更适合于形式验证,而且更受限制,可使编译器而不是黑客发现许多漏洞。由于这些语言也将编译为EVM代码,因此有必要对高层代码以及其所生成的EVM字节码(和/或生成字节码的编译器)做形式验证。与以太坊不同,Michelson 直接由Tezos虚拟机解释,因此只需要对合约代码做正确性证明。

Tezos区块链启动后,Michelson将会提供一个编程环境。其中开发人员无需具备专家级能力,就可以开发比Solidity更安全的智能合约。目前,只有少数精通Michelson的编程人员。此外,Michelson作为一种基于堆栈的新语言,其中还存在一些编程人员并不习惯的功能。因此,Michelson的学习曲线可能会成为阻碍其被开发人员采纳的一个障碍。尽管如此,Michelson为开发更高层级的、对开发人员更友好的函数式语言提供了基础,促进了“全栈式”形式验证的实现。目前,还有一种称为“Liquidity”的编程语言正在积极的研发中。该语言提供类似OCaml的语法,并可与Michelson相互转码(transpile)。

在以太坊中,正在研究一些补充性的可扩展技术,例如分片支付通道侧链链下计算等。虽然Tezos认识到微支付需要支付渠道等链下机制,但在他们看来,要实现大规模链上可扩展性的提升,其最佳途径并非分片等技术,而是在于递归SNARK技术。SNARK可为任意复杂度的交易提供加密证明,并递归地为交易证明块提供单一的证据,从而使大量交易能够在廉价硬件上得到快速验证。据Breitman介绍,这项技术可以完全消除对瓦斯限制的需求,并允许用户在不到一秒的时间内完成整个区块链的同步,从而无需考虑中心化和吞吐量间的权衡。采纳SNARK的两个主要障碍是产生递归证明的计算成本和对可信设置的要求。但是最新的进展表明,这种大规模扩展的方法可能很快就会投入实用。

学习资源: Tezos Michelson的文档Tezos的Medium博客

24. DFINITY

智能合约语言: Solidity

现状: 不活跃

说明:

DFINITY标榜自己是以太坊的“疯狂姐妹”,以比喻二者在基因上的相近性。但是DFINITY更专注于性能,并使用了基于神经元运作的治理模式。

DFINITY的理念认为,一些合约和去中心化应用可能更适合于采用由算法治理的平台,而非以太坊这样的“代码就是法律”类型的平台。DFINITY项目当前处于原型系统与可用于生产环境这两者之间的状态。在编写DFINITY项目时,尚不存在支持部署智能合约的公有链。

区块链神经系统(BNS,Blockchain Nervous System)和高性能与可扩展性是DFINITY的两大卖点。但是用户要理解DFINITY智能合约,必须首先理解“链上治理”(on-chain governance)机制。

使用DFINITY的链上治理机制,无需对网络做硬分叉(Hard Fork),即可实现升级协议等功能。这在某种程度上类似于Tezos的理念,但是DFINITY使用的是EVM和Solidity。因此,任何可在以太坊上部署的协议,也可部署在DFINITY上。

那些在“神经元”上“下注”自己代币的用户,将会根据投票的份额获得到相应的投票能力。BNS表示了网络中的所有神经元。任何人可以向网络提交提案(Proposal),而投注了代币的用户可以对提案进行投票。提案可以是:

  • 冻结智能合约/去中心化应用:网络可能会冻结一些用于违法行为的去中心化应用。

  • 可撤回交易:一旦在智能合约中出现软件缺陷,会导致上百万美元失窃或损失(例如众所周知的DAO和Parity事故),网络可以通过投票返还损失的资金,无需对网络做硬分叉。

  • 编辑智能合约代码:假定一个DApp已发布到网络上,并被上百万用户的使用。一旦在应用中发现软件缺陷,如果是在以太坊网络上,那么人们对于修复该DApp束手无策,唯一的做法是取出代码并做修复,然后发布全新的智能合约。但是在DFINITY中,人们可以通过向网络提交提案,并在得到社区投票通过后对软件缺陷进行修复。要在以太坊上实现同样的智能合约修复,硬分叉是唯一的手段。

  • 升级协议:假定比特币采纳了其后提出的各种代币的全部特性。如果比特币只是要为私有交易、智能合约等添加一些新功能,那么是否完全没有必要为Zcash(大零币)、以太坊等创建新的代币。这是DFINITY潜在的强大之处。BNS可以在不需要硬分叉的情况下实现协议升级,而比特币则无法做到这一点。原因主要归结为两个方面。第一,人们无法就哪些特性应该添加到比特币中达成协议;第二,添加上述新协议特性只能通过硬分叉实现。而DFINITY解决了上述问题。

学习资源: DFINITY官方文档Dominic Williams的Medium博客

25. BOSCoin

智能合约语言: Web本体语言

现状: 不活跃

说明:

不同于前文提及的大多数智能合约,BOSCoin的受信合约为实现可判断特性,在设计上使用了Web本体语言(OWL,Ontology Web Language),并采用了自动机理论。下面详细介绍其中的各个组件,以及组件间的相互作用机制。

OWL

OWL即Web本体语言,它是基于W3C(万维网联盟,World Wide Web Consortium)的语义Web语言提出的。OWL组件在BOS平台受信合约中用于解释智能合约中的语言结构,包括编码和句子字符串等。

W3C是一个为支持万维网长期发展而提出Web数据开放标准的国际组织。OWL的职责之一就是创建了用于表示事物及事物间丰富而复杂关系的OWL语言。

OWL具有五个主要组件:

  • 关联数据:表示了数据库用于理解语言的属性,即日期、标题、编号和特性等。
  • 词汇表:将语言分解为基础定义,即概念和关系。
  • 查询:用于从数据库检索信息的工具。
  • 推理:用于处理并解释所收集数据的推理器,即通过规则,或合并来自多个数据源的各种数据。
  • 垂直应用:这是指W3C的业务风险部门。它通过与各个行业的合作,改进研发及协作。其具体内容与本文无关。

BOS平台将通过W3C的语义Web使用OWL。本体是形式化的术语词汇表,它定义了描述自身与本体中其它术语之间的关系。OWL是应用用于处理信息的工具(相比起人工处理),支持系统解释词汇表的含义。其中,信息可以是标准的文本句子或代码。使用OWL的优点在于可以从OWL存储库所包含的众多本体中提供信息。

时间自动机语言(TAL,Timed Automata Language)

BOS平台受信合约上的智能合约需要验证,这是由TAL担当BOS平台的验证代理实现的。TAL源自于有限状态自动机理论,并在功能中添加了时间上的考虑。因此,我们最好首先了解自动机理论。幸运的是,对此有多种出版物。其中,斯坦福大学给出了如下的很好描述:

“(自动机)是一种执行特定处理的自动化过程……自动机理论针对被称为“自动机”的单机中的计算逻辑。计算机科学家通过自动机理论理解机器的计算功能,并解决问题。更重要的是,自动机理论提出了哪些功能可定义为可计算的,哪些问题可定义为可判定的。”——斯坦福大学教程

如上所述,有限状态自动机是自动机理论的扩展。有限状态自动机是一种建模有限数据逻辑的工具,用于理解自动机最终的生成状态。下面给出一个实际例子。该例子建模了一个自动推拉门,其中左图表示了门,右图表示了状态。

滑动门示意图。来自于Miachael Sipser所著的《计算理论导引(2006年版)》(“Introduction to Computer Theory”)一书。

滑动门的状态图。来自于Miachael Sipser所著的《计算理论导引(2006年版)》(“Introduction to Computer Theory”)一书。

在上例模型中,圆圈表示状态,箭头表示状态转移。图中最左边的箭头表示开始状态。系统(即本例中的滑动门)的状态有两种,开门(OPEN)和关门(CLOSED)。对于本例而言,输出情况如下表所列:

滑动门状态表

如果系统经历了如下事件序列:“FRONT,REAR,NEITHER,FRONT,BOTH,NEITHER,REAR,NEITHER”,那么状态转移如下图所示:

滑动门的状态转移

时间自动机(TA,Timed Automata)将时间引入了自动机的输入。台灯的状态就是一个使用系统时钟的很好示例。如果在一定时间内按下开关,台灯将会变暗,而不是仅打开或关闭。台灯的状态图如下所示:

调节台灯状态图。例子来自于澳大利亚新南威尔士大学Ansgar Fehnker的COMP4151课程第11a讲“算法验证”。

上面给出的调节台灯状态图中,存在三种状态,即Off、Dimmed和Bright。状态转换是由按钮开关启动的。如果处于“Off”状态,那么再次按下开关,台灯状态更改为“Dimmed”。如果在系统内部时钟的一个时间度量间隔(例如,一秒)内按下开关,台灯状态变为“Bright”。如果台灯处于“Bright”状态,或是在上次按下开关后一个时间度量间隔内再次按下开关,那么台灯状态将变为“Off”。

将区块链、OWL和TAL组合在一起

OWL、TAL组合构成了受信合约的基础。当前智能合约是编码实现的,OWL组件将解释代码字符串的结构,而TAL将建模并确认智能合约的整体逻辑。进而,区块链存储了OWL和TAL的来源。

由此,我们可以在受信合约验证和执行之前,确保合约是可判断的,进而确保了系统的整体性。

学习资源: BOScoin

26. Agoras Tauchain

现状: 不活跃。

说明:

要了解Agoras,首先需要介绍Tau链的原理。Tau链生态系统概括了很多中心化和去中心化对等网络,其中包括一些区块链企业。Tau链具有多种不同的用例,从软件开发到游戏,乃至去中心化存储。Agoras是一种运行在Tau链上的应用,它提供一种聚焦于点对点合约的智能货币。

Agoras聚焦于点对点智能合约,是一种值得企业考虑的解决方案。企业通常希望能保持私密性,考虑包括私密性交易的智能合约足以实现这一目标。Agoras希望首要关注的是有意义的智能合约,这些协议将始终遵循设定的设置和要求,对任何一方都不存在任何意外。

学习资源: Agoras blog

27. Burst

优点:

  • 图灵完备的智能合约。

不足:

  • 智能合约交易费用高。

智能合约实现: Automated Technologies (C/C++)

现状: 活跃。

说明:

Burst是首个在现实环境中以自动化交易(AT,Automated Transaction)形式实现工作机制、图灵完备智能合约的加密货币。下图给出了从创建合约到最终状态更改的流程。

Burst智能合约的生命周期

由于一些问题的存在。Burst不能跟上其它平台的发展。在2018年4月4日的一次访谈中指出:

使用Burst AT的主要问题在于,矿工运行每个操作代码(即一行代码)都需要一个爆裂币(BRUST)。这使得即便运行从智能合约本身返回一个BRUST这样非常简单的合约,也需要花费大约二十个BRUST。如果合约的运行成本能降低到每个操作码需0.001个BRUST,那么在引入编译器等技术后,该平台才可以与以太坊等其它平台一争高下。

学习资源: BurstAT的wiki页面Burstcoin_dev的Medium博客

28. iOlite

优点:

  • 使用FAE(快速适用引擎,Fast Adaptation Engine)。FAE可以将自然语言或其它所需编程语言转译为智能合约代码,进而扩展了智能合约的使用人群。

现状: 活跃。

说明:

iOlite是一种聚焦于让智能合约技术为更广泛大众采纳的产品,它提供了一种可实现理解自然语言并将其编译为智能合约代码的引擎。对于那些不希望花费时间去学习而希望能快速启动智能合约应用的用户而言,iOlite是一种理想的解决方案。

iOlite的用例

iOlite是基于斯坦福大学的一项研究发展而来。这项研究提出的FAE技术适用于将自然语言及其它一些所需编程语言转译为智能合约代码。FAE并非直接将输入语言转译为代码,而是取决于贡献者(即一些智能合约的专家)是否定义了一些包含语言表达式的结构。进一步,这些结构将用于所编写的智能合约代码中。这使得引擎可以浏览这些结构,找出可编译为所需智能合约的正确表达式。一旦某个结构得以使用,贡献者将得到相应的iOlite代币作为奖励。

可以看到,iOlite FAE的成功依赖于社区的贡献。FAE通过使用机器学习技术帮助简化新结构的学习和采纳。

iOlite实验室当前正聚焦于最为广泛使用的Solidity以太坊智能合约。

iOlite团队的Travis Byrne介绍了哪些语言可用于创建智能合约。“这不仅意味着Python、C、JavaScript等正则语言的编程人员可立即使用自身现有的技能编写智能合约,而且意味着即便是没有编程技能的普通人,也可以使用英语等自然语言上手开发智能合约。iOlite正在拓展创建智能合约的技术学习疆界”

学习资源: iOlite官方指南iOlite的Medium博客

iOlite Reddit | iOlite Github | iOlite Telegram

29. ByteBall

智能合约语言: 声明式语言。

现状: 活跃

说明:

一般来说,DAG具有更高的通量,更好的可扩展性,但是实现此需要付出一些代价。由于链的类树形结构,Byteball等DAG平台不能像以太坊那样很好地支持智能合约。

图片来自于DAG区块链白皮书。

Byteball的DAG结构

对于以太坊等区块链,链的结构是线性的,开发人员可以定义交易的顺序。但是DAG并未过多考虑顺序问题,只是关注交易是否有效,是否会产生冲突。因此,DAG适用于哪些并不涉及交易顺序问题的交易。

Byteball与其它DAG的不同之处在于,它实现了Oracle去解决交易顺序问题。Oracle的作用是追踪所有交易的执行,维护网络中所有交易的全局顺序。这样通过使用Oracle,可以实现需要准确交易执行顺序的智能合约。

此外,用户无需具备开发人员技能才能理解或编写合约,也无需唯开发人员马首是瞻。每个用户都可以理解合约的意思,正如正式法律合约一样。

下图显示了Byteball中智能合约的形式:

构建一个Byteball智能合约

这使得Byteball智能合约潜在具有更广泛的前景,可跨越开发人员社区,让更广泛的大众使用。

学习资源: Byteball白皮书Byteball的Medium博客

Byteball Reddit | Byteball Github | Byteball Telegram

30. XTRABYTES

智能合约语言: 无特定语言。

现状: 不活跃。

说明:

DApp开发人员可以通过XTRABYTES的分布式命令消息API(DICOM API,Distributed Command Message API)访问其核心功能和数据。DICOM API使得开发人员可使用多种编程语言实现DApp代码。我们称此为“代码可感知”。开发人员只需在代码中调用API函数。这使得各类开发人员都可快速上手XTRABYTES DApp的开发。

学习资源: XTRABYTES的Medium博客XTRABYTES™ (XBY)的Medium博客

Xtrabytes Reddit | Xtrabytes Github |Xtrabytes Telegram

31. PolkaDot

现状: 不活跃。

说明:

可并行链(Parachain)是区块链的一种简化形式,它将安全付诸于由“中继链”提供,而非自身提供。中继链的名称来自于它不仅为所附着的可并行链提供安全,而且为二者间的安全消息传递提供保证。可并行链的一个关键特性是所执行的计算是天生独立的。在确定哪些交易间会产生“冲突”时,使用图灵完备智能合约的完全通用系统会存在问题,这意味着那些潜在可并行的交易通常是顺序执行的,进而浪费了有价值的计算时间。在可并行链之间划分明显界限,这使得我们可以全部一次性执行各链上的交易,而不用担心交易间会产生冲突。如果有十条可并行链,那么可以使用同一安全源执行十倍的工作。

Polkadot不仅支持直接连接链,而且支持完全托管但可连接链。可并行链,或是使用更多网络共识机制获得共识的原生支持链,将可从Polkadot的安全池机制中获益。安全池还支持每个可并行链(以及中继链)使用整个网络的验证者,向整个网络提供安全。这意味着每个可并行链将从整个生态系统的网络效应中受益。如果可并行链与Polkadot兼容,那么它就可以使用Polkadot共识机制的安全。

Parachain和Bridge生态系统

对于其它具有自身状态历史和共识方法的现有项目,Bridge担当支持这些链连接到Polkadot的连接层。Bridge实现将具有智能合约能力的区块链连接到Polkadot,而无需对这些链的原生协议做任何修改。Parity Technologies最初的工作就聚焦于使用Bridge连接两个类以太坊链。例如,它可以在以太坊的PoW链和以太坊的PoA链之间(即两个链之间的账户)相互交换价值。

比特币脚本和EVM这类模型的核心设计目标是互操作性,但是使用这类模型的系统需要实现各个部分而支付不断增长的执行代价,其中不仅仅是那些设计上可被其它运行在同一网络上的其它系统可访问访问的部分。与之相对比,Polkadot的可并行链通过异步消息传递实现相互通信,这样只需在可并行链的接触边界上支付数据唯一性的代价。

注意,创建一种提供完全通用、图灵完备智能合约框架的可并行链是完全可能的。一个简单的例子是EVM提供的可并行链。出于上述原因,在该可并行链上实现的合约不仅将受益于以太坊智能合约的通用性和互操作性,而且也会受限于这些特性。首要差异在于它完全是主动要求加入(opt-in)的。Polkadot的最强大的特性之一,就是在考虑了具备集成一些关注解决方案的能力的同时,保持了完全通用框架的可选择性。

学习资源: PolkaDot的Medium博客, Polkadot

Polkadot Reddit | Polkadot GitHub | Pokadot Telegram

32. Radix

智能合约语言: JavaScript,TypeScript。

现状: 不活跃。

说明:

Scrypto是一种状态机,它为运行于其上的虚拟机提供安全和功能抽象。如可能,Scrypto将为虚拟机提供接口,进而执行任何语言编写的脚本。

规划实现的JavaScript模块,是一种与Scrypto状态机交互的虚拟机。

学习资源: Radix开发人员入门Radix DLT的Medium博客

Radix Reddit | Radix Github | Radix Telegram

33. Exonum

智能合约语言: Rust,并正在考虑与Java的绑定。

现状: 活跃。

说明:

“服务”(Service)实现了指定用于Exonum应用的业务逻辑。服务是Exonum框架的主要扩展点,它具有与其它区块链中智能合约同样的作用。

Exonum服务的架构

开发Exonum服务类似于Web或企业平台中的开发服务,二者具有相同的主要组件,分别为:

端点(Endpoints)

一个服务包括了一组实现为REST API的端点。服务使用端点与外部世界交流。Exonum框架担当中间件,在服务间分发请求,并对服务开发人员提供抽象的数据序列化/去序列化、访问控制以及其它常见中间件任务。

Exonmu具有三种类型的服务端点:

  • 对应于REST中PUT/POST请求的交易;
  • 对应于REST中GET请求的读取请求;
  • 代币管理和维护端点的私有API,通常外部世界不可访问。

Exonum智能合约与区块链使用的其它模型的关键区别如下:

  • 受限的环境:Exonum只执行预定义的请求类型,不允许执行从客户接收的非信任代码。这导致更受控的环境,易于实现智能合约的安全性。
  • 无隔离:请求处理与系统核心在同一执行环境中处理。这对于提高性能非常有好处,但存在一定的安全危险。
  • 本地状态。Exonum服务可能会定义特定于运行服务节点的本地状态。本地状态可用于管理一些保密信息,例如私钥等。本地状态可使用私有服务端点管理。通过使用本地状态,服务比其它区块链中的服务更加活跃。例如,锚点服务使用本地状态完全自动化锚点交易签名。
  • 交易分割处理。交易验证是交易处理中的一个独立步骤。它是在接收到交易后并在交易应用到区块链状态之前立刻执行。验证可能包括认证检查(例如,验证交易签名),以及其它对交易内容的结构检查。同时,交易验证不能访问当前区块链状态。

学习资源: Exonum官方文档Bitfury团队的Medium博客

Exonum GitHub | Exonum Reddit | Exonum Telegram

34. Universa

智能合约语言: Javascript。

现状: 活跃。

说明:

为了理解Universa智能合约的工作机制,下面我们分各个部分介绍。

参与方(Party)

Universa的每位参与者称为“参与方”(Party)。参与方可以完全匿名,或者是标识的实体。有多种方法标识一个参与方。在根合约中,参与方可如下标识:

  • 使用合约内容中的公钥。例如,发布者或属主。
  • 使用匿名公钥ID,支持识别参与方的公钥,并在首次使用之前无需公开。例如,匿名购买。

参与方可以在合约记录中添加自身的其它细节,例如名字、昵称、社会保险或护照号码等。

合约内容

1.组成部分

  • 定义。定义在修改中是不可变的,其中包括发布者、发布时间戳、许可(一些许可也可以更改状态)和创建者希望不可更改的所有内容。
  • 状态。状态是在修改中可以更改的可变部分,其中包括修改编号、创建者、时间戳、指向前后修改的引用、可更改角色,在一些情况下还包括许可和任何可变客户数据。
  • 附件。在定义或状态中医签名引用形式提及的所有文件。

Universa网络知道定义和状态,其余部分从不发送到网络。附件是非常重要的部分,其中常常包含敏感的私有信息。尽管该信息在合约状态和定义中被签名引用,因此受到很好的保护,但是最好的保护方式是不将附件传递到Universa网络中。

由此,合约整体只在各涉及的参与方间交换,可使用任何适用的传递方式,例如电子邮件、聊天软件、云、USB Flash等。附件的不可变性由合约中的签名引用保证,进而被参与方签名,并在网络上验证通过。

信任链的工作机制为:

  1. Universa网络批准合约的修改,提供注册时间,确保状态和定义的不可变性。
  2. 对修改签名的参与方通过签名确认状态和定义的正确性,处理所有提及的附件并确认同意。
  3. 状态和定义中的经签名的引用确保了存储在客户存储某次中的相应附件的不可变性。

2. 脚本

没有脚本,就无法体现智能合约的智能。Universa智能合约支持以附件形式添加JavaScript脚本。脚本可以完全自动化地实现客户需要执行的操作、生成新的合约并处理事件。第三代Universa客户甚至可以使用GUI客户端运行自治Web服务或Web应用,以GUI应用方式与用户接口一并执行工作流自动化。Universa的目标是借助于集成Universa平台和服务,支持智能合约实现全功能应用。

Universa也可使用Coffeescript等其它一些可编译为纯JavaScript的语言,甚至可作为附件集成到合约中。但是在执行时,只会使用经签名的编译后JavaScript集合。

脚本被客户软件在客户环境中执行。Universa网络甚至看不到脚本,但是它总是会检查结果,以确认与合约定义和状态的一致性。这意味着,即便脚本会执行一些禁止行为,网络也不会接受执行结果。通常,更简单的方法并非尝试检查脚本源中隐含的漏洞,而是在知道一些许可和条件的情况下限制所允许执行的操作。相比脚本而言,许可DSL更干净并直接。由Univerda远程执行的许可检查也不会被脚本所跳过,检查是本地执行的,不会被传递到Univerda节点上。

脚本的一般执行循环为:脚本被用户或一些事件激活,或是在服务器环境中激活,例如输入合约,或集成比特币服务的支付通知等。进而执行脚本,修改其状态(每个脚本具有可操作的本地存储,并可以访问合约链),创建新的Universa修改并批准,生成合约。如果有必要,合约将通过任何连接通信工具发送到网络。事实上,脚本允许使用HTTPS API连接任何网络。

3. 表示

智能合约是对象(数据结构或哈希)的一种树结构,可使用任何现代格式存储,例如JSON、YAML、XML、BOSS等任何可保存数组、结构、字符串和数字的格式。基于YAML的DSL表示通常用于新合约模板。在网络中,合约通常以BOSS格式序列化,因为这种方式是保存二进制数据的最好方式,在Universa中的键、签名和二进制ID等中广泛使用。

封装(capsule)

每个智能合约被打包为一种受严格保护的、经签名的容器,称为“封装”(Capsule)。封装由封装体和一组扩展签名组成。封装体中打包了二进制合约内容,以及一组扩展签名。每个扩展签名对封装体和属主类型、指纹和时间戳做签名,可以使用很多电子签名类型。相应的公钥(或其匿名ID)通常在合约体中,这样系统可以检查所提及的密钥是否用于对合约签名。

合约的封装包含了加密数据,以此作为Universa网络所知道的合约部分。封装数据中不应该包括任何敏感的私有数据,并必须作为经签名的引用附在合约中(例如,保存在外部文件中),永远不会传递到Univerda网络上。这种设计不仅降低了无必要的网络流量,而且保护了私有信息。

学习资源: Universa官方文档Universa的Medium博客

Universa Reddit | Universa GitHub | Universa Telegram

35. Urbit

智能合约语言: Hoon。

现状: 活跃

说明:

Urbit是个人服务器的一种端到端的安全网络,构建于一种完全重建(clean-slate)的系统软件堆栈之上。它使用以太坊实现其功能。

可以将Urbit简单地看成是一种“个人区块链”。和区块链一样,Urbit也是一种确定性的虚拟计算机。其语义定义为将其事件历史映射为当前状态的生命周期冻结函数。不同于区块链,Urbit实例是一个用于单用户的私有计算机,而非所有人均可使用的公有记录。

Urbit的生命周期函数实现为:一个称为“Nock”的微解释器(nano-interpreter)将一种称为“Hoon”的函数式类型语言编译为Nock。使用Hoon编写一种事件驱动的操作系统Arvo。Nock上的所有事物均可在Urbit自身的中继包网络Ames上升级。在使用测试密钥的情况下,Ames是活跃并稳定的。

Urbit解释器可运行于任何Unix系统上。Urbit服务器是一种单层存储,它可以是数据库,也可以是应用引擎。每个Urbit事件是一个交易。Urbit在语义上是冻结的,不能调用Unix。

用户的Urbit实例就是用户的个人服务器。Urbit最终将包含并管理整个数字化生命周期。基于安全或隐私上的权衡考虑,用户可以选择是在家,还是在云上计算。但是,Urbit的形式化语义使得交付比迁移更为棘手,因此用户不应锁定于使用某个计算提供商。

学习资源: Urbit官方文档Urbit主页

Urbit GitHub | Urbit Reddit | Urbit Telegram

36. Soil

优点:

与以太坊一致。

不足:

与以太坊一致。

智能合约语言: Solidity。

现状: 活跃。

说明: SOILCoin是一种与以太坊并行的加密货币,它使用了智能合约和DApp,运行在由使用Dagger算法的区块链技术提供安全的“全球计算网络”上。这种EVM是由一种称为“SOIL”的数字代币推动的。SOIL通过PoW挖矿获得,并充当在SOIL币网络上运行计算过程的瓦斯气体。

学习资源: Soil文档

37. Expanse

优点:

与以太坊一致。

不足:

与以太坊一致。

智能合约语言: Solidity。

现状: 活跃。

说明: Expanse被认为是以太坊的首个稳定分支实现,其智能合约实现与以太坊相同。

学习资源: CryptoZombiesSolidity文档OpenZeppelin

38. Ubiq

优点:

与以太坊一致。

不足:

与以太坊一致。

智能合约语言: Solidity,

现状: 活跃,

说明: Ubiq是以太坊的一个分支实现,并做了部分改进。这些改进并未影响以太坊的智能合约实现。

学习资源: CryptoZombiesSolidity文档OpenZeppelinAlex Sterk的Medium博客

39. Ethereum Classic

优点:

与以太坊一致。

不足:

与以太坊一致。

智能合约语言: Solidity。

现状: 活跃。

说明: Ethereum Classic是以太坊的一个分支实现,其智能合约与以太坊相同。

学习资源: CryptoZombiesSolidity文档OpenZeppelin

40. Monax

优点:

与以太坊一致。

不足:

与以太坊一致。

智能合约语言: Solidity

现状: 活跃

说明: Monax重新实现了EVM,并提供了SDK。

学习资源: Monax docs

其它一些智能合约平台

其中还包括OmniLayer(dexx)、Ardor等。本文不再一一列举。

结束语

内容到此为止。如果读者发现其中有所遗漏,或是存在错误,欢迎在评论中留言。

感谢阅读。

查看英文原文: ContractPedia: An Encyclopedia of 40 Smart Contract Platforms A Complete List of all Smart Contract supportive Platforms

区块链如何拯救零售业

摘要:尽管零售行业在多年的发展中业已形成固定的商业模式,但是假冒伪劣商品、供应链管理和产品溯源等问题一直长期困扰着行业的发展。本文从库存管理、产品安全、防伪、道德供应链、客户数据管理和支付等六个方面介绍了区块链的应用和可能用例。

透过近期铺天盖地的宣传,人们看到区块链在零售行业中的大量用例。在此,区块链是一种可信的数据存储方式,它提供了一组可访问但不可篡改的网络共享记录。换句话说,区块链为零售行业提供了一种难以篡改并易于独立研制的分类账本。零售商可使用区块链记录其端到端的供应链数据,以便跟踪真实库存情况,打击假冒伪劣产品。 为实现此,物流链中的每个实体都应参与到区块链账本中,从生产工厂到分销商,从物流仓库到零售商店。每次记录新的交易时(例如,扫描一件商品条码并将其置于货架上),该交易会得到验证,并与其它交易一并打包到“区块”中。进而,该区块经验证达成共识后会链接添加到区块链中。每个区块存储在称为“节点”的各个设备中。由此,区块链构成了一个分散的系统,可有效地防止恶意攻击。这个过程看上去有些复杂,尤其是考虑到一些大型零售商需要处理分布于全球各地的供应商网络,而不同的网络在管理错综复杂的商品中可能依然在使用纸质表格,或是一些笨重的终端软件。但是考虑中这些零售商需要面对数十亿美元规模的商业,区块链无疑是一种易于实现的很好解决方案。下面,本文从零售行业各个方面对区块链的应用进行分析。

一、库存管理 区块链有助于零售商避免出现缺货问题,实现适当的库存管理。 Activant Capital Group的创始人兼合伙人Steve Sarracino曾提出,“无论从零售行业角度看,还是从数据的角度看,都要面对两个最重要的问题。一个是如何了解自身的库存情况,一个是如何将库存商品与最适合的客户匹配”。Activant Capital Group是一家处于成长阶段的风险投资公司。 即便是可以部分解决上述的问题,这对于零售商和为那些为其提供服务的物流公司而言,也是非常有利可图的。对于企业而言,这意味着能够更好地控制自己的商品,最终实现掌控货架上的商品。对于消费者而言,这意味着采购行为更具有目的性,避免了在盲目的逛街后却发现商品缺货,尽管这也是零售商想要力图避免的情况。 根据研究和咨询公司IHL Group最近的一项研究,缺货问题已使全球零售商每年损失近万亿美元。通过提高整个供应链的库存可视性和透明度,供应商和零售商可以在跟踪物流进度和了解何时需要补充产品方面保持一致。区块链可增强企业运作的问责制,确保所有各方正在接收最新且最准确的数据,这将有助于解决上述问题。 当然,这需要所有各方都加入区块链,并在适当位置添加基础设施。对于所有力图实现跟踪实物商品的区块链计划,这是一个主要障碍。区块链系统必须统一有效,并且本身可防止伪造。例如,商品的QR码就很容易被复制。

二、产品安全 区块链有助于零售商了解商品情况,知悉出现问题之处。 作为最强大的零售商之一,沃尔玛正在应用区块链上取得成功。该企业利用自身的影响力,要求其所有供应商使用同一平台。举个例子,由于近年来发生的高调爆发和召回事件,包括今年春天由受污染的生菜引起的致命的大肠杆菌爆发,沃尔玛开始采用绿叶蔬菜溯源计划。上个月,沃尔玛与IBM合作推出了基于区块链的食品可溯源计划。据IBM区块链服务总经理Kelley介绍,该计划将于2019年生效。届时,沃尔玛能够在2.2秒内追溯任何绿叶蔬菜的来源。该过程曾需要6天,后缩短到18小时26分钟。 如果事实证明,此类计划可成功地扩展到其它类别的零售商品,那么可以想象,那些过去曾受产品安全问题困扰的其他零售商也许会考虑采用类似的流程,以恢复客户的信任,并避免将来承担责任。

三、商品防伪 在奢侈品、服装、化妆品、艺术品美术和高端酒等领域中,区块链也将发挥作用。因为这些领域中,仿冒品都比比皆是。 化妆品行业面对着假冒伪劣产品和产品转卖的问题,这些假冒产品最终在亚马逊等市场上销售。虽然转卖从技术上讲并非违法,但未经授权的经销商无法保证其产品的监管链,这意味着客户可能会获得假冒或过期的产品,这对化妆品品牌而言绝对不是好消息。如果化妆品企业使用区块链上进行跟踪并整合,那么化妆品一旦打包出厂并进入第一个分销商,所有事件将被记录下来。企业就可以确定链条在什么地方出现问题。 对于设计师设计的手提包等奢侈品,区块链有助于帮助客户的确保商品的出处。这是奢侈品转售市场中一直面对的一个挑战性问题,目前主要依赖于认证专家的主观专业知识。 但是, Gartner的副总裁兼高级分析师安德鲁·弗兰克警告说,“要让区块链要真正地应用商品,必须有端到端的一致性来记录区块链中的每一个动作。只有在不存在链中断的情况下,我们才能确定所记录的对象正是在工厂中创建的对象”。

四、道德供应链 作为消费者,我们越来越关注(或者说关心)关于所购买产品的来源。由此,许多零售商已经加大了产品产地的透明度。一些专家认为,区块链可以通过提供有关产品出处的经验证记录,支持品牌对自身道德供应链和可持续性的需求。 例如,钻石行业正在大力投资区块链技术,以满足购物者尤其是千禧一代购物者的需求,更好地保证其所购买钻石的价值、质量和来源。当然,钻石的来源自20世纪前“血钻”为公众所知以来,一直是一个日益重要的问题。众所周知,血钻正被公开开采和出售,资助了非洲的内战和侵犯人权行为,主要涉及塞拉利昂、利比里亚和象牙海岸等国家。 2003年,联合国实施了金伯利进程,一项消除冲突钻石的国际倡议。该倡议强制要求在毛坯钻石的采矿和分配方面提高透明度。由此,进入该领域的所有区块链计划,从世界上最大的钻石公司戴比尔斯(De Beers)到专注于技术创业公司Everledger,都有望补充而非取代目前的认证计划。包括金伯利进程在内的所有承诺,都在考虑使用区块链来补充行业现有的认证工作。 IBM在今年春天宣布了自己的钻石认证计划TrustChain。该计划将与一些矿山和零售商的黄金和钻石公司以及第三方测试实验室合作,“向该级别的消费者提供这种信任链”。

五、管理客户数据 与维护供应链同样重要的是了解客户,这是大多数零售商当前远未解决的挑战。当然,了解客户的主要难点在于隐私问题。购物者希望保持对个人数据的控制,但他们也希望他们的购物体验能够完美地适应他们。他们也绝对不希望被一些垃圾广告骚扰。 根据埃森哲2017年的一项全球调查,49%的美国消费者表示,在使用旨在预测其需求的服务时,他们对数据隐私存在顾虑。44%的受访者表示,他们对未能提供相关个性化体验的公司感到沮丧。当然,客户总是一群具有很高要求的人。 区块链为零售商提供了一种手段,让他们可以使用客户的数据来定制产品推荐等服务,而不是会将客户的隐私数据实际存储在自身的服务器上。事实证明,存储客户隐私数据对于许多零售商来说是一种负担。 由于欧洲的GDPR在今年5月生效,它要求公司向用户提供明确的选项来提供或撤销对其个人数据的访问权。虽然区块链可能是一个强大的工具,但有一个非常重要的警告:“GDPR讨论了被遗忘的权利,如果您的数据存储在区块链中,这很难做到” 当然,区块链并不完全与GDPR的目标一致,因为区块链的信息不能被删除。GDPR讨论了被遗忘的权利。如果用户的隐私数据存储在区块链中,这很难做到。因此,这些公司正致力于将实现客户管理系统,将客户同意公开的数据与受保护的实际个人数据分开。

六、支付 虽然缺乏标准化是区块链应用中的一个挑战,但是对于那些希望在支付处理中绕过信用卡的企业,区块链技术无疑是一个很好的选择。 零售商的运营利润通常非常低。例如,杂货铺的平均利润率在1%到2%之间。而信用卡公司向企业收取的费用越来越高,这可能会对企业的利润产生重大影响。区块链可从一定程度上解决这个问题。

结束语 那么作为用户,我们还需要多久才能看到区块链对我们采购方式的影响?现在从沃尔玛购物或在购买钻戒的用户,区块链事实上已经在发挥作用,尽管用户可能并不会感觉到其中的差异。区块链产生的革命性改进发生在幕后,其作用也更为微妙。 归根结底,区块链承诺将将力量掌握在大众而不是少数人的手中,并为一个越来越缺乏信用的社会恢复信任。这也正是零售业所追求的目标。