区块链
Mr.Yi
这个作者很懒,什么都没留下…
展开
-
Merkle proof 与 Proof of Inclusion 是否完全一致
Merkle proof VS Inclusion原创 2023-03-05 10:15:32 · 247 阅读 · 0 评论 -
使用Python(Web3.py)编译智能合约中的版本问题
py-solc与solc的版本对应问题原创 2022-06-28 22:16:11 · 737 阅读 · 0 评论 -
Ubuntu如何安装任意版本的solc
在ubuntu下如何安装solc来编译智能合约原创 2022-06-27 17:04:19 · 4040 阅读 · 0 评论 -
简单粗暴-如何使用智能合约调用以太坊的自建函数(类似预编译智能合约)
问题描述:1、在以太坊新建一个函数功能例如:群签名的验证功能;2、使用智能合约来调用这个函数进行群签名的验证。需要的工具:1、以太坊geth:https://github.com/ethereum/go-ethereum.git;2、Solidly(用来本地编译智能合约):https://github.com/ethereum/solidity.git;3、Web3.py:用来发布调用智能合约;4、基于Go的群签名实现(此处就省略实现细节,用VeriGroupsign表示)。以太坊的更改:原创 2021-05-31 22:34:10 · 2119 阅读 · 5 评论 -
各种零知识证明的比较!
https://medium.com/coinmonks/comparing-general-purpose-zk-snarks-51ce124c60bd原创 2021-03-05 09:09:51 · 783 阅读 · 1 评论 -
《Pay as you Decrypt》论文项目实验记录(三):运行过程
该实验运行需要运行一个监听Python文件来当做云接收数据使用,另一个Python文件来充当用户。除此之外,两者需要与以太坊进行链接,所以需要TCP链接两个Python文件以及web3来操作链接以太坊。本地的ip都是127.0.0.1,选取两个不同的端口即可。(可以安装Pycharm方便观察)1、启动一个终端来运行以太坊geth --datadir ~/pridata init XXX.json此处的json文件需要初始化两个节点的余额,方便转账。两个节点的地址根据创建节点的地址决定,没有原创 2020-09-10 16:42:27 · 258 阅读 · 0 评论 -
《Pay as you Decrypt》论文项目实验记录(二):环境准备
1、首先需要的环境是go语言环境,通过Go语言中文网来下载合适的版本https://studygolang.com/dl。我下的是go1.12.10(#go version )把下的安装包解压的/usr/local目录下:sudo tar -C /usr/local -xzf goxxx.tar.gz解压后配置用户变量:sudo gedit ~/.profile在最后输入export PATH=$PATH:$GOROOT/binexport GOPATH=$HOME/goproject原创 2020-09-10 14:06:47 · 403 阅读 · 0 评论 -
《Pay as you Decrypt》论文项目实验记录(一):说明
实验说明:此实验是在本地Ubuntu18.04下,在以太坊上进行的实验。此实验的内容大体是用户节点通过Functional Encryption加密向云上传数据,云再对此数据进行验证,大体是一个用户与云交互的方案。此系列博客记录的是在有代码的前提下如何将实验跑成功,记录一下遇到的问题与Bug,代码暂时不便透露(因为不是我写的)。论文原文是《Pay as You Decrypt: Decryption Outsourcing for Functional Encryption Using Blockch原创 2020-09-09 20:10:53 · 330 阅读 · 13 评论 -
Ubuntu下Charm-Crypto安装
经过一下午的努力终于是把Charm-Crypto给安上了,经过查询资料,大致有三种方案(两坑一可行)。适用于我的电脑的是Ubuntu 18.04版本。第一种方案是根据连接https://pypi.org/project/charm-crypto/的教程进行安装,但是该方案的优势在于下载快速,缺陷在于Ubuntu系统仅仅更新到13+版本。第二种就是网络博客上的介绍,内容与第一种较类似,但是有16+,18+成功的例子,缺点就是bug太多,我大部分时间都耗在了这上边,而且还没有成功。第三中是github上原创 2020-07-24 22:49:47 · 1975 阅读 · 9 评论 -
Blockchain for Cloud
A Software Defined Fog Node Based Distributed Blockchain Cloud Architecture for IoT(解决了什么问题)Background:由于其视野和资源的有限性,一个fog节点无法为用户提供永久的、全面的计算服务[7]。因此,安全、可扩展和高效的资源管理可能是未来物联网实现的最重要目标之一。为了实现未来物联网的目标,需要一个...原创 2020-07-09 14:25:02 · 2869 阅读 · 1 评论 -
PLONK(零知识证明)最终版原文解读(五)--------Verifier的最终验证
这一部分比较简单直接看论文中的表述,首先验证范围是否合法在z处计算相应的参数:其中最后一步t的计算就是前边提到了用简化后的r来还原t。最后一步验证是否成立:最后的这个验证实现的实际的作用是在z与zw处打开承诺进行验证,但是P发送了多个承诺,且需要在两个点处验证,所以创造出上边这个式子来实现捆绑验证。验证过程手动推导如下:至此PLONK论文的整个过程就完成了,如果有错误欢迎评...原创 2020-03-08 16:37:41 · 1003 阅读 · 0 评论 -
PLONK(零知识证明)最终版原文解读(四)--------多项式承诺
这是P的最后一步操作,首先介绍一下什么叫密码学中的承诺:A commitment scheme is a cryptographic primitive that allows one to commit to a chosen value (or chosen statement) while keeping it hidden to others, with the ability to r...原创 2020-03-08 16:20:59 · 2729 阅读 · 0 评论 -
PLONK(零知识证明)最终版原文解读(三)-------- 范围与优化处理
上一篇提到了复制约束与总约束的推导,在总约束t(X)的最后留了一个问题就是为什么要把t(x)分三份处理,其实实际作用是为了将次数降低,使得范围规范化。除此之外,根据ZK-SNARK里的经验,我们如果传整个多项式会使得复杂度太高,所以我们可以取一个随机值,并把其带入多项式进行计算,这样P就可以只传结果的值即可。接下来需要取一个随机点z我们可以看到其实很简单,取了一个z然后带入到之前的约束...原创 2020-03-08 14:57:33 · 1164 阅读 · 5 评论 -
PLONK(零知识证明)最终版原文解读(二)--------线(复制)的约束与总约束
上篇博客介绍了PLONK对于门约束的处理,现在想除了门之外,线上也需要有一定的约束,比如对于这个电路图a1\b1\b2\a3必须是相等的,除此之外,c1\a2也是必须相等的,即一条线的两端一定相等,同门的输出也一定相等。为了保证这些情况相等而采取的约束就是复制约束。下边开始进入正题,PLONK用“坐标对累加器”实现了复制约束我们先理解坐标对累加器的原理,然后再应用到电路上。还是以一个方程...原创 2020-03-07 19:42:11 · 1495 阅读 · 1 评论 -
PLONK(零知识证明)最终版原文解读(一)--------背景与门的约束
经过几天的研究与探讨,终于算是把PLONK的几个难点解决,以博客的形式来记录一下整个PLONK的思路以及具体过程。整个博客以我自己做的ppt为主线(与上一个版本的ppt有了较大的更改),加上自己的理解,可能有些许不对的地方,共探讨。PLONK 全称介绍流程相关背景(主要是与sonic的不同之处)整个PLONK的设计思路以及涉及到的主要技术符号解释此篇论文本身有很多自己定义的符...原创 2020-03-07 16:53:45 · 3697 阅读 · 1 评论 -
双线性对在零知识证明中的运算
这几天研究的PLONK里验证的最后一步是关于双线性对的运算,所以找了一些相关公式,但是网上博客里的太官方了,大段大段的介绍背景,所以在这里我就不多说废话了,直接用在零知识证明里的推导过程总结一下。...原创 2020-03-02 17:06:52 · 1192 阅读 · 2 评论 -
tendermint建立一条自己的链----代码篇
网上看到一个建自己链的例子,但是只给了代码没有说具体怎么改,今天记录一下改的过程,下次再研究一下代码本身的意义。首先大体说一下要实现的功能:进入tendermint后可以查询初始化两个带有币的用户,以及可以实现转账功能。1、更改代码的目录在abci/example/kvstore/kvstore.go2、type Application struct { types.BaseAppli...原创 2020-03-01 16:26:52 · 903 阅读 · 3 评论 -
Tendermint的安装(Windows 10)
上一篇博客已经详细说明了如何用VSCode来安装go环境https://blog.csdn.net/guoyihaoguoyihao/article/details/104522426,我们知道tendermint可以用go语言来实现,所以这次记录一下如何在windows环境下配置tendermint。一、在GOPATH/src/tendermint目录下:$ git clone --recu...原创 2020-02-27 15:58:16 · 905 阅读 · 3 评论 -
初识PLONK(V神博客解读)
一、概述PLONK是最近兴起的零知识证明的一种,在原先零知识证明的基础上进行了优化。我读了网上对于PLONK的解读后,在此进行些许总结。首先,PLONK的改进主要可分为三个方面:1、整个方案只设置一个单独的可信设置;2、多方可参与的可信设置;3、用多项式承诺代替原先的零知识验证步骤。二、工作方法形式是“给我一个值x,我给你一个特定的程序p,这样当x作为输入进行计算时,给出一些具体的结...原创 2020-01-06 21:23:50 · 4202 阅读 · 0 评论 -
代理重加密和大火的NuCypher
近来,很多人问起我知不知道代理重加密,或知不知道NuCypher(音:妞塞福呃),在朋友圈也看到有朋友分享或评论相关内容。彭博社的一篇文章把NuCypher和PolkaDot、Cosmos以及Nervos并列,称为四大区块链技术,这可能是引起广泛关注的原因。作为密码学研究人员和从业者,我非常开心,但也发现许多人对这项技术一知半解,错误解读,故发此文解释代理重加密以及我对NuCypher的理解。注...转载 2019-12-08 17:50:41 · 1180 阅读 · 0 评论 -
Zksnark--终极原理(四)
上一篇讲到Anna不知道t,也就不能找到合适的H(t)正好使E(P(t)) = E(H(t) * Z(t))成立但是也有个问题就是系数向量A(n)、B(n)和C(n)代表要求解的问题本身。假设Prover不知道使“s . C(n) - s . A(n) * s . B(n) = H(n) * Z(n)”成立的解s,但知道另一个问题的解s’:s’ . C’(n) - s’ . A’(n) * ...原创 2019-11-18 17:10:04 · 783 阅读 · 2 评论 -
Zksnark--终极原理(三)
上一篇讲了最难的QAP的转化,目的是实现数据格式的匹配,接下来处理的是用抽样的方法来实现简洁验证。简单解释就是原来需要传输一个长式子需要花费大量时间,我们可以采取统计学中抽样的方法随机抽取一个值进行验证,这时传输的就可以使两个算好的值,这时,所取值的随机性就成了主要的问题。简单的说就是证明者既不能让验证者知道结果,验证者也不能把那个随机值让证明者知道,这时我们用同态的方法来解决这个问题。...原创 2019-11-15 21:52:10 · 861 阅读 · 0 评论 -
Zksnark--终极原理(二)
首先,zk-SNARK不能直接应用于任何计算问题;相反,您必须将问题转换为操作的正确“形式”。这种形式被称为“二次算术程序”(QAP),将函数的代码转换成这些代码本身就非常重要。与将函数代码转换为QAP的过程一起运行的还有另一个过程,这样,如果对代码有输入,就可以创建相应的解决方案(有时称为QAP的“见证”)。首先第一步将所要求的等式转化为电路如上图。转化成电路的方法可以手动操作,也可以学习最...原创 2019-11-13 22:30:53 · 1862 阅读 · 0 评论 -
Zksnark--终极原理(一)
举个差不多意思的例子:A,B两个人,B有一台设密码的冰箱,A说他知道这个冰箱的密码,但A不直接告诉B密码,而是告诉B冰箱里的一件东西,B因此知晓A可以打开冰箱。下边是一个官方的例子:提前说一下什么情况下会用到:比如:B需要人开锁并且支付报酬,A提出可以开锁;B这时会犹豫,因为他不知道A到底是不是真的会开;A也不会先开锁再拿钱。这时两难时零知识证明就可以出场了。(本文的背景是区块链上的ZK...原创 2019-11-13 20:06:58 · 1622 阅读 · 3 评论 -
xjsnark学习
xjnark简单来说就是为了更好地将代码变成电路而开发出来的一种新的语言。运行环境为JetBrains的MPS,并提供了java接口。举例说明:一个简单的线性搜索的例子:java的思路很简单就是从头到尾遍历,找到即停止。xjnark:Program LinearSearch{ public static int SIZE = 1024; //定义常数用public static &l...原创 2019-11-11 16:48:40 · 558 阅读 · 0 评论 -
论文1-----Monoxide:Scale out Blockchains with Asynchronous Consensus Zones
声明:<本篇论文是本人读此篇论文后的感想,与原论文无关,图片来源于网络与论文>论文名称:以异步共识组来拓展区块链1、传统区块链的特点传统区块链的结构有一个主链,每个块里有确认的交易;一个未确认的交易池存放交易;有一个账簿来记录整个链的状态;每个块之间通过Gossip 协议来传播;缺点是每个结点都需要复制大量的相同信息,消耗大量的资源,影响运算速度。为了解决容量以及速度的...原创 2019-10-29 21:49:18 · 1553 阅读 · 1 评论 -
区块链基础学习2
零知识证明要解决的问题是:以不透露一个论断(statement)的任何信息为前提,向你证明这个论断是对的。1、未花费交易输出/UTXO:未花费交易输出是一个包含交易数据和执行代码的数据结构,可以理解为收到的但尚未花费的加密货币清单。比特币和其他加密货币在其区块链技术中使用UTXO,以验证一个人是否拥有未使用的加密货币可用于支出。2、链:链是由区块按照发生的时间顺序,通过区块的哈希值串联而成,是...原创 2019-09-18 21:23:03 · 1277 阅读 · 0 评论 -
区块链基础学习1
1、区块链/Blockchain:区块链技术是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。2、点对点(P2P):通过允许单个结点与其他结点直接交互,无需通过中介机构,从而实现整个系统像有组织的集体一样运作的系统。3、去中心化/Decentralized:去中心化是区块链最基本的特征,指区块链不依赖于中心的管理节点,能够实现数据的分布式记录、存储和更新。4、去信任/Trust...原创 2019-09-18 10:40:48 · 1508 阅读 · 0 评论 -
基于格密码的算法研究
Q1:传统公钥密码面临的挑战(1)安全性挑战:Shor量子分解算法利用量子计算的并行性,对任意大的整数进行快速因子分解,大大降低目前普遍使用的RSA算法的破解时间。随后又出现了针对基于离散对数问题的量子求解算法。这些量子算法的提出意味着只要出现实际的量子计算机,现有的以传统公钥密码为基石建立的安全系统将丧失所有的安全性。(2)效率挑战:传统公钥密码算法的密钥长度一直在增加,使得传统密码算法码效...原创 2019-09-12 09:10:22 · 11640 阅读 · 6 评论 -
以太坊学习1
1、Ethereum代码里用到了大量的hash函数。算法中,hash函数是不可逆的。例如:h=hash(x)只能通过x算出h的值,不能通过h来逆推x的值。所以可以唯一地作某个对象的全局唯一标识符。2、Ethereum中的hash函数全部采用SHA-3的标准。3、RLP(Recursive Length Prefix(递归长度编码))。其作用是将任意字节数组([]byte)展平成无嵌套的字节数组...转载 2019-09-07 17:31:02 · 329 阅读 · 0 评论 -
智能合约---实现阶乘
一、环境:1.Linux环境2. 安装Ubuntu 16.04.Ubuntu 16: Run “Software & Update”, for “downloaded from” choose sohu.com etc. as the source.Passwd for ethtest is test.install golangin a terminal window,...原创 2019-08-30 16:56:57 · 352 阅读 · 0 评论