数字货币开发讲解如何使用“双重支付”问题,怎样解决?
来源:互联网 发布:js的location方法 编辑:程序博客网 时间:2024/05/16 17:04
区块链爱好者(QQ:53016353)
如果同一笔钱(数字货币)被重复支付两次,就是双重支付问题,解决这个问题就相当于数字货币的防伪技术。这个问题在物理货币世界并不存在,因为你无法复制黄金。在纸币中,由于纸币由造币厂发行的,设计有复杂的防伪技术,如果有人制造了假币,可以通过法律来制止这些行为。但在数字货币中,比特币会对前一次的交易和下一位拥有者的公钥签署一个数字签名,将这个签名附加在比特币的末尾发送给下一位所有者。而由于没有第三方机构去做监控,所以需要一个机制去确保比特币之前的所有者没有对更早发生的交易实施签名。比特币是怎样解决这个问题的呢:
1、 所有的交易全网公开:历史交易全网公开,那么每个账号里面有多少比特币,并不是由一个数据来表示的,而是根据历史交易得出来的。而这个历史交易链是经过全网公认的,才能保证不被造假。
2、 需要有时间戳,所有交易有先后顺序:所有交易,要按照先后顺序,给其加上时间戳,前面一笔交易成功后,整个交易链被公认后,下一笔交易是基于上一笔交易来生成的,整个交易就是一个交易链,这样才能保证不被双重支付。
3、 需要投入计算资源对交易进行确认:交易的确认,需要投入计算资源来确认,比特币引入了工作量证明,矿工投入计算力来打包交易,若需修改某个区块上的交易,需重新计算自区块以来所有区块,参考比特币网络目前的算力,这在数学上几乎是不可能的。
整个比特币系统中的每一个节点都获知每一笔交易的发生,且它们是有时间顺序的,有一个公认的交易序列。那么,只有当大部分节点都认同这笔交易是首次出现时,这笔交易才能发生。唯一可能造成这个系统崩溃的是,有一个人拥有超过整个系统51%的计算能力,那么他就能随意更改每笔交易记录,这就是所谓的“51%攻击”,但这几乎是无法实现的。
阅读全文
0 0
- 数字货币开发讲解如何使用“双重支付”问题,怎样解决?
- 区块链开发专题(数字货币如何实现交易支付)
- 如何开发数字货币
- 数字货币到底解决了哪些问题?
- 如何使用数字货币开发工具来做智能合约的测试驱动开发
- 如何开发数字货币钱包安装使用教程使用教程图解
- 如何制作数字货币
- 数字货币开发
- 数字货币钱包开发
- 数字货币开发教程
- 哪里开发数字货币
- 开发数字货币
- 怎么开发数字货币
- 谁会开发数字货币
- 开发一款数字货币
- 区块链开发专题(数字货币矿池挖矿如何挖)
- 如何在ubuntu上部署开发区块链数字货币
- 如何妥善地开发备份数字货币钱包
- redis和mongo数据备份以及恢复
- 怎样扩容virtualbox里的虚拟机(window系统)硬盘
- Android 使用代码实现一个填空题
- 通过virt-install 创建虚拟机时qemu对vcpu和ram的限制
- 前端Nginx后端Jetty分离部署
- 数字货币开发讲解如何使用“双重支付”问题,怎样解决?
- 鼠标放上去就清空文字
- RecyclerView的相关使用
- Android学习笔记17---单选按钮&复选框
- bug1234513
- p6spy配置文件属性说明
- spark streaming 检查点机制(checkpoint)
- 如何快速的开发一个完整的iOS直播app(原理篇)
- 输入小写变成大写