专家精品|密码朋克的社会实验(三):比特币发明了什么

2020-08-03 10:10:40 浏览数 (1)

格林威治时间,2009-01-03 18:15:05。 比特币创始人中本聪挖出了比特币的首个区块——创世区块(Genesis Block)。 从此,拉开了十年来轰轰烈烈的数字货币、区块链浪潮的序幕。 密码朋克也开始了他们最深刻的一次社会实验。

虽然大家每天使用 HTTPS 协议浏览网页,用 HASH 算法保证下载资源的完整,插着 U 盾使用网上银行,但背后的密码学一直都是小透明的存在,大众对密码学的认知基本还停留在上世纪的谍战电台中。

直到比特币横空出世,携带「重新发明货币」之威势,第一次让密码学知识走进普通人的视野。同时,也带来了大量关于政治和经济的思考。

故而,我更愿意把比特币看作一次社会实验,而非经济现象。要讨论这样一次伟大的社会实验,技术反倒成了次要,我想从货币和社会谈起。

货币的演化史

既然把比特币看成货币,那么首先要找到它的历史定位。纵观人类货币的演化过程,大概有下面几个阶段:

  • 自然货币时代 这个阶段,货币基于一般等价物的稀有性或者实用性,货币不可能出现人为操纵的超发。
  • 信用货币时代 当交易量越来越大,自然货币太不方便了,而且大家发现货币本身有多少价值并不重要,在意的只是货币能不能交换到足够的商品,于是纸币这种信用货币逐步诞生,并且发行方由钱庄、地方政府逐步到中央银行。 而近年来,由于技术进步,近一步过渡到v2.5版本,纸币数字化,催生了更多经济形式,但相较纸币,其中蕴含的国家信用本质并没有改变。
  • 未来? 下一代货币是什么样子,我们还不知道,而比特币展示了一种可能性。但也可能,并没有下一代。

货币发行和社会形态

经济活动作为人类群体生活最重要的行为之一,深刻影响了人类的社会形态。从货币发行这件事上也可以发现许多相关性。

  • 在自然货币时代,货币的实际发行者是——大自然
  • 在信用货币时代,货币的实际发行者是——人类

在这里,货币发行第一定律出现了:

「货币发行第一定律」:谁负责发行,就要用那个世界的规则限制发行量。

  • 大自然的限制规则是:产量
  • 而人类的限制规则是:中央集权

再来看另一个现象:

自然货币时代,由于货币本身的稀缺性,基本没有办法随意增发货币。而信用货币时代的轨迹,会发现货币本身的价值在不断降低,换个说法就是货币增发的成本越来越低。这表明,对信用和中央集权的依赖程度就必须增高,于是货币发行方从私人钱庄、地方政府逐渐到中央银行。

可见,货币的形态和社会的形态是直接关系的,货币成本不断降低的同时人类从松散社会逐渐演变为现在的高度中央集权社会。

所以,货币发行第二定律也出现了:

「货币发行第二定律」:谁降低货币发行成本,就必须同时加强那个世界的规则。

这意味着,随着货币的信用化,中央集权的社会模式必须逐渐壮大。

就这样,货币在人类的权力规则下正常运行了数千年。为何人类对权力越来越贪婪,就是因为货币价值越来越依赖权力。

重新发明货币

而当货币模式演进到v2.5时代,也就是移动支付时代时候。由于计算机网络的发展,增发货币的难度变成只需要修改央行的数据库,成本几乎变为零了!

根据我们总结的「货币发行第二定律」,这意味着人类负责发行的信用货币体系可能走到了某个节点上,人类的中央集权模式也到了某个节点。

货币要继续向前发展,需要寻找另一个维度。

社会上后来出现了两种思潮:一种是建立超主权货币;一种是比特币为代表的互联网去中心化模式。

但超主权货币的可能性很低,因为货币不仅仅代表了价值交换的工具,同时还要承担秩序的输出功能,与所有国家主权脱钩的货币难以承担这种角色。更不用说某些国家还需要利用自己的货币玩金融剪刀游戏。

于是回到「货币发行第一定律」,我们发现,其实这时候有自然和人类之外的第三个势力参与到货币发行上来了,就是计算机网络。它改变了信用货币时代人类单纯依靠增强中央集权来降低货币发行成本的模式。按照货币世界的规则,新的势力应该担负起建立新规则的任务。

计算机世界限制发行量的规则是什么?那显然就是计算难度

然而要让计算机网络独立于人类来建立规则,这本身就是一个极富挑战的难题。但中本聪在2019年创造性的发明了区块链的概念,来解决这个问题,给货币的发展带来了新维度的可能性。

什么是区块链

高级的东西往往很简单,区块链也是一样。

用个成语接龙到游戏来说明:

当多个小朋友一起玩成语接龙游戏时,往往大家都能第一时间想到答案,但大家一起抢答就会混乱掉,该从谁的成语往后接呢?

传统的方法是选择一个主持人,想到的小朋友先举手,由主持人来判断谁举手最快,再决定由谁接龙。这样能保证接龙结果是一条没有分叉的链条。这就叫中心化方案。

现在如果不能有主持人,该怎么保证秩序呢?于是中本聪大神发明了一个方法:

我们来扔骰子吧,每人拿6个骰子,谁先扔出至少5个1,谁就有资格接龙。

于是这个游戏,就在没有主持人的情况下,能正常玩下去。当有更多小朋友参与的时候,可能经常同时有人能扔出5个1,那么简单,就把规则改成7个骰子扔六个1,随着人增多,骰子个数也不断增加以增加难度。

这就是区块链的去中心化方案。通过扔骰子的难度,提高接龙的门槛,保证接龙结果是没有分叉的链条。

而真正实现的时候,使用的扔骰子方案就是之前上一篇密码学中介绍过的 SHA256 Hash 算法。只有找出一个数和最近的转账数据算出足够小的 Hash 值,才拥有记账权,也就是给整个链加入一个新的区块。

最简单的区块链实现

「Talk is cheap. Show me the code!」—— Linus Torvalds

这里用 python 实现一个不到50行代码的区块链 demo,其实原理非常简单。

代码语言:javascript复制
import hashlib
import datetime

class Block:
    def __init__(self, index, timestamp, data, last_hash):
        self.index = index
        self.timestamp = timestamp
        self.data = data
        self.last_hash = last_hash
        self.hash = self.hash_block()

    def hash_block(self):
        sha = hashlib.sha1()
        info = str(self.index)   str(self.timestamp)   str(self.data)   str(self.last_hash)
        sha.update(info.encode("utf8"))
        return sha.hexdigest()

def genesis_block():
    # 创建创世区块
    return Block(0, datetime.datetime.now(), "GenesisBlock", "0")

def next_block(last_block):
    # 生成下一个区块
    this_index = last_block.index   1
    this_timestamp = datetime.datetime.now()
    this_data = "I'm block "   str(this_index)
    last_hash = last_block.hash
    return Block(this_index, this_timestamp, this_data, last_hash)

if __name__ == '__main__':
    # 初始化区块链
    blockchain = [genesis_block()]
    last_block = blockchain[0]
    print("Block #{} created!".format(last_block.index))
    print("Hash: {}n".format(last_block.hash))

    num_of_blocks = 5

    # 生成区块链
    for i in range(0, num_of_blocks):
        new_block = next_block(last_block)
        blockchain.append(new_block)
        last_block = new_block

        print("Block #{} has been added!".format(new_block.index))
        print("Hash: {}n".format(new_block.hash))

不过,没有带挖矿和交易的功能,执行下来的结果:

代码语言:javascript复制
Block #0 was created!
Hash: 4b3eb7f7bbe233bc362d8db7c21623468b6f8ff1

Block #1 has been added!
Hash: a5c1683226254eef0cddf62bc1ce2034bc2cc9da

Block #2 has been added!
Hash: 55db159cbc62455f45c82f4b69b102c0c78f55b2

Block #3 has been added!
Hash: e9cafa8d8eaa86a9a709ef115dfa2570dff4f383

Block #4 has been added!
Hash: 032dfccebeaa7bc5fb4b27849e410c7f56e6111d

Block #5 has been added!
Hash: 68feb74d92b322881f0ba97cfd25ceff93552e5f

很显然,我们已经创造了一条区块链,在这个基础上再进行一些深入的开发,就能赋予它货币的能力,仿佛看到了毛爷爷在亲切地招手。

比特币解决了什么

曾经,通过网络只可以进行信息的匿名传递。 现在,通过比特币还能进行价值的匿名传递。

然而,比特币是否能如前面所说,肩负起货币v3.0版本的重任呢?曾经我是对此报以期待的。

在过去几年里,比特币甚至带起了整个暗网的非法交易,展现了良好的局部货币属性。

但看一个事物,不但要从技术、现实等基本面分析,还应该看到背后的思想博弈。

社会形态的博弈

密码朋克,一直是自由、加密、无政府主义的支持者。

因此,比特币的本质其实是纯粹的民主思想。以去中心化、少数服从多数、自由竞争为特征。

货币的形态,其实是社会组织形态的外化。货币是中心化还是去中心化,背后其实是中央集权和民主思想的博弈。

比特币刚出现时,恰好是国内整体舆论环境对美式民主最向往的时期,人们热衷于讨论民主和中央集权的优劣。

但近年来空气币、割韭菜等事情会令人思考,在一个相对自由的框架下,任由丛林法则和马太效应发酵,是否能自发导致系统的稳定运行,答案可能是否定的。

未来货币是什么形态,也许还是要看未来若干年的社会形态走向。

往期精彩

密码朋克的社会实验(一):开灯看暗网

密码学幼稚园 丨 密码朋克的社会实验(二)

更多精彩内容点击下方扫码关注哦~

   云鼎实验室视频号

  一分钟走进趣味科技

     -扫码关注我们-

 云鼎实验室互动星球

 一个多元的科技社交圈

  -扫码关注我们-

关注云鼎实验室,获取更多安全情报

0 人点赞