自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (22)
  • 收藏
  • 关注

原创 Plonky2 = Plonk + FRI

Plonky2由Polygon Zero团队开发,实现了一种快速的递归SNARK。

2023-12-08 16:41:24 1010

原创 Mental Poker- Part 2

在part-1中,我们梳理了去中心纸牌游戏所面临的挑战,也介绍了一种改进的Barnett-Smart协议,part-2将深入了解该协议背后涉及的算法。

2023-09-13 15:12:28 203

原创 Mental Poker- Part 1

扑克是一种牌桌上的游戏,但如果在没有物理扑克的互联网上,没有一个可信第三方维护公平,且参与玩家皆是不诚实的,这个时候怎么来一场公平的扑克游戏?这个问题由Rivest, Shamir and Adleman于1979年提出,并将这个问题称为“Mental Poker”,下面是摘自原文的一段关于Mental Poker的描述:自此大量的解决方案涌现出来,但都不经打,主要因为这些方案计算和通信成本太大,这对于一个实时游戏来说是无法接受的。

2023-09-06 09:32:59 200

原创 Pasta曲线

Pallas曲线和Vesta曲线统称为Pasta曲线,命名源于太阳系中的两颗行星。

2023-07-07 17:05:47 194

原创 Nova: 基于committed relaxed R1CS的IVC方案

Nova是INV的一种实现方案,所谓IVC是指Prover可以向verifier证明zi​Fiz0​。Ωi∗∣F∣iNova 的整体思路是将原始的 R1CS 问题转化为一种更加灵活且支持 Folding形式的relaxed R1CS,并在此基础上,进一步构造了 committed relaxed R1CS,committed relaxed R1CS主要保护了witness的机密性,然后基于 committed relaxed R1CS构建了 IVC方案。

2023-07-07 14:54:17 376

原创 R1CS和relaxed R1CS(二)

R1CS

2023-05-25 14:56:16 984

原创 R1CS和relaxed R1CS(一)

R1CS和relaxed R1CS

2023-05-24 19:42:05 934

原创 Hashing to the Curve

2023-05-12 08:50:23 67

原创 Groth16

Groth16于16年被提出,是一种在证明大小(证明只包含三个点)和验证时间上都具有很大优势的zkSNARK算法。zkSNARK通常需要进行可信设置(Setup),Groth16也不例外,然而Groth16的setup生成的公共参考串(CRS)不是通用的,即由该初始设置生成的CRS只能针对特定电路,而不能直接被用于任意电路的零知识证明之中,这也是Groth16实际应用中比较鸡肋的地方。

2023-05-09 15:44:59 1145

原创 Poseidon Hash

之前我们介绍了zk友好的哈希函数,今天我们介绍另一种zk友好的哈希函数PoseidonPoseidon采用 sponge/squeeze 结构,该结构吸纳万物并生成固定大小的输出,内部有一个状态Ss1​s2​...st​,初始状态为0,状态S可分为外部状态和内部状态,即rrate和ccapacityps:内部状态是不透明的,也不是输出的一部分,这对安全至关重要。

2023-04-19 15:01:03 649

原创 BLS签名中与0相关的漏洞

在密码中最有趣的数字是什么?当然是0因为0乘以万物都等于0本文章主要讨论BLS签名中与0相关的漏洞(PS:本文最后简单回顾下BLS签名和BLS聚合签名)

2023-03-29 16:17:10 311

原创 sum-check protocol

sum-check协议

2023-03-09 17:32:25 760 1

原创 Anemoi hash:一种SNARK-friendly的哈希函数

随着zk的兴起,出现了一大批zk友好且面向算术化(Arithmetization-Oriented)的哈希函数,如MiMC-Hash, Rescue–Prime, Poseidon等等,本文要介绍的Anemoi也是一种zk友好且面向算术化的哈希函数,与其他哈希函数相比,Anemoi具有以下特点:可以被用于Groth16, Plonk等证明系统中包含对特定应用的优化,如merkle tree的证明性能优越,参见下表。

2022-11-25 17:31:58 723

原创 海棉结构sponge construction

海绵结构是一类具有有限内部状态的算法,可以将任意有限长的输入消息变成任意长度输出的消息摘要,其结构如下,其中。海棉结构,或称海绵哈希,是当前密码学中一种重要构造结构,如当前sha-3采用的即是海绵结构。函数顺序迭代吸收消息,通常情况下,输入消息不是分组长度的整数倍,因此还要进行填充操作。海绵结构其计算过程主要分为两个部分:abaorbing和squeezing。在squeezing过程中,根据输出长度来输出哈希值,每输出一个值,都要利用。在abaorbing过程中,函数来更新内部状态。

2022-11-25 10:31:20 1097

原创 关于Rayon库的一个小问题记录

rust Rayon库的一个小问题记录

2022-09-23 10:39:15 229

原创 Findora密码原语之pedersen-elgamal算法

pedersen-elgamal密码算法

2022-08-23 09:08:48 208

原创 Findora密码原语之elgamal算法

Findora密码原语之elgamal算法

2022-08-16 11:45:09 217

原创 Findora密码原语之chaum-pedersen批量证明协议

chaum-pederson批量证明

2022-08-10 11:26:32 251

原创 Findora密码原语之chaum-pedersen协议

chaum-pederson协议

2022-08-09 11:03:32 440 9

原创 Findora简介

Findora愿景是打造金融隐私公链,成为Web3.0的金融基础设施,提供高扩展性和隐私性

2022-08-08 16:10:43 2330

原创 Zerocash:Decentralized Anonymous Payments from Bitcoin

  Zerocash是在比特币上增加一套匿名支付机制得到的货币,这套匿名支付机制叫做DAP(Decentralized Anonymous Payment )方案,DAP可以搭建在任何基于账本的加密数字货币上层,提供一套匿名机制。zcash系统利用zkSnark构造了去中心化的”匿名池“ ,通过铸币(Mint)和浇铸(Pour)完成匿名操作,所谓铸币过程是指用户使用一定量的币兑换等额的承诺(匿名货币),浇铸过程是指用户通过零知识证明的方式进行匿名货币之间的转账,并且在转账过程中还可以进行赎回操作。ste

2022-05-26 08:39:32 2126

原创 Shamir秘密共享的同态性质

一.加法同态Shamir 秘密共享天然具有加法同态性质,即对于多个(t,n)Shamir 秘密共享生成的秘密份额相加是对应秘密值和的秘密份额,并且此过程中的门限值始终为t(d个t-1次多项式相加其结果依然是t-1次),因此t个对应秘密值和的秘密份额可以恢复对应秘密值。MPC协议之BGW算法中的加法运算巧妙利用了此加法同态性质实现了秘密值和的安全多方计算。初始化阶段d个秘密分发者分别选取t-1多项式,分别为n个参与者进行秘密份额分发:F(x)j=sj+F1jjx+...+F(t−1)jxt−1,j=

2022-05-10 16:11:42 1376

原创 基于Pedersen承诺的可验证秘密共享方案: Pedersen VSS

传统(t,n)门限秘密共享方案并未考虑参与者和秘密分发者可能出现的恶意行为:当重构秘密时,不诚实的参与者发送错误的秘密份额当份额分发时,秘密分发者分发错误的秘密份额为解决上述欺骗问题,可验证秘密共享(VSS: VerifiableSecret Sharing)最早于1985年被提出,该方案通过参与方间的交互来验证密钥份额的合法性,随后又提出了非交互式VSS方案 ,但早期的非交互式VSS方案依赖于可信第三方,于是随后又诞生了一批不依赖于第三方的非交互式VSS,Pedersen VSSS即是

2022-05-09 18:26:23 2937

原创 BLS12-381 and BLS Signatures

BLS12-381 and BLS Signatures椭 圆曲线密码算法具有密钥短的优点,为了达到128 bit的安全水平,NIST (美国国家标准与技术研究院)推荐使用 3072 bit 的RSA密钥 ,而椭圆曲线密码算法仅需要256 bit就能达到同等安全强度,这使得密钥长度大大缩短,因而大受欢迎。一. BLS12-381简介BLS12-381是Pairing-Friendly的椭圆曲线,Pairing-Friendly的椭圆曲线要满足两点:1.具有大素数阶子群;2.嵌入次数要小。BLS12-3

2022-04-01 18:11:21 2289 1

原创 zkSnarks:QAP上构造零知识证明

协议一:抽样验证:prover向验证证明它知道一个d阶多项式verifier:选取随机数s,发送给proverprover:计算h(x) = P(x)/t(x) ,公开p(s) 、h(s)。verifier:验证等式p(s) = t(s) h(s)是否成立该证明了prover知道一个整除t(x)的多项式,但存在以下问题:prover 知道s,可以计算出t(s), 随机选取h(s) ,并构造p(s) = t(s) h(s)prover 知道点(s, t® h®), 可以构造

2022-03-23 15:34:43 996

原创 WeDPR t_out_of_n 不经意传输协议

WeDPR t_out_of_n OT 协议 ,算法实现见:https://github.com/WeBankBlockchain/WeDPR-Lab-Crypto/tree/main/crypto/oblivious_transfer/base_otmessageList = [{id _0,message_0}, {id_1,message_1}, {id_2, message_2} , {id_3, message_3} ]其中id_i 为对应message_i 的标识,id_i 公开步骤一 r

2022-03-09 11:05:44 196

原创 WeDPR 1_out_of_2 不经意传输协议

WeDPR 1_out_of_2 OT 协议 ,算法实现见:https://github.com/WeBankBlockchain/WeDPR-Lab-Crypto/tree/main/crypto/oblivious_transfer/base_otmessage = [message_0, message_1 ]步骤一 receiver初始化:​ 生成随机数 a , b​ 计算 c = a * b​ 计算 point_x = a * G1​

2022-02-25 11:21:55 358

原创 WeDPR即时可用场景式隐私保护高效解决方案

WeDPR是一系列即时可用场景式隐私保护高效解决方案套件和服务(参见WeDPR白皮书),由微众银行区块链团队自主研发。方案致力于解决业务数字化中隐私不“隐”、共享协作不可控等隐私保护风险痛点,消除隐私主体的隐私顾虑和业务创新的合规壁垒,助力基于隐私数据的核心价值互联和新兴商业探索,营造公平、对等、共赢的多方数据协作环境,达成数据价值跨主体融合和数据治理的可控平衡。WeDPR具备以下特色和优势:场景式解决方案:已基于具有共性的场景需求,提炼出公开可验证密文账本、多方密文决策、多方密文排名、多方密文计算、

2022-02-25 10:55:12 708

原创 solidity:6.继承

solidity 支持多继承,通过关键字 is 实现,继承的合约可以直接访问父合约的public,internal权限的变量或函数1.继承与构造函数有两种方法初始化父类合约,如contract A 、contract B在继承的时候,父构造函数总是按照继承的顺序调用,跟子合约中父类的构造函数的顺序无关,如contract B、contract Cpragma solidity ^0.8.0;contract X { string x; constructor(string m

2022-01-14 10:06:59 493

原创 solidity:5.函数修改器

modifier的三种应用场景权限控制,如example 1入参校验,如example 2防止重入,如example 3pragma solidity ^0.8.0;contract FunctionModifier{ address public owner; bool public locked; int public x; constructor(){ owner = msg.sender; locked = fals

2022-01-11 16:11:05 9998

原创 solidity:4.函数可见性与修饰符

一. 函数可见性public - 支持内部或外部调用private - 仅在当前合约合约调用,且不可被继承internal- 只支持内部调用external - 不支持内部调用// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.0;contract VisibilityA{ uint public x; function t1() public pure returns(string memory) {

2022-01-07 10:46:36 11175

原创 基于RSA的t-out-of-n OT协议

在1-out-of-2 不经意传输协议(OT)中,发送方(sender)有两个秘密输入(X0,X1),接收方(receiver)有一个选择比特σ\sigmaσ∈\in∈{0,1},双 方执行完协议之后,receiver得到输出Xσ\sigmaσ,sender不知道receiver的输入比特σ\sigmaσt-out-of-n OT 协议是指sender 将 n 个秘密消息加密后发送给receiver,receiver方只能恢复其中t个消息与1-out-of-2 OT相比,t-out-of-n OT 更具

2021-12-22 10:49:52 990

原创 安全多方计算之BGW算法

BGW协议由Ben-Or等人于1988年提出来的,是早期支持多方安全计算的协议之一,其算法原理是基于Shamir秘密共享机制,BGW协议支持加法、数乘以及乘法运算Shamir秘密共享原理可参考:shamir算法原理Shamir秘密共享算法实现可参考:shmir算法实现基于Shamir秘密共享机制的MPC原理其实很简单,看下面例子:WXYZ分别拥有秘密abcd,现在想秘密计算abcd的和,可以这样做,W将a分成四份,分别将a2/a3/a4发送给XYZ,XYZ执行同样操作;然后W计算a1+b1+c1+d

2021-11-19 15:42:17 5757

原创 shamir秘密共享 go语言实现

算法原理参考:shamir 秘密共享大素数p的选取,这里选取的是128bit大素数func prime128Bit() *big.Int { p := big.NewInt(2) p.Exp(p, big.NewInt(127), nil) p.Sub(p, big.NewInt(1)) return p}Share和Polynomial 结构体定义,Share结构体定义了参与者拥有的秘密(x,y), Polynomial结构体定义了多项式,多项式的「知识」即该多项式的系数,知道多

2021-11-10 15:59:16 1202 3

原创 zkSnarks:证明问题到QAP的转换

许多待证明的问题可以表示为多项式函数的形式,而一个多项式函数可以转化为一个算术电路,已经有文献证明算术电路可以转换成QAP问题,基于QAP问题可以构造zkSNARKs,所以基于QAP问题构造zkSNARKs的第一步是将待证明问题转换成QAP问题,本文主要讲解如何将待证明问题转换成QAP问题。QAP定义:给一系列多项式以及一个目标多项式,是否能根据这一系列的多项式,求得它们的一个线性组合,刚好可以整除目标多项式,如下描述,给定一个解{ai}i=0−>n\{a_i\}_{i=0->n}{ai​}

2021-11-04 16:57:04 1183 5

原创 solidity:3.数据存储位置

所有的引用类型都有一个额外注解(storage、memory、calldata),来说明数据的存储位置,上节提到的mapping、struct、array都是引用类型storage - storage变量永久存储在区块链上memory - memory变量则是临时的,当函数调用完成时被移除calldata - 效果同memory,只不过只用在external函数调用中数据存储位置不同,赋值行为也会不同,下面看几个案例:storage to storagestorage状态变量 ->

2021-10-27 18:34:52 10505

原创 solidity:2.mapping、array和struct

一 . mapping​ 映射(mapping)在声明时的形式为 mapping(KeyType => ValueType),可以根据KeyType 得到ValueType​ KeyType 除数组类型(除bytes和 string)是不可以作为 KeyType,其它类型均可以作为KeyType​ ValueType可以是包括映射类型在内的任何类型contract mapTest1 { mapping(address => uint) myMap;

2021-10-26 17:48:37 995

原创 solidity:1. 变量和常量

一 . Solidity 支持三种类型的变量:状态变量 – 变量值永久保存在合约存储空间中的变量。局部变量 – 变量值仅在函数执行过程中有效的变量,函数退出后,变量无效。全局变量 – 保存在全局命名空间,用于获取区块链相关信息的特殊变量。状态变量contract Test { string public name; function setName(string memory _n) public { name = _n;

2021-10-22 14:56:00 6000

原创 零知识证明框架:gnark

一. 零知识证明的一般构造步骤zk-SNARKs是一种新颖的零知识证明,一般构造流程图如下,首先将一个NP问题拍平(Flatten)构成电路(若干个乘法门/加法门构成),在电路的基础上构造约束,也就是R1CS,有了约束就可以把NP问题抽象成QAP问题。有了QAP问题的描述,就可以在QAP上构建zkSNARKs。二. gnarkgnark是consenSys开发的一个zkSARNK实现,采用Go语言,目前支持groth16,github地址:https://github.com/ConsenSys/g

2021-10-14 11:42:21 1782 4

原创 fabric运维监控:prometheus配置热更新

在上一篇fabric运维监控:prometheus+grafana框架搭建中搭建了prometheus+grafana监控框架,但这里存在一个问题,所有监控job都提前写好在配置文件prometheus.yml中,后面新增job时,都得手动修改配置文件、重启服务,如当用prometheus去监控baas平台时,如何做到prometheus动态监控新增的节点?Prometheus提供了多种动态服务发现的功能,这里以consul为例介绍动态加载配置文件过程1 . 安装consul(docker 方式)do

2021-10-08 16:28:09 6631

hyperledger-fabric-ca-linux-amd64-1.4.9.tar.gz

hyperledger-fabric-ca-linux-amd64-1.4.9.tar.gz

2021-01-07

fabric-零知识证明-idemix

fabric-零知识证明-idemix

2021-01-05

fabric 2.3 二进制文件

fabric 2.3 二进制文件

2020-12-29

毕业答辩模板【0830更新】.zip

毕业答辩ppt模板,这里有100MPPT模板,祝你乘风破浪,答辩顺利,论文顺利,找工作顺利,毕业愉快

2020-10-30

Spring Data.zip

JPA的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强

2020-10-30

2018脱虚入实:区块链技术发展回顾和展望-20180119-申万宏源-39页.pptx

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。

2019-11-03

技能树.txt

c++技能树 C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的。。。。。

2019-11-03

IBM hyperledger.zip

Hyperledger (或 Hyperledger项目)是一个旨在推动区块链跨行业应用的开源项目, 由 Linux基金会在2015年12月主导发起该项目, 成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊。

2019-11-03

Pedersen承诺.pdf

**Pedersen承诺-**用来达到匿名保密交易的协议,简单来说你转给我5个token,在其他人不知道数额和地址的情况下,保证这笔交易是有效的,任何人在区块浏览器上都查不到数额和地址信息

2019-11-03

零知识证明.zip

零知识证明在区块链中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。

2019-11-03

信道编码简介

信道编码,也叫差错控制编码,是所有现代通信系统的基石。几十年来,信道编码技术不断逼近香农极限,波澜壮阔般推动着人类通信迈过一个又一个顶峰。5G到来,我们还能突破自我,再创通信奇迹吗?

2018-10-26

量子计算机

什么是量子计算,以及它的革命性在哪里?本书对量子计算的前世今生进行了详细研究和梳理。

2018-10-26

区块链实战

本书讲述了区块链在数字货币领域、金融领域、物联网领域、大数据领域、医疗领域、教育领域、公证领域等七个领域的应用。

2018-10-26

hypeledger 环境搭建

手把手教你基于CentOS7环境下的的HyperLedger Fabric1.0的环境搭建。

2018-10-26

c++面试宝典

c++面试宝典,对企业招聘C++程序员需要掌握的知识进行了系统全面的总结,以帮助读者进行充分的面试准备。

2018-10-26

大数据技术之Zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2018-10-26

正则表达式匹配规则

一张图片详细描述了正则表达式匹配规则,你值得拥有。

2018-10-26

超级账本fabric-ca

Fabric CA为Hyperledger Fabric行使证书机构的功能。主要提供以下功能: 身份注册,或者将连接到LDAP作为用户注册; 颁发登录证书(ECerts); 颁发交易证书(TCerts),保证链上交易的匿名性与不可连接性; 证书续期与撤销

2018-10-26

go语言高级编程

Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。同时Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助程序设计师处理琐碎和重要的内存管理等问题。Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。

2018-10-26

SQL入门书籍

本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle、SQL Server、MySQL、DB2、PostgreSQL、SQLite等各种主流数据库提供了大量简明的实例。与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极强。通过本书,读者能够从没有多少SQL经验的新手,迅速编写出世界级的SQL!

2017-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除