数字货币:从石板经济到数字经济的传承与创新
上QQ阅读APP看书,第一时间看更新

第二节 历史机遇的错失——回顾进入这个领域的背景和动机

本节是本书唯一一处讨论技术的内容,主要回顾了我的教育背景、职业和创业经历。希望通过展示我的工程技术背景表明我为参与数字经济做好了工程方面的准备,并且多次创业经历也为我做好了未来商业实践的准备。对技术不感兴趣的读者可以直接跨过进入下一节。

我于2017年年底全力投入比特币和区块链领域的,看起来并不是“早鸟”。不过现在并不太感到遗憾,因为回顾自己过去的教育、职业和创业经历,会发现每段经历、每个重要抉择,都在使自己为未来的某项使命做准备。

1994年我进入清华大学计算机科学与技术系学习。在清华的头两年,我有幸和一群国际奥赛金牌获得者和各省前10名的同学在“实验班”学习,从实验班走出了多位包括IEEE院士在内的我辈翘楚。在清华的环境里面我实属平庸之辈。在计算机系,编程水平是评估一位“大神”的硬指标,多位“大神”都抵得上十个龙白滔。我自己唯一的“特长”可能是喜欢系统底层技术。1996—1997年大家都在外面接一些类似Foxpro的数据库开发工作,我天天泡在实验室捣鼓SoftICE/Windows SDK/Windows DDK/Windriver/网络编程/异步IO/Linux的玩意儿。

本科的最后一年和硕士阶段,我与胡华智胡华智是亿航无人机的创始人,在1998年我和他一道创业时,他就是无人机的超级发烧友。他在无人机领域取得的商业成功证明了人要做自己最喜欢的事情。一道创立了五矿腾龙,这可能是中国第一家流媒体企业。我的硕士研究课题和创业项目都有关高性能媒体服务器和网络视频,在他们的系统架构设计中着重参考了Apple Darwin的全异步任务分配与调度(类似现在的轻量级进程)机制,大规模使用了Windows平台上高级的异步文件和网络通信机制,如我在1998年就开始使用IO完成端口技术了。

2002年年初第一次创业失败后我回到学校继续完成博士学业,这次经历给我留下的阴影是未来不想继续技术研发的生涯,所以刻意回避编程,甚至博士课题中需要的网络仿真编程,我也是请他人帮忙完成。

博士阶段的课题是应用层组播,它的另一个更流行的名字是“peer-to-peer network unicast”,是不是很熟悉?我确实曾考虑过借助家庭网络节点的带宽来提升整个传输网络的吞吐量、降低延迟和提升网络弹性,但苦于从经济层面缺乏动机。谁想到,现在的通证模型是最好的解决该经济动机的方案,目前已经有多项基于这种思想的P2P网络传输技术投入大规模运营。

2004年博士毕业后我刻意地没有寻找技术方向的职业机会而选择进了著名的IT咨询公司埃森哲。我的想法是在这里完成从工科到商业咨询背景的过渡,下一步去商学院深造。

虽然我并不喜欢咨询这份需要很好画演示文档能力的工作,但至少不用编程了,心底还是欣慰的。没想到,这种幻觉仅仅维持了不到半年。半年后我被派到上海证券交易所的项目上,很快迎来人生的第一次高光时刻。

这是当时埃森哲内部全球瞩目的高规格项目,国际化团队超过100人。客户一眼就挑中了我的简历,原因很简单,甲方团队里有三名清华计算机系背景的博士(包括总负责人白硕),而我是乙方团队唯一的一名博士,还是清华计算机系毕业的。

我进入项目后被分配进了撮合引擎组,从此我的人生和这几个字关联在了一起。这是一个系统实施的项目。项目上每个人几乎都需要编程,而我因为前面说的原因,已经两年没有编过程序了。

项目上超过一半同事来自国际团队,如德国、美国、马来西亚等。当时,全球70%的交易所都是埃森哲设计实现的,包括纽交所、纳斯达克、伦交所、德国交易所(当然后来这些交易所有的合并形成更大的洲际交易所)。第一个月是煎熬的,我每天都在“编”还是“不编”中挣扎。当初选择埃森哲,不就是为了未来不用再编程吗?

埃森哲的企业文化很特别,笃信“人定胜天”。不管新人什么背景,只要扔到一个项目里,很快就能适应项目的技能的需要。例如,这个项目就有很多外语专业毕业的同学每天努力学习COBOL甚至C语言编程。

不到一个月我投降了,因为从最顶层的合伙人到刚入职的新毕业生,每天都在做同样一件事情——编程序。考虑到中断编程已经有两年,我买了一本谭浩强的《C语言程序设计》并准备把编程技能捡起来。感谢清华给我的扎实基础教育,以及上一次创业积累的工程架构经验,我很快在这里脱颖而出。

第一件事情是我自发为项目设立了C语言编程规范和最佳编程实践,并开发了很多自动化代码检查工具。项目有大量非计算机背景的文科生程序员;DEC Alpha小型机的开发环境只提供最有限的编译链接支持,不提供IDE和各种强大的语法和代码检查工具。我的工作显著提升了代码交付质量。三个月后,我被任命为项目首席程序员,之前这个角色是一位德国经理(比我当时高一个级别)担任的。

第二件事情是我开始对项目核心架构设计发起挑战,因为过去的工程背景让我对交易系统的工程项目有深刻洞察。项目技术总架构师是一个希腊老先生,合伙人,据说过去20年都在做交易所,并且代表埃森哲提出了“交替式内存撮合”的撮合引擎全球专利。每当我挑战其技术决策时,他总喜欢以“my experience tells me that……”开始他的应答。这引起我强烈反感。当年的我也是年轻气盛毫不相让,官司经常打到项目负责人甚至客户那里。没想到10多年后,当我被自己创业公司里的“90后”程序员挑战时,我也不自觉地说“我的经验是……”。

真正的转折点来自第一次用户验收测试。非常遗憾,它是一次完全的失败,不仅系统崩溃,而且当时完成的系统性能指标只有合同约定SLASLA:Service Level Agreement,服务水平协议。的不到十分之一。客户震怒,埃森哲海外团队高层全部被客户“炒鱿鱼”。我被任命为项目首席架构师,到后期是项目负责人,承担起拯救项目的责任。根据埃森哲与客户的约定,如果系统不能达到约定的SLA,埃森哲不仅要退还项目费用,还要支付两倍罚金。项目开发费用1500万美金,那还是一个一美元兑换八元人民币的年代。

简单地说一下当时我面临的挑战在哪里。国家级交易系统被誉为所有金融核心业务系统里面的王冠,因为它对技术的极致追求,特别是考虑到中国的社会经济生态的特殊性,任何技术的不稳定都可能演变成社会性事件,因此中国对此类系统的要求比全球任何国家都要极端,吞吐量、延迟、系统稳定性、可靠性、事务完整性和一致性等。撮合引擎本身是计算密集型和IO密集型任务,而DEC Alpha服务器虽然可以有64颗处理器,但只提供进程而没有线程。针对单个产品的交易性能无法通过水平扩展,只能通过硬件垂直扩展和极致/精巧的软件架构和编程技巧实现对处理器的充分利用。在64颗处理器的小型机上,我的程序要做到在单个进程内通过全异步系统实现多个同步计算操作和大量异步磁盘/网络IO操作,几乎100%的无锁操作等。事务的一致性体现在内存、进程间和服务器集群内部。内存一致性无法依赖商业数据库,需要自行从头设计和实现基于虚拟内存的内存事务管理。任何失效恢复事件(无论是进程内、进程间、主机间、集群间)都不能影响数据完整性,不能对市场有任何影响,而市场仍然可以保持常规报单速度。几乎所有数据都是在64颗处理器的进程之间共享(增删改查),包括数亿条中国人的持仓数据(投资者账户类型+投资者账户识别符+交易品种的组合)、全天所有订单和成交,以亿计算。例如,仅考虑持仓数据查询,某个进程需要在一秒内完成数百万次对数亿条持仓数据的查询。除撮合之外,整个系统还要保证全市场报单进入的流畅性和全市场成交和行情数据广播的流畅性。进入的报单在任何极端情形下(例如发生失效)都不能丢失、乱序和重复,不能拥塞市场报单;向市场广播成交数据也是如此。例如,一个真实测试案例,所谓“一撮100万”,在一个交易周期内(可能百分之一秒),一个买单可能与反方向的100万个卖单进行撮合,这样会产生超出正常情况下1000倍的需要广播的成交数据,系统被要求设计成能够平滑处理这样的极端情况,海量的成交数据需要被内存存储、永久化和网络广播。任何软/硬件资源耗尽/失效的情况,如操作系统、内存、处理器、网线等,都必须保证数据的完整性和一致性。

在代码层面,我个人贡献了整个交易系统C语言核心代码约4万行的90%,这里有不少细节的架构设计和编程技巧。我曾经与技术大咖陈利人讨论持仓数据的数据结构设计,被热心的微信群友梁寒写成了《史上最强算法论战:请不要嘻哈,这是哈希》广为流传。不过也确实被人鄙视,例如我的一位清华计算机系的奥赛金牌师弟就在微博公开鄙视“这是什么破玩意儿”。其实,大型计算机系统最需要的并不是算法层面的小聪明,它更多体现的是全局观和抽象能力,以及在适当的时候选择/设计合适的算法和数据结构。我不怀疑这位师弟的单兵编程能力能顶得上十个龙白滔。但我在2005年的时候面临了这么一个历史性的机遇并且很漂亮地把它完成了,到今天为止这一系统仍然在为大部分中国人服务。

最后埃森哲有惊无险地通过了考核,在我的领导之下,项目取得的成就是多方面的。首先,系统指标全部超越SLA要求,在非交易需求方面大幅超越。其次,满足多方面业务需求,如交易、非交易、系统启动/恢复、与第三方系统对接(如登记结算等)的技术架构从之前的分散到统一到一个被反复重构优化的架构,系统核心代码数量减少四分之三以上,极大提升系统的可维护性。

项目也遗留了大量的遗产。首先,埃森哲中国金融服务领域的精英超过半数来自这个项目,包括我的两位平辈分别成为平安和复星的集团副总,我的直接上司后来从埃森哲退休加入马来西亚证监会任监管加密货币交易所的高官。其次,项目成为埃森哲中国有史以来最成功案例,即使放到全球范围内,也长时间保持全球技术最领先的交易所的地位。最后,系统从2007年上线以来,运行超过12年无一故障,支撑了全中国每天平均三分之二的证券交易量。我作为首席架构师也参加了2007年埃森哲对港交所新交易系统的成功投标。如果不是因为2007年夏天港交所收盘价被逆向工程,港交所高层引咎辞职新项目被取消,我将会是又一家全球前三的交易所的总架构师。

接下来两年时间我的工作主要集中在银行业咨询,最有趣的经历是与埃森哲法国团队合作将全球最先进的银行业务实践介绍给中国客户。在一年时间里,带领一个国际化的团队,用高绩效银行业务模型,帮助浦发银行完成新一代业务系统的业务、应用和技术规划工作。

不过在服务国内金融服务机构的过程中,我日益感觉到与业界最前沿的领域,例如云计算大数据等领域的脱节。因此2013年年初,我作为联合创始人兼首席战略官和第一名全职员工,加入了万向控股旗下的通联数据,它可能是中国最早的金融科技企业,专注于资产管理领域的云计算和大数据工作。我一部分工作是负责万向控股层面的金融科技战略,有机会近距离向中国比特币早期布道者肖风学习。在2013年,比特币的趋势是通联数据管理层管理例会的保留话题。肖风非常具有远见卓识地指出,比特币未来一定会颠覆传统金融行业,特别是投行,因为它完全取消了融资中介。通联数据很多小朋友利用业余时间“搬砖”,他们都成了比特币早期红利受益者。作为公司联合创始人,我为公司招募了云计算团队大部分骨干,大部分人后来都成了万向区块链的核心。非常遗憾,当时有非常好的比特币启蒙和学习环境,但我在第一时间认定它是一种传销工具,错过了成为比特币早期创业者的机会。

2014年,我以首席技术官的身份加入了北京中金甲子投资基金,负责金融科技、云计算和大数据领域早期项目的投资。我不确认自己是否会是一个好的早期项目投资人,因为没有足够时间去证明,在任内我曾经力荐过一些后来相当成功的创业企业,包括安全领域安天实验室和众享比特,大数据领域的百分点金融和法海风控以及后来被美团大众点评收购的屏芯科技等。

2015年5月至2017年年底,我创业了知象科技。知象定位于为专业量化资产管理者提供基于云端、端到端的量化开发、研究、交易、资管和风控的平台,从产品和技术层面最终是一家成功的公司。知象是彼时中国唯一一家支持金融级别/高频交易的金融云,是唯一与华尔街高频交易云Lucera可对标的中国企业。为满足金融级别的高性能、极低延迟和企业级安全隔离。自2013年我在通联数据就坚持了如下技术路线。通联数据做了短暂尝试,但因为过高技术挑战而放弃,我最终在自己创业的知象完整地实现了。首先,金融云底层是基于Erlang开发的去中心计算框架,实现了流言传播协议、矢量时钟、默克尔树、反熵算法等。其次,金融云的物理节点基于Open Solaris的后续版本SmartOS操作系统,提供企业级文件系统zfs、容器技术Solaris zones、接近物理网卡性能的网络虚拟化技术Crossbow(10年前,在Solaris平台上与现在Intel DPDK对等的技术)等,并且通过已经被移植进入Solaris内核的虚拟化技术KVM和bhyve兼容所有Linux/Windows计算任务。

可能到目前知象仍然是唯一一家有效支持股票高频数据的基于云端、端到端的量化平台。这是数十万行C++源程序构成大规模、高复杂度和任务关键型工程。以一个例子来说明其领先性:中国沪深两市每天产生高频股票数据8000万至1亿条,知象平台不仅轻松支持实时极低延迟地存储和分发全量高频数据,也能够在5秒以内查询并获得历史上任意交易日全量股票高频数据并在一分钟内完成(空转)回测。某传统交易所提供访问高频股票数据的云服务,但从来不敢公开展示其高频数据的功能。据传曾经一次展示获取和回放某交易日全市场股票高频数据耗时24小时也未能完成。

2017年年底,我去加州安静地待了三个月,不用再去焦虑创业公司里面各种烦心事,有了足够的时间来决定人生的下一步。