一枚电子货币的交易:每一笔交易通过前者和下一位交易者的公钥进行散列(哈希)进行数字签名,把交易者的数字签名放在末尾,接收者就能看到交易者的数字签名,从而进行验证该所有者。
通常的电子货币是经过第三方机构(银行)确认,交易完成一笔后,该账户上的金额就会变成相加或者相减之后产生的数额,对于所有者的每一笔交易,都是在银行确认,而第三方对每一笔交易都熟悉。所以不会有双重支付的问题。
那如果不需要第三方机构(银行)进行确认,那么该交易账本一定是公开的,该账本的之前每一笔交易都应该也是大家熟悉的,为了防止该账本有人想作恶进行双重支付。比特币就引进了时间戳服务器。
时间戳:对该区块里面的一组数据进行哈希算法得出的哈希值以及加上该时间点上交易产生的时间戳,该区块就会对全网进行广播,向大家表明,又有一个新区块生成。而时间戳可以向大家表明,在这个时间点,这个区块、交易是真实存在的。只有在该时间点存在了这笔交易,才能够获取相对应的哈希值。每一个时间戳都会将前一个交易时间戳纳入哈希算法中,而每一笔交易都会链接到上一笔交易,最后就形成了一条链条。
那么也就是说,如果想进行双重支付,在该笔已经交易过的区块更改数据,那么该区块时间戳哈希值就会产生和之前不一样的哈希值,从而和上一个区块哈希值不匹配,那么也就是说不会被整个区块链认可,如果想要让大家认可,你就需要把该区块以前的所有账本哈希值进行更改,不仅需要花费巨大的算力,同时还要超过区块的生成长度。大家一会认可那一条最长的链。所以,想要进行双重支付,你的全网算力就要超过51%才能成功。
当然,如果你真的有了51%的算力,也改不了别人的交易记录,因为没有对方的数字签名(私钥),是不可能更改的。所以,当你想用这51%的算力进行双重支付,是不是想着有着更好的办法,让自己挣到更多的比特币。那么也就是说,尽管我已经掌控到了全网51%的算力,我何尝不可以运用这51%进行老老实实的挖矿呢?这样的话,会让我得到更多的比特币。如果大家大家都知道你已经在暗中控制了全网大多数算力,带来的后果远远比正能量循环坏很多。更有趣的是当矿池一家独大的时候。就会有更多的旷工“分散风险”,跑去别的矿池进行挖矿。