03

Goguen

智能合约

随着智能合约的整合,Goguen时期代表了Cardano网络能力的重大进展。 Shelley时期将系统核心去中心化,而Goguen将增加在Cardano的同行评审研究和高可信度开发的坚实基础上构建去中心化应用(DApp)的能力。

Goguen的工作与Shelley并行进行,一旦完成,将允许来自技术和非技术背景的用户在Cardano网络上创建和执行功能性智能合约。Goguen时期的目标之一是创建Plutus,这是一种使用函数式编程语言Haskell的专用智能合约开发语言和执行平台。Plutus已开放测试,并将函数式编程的优势引入到智能合约创建中。此外,它还通过一个代码库同时支持链上和链下组件,与现有的智能合约实现相比,这提高了开发体验的一致性和易用性。

Goguen时期还将开展通过Marlowe让更广泛的受众接触Cardano的工作,允许先前没有技术知识的金融和商业专家创建智能合约。Marlowe是一种基于Plutus构建的高级领域特定语言(DSL),非常适合金融合约。Marlowe附带Meadow,这是一个易于使用的应用构建平台,非程序员可以利用它来构建金融智能合约。Marlowe和Meadow共同简化了为金融应用创建智能合约的过程,使主题专家能够直接作出贡献,无需深入的编程技能。Plutus和Marlowe的结合将实现一类具有经过验证的功能的新型企业级智能合约,能够为现实中的大规模实现提供支持。

Goguen时期代表了Cardano能力的一个阶段性变化,为企业级、任务关键型、去中心化智能合约应用的开发开辟了道路,在Basho和Voltaire时期将会有更多激动人心的事情发生。

Goguen时期研究(只有英文版)

Towards a Smart Contract-based, Decentralized, Public-Key Infrastructure (迈向基于智能合约的去中心化公钥基础架构)

本文提出了一种基于智能合约的去中心化公钥基础架构,它以区块链的固有可扩展性和激励机制为基础,利用通用可组合安全框架形式化了一些设计问题。

[DRAFT] System F in Agda, for fun and profit([草稿]以Agda编写的系统F,为乐趣和利润而生)

本文介绍了第一个完整的本质类型化可执行形式化的系统F,这也是Plutus Core的基础

[DRAFT] Unraveling recursion: compiling an IR with recursion to System F([草稿]解开递归:编译一个递归到系统F的IR)

本文提出了一种基于系统F的中间表示(IR),这种表示扩展了系统F的功能,可同时实现函数和数据类型的递归,从而支持更高级别的编程应用。

[DRAFT] Functional Blockchain Contracts([草稿]功能区块链合约)

本文介绍了Plutus平台,这是一个功能区块链智能合约系统,用于在Cardano区块链上编码分布式应用,同时介绍了更广泛的Plutus库如何在链上和链下代码中与Plutus Core交互。

Goguen 工作范围


PLUTUS

Plutus是一个使用函数式编程语言Haskell的专用开发和执行平台。Plutus旨在实现Cardano智能合约的创建,为智能合约带来函数式编程的固有优势,例如减少歧义和简化测试。在Goguen时期,对于能够为企业级业务和财务场景建模的智能合约,Plutus将为它们奠定基础。不仅如此,Plutus和Haskell还允许在链上和链下使用相同的代码库,而其他智能合约实现则通常要求开发者使用两种或更多种不同的语言,这会降低效率并增大出现代价高昂的错误的可能性。

Plutus的所有工作都在Plutus GitHub仓库中可见,并且Plutus Playground测试平台可供用户尝试在Plutus中创建自己的智能合约。



PLUTUS CORE

尽管Plutus是一种面向开发者的高级语言,但Plutus Core是一种可在Cardano的清算层和计算层上运行的低级脚本语言,用于控制脚本与区块链本身之间的交互。用Plutus编写的智能合约的所有链上功能都可编译为Plutus Core,后者保留了函数式编程的所有优点,同时保持了简约和简洁的风格。Plutus Core在清算层中的实现是以尽可能简单的方式完成的,这样便可通过最大程度地减少潜在的攻击媒介来提高安全性。



MARLOWE

Marlowe是一种用于创建金融智能合约的领域特定语言(DSL),旨在供非技术人员使用,例如业务工程师、主题专家和财务分析师。利用Marlowe,即使没有任何编程经验的人也可以创建与现实数据交互的可执行智能合约,并将其部署在内置的Cardano模拟器上,进而最终部署到Cardano网络中。虽然Marlowe必然是一种高级语言,但它基于Plutus和Haskell构建,可继续从函数式编程提供的所有保证中受益,而不会影响易用性。

Marlowe的所有工作都在Marlowe GitHub仓库中可见,并且Meadow模拟器可让用户使用基于Web的简单界面尝试创建自己的金融智能合约。



PLUTUSFEST

PlutusFest于2018年12月在爱丁堡大学举行,旨在宣布和推广Plutus与Marlowe编程语言。感兴趣的公众和学术界人士欢聚一堂,参加由IOHK工程师带来的精彩讲座和演讲,度过了愉快的两天,其中大部分内容都已录像,观众可以在IOHK YouTube频道上观看。



Plutus和Marlowe Udemy课程

两个免费的Mooc课程已在Udemy上发布,内容涵盖PlutusMarlowe编程语言。这些课程由IOHK的内部教育团队创建和管理,为有兴趣学习如何使用Plutus和Marlowe创建智能合约的人提供了引导性资源。



多币种分类账

把多币种分类账模型引入Cardano将允许网络以类似ERC20的方式支持其他加密货币,但是,由于清算层的原生支持,可以做到成本更低、安全性更高且无需复杂的脚本系统。用户不仅可以在Cardano网络上创建自己的同质代币,还可以借助多币种分类账通过创建非同质代币实现代币化,同时,与涉及多个加密货币的智能合约进行集成的流程也更加简单。



KEVM

KEVM是一种经过正式验证的高质量智能合约虚拟机,与以太坊虚拟机(EVM)兼容。在K框架中得到正式指定的KEVM,使用形式语义处理EVM的配置和转换规则等元素,从而为智能合约提供更安全的虚拟机。IOHK已暂停参与K框架项目,以便专注于其他优先事项,但仍然对项目的愿景充满热情,未来可能会再次参与。



IELE

IELE是一种基于KEVM研究的虚拟机。作为一个低级平台,IELE可以使用跨语言的统一gas模型从高级语言翻译过来并执行智能合约。它可以作为Solidity代码的编译目标或直接集成到Cardano中,从而促进智能合约的互操作性,并为交付以太坊集成提供一种高保障途径。IOHK已为这个项目作出了重大贡献,已暂停参与IELE工作,眼下将专注于其他优先事项,但对未来重返项目充满热情。



Plutus是一个使用函数式编程语言Haskell的专用开发和执行平台。Plutus旨在实现Cardano智能合约的创建,为智能合约带来函数式编程的固有优势,例如减少歧义和简化测试。在Goguen时期,对于能够为企业级业务和财务场景建模的智能合约,Plutus将为它们奠定基础。不仅如此,Plutus和Haskell还允许在链上和链下使用相同的代码库,而其他智能合约实现则通常要求开发者使用两种或更多种不同的语言,这会降低效率并增大出现代价高昂的错误的可能性。

Plutus的所有工作都在Plutus GitHub仓库中可见,并且Plutus Playground测试平台可供用户尝试在Plutus中创建自己的智能合约。


尽管Plutus是一种面向开发者的高级语言,但Plutus Core是一种可在Cardano的清算层和计算层上运行的低级脚本语言,用于控制脚本与区块链本身之间的交互。用Plutus编写的智能合约的所有链上功能都可编译为Plutus Core,后者保留了函数式编程的所有优点,同时保持了简约和简洁的风格。Plutus Core在清算层中的实现是以尽可能简单的方式完成的,这样便可通过最大程度地减少潜在的攻击媒介来提高安全性。


Marlowe是一种用于创建金融智能合约的领域特定语言(DSL),旨在供非技术人员使用,例如业务工程师、主题专家和财务分析师。利用Marlowe,即使没有任何编程经验的人也可以创建与现实数据交互的可执行智能合约,并将其部署在内置的Cardano模拟器上,进而最终部署到Cardano网络中。虽然Marlowe必然是一种高级语言,但它基于Plutus和Haskell构建,可继续从函数式编程提供的所有保证中受益,而不会影响易用性。

Marlowe的所有工作都在Marlowe GitHub仓库中可见,并且Meadow模拟器可让用户使用基于Web的简单界面尝试创建自己的金融智能合约。


PlutusFest于2018年12月在爱丁堡大学举行,旨在宣布和推广Plutus与Marlowe编程语言。感兴趣的公众和学术界人士欢聚一堂,参加由IOHK工程师带来的精彩讲座和演讲,度过了愉快的两天,其中大部分内容都已录像,观众可以在IOHK YouTube频道上观看。


两个免费的Mooc课程已在Udemy上发布,内容涵盖PlutusMarlowe编程语言。这些课程由IOHK的内部教育团队创建和管理,为有兴趣学习如何使用Plutus和Marlowe创建智能合约的人提供了引导性资源。


把多币种分类账模型引入Cardano将允许网络以类似ERC20的方式支持其他加密货币,但是,由于清算层的原生支持,可以做到成本更低、安全性更高且无需复杂的脚本系统。用户不仅可以在Cardano网络上创建自己的同质代币,还可以借助多币种分类账通过创建非同质代币实现代币化,同时,与涉及多个加密货币的智能合约进行集成的流程也更加简单。


KEVM是一种经过正式验证的高质量智能合约虚拟机,与以太坊虚拟机(EVM)兼容。在K框架中得到正式指定的KEVM,使用形式语义处理EVM的配置和转换规则等元素,从而为智能合约提供更安全的虚拟机。IOHK已暂停参与K框架项目,以便专注于其他优先事项,但仍然对项目的愿景充满热情,未来可能会再次参与。


IELE是一种基于KEVM研究的虚拟机。作为一个低级平台,IELE可以使用跨语言的统一gas模型从高级语言翻译过来并执行智能合约。它可以作为Solidity代码的编译目标或直接集成到Cardano中,从而促进智能合约的互操作性,并为交付以太坊集成提供一种高保障途径。IOHK已为这个项目作出了重大贡献,已暂停参与IELE工作,眼下将专注于其他优先事项,但对未来重返项目充满热情。


Medusa

github.com/input-output-hk/plutus

View historical and real-time GitHub commits


探索