这里讲Meckler, Izaak, and Evan Shapiro. "Coda: Decentralized cryptocurrency at scale."O (1) Labs whitepaper. May10 (2018): 4.

本文先讲Coda的Intuition,后讲密码学技术。

本文首发在本人知乎专栏中,更多区块链论文阅读,请关注本人知乎哦

问题描述

在现在的区块链系统中,要认证当前所挖出来的block是否是正确的,需要从区块链的第一个block开始一一认证;要认证一个转账交易是否正确/被打包进区块链,也需要从区块链头开始到该交易所在的区块一一认证。该认证过程需要下载所有的区块链数据。在这些数据达到几百Gb的情况下,普通用户基本不愿意为了查看自己的交易数据是否被成功打包到区块链中而去下载这些数据到本地的来认证。一般情况是,普通用户使用轻客户端,当他发送一笔交易之后,比如购买一杯咖啡,为确认自己的交易是否成功,需要委托某服务提供商来统一确认。
总结起来,当前区块链存在的问题是,认证一个交易需要很大的存储和网络代价。并且,普通用户“委托”其它人来确认交易这样的行为存在安全隐患,因为被委托者可能是不诚信的。
我们希望,不需要委托其他人,不需要下载大量(几百Gb)的区块链数据,普通用户使用自己的移动设备就能够认证/确认一个交易。
目前存在多种解决方案,比如Flyclient,区块链论文9 FlyClient-加密货币的超轻客户端 - Tech之直觉的文章 - 知乎,和让被委托者使用TEE。这里,
Coda便是其中的一个解决方案:

High-level Intuition

我们先假设存在这样一种算法:它生成证明的时间复杂度是线性的,所生成的证明的大小很小且其大小独立于所要证明的数据的大小,认证该证明的时间复杂度是常数的。我们给这个算法起名SNARK。
现在区块链有最开始的两个blocks:block0和block1,block1链接在block0后面,跟当前的区块链系统不同的是,我们另外生成一个证明,证明我们从block0获得block1是正确/符合协议的/数据一致的。下图中间那栏表示这个证明。

接下来,矿工挖出了第三个block,编号为block2,我们同样生成一个证明来证明从block1到block2是正确的/符合协议的。

接下来,生成另一个证明,来证明从block0到block2是正确的。

我们使用递归的方式,就可以生成一个证明,来证明从block0到block4生成过程的正确性的证明。

依次类推
对于普通用户,他们怎么使用和认证一个交易呢?
下图绿色部分表示一个交易数据,数字4所在的圈表示block4的Merkle树的根,根的上面是一个证明,证明从block0到block4的生成过程是正确的。

该用户为了确认/验证该交易已经被正确打包进区块链,它下载那个证明和该交易到Merkle树的根之间的路径,就能完成验证。为什么?因为通过那个SNARK证明(大概1kB),用户能够确认该block4是合法的,通过Merkle树路径(大概20kB)就能证明该交易包含在该block中。
上面便是Coda的概述。如果看不懂上图,可从文末的链接看对应的视频。
涉及到的技术
zk-SNARK 算法,该算法已经有很多研究,它满足上面提到的生成证明的要求。我们可以在github中找到开源实现libsnark。
2. Incrementally computable SNARK,它使用到了Recursive Proof Composition 或者说 Cycle of Elliptic Curves来实现。
对于Recursive Proof Composition,它是一个递归的过程:在t时刻能够对t-1时刻的数据生成一个证明 \pi 来证明t-1时刻的数据是正确的。


或者表示成下图:

验证过程表示为:

2014年以前,Recursive Proof Composition方法计算成本是比较高的。不确定现在是否有改进的方法。
Cycle of Elliptic Curves是Recursive Proof Composition的改进,可表示为:使用两个SNARKs,相互认证。

为什么要使用两个呢?因为我们希望SNARK能够认证自己所生成的证明 \pi ,以完成递归操作,但是因为SNARK算法中使用到了密码学配对pairing(双线性映射),简单来讲是将两个密文映射成一个新的密文, e(g^a, g^b) = e(g, g)^{ab} ,映射前和映射后的数处在不同的field,因此现在的SNARK无法验证自己所生产的证明\pi 。于是,我们就使用两个SNARK,如上图所示的样子来相互认证。可参考视频link或者对应的论文Scalable Zero Knowledge via Cycles of Elliptic Curves。

Coda使用了两个SNARK算法来实现Cycle of Elliptic Curves。这两个SNARK分别叫Tick和Tock,使用它们的目的是生成相应的证明。使用过程简述如下。
x0,x1,x2,和x3可以看作blocks。先用Tick分别对每一个x生成一个证明,再分别使用Tock包装Tick生成的证明,然后使用Tick来合并Tock所生成的证明。这个过程对应文章开头的图片。

更加具体一点,贴上论文这部分内容,其中SNARK如何生成证明这部分是一个黑盒子,我们使用libsnark库就可以完成。

如有理解上的出入,请指正

reference:
Coda eprint 论文:https://eprint.iacr.org/2020/352.pdf
Coda论文简洁版:https://cdn.codaprotocol.com/static/coda-whitepaper-05-10-2018-0.pdf
Coda视频:https://www.youtube.com/watch?v=eWVGATxEB6M&t=1678s
E. Ben-Sasson, A. Chiesa, E. Tromer, and M. Virza, “Scalable Zero Knowledge via Cycles of Elliptic Curves,” 595, 2014. Accessed: Nov. 19, 2020. [Online]. Available: http://eprint.iacr.org/2014/595.

B. Cohn, E. Shapiro, and E. Tekişalp, “Mina: Economics and Monetary Policy,” p. 7.

B. Bünz, A. Chiesa, P. Mishra, and N. Spooner, “Proof-Carrying Data from Accumulation Schemes,” 499, 2020. Accessed: Nov. 19, 2020. [Online]. Available: http://eprint.iacr.org/2020/499.

Coda, 去中心化的简洁(succint)的可拓展的加密货币相关推荐

  1. 如何玩赚Web3.0?去中心化抖音TiTi带你轻松赚取加密奖励!

    Web3.0机遇 Web3.0的崛起正为我们带来前所未有的机遇和创新.在这个数字化时代,人们渴望参与并从新兴技术中获益.而去中心化应用(DApps)则成为了实现这一愿望的利器之一. 其中,一款备受瞩目 ...

  2. 独角访谈 | 去中心化交易所领军人物–Loi Luu

    1 序言 从比特币和区块链诞生的那天起,去中心化这个词就进入了大家的视野.技术极客们也纷纷开始研究这一开创性的技术及其应用,其中包括开发去中心化的数字货币交易所.然而这种交易所目前还未被大众熟知.原因 ...

  3. 什么是 Web 3.0?:未来去中心化互联网————初学者指南

    目录 Web 3.0 解释 网络的演变 什么是 Web 1.0? 什么是 Web 2.0? 什么是 Web 3.0? 什么是加密货币中的 Web 3.0? Web 2.0 与 Web 3.0 Web ...

  4. 沉睡者IT - 贡献者和律师的Web3指南:充分去中心化

    贡献者和律师的Web3指南:充分去中心化 介绍 自从美国证券交易委员会(SEC)在2018年提出了有关"充分去中心化"的概念,Web3建设者们就一直对相关内容保持着关注.同时这一过 ...

  5. BUSD停BUSD停止发行,从HAY的发行机制看去中心化稳定币的重要性

    BUSD停止发行,从HAY的发行机制看去中心化稳定币的重要性 近期,关于加密市场监管的话题引起广泛关注,先是Kraken因为在美国提供加密货币的质押服务而被罚3000万美元,交易所质押成为大家讨论的焦 ...

  6. 无服务器人工智能去中心化,人工智能未来的发展方向是去中心化智能?

    原标题:人工智能未来的发展方向是去中心化智能? 随着AI人工智能在应用场景的爆发以及技术成熟推动下,将进一步向去中心化侧进行迁移,从而催生去中心化智能. 人工智能未来的发展方向是怎样的? 应用场景落地 ...

  7. 去中心化交易所研究报告

    本文分析了数字货币交易所行业的痛点.现状,去中心化交易所的发展模式.投资逻辑和优缺点,最后对去中心化交易所的未来进行了展望. 鲸准 2018/04/13 09:56字体:宋 中心化交易所因为其易用性. ...

  8. WKA去中心化交易,重构区块链价值网络

    随着互联网技术的不断成熟与发展,越来越多的人选择线上交易.通证化是公司体制的变革,是未来各类机构的重要组织形态和机会,是可以将公司用户与公司权益的分配主体真正统一起来的经济模式.于是,数字资产安全与快 ...

  9. TokenGazerOKex Research | 去中心化云存储行业报告

    2019年5月6日,TokenGazer与OKex联合发布了去中心化云存储行业报告.当前TokenGazer往期的项目评级报告.深度研究报告.加密货币月报等均已收录在官方网站:www.tokengaz ...

最新文章

  1. 2020年生肖码表图_2020年最好的计时码表,是这4款
  2. MyEclipse中快捷键的使用
  3. 猛男教你写代码_猛男程序员,鼓存储器和1960年代机器代码的取证分析
  4. OpenCV3学习(12.3) kalman滤波器
  5. 计算机控制技术摘要,计算机控制技术摘要.ppt
  6. 持续集成工具集之五 使用Email Extension Plugin插件
  7. 如何重构千行“又臭又长”的类,IntelliJ IDEA 几分钟搞定!
  8. java关键字值transient
  9. 数据挖掘产品 IBM SPSS Modeler 新手使用入门
  10. vue 识别身份证内容并映射到来源地区的js
  11. 各省份的车牌简称 备案地区的简称
  12. Linux基础知识 | vi编辑器
  13. 如何解决hash冲突,ThreadLocal如何解决哈希冲突
  14. python ffmpeg解码视频_利用python+ffmpeg合并B站视频及格式转换的实例代码
  15. 如何确定硕士毕业论文选题?
  16. Eclipse 简介
  17. 虚拟机与宿主机网络互通配置
  18. elasticsearch + ik
  19. [Javascript 高级程序设计]学习心得记录11 js的BOM
  20. apache-ab 并发负载压力测试

热门文章

  1. 使用结构体stuinf输入输出一个学生的信息
  2. java 重复start,iText中带有“start”属性的有序列表[重复]
  3. 鸿蒙系统方舟运行时,方舟编译器立功!第三方App已经落地,距离鸿蒙系统还会远吗?...
  4. SAP产品的Field Extensibility
  5. ORACLE中实现表变量的方法
  6. 解决“SCRIPT257: 由于出现错误 80020101 而导致此项操作无法完成。 ”
  7. Esper学习之十二:EPL语法(八)
  8. [problem]快速排序和归并排序
  9. nginx基于域名的日志切割脚本
  10. 好记性不如烂笔杆-android学习笔记十四 EditText 画行,解决光标压线问题