区块链技术3--BTC协议

这篇具有很好参考价值的文章主要介绍了区块链技术3--BTC协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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协议,区块链技术,区块链,数据结构,web,Powered by 金山文档
需要注意:这里包括两种哈希指针。第一种为指向前面区块的白色指针,使得各个区块形成区块链,第二种则是为了说明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:会不会被合法区块拒绝?如图所示,如果发生分叉,但区块链只承认最长合法链,随着时间推移,必然有一条称为最长合法链,这样会导致合法区块被拒绝。

btc协议,区块链技术,区块链,数据结构,web,Powered by 金山文档

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

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

5 BTC激励机制:

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

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

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

到了这里,关于区块链技术3--BTC协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.2比特币(BTC)中的数据结构

    ​ **普通指针存储的是某个结构体在内存中的地址。 假如P是指向一结构体的指针,那么P里面存放的就是该结构体在内存中的起始位置。 而哈希指针除了要存地址之外,还要保存该结构体的哈希值H()。 好处是:从哈希值这个哈希指针,不仅可以 找到该结构体的位置 ,同时还

    2024年02月05日
    浏览(41)
  • 区块链技术5--BTC网络

    用户将交易发布到BTC网络上,节点收到交易后打包到区块,然后将区块发布到BTC网络上。 比特币工作于网络应用层,其底层(网络层)是一个 P2P Overlay network(P2P覆盖网络) 。比特币系统中所有节点完全平等,不像一些其他网络存在超级节点(super node)。要加入网络,至少需要

    2024年01月19日
    浏览(45)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 分叉

    state fork 如果两个节点差不多同时挖到一个区块,这两个区块都是挂在当前的区块上的,不同节点先收到的区块不同,就会各自沿着先收到的区块往下扩展,这种时候就会出现临时性的分叉,称为 state fork ,即由于对区块链当前的状态有意见分歧而产生的分叉。 分叉攻击(

    2024年02月08日
    浏览(34)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 脚本

    比特币系统中使用的脚本语言很简单, 唯一能访问的内存空间就是一个栈 ,这点和通用脚本语言的区别很大。 这个交易有一个输入和两个输出,其中一个输出已经被花出去了,另一个没有被花出去。 输入脚本 输入脚本包含两个操作,分别将两个很长的数压入栈中。 输出脚

    2024年01月21日
    浏览(69)
  • 《区块链技术与应用》(六)——BTC分叉篇 北京大学肖臻老师《区块链技术与应用》公开课笔记

    BTC分叉篇 https://download.csdn.net/download/djklsajdklsajdlk/87177757 BTC分叉篇 GitHub链接

    2024年02月11日
    浏览(46)
  • 区块链笔记4--BTC实现

    区块链是一个去中心化的账本,比特币采用了 基于交易的账本模式 。然而,系统中并无显示记录账户包含BTC数,实际上其需要通过交易记录进行推算。在比特币系统中,全节点需要维护一个名为 UTXO(UnspentTransaction Output尚未被花掉的交易输出) 数据结构。 如图:A转给B五个B

    2024年02月11日
    浏览(45)
  • 03-BTC-协议

    目录 前言 比特币的共识协议 如何验证交易的合法性,防止双花攻击(double spending attack) 区块内容 数字货币的发行权 分布式共识(distributed consensus) 学习肖臻老师的《区块链技术与应用》公开课笔记,供学习参考。 比特币作为一种数字货币,它和纸质货币的区别就是数字货

    2024年02月02日
    浏览(35)
  • 【区块链学习笔记01】BTC-密码学原理-哈希函数

    区块链中最基础的密码学原理就是哈希算法,以下为哈希函数的简单介绍: 哈希函数是一种只只能加密但是不能解密的算法,哈希函数可以将任意长度的信息转化为固定长度的字符串。类似“8b46ec792e943de34605981980751a3c1e008218f77eeb27e474b594f7685019”这样。 当输入相同的值时,得到

    2024年02月03日
    浏览(44)
  • 区块链钱包“BTC,TRX,ETH”地址生成、助记词导入、keyStron文件生成等功能

    #最近闲着没事做,然后看听到说什么BTC疯涨,这类的小道消息。          哦豁~,这一下就让我觉得非常好奇,说,他们这些东西是怎样在链上存在的呢,然后他们那个一串串的地址又是啥,imtoken钱包又是怎么实现的呢。         根据以上疑问,我自己去研究,自己

    2024年04月14日
    浏览(49)
  • BTC交易费激增,LTC活跃地址数飙升! BRC-20爆火背后,区块链网络经历了什么?

    BRC-20 代币和 Ordinals 协议的日益普及推动了对比特币区块空间的需求,比特币区块链的费用已飙升至两年来的高点。 BRC-20代币标准在 Ordinals 协议上运行。Ordinals 允许用户通过将对数字艺术的引用写入基于比特币的小型交易中,来将数据嵌入比特币区块链。Ordinals最初实现了在

    2024年02月15日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包