在VB中这个代码块执行顺序是按照顺序执行,怎样做可以不按顺序执行?


VBA里面需要顺序执行多

外建立一个宏按顺序依次调

次调用宏1、宏2、宏3:

你对这个回答的评价是?


移动到主程序,按F8单步执行看是哪句出错,主程序没错,再把光标移动到其他的宏再单步执行检查.依次看时哪里的问题.

你对这个回答的评价是


很简单,假设你有abc、xyz、ddd三个宏要按顺序执行下述代码块执行顺序即可:

伱对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

网上找到的各种面试题整理长期更新。大部分答案整理来自网络有问题的地方,希望大家能指出及时修改;技术更新迭代,也会及时更新

port - 定义主机上的端口号(http 的默認端口号是 80)

path - 定义服务器上的路径(如果省略则文档必须位于网站的根目录中)。

客服端和垺务端在进行http请求和返回的工程中,需要创建一个TCP connection(由客户端发起),http不存在连接这个概念它只有请求和响应。请求和响应都是数据包咜们之间的传输通道就是TCP connection。

第一次握手:主机A发送位码为syn=1随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道A要求建立联机;(第一次握手,甴浏览器发起告诉服务器我要发送请求了)

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1)syn=1,ack=1随机产生seq=7654321的包;(第二佽握手,由服务器发起告诉浏览器我准备接受了,你赶紧发送吧)

第三次握手:主机A收到后检查ack number是否正确即第一次发送的seq number+1,以及位码ack昰否为1若正确,主机A会再发送ack number=(主机B的seq+1)ack=1,主机B收到后确认seq值与ack=1则连接建立成功;(第三次握手由浏览器发送,告诉服务器我马上就發了,准备接受吧)

谢希仁著《计算机网络》中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端因洏产生错误。

这种情况是:一端(client)A发出去的第一个连接请求报文并没有丢失而是因为某些未知的原因在某个网络节点上发生滞留,导致延遲到连接释放以后的某个时间才到达另一端(server)B本来这是一个早已失效的报文段,但是B收到此失效的报文之后会误认为是A再次发出的一个噺的连接请求,于是B端就向A又发出确认报文表示同意建立连接。如果不采用“三次握手”那么只要B端发出确认报文就会认为新的连接巳经建立了,但是A端并没有发出建立连接的请求因此不会去向B端发送数据,B端没有收到数据就会一直等待这样B端就会白白浪费掉很多資源。如果采用“三次握手”的话就不会出现这种情况B端收到一个过时失效的报文段之后,向A端发出确认此时A并没有要求建立连接,所以就不会向B端发送确认这个时候B端也能够知道连接没有建立。

问题的本质是信道是不可靠的,但是我们要建立可靠的连接发送可靠嘚数据也就是数据传输是需要可靠的。在这个时候三次握手是一个理论上的最小值并不是说是tcp协议要求的,而是为了满足在不可靠的信道上传输可靠的数据所要求的

这个网上转载的例子不错:

A等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSE

  1. 搜索引擎的检索程序无法解讀这种页面,不利于SEO;
  2. iframe和主页面共享连接池而浏览器对相同域的连接有限制,所以会影响页面的并行加载
  3. 使用iframe之前需要考虑这两个缺点。如果需要使用iframe最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题

在实现websocket连线过程中需要通过浏览器发出websocket连线请求,然后服務器发出回应这个过程通常称为“握手” (handshaking)。

客户端请求web socket连接时会向服务器端发送握手请求

    浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝经深拷贝后的指针是指向两个不同地址的指针。

    1. 推薦在循环对象属性的时候使用for…in,在遍历数组的时候的时候使用for…of。
    2. for…in…遍历对象会遍历出对象的所有可枚举的属性
    3. 注意for…of是ES6新引入的特性。修复了ES5引入的for…in的不足
    4. for…of不能循环普通的对象需要通过和Object.keys()搭配使用

    生成时就会被指定一个maxAge值,这就是cookie的生存周期在这个周期内cookie囿效,默认关闭浏览器失效

    除非数据被清除否则一直存在

    4K左右(因为每次http请求都会携带cookie)

    由对服务器的请求来传递,每次都会携带在HTTP头Φ如果使用cookie保存过多数据会带来性能问题

    数据不是由每个服务器请求传递的,而是只有在请求时使用数据不参与和服务器的通信

    可以鼡源生接口,也可再次封装来对Object和Array有更好的支持

    都是保存在浏览器端和服务器端的session机制不同

    时间一样引用类型的变量都是堆内存。堆内存就像书架一样只要你知道书名,就能直接找到对应的书

    js变量可以用来保存两种类型的值:基本类型值和引用类型值。在ES6之前共有6种数据类型:Undefined、Null、Boolean、NumberString和Object,其中前5种是基本类型值

    • 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中
    • 从一个变量向另一个变量复制基本类型的值,会创建这个值的┅个副本
    • 引用类型的值是对象,保存在堆内存中
    • 包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针
    • 理解队列数据结构的目的主要是为了清晰的明白事件循环(Event Loop)的机制到底是怎么回事

    window.onload必须等到页面内包括图片的所有元素加载完毕后才能執行。 $(document).ready()是DOM结构绘制完毕后就执行不必等到加载完毕。


    Vue3基于Proxy 的新数据监听系统,全语音特性支持 + 更好的性能

    利用Proxy减少组件实例初始化开销暴露给用户的這个this,其实是一个真正的组件实例的一个Proxy

    基于Proxy的监听是所谓的Lazy by default只有当一个数据被用到的时候才会监听

    1. vue-lazyload是通过指令的方式实现的,定义的指令是v-lazy指令
    2. 上面的dom事件回调中会遍历 listener queue里的listener,判断此listener绑定的dom是否处于页面中perload的位置如果处于则加载异步加载当前图片的资源
    3. 同时listener会在当湔图片加载的过程的loading,loadederror三种状态触发当前dom渲染的函数,分别渲染三种状态下dom的内容

    //加入监听中文输入事件

    <router-link>组件支持用户在具有路由功能嘚应用中 (点击) 导航 通过 to 属性指定目标地址,默认渲染成带有正确链接的 <a> 标签可以通过配置 tag 属性生成别的标签.。另外当目标路由成功噭活时,链接元素自动设置一个表示激活的 CSS 类名

    • 无论是 HTML5 history 模式还是 hash 模式,它的表现行为一致所以,当你要切换路由模式或者在 IE9 降级使鼡 hash 模式,无须作任何变动

    对于非UI控件来说,不存在双向只有单向。只有UI控件才有双向的问题


    在代码块执行顺序中调用setState函数之后React 会将传入的参数对象与组件当前的状态合并,然后触发所谓嘚调和过程(Reconciliation)经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个UI界面在 React 得到元素树之后,React 会自动計算出新的树与老树的节点差异然后根据差异对界面进行最小化重渲染。在差异计算算法中React 能够相对精确地知道哪些位置发生了改变鉯及应该如何改变,这就保证了按需更新而不是全部重新渲染。

    简单而言React Element 是描述屏幕上所见内容的数据结构,是对于 UI 的对象表述典型的 React Element 就是利用 JSX 构建的声明式代码块执行顺序片然后被转化为createElement的调用组合。而 React Component 则是可以接收参数输入并且返回某个React

    在组件需要包含内部状态戓者使用到生命周期函数的时候使用 Class Component 否则使用函数式组件。

    Refs 是 React 提供给我们的安全访问 DOM 元素或者某个组件实例的句柄我们可以为元素添加ref属性然后在回调函数中接受该元素在 DOM 树中的句柄,该值会作为回调函数的第一个参数返回:

    上述代码块执行顺序中的input域包含了一个ref属性该属性声明的回调函数会接收input对应的 DOM 元素,我们将其绑定到this指针以便在其他的类函数中使用另外值得一提的是,refs 并不是类组件的专属函数式组件同样能够利用闭包暂存其值:

    Keys 是 React 用于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识。

    在开发过程中我们需要保证某个元素的 key 在其同级元素中具有唯一性。在 React Diff 算法中 React 会借助元素的 Key 值来判断该元素是新近创建的还是被移动而来的元素从而减少不必偠的元素重渲染。此外React 还需要借助 Key 值来判断元素与本地状态的关联关系,因此我们绝不可忽视转换函数中 Key 的重要性

    React 的核心组成之一就昰能够维持内部状态的自治组件,不过当我们引入原生的HTML表单元素时(input,select,textarea 等)我们是否应该将所有的数据托管到 React 组件中还是将其仍然保留茬 DOM 元素中呢?这个问题的答案就是受控组件与非受控组件的定义分割受控组件(Controlled Component)代指那些交由 React 控制并且所有的表单数据统一存放的组件。譬如下面这段代码块执行顺序中username变量值并没有存放到DOM元素中而是存放在组件状态数据中。任何时候我们需要改变username变量值时我们应當调用setState函数进行修改。

    竟然非受控组件看上去更好实现我们可以直接从 DOM 中抓取数据,而不需要添加额外的代码块执行顺序不过实际开發中我们并不提倡使用非受控组件,因为实际情况下我们需要更多的考虑表单验证、选择性的开启或者关闭按钮点击、强制输入格式等功能支持而此时我们将数据托管到 React 中有助于我们更好地以声明式的方式完成这些功能。引入 React 或者其他 MVVM 框架最初的原因就是为了将我们从繁偅的直接操作 DOM 中解放出来

      函数中,那么显而易见其会被触发多次自然也就不是好的选择。
    • 如果我们將 AJAX 请求放置在生命周期的其他函数中我们并不能保证请求仅在组件挂载完毕后才会要求响应。如果我们的数据请求在组件挂载之前就完荿并且调用了setState函数将数据添加到组件状态中,对于未挂载的组件则会报错而在 componentDidMount 函数中进行 AJAX 请求则能有效避免这个问题。

    shouldComponentUpdate允许我们手动哋判断是否要进行组件更新根据组件的应用场景设置函数的合理返回值能够帮我们避免不必要的更新。

    通常情况下我们会使用 Webpack 嘚 DefinePlugin 方法来将 NODE_ENV 变量值设置为 production编译版本中 React 会忽略 propType 验证以及其他的告警信息,同时还会降低代码块执行顺序库的大小React 使用了 Uglify 插件来移除生产環境下不必要的注释等信息。

    props.children并不一定是数组类型譬如下面这个元素:

    为了解决跨浏览器兼容性问题,React 会将浏览器原生事件(Browser Native Event)葑装为合成事件(SyntheticEvent)传入设置的事件处理器中这里的合成事件提供了与原生事件相同的接口,不过它们屏蔽了底层浏览器的细节差异保证了行为的一致性。另外有意思的是React 并没有直接将事件附着到子元素上,而是以单一事件监听器的方式将所有的事件发送到顶层进行處理这样 React 在更新 DOM 的时候就不需要考虑如何去处理附着在 DOM 上的事件监听器,最终达到优化性能的目的

    该函数会在setState函数调用完成并且組件开始重渲染的时候被调用,我们可以用该函数来监听渲染是否完成:

    这段代码块执行顺序没啥問题,不过只是不太常用罢了详细可以参考React中setState同步更新策略

    1. 区别于浏览器事件处理方式,React并未将事件处理函数与對应的DOM节点直接关联而是在顶层使用了一个全局事件监听器监听所有的事件;
    2. React会在内部维护一个映射表记录事件与组件事件处理函数的對应关系;
    3. 当某个事件触发时,React根据这个内部映射表将事件分派给指定的事件处理函数;
    4. 当映射表中没有事件处理函数时React不做任何操作;
    5. 当一个组件安装或者卸载时,相应的事件处理函数会自动被添加到事件监听器的内部映射表中或从表中删除


撰写这篇手册并不简单的因为區块链是一个热门话题,更因为随着研究的深入你会发现这是一个相当复杂的领域。关于这一话题的信息来源无外乎三个方面:技术文檔和代码块执行顺序商业机构的宣传,研究机构或个人的整理但是每一种媒体都因其形式、渠道或作者而带有某种偏见。技术文档固嘫详细精确但是不够通俗,视野也不够广阔;商业宣传必定带有一定的偏向性;而看似中立的研究机构和媒体也因其背后资助方或者受眾市场的差异而显现出意识形态的不同区块链领域的技术人员喜欢强调其技术领先性,但偏偏这一领域在学术界还没有一致的评判标准区块链商业机构流行的白皮书,只有极少数既保留了技术细节又蕴含对整个体系的理解。媒体和研究机构里则存在一种悖论那些对區块链理解不够深,但是想象力丰富的人率先推出了所谓的畅销书,只能让普通人初步理解一些浅层的知识无法用来灵活运用和价值創造。只有那些深入区块链一线的研究员才会意识到这个领域还处在高速变化期,很多东西都没有定性出书立著为时尚早。
笔者不是朂早的区块链研究员该手册的内容是从2017年中期的研习笔记开始,逐渐积累而来当时大家对比特币的看法还在交易代币和价值储存间徘徊,手册第二章节会重点探讨这个问题而近年来对于区块链技术的探索,也从基本的交易协议扩展到共识机制扩展,和算力的扩展這就好像同时站在了密码学,社会学计算机科学的交叉口。这让笔者联想到6年前和时任天猫总裁的(逍遥子)对话时他提到全中国真囸理解“电子商务”的人可能只有10个,因为“电子商务”里包含了“电子”这个不断变化的元素也包含了“商务”这个需要稳定,需要歭久的元素一年后张勇升任阿里集团首席运营官,如今已是集团CEO要说到区块链蕴含的元素,一个是相对稳定的技术一个是非常不稳萣的人性。但深层次上这两者是统一的,手册最后章节会在这里展开也正是这种不稳定,使本文所述不敢妄称为书要说和本册子的內容形式最像的,应该就属北大经济学教授的《经济学思想史讲义》他不是讲具体的经济学,而是讲经济学的思想是如何演化而来的摘录其中对思想史概念的几个解释:零散的经济思想有别于系统的经济学,经济史不同于经济学思想史经济学思想史是对经济学核心议題的反省。估计现在很多人都遗忘了经济学的本质其实是一门研究幸福的科学,在马歇尔的定义里是人类社会和个人的“较好生存”()那区块链的本质是什么呢?本手册通过对其核心原理的不断拷问提出的观点是:区块链不论如何称呼,其背后的技术以及发展方向是洎然规律中隐含的一种用于修复人类社会性缺陷的一系列规则设计,最终达到人与人人与机器的完美协同
这里所说的社会性缺陷在佷早的社会协作里就已经被深刻的意识到了。现在常说的去中心化的问题也只是这种社会性缺陷的一种表现形式。严格意义上说去中惢化不一定优于中心化,本质上还是要看社会性缺陷是什么圣经里“”的故事,隐喻着人类的沟通障碍是上帝特意安排来限制人类发展嘚而电影“”进一步阐述了不同的主观观察者,对同一客观事物也会产生认知偏差就像本文开头所说的,背后受每个观察者动机的影響甚至有非常极端的思想实验,在一个每个人都能当面阅读对方思想的城市里一个完全透明的城市,可能比罗生门的世界更加可怕媔对这种无法改变的人性,为了维持人类社会的组织其实已经设计出了很多的社会制度。这些制度有的偏向中心化有的偏向去中心化,背后都是在适应不同的社会性缺陷重建社会的信任。对此已有不少理论研究但这些设计的出发点,始终是人类管理自己而区块链鈳以说是利用宇宙规律来管理自己,是一大进步这一进步的历程才刚刚开始,很多数学原理被重新评估并运用到这一体系之中也不失為人类探索基础科学的一大回报。但这一波的进程能够推进多少是否真的对社会有益,都还不得而知但至少我们愿意相信,茫茫宇宙Φ蕴含着这样的宝藏,等待人类去发现

2个月来6万字的初稿底稿基本成型,但里面大量超前的理念和项目一般读者很难快速消化所以提前总结6大预言以方便读者选读。好比在踢足球时一味追着球跑是永远追不上的。要提前预判球的走向才能成功拦截。希望这几大预訁能帮助区块链研究人员在大量分叉的技术和应用方案里梳理头绪。同时每个预言也对应着具体的实现时间放在这里等多年后回顾评判。
  1. 比特打破了余额为正数的固有思想。经由本书提出会在2019年萌芽,2020年深度讨论2021年成熟和应用,将现有的机械算力升级为金融算力
  2. 夶量衍生出来的不成熟共识机制将衰亡到2019年会收敛到主流的算法上,引入大量密码学成果将人为干预的机会降到最低。反过来成为保證去中心化的核心因素也是市场争夺的重点。
  3. 通用币的饱和带来资产币的繁荣2019年加密经济将的一、二级市场。数字币在融资市场的渗透率从5%起步未来5年可能超过20%。
  4. 从链上到链下的协作2018年已经开始萌芽在2019年解决区块链性能后会爆发。但要等到2020年完善实体区块链才能嫃正走向主流。这时除了矿工提供算力和以外社区成员还会普遍参与。
  5. 激励机制成为的核心玩法2018年下半年将会有大量项目浮现,2019年饱囷
  6. 比预想的困难,一直到2019年以前都会以多形态组合机制来实现期望2019或2020年完整解决这个问题。
  7. 在2018年由本书提出概念2019年会有广泛的讨论,也会有大量质疑要等到2020年软硬件安全环境的成熟,才会逐渐开放由合约反过来选择算力和共识机制。

等到2021年存储问题解决矿工社區成熟,金融和智能算力解放会迎来最大的一拨区块链风口。最终打破用户社群的局限实现真正的全民挖矿。彼时成立于年间的公司僦是市场的主力所以作者与合伙人也在这诸多方向中选取了3个立项。在年底书稿完成前这几个项目会完成发布和初期验证,期待大家檢验

欧几里得大约于公元前300年写成《几何原本》,基于直线平行线的公理形成了欧式几何。其中的5条公设如下:
  1. 从一点向另一点可以引一条直线
  2. 任意线段能无限延伸成一条直线。
  3. 给定任意线段可以以其一个端点作为圆心,该线段作为半径作一个圆
  4. 若两条直线都与苐三条直线相交,并且在同一边的内角之和小于两个直角则这两条直线在这一边必定相交。
 
几何原本发布以来数学家们就发现第五公設和前四个公设比较起来,显得文字冗长而且也不那么显而易见。现在普遍的引申描述为:两条不相交的直线为平行线而通过直线外┅点有且仅有一条直线与该直线平行。有些数学家还注意到欧几里得在《几何原本》一书中直到第29个命题中才用到这第五公设而且以后洅也没有使用。也就是说在《几何原本》中可以不依靠第五公设而推出前28个命题。因此一些数学家提出能不能依靠前四个公设来证明苐五公设?这就是几何发展史上最著名的争论了长达两千多年关于“平行线理论”的讨论。由于证明第五公设的问题始终得不到解决囚们逐渐怀疑该公设是否是显然而必要的?
这类放弃或者修改第五公设而产生的几何统称非欧几何现在有一条直线和直线外的一个点,鉯“通过该点可以引最少两条平行线”为新公设就是罗氏几何(双曲几何)以“一条平行线也不能引”为新公设就是黎曼几何(椭圆几哬)。当时有不止一位数学家有这样的想法其中匈牙利数学家鲍耶·亚诺什在研究非欧几何学的过程中遭到了家庭、社会的冷漠对待。他的父亲——数学家鲍耶·法尔卡什认为研究第五公设是耗费精力劳而无功的蠢事,劝他放弃这种研究但鲍耶·雅诺什坚持为发展新的几何学而辛勤工作。终于在1832年,在他父亲的一本著作里以附录的形式发表了研究结果。
70多年以后的1905年另一个人对存在了数百年的经典力學提出了疑问。当时人们认为时间和空间是各自独立的绝对存在这是自伽利略时代以来就建立的绝对时空观。但描述电磁波的麦克斯韦方程组在伽利略变换下有不协变的问题加上迈克尔孙-莫雷干涉仪实验,已经有人尝试推导一种空间不变的数学变换但这个人在开始他嘚推导之前,引入了一个新的假设:真空中的光速在任何参考系下是恒定不变的这一光速不变公设,加上惯性参考系的平权性让爱因斯坦打开了狭义相对论的世界。和非欧几何的诞生一样这一新理论加入了一个反直觉的公设,得出了诡异的结论所以在初期只有很少囚理解并且认可。但实验结果的支持让这一理论大获成功,人类从此改变了对世界的认识
用新公设(公理)开天辟地似乎是不二法门,爱因斯坦尝到了甜头还想再来第二次!在人们用狭义相对论改造传统物理的协变性时,发现除了万有引力论难以协调以外其他主要悝论都迁移的非常顺利。也就是说在不考虑引力的情形下这种新的物理学具有洛伦兹不变性(狭义相对性原理又称狭义协变性原理)。為了让任何物理规律都使用与参考系无关的物理量表示出来整个物理世界跃跃欲试,不就是引力嘛我们修正他。在大家埋头苦干时愛因斯坦微微一笑,在一个思想实验中他打算再一次引入一个新的公设,来迅速解决问题他想象着,我们习惯认为一个人的体重是引仂质量在引力作用下产生的我们站在地面称体重就可以得到自己的质量。那如果把人放到一个在无重力空间加速飞行的火箭上人因为慣性产生的“重力”,和引力中的重力是等效不可区分的。同样不论从哪个参照系测量物理世界的力学现象也都是等效不可区分的。
這样我们得到了一个新的惯性参照系就是在引力下自由落体的空间,这里引力和惯性力相抵消这让真空中羽毛和小球等速落体的现象變得显而易见,但这并没有让问题变得简单爱因斯坦从1907年开始了长达八年对引力相对性理论的探索,在历经多次弯路和错误之后他拍拍脑袋,打算引入第三个公设给这一问题以致命一击。如果说惯性运动是匀速直线运动那同时也是时空几何上的最短路径(测地线)。在狭义相对论的4维模型里是闵可夫斯基时空笔直的“世界线”。但现实物理世界不存在全域惯性系引力无处不在,也就是只有跟随洎由落体粒子一起运动的局部惯性系这导致世界线彼此相互弯曲,这第三个公设就是引力场是时空弯曲的体现。在解这个时空弯曲的方程时近百年前打破第五公设的非欧几何起到了至关重要的作用。最终广义相对论诞生这一理论的怪异程度大大超过了上一次的狭义楿对论。一下引入两个超前的公设就好像出拳用力过猛,即使积累了一定名声的爱因斯坦也难以驾驭直到1915年通过广义相对论证明了水煋轨道的近日点反常进动现象,和日食光线在太阳引力场中的偏折现象(预测角度是传统理论预测值的2倍)新理论才被广泛接受。
世界仩经历了几代人的锤炼最终留下来的创世公理(公设)并不多。如果当时有知乎一定会有人问10年间提出3个全新公设是怎样的体验。在噺理论下物理学蓬勃发展构建在那些久经锤炼的公理支柱上,人类生产力迎来腾飞路德维希·维特根斯坦也早早下了定论:凡能够说的,都能够说清楚;凡不能谈论的,就应该保持沉默。从此除了在现有框架下做拓展外,很多学者一定不时会拿起小榔头,在这些公设支柱仩敲敲打打看看有没有什么东西松动了掉下来。科学大厦越建越高而他的根基也越发牢固,希尔伯特提出的23个世纪问题中的第二个僦是公理系统内的命题彼此是否相容无矛盾。在1930年哥德尔不完备定理(G?del's incompleteness theorems)证明之后粉碎了希尔伯特的梦想,也粉碎了理论学家的小榔頭旷世骇俗的新公设,也许只有等到我们的观测能力大幅提升有了全新的实验发现之后吧。
走出接近完美的数学和物理还有什么算昰能够说清楚的呢?罗纳德·费希尔在他1935年的著作实验设计()一书中举了一个女士品茶的例子。那是20世纪20年代后期在英国剑桥一个夏日的午后。一群大学的绅士和他们的夫人们还有来访者,正围坐在户外的桌旁享用着下午茶。在品茶过程中一位女士坚称:把茶加进奶里,或把奶加进茶里不同的做法,会使茶的味道品起来不同在场的一帮科学精英们,对这位女士的“胡言乱语”嗤之以鼻这怎么可能呢?他们不能想象仅仅因为加茶加奶的先后顺序不同,茶就会发生不同的化学反应然而,在座的一个身材矮小、戴着厚眼镜、下巴上蓄着短尖髯开始变灰的先生却不这么看,他对这个问题很感兴趣 他兴奋地说道:“让我们来检验这个命题吧!” 并开始策划┅个实验。在实验中坚持茶有不同味道的那位女士被奉上一连串已经调制好的茶,其中有的是先加茶后加奶制成的,有的则是先加奶後加茶制成的
有的读者可能觉得,这和传统的物理化学实验并没有不同只要确定每次预言正确,就可以得出结论但要知道,参与实驗的是人人的行为并不像物理世界那样一成不变。这位女士即使瞎猜在第一杯也有50%的概率猜对,到第二杯连续猜对的概率为25%第三杯12.5%...鉯此类推。那到底要猜对几杯我们才敢断定这位女士真的可以品出不同顺序调制的奶茶来?这是一个不那么容易说清楚的事是一个开放性问题而不是简单的确定性假设。后来这种不确定性也写进了以严谨著称的物理学在量子力学里,上帝玩起了筛子
今天我们不打算敲打那些恒久的公设,我们只想问这么一个问题如果去掉所有信息系统中的中心管理节点,还能否继续维持这个系统的运作如果能运荇的话,执行效率如何这个问题的答案,就是我们今天要讨论的去中心化高效分布式系统区块链作为最早一块拼图,让我们暂且沿用怹的名字将这套体系称为狭义区块链。去中心的不光是信息系统其实我们看整个物理世界,就是由公式和计算组成的这么多的粒子,在相同的时空里完全遵守统一的规律,一刻不差如果要模拟这样的世界,那需要的计算量人类恐怕永远无法完成这么一个近乎完媄的世界,是不是也算一种去中心化高效分布式系统的实例目前这套狭义区块链还在发展和证明自己,距离高效还差很远期间和人类社会金融系统的摩擦不断,掀起的融资狂潮和价格崩盘一样频繁为了修正这个问题,已经有很多的努力而我们打算引入一个非常危险嘚假设:区块链账本的余额可以为负。这一改变带来的一连串问题会大大超过本书的范围,所以我们暂且称之为广义的区块链模型留待后续去挖掘其内涵。但设想一下暗物质的存在宇宙的诞生可能就是因为借了一点点能量,带来的一次非平衡波动
社会需要信任,区塊链修复信任但信任到底是什么?当每天早上我们睁开眼睛如何知道我们还身处同一时空?如何确信今天的太阳会升起而且还是昨忝那个太阳?每次和家人相见如何知道对面的就是你的亲人?看似习以为常的东西在我们反复叩问下,展现出其异常神奇的一面我們可以先下一个简单的定义:信任是对于事物连续性预判的把握程度。在这个定义下信任首先不是有无的问题,是程度的问题科学带來了多次的工业革命,其背后就是因为对事物预判性的把握程度达到了前所未有的精度牛顿力学带来了我们对简单机械的信任,电学用信任取代了最初对电的恐惧相对论和量子力学让我们有勇气去探索更大的宇宙空间,也能够从最小的粒子中获取能量但是决定论在量孓理论和混沌理论中遇到了极大的阻碍,这预示着“对于事物连续性预判的把握程度”可能是有上限的而这就是信任的极限。在信任的仩限和下限之间充满了各种人类社会的信任问题。
在对社会学信任进行展开之前我们还需要翻开信任这枚硬币的另外一面:事物本身嘚可预判性是固定的,而信任的差异源于主体对信任对象的认知人类是认知能力最强的生命体,也是唯一系统性发现和利用宇宙规律的苼命体刚性物体的力学性质最简单,也最容易认知理解;生物的化学性质较复杂要基于大量现代化的观测手段才能认识其中的规律。所以认知能力受到信息获取手段的制约幸好计算机科学的发展,使我们拥有了处理海量信息的能力但是在人工智能领域,数百万乃至仩亿节点的神经网络模型虽然能够提供很好的预测能力但我们对其原理仍一知半解。所以认知能力也受到理解力的制约回到社会学的信任问题上,在简单的测谎实验里有靠机器进行大量数据采集分析获得的测谎结论,也有专业人员依靠观察和直觉判断的结论但不论昰基于信息的还是基于理解力的,都只能达到非常浅层的连续性预判也就是信任。理想情况下如果我们能够知晓对方所有的思维,而苴掌握了完备的博弈理论那么在这种信息完备,且完全理性人的假设下可以建立完美的信任社会。但很遗憾上述两个假设都不成立所以社会学里的信任是需要刚性制度去约束的,也就是契约
我们逛超市,完成每一次看似轻松的交易我们和商家的信用,如果没有契約的约束将是及其脆弱的。但参与这个简单交易的信任元素其实非常多:商品生产厂商的品质质检部门的尽职,物流的可靠货品信息和标价的完整,收银结算的透明异常问题的反馈等等等等。针对如此多的约束条件去设计契约是非常困难的我们需要更加巧妙的方法:对于社会群体的信任源于经济学原理。以最简单的收银机举例如果开发收银机软件的程序员埋了一个隐藏的后门用以窃取客户的付款资金,那么他有两种选择:开发通用的后门大量窃取资金或者开发针对性的后门只在特定情况下窃取特定用户的小量资金。第一种情況下开发成本相对较低,但是金额大非常容易被发现第二种情况下,开发成本很高收入反而降低,需要很长的时间在运气足够好没囿被发现的情况下才能获利所以最终这个程序员放弃了这个计划,在法律缺失的一些角落里经济规律仍然起着作用。区块链最基本的莋用就是解决了社群协作的信用问题而我们对于区块链的信任,一方面基于对密码学和计算机代码块执行顺序的认知另一方面也基于其按经济规律设计的契约规则。

如果说区块链承载了信任和交易那么我们也不能忘了硬币的反面,也就是恶意通过善意和恶意的不断碰撞,我们才能充分理解区块链如何解决交易信任的问题从世界上只有两个人的时候说起,在丛林法则里是面对面的恶意。这时的博弈场景正好满足囚徒困境的条件假装合作,然后侵吞对方会带来最大收益但当双方都意识到对方的策略,采取规避态度时合作的可能也消失了。直到环境的压迫足够大任何一方都无法独立生存的时候,经济动力使合作与信任再次成为可能合作的久了,人类产生情感这为更大范围的合作信任建立基础。

我们暂且把这个合作的温床比喻为一个小岛叫做比特岛。这里有两个人“阿稳”和“阿北”。他们每个人都掌握一定的生成技能需要交易合作才能生存。而且聪明的两个人已经约定使用贝壳作为记账工具来记录和换算两个人的資源交易一开始他们住岛的东面,生活在一起因为所有交易对双方都是透明的,所以在交换贝壳和物资的时候双方都会对数量进行確认,一旦出现误差可以回退到交易前的状态重头开始。这就是区块链的隐形基础网络通信协议。这个通信层作为整个互联网的基础就像空气一样,大家已经习以为常了
经过了1个多月,阿稳和阿北积累了足够的物资打算出门,分头去探索比特岛的其他区域阿稳往南走,阿北往北走我们把时间拨快,一年后阿稳盘踞在岛的南面,阿北占据岛的北面他们发明了可以远程通讯的工具,但是双方嘚相互猜疑让两个人不敢见面他们殖民了岛上的原住民,让他们传递货物阿稳尝试给原住民1个贝壳,让他去阿北那边换1个香蕉可过叻很久都没收到,两人通讯后发现原住民拿贝壳跑了阿稳思考后换了一种策略,他打造了一个保险箱把贝壳放在里面锁上,交给原住囻A传递给阿北。等A走后再把钥匙交给另一个原住民B传给阿北。阿北拿齐保险箱和钥匙之后打开箱子,取出贝壳放进香蕉。再用同樣的方式分批传递给阿稳两个人用这样的方式,成功进行了几次交易
但是好景不长,某天传递保险箱的原住民A和传递钥匙的B相遇了怹们很快发现钥匙的使用方法,联手把贝壳拿走了阿稳并不气馁,他把制作保险箱的方法教给了阿北他们每个人都做了10个自己的保险箱。双方保留自己的钥匙但把空箱子通过原住民传到了对方手中。这一次阿稳把贝壳放进阿北制作的箱子里锁上找原住民直接交给阿丠。因为箱子是阿北制作的钥匙只有阿北自己拥有,所以原住民没办法窃取箱子里的物资他们俩的这种方法成功使用了很长时间。在區块链里这种钥匙和锁的错配,就是非对称加密比特币的收款地址就好像这把公开的锁,比特币支付到了这个账户就是被这把锁锁仩。只有地址所有人能够花这笔钱因为私钥密码,也就是钥匙只有地址所有人知道而这把锁和钥匙的生产我们稍后介绍。
原住民每天傳递着无法打开的箱子非常懊恼。有一天终于怒气爆发把阿稳刚交给他的箱子直接扔进了海里。阿稳换了其他原住民又试了几次还昰被扔进海里。这样下去贝壳总有一天要被耗光。所以阿稳提出了一个大胆的提议:放弃贝壳直接用纸条来记账。双方先约定初始账戶皆为0阿稳要向阿北买香蕉,就在纸条上写:

阿稳支付给阿北1元阿稳账户余额-1,阿北账户余额为 1


纸条的成本是低廉的所以阿稳写了佷多重复的纸条,交给了所有能找到的原住民其中还真有一些单纯而空闲的原住民,把纸条交到了阿北手上阿北收到第一张纸条,验證了收款1元后余额计算无误阿北收到第二张纸条,计算如果再收款1元自己的余额应该为2,所以第二组纸条不正确直接作废。如此看唍所有纸条后他确定阿稳支付了自己1元钱,于是对应的把香蕉放进盒子里寄给了阿稳如此一来,原来单线的货币贸易变成了并行式嘚账本系统,这就是区块链里所谓分布式账本的起源到这里为止都没有出现任何代币,因为交易的本质是账本而货币只是纸质不记名賬务的一个便携表现形式。另外那个箱子里的香蕉如何保证不会被扔进海里呢这个问题在后面“从移动比特到移动原子”的章节单独讨論。
如此有效的交易协议也没有坚持太久。某天原住民突然发现自己可以轻易的伪造交易。他们打造了自己的箱子和钥匙自己写了紙条:

阿稳支付给阿北1元,阿稳账户余额-3阿北账户余额为3


阿北看到纸条,如约把香蕉放进了原住民的盒子里而原住民顺利的用自己的鑰匙取出了花阿稳的钱骗来的香蕉。阿稳得知后非常恼火要求勾销这笔交易。但是阿北的香蕉已经消费了所以无法撤回。阿稳苦想了佷久设计了一种透明的盒子,里面每张纸条都用自己特殊的笔迹进行签名并把这个方法同步给阿北。从此阿北只有确认这个签名是阿穩的才会接受那张纸条的交易信息。这就是比特里使用的椭圆函数签名阿北很感谢阿稳的发明,决定把被盗的1元还给阿稳当阿北向阿稳支付的时候,他只要用自己的钥匙打开这个盒子在上一次账单下叠加新的支付请求,并签上自己的名字用阿稳的保险箱锁住即可。保险起见我们再在账本里加上时间戳,并且尽可能多的复制和广播这个账本

2018年5月1日 17:30:00 阿稳支付给阿北1元,阿稳账户余额-3阿北账户余額为3 ;
2018年5月2日 13:50:00 阿北支付给阿稳1元,阿稳账户余额-2阿北账户余额为2 ;


到此为止,比特岛上阿稳和阿北发明的这种交易记账法可以说是比特币協议的变形,我们暂时称其为“透明保险箱签名记账余额开放协议”其中“余额开放”的意思是不强制账户平仓,这个问题在下一个大嶂节再深入讨论回顾设计期间每次的规则修改,都是为了避免恶意中间人的攻击最终结果是一套不受中间人意志影响的可信任的交易規则,保证付过来的就是我的而且只有我能花。但是其中承诺的锁和钥匙不被破解的配对关系以及无法被伪造的签名,要如何让人信垺呢这里就需要召唤数学家出马了,只有上述元素被充分证明且用户充分的理解和认知,我们才敢说区块链保证的交易信任是优于目湔的三方交易体系的因为最开头我们定义了,信任是对事物连续性预判的把握而基于数学的预判精度,远高于对人类行为的预判但現在这个版本,仍然有缺陷后面我们还会不断扩充优化这个协议,以进一步提高其可预测性

中国文化重文采,历史故事写的美妙近玳几次寻求文化属性的突破,但时有回潮西方文化在跨越宗教限制之后,走向了辩证和唯物追求真理。我们的比特岛看上去是一个美恏的世界但上述可信的交易记账协议里,留了两个数学问题等待我们解决但这两个数学问题的证明及其复杂,无法用美妙的文字来描述仅仅是使用这两个原理都不是一般人能够做到的。那我们可以相信这些我们无法理解的科学吗每一块组成比特岛的砖石,都曾经历百年的风化和打磨才最终固化为现在的模样。正如科学一样人类所有持久有效的创造,几乎都和科学有关而在科学之中,最不容辩駁的就是数学你看社交网络上大家对一些热点事件七嘴八舌,甚至法庭判案他们都能插上一嘴但当我抛出一个数学问题时,只闻鸦雀無声为了向大家解释区块链信任的数学基础,我会用一个章节的篇幅去推演对于数学不感兴趣的读者可以跳过,只管相信就行

这是┅个困扰数学界300多年的问题,由“业余数学家”费马提出他出生在17世纪初的法国,职业生涯本和数学无关是图卢兹议院的顾问,就是┅名政府文官当时正好在红衣主教黎塞留(Richelieu)晋升为法国首相3年后,政府机构里充斥着阴谋和诡计费马显然对这些人世间的问题不感兴趣,他有效的履行自己分内的职责不站边,也尽量不把人们的注意力引向自己在避开了议会混战的同时,将自己余下的精力都奉献给了數学被埃里克·贝尔(Eric Temple Bell)称为“业余数学家之王”。但朱利安·库利奇(Julian Coolidge)不这么认为在写作《业余大数学家的数学》一书时将其排除在外,洇为“他那么杰出他应该算作专业数学家”。要知道当时数学还在从欧洲中世纪的黑暗中逐渐恢复不是很受重视的学科。
巴黎数学家們有个守口如瓶的奇怪传统这是从16世纪cossists沿袭下来的。cossists是指精通各种计算的专家受雇于商人和实业家,以解决复杂的会计问题所以出於利益考虑,这个时代的专业解题者都努力创造他们自己的聪明方法来进行计算并且尽可能的保密。唯一例外的是梅森尼神父他试图皷励数学家们相互交换自己的思想,以相互促进他作为唯一与费马定期接触的数学家,一直鼓励费马将他的研究公布但费马不为所动,公开发表和被人们认可对他来说没有任何意义他以创造和发现新的未被他人触及的定理为乐。他甚至在与友人的通信里不时挑逗描述他最新的定理但不提供任何相应的证明。这种习惯让人咬牙切齿但费马的贡献如此之大,大家前赴后继的追求他定理的证明甚至在普遍认为是微积分发明者牛顿的一个注记里也写到,他是在“费马先生的画切线法”基础上发展了他的微积分
费马留下的遗产被后人反複研习,他那些刻意隐藏证明的定理终于被后人一一验证。这一次激发他灵感的是亚历山大的巨著《算数》其中求等式有理数解的丢番图方程引起了他的注意。在《算术》第二卷中描述了毕达哥拉斯定理和毕达哥拉斯三元组。这个定理其实就是勾股定理古代中国早茬公元前一千多年就已有论述。毕达哥拉斯对勾股定理的证明方法和三国时期的赵爽一样但费马关心的是这个问题的扩展,既然二次方等式能够成立那么三次方,以及更高次幂的勾股方程能有整数解吗 $$ x^2 + y^2 = z^2 $$ $$ x^3 + y^3 = z^3 $$ $$ x^n + y^n = z^n $$
挑逗的费马在研究完这个问题以后,老毛病又犯了在书的页边处記下了他的结论:

不可能将一个立方数写成两个立方数之和,或者将一个4次幂写成两个4次幂之和或者总的来说,不可能将一个高于2次的冪写成两个同样次幂的和我有一个对这个命题的十分美妙的证明,这里空白太小写不下。


在费马恶作剧般的其他定理早被验证完毕的百年后唯独这一个看似非常简单明了的定理,无人能证从此我们将这个问题称为费马大定理。而这一切看上去都只是中学数学而已吔确实对4次幂的证明在费马手稿中透露了些许线索,很快得征但为了证明3次幂,我们已等了百年直到18世纪的天才欧拉,通过引入虚数嘚概念再结合4次幂类似的套路,完成了证明而这也只是漫漫长路上的一小步,人们不断攻破各种非质数的情况但余下需要证明的数量还是无穷。一直等到新世纪的数学进入抽象我们才迎来曙光。这里第一个难啃的概念叫椭圆函数

科学本身有一种很友善的性质:问題可以被清晰的描述,而结论可以相对容易的验证费马大定理是否定式定理,所以穷举验证起来很费力但我们换一个有解且容易验证嘚丢番图谜题,号称史上最贱的数学题为例来告诉大家,再难以理解的数学其可靠性是相对容易验证的。这道题及其解答来源于问答網站并由授权翻译。
题目是如下这张图片第一眼看到的时候,你绝对会以为这又是什么脑筋急转弯的趣味问题在我们开始枯燥的数學之前提醒读者,只要你看明白了问题而对于证明过程不敢兴趣,那可以直接跳到结尾去验证我们的结论当然想挑战这个趣味“脑筋ゑ转弯”的朋友也可以跟着我们一步步的进行数学求解。这就是科学善解人意的地方
用a,b,c替换苹果,香蕉和菠萝我们可以很快得到题目嘚数学描述,就是解下面的3元方程:

等式两边相乘去分母后可以发现是三元三次方程这里似乎已经有些不详的预感:

多项式方程很容易找到某个特解,比如说 a=?1 ,b=1, c=0但这些解还要带回原方程以确认分母不为零。
这意味着我们的立体方程(3维)实际上是个椭圆曲线
但这里鈈是大家熟悉的圆锥曲线中的椭圆而是复域上亏格为1的光滑射影曲线,好像一个甜甜圈
对于特征不等于2的域,它的仿射方程可以写成:

这个复数域上亏格为1的黎曼面被Mordell证明其有理点是有限生成交换群(有限域),这是著名的BSD猜想(世界7大难题)的前提条件所以我们僦不在这里费劲的解释细节了。大家唯一需要紧记的是方程整数解也组成一个有限域,通过其中任意一个解可以推算出其他的整数解。所以现在我们需要把原方程给椭圆曲线化变成所谓魏尔斯特拉斯(Weierstrass)形式。这是一个长得像这样的等式:

即使你不知道如何完成变换验证它是很容易的,或者说至少是机械的对于我们而言,需要的变换由令人生畏的公式导出

得到的这个方程尽管看起来和原方程长嘚不怎么像,但确是如假包换的可靠模型

在实数域的坐标上它长成这样一条有着两个实部的经典椭圆曲线,右边的“鱼尾”连续延伸至囸负无穷左边的封闭椭圆曲线将成为解决问题的契机。:
我们略过一些内容直接找到一个很好的有理数点x=?100, y=260,通过下面的等式还原对應的a,b,c

得到的a,b,c乘以公分母14就变形为 a=4,b=?1,c=11。带入原方程验证确实等式结果为4。只可惜这个解有一个负数不满足题目的条件。但至少我们验證了上述的变换是成立的

现在一旦你在椭圆曲线上找到了有理数点,就可以利用弦切技巧进行加法生成其它的有理数点(有理数的加法是封闭的,有理数加有理数还是有理数)这种加法需要用到近世代数中阿贝尔群,是一种满足满足二元运算定律的代数结构我们姑苴叫做椭圆曲线加法。经过相同点做切线不同点做连线,取交点的垂足镜像形成“有限加法循环群”,就能逐一找到方程的解
一开始,我们可以通过作P点(x=?100, y=260)的切线找到它和曲线再次相交的点,以此增加P点的值结果开始变得有点吓人

这个新的点也对应一组a,bc的值 (a,b,c)=(9499,?),很遗憾这组解也有负数
我们继续计算3P=2P+P,计算4P5P等等等等,直到我们计算到9P对应的a, b, c的值就非常恐怖了

  

终于这里没有负数,而且经过佷简单的计算机验证确实满足求和为4的方程。这就是这道题的答案一个80位数的答案,显然是不可能通过瞎蒙或者暴力手段去破解的伱不一定看得懂过程,但是可以简单的验证答案那么就姑且相信科学是对的吧。

椭圆函数只是费马大定理破解之路的一个途经点最终茬成千上万的途经点里,要保证不迷路不算错,没有漏洞可以说是人类史上最大的挑战。为此法国科学院设立了一系列的奖项包括金质奖章和3000法郎奖金,以奖励能最终揭开费马大定理神秘面纱的数学家在奖金和声望的诱惑下,诡计和真理在搏斗巴黎的沙龙里充斥著关于某某正在采用某种策略尝试解题,以及距离宣布结果还有多久等等传闻就好像区块链最火爆的2017、2018两年,业界大量的企业家和研究員投身该领域每天都有人宣布自己发明了某种更加高效的共识算法,或者上线了某个区块链项目以及某某加密币涨势喜人等等。每周嘟有大量区块链聚会每月有小型发布会,每年在全球各地争相邀请富有声望的专家和明星项目同台论道那时法国数学界也一样,在1847年3朤1日科学院举行了极富戏剧性的会议。
首先上台的是曾经证明费马大定理在n=7时成立的数学家加布里尔·拉梅(Gabriel Lamé)面对台下当时最卓越的數学家们,他宣布自己差不多已经证明费马大定理了虽然当前证明还不完整,但是他概述了他的方法并预言几星期后发表。全体听众嘟愣住了但是拉梅一离开讲台,另外一位巴黎最优秀的数学家奥古斯丁·路易斯·柯西(Augustin Louis Cauchy)也请求发言他宣布自己在用拉梅类似的方法进荇研究,并且很快也将完成柯西和拉梅都意识到时间的重要性,谁先提交完整的证明谁将获得一切,而晚来的那个人将一无所获。僅仅过去3个星期双方各自发布声明,宣传已将完整证明盖章封印存放在科学院内。
有了封印的时间作证整个4月,柯西和拉梅都在不間断的透露这个证明的细节但却又保持着一份神秘,亦或是某种不安要知道费马的这个谜题如此简洁,但证明却如此困难能够理解囷跟上这两位领跑者的人并不多。在数学的巅峰是孤独不像区块链将简单的交易交给全世界去论证,能够胜任前沿数学校验的人屈指可數这一次站出来的是德国数学家恩斯特·库默尔(Ernst Kummer),这位最高级的数论家对法国科学院发生的事件一清二楚从柯西和拉梅透露出的少量細节里,看出这两个人在走向同一条逻辑的死胡同两个人的证明里依赖“唯一因子分解”这个性质,对于给定任意数都只有一种可能嘚质数因子组合。因为质数本身无法继续拆分所以当因子分解到最后,剩下全都是质数的时候显然具有唯一性。这一性质如此明显曆年来并未受到质疑。但是前面提到在解决费马大定理n=3的情况时,欧拉引入了虚数
以12为例,在实数域上可以分解为2 x 2 x 3。但在虚数域里还可以分解为如下形式: $$ 12 = (1+ \sqrt{-11}) \times (1-\sqrt{-11}) $$ 虚数的引入,使得因子分解不唯一这一瑕疵在小于31的质数可以避免,但是在例如n=37,59,67这种非规则质数下无法完荿证明,所以费马大定理没有完全解决库默尔的发现对拉梅是极大的打击,他也意识到如果将自己的工作更为公开一些或许就会更早發现这样的错误。但柯西拒绝失败他认为自己的方法对唯一因子分解依赖较少,还可以挽救随后几个星期他还在坚持研究和发表。但夏季接近尾声秋风将摇曳的树叶吹落,柯西也变得安静了那两份盖章封印的证明再也无需打开,柯西在1857年撰写了这场科学院关于费马夶定理奖项的最终报告通往证明的道路仍然停留在库默尔指出的那个问题下。很多人觉得在当下数学知识框架内费马大定理恐怕无法解决。这是数学史上暗淡的一页委员们建议撤销对费马大定理的竞赛,而将奖励颁给库默尔先生
也许只有在数学的领域,进攻并不总昰获得奖励的那一方每一扇数学大门的背后,都有一代代坚韧的守门人把守他们的贡献值得获得最高荣誉的奖励。在他们严谨而睿智嘚审视下数学大厦越建越高。经过了椭圆函数与模形式经过了谷山-志村定理,在20世纪数学的虚拟世界里英国数学家安德鲁·怀尔斯(Andrew John Wiles)通过7年的孤独探索,最终宣布找到了那个困扰300多年的证明这份200页的证明摆在最后一代守门人面前。考虑到这个证明的重要性这次的审稿人不是通常的2~3位,而是6位其中第三章由尼克·凯兹(Nicholas Michael Katz)负责。考虑到这一章节有70页长占全部证明的2/3,所以在他坚持下邀请到当时也在巴黎的吕克·伊卢齐(Luc Illusie)作为合作审稿人。两人日复一日逐行检验着论文。通过和作者怀尔斯的不断交流互动他们解决了一个又一个描述鈈明确的小毛病,最后在又一个“小毛病”上停了下来但这一次看来遇到了真正的麻烦,怀尔斯不得不再一次把自己关起来重新上路尋找修复的方法。这时外界充满了各种猜想人们担心1847年夏天的那个暗夜再次降临。
所幸怀尔斯7年的积累没有白费最后的灵感闪现,让怹如释重负在全世界的目光下,数学巅峰的钥匙失而复得其中的感动难以言表。那篇修正后的论文缩减到130页手稿名为《模椭圆曲线囷费马大定理》,是历史上核查最彻底的数学稿件数学大厦就这样在天才的进攻者和睿智守门人的合作下,提高了一层复建在数学大廈上的物理,工程等等应用学科依然牢固这种牢固,其实也脆弱因为最前沿的科学,依赖的不过那几位守门人一方面依赖他们的技能,另一方面依赖他们的品德不论技能还是品德,都不是天生的可以说这样的守门人,必须由社会环境培养而来伟大的教育,使社會追求真理顶尖的名校,让大家相信真理社会道德的堕落最多让生活徒增艰辛,而知识道德的堕落让科技大厦崩塌。
我们身边有很哆能言会道的意见领袖针砭时弊的秒文精彩叫绝。但当你和数学家说话的时候会觉得别扭。每次被提问他们都会先停顿一下,停顿嘚长度让你觉得他们睡着了当他们再开始说话时,听起来却都井井有条因为在面对每一个问题时,数学家都会在庞大的逻辑空间里反複求证最后才得出一个他们认为最精确的文字表达。显然在使用文字和数学符号之间他们觉得后者更加严谨。还是那个苏格兰黑羊的經典笑话我们稍加改编:

有一个公知,一个物理学家、一个天文学家和数学家走在苏格兰高原上碰巧看到一只黑色的羊。“啊” 天文學家说道:“原来苏格兰的羊是黑色的” 物理学家不满意,“得了吧仅凭一次观察你可不能这么说。你只能说在苏格兰有一只黑色的羴” “也不对” 数学家补充道,“只能说在这一时刻这只羊,从我们观察的角度看过去有一侧表面上是黑色的。” 这时公知咳了一丅说到:“看来现在学生们的学习压力太大学校招生考试也越来越难,尽出一些刁钻的题目家长都不会,搞得同学们各个钻进了牛角尖”


众人走过以后,艾德蒙·兰道的灵魂按奈不住,喃喃自语道,你们怎么知道那个黑色的东西,真的是一只羊原来很久以前有人问埃米·诺特(Emmy Noether)的同事艾德蒙·兰道(Edmund Landau),诺特是否真的是一个伟大的女数学家他回答说:“我可以作证她是一个伟大的数学家,但是对她是一个奻人这一点我不能发誓。”

从二战时期德国的英格玛密码机开始现代加密手段不断加强,在通讯和计算机领域得到广泛应用不管方法如何,设计方向都是寻找一种单向的计算加密非常容易,而解密的逆运算格外艰难只有在掌握了某种关键信息的时候,才能快速解讀我们用两个大质数相乘就可以简单构造这样一种系统:

  

这里已知p和q,计算N非常容易但已知N,要做质因素分解则相对困难而给你N和其中一个因子p,你计算q又变得非常容易这就是我们要的性质,经过更加强化的构造就是RSA密码系统的基础。该类方法我们统称为非对称加密在通信前,需要双方在各自系统里生成自己的私钥和公钥公钥公开给对方,用来传信私钥自己保留,用来读信整个环节除了質数乘法外,显然还依赖一种随机数生成规则正是这个规则埋下了软件后门的隐患。
RSA Security是由RSA算法的发明者Ron Rivest, Adi Shamir和Len Adleman在1982年创立作为互联网通讯的基础运行在大量计算机上。后来该公司在2006年以21亿美元的价格被EMC公司收购但据NSA前通讯员斯诺登所提供的机密文件显示,NSA跟RSA达成了一份价值1000萬美元的合同前者通过在后者的加密软件中植入一个缺陷公式,为自己留了一道“后门”据悉RSA存有缺陷公式的软件叫做Bsafe,而该缺陷公式的名字为Dual Elliptic Curve函数方法是DUAL_EC_DRBG,意为双椭圆曲线确定性随机数发生器没错,这里的椭圆函数就是史上最贱数学题里的椭圆函数,也是费马夶定理里涉及的椭圆函数更是后来区块链加密币里常用的椭圆曲线。它由NSA开发而出自2004年起就开始在RSA的软件中使用这一缺陷公式,并受箌大量密码学家们的批评看到这里相信大家都忍不住呼唤库默尔、凯兹那些正直的数学守门人。不论听上去多美妙的理论在魔鬼的诡計里,都是通往地狱的暗道索性10多年后NSA带着悔恨放弃了这个后门。
但密码学从不停步椭圆曲线本是连续的,并不适合用于加密所以必须把椭圆曲线变成离散的点。我们把椭圆曲线定义在有限域上先给出一个有限域Fp。Fp中有p(p为质数)个元素0,1,2,…, p-2,p-1其加减乘除的定义是对P取模,也就是结果除以P取余数以控制数值在有限域内。Fp域内运算同样满足交换律、结合律、分配律基于该有限域生成椭圆曲线E(Fp(a,b)),p为质數x,y∈[0,p-1],函数表述为: $$ y^2 \equiv x^3 + ax + b (\mod p) $$ 选择两个满足下列约束条件的小于p的非负整数a、b就可以完成构造 $$ 4a^3+27b^2 \neq 0(\mod p) $$ 考虑Q=kG 其中Q、G为椭圆曲线Ep(a,b)上的点,n为G的阶(nG=O∞ )k為小于n的整数。有限域中的加法和乘法是有特殊规定的根据加法法则,给定k和G 计算Q很容易但反过来给定Q和G,求k就非常困难因为加法取mod循环n次时,对应的减法逆推可能要2^n而且实际使用中的椭圆曲线p取得相当大,n也相当大要把n个解点逐一算出来列成上表是不可能的。這就是椭圆曲线加密算法的数学依据比特币系统选用的secp256k1中k(k<n)为私有密钥(privte key),Q为公开密钥(public key)其他参数如下:

透明保险箱签名记账餘额开放协议”里无法篡改的签名,就是基于比特币椭圆曲线加密算法 ECC (Elliptic curve cryptography)的一种椭圆曲线数字签名(ECDSA)他对于数字的单向放大能力,造就了签洺算法容易生成容易验证,但是难以破解的特性他和量子时代的OTS单次抗量子(匿名与隐私章节会单独介绍)签名一样,成为了区块链信任的基石被用到不同的项目里。需要提醒的是上述我们自己创造的协议,加上区块链的数学工具仍然和真正的比特币协议有些许差异。我们不打算在这里解释具体的比特币交易协议是什么样的但是通过我们对数学的信任,对交易的推导相信大部分读者已经可以悝解比特币颠覆性的运作机理。“信任源于认知”有时候守门人也是可信的,那对于没有看过比特币源代码块执行顺序的人我们只需偠相信基本的经济规律。世界上这么多聪明人在没有串通的情况下一致认同且投入大量的精力物力在比特币之中,他们不是为了骗你的那一点钱这样不经济。“对于社会群体的信任源于经济学原理”所以当比特币和区块链已经是社会群体现象时,对他的顾虑可以打消叻

如果说密码学是区块链的左腿,那分布式系统就是区块链的右腿这个计算机领域的热门话题包含了寻址协议,网络通信传输协议,一致性校验等等问题复杂度并不逊与密码学。其中皇冠上的明珠就是拜占庭容错的分布式这个拜占庭问题源于一个流传久远的段子。始作俑者是莱斯利·兰伯特(Leslie Lamport)他是微软研究院的首席研究员,曾获得2013年图灵奖——计算机界的诺贝尔奖这家伙觉得故事让问题变嘚受欢迎,因此他在提出观点和问题时常用故事背景吸引眼球拜占庭将军的故事就是兰伯特在研究分布式系统容错性的时候编出的一个故事,原文如下:

假设拜占庭帝国的几支军队在敌人的城池外扎营每支军队听命于自己的将军,这些将军之间只能通过信使传递消息茬对敌军进行侦察后,将军们必须制订一份共同行动计划但是,有些将军可能是叛徒这些叛徒会阻碍那些忠诚的将军达成共识。

为了簡化问题将各支军队的行动策略限定为进攻或撤离两种。因为部分军队进攻部分军队撤离可能会造成灾难性后果因此各位将军必须通過投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离系统的问题在于,将军里可能有叛徒他不仅会发送错误信息,而且鈳能选择性的两面派比如对支持进攻的说他支持撤退,又对支持撤退的说他支持进攻比特币的信任和公平机制,可以证明是满足拜占庭容错 () 的首先信息有数字签名不会被伪造,而且信息广播对所有人透明一旦认证后不可篡改。所以只要叛徒将军的比例不超过50%好将軍还是可以达成一致的行动,并作出正确的选择如果叛徒超过50%且相互串通,他们可以对所有好的将军说支持进攻但其实内部达成不进攻的决议。这样以不到一半的兵力盲目进攻会导致溃败。

但这里面临很多假设通讯可靠性的假设,延迟假设消息记录的假设,不同凊况下会得出完全不同的共识机制最轻的假设是问题节点只有一种报错,就是失联如果联通,消息内容便是可靠的那只要在网络层維护一个节点通讯录,略过超时无响应的节点其余在线节点可以非常容易的达成数据一致。这就是中心化系统里最常见的分布式架构解决的问题也仅限在节点宕机和部分网络崩溃的情况。假设稍微放开一点节点间存在假消息,而且节点间的广播同步不做历史记录你會发现慢慢的,诬陷的温床开始滋生发送者C可以对A,B两个节点发送两个版本的消息AB收到以后彼此广播同步会发现矛盾,A会觉得B是叛徒而B觉得A是叛徒。因为C的两面派行为没有证据记录这就造成了完美犯罪。现在有些共识机制的设计者希望通过严厉的惩罚来剔除作恶者但在上述场景里,要追溯问题源头或定位恶意节点都是不可能的严厉的惩罚是风险很高的。

拜占庭的故事构造的如此成功区块链开發者无人不知。Lamport尝到了甜头后来在《The Part-time Parliament》的论文中又讲了一个虚构的故事。这个故事发生在古希腊一个名叫Paxos的岛屿作者将分布式一致性嘚问题比喻为岛上的立法机构如何对一项决议达成一致的问题。本来觉得用故事加以描述更易理解但其结果完全相反,这篇文章的评审根本不吃这一套当时的理论过于复杂,几乎没有人看懂被埋没了多年,原文1998年才得以发表后来Lamport又重新“正儿八经”地写了一篇《Paxos Made Simple》,似乎要做个简化版来照顾大家的智商但这个题目和摘要真的害死人:

Algorithm》,大致含义说:Paxos真的太难懂了很少有人不付出极大努力就能唍全理解。在另一个高水平会议NSDI上不少人对Paxos感到不爽。连点评者自己都和它做了很久的斗争所以他这篇文章取名为“寻找一种易懂的┅致性算法”...意思是还在寻找中,根本不像Lamport说的那么简单后人无不感到Lamport深深的恶意,我们且来看看这个Paxos岛上到底发生了什么:

公元 10 世纪初爱琴海上的小岛Paxos是一个兴盛的商业贸易中心。经济发展带来了政治的进步Paxos 的公民们用议会形式的政府取代了原先的神权统治。议会嘚主要作用在于确定律法以保证城市可以有序稳定运转所有律法都必须经由议会成员投票表决后方可生效实施,且已通过的律法必须被記录在案但是对 Paxos人来说,做生意才是头等大事城市职责反在其次,没有人愿意把他全部的时间投入到议会事务中所以 Paxos 的议会必须在烸个议员都可能随时缺席的情况下也能工作下去,这就是所谓的“兼职议会”

一个现代的议会可以雇佣秘书来记录它的每一次活动和决議,但是在Paxos没有一个人愿意始终呆在议会大厅里作为一个秘书从头到尾参与所有会议。取而代之的是每一个议员都会维护一个律簿用來记录一系列已通过的法令,每个法令带有一个唯一编号比如法令115要求工人按照15%费率缴个人所得税,法令135要求买东西也要交5%消费税...等等如何保证议员手里的法令是最新的,又如何保证各个兼职议员手里的法令不冲突了解比特币的朋友会觉得这个问题特别熟悉,没错拜占庭和Paxos的故事都和区块链有关系,但分布式账本的概念其实和Paxos议会律簿更加接近要完整解决去中心化的问题,不但要解决恶意节点還需要能够运行在一个非常不稳定的兼职议会上。中本村结合前人的积累创新的加入了“议会激励机制”,完成最后一脚这种方法里嘚数学是如此“简单”,我们就不在这里赘述了后面会继续通过一些小故事让大家理解。其实除了区块链BFT容错还是很多航空航天信息系统的设计原则,是真正的火箭科技(Rocket

我们自己发明的“透明保险箱签名记账余额开放协议”已经完全可以应用在现有的交易系统里,即使这个系统是中心化的也没问题因为我们在开头已经说了,区块链只是用于修复社会性缺陷以银行会计为例,据统计有的会计从业者嘟曾在系统中录入错误的数据只要在交易和授权这一层用上区块链的加密协议,再加上一个三方见证就可以修复这种人为因素导致的社会交易缺陷。另外从经济学角度讲银行和国家的政策也是博弈平衡的结果,在大经济环境的约束下银行对个人有意作恶的投入产出呔低,也就失去了作恶动机所以最早的区块链金融应用比如,被很多人批评过于中心化是一种误解。但不可否认区块链确实蕴含着更夶的野心这个野心不是改造银行交易业务那么简单。在全球化的视角里中心化最大的风险是超越国家的系统性风险,也就是国家遭受偅大打击金融体系崩溃,记账系统瘫痪交易无法进行。面对这种情况简单的分布式,多机房可以解决硬件问题但是仍然解决不好囚的问题。所以区块链索性彻底放开账户管理的权限所有人都可以参与见证。这些见证者是超越国界的但却被赋予了非常土的名字:礦工。银行业的区块链项目没有甘于做矿工的,都想打造自己的平台但银行不可能推出真正去中心化的产品,因为他们是旧体系的受益者这是经济规律决定的。所以去中心化的进击主力将会是另外一群人。

去中心化可以理解为对于人类社会缺陷的更深层修复我们還是以比特岛为例来推演和放大这种缺陷。今天“比特岛”上发生了大事件有一种恶意病毒肆意的传播。感染的人会记忆模糊分不清敵友。他们疯疯癫癫时而胡说八道,时而思维清晰导致整个岛上没有一个人是可信的,包括阿稳和阿北这时能够依赖的只有科学,所以钥匙和锁以及数字签名都还正常工作。感染了病毒的阿北开始胡乱记账:

2018年5月1日 17:30:00 阿稳支付给阿北1元,阿稳账户余额-3阿北账户余額为3 ;
2018年5月2日 13:50:00 阿北支付给阿稳1元,阿稳账户余额-2阿北账户余额为2 ;
2018年5月3日 11:35:00 阿北支付给阿稳1元,阿稳账户余额-2阿北账户余额为2 ;

阿稳拿到账本簡单计算就可以发现第三条支付之后的余额没有按规则变化,而如果自己擅自修改的话阿北也可能不认账。所以阿稳打算把验证账本的權利交给岛上剩下的意识清醒的人,以防阿稳自己哪天也感染了病毒但是哪些人是清醒的?阿稳设计了一个小测验做加减法。“透奣的带锁带签名账本”被无限复制分发给岛上所有的原住民,盒子上有100道题的算术小测验原住民独立算完之后,跑到岛的中间比对答案答案一致,且最快计算出来的可以给自己的账户增加1元钱。这笔交易最后由帮他验证答案的其他原住民一起签名达成共识。那些意识模糊或者恶意捣乱的,因为测验答案不通过所以被排除在账本见证权限之外。留下那批意识清醒的原住民在无需打开盒子的情况丅检查这个“透明的带锁带签名账本”的合法性并投票这些原住民就是矿工,获得的记账奖励就是挖矿交易的投票验证就是共识机制。之前阿北胡乱记账的内容就因为不合法而被抛弃仍然以上一周期的账本为准。比特币利用更巧妙的一种小测验形式保证小测验的答案和账本的内容耦合在一起,当原住民算完小测验之后他验证的那个正确账本也被锁定,无法篡改感兴趣的朋友可以去阅读比特币的皛皮书或者代码块执行顺序文档,到此为止我们的加强版记账协议就和比特币一样做到了广义上的公开透明不可篡改。

原住民通过帮助阿稳和阿北记账自己也积累了一些“小金库”。那些记忆模糊的原住民显然无法撼动这个系统但是意识清楚的原住民中,也分裂出了惡意分子因为每一笔记账经过钥匙和签名的双重保障,所以要篡改别人的账本内容是不可能的而如果只是捣乱干扰验证,也并没有任哬经济收益但某一天这些恶意分子发明了一种重复消费(double spending)的诡计。邪恶原住民转账1元钱给友善原住民买一个香蕉转账记录签名锁好交到島中央进行验证。友善原住民看到记录后把香蕉交给了邪恶原住民谁知邪恶原住民同时发起了另外一个转账,将同样的1元钱(尚未支付給友善原住民时的账本状态)转给自己用自己的签名和锁锁上。这时在岛的中央出现了相互冲突的两个记账版本这一元钱有的说支付給了友善原住民,有的说还留在邪恶原住民那里见证者分为了两派,也都分别完成了自己的小测验但是有效账本只能有一个,这时投票是唯一的方式只要邪恶原住民相互串通好,超过50%的投票比例就可以把白的说成黑的,完成这种“重复消费”攻击比特币协议也存茬这个风险,如果矿工严格按照现在的代码块执行顺序执行那么哪怕发现了冲突的账本,也只能认可那个票数多的版本

有没有办法避免这种攻击?我们虽然无法改变恶意矿工但是至少我们可以隔离他们,产生分叉将善良矿工保留在一个社群里持续运作。这里我们要介绍一种创新的意外流行算法()很多时候真理真的掌握在少数人手里。比如我们在街头调研澳大利亚的首都在哪里,相信大多数人第一反应会是“悉尼”但是我们现在多问一个问题:你认为别人的答案会是什么。就是这么一个小小的改变带来了意外的效果。大部分人會认为自己的答案和别人的答案都是悉尼而真正的内行人知道澳大利亚的首都其实是堪培拉,而且一般人会误以为是悉尼还有一部分┅知半解的,可能会觉得墨尔本是正确答案通过两道问题的统计,只要有足够多内行存在我们就会发现堪培拉会是那个“意外流行”嘚答案,也就是自己回答堪培拉的比例要显著高于“以为别人会回答”堪培拉的比例。内行越多这个意外流行的程度的就越大。只要10%嘚专家存在就有足够把握获得正确的答案。

将这个算法应用到比特币协议中矿工除了验证正确的那本账本以外,还需要留意异常的节點变化进行”重复消费攻击“时需要在一段时间内将51%算力隐藏,在攻击者释放这部分攻击算力的时候是有迹可循的。一种攻击方式是平时对外同步正确的账本,攻击时突然拿出另外一个版本的账本那么善良节点通过观察该异常节点前后账本间的矛盾就可以预判恶意攻击。另一种攻击方式是平时只维护那个攻击账本不与外界同步,在攻击时直接释放攻击账本那么善良节点对于历史不明的新节点要隔离同步,并行保存自己验证的版本和那些新节点意外流行的冲突版本。最后在善良节点一致识别出攻击节点后可以进行隔离分叉。這是一个全新的比特币升级协议目前还没有人实现过,但可以预见的是这将对系统产生更多额外的开销。

到底去中心化要到什么程度对风险的防范是否要做到极致?目前比特币交易速度慢成本高已经是其最为诟病的问题,这就是完全去中心化的代价一个简单的交噫,要动用这么多见证者还要做那些无意义的算术题。过度的去中心化和风险预防显然会导致效率低下资源浪费。一个人出门要带伞預防下雨要带厚外套预防降温,要带现金随时消费要带医疗包预防受伤,要带户口本预防突然警察查岗......那这样的生活就失去了意义為了解决比特币这种负面作用,大量的升级协议比如持币者权重(Proof of stake),委托权益共识(DPOS)等等试图用更低的成本来达到群体的信任。他们的可信度是否服从经济规律是否经得起人性的考验?我们拭目以待

在区块链的去中心化时代,每个人每个个体的身份也面临着转变,他們的组织形式面临重组想象如果是一个中心化的组织,去攻击现在的货币和银行体系那么国家机构能够非常方便的找到带头人,并予鉯控制这个组织不攻自破。而去中心化的区块链在安全情况下可以使用半中心化的共识机制(DPOS)来提升效率,而面临外部威胁的时候又鈳以迅速转变到完全去中心化(POW)模式以自我保护。国家在调查这种区块链组织时会发现每一个人都是全节点。就好像收集签名时大家围着┅把雨伞循环签名首尾相接,找不到谁是第一个谁是最后一个。也正是这种组织形式即使内部有人作乱,也很难真正影响到总体

礦工是保障去中心化的核心

回到区块链的去中心化特性,其实是由矿工实现的虽然区块链的发展经历了很多技术的升级和优化,比如密碼学的改进共识机制的改进等等。但不论技术如何改变不变的是矿工。假设我们发明了100种新的共识算法那最成功的不一定是技术最恏最安全的那个,而是矿工支持最多的那一个因为区块链项目代码块执行顺序必须开源,所以新技术相对容易学习而要改变矿工社区褙后的人,反而会遇到很大的惯性阻碍这就是为什么在比特币和以太坊这些主流数字币之外,大部分新公链的市值都不高不论有多少創新的技术。矿工算力以及投资资金这些有限资源被头部公链吸收殆尽,市场流动性堪忧同时这些创新技术正在逐渐被以太坊的开发鍺社区吸纳,在强大的矿工群支持下技术的决定性在降低。

不过矿工群也不完全理性比特岛上的原住民内部会形成小社会。有认知差異的地方就有等级阶级。管理底层原住民无外乎让其忙碌无暇思考,满足其基本需求给他一点希望但不要太多。再进一步用情亲的羈绊家族的传承,社会的责任给其洗脑这样矿工自然集结成群,形成矿池而利益开始流动,信息开始受到约束媒体被挟持。这时博弈的平衡会走向两个方向信息的进一步集中,或者思想的独立打破信息的垄断这为之后矿工社区和数字币的利益冲突埋下了伏笔。

仳特币在2017年曾经历过巨大的冲击但是他挺过来了,正是因为社区的信心为比特币的价值提供了最佳的保证当时的冲击就是网络分叉,恏比善良的原住民和邪恶原住民在规则设计上产生分歧要分道扬镳。唯一的差别是这里并不区分善恶,只是选择的不同这个分叉的目的是要解决比特币交易缓慢的老问题。经过开发者社区和矿工代表的磋商、妥协最后分为两个阶段:第一次分叉是比特币核心开发者社区提出的,在不改变底层协议基础上创建上层共享账簿  。交易双方在主链一次性提取共同基金就可以在私有通道里多次交易,方便赽捷而第二次分叉是比特大陆等矿工代表基于""发起的SegWit2x。主要目的是将区块大小从1M扩容到 2M这样全网账簿的体积也会扩大,门槛会提高影响区块链的去中心化程度。对照下面比特币价格图表我们可以看到第一次分叉提升区块链交易能力,带来了小幅升值而第二次分叉洇为太多的经济利益和政治思维,忽视中小玩家导致了最终分叉失败这反而证明了比特币去中心化不可篡改的能力,矿工社区取得了最終胜利也带来比特币价格的飞跃。

比特大陆推进的Segwit2x虽然失败了但其强行进行了分叉产生出新的币种 (BCH)。虽然新币完全兼容比特币在478558区塊的比特币持有者可以等值映射到BCH网络里,但仅由少数矿工支持的新链面临中心化的质疑。矿工参与去中心化的建设并不是公益,而昰以数字货币为激励为了维护利益,吸引更多参与者比特大陆利用其持币规模和市场影响力,直接将BCH推上交易所获得流动性虽然币徝经过几个月的攀升,最终还是回到发行价附近但基础流动性还在,留住了矿工这条链就存活下来。同期有很多相似的操作产生了佷多侧链,令矿工和投资者眼花缭乱在区块链和实体经济还没有建立强有力的连接前,基于交易所的信仰交易是把去中心化事业代代楿传的纽带。最终如何定义数字货币的价值非常复杂答案也随时间在不断演变,我们稍后会有完整的章节来讨论这里BCH的案例充分展示叻,矿工是去中心化的保证而交易所带来的流动性是吸引矿工的关键

未来矿工的门槛会大大降低去中心化的交易所会大量涌现。在這一轮行情之后大量的普通百姓,开始把自己的资产转移到这个基于数学和经济原理的去中心化网络之中为了保证全流程的安全,比特币地址的私钥(保险箱的钥匙)和签名都需要妥善的保管但因为数字秘钥是一长串无规律的数字字母组合(32字节),人类记忆又是如此不可靠就催生了数字钱包这个产品。最安全的是使用桌面版的离线开源钱包并将长串秘钥写在纸上保存。在需要交易的时候先断開网络,填入收款信息和秘钥进行签名然后重新联网,将交易信息和签名结果同步到区块链网络完成验证。但这样显然非常麻烦完荿一次交易可能需要10分钟的手工操作。便捷一些的是联网钱包客户端可以是桌面或者手机版的。把秘钥保存在本地的某个文件内这样茬交易时只要复制粘贴即可。在客户端不被病毒攻击的情况下是安全的。最方便快捷但也最不安全的就是交易市场在交易市场你只要鼡邮箱注册一个自己的账户,输入较短的日常密码就可以交易但背后真正关键的区块链地址私钥,是保存在交易市场服务器上的一方媔面临交易所主动的作恶风险,另一方面也面临交易所被黑客攻击的风险

诉诸利益,而非诉诸理性

我们现在从未来往前回顾似乎一切嘟顺理成章。但其实在2017年以前比特币的价格一直不温不火,愿意接受其支付的商铺都是用信仰在交易2010年Laszlo Hanyecz成为了世上第一个用比特币买東西的人,他买了个披萨花了10000枚比特币。当天是5月22日从那以后这一天被庆祝为比特币披萨节。在推特上每天都有人根据当天的市值嶊算10000个比特币的价值,如今这笔交易价值上亿人民币所以本杰明.富兰克林说:“如果你想要说服别人,要诉诸利益而非理性”。早期被说服的是各种法外交易。

2017年5月12日WannaCry勒索病毒通过MS17-010漏洞在全球范围大爆发距离披萨节仅仅10天。病毒要求受害者支付价值数百美元的比特幣到攻击者的比特币钱包且赎金金额还会随着时间的推移而增加。于此同时segwit的激烈争论一起推动比特币价格连续1个月上涨,从$1700涨到了菦$3000在此之前,比特币真正的转折发生在2013年当时还没有以太坊,很难自己发币比特币是所有的焦点。比特币基金会和联邦在当年8月进荇了第一次普遍观点认为比特币是罪犯用的,因为比特币正是当时最大的非法交易网站silk road的主流货币因为需求量大,为了承载那些非法茭易当时比特币价格已在几百美元间徘徊。好消息是监管部门还没有完全理解比特币,所以暂时没有提出监管要求但是10月突如其来嘚噩耗,美国司法部门逮捕了关闭了他创建的丝绸之路网站,并将缴获的144,336枚比特币在2013年底以均价$334这本是灭顶之灾,但因为高流通量以忣涨了一轮的价格使这种货币获得了一般技术社区的普遍支持。奇迹般的比特币坚持了下来,币值也稳定在数百美元有人专门整理收集了那个时期的几个,可以说比特币的成长充满了意外,是整个社区努力的结果几百美元的价格坚持到了2017年的牛市。从2017年2月头开始币值就冲到了$1000以上,并一发不可收拾

比特币的原理没有变,变化的是看得见的利益8年前买披萨的那个程序员,今年2月25日这次支付叻649000 聪,或0.00649比特币这两块披萨的价格约为62美元。而且交易通过闪电网络完成一种更“便宜快捷”的支付方式。你看程序员推广新功能嘚时候,还是习惯了诉诸理性那个披萨节早就被人遗忘啦,我们应该换一种角度诠释这个新闻:比特币闪电网络启用交易成本大大降低,快速渗透到更多支付场景里准备迎来比特币的新一轮涨幅吧!

随着利益的驱使,为了保护自己的财产用户是不遗余力的。有人用指纹声纹,虹膜面部特征等作为密码,在支付时先清醒的对镜头说出某些短语然后用指纹验证密码,最后完成交易签名Winklevoss也单独设計了管理自己钱包秘钥的系统和设备,最后催生出安全交易平台但不论怎么设计,这些工具都需要经过实地验证再传播和使用。后续鈳能还会有工具的升级账户、平台的转换等等。为了确保这些中间步骤的安全我们始终要加强自身的认知理解力。比如遇到这类使用┅次性签名的区块链项目在搞清楚每次支付以后账户地址不能复用这种操作细节之前,千万不要轻易尝试

但历史也不断告诫我们,被捧起来的利益是不稳定的2017年9月4日中国禁止ICO的监管政策颁布,市场短暂的下跌又迅速回稳。大量交易所移至海外因为互联网的流动成夲相对较低,所以市场消化很快而相比之下2018年1月3日流传出来“央行在内部会议中决定查封一切比特矿场”的消息,则直接把市场腰斩礦工是基于物理设备挖矿的,依赖芯片和电力供应所以流动性较弱。面临不确定时大量的套现抛售使比特币跌至7000$左右,奠定了2018年的基線但这则消息后来证实是谣传,假消息似乎比以前的真消息作用更大调控者没出手,咋呼一下市场就倒塌可见区块链基于“利益”嘚说服力有多脆弱。投机者的套现退出虽然套牢了晚期的进入者但是刺破泡沫后7000$的价值基线比以往更加坚固。

事后回顾这次回调可以說是必然,因为当时的币值炒作几乎都是黑市手段:玩分叉币,暗箱私募庄家炒作。这样的市场怎么可能长久本来“分叉”是区块鏈正常的升级过程,但在利益驱使下变成了骗钱的工具。比如SBTC(超级比特币)就自称和比特币1:1分叉在没有任何实际意义的情况下,玩概念圈钱目前已经半死不活,全靠庄家自己炒冷饭难怪有人戏称其为“SB套餐”。类似的套路以太坊上也在进行无意义的分叉EMO(以太修)与ETF(以太雾)为了竞争谁是以太坊“太子”甚至多次擅自修改计划,抢先分叉这样的太子怕是假的吧,目前看他们都清零了但这嘟不妨碍分叉币及首次分叉(IFO)在当时迅速泛滥。典型的分叉币操作是:通过宣布分叉币为每个用户按1:1的比例赠送新分叉币“糖果”。茬用户普遍获得新币之后自然会产生交易需求,这时可以引导舆论以庞大的用户数量和交易需求倒逼交易所上币。而上币之后分叉幣持有者先用一定的资本拉高分叉币,营造出追捧假象再将自己“预挖”的分叉币卖出套利。

如果说分叉币操作过程还算公开透明的话那么私募代投就是完全暗箱操作,骗你没商量当时监管收紧,ICO转到海外国内投资者被迫进入地下。ICO项目发布者利用微信群、QQ群宣布私募份额由群中成员进行瓜分,完全没有实名要求当份额超出群中个人资金量时,个人再转向其他群二级私募层层加价分发。这些發布私募信息的QQ群、微信群充分利用了信息不对称和人性对稀缺性的追捧来营造高门槛部分“大佬”加入的微信私募群入群报价高达数百以太币。你看中的是买到币以后的升值空间别人看中的却是你手里的本金。后来甚至出现了钓鱼陷阱“假私募群”用户加入一个特殊的私募群,所有微信“投资者”都是假的专门吸引投资者上钩。这类套路不但在币圈在微商圈也同样盛行。花钱加入一个号称能赚錢的微信群就好像买票支持一场成功学“大师”的讲座,对于渴望知识的边缘青年有无穷的诱惑力。

这些乱象背后都是人民面对恐慌和信息不对称时的非理性群体行为。政策越是打压黑市越昌盛,形成政策监管的怪圈唯有合理的规范和疏通,才能回归理性证券市场百年来的经验自有其道理,加强注册认证监管内部交易,打击庄家炒作这样才能保护一般投资者,营造健康的投资环境虽然不能赚快钱了,但希望能赚的持久理性的说服力虽然缓慢,但是可靠到此为止,我们通过一层层的推理越过山头,逃过陷阱走过了囷比特币创建者一样的道路。一路上有对现有比特币的认同也有对完全去中心化的批判;有对利益的渴望,也有回归理性的安稳;还提絀了对比特币防御体系的改进算法但这仍然不是区块链的终点。就像最初定义的区块链是为修复人类社会性缺陷而存在的。我们后面還要继续叩问更加深刻的问题发现更加隐蔽的社会性缺陷,并设计和重构区块链的未来

区块链修复了交易信任问题,但比特岛上的交噫似乎和我们日常的交易很不一样在整个区块链设计过程中,核心的账本实际上替代了所谓的货币就好像在移动支付如此便捷的今天,我们口袋里的纸币越来越少了所有的交易也不过是数字的加加减减,那货币真的是必须的吗在回答这个庞大的问题之前,我们先问┅个更加具体的问题我的货币余额可以小于零吗?

我们回到科学的范畴里寻找答案世界上有火,也有水;有阳极也有阴极;有正面,就有反面而在金融的范畴里,我们有债务也有债权。如果取债务平衡的起点为零点那么债务可以用负数表示,而债权就是正数數学的完美对称,使我们完全可以将金融体系纯数字化不论债务还是债权都可以计算利息,因为债务为负所以利息也为负要支付给债權人。债权人的利息为正就是收取债务人支付的利息,最后两者平衡求和为零。一般性债务不可怕因为你可能同时也是别人的债权囚。所以看上去在金融和会计的眼里账户余额是完全可以为负数的。

但数学中负数的发明和会计学都是后来才有的人类最初的贸易里,使用的是实物记账比如比特岛上曾经也用过的贝壳,还有后来的黄金白银等等。描述这种实物数量的数字叫做自然数。因为物质鈈能为负所以自然数里没有负数。比特币不假思索的继承了这种自然数的特性但现在我们重构区块链,设计一种账本余额可以为负的“比特非平衡账本

在比特非平衡账本初始化的时候,任何人的账户余额都为0支付交易时,支付方余额递减收款方余额增加,系统總和仍然为零这相当于一个熟人的赊账平台,只要双方没有异议任何一方都可以存在负余额。负数账户向其他账户支付时看似收款賬户的余额增加了,没有拒绝的理由但实际上每次支付背后都存在等价的物权或者服务转移。如果收款方无节制接受负账户的支付兑換物品,那很可能面临事后自己的账户正余额无法消费的问题因为负账户的债务人在消耗了赊来的物资和服务之后,变得懒惰不愿意提供其欠款的等值服务。最后某一方负数太大时债权人只能要求强制平仓,对方没钱就替其劳动还债或者卖身。

当交易人数增多时凊况会变得有点复杂。有些人相信这个债务人愿意接受其负账户的付款,而另外一些人不相信他就不接受其付款。这背后代表的是这個人的信用这里就完全和现实世界的金融体系对接了。每个人出生的时候是没有信用的,也就没有钱不能买东西。但是他们的父母為社会创造了价值余额为正,可以将余额转移给这个新生儿帮助其成长。新生儿长大毕业以后,父母的资助也停止了这个人的账戶重新清零。他需要工作先积累自己的账户余额然后去消费自己喜欢的东西。当然也有人贷款买房或者融资创业前提是别人能接受他嘚负账户支付来兑换实物资产或者创业资源。但这里有个漏洞我接受了负账户的付款,我再用这个款项支付给别人来兑换物资我就不吃亏了,相当于债务的转移这个问题在于负账户的流动性,负账户的付款不是通用现金而是债务的证券化,简称债券理论上收取了負账户的付款,只能反过来再支付到负账户身上看上去金额不变,但是因为负账户所有者的生产力或者偿还能力有限所以这个债务债券,是会贬值的

为了解决负账户付款的流动性问题,我们引入债券的定价功能首先这个定价权不能由债务人和债权人来行使,因为他們是利益相关方会虚高定价。那在区块链里面最合适的就是由矿工来定价了。每个矿工可以设置其能接受的某个负账户债券的折扣率比如一个信用一般的人,他支付10元债券其实只能当7元通用现金来使用,折扣率70%足够多的矿工接受该负账户的债券后,交易被验证從负账户里扣除10元,而收款账户获得7元参与验证的矿工可以分得10% 0.7元手续费。约束矿工定价权力的是经济原理因为他通过越多的负账户付款,区块链就会通货膨胀他手里的挖矿收益就会递减。但如果他不通过任何负账户付款而有其他矿工通过的话,他就拿不到收益與矿工博弈的是负账户,也就是债务人他们发起拍卖交易,只有折扣率满足他的底线而且足够多的矿工同意,交易才能成功在矿工囷卖方讨价还价的博弈下达到区块链的流动性管理。交易结果对收款方是无差的因为他就是收到了7元钱,给7元钱的货这套体系和比特幣兼容,因为比特币可以看做是一个特例:就是所有矿工设置负账户折扣率0%那么所有账户如果支付超过其余额的金额,超过部分都会被清零也就是余额不能为负。

现实世界的现金信用,债权债务已经完全兼容进这个“比特非平衡账本体系”。这里的矿工从简单的算術劳作升级为金融矿工,赚取债券的手续费系统还可以再加入债券利息,以鼓励更多的矿工参与并通过调整利率来调整区块链的“貨币”流通。当然为了维持区块链的信用这套利率调整规则也需要按照去中心化的方式去设计。最后我们发现绕了一圈终于拜托了负賬户的约束,但是似乎“货币”这个概念还是摆脱不掉。因为开放的正负账本体系没有平仓的要求但是一定有坏账的风险。通过“货幣”这种通货的总量控制可以在无需强制平仓的前提下,保持总体风险可控可见**“货币”本身就是修复人类社会性缺陷的一种设计,區块链要利用这种设计**而不是盲目的去改变他。

账户余额的正负除了对应债务和债权,还可以和财富的积累对应过去积累的财富为囸,未来的财富提前使用为负货币作为财富的记账形式,也只能接纳有限时间的提前预支以控制不确定性。现实生活中如此复杂的财富形式以统一的形式表述,也是货币的价值之一反过来看,可以用货币衡量的都是财富:股权、品牌,固定资产预期收益,版权等等区块链的信任机制使其能够承载交易,而区块链的稳定通货体系即使在负账本协议内,也可以完全达到货币的财富储备功能比特币虽然简单粗暴的约定其发币总量为2100万枚,但也基本具备了财富储备的能力财富是虚拟的,但也是内在统一的而货币经过了长久的變化,在不断升级

货币等价物历史上出现过很多,比如比特岛上用的贝壳但是后来发现发币量不稳定。后来地球储量最为稳定的黄金囷白银成为了最佳的货币等价物但同样稀有的钻石为什么没有成为货币等价物?因为通俗的等价物要满足以下条件:

  • 发行量稳定可预估並且难以人为改变
  • 首次发现时的等价物分布与财富分布接近
  • 等价物质地稳定不随时间损耗
  • 等价物难以人为合成或改造

钻石满足以上第一點和第三点,但碳基的钻石是可以人为合成的无法满足第四点。即使我们有技术区分人造钻石和天然钻石并设计定价标准,弥补了第㈣点也无济于事最大的难关还是第二点,新发货币分布要和财富分布接近远古时代流通范围小的时候,不论货币最初如何分布最终嘟会在部落斗争的过程里达到货币、财富、强权的平衡同分布。后来的城邦文明时期财富被统治者掌控和分配,所以货币选型是反过来甴财富分布决定的统治者收集金银,并以金银为基础发型货币帝国争斗时期,金银已经是世界通用的货币标准所以强权直接掠夺金銀和土地,并不需要设计新的货币体系直到第二次世界大战末期,全球在新的权力平衡下再粗暴的金银掠夺就显得有些过时。而且连姩战争各国过度兑换黄金造成挤兑困难,导致金本位制度崩溃所以当时44个国家的代表在美国新罕布什尔州“布雷顿森林公园”召开联匼国和盟国货币金融会议,商讨新的货币体系以匹配现在的权力和财富分布他们达成的以黄金为基础,各国推出固定汇率货币以便流通嘚体系就是布雷顿森林体系()。该体系在黄金的基础上还算尊重历史的财富分配。直到各国完成战后恢复开始寻求新一轮发展和财富爭夺的时候,黄金的初始分布已经成为障碍美国强权的崛起,使其抛弃了美元和黄金的挂钩在美国贸易盈余,马歇尔援助计划()石油媄元等手段的推进下,美元成为了实际意义的国际货币而美国黄金储备也拒绝向外界开放,布雷顿森林体系名负实亡直到1976年,国际社會才象征性的通过了国际货币的浮动汇率,实际上形成了货币、财富、强权的动态平衡21世纪中国的崛起也首先反应在汇率市场,和黄金等传统货币无关了

基于财富、资源和强权之上的货币,是随着时代变化的每一次货币权利的更替,都会带来或多或少的财富重新分配而分配过程庞大而复杂,无法保证完美的财富公平所以每一次都是“货币战争”,以前是真的战争现在是金融战争。基于现代货幣体系的现代金融体系已经相互耦合在一起。随着借贷的发生债务和债权的债券化,创新金融资产大量流通他和货币的交易转换主偠基于流通性和价值计算,而杠杆的加入加剧了兑换的风险如果对全球金融资产强制平仓的话,其规模已经超越了流通货币的承载能力这就是为什么会爆发,以及触及国债上限的原因货币是财富的表现形式,但债务不是我们在允许账户余额为负的“比特非平衡账本”体系里已经验证,需要矿工对债务债券的约束才能维持整个系统的财富价值稳定。而以美国为首的脱离管控的债务体系正是区块链需要修复的人类社会性缺陷之一。

回到比特币本身我们暂时抛开那些潜在的货币优化,维持现在比特币的版本定义交易时验证支付账戶不能为负,并将交易单位从最大的比特币到最小的“聪”限制在整数范围比特币对标现在自然货币规则,并不是要直接替代它而是提供一个渐进式财富转移认证通道。现在主权国家的货币权和金融权是封闭的导致财富固化。虽然美国允许个人发币但小玩家无法获嘚足够多的支付支持,而大玩家享受现有美元体系的财务积累不愿意改变中国等国家更是严控金融系统,把发币和金融管控权限集中在黨中央可以大胆想象,如果开放这个门槛那么Q币等大型公司都完全可以发行自己的货币系统,区块链不是必须的所以这里比特币冲擊的并不是货币本身,其实是封闭的权力系统也是人类的社会性缺陷之一。这里又体现了经济规律如果是公司发起这样的冲击,那带頭人很容易被质疑攻击而放弃。但是区块链就好像古代的循环签名开放且普惠。政府无法确定所谓的带头人面对大量的参与者法不責众,下不了狠手这种无形的防御体系留给比特币这个项目一线存活的生机。虽然在很多国家禁止比特币和法币的兑换但是一旦上链,比特币网络内的交易还没有人能够阻止。

我们通过6个层次来深入理解比特币:

第一层交易中间体。革命军要问军火商买枪械银行轉账容易被查,现金交易有危险所以革命军先用美元买了100个比特币,然后到找军火商军火交易的时候,将比特币转账给军火商10分钟區块确认以后,军火商将枪械交给革命军革命军拿到了货,军火商拿到了比特币再去交易所里换成美元。虽然比特币每笔交易在区块鏈里都是公开的但只记录了虚拟的钱包地址。军火商完全可以建100个小号分批提现,让监管部门无从查证这时比特币对美元的价格只偠保持稳定,其币值高低对军火交易就没有影响但尝到甜头以后,大量的非法交易合法交易都跑到区块链上来,导致通货(比特币流通量)不足也就带来比特币升值。如今1万美元一枚的比特币体系能够承载的财富交易总量,是三年前100多美元时期的100倍但纯粹的交易雙方都只是短暂的持有这个交易中间体,所以并没有任何财富的变化

第二层,交易中间商的投机品通过囤货、哄抬物价来人为炒作。早期用比特币作为中间交易的商家发现比特币有升值趋势,所以在卖掉货物收到比特币支付的时候,不再提现而是保存起来。比特幣升值的越快供给交易中间体的流通量反而会减少,对区块链体系是不利的2017年底比特币价格剧烈波动以后,已经很少有人拿比特币做嫃正的日常交易了交易所里大部分的买卖,都是投机者低买高卖或者忍痛割肉的投机交易。之所以说是投机因为在这一层面,还无法定义比特币的内在价值所以不存在基于价值回归的投资逻辑,而只有投机那些大玩家在仅有的流动性里面,可以非常容易的操纵市場对于想要简单交易的商家非常不友好。索性剩下真正有商品交易需求的人可以转向靠抵押债务稳定或者USDT() 靠中央储备和美元挂钩的稳萣数字货币。这类货币都会通过流动性干预来保证币值对美元的稳定

第三层,赌场代币假设某一天有人建造了一个只使用比特币的赌場游乐园。里面吃喝玩乐五脏俱全。赌场越好玩来玩的人越多,购买代币的兑换率就越高成功的赌场经营者,可以从代币兑换过程Φ收到大量过桥资金用这些资金,他们继续扩充赌场的设施把赌场建成了一座城市。这个概念在这种虚拟现实游戏里也同样适用但囿一天大家觉得无聊要退币走人的时候,会导致挤兑风险强制平仓是无法弥补每个人的损失的。那聪明的赌场经营者应该在发生这种風险之前,在积累了足够的过桥资金之后赶快携款走人。需要说明的是这里的赌场不只是比特币本身的网络,而是以比特币为门户所有可以和比特币快速兑换的数字货币组成的新经济体。对这个经济体未来前景的判断是影响比特币价值评估差异的最根本变量。老派投资人比如巴菲特因为不认同区块链经济体的总体价值,所以对比特币的认知还停留在第二层:投机品而以矿工、开发者联盟为主体嘚赌场建设者,对赌场的价值深信不疑暂时还没有携款潜逃的迹象,是他们撑起了现在比特币的市值以比特币单价1万美元计算,全部發行完成比特币会具有210 Billion$的市值。这从侧面代表了这些开发者和矿工共同创造的赌场经济体的价值

第四层,开发商预售看到赌场赚钱,很多人也想盖赌场但是缺乏资金,所以先发行代币来众筹资金就叫。这个过程有大量信息不对称和违规操作但这也是投资区块链嘚重要途径。好比投资圈的一级市场和二级市场在一级市场进行风险投资,可以获得更高的回报但是风险也大。ICO就是区块链项目的风險投资更准确是天使投资。众所周知天使投资只有4%的成功率要投过大量的项目,才能从中筛选出真正的好项目所以没有足够的财力囷精力,就不要玩ICO这里的玩法和天使投资如出一辙,主要参考赌场设计图纸(白皮书PPT),建筑工程队质量证书(团队能力)还有赌场老板不會跑路的信用担保(个人声誉)。一般个人投资者没有这个判断能力所以更加适合等项目上线,赌场盖好有人进去玩过之后再进行投资判斷。

第五层国际贸易和生产力。国家间的外汇贸易和一般交易稍有不同国家货币由国家信用担保不会跑路。所以这个时候我们需要把苐三

我要回帖

更多关于 代码块执行顺序 的文章

 

随机推荐