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

2024-04-26 11:20

本文主要是介绍区块链技术与应用学习笔记(12-13节)——北大肖臻课程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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

这篇关于区块链技术与应用学习笔记(12-13节)——北大肖臻课程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937454

相关文章

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签