A Simple Cryptocurrency(简单的加密货币)
我们先了解一些比较简单的加密货币,这样可以更好的理解比特币系统的运作方式。
GoofyCoin(高飞币)
高飞币差不多是我们能想到的最简单的加密货币了。
规则:
-
Goofy can create new coins (高飞可以创造新的代币)
只要他想,他就可以创造一个属于他自己的新代币。
Goofy会生成一个独特的代币 ID,并进行数字签名。任何收到这个代币的人都可以确认签名来验证代币的真伪。 -
A coin’s owner can spend it (拥有高飞币的人可以将他转交给他人)
Goofy创造一个把代币付给 Alice的指令:这里的 Alice就是公钥的名称,哈希指针代表的就是这个拥有 Goofy签名的代币将被支付给名为 Alice的公钥。代币为Goofy所有,所以Goofy需要在任何涉及这个代币的交易上签名。一旦交易完成,Alice就拥有了这个代币,若要证明只需要出示Goofy的有效签名,并指明是Goofy所拥有的数据结构。
-
The recipient can pass on the coin again (获得高飞币的人可以再次转交给他人)
Alice继续花费这个代币,通过发布一个声明将代币交付给 Bob的公钥。Alice进行签名的一个哈希指针指向这个代币。通过追溯交易链就可以确定代币合法的属于 Bob。Goofy可以通过签发声明轻而易举的创造有独特ID的新的代币,拥有代币的人可以通过签发声明将代币传递给他人。通过追溯交易链并确认签名的有效性来确认代币的有效性。
问题:
高飞币有一个很大的安全问题。在这里 Alice将代币支付给 Bob,又将相同的代币支付给 Chuck,都拥有 Alice的签名。如果 Chuck不知道 Alice已经将代币支付给了 Bob,Chuck将认为这一切有效,自己将是代币的拥有者,Bob也同样认为自己是代币的拥有者。
但是代币的运作不应该是这样的,这就是问题所在,Alice将相同的代币花了两次,这种情况就是我们所说的 double-spending attack(双花攻击)。 双花攻击就是加密货币需要解决的关键问题之一,高飞币没有解决这一问题,所以高飞币是不安全的,不能算作加密货币。
ScroogeCoin(史高治币)
史高治币与高飞币很像,通过一种特殊的方式解决双花问题。
史高治币公开所有发生过的交易记录,以区块链的形式呈现,这上面有 Scrooge的数字签名。上图是一串区块,每一块存储着一次交易内容和 ID以及前一块内容的哈希指针。
在实际操作中,一个区块中会存储多个交易内容,如上图。Scrooge发布交易记录的意义就在于能够让我们检测到双花现象。如果接受代币的人发现不对劲可以通过查找交易记录来验证,拒绝不合法的代币交易。
交易:
-
Create coins(创币交易)
创造新的代币,与高飞币中Goofy进行的操作一致。
创造出的代币有自己的编号 Num、价值 Value以及获得者 Recipient -
Pay coins(支付代币交易)
消耗一些代币交付给不同的人,交付代币的价值总和等于消耗的代币总和,同时对交易进行数字签名,来表明同意交易内容。
代币交易有效条件:
-
consumed coins valid(消耗代币是否有效)
-
not already consumed(消耗的代币在之前交易中没有被消耗过,此次交易不是双花现象)
-
total value out = total value in(交易产出的代币总和等于代币的投入总和)
-
signed by owners of all consumed coins(被消耗的所有代币都有拥有者的有效签名)
满足代币交易有效的条件,Scrooge会接受交易,并将交易写入到区块链中,所有人都会看到这个交易。
补充:
代币是不可改变的,他们不能再分割,也不能进行组合。我们所看到是他们在一次交易中被创造出来并在随后的一次交易中被消耗。但是我们可以通过交易的形式来获得代币分割和组合的效果。如下图(分割代币):
如果A有 10代币,现在 A要给 B交付 5个代币。A将声明一个交易投入 10个代币,产出 5+5个代币,其中 5个代币交付给 B,另外 5个代币交付给自己 A’(为防止隐私泄露,可以再生成一个自己的账户,将余额转到新账户上),组合代币同理。
问题:
Scrooge表示很诚信,如果有一天Scrooge开始耍赖甚至罢工,系统将无法运作,这就是我们遇到的中心化问题。 我们改进史高治币要面对的核心技术问题就是如何去中心化,创造出在许多方面如史高治币一样运作且不需要权威中心机构的加密货币。我们需解决以下几个问题:
- 如何以去中心化的方式,提供Scrooge所提供的服务,以一种不需要对第三方进行格外信任授权的方式;
- 如何让所有人认可某一个公共区块链上发生过的交易记录;
- 如何让人们认可那些交易有效,哪些交易确切发生过;
- 如何以去中心化的方式分发ID。
解决完这些问题我们就能创造出一种很像比特币的货币了,也就是去掉了中心机构的史高治币。