Skip to content

Instantly share code, notes, and snippets.

@jianingy
Created February 11, 2018 03:25
Show Gist options
  • Save jianingy/5368e7bfea97280218546cdd8e1bb1f9 to your computer and use it in GitHub Desktop.
Save jianingy/5368e7bfea97280218546cdd8e1bb1f9 to your computer and use it in GitHub Desktop.
目前的理解

区块链产生的动机

互联网的发展促使人们需要一种电子货币。且电子货币能解决如下问题:

  • 交易安全可靠
  • 有强大的信用背书
  • 不受第三方约束

交易安全可靠

由于电子货币是一种数字凭证(一串数字),因此安全可靠意味着:

  1. 他人无法冒用我的电子货币
  2. 任何人无法把同一个电子货币使用两次

强大的信用背书

电子货币需要一个不会崩溃的信用体系。并且这个信用体系能够良性通胀不阻碍经济发展。

附:人类历史上货币信用体系的发展

  1. 贵金属直接交易:贵金属金币实体经常损坏,导致人们无法确定一枚金币是否足额,交易的困难,低效。
  2. 贵金属+英国政府:牛顿建议英国政府,在金币上表明面值并承诺足额兑换缺损的金币并开始推行银票。然而英国政府在二战后经济不振,无法兑现承诺,政府信用崩塌。
  3. 贵金属+美国政府:英国政府信用崩塌后,美国做为世界资本集中国联合欧洲各国成立布林顿森林体系,确定美元和黄金兑换比例,利用政府信用背书美元,承诺兑换等值黄金。
  4. 美元:由于黄金存量有限,严重制约货币流动性和经济发展,1971年布林顿森林体系解散,货币信用体系直接绑定在美国政府身上。

附2:货币调节方法

美国:  1. 降低/提高美联储贷款利息 2. 发型国债QE

中国:

  1. 降低/提高存款储备金率(放大效应明显)
  2. 发型国债
  3. 国企贷款
  4. 直接印钱

不受第三方约束

现有的信用信息都保存在第三方机构数据库内。

  • A银行无法获得你在B银行的信用记录。
  • 你的朋友无法获得你在银行的信用记录。

大部分交易须通过第三方机构。

  • 给朋友转账,必须经过银行同意
  • 人民币换美金有额度限制

附:芝麻信用正在逐步解决这个问题

区块链如何解决这些问题

交易安全性

采用非对称加密技术。非对称加密技术为每个用户产生两个秘钥:公钥和私钥。公钥是全网公开的,任何人都能看到。私钥只有用户自己能看到。

解决“他人无法冒用我的电子货币”的问题

用户A每次发出交易时,用自己的私钥做一个数字签名附加在交易记录上。全网任何人都能够通过用户A的公钥,验证这笔交易是A发出的

解决“任何人无法把同一个电子货币使用次两”问题的同时“不受第三方约束”

要解决重复支付的问题,就必须要有数据库保存历史交易记录。有数据库的同时不被第三方约束监管,就必须要使用全网分布的分布式数据库。

“区块链”就是一个分布式数据库。他将一个个数据区块链接在一起形成一条数据链,他的工作场景如下,

  1. 当用户A的一笔交易发生后,用户A将带有签名的交易广播到全网。
  2. 全网上一群被称作“矿工”的人负责把交易记录加入到区块链里。

区块链的加入过程是这样的:

  1. 所有矿工找到当前区块链最后一个区块
  2. 用这个区块的 HASH值+当前时间+一个随机数 计算一个新的 HASH值。(注: HASH值是一段数据的数字表征,同一段数据永远能计算出一样的HASH值。例如: "hello, world" 经过计算变成 12345)
  3. 当且仅当这个新的 HASH值 满足一定条件时,这个区块才能够被加入到区块链里。为了满足这个条件,需要进行大量的计算。我们称这个计算量为计算量证明(Proof-of-work)。
  4. 第一个算出这个区块的矿工广播"新的HASH值"以及区块内容(交易内容),所有其他矿工立刻停止手上的计算,并承认这个新区块加入区块链。

遗留问题:

  1. 加入一个区块需要大量的计算工作,矿工会无私的做这件事情吗?

A. 比特币规定,每个矿工加入一个区块后会获得50个比特币的奖励。奖励每四年减半,2140完全取消。 B. 交易者可以根据行情适当为矿工提供”交易费”以奖励矿工把交易数据加入区块链中。奖励越高,交易被加入区块链的速录就越快。

  1. 两个矿工同时算出新的区块怎么办?

比特币规定:区块链分叉,分成两个分支链。矿工们自由选择继续算哪个链。一旦其中一个链最先获得6个新区块,大家就一起抛弃另外一个链,在这个更长的链上继续计算。

结论

  1. 比特币不是实时交易系统,至少要等10分钟,等待交易数据被加入区块链。如果出现分叉,则需要等待至少一个小时。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment