NFT:如何用 zkSNARK 做一款链上德扑游戏?_ANTA

作者:曼达洛人,MantaNetworkProtocol

在过去一年多时间里,越来越多人意识到ZK这种密码学工具的强大,我们也看到很多零知识证明应用的兴起,比如隐私社交、隐私投票、隐私DAO等等。实际上,零知识证明的应用非常广阔,有链上隐私需求的应用都可能会用到零知识证明。

在刚刚结束的ETHSanFrancisco2022期间的ETHGlobal黑客松活动中,MantaNetwork密码学开发团队的小伙伴们就在短短36个小时的时间里做出了一款基于zkSNARK的德扑游戏,并在ApeCoin、ENS、SKALE、Optimism主办的四个竞赛单元拿到奖项。

很多人所熟知的DarkForest就是基于zkSNARK的一款实时策略游戏。非完全信息游戏即玩家不掌握全部状态的游戏,比如在扑克中,玩家手中的牌是私密信息,摸牌的过程也是完全隐私的。非完全信息的有趣之处就在于可以催生一系列复杂的游戏策略。

在公共区块链上,由于链上数据的公开透明,很难构建非完全信息游戏。但是,通过零知识证明技术,玩家可以保持在保持隐私状态的同时,公开提交可验证的有效动作。

在此次的黑客松活动中,MantaNetwork基于zkSNARK构建了一款链上德扑洗牌和发牌系统。这套系统主要解决了链上德扑游戏中存在的两个问题:如何公平地进行洗牌以及如何隐蔽地在玩家间发牌。

本质上,基于零知识证明的链上德扑,让发牌主体去中心化,庄家无法通过控制发牌来控制牌局。

在Web2中心化客户端里玩德扑,会遇到这样的情况,可能性极小的牌,刚好就发给你了。大概率能得到的牌,却出不来。

目的就是借发牌操纵牌局,让你的对手,在线下赢牌概率极低的情况下,在线上恰好赢你。

这就是为什么我们需要去中心化德扑。

ZKShuffle系统有三个功能:

ZKShuffle.setup:每位玩家都生成一个密钥对,并将每个人对应的公钥放在一起生成一副聚合公钥。

ZKShuffle.shuffle_encrypt:在进行洗牌时,每位玩家都需要依次调用shuffle_encrypt。

为了保证加密和解密可以任意顺序进行,这里我们用到的是同态加密方案。比如说,本局游戏中有三位玩家,在经过一轮加密后,每张牌都会有三个加密锁:Card{Alice,Bob,Charlie}。

ZKShuffle.decrypt:如果想要向一位指定玩家发牌,每个玩家都需要调用解密功能。比如说,如果游戏的逻辑是要将牌发给Charlie,正确的顺序应该是:Alice拿到加密牌Card{Alice,Bob,Charlie},用她的密钥进行解密,然后将解密后的牌Card{Bob,Charlie}在链上进行提交,同时提交一个零知识证明来验证解密的有效性。

声音 | 摩根溪创始人:若投资者从2019年开始每周买10美元的比特币 目前将获利49%:摩根溪创始人Anthony Pompliano近日发推表示,若投资者从2019年开始每周购买10美元的比特币,目前将会获利49%。尽管2018年的情况比较糟糕,但成本平均策略在熊市最严重的时候也会奏效。如果用户从2018年初开始每周购买价值10美元的比特币,目前将获利27%。如果从2017年初开始每周花10美元在比特币上,将获利156%。该数据表明了比特币作为一项长期投资的实力。考虑到最近的市场动荡和明显的恐慌情绪,牢记长期投资的观点十分重要。随着2020年5月比特币减半即将来临,明年可能会特别值得关注。注:成本平均策略是指投资者在投资股票时,按照预定计划根据不同的价格分批进行,以备不测时摊薄成本,从而规避一次性投入可能带来较大风险的策略。[2019/11/26]

Bob在链上拿到Alice提交的这张部分解密的牌Card{Bob,Charlie}后,再用自己的密钥进行解密,并在链上提交这张牌Card{Charlie}以及验证解密有效性的零知识证明。最后Charlie就拿到了Card{Charlie},只用他自己的密钥解密就可以查看他的牌了。

动态 | Coinbase以太坊每周交易量创17个月以来新高:据coindesk报道,Coinbase平台的以太坊(ETH)每周交易量创下17个月以来新高。从5月13日到5月19日,Coinbase上的两个最受欢迎的ETH市场,即ETH / BTC和ETH / USD,共3,675,570 ETH易手,目前市场价格为246美元,名义价值超过9.041亿美元。根据TradingView的数据,这是自2017年12月11日以来的最高价值。[2019/5/21]

MantaNetwork密码学开发团队用ZKShuffle构建了一套德州扑克demo,这是一个基于Solidity,React和Ether.js的去中心化应用。在这个demo中,每当一轮新的游戏开始,所有的玩家都要进行一轮设置,以保证在链上的这幅扑克牌是公平洗过的。然后,每位玩家都需要进行一轮解密后拿到两张牌。这些,玩家就可以在一条EVM区块链上玩德州扑克啦。

美国大学生利用宿舍免费电力挖掘比特币 每周可挣得30美元:据marketwatch消息,美国西肯塔基大学的学生Dilliha通过利用学校的免费电力运行比特大陆Antminer挖矿机,平均每周可以挣得30美元。Vectra发现,大约60%的挖掘的IP地址与大学的计算机有关,医疗保健仅次于此。这意味着大学生或者黑客正在利用大学宿舍免费的电力大量挖掘加密货币。斯坦福大学在1月份表示,“禁止社区成员使用大学资源(包括计算设备,网络服务和电力)在教师批准的研究和课程之外进行加密货币开采活动,否则容易造成系统受损、计算机设备滥用等危害。”Dilliha表示,他的采矿设备被禁止的原因并非是正在使用该大学的电力,而是因为它具有火灾隐患。[2018/3/30]

Manta目前已将这个DApp部署在了OptimismGoerli,EthereumGoerli和Skale区块链上。

实现原理

整个项目由3部分组成:

ZK电路;

用于验证解密和洗牌的智能合约,包括ZKShuffle合约和游戏逻辑合约DApp前端,使用React和ether.js以及CircomlibJS库构建的Demo;

CircomlibcryptographicJS库。

在Circom的实现中,采用ElGamal加密方案,并使用现有的Circom库,如poseidonhashes。

加密电路有87308个R1CS约束,在DApp中的证明生成时间为4.5秒。解密电路有1522个R1CS约束,在DApp中的证明生成时间为0.1秒。使用SnarkJs来生成DApp中的零知识证明。

智能合约由两部分组成:ZKShuffle框架合约和德扑游戏逻辑合约。ZKShuffle合约简易封装了ZKP验证逻辑和两个电路。逻辑合约部署了一个状态机,从RPC节点获得游戏当前阶段和轮到哪个玩家的次序。

DApp使用React框架和Ether.js实现,展示德扑桌面以及每位玩家的动作动画。当需要玩家做出动作时,这个玩家只需点击UI中的按钮,使用metamask进行交易签名即可。

观看Demo

关于MantaNetwork

MantaNetwork致力于通过隐私保护构建一个更好的Web3世界。Manta的产品设计从第一性原理出发,通过zkSNARK等领先的密码学架构为区块链用户提供端对端的隐私保护。在保障隐私的同时,Manta兼具互操作性、便捷性、高性能以及可审计性,允许用户进行任意平行链资产间的隐私转账和交易。Manta的愿景是为整个区块链世界提供更便捷的隐私保护服务。

Manta的创始团队由多位加密货币资深人士,教授和学者组成,他们的经验包括哈佛大学,麻省理工学院和Algorand。Manta的投资机构包括Polychain、ParaFi、BinanceLabs、Multicoin、CoinFund、Alameda、DeFiance以及Hypersphere等。Manta也是波卡官方Web3基金会资助获得者,SubstrateBuilderProgram成员,伯克利大学区块链加速器成员。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:0ms0-7:989ms