区块链技术与应用学习笔记(12-13节)——北大肖臻课程

devtools/2024/11/14 2:58:36/

目录

12.BTC-匿名性

一、什么是匿名?

1,有可能破坏比特币匿名性的两个方面

2,如何提高匿名性 一个比特币用户能采用什么样的方法尽量提高个人的匿名性?

分解:

1、网络层怎么提高匿名性?

2、应用层怎么提高匿名性?

零知识证明

13.BTC思考

哈希指针:

区块“恋” :

分布式共识 :

BTC的稀缺性:

量子计算 :

总结:

结语:


12.BTC-匿名性

一、什么是匿名?

一般来说,匿名是跟隐私保护联系在一起的。比特币中不要求用真名,可以用公钥产生的地址,所以比特币具有一定的匿名性。也就是你可以产生任意多的地址,然后用不同的地址干不同的事情。它用的是化名,但它不是完全没有名字,所以有人把它称为 preudonymity。

1,有可能破坏比特币匿名性的两个方面

钱包关联性:一个人可以生成很多个地址账户但这些地址账户是有可能被关联起来的。

现实关联性:是这个地址账户跟现实世界中的身份也可能产生关联。什么时候会有关联?什 么情况下别人有可能知道比特币账户对应的现实生活中的哪个人呢?

2,如何提高匿名性 一个比特币用户能采用什么样的方法尽量提高个人的匿名性?

比特币系统是运行于应用层 (application layer) 的,底层是 (network layer)。所以要提高匿名性可以从两个方面入手。

分解:
1、网络层怎么提高匿名性?

网络层的匿名性学术界已经有了很好的方案:多路径转发。跟洋葱路由(TOR)是一样的原理。即消息不是由发出者直接发送给接收者,中间要经过很多次转发。中间的每一个节点,只知道它的上一个节点是谁,但并不知道最早发出消息的人是谁。当然中间一些节点可能是坏的,但路径上只要有一个节点是诚实的,就能够把最初发起人的身份隐藏起来。

2、应用层怎么提高匿名性?

1 coin mixing把不同人的币混在一起(coin mixing),即把你的身份跟别人的身份混在一起,让别人分不清楚谁是谁。 2 在线钱包和交易所在线钱包并不保证要履行 coin mixing 的功能。还可以通过加密货币的交易所,交易所一般有天然的 coin mixing 的性质。前提是交易所不会泄露提币、存币的记录,否则也是不行的。

零知识证明

零知识证明:一方(证明者)向另一方(验证者)证明某一个陈述是正确的,而不需要透露除该陈述是正确的之外的任何信息。

同态隐藏:零知识证明的数学基础是同态隐藏。

盲签:用户 A 提供序号,银行进行签名但此时看不到序号的内容,A要取钱所以银行要 减少A的存款。A 给 B转账交易的时候把序号和签名给B,这个时候序号是明文,B是可以 看到序号的具体内容的。B 把序号和签名给银行验证,这个时候序号也是明文,这一步验 证的目的是检测 double spending。这样设计的好处是:银行不知道 B 的币是从哪来的。

零币和零钞:它们也是加密货币,跟比特币是一类属性比特币在很大程度上提供了匿 名性,但它不能完全消除关联性,那么我们能不能设计一种新的加密货币,这个货币从一开 始的结构设计上就用了密码学的原理保证了匿名性,所以就有了零币和零钞。零钞没有基础 币,是完全的零币。零钞和零币也不是100%匿名安全的,在影响匿名安全的因素中依然有 一个因素无法解决,就是与实体发生交互的时候,比如有人想拿这些币干坏事,把很大的 金额转换成这种加密货币的时候,或者是把这些加密货币转换成现金的时候,仍然要暴露 身份。依然无法百分百匿名。

13.BTC思考

哈希指针:

BTC系统中很多地方使用到了哈希指针。指针保存的本地内存地址,只有在本地计算机上才具有意义,如果发送给其他计算机就没有意义了。那么在区块发布时候,哈希指针如何通过网络进行传播?所谓哈希指针,只是系统中一种形象化的方法。实际应用时候,只有哈希而没有指针。在block header中只有hash值,没有指针。那么如何查找到前一个区块的内容?全节点一般将区块存储于一个key-value数据库中,key为哈希,value为区块内容。常用的key-value数据库为levelDB,只要掌握到最后一个区块的哈希值即可依据哈希值一直往前找到区块链所有内容。有些节点只保存区块链部分信息,如果需要用到前面的区块,可以问其他节点要。哈希指针性质保证了整个区块链内容是不可篡改的。

区块“恋” :

N个人只持有完整私钥一部分这样做有什么问题?如果按照这种方法,将私钥分为N 份。但这样会有一系列问题。一. 如果N个人中任意一个人忘记私钥,则无法将钱取 出。二.截断私钥长度,会降低安全性,因为私钥长度会直接影响破解难度(2^256 远远大于 2^128),之间难度差距远远不止一倍。可见,对于多个人账户,应该使用 多重签名,而非截断私钥的方法)三.如果分手,该钱变成死钱,一直保存在UTXO 集合中,对矿工不友好。

分布式共识 :

之前有提及,理论上来说,分布式系统不可能达成共识。但实际中为何变成可能了? 严格来说,BTC系统共识随时可能被推翻,例如分叉攻击导致系统回滚。此外,理论 和实际存在差异。不可能结论针对特定模型,实际中对模型稍微修改或添加线下方法即可将不可能变为可能。

BTC的稀缺性:

为什么要挖矿?因为有收益,且收益大于开销。早期BTC难度低且出块奖励高,从而吸引矿工。 之前有提到,BTC总量固定,实际上,总量固定的东西并不适合作为货币,这也就决定了BTC并不能在未来完全颠覆现有货币体系。以太坊中便没有BTC中出块奖励定期减半的做法,此外,某些新型货币会自带通货膨胀的功能。 对个人来说,通货膨胀并非好事,因为钱不值钱了。但人类每年创造的价值,如果用总量固定的东西作为货币,则其只会越来越值钱,而这会导致拥有者不断看着其升值,其他没有的人无论如何奋斗都赶不上

量子计算 :

会不会BTC这种建立在密码学上的加密货币,在量子计算出来后会不会变得不安全? 一. 量子计算距离使用仍然有很长距离 二. 量子计算若真正使用到破坏现有加密算法,对传统金融业的破坏仍然是最大的。 三. 实际中使用的并非公钥,而是可以用公钥哈希。而哈希函数一般都是不可逆的, 所以即使量子计算也无法反推私钥。BTC中用的SHA-256,无论输入多大,最终结 果都为256位,必然会导致信息丢失,无法反推原本数据。

总结:

加密可逆、哈希不可逆;加密不损失信息、哈希破坏信息

结语:

通过对于BTC的基础学习,我了解到比特币自身设计的精妙,以及其内部可能存在的缺陷,比特币作为当今区块链市场不可替代的存在,但比特币挖矿也有自己的缺陷,耗电量大等。


http://www.ppmy.cn/devtools/16742.html

相关文章

致力于为企业提升媒体宣传的一种新策略-软文发稿和投放

随着新媒体时代的快速发展,媒体宣发的方式也在不断迭代,其中,“软文发稿”成为了许多企业非常看重的一种媒体宣发方式。那么,什么是“软文发稿”呢?这是一种通过撰写有新闻属性的广告文章,将企业的品牌、产…

SpringCloud使用Nginx代理、Gateway网关以后如何获取用户的真实ip

前言 本文转载自: www.microblog.store,且已获得授权. 一、需求背景 微服务架构使用了Nginx代理转发、并且使用了SpringCloud的Gateway统一控制所有请求,现在有个需求: 做一个日子记录切面,需要记录用户请求的ip地址。 在上述双重背景下…

K8S Service 常见问题

Service 问题排查 为了演示需要部署以下服务。 apiVersion: apps/v1 kind: Deployment metadata:name: busyboxnamespace: appslabels:app: busybox spec:replicas: 1selector:matchLabels:app: busyboxtemplate:metadata:labels:app: busyboxspec:containers:- name: busybo…

网络安全之弱口令与命令爆破(上篇)(技术进阶)

目录 一,什么是弱口令? 二,为什么会产生弱口令呢? 三,字典的生成 四,使用Burpsuite工具弱口令爆破 总结 一,什么是弱口令? 弱口令就是容易被人们所能猜到的密码呗,…

先进制造aps专题三 为什么java语言不适合作为aps算法的开发语言

为什么java语言不适合作为aps算法的开发语言 主要两个原因 1 java的list在特定位置插入,其实是重新生成一个新list,而不像c就是指针操作 2 数据量大,运行时间长,会跑崩 所以商业aps产品,都是清一色的用c写aps算法 先进制造…

centos7.9下安装SVN服务

一、安装subversion yum install -y subversion #安装svn mkdir -p /data/svnrepos/java #自定义svn仓库位置/data/svnrepos,自定义一个项目叫svn(这里新建目录) svnadmin create /data/svnrepos/java #创建一…

jenkins自动化举例

使用 Jenkins 可以显著提高工作效率: 1. **自动化构建**: - 假设您是一个开发人员,需要频繁地编译和测试代码。手动执行这些任务可能会非常耗时。使用 Jenkins,您可以设置自动化构建流程,每当您提交新代码时&#…

如何优雅的实现 iframe 多层级嵌套通讯

前言 在前端开发项目中,不可避免的总会和 iframe 进行打交道,我们通常会使用 postMessage 实现消息通讯。 如果存在下面情况: iframe 父子通讯iframe 同层级通讯iframe 嵌套层级通讯 当面对这种复杂的情况的时候,通讯不可避免…