libsnark · 6
零知识证明 - 深入理解Zinc

零知识证明 - 深入理解Zinc

疫情在家,多看点代码。对于疫情也感慨几句,对于资深程序员,这么多年了还没有和家人在一起吃晚饭这么多天。老实讲,比平时公司附近晚上吃的好得多。上海停运了,连各种骚扰电话也少了。有空再翻了翻Zinc的设计和代码,感受一下Matter Labs对zkVM的设计和理念。Zinc提供一种可靠,简单的电路开发语言。Zinc不支持图灵完备。Zinc从2019年就开始开发,最后一个Patch是2021年9月份。commit 30d43721d98c727327bb92b6888f5903556a4261Author: Alex Z Date:   Sat Sep 25 15:21:42 2021 +0300    Update README.md1. 代码框架https://github.com/matter-labs/zinc.gitZinc项目代码包含了比较多的子项目,主要分为如下几部分:zinc-book - 系统介绍Zinc的方方面面,从变量类型的定义,表达式,智能合约的实现,vm的基本原理等等。zargo - 利用zinc实现的各种包的管理器。zinc-types - Zinc相关的基础类型的定义。zinc-compiler/zinc-lexical/zinc-syntax - Zinc编译器相关,zinc语言编译成ZincVM支持的指令集。zinc-vm - ZincVM的实现,主要实现ZincVM对应的约束系统。接下来分别介绍相关的子项目。重点介绍ZincVM的实现。2. Zinc BookZinc Book给出了Zinc语言的全貌。Zinc语言的语法类似rust语言。具体的语法和表达式,相对简单。利用Zinc语言可以开发智能合约。Zinc语言通过编译器可以编译成ZincVM可以运行的指令。ZincVM的好处是运行的程序可以描述成R1CS的约束,由此可以给出程序执行的证明。Zinc语言编译器实现在zinc-compiler/zinc-lexical/zinc-syntax,对应词法/语法分析。在深入ZincVM之前,先了解一下ZincVM对应的指令集。3. ZincVM指令集ZincVM指令集定义在zinc-types/src/instructions/mod.rs:pub enum Instruction {    /// The no-operation instruction.    NoOperation(NoOperation),    /// An evaluation stack instruction.    Push(Push),    /// An evaluation stack instruction.    Slice(Slice),    /// An evaluation stack instruction.    Copy(Copy),    /// A data stack instruction.    Load(Load),    /// A data stack instruction.    LoadByIndex(LoadByIndex),    /// A data stack instruction.   ...

1505天前Star.Li#Star Li #星想法 #零知识证明
StarkWare:以太坊扩容最佳团队 80 亿美元高估了吗?

StarkWare:以太坊扩容最佳团队 80 亿美元高估了吗?

万一 Vitalik 错了呢?是否我们都对 Layer2 的叙事产生了不切实际的期待?原文作者:Jessie原文编辑:penny原文来源:海外独角兽团队如果说上一个牛市最后的叙事是公链,那么在本轮牛市最后的谢幕表演中,Layer2 尤其是 zk Rollups 是当之无愧的主角。zk rollups 被业内公认为区块链扩容的终极解决方案,而 StarkWare 则是公认的目前全球最好的 zk rollups 团队之一,联合创始人 Eli Ben-Sasson 是世界顶级的密码学科学家,Uri Kolodny 则是具有成熟商业素养的连续创业者,团队能力全面,长板超长。目前公司已经估值 80 亿美元,获得了 Vitalik、Paradigm、Sequioa 等资本的倾力支持,是扩容领域估值最高的团队。不同于 L2 领域普遍通过运营节点收费,StarkWare 通过提供扩容技术解决方案 StarkEx 创立了扩容即服务(scaling as a service)的商业模式,曾服务业内头部客户 dYdX、Sorare、ImmutableX、DeversiFi 等。值得一提的是,StarkEx 技术的支持直接促成了 Tiktok 和 ImmutableX 的合作,在其合作声明中,Tiktok 特别提到:“StarkWare 是首个碳中和 Layer2 扩容方案。”二层网络 StarkNet 也正在开发测试中,有望将节点下放给社区运营,成为完全去中心化的版本。然而,占到 StarkWare 90% 收入来源的 dYdX 在 6 月 22 日宣布离开 rollups,迁移到 Cosmos 生态开发独立的应用链。dYdX 创始人 Antonio Juliano 曾公开表达目前人们对于 rollups 过于乐观:“我们已经是 rollups 上最大的 dapp,非常了解它。尽管它有可能会是最终胜出的技术,但当下并不好用。”这一事件直接影响了投资者对于 Layer2 的叙事信心,Layer2 的估值可能会整体下调。尽管我们仍然相信 zkRollup 是区块链扩容最终胜出的技术路线,但当下 StarkWare 80 亿美元的估值显得太高,我们认为在这个高赔率的赛道,应在早期布局。以下为本文目录,建议结合要点进行针对性阅读。看好 StarkWare 的逻辑:市场层面:以太坊是最大的下一代 web3 平台。目前以太坊占到全部 Layer1 网络 64.86% 的 TVL,我们认为以太坊将持续保持这种碾压级的市场份额。“去中心化”、“安全”、“可扩展性”是所有公链都必须面对的 tradeoff,扩容是以太坊的最大挑战。正是在以太坊暂时无法扩容的窗口期,诞生了一系列以“扩容”为主要目标的公链,但在去中心化和安全性上进行了妥协。这部分公链市值总和约为 370 亿美元,我们认为,倘如以太坊的扩容问题解决,这部分的市值有可能面临大幅缩水,更多的 dApp 将倾向于选择以太坊生态。长期来看 Layer1 只起到共识层和保证安全的作用,Layer2 将承担所有运算,类似一个去中心化的云计算服务商。假设去中心化的“云计算”也会是一个和公有云同等重要的事,这里蕴含的市场机会能达到千亿美金。竞争力层面:StarkWare 采用基于 STARK 的 zk rollups 技术,相比起 optimistic rollups,zk rollups 以其更快的提款时间带来更好的用户体验,以太坊创始人 Vitalik 认为,长期来看,zk rollups 将会成为扩容领域的最大赢家。而 StarkWa...

1513天前dy zhang#Aave #celer #ConsenSys #Curve #DeFi #DeversiFi #dForce #dYdX #GMX #ImmutableX #Infura #Layer2 #Meshswap #NFT #Paradigm #QuickSwap #Sequioa #Sorare #Stargate #StarkWare #SushiSwap #Uniswap #Vitalik #WEB3
直播视频 - 深入理解Halo2算法

直播视频 - 深入理解Halo2算法

最近疫情在家办公,把年前的直播视频整理了一下。总共分为5个视频,对Halo2算法感兴趣的小伙伴可以看看。目录:01 - Halo2入门基础介绍02 - 深入理解Permutation & Lookup算法03 - Halo2协议基础及介绍04 - Halo2电路进阶(sha256)05 - Halo2源代码导读视频详见 链接所有视频对应的PPT,可以通过百度网盘下载:链接:https://pan.baidu.com/s/1wueRNkjeu8fKPrvK_doHQg  密码:qnwl星想法技术改变世界往期精彩回顾零知识证明应用和示例:零知识证明 - zkHack挑战赛第五名Dark Forest - 采用零知识证明技术的游戏零知识证明 - 电路及证明示例(libsnark)椭圆曲线:零知识证明 - 椭圆曲线基础zk-SNARK理论知识:零知识证明 - 深入理解powersoftau零知识证明 - 从理论到实践(视频)零知识证明 - zkSNARK入门零知识证明 - 从QSP到QAP零知识证明 - 基于多项式构造零知识证明零知识证明 - Groth16算法介绍零知识证明 - Groth16计算详解零知识证明 - 理解FFT的蝶形运算零知识证明 - zkSNARK的Nullifier Hash攻击零知识证明 - 一种新型的Merkle树(Shrubs)零知识证明 - 深入理解PlonK算法直播视频 - 深入理解PlonK算法零知识证明 - Plookup算法介绍零知识证明 - KZG多项式承诺零知识证明 - Halo2 Book中文翻译零知识证明的基本库源代码分析:零知识证明 - libsnark源代码分析零知识证明 - bellman源码分析零知识证明 - ethsnarks源代码导读零知识证明 - 深入理解ZoKrates零知识证明 - DIZK介绍零知识证明 - DIZK源代码导读零知识证明 - Halo2电路构建源代码导读年度总结:2018年,我都干了些啥?2019年,变化的一年!2020,机遇!...

1620天前Star.Li#Star Li
零知识证明 - 电路及证明示例(libsnark)

零知识证明 - 电路及证明示例(libsnark)

libsnark库代码层次非常清晰。libsnark也给出了SNARK相关算法的全貌,各种Relation,Language,Proof System。为了更好的生成R1CS电路,libsnark抽象出protoboard和gadget,方便开发者快速搭建电路。在阅读该示例代码前,请仔细阅读libsnark的源代码分析:零知识证明 - libsnark源代码分析唯一有点遗憾的,libsnark没有给个完整的电路构造实例,入门者想搭建自己的电路,刚开始有点摸不着头脑。为了方便入门者编写自己的电路,同事写了个基于libsnark构造电路,并生成并验证电路的实例:https://github.com/StarLI-Trapdoor/libsnark_sample入门者,可以基于这个示例开发自己的电路。选择默克尔树作为电路的示例,因为在零知识证明的应用中,大量的使用默克尔树数据结构。1 代码结构该示例构造了一条merkle路径的验证电路,生成并验证证明。merkle树的深度为3,并且merkle树的计算采用sha256散列函数。代码结构比较清晰,merkle目录中的main.cpp是主函数。circuit目录下的merklecircuit.h是电路的实现。整个项目用cmake进行编译。2 电路实现电路名为MerkleCircuit,主要依赖两个gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable提供了merkle树的一条路径。merkle_tree_check_read_gadget检查给定一个叶子节点,是否能计算出正确的root。实现一个电路,主要实现两个接口函数:generate_r1cs_constraints - 生成R1CS,该电路比较简单,只要让依赖的两个gadget,生成R1CS即可。generate_r1cs_witness - 给所有的变量进行赋值。该电路,需要赋值的变量有root,leaf(叶子节点),和叶子节点配套的默克尔路径,以及默克尔路径对应的地址信息(也就是每一层的节点的位置,左边还是右边)。整个电路最复杂的就是电路的构造函数,申请变量,创建gadget。其中重点讲一讲,set_input_sizes函数。libsnark的框架中,使用简单的区分public和private变量的模型。通过set_input_sizes函数,设置前几个变量为public变量。pb.set_input_sizes(root_digest->digest_size);也就是说,该电路的公开变量为root的bit个数。3 生成和验证证明确定了电路的实现,看看main函数,如何生成和验证证明。在main函数中定义了merkle树计算需要的一些类型:typedef libff::default_ec_pp ppzksnark_ppT; typedef libff::Fr<ppzksnark_ppT> FieldT; typedef sha256_two_to_one_hash_gadget<FieldT> HashT;FieldT默认是bn256椭圆曲线的的Fr,默克尔树计算采用是sha256算法。3.1 setup实现了generate_read_keypair函数,生成pk/vk。仔细看一下gen...

2365天前Star.Li#libsnark #Start.Li #星想法 #电路及证明示例 #零知识证明
【Press Release】路印协议项目进度报告(第54期)

【Press Release】路印协议项目进度报告(第54期)

路印协议3.0距离以太坊主网部署已经越来越近,我们解决了产品上线的多数技术问题。目前协议,中继,和产品的研发都符合预期。研发路印协议我们对在电路中验证交易的方式进行了改进。这种变化增加了协议的灵活性,使中继在如何以及按什么顺序匹配订单方面有更多的灵活度。 当然,清算逻辑依然会保障订单对价格和交易量的要求。我们完成了零知识证明可信设置的第2阶段多方计算仪式需要的软件开发。第2阶段建立在第1阶段永续τ计算基础上。和第1阶段不同的是,第2阶段的计算是和特定电路相关的。这两个阶段对于电路和协议的安全同样至关重要。很多代码参考了Bellman的开源代码,同时我们还修改了libsnark/ethsnarks的代码来保持与Bellman兼容。我们成功开启了路印3.0的多方计算仪式。截至目前,共有5位参与者完成了多方计算。接下来一两周将会有更多人参与到我们的仪式中。一旦有超过10个人完成计算,我们就可以开始主网部署协议。安比实验室完成了路印3.0的安全审计工作。我们已经研读分析了审计报告的内容,并对协议做了一些小的优化。我们将在下周发布更详细的信息。第三方安全审计的完成也标志着路印协议3.0 beta4开发的圆满完成。目前只需要再有5人完成多方计算,路印就可以在以太坊主网部署3.0协议。万事俱备 只欠东风光锥中继光锥中继的第三次也是上线前最后一次系统级重构已基本完成,目前在进行各子系统的联调和测试的完善。这项工作目前整体进展非常顺利。在新的架构中,我们计划增加费用系统和营销系统。费用系统支持特定用户使用不同费率提交线下请求,目前已经开发完成并进入了测试阶段;营销模块正在进行需求分析。我们还在微服务管理中引入了Service Mash,在微服务间做负载均衡,进一步增强了对集群的管理能力。 重构后系统除了性能和稳定性有很大提升外,功能上也开始支持秒级开户,并且充值到账时间也缩短为原来的一半。 集群还新增了虚拟机级,进程级,和日志级的报警功能,并支持通过钉钉推送报警消息。前端产品前端支持了WebSocket,在深度,订单状态等处可以更快速展示数据变化;我们对TradingView图表也进行了优化,能够更好地显示价格曲线。注:网页产品的开发现已转交给WeDEX团队。路印后续主要提供核心功能的开发和相关技术支持。运营与市场11月4日 : HummingBot发布了0.18.0版,其中包括了Dolomite API的连接模块。 现在大家可以使用HummingBot直接在Dolomite平台下单。11月7日:我们开始了2020年研发路线图的讨论。目前基本上已经对整体计划达成高度一致,一些细节还有待讨论和整理。我们会在12月下旬发布路印明年的路线图。11月8日:路印参加乌镇的世界区块链大会,并做了关于路印协议3.0的技术分享。11月8日:商务总监Matthew Finestone参加多伦多的以太坊DeFi聚会。11月9日:Dolomite上线限价保证金交易。目前用户可以相对于DAI做空或做多ETH,后续会上线更多交易对。11月9日:商务总监Matthew Finestone代表路印在加拿大参加了由以太坊核心团队组织的ETHWaterloo会议。11月10日:路印创始人王东参加了由中国人民大学北美校友会主办的明德论坛,并分享了他对区块链、人工智能、数字化人民币DCEP的一些观点。11月10日:路印正式开启零知识证明安全设置的多方计算仪式。该仪式建立在永续τ计算第11轮计算结果基础上。目前有28个区块链团队受邀或报名参加该仪式。https://loopring.org/#...

2469天前Loopring#Loopring #LRC #区块链 #去中心化交易 #路印协议
一文读懂轻量级区块链协议Coda:使账本字节从G到k

一文读懂轻量级区块链协议Coda:使账本字节从G到k

Coda的区块存储压缩技术号称可以提高存储硬件设施的利用效率,让运行全节点的成本大大降低,真正保证了整个区块链节点网络的去中心化。1. 简介将区块链数据通过零知识证明压缩到固定字节大小的新型数字货币区块链全节点数据容量非常大,并且有继续变大的趋势,让全节点的网络同步以及存储变得很困难。coda protocol通过零知识证明的不断递归,号称能将目前几十GB的区块链账本压缩到20k,从而使得移动端也可以即时同步区块链数据。优点:1)团队技术实力强悍,有非常强大的理论和工程落地能力2)项目有众多著名硅谷投资人背书缺点:1)20k的节点仅是用户节点,可以做验证人的全节点仍然需要G级别的存储空间。2)项目方自己开发公链,而非为其它公链生态服务,市场灵活度相对有限。2. 行业区块链扩容的其中一大挑战在于,区块链数据容量随着tps增长,也会同级数地增长。因此,随着公链上DApp数量及活跃度的提高, 各大公链都将面临运行全节点硬件配置门槛高的问题。举例来说,比特币的全节点大小从13年Q1的6GB,增长到了19年Q1的210GB,6年翻了35倍,平均每年增长80%。而以太坊的全节点在16-17年的大牛市中更是一年增长了19倍。未来存储容量的增长是否能跟上区块数据的增长,是一件令人担忧的事情。在这种背景下,Coda的区块存储压缩技术号称可以提高存储硬件设施的利用效率,让运行全节点的成本大大降低,真正保证了整个区块链节点网络的去中心化。3. 模式Coda团队基于Ouroboros Proof-of-Stake协议自行实现公链,增加了使用zk-snark递归压缩的技术。由于zk-snark证明的大小是固定不变的,经过递归压缩后的Coda的账本大小也是固定不变的。需要注意的是,作为验证人节点,为了生成新的递归证明,仍然需要保存所有中间产生的证明,需要G级别的存储空间。因此在更准确的意义上,20k的节点只能算是增强版的轻节点,相对于传统的轻节点,验证交易不需要向全节点查询交易相关的的区块数据。这一点在官方的宣传材料以及白皮书中并没有提到,只有在网站上的一张配图中有所体现,有误导舆论的嫌疑。Coda协议里,除了传统的区块验证人外,还增加了Snark生成者,用以处理生成Snark证明的大量计算任务。区块验证者与Snark生成者分享区块奖励,以奖赏Snark证明的生成。目前,Coda协议只支持交易,智能合约的支持将在未来的路线图中实现。4. 技术Coda是基于账户模型的(而非UTXO模型)。其递归压缩的原则可以简单的描述如下。首先,假设我们生成一个证明从状态0到状态1的状态转换是合法的,然后,我们继续生成一个证明从状态1到状态2的状态转换是合法的,那么,我们就可以把这两个证明合并为一个证明从状态0到状态2的状态转换是合法的。依次类推,可以将每一步状态转换的证明都递归地合并为一个证明从状态0到最新状态的所有状态转换都是合法的。Coda的实现是用OCaml语言(一种函数式编程语言,在高频交易界应用较广)完成的,团队原创了不少新的代码库,包括一个基于OCaml 的zk-snark解释器。Coda的beta测试网已经于今年7月对公众开放,任何人都可以在自己的设备上运行Coda 节点,锁仓Coda测试代币成为区块验证人。5. 社区生态项目目前在Twitter上有6400个粉丝,在Telegram 上有近6000个成员,在Discord 上有800多个成员。Coda在旧金山搞过多次线下Meetup,吸引了大量开发者参与,人气比较旺盛。Coda与著名的zksnark库libsnark的创建者...

2504天前dy zhang#Coda #区块链技术
没有更多了