区块链笔记4--BTC实现

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

1 UTXO :

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

如图:A转给B五个BTC,转给C3个BTC,B将5个BTC花掉,则该交易记录不保存在UTXO中,C没有花掉,则该交易记录保存在UTXO中

区块链笔记4--BTC实现
UTXO集合中每个元素要给出产生这个输出的交易的哈希值,以及其在交易中是第几个输出。通过这两个信息,便可以定位到UTXO中的输出。

1.1为什么要维护这样一个数据集合?

原因:为了防止“双花攻击”,判断一个交易是否合法,要查一下该交易所需的BTC是否在该集合中,只有在集合中才是合法的。如果想要花掉的BTC不在UTXO中,说明这个BTC要么根本不存在,要么已经被花过。所以,全节点需要再内存中维护这样一个UTXO集合,从而快速检测是否有double spending(双花攻击)

每个交易会 消耗输出,也会 产生新的输出。如图,A转给B5个BTC,之后B将其转给D,则UTXO中会删掉A->B这一交易记录,同时会添加B->D这一交易记录。
区块链笔记4--BTC实现
假如有人收到BTC转账,但一直不花,那么这个信息会一直保存在UTXO中。这种情况可能是该用户不想花这些BTC(如:中本聪) ,也有可能是忘记了私钥导致无法花掉。所以,UTXO是逐渐增大的,但该数据目前来说,一个普通的服务器硬盘中是可以完全保存这些数据的。每个交易可以有多个输入,也可以有多个输出,但输入之和要等于输出之和(total inputs = total outputs)。 存在一些交易的total inputs 略大于 total outputs,这部分差额便作为交易费,给了获得记账权的节点。

1.2如果仅仅设置出块奖励,那么,会不会存在节点只想发布区块获得出块奖励而不想打包交易?

解答:BTC系统设计了Tranction fee(交易费),对于获得记账权节点来说,除了出块奖励之外,

还可以得到打包的交易费。但目前来说,交易费远远小于出块奖励。等到未来出块奖励变少,可能区块链的维护便主要依赖于交易费了。

平均每隔十分钟产生一个新区块,每21万个区块,出块奖励减半,大约每隔四年半出块奖励就会减半

2 BTC区块的具体信息:

区块链笔记4--BTC实现

Block header

区块链笔记4--BTC实现
看到,nonce是一个32位的无符号整型数据,在挖矿时候是通过不断调整nonce进行的,但可以看到,nonce的取值最多为2^32 种。但并非将这些nonce全部遍历一遍,就一定能找到符合要求的nonce。由于近年来,挖矿人员越来越多,挖矿难度已经调整的比较大了(关于难度调整请关注后续博文,会有专门一篇介绍难度调整),而 2^32这一搜索空间太小,所以仅调整nonce很大可能找不到正确的结果。

3 铸币交易(coinbase):

区块链笔记4--BTC实现

每个发布区块者可以得到出块奖励,也就是可以在区块中发布一个 铸币交易(coinbase交易),这也是BTC系统中产生新比特币的唯一方式。下为一个铸币交易的内容:

区块链笔记4--BTC实现
可以看到有一个coinbase域,其中可以写入任何内容,在这里写什么都没有影响。所以可以在这里添加一些信息,便可以实现无法篡改(也无法删除)

4挖矿过程的概率分析:

挖矿本质上是不断尝试各种nonce,来求解这样一个puzzle。每次尝试nonce,可以视为一次伯努利试验。最典型的伯努利试验就是投掷硬币,正面和反面朝上概率为p和1-p。在挖矿过程中,一次伯努利试验,成功的概率极小,失败的概率极大。挖矿便是多次进行伯努利试验,且每次随机。这些伯努利试验便构成了a sequence of independentBernoulli trials(一系列独立的伯努利试验)。根据概率论相关知识知道,伯努利试验本身具有无记忆性。也就是说,无论之前做多少大量试验,对后续继续试验没有任何影响。 对于挖矿来说,便是多次伯努利试验尝试nonce,最终找到一个符合要求的nonce。在这种情况下,可以采用泊松分布进行近似,由此通过概率论可以推断出,系统出块时间服从指数分布。(需要注意的是,出块时间指的是整个系统出块时间,并非挖矿的个人)

区块链笔记4--BTC实现

系统平均出块时间为10min,该时间为系统本身设计,通过难度调整维护其平均出块时间。 指数分布本身也具有无记忆性。也就是说,对整个系统而言,已经过去10min,仍然没有人挖到区块,那么平均仍然还需要等10min(很不符合人的直觉)。也就是说,将来要挖多久和已经挖多久无关。文章来源地址https://www.toymoban.com/news/detail-510506.html

虽然这样看起来是一个冷酷的事情,过去的工作可能都会白做。但实际上这才是挖矿公平性的保障。对算力有优势的矿工来说,其之前所做大量工作仍有可能会白费。

5 BTC系统安全性分析:

5.1 可否偷币?

答案:不能。因为转账交易需要签名,恶意节点无法伪造他人签名。加入其获得记账权并硬往区块中写入该交易,大多数用户会认为其是一个非法区块,大多数算力将不认可该区块,从而沿着其他路径挖矿,随着时间推移,拥有大多数算力的 诚实的节点将会仍然沿着原来区块挖矿,从而形成一条“最长合法链”,该区块变成孤儿区块。对于攻击者来说,不仅不能偷到其他人的比特币,而且得不到出块奖励,还浪费了挖矿花费的电费等成本。

5.2可否将已经话过的币再花一遍?

如下图1,若M已经将BTC转给B,现在想再转给自己,假设其获得记账权,若按照图1方式,很明显为一个非法区块,不会被其他节点承认。 所以,M只能选择图2方式,将M转账给B的记录回滚掉。这样就有了两条等长合法链,取决于哪一个会胜出。(如果上面交易产生不可逆的外部效果,下面交易回滚便又拿回钱,从而不当获益)

需要注意的是,再挖矿之初便要选择上一个区块是谁。也就是说,并不是获得记账权之后才选择插入到哪一个区块之后。
区块链笔记4--BTC实现

5.3 可否故意不包含合法交易?

可以,但是可以等待后续区块包含,所以问题不大。实际运行中,可能由于某段时间实际交易数太多,而一个区块包含交易数存在最大值,导致某些合法交易并未被写入区块链(等待后续区块写入)。

5.4 可否挖到矿但不发布?

selfifish mining 提前挖到但不发布,继续挖下去,等到想要攻击的交易等了6次确认认为安全之后将整条链发布出去,试图回滚原来记录。这种情况,需要恶意节点掌握系统中半数以上算力才行,否则无法成为最长合法链。

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

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

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

相关文章

  • 区块链:实现无中心化互联网2.0的关键

    区块链技术是一种分布式、去中心化的数字账本技术,它允许多个节点共同维护一个完全透明且不可篡改的数字账本。这种技术首次在2008年的一篇论文中被提出,并在2009年的比特币项目中得到了实际应用。以来,区块链技术已经吸引了全球各行各业的关注,并被认为是实现

    2024年04月16日
    浏览(43)
  • 基于决策树的区块链应用:实现去中心化智能决策与管理

    作者:禅与计算机程序设计艺术 区块链技术的蓬勃发展带动着许多行业应用变革,例如金融、保险、制造等领域都在探索区块链的价值。而区块链中最常用的应用之一就是基于分布式数据库技术的去中心化智能决策系统(Decentralized Intelligent Decision-Making System)。 传统的智能

    2024年02月11日
    浏览(46)
  • 区块链(8):p2p去中心化之websoket服务端实现业务逻辑

    1 业务逻辑 例如 peer1和peer2之间相互通信 peer1通过onopen{ write(Mesage(QUERY_LATEST))} 向peer2发送消息“我要最新的区块”。 peer2通过onMessage收到消息,通过handleMessage方法对消息进行处理。 handleMessage根据消息类型进行处理 RESPONSE_BLOCKCHAIN:返回区块链,RESPONSE_BLOCKCHAIN处理进入handleB

    2024年02月08日
    浏览(47)
  • 区块链去中心化有什么优势?

    说到区块链,我们经常听到一个词“去中心化”,这也是区块链最重要的一个特性。那么什么是去中心化,和中心化相比,它又有哪些优势呢? 要想知道什么是去中心化,我们先来看看什么是中心化。简单来说,在一个体系中,一个节点要和另外的节点产生关联,就要通过特

    2024年02月03日
    浏览(50)
  • 开源与区块链:去中心化的未来

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月10日
    浏览(41)
  • 区块链发展第三阶段:去中心化金融

    2017年12月17日,以太坊上第一个完全去中心化的数字稳定币——Dai正式发布,它是去中心化金融(DeFi)的基石。DeFi的最终目的是构建一个透明的金融系统,这个金融系统向任何可以连接互联网的人开放服务,而且无须获得任何组织的许可,不用依赖于第三方机构即可满足个人

    2024年01月16日
    浏览(62)
  • 解码区块链:探索去中心化世界的奥秘与潜力

    区块链技术作为一项创新性的技术,引领着数字时代的变革。它以其去中心化、透明性和安全性的特点,为各行业带来了无限可能。在本篇博客中,我们将深入解析区块链技术的基本原理、核心特征和应用场景,探讨其在金融、供应链、社交媒体等领域的潜力,并展望区块链

    2024年02月07日
    浏览(55)
  • 区块链(6):p2p去中心化介绍

    1 互联网中中心化的服务和去中心化服务的概念介绍 目前的互联网公司大都是中心化的 区块链网络大多是去中心化的 去中心化 2 p2p的简单介绍 java 网络编程:socket编程,netty编程,websoket简单介绍 2.1 节点是如何提供服务的(web编程实现)

    2024年02月08日
    浏览(53)
  • Blockchain与去中心化金融系统的区块链应用

    作者:禅与计算机程序设计艺术 在《A股投资的“冰与火”效应——互联网大佬们的“冷门生意”》中,我们提到在2017年底之前,市场对私募股权基金、期货公司、贵金属交易所等市场的参与率并不高。但到了2018年初,随着各类投资平台的涌现、热钱的涌入,资本市场开始抢

    2024年02月09日
    浏览(47)
  • 区块链创新:探索 Web3 的去中心化应用

    引言 随着数字化时代的发展,区块链技术作为一种颠覆性的技术正在改变着我们的社会和经济生活。在这个背景下,Web3的概念应运而生,它代表了一种去中心化的互联网新时代,为去中心化应用(DApps)的发展提供了坚实的基础。本文将深入探讨Web3的去中心化应用,探索其

    2024年04月08日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包