一个最小可行的区块链

通过三重记账确保交易安全

Alice和Bob是邮件收藏者。一天,Alice非常想要Bob的一枚邮票又苦于没有足够的资金,于是她决定打白条。白条上有Alice和Bob的签名,同时又有一个中间人Chunk的签名,每个人都有一份白条的副本。

  1. Chunk可以验证Alice和Bob,确保没有人伪造一份不存在的白条。
  2. 如果Alice说白条是不存在的,Chunk会反驳她。

这就是一个三重记账的简单实现。但是大家很容易看出漏洞,如果Chunk串通其中一人,就会变得很麻烦,所以选择一个可信的中间人是很重要的。

用加密来确保交易安全

由于不满足于使用一个中间人,Bob发现使用公钥密码学可以消除对中介的需求。

Public-key cryptography, also known as asymmetric cryptography, refers to a cryptographic algorithm which requires two separate keys, one of which is secret (or private) and one of which is public. Although different, the two parts of this key pair are mathematically linked. The public key is used to encrypt plaintext or to verify a digital signature; whereas the private key is used to decrypt ciphertext or to create a digital signature.

公钥加密算法也称非对称加密,是指需要两个独立秘钥的密码算法。其中一个一个是私密的,另一个是公开的。公钥于私钥在数学上是有联系的。公钥用于加密明文或验证数字签名,而私钥用于解密密文或创建数字签名。

使用Chunk主要是为了解决三个问题

  • 身份验证:不能伪造成他人
  • 不可否认:参与者不能否认交易的事实
  • 完整性:交易在事后不能修改

公钥加密算法可以满足以上的需求。

  1. Alice和Bob创建一个密钥对
  2. Alice和Bob公开他们的公钥
  3. Alice打白条
  4. Alice用她的私钥加密白条
  5. Alice在白天最前面用明文写上“由Alice签名”
  6. Alice和Bob都保存一份白条

    需要注意的是,第5步只有在有人参与的情况下才需要执行,如果你不想让人知道是谁签名的这个信息,就不用写,这样也就没人知道用什么公钥来解密。

  7. Bob不知道Alice的私钥,但他知道Alice的公钥,并且用公钥去解密加密了的白条

  8. Alice没有真的加密她的白条。除此之外,她用私钥加密了白条,等于她在上面签了名,任何一个人都能用她的公钥去解密白条。

这样就满足了之前的三个条件:
- 身份验证:不能伪造成他人
- 不可否认:参与者不能否认交易的事实
- 完整性:交易在事后不能修改

Balance = Σ(receipts)

余额=账本上
白条的收入和支出和

如果你欠了别人500,又借给另一个人800,那么你的 余额 = -500+800,就是300。

这些看起来微不足道,但是公开账本的每一个人都可以计算其他人的余额。并且这不需要中间人。

多方转账和验证

现在John也加入了进来,Bob把之前的白条sha-256得到校验值(一种独一无二的文件指纹),把校验值写在新的要给John的白条上,这样就把之前的白条和新的白条联系在了一起。

  • John可以使用Alice和Bob的公钥确定之前白条的正确性
  • John确认Bob的新白条是“有效的”白条:这样一来,John可以要求Alice付钱,尽管Bob打白条的时候Alice不在场

  • Alice可以确认新白条的签名,通过使用Bob的公钥

  • Alice可以确认交易新白条是透支了之前白条的余额,因为有之前白条的sha-256指纹

双花和分布式共识机制

Bob很快意识到这里有一个严重缺陷,在Alice还不知道新白条的情况下,他可以再打一个白条给其他人,就像他打给John那样。

当他们让Alice支付钱的时候就会发现Bob双花了这笔账,但是这个时候Bob已经跑了。当只有2位参与者时,双花是不可能的,但是在多人情况下,由于账本不是同步更新的,就为双花提供了可能。

一个简单的解决方法就是,需要每个参与者当新白条创建的时候写入账本中。但对于很多人参与的账本来说这也是不现实的。

分布式共识网络

每个参与者可能都在不同的地区、时区或者其他的限制。我们能建立一个不需要每个人都参与和审批的系统?

  1. 地区限制不是问题,我们可以通过网络来联系
  2. 语言限制,难以交流问题,我们不需要自己去更新账本,可以用软件来完成,用软件代表他们自动接收、批准和向账本添加交易。

我们可以建立一个点对点(P2P)网络来解决地域和语言交流的问题。但是当有人不在线的时候是不是系统就阻塞了,直到他们再次上线?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值