学习笔记《区块链技术与应用》第六天 问答 匿名技术 零知识证明
问:如果转账时候收款人没在线怎么办
答:不影响记录在区块链
问:收款地址没有在全节点中出现过
答:可能的。创建账户不需要通知其他人只生成密钥对,发生交易才通知其他节点
问:私钥丢失怎么办
答:没有办法,变成死钱。交易所一般是中心化的需要提供身份验证,类似于银行,私钥也由交易所保管。丢失是可以通过身份验证找回。
问:私钥泄露,账户出现可疑交易
答:赶紧转移
问:转账写错地址怎么办
答:地址是公钥的hash。digital commitment
Proof of Burn
OP_RETURN(写在输出脚本里,验证当前交易合法性不会被执行。有人要花钱需要作为输入执行才会被执行)
…(想要存储的内容)
…
问:偷拿别人的nonce
答:coinbase tx->A , hash会改变,不可能偷答案因为和地址绑定
问:交易费该给哪个矿工
答:不需要提前知道,total inputs > total outputs, 差额就是交易费,区块差额就会给矿工。
Blockchain Size是不断增大的
Number of Unspent Transaction Outputs, 趋势是不断变大,丢失账户永久保存
Bitcoin and anonymity
pseudonymity 假名
以前银行是不实名的,谁有存折谁能取
比特币哪些情况会破坏匿名性?
将不同的地址关联到一起。addr4就是找零的地址
账户与现实关联。
任何跟实体世界发生联系都可能,比如买比特币的时候。
中本聪保密做的最后因为没花过钱。
eBay for illegal drugs
匿名性 你不想向谁暴露身份
hide your identity from whom?
问:哪些方法提高匿名性
答:
应用层:coin mixing 有提供这种服务的网站但容易跑路。在线钱包
网络层:多路径转发,洋葱路由,
零知识证明
零知识证明是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确的外的任何信息。
例, 我想你证明账户是我的,但不能把私钥给你,可以提供验证签名。此案例不是零知识证明
同态隐藏
如果x,y不同,那么它们的加密函数值E(x)和E(y)也不相同。
给定E(x)的值,很难反推出x的值。
给定E(x)和E(y)的值,我们可以很容易地计算出某些关于x,y的加密函数值。
-同态加法:通过E(x)和E(y)计算出E(x+y)的值
-同态乘法:通过E(x)和E(y)计算出E(xy)的值
-扩展到多项式
例子
Alice想要向Bob证明她知道一组数x和y使得x+y=7,同时不让Bob知道x和y的具体数值。
简单的版本
Alice把E(x)和E(y)的数值发给Bob
Bob通过收到的E(x)和E(y)计算出E(x+y)的值(利用了性质3)
Bob同时计算E(7)的值,如果E(x+y)=E(7),那么验证通过,否则验证失败。
盲签方法
用户A提供SerialNum,银行在不知道SerialNum的情况下返回签名Token,减少A的存款
·用户A把SerialNum和Token交给B完成交易
用户B拿SerialNum和Token给银行验证,银行验证通过,增加B的存款
银行无法把A和B联系起来。
,中心化
零币和零钞
零币和零钞在协议层就融合了匿名化处理,其匿名属性来自密码学
保证。
零币(zerocoin )系统中存在基础币和零币,通过基础币和零币的来回转换,消除旧地址和新地址的关联性,其原理类似于混币服务。
零钞(zerocash)系统使用zk-SNARKs协议,不依赖一种基础币,区块链中只记录交易的存在性和矿工用来验证系统正常运行所需要关键属性的证明。区块链上既不显示交易地址也不显示交易金额,所有交易通过零知识验证的方式进行。
依然不能摆脱现实关联