1数字货币中经常出现的问题:

  • 双花攻击 数字货币本身为带有签名的数据文件,可以进行复制。即:对用户来说,可以将同一货币花费两次。

对货币添加唯一编号(不可篡改),每次支付向货币发行单位查询真伪。 该方法每次交易都需要依赖于第三方机构来判断货币真伪且防止双花攻击。是一个典型的第三方中心化方案。现实中,我们通过一些APP进行交易时,必然会依赖于第三方机构。由于这些第三方机构具有较高的可信度,有政府进行保护,所以可以采用这种方案。 但是,很多场景下,并不存在这样一个可信赖的第三方机构。基于这个背景,以去中心化思想为核心的BTC系统便吸引了人们的注意力


2去中心化需要解决的问题:

2.1数字货币的发行由谁执行?发行多少?什么时候发行?在传统中心化货币体系中,这些问题我们可以交给第三方机构(如:央行)。当引入去中心化思想后,系统中节点平等,交易不通过第三方,那么货币发行权的分配必然是一个需要解决的问题

在BTC系统中由挖矿来决定货币发行权和发行量

2.2如何验证交易是否有效?如何防止双花攻击?同样,在传统中心化体系中,该问题的解决由第三方机构来完成。而剔除这一机构后,交易双方如何能够验证交易的有效性?如何防止系统中恶意用户作恶获取收益?这也是去中心化交易系统需要解决的问题

该问题的解决依赖于系统中共同维护的一个数据结构,记录货币的使用情况(是否被花过?被谁花过?)。该数据结构由系统中全体用户共同维护,保证了交易的有效性,该数据结构即是区块链。


3案例说明

如下假定A获得铸币权,新发布了10个比特币(该交易称为铸币交易)。A将10个比特币转给了B(5个)和C(5个),A对该交易进行签名,同时该交易需要说明所花掉10个比特币来源(来自铸币交易)。之后,B将自己的5个比特币转给C(2个)和D(3个),该交易需要B的签名,该交易需要说明所花掉的5个比特币来自于第二个交易中。然后,C将自己所拥有的全部7个比特币都转给E,并对该交易签名,可以发现该交易中C的比特币来源于两个交易中。这样,就构成了一个简单的区块链。【红色部分为比特币来源】

需要注意:这里包括两种哈希指针。第一种为指向前面区块的白色指针,使得各个区块形成区块链,第二种则是为了说明BTC的来源(红色指针),是为了说明BTC的来源并非凭空捏造,可以防止双花攻击。在实际进行交易时,需要付款人的签名和收款人的地址,在BTC系统中,该地址即为收款人公钥的哈希,可类似认为是银行账户。在交易中,收款方需要知道付款方的公钥,从而才能验证该签名是有效的。即A需要提供自己的公钥(实际上其他节点都需要知道付款方的公钥,验证交易合法性),但是不免有人可能会从中作梗,伪造A的公钥“偷走”BTC。在BTC系统中,通过执行脚本实现上述验证过程。将当前交易的输入脚本和前一个交易的输出脚本(说明币的来源)拼接起来执行,如果顺利执行,说明交易时合法的


4BTC共识协议:

背景:假设系统中存在部分节点有恶意,但存在比例较小。大多数节点为“好”的节点,在这种情况下进行共识协议设置。 想法1: 直接投票 某个节点打包交易到区块,将其发给其他节点,其他节点检查该候选区块,检查若正确投赞成票,若 票数过半数,加入区块链。
存在的问题1——恶意节点不断打包不合法区块,导致一直无法达成共识,时间全花费在投票上。
存在的问题2——无强迫投票手段,某些节点不投票(行政不作为)。
存在的问题3——网络延迟事先未知,投票需要等多久?效率上会产生问题。 更大的一个问题——membership。如果是联盟链,对加入成员有要求,可以基于投票。但,BTC系统,任何人都可以加入,且创建账户及其简单,只需要本地产生公私钥对即可。只有交易的时候,BTC系统才能知道该账户的存在。这样,黑客可以使用计算机专门生成大量公私钥对,当其产生大量公私钥对超过系统中一半数目,就可以获得支配地位( 女巫攻击)。所以,这种简单的投票方案也是不可行的。

BTC系统中采用了很巧妙的方案解决这个问题。虽然仍然是投票,但并非简单的根据账户数目,而是依据计算力进行投票。 在比特币系统中,每个节点都可以自行组装一个候选区块,而后,尝试各种nonce值,这就是挖矿。[H(block header)<=target] 当某个节点找到符合要求的nonce,便获得了记账权,从而可以将区块发布到系统中。其他节点收到区块后,验证区块合法性,如果系统中绝大多数节点验证通过,则接收该区块为最新的区块并加入到区块链中。

4.1 可能存在的问题1:会不会被合法区块拒绝?如图所示,如果发生分叉,但区块链只承认最长合法链,随着时间推移,必然有一条称为最长合法链,这样会导致合法区块被拒绝。

4.2 可能存在的问题2:分叉攻击 如图所示,A用户对上面的A转给B的记录回滚,从而非法获取利益。在两条链上,发现交易都合法。这是一个典型的双花攻击。A给B转账后,用分叉攻击将钱又转回来,覆盖掉原来的记录。 在比特币系统中,这种情况实际上很难发生。因为大多数矿工认可的是最长的合法链,会沿着上面的链继续挖下去。而A这个攻击者要想回退记录,就必须使得下面的链变得比上面的链还长。理论上来说,攻击者需要达到整个系统中51%的计算力,才能使得这种攻击成功

区块链正常运行场景下,也可能会发生分叉。当两个节点同时获得记账权时,会有两个等长的合法链。在缺省情况下,节点接收最先听到的区块,该节点会沿着该区块继续延续。但随着时间延续,必然有一个链胜出,由此保证了区块链的一致性。(被扔掉的区块称为“孤儿区块”)


5 BTC激励机制:

5.1 为什么系统中节点要竞争记账权?需要提供算力和电力成本,节点为什么要去做?

比特币系统设计之初便考虑到了这个问题,那就是引入 激励机制。比特币通过设置 出块奖励来解决该问题,一个获得合法区块的节点,可以在区块中加入一个特殊交易(铸币交易)。事实上,这种方式也是 唯一一个产生新比特币的途径。
比特币系统设计规定,起初每个区块可以获得50个比特币,但之后每隔21万个区块,奖励减半。

但是这样就可以了吗? 区块中保存交易记录,那么,会不会存在节点只想发布区块而不想打包交易?中本聪在设计该系统时,引入了交易费。在一个区块中,其输入 输出,差值便是给区块所属节点的手续费。这些会在后续文章中详细说明。

区块链技术3--BTC协议相关推荐

  1. 万向区块链技术研究报告 | 雪崩协议 (Avalanche)技术调研

    区块链技术迅猛发展,新想法.新概念.新名词层出不穷.万向区块链因此推出"技术研究报告"专栏,定期与大家分享在区块链行业创新及热门技术方面的研究成果,带领大家第一时间研究学习新技术, ...

  2. 韩国各大银行纷纷开始引进区块链技术

    自去年新韩银行正式启用区块链技术之后,最近韩国IBK企业银行为了开发区块链技术已与金融科技企业携手合作.由此可见,韩国各银行纷纷开始积极引进区块链技术,韩国银行的"区块链化"有望得 ...

  3. 浅析区块链技术综述——2019年3月份

    浅析区块链技术综述 FJTCM区块链技术开发学习小组 时间 :2019/03/27 目录 摘要............................................ 1 Abstra ...

  4. 区块链技术与应用-BTC

    北京大学肖臻老师<区块链技术与应用>公开课 BTC-密码学原理 Crypto-Currency Cryptographic hash function: collision resista ...

  5. [北大肖臻-区块链技术与应用笔记]第八节课——BTC 分叉

    文章目录 [北大肖臻-区块链技术与应用笔记]第八节课--BTC 分叉 state fork protocol fork 硬分叉(hard fork) block size limit 软分叉(soft ...

  6. BTC:简单易懂比特币之比特币的神奇——区块链技术的体现

    BTC:简单易懂比特币之比特币的神奇--区块链技术的体现 目录 BTC的七大特殊之处 BTC的七大特殊之处 1.一个没有CEO的公司,管理几十万员工: 2.每个员工自私自利,争权夺利,公司运作9年风生 ...

  7. 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...

  8. 北京大学肖臻老师《区块链技术与应用》公开课笔记13——BTC匿名性篇2(零知识证明)

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币回顾问答篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal ...

  9. 区块链技术之以太坊ETH白皮书

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 基于中本聪区块链比特币1.0之后,天才少年Vitalik Buterin(V神)在2013年年末发布了以太坊白皮书,其实 ...

  10. 2019.01.07|区块链技术头条

    2019.01.07|区块链技术头条 1.科普 | 深处的蚁穴:与 Gas 相关的三种安全问题 2.科普 | OmiseGo 将如何把 Plasma 带入寻常百姓家 3.干货 | 详解 MimbleW ...

最新文章

  1. 当 Docker 遇到 Intellij IDEA,再次解放了生产力~
  2. R语言vtreat包自动处理dataframe的缺失值、计算数据列的均值和方差并基于均值和方差信息对数据列进行标准化缩放、计算所有数据列的均值和方差对所有数据列进行标准化缩放
  3. RabbitMQ消息幂等性问题
  4. access vba 常量数组赋值_聊聊 VBA 数组的那些坑
  5. 抢疯了!字节、美团《人人都要学的架构思维》完整版PDF开放下载!
  6. 织梦响应式鲜花绿植花艺类网站模板(自适应手机端)
  7. [CTSC2008]网络管理Network
  8. C#操作IIS完整解析
  9. c语言动态双端栈的原理,数据结构(C语言版)例题(第三章:栈和队列)
  10. 如何制作圆角布局..?
  11. 我的Android进阶之旅------Android实现音乐示波器、均衡器、重低音和音场功能
  12. matlab中生成瑞利信道的两种方法
  13. pdfobject.js和pdf.js的详解
  14. 网络安全----网络协议的安全性
  15. 【每日新闻】微软日本试行做四天休三天新制度 还发6000元补贴
  16. 用matlab拟合多元函,使用matlab进行多元非线性拟合的方法
  17. Pytorch模型通过paddlelite部署到嵌入式设备
  18. 20道经典Redis面试题
  19. 【双11背后的技术】AliCloudDB——双11商家后台数据库的基石
  20. Android dumpsys常用命令

热门文章

  1. 源代码管理工具——VSS详解
  2. 【MySQL】测试题01
  3. 一文详解ARP报文格式及工作原理
  4. 输入某辆小轿车三次的 耗油量(升)和行驶里程(公里),计算平均油耗(升/百公里)。
  5. 使用powerpoint简单的处理图片(用作浏览器背景)
  6. 湖北地图html代码,echarts全国省市地图代码
  7. vite+ts+vue3 知识点(定义全局函数和变量)
  8. 小程序学习历程(二):注册小程序测试号
  9. 快手版-CentOS7系统安装配置图解教程
  10. win10常用软件汇总