学院首页
区块链教程
技术进阶
什么是“双重支付”问题,怎样解决?

什么是“双重支付”问题,怎样解决?

aisen管理员船龄 8.2年来源
 61265  4
如果同一笔钱(数字货币)被重复支付两次,就是双重支付问题,解决这个问题就相当于数字货币的防伪技术。这个问题在物理货币世界并不存在,因为你无法复制黄金。在纸币中,由于纸币由造币厂发行的,设计有复杂的防伪技术,如果有人制造了假币,可以通过法律来制止这些行为。但在数字货币中,比特币会对前一次的交易和下一位拥有者的公钥签署一个数字签名,将这个签名附加在比特币的末尾发送给下一位所有者。而由于没有第三方机构去做监控,所以需要一个机制去确保比特币之前的所有者没有对更早发生的交易实施签名。比特币是怎样解决这个问题的呢:


1、 所有的交易全网公开:历史交易全网公开,那么每个账号里面有多少比特币,并不是由一个数据来表示的,而是根据历史交易得出来的。而这个历史交易链是经过全网公认的,才能保证不被造假。

2、 需要有时间戳,所有交易有先后顺序:所有交易,要按照先后顺序,给其加上时间戳,前面一笔交易成功后,整个交易链被公认后,下一笔交易是基于上一笔交易来生成的,整个交易就是一个交易链,这样才能保证不被双重支付。

3、 需要投入计算资源对交易进行确认:交易的确认,需要投入计算资源来确认,比特币引入了工作量证明,矿工投入计算力来打包交易,若需修改某个区块上的交易,需重新计算自区块以来所有区块,参考比特币网络目前的算力,这在数学上几乎是不可能的。 

整个比特币系统中的每一个节点都获知每一笔交易的发生,且它们是有时间顺序的,有一个公认的交易序列。那么,只有当大部分节点都认同这笔交易是首次出现时,这笔交易才能发生。唯一可能造成这个系统崩溃的是,有一个人拥有超过整个系统51%的计算能力,那么他就能随意更改每笔交易记录,这就是所谓的“51%攻击”,但这几乎是无法实现的。
  • 全部
  • 最佳
  • lhfly520 船员 船龄 3.1年 2017-10-29 20:39:43
    double spent!!!
  • WWBTC 水手 船龄 4.4年 2016-12-13 19:16:56
    好好看看
  • 幸运者2016 水手 船龄 4.1年 2016-11-17 16:23:39
    我是这么理解比特币协议解决双重支付问题的,不知道正确否,求大咖赐教。假如有两个或多个交易引用同一输出交易,而且在同一区块,并出现在区块链中。那么比特币协议规定,由于每笔交易打上了时间戳,最先花费同一输出交易的那笔交易被认为是有效的,其余引用同一输出交易的交易是无效的。
  • 山寨币开发 禁止发言 船龄 5.4年 2016-05-12 17:11:32
    难度值(difficulty)是矿工们在挖矿时候的重要参考指标,它决定了矿工大约需要经过多少次哈希运算才能产生一个合法的区块。比特币的区块大约每10分钟生成一个,如果要在不同的全网算力条件下,新区块的产生保持都基本这个速率,难度值必须根据全网算力的变化进行调整。简单地说,难度值被设定在无论挖矿能力如何,新区块产生速率都保持在10分钟一个。
登录 账号发表你的看法,还没有账号?立即免费 注册
推荐教程
换一批