如何防止double spending

Posted siyuan-jin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止double spending相关的知识,希望对你有一定的参考价值。

一、 比特币的来源

比特币一共有两种来源,一是作为挖矿者得到的coinbase铸币交易;

二是别人转账给你;

二、 比特币的交易

首先需要明确的是,比特币虽然说是分布式账本系统,但是系统中并没有维护账户信息,也就是说,我们是无法直接查到现在我的账户有多少钱的。

但是,我们可以通过计算得到,类似于加减法,从最开始得到币的交易开始进行加减法得到现在币的剩余量。

那这里币的来源怎么得到呢?

这里仍然是Hash指针。

区块链系统中其实是有两种hash指针,一个是区块和区块之间的;

另一种这里提到的用于溯源的hash指针。这个指针该顺着区块链向上溯源,得到所有收钱和花钱的交易,最终判断是否有足够的余额支付这笔交易。

从以上讨论看出,这个溯源的过程是非常消耗算力的。

三、 UTXO

区块链作为Transaction-based ledger,并没有账户的概念。

因此为了解决上述溯源的问题,比特币系统在全节点里维护了一个UTXO的系统,unspent Transaction output,没有被花掉的交易输出。这样溯源的计算量将会大大下降。

以上是关于如何防止double spending的主要内容,如果未能解决你的问题,请参考以下文章

防止在java中两次显示Arraylist值

如何防止在cleditor中输入和粘贴单引号和双引号?

java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式和其他常见Excel中数据转换问题

防止 UIView 重叠

double java默认初值

CSRF Double Submit Cookie 基本上是“不安全的”