bsatoshi-bitcoin-blockchain-basic
Search…
1.0.0
Introduction
Part I
README
导读
什么是比特币
为什么会出现比特币
为什么要持有比特币
比特币真的是货币吗?
比特币的价值是什么
比特币是怎么产生的,它是否真实存在
什么是挖矿?
为什么挖矿可以挖到比特币
除了挖矿还可以怎么得到比特币
比特币这么多年是如何运行并未宕机的
比特币解决了什么痛点
比特币对现在社会的影响是什么
比特币会有持续的价值吗
现实社会的不公平,在比特币的世界存在吗
结束语
区块链基础-前序
区块链基础-什么是区块链
区块链基础-区块链用到了哪些技术
区块链基础-为什么会出现区块链
区块链基础-区块链是怎么产生的,它是否真实存在
区块链基础-区块链的价值是什么
区块链基础-区块链解决了什么痛点
区块链基础-区块链对现在社会的影响是什么
区块链基础-区块链未来可以应用在哪些行业
区块链基础-区块链目前是否有落地项目
区块链基础-区块链技术是否值得学习
区块链基础-公有链,联盟链、私有链、跨链、侧链是什么意思
区块链基础-什么是超级账本
区块链基础-什么是以太坊
区块链基础-什么是智能合约
区块链基础-什么是Defi
区块链基础-共识算法有哪些?Pow、Pos、Dpos、拜占庭都是什么?
区块链基础-什么是零知识证明
区块链基础-什么是闪电网络
区块链基础-什么是DAG技术
炒币基础-为什么要炒币
炒币基础-炒币真的可以财富自由吗?
炒币基础-炒币的流程是什么
炒币基础-币币交易和OTC的区别
炒币基础-炒币常用交易所有哪些
炒币基础-炒币常用钱包推荐
炒币基础-炒币常用工具推荐
炒币基础-炒币有哪些媒体值得看
炒币基础-炒币有哪些行情分析师可以看
炒币基础-怎么查询区块交易
炒币基础-怎么判断一个币是好是坏
炒币基础-怎么样埋伏百倍币?
炒币基础-炒币是投机吗?
炒币基础-一个币的基本面要怎么看,怎么识别这个币是否是cx?
炒币基础-定投炒币靠谱吗
炒币基础-Pos和Defi可以玩吗?
炒币基础-如何当一个合格的矿工?
炒币基础-为什么炒币总是卖出就涨,买入就跌?
炒币基础-庄是什么、韭菜是什么?
炒币基础-币圈有哪些不为人知的黑幕?
炒币基础-币圈和链圈的区别
炒币基础-币圈有哪些国外的渠道值得关注
炒币基础-借钱炒币这事靠谱吗?
Part II
比特币开发系列文章:虚拟机搭建比特币运行环境
加密算法系列之:des加密、aes加密、3des加密、对称加密、非对称加密、Hash 算法
bip协议是什么
raft协议是什么
pbft协议是什么
侧链开发和跨链开发需要了解哪些知识
比特币交易流程
比特币挖矿流程和默克尔树
比特币多重签名
比特币闪电网络
eos区块链环境搭建
2020年Macos最全 ETH区块链环境搭建,并使用Truffle创建第一个Dapps
eth 开发快速开发一个dapp
Part III
Go语言基础入门课程
Golang 快速搭建开发环境
Golang 基础语法
Golang 基础之编码规范
Golang 基础之接口
Golang 基础之错误处理
Golang 基础之json
Golang 基础之如何使用Go Module和Go proxy
Go语言基础常用包
Go语言之channel
Go语言之select用法
细说Go语言之Goroutine
Go语言实现pos协议
Go语言实现dpos协议
Go语言实现raft协议
Go语言实现pbft协议
Go语言系列课程之solidity语法入门
Go语言高级课程
Go语言开发区块链实战
Part IV
React实现区块链入门课程
Vue实现区块链入门课程
cosmos 开发dapp
Powered By
GitBook
区块链基础-什么是零知识证明
零知识证明 zero-knowledge proofs,简写为 ZKPs,最初由 S.Goldwasser、S.Micali 及 C.Rackoff 在 1985 年的论文《互动证明系统的知识复杂性》提出,指的是证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。允许证明者 prover、验证者 verifier 证明某项提议的真实,却不必泄露除了「提议是真实的」之外的任何信息。
其实质是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用,尤其在 NP 问题、身份验证、数字签名、水印检测、密钥交换等,可以有效解决许多问题。加密数字货币与区块链为零知识证明的应用提供了新的方向。
零知识证明(Zero—Knowledge Proof)起源于最小泄露证明。设P表示掌握某些信息,并希望证实这一事实的实体,设V是证明这一事实的实体。假如某个协议向V证明P的确掌握某些信息,但V无法推断出这些信息是什么,我们称P实现了最小泄露证明。不仅如此,如果V除了知道P能够证明某一事实外,不能够得到其他任何知识,我们称P实现了零知识证明,相应的协议称作零知识协议。
综上,零知识证明是一种特殊的交互式证明,其中证明者知道问题的答案,他需要向验证者证明「他知道答案」这一事实,但是要求验证者不能获得答案的任何信息。
童话里的零知识证明
举个最简单的阿拉伯童话《一千零一夜》里的零知识证明:阿里巴巴与四十大盗的故事其中一个片段。
阿里巴巴会芝麻开门的咒语,强盗向他拷问打开山洞石门的咒语,他不想让人听到咒语,便对强盗说:「你们离我一箭之地,用弓箭指着我,你们举起右手,我念咒语打开石门,举起左手,我念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。」
这个方案对阿里巴巴没损失,也能帮助他们搞清楚阿里巴巴到底是否知道咒语,于是强盗们同意。强盗举起了右手,只见阿里巴巴的嘴动了几下,石门打开了;强盗举起了左手,阿里巴巴的嘴动了几下,石门又关上了。强盗有点不信,没准这是巧合,多试几次过后,他们相信了阿里巴巴。
这即是最简单易懂的零知识证明。
零知识证明的性质
根据零知识证明的定义和有关例子,可以得出零知识证明具有以下三个性质:
完备性 completeness:如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
合理性 soundness:没有人能够假冒证明方,使这个证明成功。
零知识性 zero-knowledge:证明过程执行完之后,验证方只获得了「证明方拥有这个知识」的信息,而没有获得关于这个知识本身的任何信息。
零知识证明及其相关的协议的优点
随着零知识证明的使用,安全性不会降级,因为该证明具有零知识性质。
高效性。该过程计算量小,双方交换的信息量少。
安全性依赖于未解决的数学难题,如离散对数、大整数因子分解、平方根等。
许多零知识证明相关的技术避免了直接使用有政府限制的加密算法,为相关产品的出口带去优势。
零知识证明在区块链的应用
那么,利用了区块链技术的ZCash,就是利用“零知识证明”实现的匿名性。
相对于ZCash来说,比特币的转账并不是完全匿名的,只要知道了一个比特币地址,任何人都可以通过这个网站,查到这个地址的所有“消费”行为和关联。比如给谁转了账,又从谁(的比特币地址)那里收到过转账,在以区块链技术为基础的“账本”上都“本本份份”地记录着。
例如A有3个BTC,要给B转账1个BTC,那么在账本上就会记录着:A转出了两笔BTC,一笔为1BTC,转给了B;另一笔为2BTC,转给了自己。
那么利用了“零知识证明”的ZCash是怎么做到的所谓匿名呢?
ZCash的代币为ZEC。同样假设A有3个ZEC,要给B转账1个ZEC。
首先,A会将自己的1个ZEC分成若干份随机投入一系列的“混合容器”中,指定接收方B的地址,同时混入的时候还有其他交易方输出的若干份ZEC。这些ZEC又被混合容器随机拆分,再从这些被拆分生成的所有的ZEC中取出合计为1ZEC的若干份,转移到B的地址中,同时在发送的时间上也可以设置一定的延迟[3]。
其中的“混合容器”,就是一条“公有链”。经过这条公有链一系列的“混币”过程,就使得包括交易地址和具体金额在内的交易信息变得无从考证了。
当然,虽然ZCash以其匿名性使其市场热度一度很高,但其仍面临诸多障碍与“原罪”。
首先,要实现匿名性,其所需要的证明信息所花费的计算资源就非常多,带来了大量的资源浪费,也导致了其可扩展性面临巨大挑战。
另外,匿名性会带来大量的额外监管问题,一旦有不法份子利用其用户黄、赌、毒等违法领域,将会给追踪与监管带来非常大的挑战,造成一系列社会问题。
参考资料:
零知识证明,最小泄露证明系统
什么是零知识证明?
Part I - Previous
区块链基础-共识算法有哪些?Pow、Pos、Dpos、拜占庭都是什么?
Next - Part I
区块链基础-什么是闪电网络
Last modified
3yr ago
Copy link
Contents
童话里的零知识证明
零知识证明在区块链的应用