上一篇文章我介绍了密码学,通过简单易懂的例子说明数字货币中应用的加密技术。今天会继续帮大家搞清楚其它相关技术,数字货币是如何产生的。
图片来自于网络数字货币需要考虑两方面:货币的创造和货币的交易。
货币的创造
我们假设在一个简单的数字货币中,银行A可以随意定义一个字符串uniqueCoinID作为币。
这个币用数字形式表达:
Coin0 = Enc(创建币 + uniqueCoinID,银行A的私钥)
备注:Enc代表加密函数
实质上就是银行A用自己的私钥对"创建币+uniqueCoinID"进行加密,这样就是一个数字货币了。
如果银行A把这个数字货币卖给用户B, 那么银行A可以创造一个新的交易数据:
Coin1 = Enc(支付给 + 用户B公钥 + H(Coin0),银行A私钥)
备注:H代表哈希函数
在这里使用用户B的公钥表示用户B的身份。
用户B可以任意创建公钥来表示自己的身份,这个就是数字货币的匿名性。
这个数据公布之后,就表示用户B收到了银行A给他的数字货币。
同样的,用户B把数字货币卖给用户C,那么用户B可以创造一个新的交易数据:
Coin2 = Enc(支付给 + 用户C公钥 + H(Coin1),用户B的私钥)
这个数据公布之后,就表示用户C收到了用户B给他的数字货币。
图片来自于网络其实所谓某个人给了某个人的数字货币,只不过就是在账本上记录了这些交易记录,然后修改每个人的余额,上面的Coin0、Coin1、Coin2其实仅仅是一个交易记录。
货币的交易
如果我们把很多的交易记录放到一起,那么就形成了一个区块。可以认为一个区块就是一个子账本,子账本里面记录了很多不同人之间的交易。
通过追溯,我们就可以知道谁给了谁钱,然后就知道每个人账户里面有多少钱。
图片来自于网络但是这个会造成一个问题,就是多重支付:
用户B可以把这个币Coin1支付给用户C之后,在用户D还没收到这项交易通知时,由于网络传递存在延迟,用户B还可以把Coin1支付给用户D。
这样用户B就可以用同样的数字货币进行多重消费而无法避免。
为了解决双重支付的问题,我们需要修改一下数字货币协议的内容。
下图显示了数字货币产生和货币交易的过程:
数字货币的产生和交易区块其中显示了要消耗的币的代号以及需要交易的价值和接收者。transID73 代表了一个账本(区块),代号73。
左图在货币产生过程中,一共产生了三次货币,金额分别是 3.2、1.4、7.1。产生的货币分别给了三个人,用recipient(接收者)标出。
右图显示了交易,产生的货币,通过交易给了不同的人。交易的区块最后有一个发送方的签名,就是用发送方的私钥加密这个区块,用来确认这个确实是发送方发出来的。
在这种情况下,银行A就可以建立起一个区块链,如下图所示:
将区块链接,形成区块链每个区块链都表示产生货币或者交易货币。每个区块链都包含着上一个区块链的哈希值。
当新的区块产生的时候,银行A会来验证区块里面的每一项交易是不是有多重支付的嫌疑。如果每个交易都是合法的,那么银行A就会把新的区块加到链上,从而形成区块链。
大家可以认为区块是一个小账本,把小账本合起来变成了一个大账本,也就是区块链。
这个可以解决双重支付的问题, 但是需要银行A来执行,并没有去中心化。
预告:下一篇文章我会介绍比特币是如何实现去中心化的。
我会持续分享和区块链相关的干货,还会有一些投资建议和挖矿技巧,让小白也能看得懂。想上车的小伙伴们请多多关注、评论、点赞、转发,非常非常感谢!
网友评论