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

news2024/11/17 11:38:18

目录

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.coloradmin.cn/o/1625317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序开发:1.微信开发者工具应用

app.json文件作用 pages 记录所有的页面路经 window 全局定义小程序样式 style v2代表使用全新样式 sitemapLocation 指名sitemap.json存放路经 Project.config.json 是项目配置文件,用来记录我们对小程序个性化配置 setting保存了编辑相关配置projectna…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

FFmpeg下载教程(Windows版)

文章目录 下载地址步骤 下载地址 https://ffmpeg.org/download.html 步骤

保姆级银河麒麟V10高级服务器离线安装mysql5.7数据库

离线在银河麒麟高级操作系统v10安装mysql5.7 下载mysql5.7 MySQL :: Download MySQL Community Server (Archived Versions) 2、把下载好的包上传到服务器 3、解压 [root1-0001 ~]# cd /data/mysql[root1-0001 mysql]# tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz…

大语言模型在研究领域的应用——信息检索中的大语言模型

信息检索中的大语言模型 大语言模型提升信息检索任务利用大语言模型进行信息检索大语言模型增强的信息检索模型.检索增强的大语言模型输入优化策略.指令微调策略.预训练策略.总结应用建议未来方向大语言模型对于传统信息检索技术与应用范式带来了重要影响。这两者在技术路径上具…

算法项目(9)—— 大模型实现PDF检索加QA

本文包含什么? 使用大语言模型进行多个PDF问答检索加QA.gradio实现的网页界面操作,全套代码以及代码介绍运行有问题? csdn上后台随时售后.项目说明 本项目实现使用大语言模型为核心,gradio框架,调用vicuna实现多个pdf QA 代码运行 python3 main.pyimport gradio as gr fr…

80个在线小游戏源码

源码简介 搭建80个在线小游戏网站源码,解压即可食用,支持在本地浏览器打开。 安装教程 纯HTML,直接将压缩包上传网站目录解压即可 首页截图 源码下载 80个在线小游戏源码-小8源码屋

【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护

【中级软件设计师】上午题12-软件工程(2) 1 系统测试1.1 单元测试1.2 集成测试1.2.1 自顶向下1.2.2 自顶向上1.2.3 回归测试 2 测试方法2.1 黑盒测试2.1.1 McCabe度量法 2.2 白盒测试2.2.1 语句覆盖-“每个流程”执行一次2.2.2 判定覆盖2.2.3 条件覆盖-A…

LangChain入门:24.通过Baby AGI实现自动生成和执行任务

随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。 这些代理的设计初衷就是能够独立地执行任务,并持续地追求长期目标。 在 LangChain 的代理、工具和记忆这些组件的支持下,它们能够在无需外部干预的情况下自主运行,这在真…

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构 LIMS实验室管理系统 发展历史 实验室信息管理系统(LIMS),就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现…

批量归一化(部分理解)

目的与疑惑 在深度学习中,每层输入数据的分布可能因为前一层参数的微小变动而有较大变化, 这种现象称为内部协变量偏移(Internal Covariate Shift)。 批量归一化通过规范化层输入来减少内部协变量偏移,使网络更稳定&a…

day05 51单片机-外部中断、定时器

1 外部中断——按键控制LED亮灭 1.1 需求描述 本案例通过检测SW3触发的外部中断实现P00对应LED的亮灭。 1.2 硬件设计 1.2.1 中断简介 单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包,如果你有好的功能代码想分享给其他人使用,就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

OceanBase单机版安装体验

前情提要 上周OceanBase开发者大会过后,作为观察员也来体验一下OB的安装。业内有某个国产安装用了两周,这种其实有点劝退了。话说就是10年前,没搞过Oracle的人也不用两周安装一个数据库啊。今天看看OB的(一体化)安装。…

Qt样式表的基本使用

在Qt应用程序中,样式表是一种强大的工具,可以帮助您自定义和美化界面,提升用户体验。通过使用样式表,您可以轻松地调整控件的外观和布局,从而实现更加个性化和专业化的界面设计。本文将详解Qt样式表的基本使用方法、技…

【机器学习-18】特征筛选:提升模型性能的关键步骤

一、引言 在机器学习领域,特征筛选是一个至关重要的预处理步骤。随着数据集的日益庞大和复杂,特征的数量往往也随之激增。然而,并非所有的特征都对模型的性能提升有所贡献,有些特征甚至可能是冗余的、噪声较大的或者与目标变量无关…

Java openrasp记录-01

例子1 https://github.com/anbai-inc/javaweb-expression 一个hook ognl、spel、MVEL表达式注入的例子 用的是asm5进行字节码修改 采用premain进行插桩,重写transform方法 expClassList是要hook的类,这里定义在MethodHookDesc 这里判断hook点通过类名…

ClickHouse 如何实现数据一致性

文章目录 ReplacingMegreTree 引擎数据一致性实现方式1.ReplacingMegreTree 引擎2.ReplacingMegreTree 引擎 手动合并3.ReplacingMegreTree 引擎 FINAL 查询4.ReplacingMegreTree 引擎 标记 GroupBy5.允许偏差 前言:在大数据中,基本上所有组件都要求…

【Python-Spark(大规模数据)】

Python-Spark(大规模数据) ■ Spark■ PySparl编程模型■ 基础准备■ 数据输入■ RDD的map成员方法的使用■ RDD的flatMap成员方法的使用■ RDD的reduceByKey成员方法的使用■ 单词计数统计■ RDD的filter成员方法的使用■ RDD的distinct成员方法的使用■…

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…