We implement extraction of Coq programs to functional languages based on MetaCoq's certified erasure. As part of this, we implement an optimisation pass removing unused arguments. We prove the pass correct wrt. a conventional call-by-value operational semantics of functional languages. We apply this to two functional smart contract languages, Liquidity and Midlang, and to the functional language Elm. Our development is done in the context of the ConCert framework that enables smart contract verification. We contribute a verified boardroom voting smart contract featuring maximum voter privacy such that each vote is kept private except under collusion of all other parties. We also integrate property-based testing into ConCert using QuickChick and our development is the first to support testing properties of interacting smart contracts. We test several complex contracts such as a DAO-like contract, an escrow contract, an implementation of a Decentralized Finance (DeFi) contract which includes a custom token standard (Tezos FA2), and more. In total, this gives us a way to write dependent programs in Coq, test them semi-automatically, verify, and then extract to functional smart contract languages, while retaining a small trusted computing base of only MetaCoq and the pretty-printers into these languages.


翻译:我们根据MetaCoq的认证消化功能语言实施 Coq 程序。 我们根据MetaCoq的认证取消功能语言。 作为其中的一部分, 我们实施优化通行证去掉未使用的论点。 我们证明通行证正确, 这是功能语言的常规按价值排列的常规操作语义。 我们将此应用于两种功能智能合同语言, 流动性和Midlang, 以及功能语言 Elm。 我们的开发是在ConCert框架范围内完成的, 该框架允许智能合同的核查。 我们提供了一份经过核查的董事会投票智能合同, 包含选民最大隐私, 使每张选票都保持私人状态, 除非所有其他政党串通。 我们还将基于财产的测试纳入ConCert, 使用QuickChick, 我们的发展是第一个支持测试互动智能合同特性的测试。 我们测试了若干复杂的合同, 如DAO类合同、代管合同、实施分散化金融(DeFi)合同, 其中包括一种定制代号标准(Tezos FA2) 和更多的合同。 。 总的来说, 这使我们有一条在Coq 中写依赖程序的方法, 仅进行半自动测试, 校验, 然后提取智能合同基础, 并保留这些可信任的Co- chilly- milling- mind- drical- drical brical brical brikedal brikedaldaldaldaldal kedal kedaldaldaldaldaldaldal kedaldaldaldaldaldaldaldaldaldaldaldaldald ked keds。

0
下载
关闭预览

相关内容

Linux导论,Introduction to Linux,96页ppt
专知会员服务
76+阅读 · 2020年7月26日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
《DeepGCNs: Making GCNs Go as Deep as CNNs》
专知会员服务
30+阅读 · 2019年10月17日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
开源书:PyTorch深度学习起步
专知会员服务
49+阅读 · 2019年10月11日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
99+阅读 · 2019年10月9日
MIT新书《强化学习与最优控制》
专知会员服务
270+阅读 · 2019年10月9日
trape 一种识别工具
黑白之道
4+阅读 · 2019年5月2日
大数据 | 顶级SCI期刊专刊/国际会议信息7条
Call4Papers
10+阅读 · 2018年12月29日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
vae 相关论文 表示学习 1
CreateAMind
12+阅读 · 2018年9月6日
计算机类 | 期刊专刊截稿信息9条
Call4Papers
4+阅读 · 2018年1月26日
人工智能 | 国际会议/SCI期刊约稿信息9条
Call4Papers
3+阅读 · 2018年1月12日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
计算机视觉近一年进展综述
机器学习研究会
8+阅读 · 2017年11月25日
计算机类 | 国际会议信息7条
Call4Papers
3+阅读 · 2017年11月17日
【论文】图上的表示学习综述
机器学习研究会
12+阅读 · 2017年9月24日
Arxiv
3+阅读 · 2018年4月9日
VIP会员
相关VIP内容
Linux导论,Introduction to Linux,96页ppt
专知会员服务
76+阅读 · 2020年7月26日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
《DeepGCNs: Making GCNs Go as Deep as CNNs》
专知会员服务
30+阅读 · 2019年10月17日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
开源书:PyTorch深度学习起步
专知会员服务
49+阅读 · 2019年10月11日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
99+阅读 · 2019年10月9日
MIT新书《强化学习与最优控制》
专知会员服务
270+阅读 · 2019年10月9日
相关资讯
trape 一种识别工具
黑白之道
4+阅读 · 2019年5月2日
大数据 | 顶级SCI期刊专刊/国际会议信息7条
Call4Papers
10+阅读 · 2018年12月29日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
vae 相关论文 表示学习 1
CreateAMind
12+阅读 · 2018年9月6日
计算机类 | 期刊专刊截稿信息9条
Call4Papers
4+阅读 · 2018年1月26日
人工智能 | 国际会议/SCI期刊约稿信息9条
Call4Papers
3+阅读 · 2018年1月12日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
计算机视觉近一年进展综述
机器学习研究会
8+阅读 · 2017年11月25日
计算机类 | 国际会议信息7条
Call4Papers
3+阅读 · 2017年11月17日
【论文】图上的表示学习综述
机器学习研究会
12+阅读 · 2017年9月24日
Top
微信扫码咨询专知VIP会员