区块链技术与应用学习笔记(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

相关文章

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使