比特币-区块链的第一个应用

接着上一篇来, 上一篇说到了区块链的数据组织方式, 我们来复习一下:

  1. 可以被追溯
  2. 不能被修改
  3. 被加密
  4. 但是这里面有一个问题.

我上文举了一个纸上写诗的例子, 假如我们给这个本子起个名字叫 <学诗记事>,

如果有且仅有你一个人你一个人能看到这个<学诗记事>, 那么这种数据组织方式就没有任何意义. 因为你完全可以做一个新的本子, 然后就非说它叫 <学诗记事>, 反正也没有人反对.

只有当你的<学诗记事>被很多人看多, 而且大家都记得, 你修改之后别人不认, 当有两个以上的人不认的时候, 你的修改的东西就不能叫 <学诗记事> 了.

所以上面说了一大堆, 其实就是两个点:

分布式
共识

分布式的意思呢就是这个事情你不能一个人玩, 得有人陪你玩, 你不能自high.
共识的意思呢是既然大家陪你玩, 那大家就都要有说话的权利, 不能你一个人说了算, 只有大家都承认了, 才是真的.

那么现在的情况是什么呢? 区块链在这个机制下, 变成什么样子了呢?

  1. 所有人都有了一个副本
  2. 大家都认可这个副本
  3. 副本永远一样
  4. 如果要修改(增加)这个副本, 那要所有人都同意.

于是, 我们区块链的第一个应用比特币就天然的产生了.

什么是比特币呢?

比特币是基于区块链的一种加密货币.

按照我们上面区块链该有的样子, 我们把 <学诗记事> 变成账本, 就成了比特币天然的原型了,

为什么这么说呢? 让我们来分阶段看一下货币的发展:

  1. 以物易物 — 不方便, 不好定价, 身份可以隐匿

  2. 实物货币 — 可以定价了, 不方便, 身份可以隐匿, 需要大家都认可

  3. 纸币货币 — 可以定价, 方便, 可能掉, 要信赖发币的机构, 身份可以隐匿, 有可能通货膨胀

  4. 电子货币 — 可以定价, 方便, 不会掉, 身份基本不可能隐匿了, 要信赖发币的机构, 有可能通货膨胀

可以看到这四个阶段, 我们每次都在解决问题的同时引入了新的问题.

我们越来越方便, 但是安全性越来依赖于中心化机构.

我们需要有一个绝对信赖的人(组织), 来背书. 比如银行, 比如支付宝. 比如微信.

绝对信赖这件事情是很难的, 08年的时候, 出现了一个化名叫中本聪的人说, 我们可以有一种机制, 让中心化机构不存在, 参与者自己天然就能保障信任. 这就是比特币的由来.

那么我们来看中心化机构在货币体系里面担任了什么角色呢?

记账, 大家个人有多少钱, 在电子货币阶段, 是在中心化机构里面有个账本, 记录了你的余额, 交易则修余额.

发行, 市场上流通的钱币总共有多少, 是由中心化机构来做的

所以比特币既然想要去掉这个中心化的机构, 那么他就必须解决这两个问题.

首先解决记账的问题, 按照我们之前的说法, 区块链里面的数据变成账本, 每个人都存有副本, 只要能达成记账的共识, 那我们就做到了记账.

在我们日常的生活当中, 一般交易系统是基于账户的设计.

这是什么意思呢?

就是说你的账号 + 余额, 就是被存下来最终的数据.

你要查你的账户, 只要能验明你的身份, 就能查到你的余额.

那么基于账户的设计在区块链这边有什么问题呢?

让我们回忆一下我们之前的说法, 区块链里面的数据是不让改的, 否则链就坏掉了.

也就是说想象一下我们每个人都愿意用比特币,

手上都有一个神奇的纸质账本, 这个账本只能增加不能修改, 他会不停地试图和边上的账本同步, 保持一致.

如果是账户设计, 那这个账本上原有账户的值不能修改, 那就只能加一条新的数据, 也就是账号 + 余额, 我们查看的时候以最新的为准.

那么在这种设计下, 我们看看会有什么现状呢?

  1. 原来的大部分数据都没有用, 因为以最新的为准

  2. 我也不知道这个人的钱是怎么来的, 除非有第三方来检验交易, 那第三方又涉及到信任问题.

所以, 中本聪提出了UTXO的解决方案, 这里我不再进行计算机学上的证明与推导, 感兴趣的朋友请自行查阅, 有很专业的文章在解释, 我只说直观的说法.

UTXO的解决方案简单点说, 就是我们记录交易, 不记录余额, 每一笔, 记录的都是张三给了李四多少钱. 你想要余额, 没问题, 算. 当然为了快速运算, 区块链的程序里面会用数据库和缓存来解决速度的问题, 这里主要探究基本原理和最终数据, 毕竟为了加快的东西都不是最后数据的依据.

所以现在我们的比特币就变成了这个样子:

  1. 他是一个区块链, 每个人参与的人都要拥有一个相同的账本

  2. 账本上记录的是每个人的交易信息, 也就是说每个人的交易记录事实上是公开的.

那么在使用比特币发起一笔交易是怎样的呢?

这里面我们会遇到一个巨大的坑, 就是日常生活中我们的账号是怎么玩转的.

在电子支付时代, 和纸币交易不一样, 我们需要确定一个人的身份才能进行交易.

那大家相信平时也用的多, 就是账号密码嘛.

那岂不是区块链里面还要存储我们所有人的账号密码? 那不是很不安全?

当然不是啦, 这里面就要说到区块链另一个很有意义的设计了, 就是密码学的消息加密设计, 非对称加密. 还是一样, 详细原理请自行查阅技术文档…. 我这里简单描述.

你可以这么想像: 区块链里面能拿到你的账号的一把钥匙, 也就是说你的账号的消息, 他就会试图用这把钥匙打开, 打得开, 他就认.

那你这边有啥呢? 你有做锁的方法, 这个钥匙和做锁的方法在你生成账号生成好, 然后你把做锁的手艺拿走了, 每次发消息, 就用这个手艺做一把锁, 锁住, 所以别人不知道你做锁的手艺, 就没法操作你的账号. 当然你要是忘记了做锁的手艺, 那就等于你这个账户没人能操作了, 你的钱也就没了.

在这个设计下, 我们的交易就变得简单了, 我们只要发一条消息给所有人,

说 我大白给二狗子发了100个比特币, 之前的来源是三胖给我的, 交易号是多少, 如果所有人的账本上都出现了这个消息, 那么我们就交易成功了.(真实情况不会这么苛刻, 但是你可以这么理解)

你看, 我们不需要第三方来检验钱是怎么来的, 因为我们每个人都可以一直翻书看直到最源头.

我们也能算出一个人的账号里面还有多少钱, 因为我们拿过来所有的交易数据加减就好了.

到目前为止, 除了怎么写进这个账本, 我们已经解决了大部分交易和记账的问题.

那么接下来, 就是发币和写进去的问题了.

我们在解决共识的问题. 换句话说, 我们写了一笔交易, 想要所有人都认, 怎么办呢?

在中本聪的设计里面, 他选择相信力量强大的.

也就是说, 对于这个账本啊, 所有人都可以写, 但是最后所有人的账本应该一样, 所以只能听一个人的, 那听谁的呢? 听那个最能写的, 所有人都在竞争写, 听最先写出来的.

那这里就有一个问题啊, 就是记账这件事情太简单了, 谁不会写啊, 我可能写的速度还不如我告诉别人我写完的速度快呢! 所以中本聪说, 那大家写的时候就变态一点吧, 我给你们加难度,

你随便写的不算, 得用系统随机给你的一个命题来作文一篇先. 系统觉得你这篇文章不错, 你接来下写的数据才算.(这里的真实算法不是这样啊… 这是一个形象的比喻)

那能率先写出文章的人, 必然能力最强啊, 那他就是可信的.

好, 到目前为止, 我们解决了记账的问题, 听能力大的人, 大家都听他的.

这时候能力大的人, 我们简称大先生吧, 大先生说话了: 我去你的吧, 我花这么大代价为你们做牛做马, 有啥好处啊? 你还故意加大难度?

所以中本聪说, 别急, 你要是能成功写一页账本呢? 我就允许你写一笔交易是系统给你发点钱, 你看你还有得赚.

这就是比特币给出的发币的方法, 记录一个区块链的人可以获得系统产生的比特币, 除此之外没有其它途径了.

当然比特币为了避免无限发币, 设计了一个思路是记账所得的系统比特币会越来越少, 到最后就没有了, 这时候比特币的总数就固定了, 当然这时候如果还想要人记账, 就只能通过手续费的手段来刺激了.

上面我们说的记账, 就是大家听得很多的挖矿.

到目前为止, 我们基本上把比特币一些概念上的设计都说完了.

我们来看看比特币的优缺点吧,

先说缺点, 在我看来, 有以下几点:

  1. 区块链的定义可以看到, 要大家陪你玩, 参与人越多就越可信, 价值就越稳定
  2. 因为它去中心化了, 和纸币时代一样, 存在了掉钱的可能性, 而在目前阶段, 一个中心化机构的倒闭的概率远远小于你自己忘记信息的概率, 所以事实上对于每个人来说是风险增加了
  3. 比特币本身设计的共识算法, 为了证明能力大小(写文章), 要耗费大量的计算力, 这是一种极大的浪费.
  4. 如果将来有一个机构, 能够拥有这个世界上51%的能力(算力), 那他就是神, 随意修改所有的账号交易, 此时比特币生态就会崩塌, 这也是著名的51%攻击.
  5. 比特币是分布式的, 也就是要求所有参与者都拥有全数据(实现上会有差别, 但概念是这样), 而且数据不会删除, 所以数据会越来越多, 形象点说就是每个人手上的账本会越来越厚, 而且大部分都跟自己没关系

再说优点, 在我看来, 有以下两点:

  1. 它真的去中心化了, 人类历史上第一次真的靠所有人投票完成了信任, 而且是利益相关
  2. 它不会通货膨胀

今天粗劣的介绍了比特币, 不知道大家有没有什么不理解或者认为我说错的地方呢? 请大家指出.

对了, 插一句题外话, 现在比特币是暗网的唯一交易货币, 有朋友说还有少量XMR不过我没找到.

比特币介绍到这里, 它仅仅是区块链的第一个应用, 在我们昨天的数据组织方式里面, 它把数据当做了账本. 如果我们更进一步, 区块链技术是不是会有新的惊喜呢?

敬请期待下一篇<以太坊, 不仅仅是数据>.

谢谢大家阅读