# 【小白科普】数字货币如何应对双花攻击 **Published by:** [狂想撸毛空投工作室](https://paragraph.com/@crazyweb3/) **Published on:** 2024-04-27 **URL:** https://paragraph.com/@crazyweb3/zuNVAcg17SdHiNCY0tHd ## Content 一 . 中心化的数字货币 首先我们来看一下一个非常简单的中心化的数字货币发行的模型。 中心化的数字货币发行在技术上是非常简单的,央行拥有发行电子货币的权力,并拥有一个数据库,这个数据库存储着所有的交易记录。 假设A有一张价值100元的电子货币,A将其支付给B。 B在接受这笔交易前可以申请查看央行的数据库,确认A是否有着 100元的电子货币,在确认之后,进行交易。 交易完成后。中央数据库中的数据会进行更新并且留下所有记录,这张100元的电子货币转移到B的名下,从A那边支付而来。 这样一种中心化的数字货币在效率上是极高的,可以轻而易举的避免双花攻击,而且可以追踪发行的每一笔数字货币的交易踪迹。 但是我们可以看到,这里的交易,每一笔都需要央行的确认。假如我们不想要这样一个中心化的数据储存中心,我们想构建一个去中心化的数据库,我们该怎么做呢? 二. 去中心化的数字货币要解决的两个问题 1 谁有权力进行数字货币的发行?什么时候发行?该发行多少? 这一步不同的币种有不同的方案,BitCoin限制了发行总量,并将币奖励给矿工。而有些山寨币的发币权实际上就掌握在某个人手中。 2 谁来记账?怎么验证交易的有效性?防止双花攻击?(double-spending attack) 和中心化的央行一样,去中心化的数字货币用一个大家共同维护的数据结构来进行记账,这个数据结构,就是区块链。图1:一个小型区块链示意一个小型区块链首先要发行货币,由图1可知,A发行了10个货币。 而后在交易1和交易2中他分别将这10个货币转给了B和C。 而后在交易3和交易4中,B又通过签名将5个货币转给了C和D。 在交易5中C又通过签名将7个货币转给了E。 在交易6中B通过签名将5个货币转给F。(这边交易B虽然签名了,但不会交易成功。) 每一次交易首先是记录,其次是要验证币的来源,从而避免double-spending。 在交易5中,C的7枚货币经过验证,了解到这7枚货币来自B和A的转账。而在交易6中,B的货币会验证失败,因为在先前的交易中B已经将货币转给了C和D。 如图1所示,在交易1中,A将5个币转给B,A需要知道B的公钥哈希值(代表着B的公钥),B也需要知道A的公钥,从而确认A的币的来源。 ## Publication Information - [狂想撸毛空投工作室](https://paragraph.com/@crazyweb3/): Publication homepage - [All Posts](https://paragraph.com/@crazyweb3/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@crazyweb3): Subscribe to updates - [Twitter](https://twitter.com/crazyairdrop111): Follow on Twitter