blocksight

其他

zkEVM (二) --EVM Circuit

对于从电路角度来说,它和正常执行结果一样重要,电路只知道有什么情况就要去约束,保证其反映真实的业务过程!幸运的是,大多数错误情况都容易通过一些预先构建的Lookup
2022年5月3日
其他

zkEVM (一) 架构简介

将一些约束放到其他电路。电路之间的关系如下所示:每个电路都使用了一些table,这里的table一般指lookup
2022年4月23日
其他

区块链中的数学(八十一)-- Halo2 Circuit

约束可以是当前行的给定列中的单元格值,也可以是该行相对的另一行的给定列,即一个门中的多项式约束可以引用多行多列的值,提供了访问灵活性。如何构造halo2中的table(or
2021年9月5日
其他

区块链中的数学(八十)-- Baby Jubjub Elliptic Curve

snark电路设计友好的曲线,工程实现已有Rust,Js,Solidity等,可在参考文中找到Git地址。本文参考:https://eips.ethereum.org/EIPS/eip-2494
2021年8月1日
其他

区块链中的数学(七十九)--PLookup

前两项是输入,后一项是XOR结果,检验t3是否是正确的操作结果,变成检验{}是否是预计算table中的一项(entry)。检验元组(a_i,b_i,c_i)是表中的一项,首先把元组转化为单个元素
2021年7月11日
其他

区块链中的数学(七十八)-- MultiSet check& Schwartz–Zippel lemma

即下面两个集合相等:这是多元集合校验,把它约化成单项元素,然后可以使用多集合检验的方法了。随机选择β,构造如下两个单元项集合:对a',
2021年6月26日
其他

区块链中的数学(七十七)-- 环签名(ring signature)

上一篇介绍了盲签名原理,有朋友补充说盲签名目前应用在电子签名场合。今天继续说另外一种签名方案的变种--环签名,目前在隐私Monero项目中有所应用。环签名(ring
2021年5月30日
其他

区块链中的数学(七十六)--盲签名(Blind Signature)

盲签名可以看成结合普通签名的变种,实现特殊的应用。RSA方案简单易解,实际代码工程是要有额外一些处理的,可能需要填充等。好了,下一节继续介绍Monero项目用到的环签名原理!欢迎关注&在看,
2021年5月16日
其他

区块链中的数学(七十五)--sigma协议OR Proof&签名

R安全的hash函数,作为随机Oracle,是Fiat-Shamir变换的核心好了,完整构建的Fiat-Shamir签名方案流程如下:密钥生成算法G生成公钥(x,y)P(Prover
2021年5月11日
其他

区块链中的数学(七十四)--sigma协议与Fiat-Shamir变换

Sigma协议实现公平的。准确地说,特殊公平性!特殊公平性是说,如果P能让V在挑战中找到两个挑战,那么这两个挑战分别是(e,z)和(e′,z′)。通过代数计算【幂除法】可以得到
2021年5月5日
其他

区块链中的数学(七十三)--何谓零知识证明

Accumulator非成员证明以及区块链中的应用,有些细节没有展开,比如说为什么要使用素因子?因为它们的乘积将唯一地表示集合。否则,会有混淆【同一乘积,会有不同因子组合,如18
2021年4月24日
其他

区块链中的数学(七十二)

累加器可以实现集合成员证明,还可以做非成员证明用途,本节继续介绍RSA累加器的非成员证明部分。本文基础是上文,所有相同符号含义不变,建议先行阅读!RSA累加器非成员证明
2021年4月19日
其他

区块链中的数学(七十一)-- Accumulator(累加器)

Proofs):还有一种情况能否同时验证多个元素属于该累加器集合?是可以的。思路是把多个想要验证的值,合并在一起产生一个witness(即上文中的w)。接着上例,我们可以一次验证,
2021年4月13日
其他

区块链中的数学(七十)--Merkle树承诺

零知识证明证明某个元素存在特定集合中,除了要证明的元素之外,并未泄露其他集合元素信息,因此具有零知识性质,可用在零知识相关应用中。小结
2021年3月21日
其他

区块链中的数学(六十九)--Kate承诺batch opening

本文介绍了Kate承诺在多点披露验证的情况,当然还有一种就是多个多项式在多个不同点打开验证,相信如果本文理解的话,是可以自己推出来的,不在详述了。好了,下一篇继续当前区块链中用到最多的merkle
2021年3月11日
其他

区块链中的数学(六十八)--Kate承诺

string),是承诺方P和验证方V所共有,实际选择曲线配对不是对称的,而是非对称两个群,以后说到具体的项目代码可以看得比较清楚。通常setup过程采用MPC安全多方计算来保证安全。小结
2021年2月28日
其他

区块链中的数学(六十七)--多项式承诺

这样就有机会构造出新的多项式在r,z处取特定的值。如果P不知道r,z,就不能这样作弊了。于是Kate承诺选择在密文空间中进行计算。好了,下一篇继续Kate承诺的余下部分!欢迎关注&在看,
2021年2月22日
其他

区块链中的数学(六十六)--Pedersen密钥共享

上一篇介绍了密码学承诺中的Pedersen承诺,与Pedersen相关的还有一个密钥共享方案,如果你一直关注的话,会知道关于密钥分享之前专门介绍过,从《区块链中的数学》54---
2021年2月13日
其他

区块链中的数学(六十五)--Pedersen承诺

Commitment主要搭配椭圆曲线密码学使用(当然也可以结合指数运算)。具有基于离散对数困难问题的强绑定性和同态加法特性的密文形式。以结合椭圆曲线为例来说明,Pedersen承诺核心公式表达:C
2021年1月30日
其他

区块链中的数学(六十四)--哈希承诺

本文介绍密码学承诺的含义及性质,并对哈希承诺做了说明,关于hash函数的内在机制实际是比较复杂的,我们以黑盒的角度来学习了解它的性质,在区块链&密码学中,哈希函数占据了基础且重要的位置。
2021年1月24日
其他

区块链中的数学(六十三)

transfer)或者译为茫然传输是密码学中的一类协议,缩写为OT,实现了发送方将潜在的许多信息中的一个传递给接收方,但对接收方所接收信息保持未知状态。不经意传输的最早是由Michael
2021年1月16日
其他

区块链中的数学(六十二)

配对实现需要对曲线做慎重选择,加之操作复杂,运算效率有所降低,例如BLS签名验证效率就比传统的ECDSA要低,配对算法的研究就是在致力改善这一点。关于配对,还感兴趣的可以参考:Pairings
2021年1月2日
其他

区块链中的数学(六十一)

,这样就控制了聚合公钥成为自己的公钥,从而只用B自己的签名来覆盖A的签名,本来需要A,B共同签名的交易,现在只要B单独签名(伪造聚合签名)就可以了。这种攻击可称为“密钥消除攻击”,亦属于“Rogue
2020年12月26日
其他

区块链中的数学(五十九)

改进的密钥聚合的算法是如何防止伪签名的呢?本质上增加了公钥的可验证性你的就是你的,不是你的就不是你的,!本文中提到第一种方案可能存在密钥攻击,究竟是如何攻击呢?下一篇继续介绍!欢迎关注&在看,
2020年12月19日
其他

区块链中的数学(五十八)

=这里依然使用了配对函数性质,仍需用到所有的公钥,并计算10次配对函数,交易量越多计算量越大,好处是,区块中的签名字节大大减少了。小结
2020年12月13日
其他

区块链中的数学(五十七)

取值k+1,k+2,...,n再随机选择,且两两不等.使得:将发送给其他参与者收到其他参与者发来的,执行计算发送给其余节点密钥分片更新为:到此,k个参与密钥分片即子密钥更新操作完成,接下来是剩余n
2020年12月6日
其他

区块链中的数学(五十六)

,将结果秘密发送给其他参与者参与者计算:作为自己新密钥分片。可以看出,在密钥分片更新后,原始隐藏密钥的多项式就会变成显然,更新后,也是符合门限秘密共享的要求,任意大于或等于
2020年11月29日
其他

区块链中的数学(五十五)

实际工程中使用的密钥分享都是有限域上的循环群的运算,采用公共g作为生成元。为了使得分发的秘密碎片的数据可验证,秘密分发者除了给出秘密的分片数据外,还要提供对应的系数承诺(
2020年11月24日
其他

区块链中的数学(五十四)

密钥分享的基本思路是把一个密钥分成多份由多个参与方保存,如图密钥x,分成共n份,分别由保存,只要其中m份(m
2020年11月20日
其他

区块链中的数学(五十三)

广义来说,任何涉及多方管理和决策的场景都可以使用多签名,类似于投票表决等,来表达对一个事务的观点或意见等。就BTC而言,其多重签名机制称为m
2020年11月15日
其他

区块链中的数学(五十二)

EIGamel签名等,大家可以自行检查是否存在本文所述的问题。既然又说到了签名问题,那就深入一下,下一篇继续介绍多签名和阈值签名!欢迎关注&在看,
2020年11月13日
其他

区块链中的数学(五十一)

实现上做了优化,可在多种计算平台上都能达到较高的性能;签名过程中不需要唯一的随机数,能够避免随机数引发的安全问题;无分支和秘密数据索引操作,对于侧信道攻击等具有更好的免疫效果;公钥和签名值都较小
2020年11月8日
其他

区块链中的数学(五十)

上一节说了爱德华签名体制中Ed25519,使用了扭曲爱德华曲线,签名结果具有确定性。按照惯例,逢十篇整理目录,方便查阅,快速找到感兴趣的内容。40-50篇
2020年11月3日
其他

区块链中的数学(四十九)

27742317777372353535851937790883648493,密钥生成私钥:如同之前一样,使用随机数发生器生成随机数k作为私钥。公钥:(1)计算私钥摘要:H(k)
2020年11月2日
其他

区块链中的数学(四十八)

的曲线点加法规则前面我们说了Weierstrass曲线上两点相加的几何意义,是通过两点连接一条直线,与曲线相交第三个点关于x轴的对称点就是所求的和,
2020年10月28日
其他

区块链中的数学(四十七)

相对应的点加法运算有细微变化:x坐标计算不变,y坐标添加了a系数因子。如果两个相同点相加公式变为:有了扭曲爱德华曲线,正常的爱德华曲线可以看成扭曲爱德华曲线的特例(a
2020年10月24日
其他

区块链中的数学(四十六)

上一节说了sm2公钥恢复过程,重在原理,具体代码有待测试优化!本文开始要讲椭圆曲线中的另外一类:爱德华曲线。这种曲线的规则跟之前所说的均有所不同。secp256k1,sm2,secp256r1
2020年10月21日
其他

区块链中的数学(四十五)

本人没有实际测试过,看起来流程都是对的,但肯定不是最优的,生产环境下慎重使用!如果你发现有什么问题,欢迎分享!Java语言实现好像还没有现成的,抽时间可以写一个,如果你知道的话,也可以分享下!小结
2020年10月17日
其他

区块链中的数学(四十四)

如如何将任意字符串映射到曲线上的point等。好在已有成熟的实现库了,例如libsodium中的ECVRF-EDWARDS25519-SHA512-Elligator2,
2020年10月12日
其他

区块链中的数学(四十三)

上一节说了基于RSA的VRF实现,继承了RSA算法的简洁性。本文讲基于椭圆曲线秘钥体制的VRF实现,关于椭圆曲线算法的知识如果不熟悉,可先参考文末“相关阅读”部分。ECVRF
2020年10月7日
其他

区块链中的数学(四十二)

掩码生成函数这里着重说一下掩码生成函数的逻辑。MGF1是基于散列函数的掩码生成函数,在RSA最优非对称加密填充一文中,提到的公共单向函数G其实就是掩码生成函数。这里详细讲一下其过程。方法:MGF1
2020年10月4日
其他

区块链中的数学(四十一)

Oracle,RO),通过任意的一个输入,获得一个随机数输出。可验证随机函数比随机预言机多了一个非交互的零知识证明,可以用来验证该随机数输出的正确性,表明这个随机数的确是某个人或者节点生成的。使用
2020年10月2日
其他

区块链中的数学(四十)

有朋友问一些相关的小问题,个别回答,不再多写了。按照惯例,逢十整理目录,这是第四十篇。31-40
2020年9月30日
其他

区块链中的数学(三十九)

主要核心内容已经讲完了,这一节说下实现相关内容,作为总结。本文的基础是上三篇,建议认真理解,凡是都有背景知识,没有捷径可走!本文说下uniswap一些代码实现核心方法。Swap交易
2020年9月28日
其他

区块链中的数学(三十八)

这一节继续说Uniwap做市商算法之流动性改变。本文的基础是上两篇,建议认真理解,否则理解本篇有一定难度。百尺之台起于累土,合抱之木生于毫末,不要怕麻烦!!下面我们详细说说流动性计算!流动性基本介绍
2020年9月25日
其他

区块链中的数学(三十七)

使用过uniswap的朋友应该对此比较熟悉。尤其是当一个pool代币余量比较小的情况,每次交易的数量都不大,这就是所谓的交易深度。下面看一下,第二种价格计算给定Y数量计算X
2020年9月21日
其他

区块链中的数学(三十六)

universal“后面的分析文章中,我们依然能够感受到这种简洁的魅力。下一节继续分析uniswap中交易以及添加移除流动性对价格产生的影响。欢迎关注&在看,
2020年9月20日
其他

区块链中的数学(三十五)

今天偶尔看到了以太坊早期一条的EIP记录:https://eips.ethereum.org/EIPS/eip-2里面提及到了secp256k1算法的一个小问题:可锻性担忧(malleability
2020年9月17日
其他

区块链中的数学(三十四)

liar)。也就是说,当p是一个合数的时候,由于a是一定范围内随机选取的,对某次选取的a来说,上述两个式子不同时满足,这时称为p是基于a的大概率素数【注:1-1/4
2020年9月6日
其他

区块链中的数学(三十三)

Rabin算法与费马小定理密切相关:那么是不是当一个数满足任意使得成立的时候它就是素数呢?在费马小定理被证明后的很长一段时间里,人们都觉得这是很显然的,但是终于有一天,有人给出了反例
2020年9月1日