区块链学习笔记12——BTC思考

2023-11-07

区块链学习笔记12——BTC思考

学习视频:北京大学肖臻老师《区块链技术与应用》
笔记参考:北京大学肖臻老师《区块链技术与应用》公开课系列笔记——目录导航页

哈希指针

BTC系统中很多地方用到了哈希指针,比如区块的块头就包含指向前一个区块的哈希指针。指针保存的是本地内存的地址,只在本地的计算机上有意义,发送给其他计算机就没意义了。那么在发布区块的时候,哈希指针是如何通过网络进行传播?

所谓的哈希指针,只是系统中一种形象化的方法。实际应用的时候,只有哈希而没有指针。
回顾一下之前提到的Block header的数据结构:
在这里插入图片描述
图示位置即为前一个区块的哈希
因此可见,在block header中只有hash值,没有指针。那么如何查找到前一个区块的内容?
全节点一般将区块存储于一个key-value数据库中,key为哈希,value为区块内容。常用的key-value数据库为levelDB,所谓的链式结构实际上就是在levelDB中通过哈希值串连起来的,只要掌握了最后一个区块的哈希值,就可以根据levelDB把最后一个区块的内容取出来,然后这个区块的块头中又有指向前一个区块的哈希值,以此类推,最终就能把整个区块链都找出来。
有些节点只保存最近的区块链的部分信息,如果需要用到前面的区块,可以问其他的全节点要。哈希指针性质保证了整个区块链内容是不可篡改的。

区块“恋”

有情侣一起买BTC,将私钥从中截断,每人保留其中一部分。如果未来两人依旧感情很好,就可以将钱取出;如果分手,这部分钱就会永久锁死,谁也无法取出,通过区块链的不可篡改性作为两人的爱情见证。这样做有什么问题?

如此下来,N个人怎么办?
如果按照这种方法,将私钥分为N份。但这样会有一系列问题。一. 如果N个人中任意一个人忘记私钥,则无法将钱取出。二.截断私钥长度,会降低安全性,因为私钥长度会直接影响破解难度(假如一共四个人,其中三个人串通起来,他们只需要尝试264种可能就可以破解),对于多个人的共享账户不要用截断私钥的方式,用多重签名。三.如果分手,该钱变成死钱,一直保存在UTXO集合中,对矿工不友好。

分布式共识

为什么比特币系统能够绕过分布式共识中的那些不可能结论?
严格地说比特币并没有达成真正意义下的共识,因为取得的共识随时都有可能被推翻。
比如:分叉攻击,本来你以为已经达成了某个共识,分叉攻击后系统会回滚到前一个状态。理论上甚至可能一直回滚到创世区块
按照分布式共识理论的要求,共识一旦达成后就不应该再改了,从这点来看,比特币并没有绕过分布式共识中那些不可能的结论。

发明比特币的中本聪应该不是学术界出身,否则他不会设计出像比特币这样的系统
搞科研是很有意义的,但是不要被学术界的思维限制头脑,不要被程序员的思维限制想象力

比特币的稀缺性

为什么要挖矿?因为有收益,且收益大于开销。早期BTC难度低且出块奖励高,从而吸引矿工。
之前有提到,BTC总量固定,有人认为其是一个精妙的设计。但实际上,总量固定的东西并不适合作为货币,这也就决定了BTC并不能在未来完全颠覆现有货币体系。以太坊中便没有BTC中出块奖励定期减半的做法,此外,某些新型货币会自带通货膨胀的功能。
对个人来说,通货膨胀并非好事,因为钱不值钱了。但人类每年创造的价值在增多,如果用总量固定的东西作为货币,则其只会越来越值钱,而这会导致拥有者不断看着其升值,其他没有的人无论如何奋斗都赶不上(房市也是如此,炒房使一部分人靠房租便可大赚特赚,个人奋斗却很难买房。这也是我国目前存在的较大的问题,社会财富的分配不公,最终引发各种社会矛盾,需要政府解决)。

量子计算

比特币这种建立在密码学上的加密货币,在量子计算出来后会不会变得不安全。

  1. 量子计算距离使用仍然有很长距离(在BTC的有生之年,不一定会产生实质性的威胁)
  2. 量子计算若真正强大到破坏现有加密体系的话,首先冲击的是传统金融业。
  3. 比特币使用非对称加密体系,通过私钥是可以推导出公钥的,公钥推不出私钥。假如量子计算发达之后,能够从公钥推出私钥的话,比特币又加了一层保护,实际中使用的并非公钥,而是用公钥的哈希。所以如果有人想偷你账户里的钱的话首先要通过地址推导出你的公钥。相当于把公钥的哈希进行逆运算推导出公钥的本身,这一点即使是量子计算机也没法完成。(在取哈希的时候本身就会有信息的丢失,BTC中用的SHA-256,无论输入多大,最终结果都为256位,必然会导致信息丢失,无法反推原本数据。)

收钱只需要提供公钥的哈希,取钱才需要公钥和私钥产生的签名,如果有人监听到你取钱的交易,知道你的公钥是什么,他要偷你的钱,他需要实时的从你的公钥推导出你的私钥,然后产生一个和你竞争的交易,你要把钱转到你的账户,他要把钱转到他的账户,即使是量子计算机,也很难在几分钟之内把你的私钥破解了,而且他发布的交易还要抢在你之前,因为一旦你把钱转走了,他的交易就没用了,属于double spending。所以从安全性的角度来看,地址一旦用过之后就不要再用了。每次取钱最好一次性都取走。除了支付给别人的钱,剩下的钱可以转给自己的另一个账户,这样不但提高了安全性,也提高了隐私保护的程度

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链学习笔记12——BTC思考 的相关文章

  • C标准时间与时间戳的相互转换

    什么是时间戳 时间戳是指格林威治时间自1970年1月1日 00 00 00 GTM 至当前时间的总秒数 它也被称为Unix时间戳 Unix Timestamp 时间戳是能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据 通常是一个

随机推荐

  • Python 16.OpenCV 腐蚀,膨胀,开运算, 闭运算,礼帽,黑帽

    import cv2 import numpy as np img cv2 imread pic7 PNG 0 img1 cv2 imread pic8 PNG 0 img2 cv2 imread pic9 PNG 0 kernel np
  • CISSP一次通过指南(文末附福利)

    CISSP相关资料 考试机构的复习题 中英文教材 思维导图 点击文章末尾卡片 扫描二维码加我耗油免费领取资料哦 CISSP 英文全称 Certified Information Systems Security Professional 中
  • 网页参考资料

    1 w3school 2 蓝色理想 http www blueidea com 3 web前端开发 http www candoudou com
  • 福禄克铜缆测试参数:近端串扰和远端串扰参数之间的区别

    串扰指的是网线在传输网络信号中 产生了彼此的互相干扰 严重的时候会影响到网络传输得质量 网线的双绞程度越紧密 绞距越均匀时 其抗干扰的能力也会越强 且内部的串扰也会越小 在长距离网络传输中 效果也就越好 串扰会对具体的一对导线或整根电缆形成
  • linux 文件扫描程序 性能,Linux性能优化(三)——sysstat性能监控工具

    一 sysstat简介 1 sysstat简介 sysstat提供了Linux性能监控工具集 包括sar sadf mpstat iostat pidstat等 用于监控Linux系统性能和使用情况 iostat 提供CPU统计 存储I O
  • MFC异形对话框

    基本原理 获取窗体区域 指定一个颜色为透明色 遍历位图 将图上所有该色区域从窗体区域中去除 这样最后就得到了一个异形窗体 然后把背景图绘制在该窗体上 注意绘制的时候 作为透明的部分依然会被以原色绘制 但是由于绘制的地方并没有窗体 故而是显示
  • Java用链表实现队列

    链表实现队列 public class LinkedQueue class Node int val Node next public Node int val this val val public Node int val Node n
  • JQuery全部过滤选择器详细介绍上

    文章目录 JQuery全部过滤选择器详细介绍 上 基础过滤选择器 基础过滤选择器介绍 基础过滤选择器 应用实例 代码演示 内容过滤选择器 内容过滤选择器应用实例 代码演示 可见度过滤选择器 可见度过滤选择器 应用实例 代码演示 JQuery
  • 解决position:sticky元素有父盒子时不生效的问题

    当使用粘性定位的盒子出现 当滚动条滚动一段距离有效 然后就跟着滚动条滚出视口 不起作用了 要考虑看你是否设置了 html body height 100 这个代码会影响html和body的高度 不是整个视口的高度 参考 彻底理解粘性定位 p
  • Python期末大作业(学生成绩管理系统)

    学生成绩管理系统共分为五个主要功能 1 用户登陆和注册模块和退出 a 注册存入文件中 见文件 账号密码 csv b 用户登陆在文件中进行查询 见文件 账号密码 csv c 退出可以退出程序 2 新增学生数据 a 通过录入学生的姓名 学号 科
  • Thinkphp5进阶——02 日志

    1 存储位置 index php入口文件定义一个常量LOG PATH log php配置文件的path定义为常量LOG PATH index php 日志目录 define LOG PATH DIR log log php return 日
  • Vue使用Echarts在父子组件中传值问题

    最近项目上需要使用到Echarts做数据可视化 在写项目过程中发现在子组件中通过Echarts点击事件传值给父组件不起作用 研究了一下 发现是作用域问题 解决方法如下 原代码 通过保存外部作用域this得以解决 修改后代码
  • 刷题day68:零钱兑换

    题意描述 给你一个整数数组 coins 表示不同面额的硬币 以及一个整数 amount 表示总金额 计算并返回可以凑成总金额所需的 最少的硬币个数 如果没有任何一种硬币组合能组成总金额 返回 1 你可以认为每种硬币的数量是无限的 完全背包思
  • 一图曝光互联网大佬高考分数,厉害了

    往 期 趣 闻 程序员生日送什么蛋糕好 每日趣闻 人间真实 Java 版 后浪 每日趣闻 如何鉴别 996 公司 每日趣闻 一图读懂程序员 35 岁怎么转型 每日趣闻 程序员的难 领导不懂 每日趣闻 你点的每个 在看 我都认真当成了喜欢
  • How to resolve '_DllMain@12 already defined in xxx.obj' ?

    转自 http blog csdn net psusong article details 5858388 用Visual C 编写DLL 如果在new project时选了MFC DLL 而后又想写成Regular DLL 即拥有自己的D
  • 使用ksniff分析k8s pod的抓包分析

    使用ksniff分析k8s pod的抓包分析 ksniff是一个kubectl插件 利用tcpdump和Wireshark对Kubernetes集群中的任何pod进行远程捕获 可以得到Wireshark的全部功能 而对你正在运行的pods影
  • table表格中使用插槽

    效果图如下 实现代码如下
  • js 解决回调地狱的方法

    异步编程作为JavaScript中的一部分 具有非常重要的位置 它帮助我们避免同步代码带来的线程阻塞的同时 也为编码与阅读带来了一定的困难 过多的回调嵌套很容易会让我们陷入 回调地狱 中 使代码变成一团乱麻 为了解决 回调地狱 我们可以使用
  • “数字水印”来临,一波“反ChatGPT”的技术开始冒头

    数科星球 原创 作者丨数数 编辑丨十里香 ChatGPT爆火 对于这项技术来说 似乎无所不能 从作曲 小说 文章再到编剧 人们这些天为该项技术忙活的不亦乐乎 但事情很快得到了反转 有些人开始担心这项新的技术会被坏人所利用 而在版权界 生成式
  • 区块链学习笔记12——BTC思考

    区块链学习笔记12 BTC思考 学习视频 北京大学肖臻老师 区块链技术与应用 笔记参考 北京大学肖臻老师 区块链技术与应用 公开课系列笔记 目录导航页 哈希指针 BTC系统中很多地方用到了哈希指针 比如区块的块头就包含指向前一个区块的哈希指