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 财奴币系统中的区块链
1703864819
1703864820
在财奴币中,只有在由财奴签名的区块链的交易才算数。任何人都可以通过核查财奴在区块中的签名来验证交易是否经过财奴的支持,财奴会确保不会支持企图双重支付,也就是不会支持已经支付过的币的交易。
1703864821
1703864822
为什么除了让财奴签署每个区块,我们还需要一个带哈希指针的区块链?这样做是保证仅增特性。因为财奴有可能试图增加或移除交易记录,或者改变已有交易,而一旦有了哈希指针,将会影响到后面所有的区块。只要有人监督财奴发布的最新哈希指针,变化会很明显,并可以被轻易发现。在一个财奴分别签署不同区块的系统中,你需要记录他签署的每一个签名。采用区块链,两个不同的人可以轻易验证他们确实观察到了同样的,由财奴签署的交易记录。
1703864823
1703864824
财奴币中有两种交易。第一种是造币(CreateCoins),类似于在高飞币中,高飞可以创建新币的程序,而财奴将其进行了扩展,那就是可以在一次交易中创建多个币量,见图1.12。
1703864825
1703864826
1703864827
1703864828
1703864829
图1.12 造币交易
[
上一页 ]
[ :1.70386478e+09 ]
[
下一页 ]