1703864770
区块链技术驱动金融:数字货币与智能合约技术 1.5 两种简单的加密货币
1703864771
1703864772
现在,让我们从密码术过渡到加密货币。我们之前的密码术干货在这里就要开始发挥作用了,今后我们会逐渐看到各部分之间如何相互联系,也会发现哈希函数和数字签名等密码程序的意义。在本节,我们将讨论两种很简单的加密货币。当然,我们也需要学习本书后面大量的内容,才能深刻阐释比特币本身的运作机制。
1703864773
1703864774
高飞币
1703864775
1703864776
第一个是高飞币(GoofyCoin,此币的创造者叫高飞),它应该是我们能想到的最简单的加密货币。高飞币只有两个规则,第一个规则是指定高飞可以随时创建新币,且这些新创建的币都属于他。
1703864777
1703864778
为创建新币,高飞生成一个他之前从未生成的唯一的货币编号(uniqueCoinID),并建立字符串“CreateCoin [uniqueCoinID]”。然后,他使用秘密签署密钥计算这个字符串的数字签名,该字符串与高飞的签名就构成一单位币。任何人都可以验证该新币包含高飞有效签名,因此该新币为有效币。
1703864779
1703864780
高飞币的第二个规则是,拥有此币的人可以将其转给其他人。转移一只币不是简单地将币数据结构发送给接受者,而是必须通过密码程序来完成。
1703864781
1703864782
假设高飞想把他创建的一只币转给爱丽丝。未达成这个目的,他需要创建一个新的声明表示“将此币支付给爱丽丝”,在此声明中“此币”就是该币的哈希指针。如上所述,身份其实就是公钥,因此“爱丽丝”指的就是爱丽丝的公钥。最后,高飞签署代表该声明的字符串。因为高飞是起初拥有该币的人,他必须签署花掉该币的任何交易。一旦由高飞签署的代表他的交易的这个数据结构存在,爱丽丝便拥有这个币。她可以向任何人证明她拥有这个币,因为她可以展示有高飞有效签名的数据结构。此外,它也指向曾经为高飞所有的一个有效币。因此,该币的有效性及所有权在系统中就不言自明了。
1703864783
1703864784
一旦爱丽丝拥有了这个币,她也可以花掉它。为达到这个目的,她创建了一个声明表示“将这个币付给鲍勃的公钥”,此时“这个币”就是她所有的那个币的哈希指针。当然,爱丽丝要签署该声明。任何看到这个币的人都可以验证鲍勃是其所有人。他们可以根据哈希指针链追溯到该币的创建及验证每一个步骤,这就是其合法所有人签署了一份声明表示“将这个币支付给[新的所有人]”,详见图1.10。
1703864785
1703864786
1703864787
1703864788
1703864789
图1.10 高飞币交易
1703864790
1703864791
注:该图示例了货币创造的过程和被花费过两次的过程。
1703864792
1703864793
总结一下,高飞币的规则是:
1703864794
1703864795
● 高飞可以通过签署声明表示他使用唯一的货币编号来创建一个新币。
1703864796
1703864797
● 币的所有人可以通过签署声明表示“将这个币转给X”(其中X为公钥),将其转给另一个人。
1703864798
1703864799
● 任何人都可以验证一只币的有效性,跟随哈希指针追溯到它是由高飞创建,并验证过程中所有签名。
1703864800
1703864801
当然,高飞币有一个致命安全隐患。假设爱丽丝通过把她签署的声明发送给鲍勃,即将她的币转给鲍勃,但并没有告诉其他人。她也可以创建另一个签名,声明将同样一只币转给了查克(Chuck)。对于查克来说,这看起来是一个完全有效的交易,而他是该币的所有人。鲍勃和查克似乎都可以有效表示自己是那个币的所有人。这个就是所谓的双重支付(double spending)——爱丽丝将同样一只币花了两次。我们一看就知道货币是不能这样花的。
1703864802
1703864803
事实上,双重支付是任何加密货币需要解决的主要问题之一,高飞币没有解决这一问题,因此不安全。
1703864804
1703864805
高飞币很简单,其货币转移机制其实与比特币非常相似,但是因为它并不安全,因此并不适合作为加密货币。
1703864806
1703864807
财奴币
1703864808
1703864809
为解决双重支付问题,我们会涉及另外一个加密货币,我们将其称为财奴币(ScroogeCoin)。财奴币是以高飞币为基础创建的,但在数据结构方面更复杂。
1703864810
1703864811
第一个主要概念如下:一个叫财奴的指定实体将负责公布包含所有发生过的交易历史记录的仅增账目(append-only ledger),账目的仅增特性保证了写入这个账目的任何数据都会永久保留下来。如果账目真的为仅增,通过要求所有的交易在被接收前都写入项目,我们可以用其防止双重支付的发生。这样,如果之前币已经转给了一个不同的所有者,大家都可以看到。
1703864812
1703864813
为执行这个仅增功能,财奴可以建立一个区块链(我们之前已经讨论过其数据结构),对于区块链,财奴要进行数字签名,因此,这从而就形成了一系列数据块,每个数据块都包含一次交易(在实践中,一种优化的做法是将多次交易放入同一个区块中,比特币就是这样做的),每个区块包含交易的ID、交易的内容,以及上一个区块的哈希指针。财奴数字签名是针对最后一个哈希指针(它约束整个结构中所有的数据),并将签名与区块链一起发布,见图1.11。
1703864814
1703864815
1703864816
1703864817
1703864818
图1.11 财奴币系统中的区块链
[
上一页 ]
[ :1.703864769e+09 ]
[
下一页 ]