一个90后区块链技术管理者的自白

0x01 前言

近日发生很多事,为了填前员工挖下的坑,我和运维部的同事通宵加班接近36小时两次,进行了深入多次调查以后讲了些大实话反倒遭受了很多人的非议。于是写篇文章记录下来,也算是对自己的警醒,2018年学到了很多,尤其是体会了高层管理和中层管理两种完全两种不同的思维模式。

首先解释公司的组织架构,母公司维优有多块区块链业务,包含数字资产交易业务和区块链公链研发业务。我从2016年开始管理维优的技术团队,直至2018年人员快速扩张,业务快速发展,管理层考虑到我个人的精力和能力无法同时覆盖两个大项目,决定将交易业务交给某位职业经理人S,所以2018年我的大部分精力都放在元界和运营上,直至12月份人员优化以后所有技术才由我管理。
以上是背景。

0x02 上半年

S大约从2018年3月开始接手,交易部门的招聘工作也由S负责。S算是我的前辈,为人务实稳重,打算以敏捷开发的模式来管理项目。我对S也算是十分信任,既然有人接手我自然不必太过插手。但是我和S约定了一条,关于交易撮合部分的代码,也就是hft_exchange不必替换,因为至少交易逻辑是可以得到保证的,S说除了交易部分其他全换Java,我说好。

S的管理工作有条不紊,按部就班,但坏就坏在S和人事在招聘工作上的崩坏。在我的管理期间,一直以向上招聘为目的,也就是我招聘的人一定要比我强,无论是技术还是沟通能力,只要有一方面比我强就行。而S可能受大公司的影响有点深,没有转变为我们这种小公司的思路,开始招聘了大量非区块链行业的从业人员,水平也层次不齐。
这无形中给公司增加了很多培训成本,在币圈的各位都知道,币圈是有信仰的,无论是投机还是投资,比特币以太坊至少都会持有的。只要买过比特币以太坊,那么至少对我们要做的业务算是有个基本认识。可惜但是这波新进来的人偏偏没有(我也是后来才知),新人不知比特币以太坊,也不买这些东西,觉得这东西没有国家信用背书,这些玩意就是骗人的。

那么问题来了,请问这会发生什么?我至今还在给他们擦屁股!我且不说技术水平,对币圈和数字资产无所谓的态度,虽然人一直在写代码,但是产品的可用性和易用性十分糟糕。

举个例子,新人员居然连UTXO和Account based 的区别都不知道。有人可能觉得这算什么问题,可是你想想如果不了解这两者的本质区别,你的代码势必多出相当多的冗余代码,而且还不一定对。

本着耐心友好的原则,那就培训吧。随着培训工作的展开,我才知道这种无所谓的态度才是致命伤,这并不是技术水平的问题,要知道我们是一个金融公司,任何的差池都会导致资金的损失,至今公司因为某些代码质量不合格遭受了大量损失。

0x03 下半年

2018年6月份,S离职了(在这里我还是非常感谢S所做的贡献)。公司管理层提议维优旗下另外一位技术总监来接手交易业务的技术部门,我们称之为T吧。T是一个很nice的人,管理和技术水平都颇受大家认可,自己手上也有一个10人左右的小团队。考虑到我的核心任务仍然是元界发展,所以也就同意了。

由于交易业务交给了T(也感谢T的辛苦付出),那么我从2018年7月份开始,我个人开始了空中飞人之旅,代表元界参加各种会议,北京、旧金山、东京、杭州到处跑,稍微能有点影响力的会议我都选择了参加,这段时间的活动的信息大家可以从元界的公众号上获取,有照片为证。

虽然到处飞,但我只要在公司,我还会看看交易技术研发的项目进展,新团队也进入了全新的开发阶段,这段时间他们最终还是进行了完全重构,把所有老系统都推翻重来了,我当时说你们何来勇气推翻重来。

由于交易技术中一块最重要的就是API交易,这时候我听到客户频繁反馈API交易动,最终调查结果是说是API 部分无法支撑海量的调用,我当时心想照着墨菲定律完蛋了。技术方案讨论了几个月,最终说是修完了,结果修完数据的完整性出了问题,经常核心业务数据对不上,这个问题直到上周才修掉。
而且我还看到不少员工上班玩游戏的现象。午休时间打王者荣耀也就算了,某些员工甚至将任天堂插在工作用的显示器上。就这个问题我还在管理例会上提出,希望大家玩游戏可以光明正大地玩,有必要的话公司可以掏钱买PS4给大家玩,但前提是请把交易业务的技术弄弄好。那么问题来了,现象有好转吗?并没有。明着玩变成暗着玩,我几次路过看到某些人迅速切换手机屏幕。

更有甚者,某个员工连DNS的类型都搞不清楚,却狂妄自大得过分。我某次过来分析了一下架构,我说目前微服务可能不适合交易技术,立马被其喷。有段话我只发了朋友圈,并不想公开发表,但鉴于某些离职的狂妄员工,我只能摆开了说了:

自上个月接手一个线上项目,刷新了我的认知。且不说什么是微服务,我拿到手之前所有人告诉我是微服务架构,直到我看到了厚重的kafka挂了一堆模块,这可能颠覆了我对微服务的认知,本应该聚合的功能被拆成三四个服务,导致核心数据的一致性和完整性得不到保证,在稍微高点的负载测试情况下,频繁出现业务数据不一致,具体表现为订单关联的数据前后不一致,甚至有客户反馈自己的订单数据前后莫名其妙变化对不上。我一想我可能遇到了假的微服务,那么没关系,我从数据库开始抓,先保证数据最终一致再说。直到我看到了表字段一堆before after,心麻凉麻凉的,这可能只是一堆增删改的日志,业务数据的前后依赖只能从代码分析,数据的完整性并不是从数据库层面保证的。那么好,结合log看代码吧,问题是log打印了成千成万条一模一样的SQL执行语句本身是几个意思。除此之外,也没有对应的网络拓扑图,也没有全局的模块调用和消息推送关系文档,那么据说之前两三个架构师是怎么回事?也许我从后端只能看出技术水平,那么到了产品和前端就就能看出端倪了,有用户反馈自己的账号登陆时提示账号不存在,这是重要事件要查,查完才发现不过是触发风控被屏蔽了,那么问题来了,为什么用户会说自己账户不存在?因为登陆提示就是这么写的。随即我自己体验到了下图的bug,据说长达几个月没有人修。我想了想,这和技术已经没有关系了,个中意味你们自己体会。

01

上面一段话大家可能没什么感触,这么说吧,因为业务数据不一致的问题,我们平均一天多上千个工单,这些工单的人力成本弄得好像不是工作量似的,也对,按照“我不负责我不管”的心态,反正不是他们的工作量。

那么我们来看看代码,下图的仓库名是怎么回事,有人能猜出来这个库在微服务中用来做什么的吗?仓库名就叫做s_user。

02

重构后的整体架构乱七八糟我也就忍了,而且我已经强调过不要全部推翻。直到今天某些离职员工叫嚣着要我拿出代码来证明写得烂,那么好,请看下述代码:

03

根据我的经验,角色至少引用权限作为外键,非法删除时数据库会因为数据约束而自动拒绝,从这点可以看出数据的完整性并不是由数据库保证的,而是程序员自己写代码保证的,水平不错对吧?

04

还有这一堆Hard-code error message是什么意思呢?异常处理都是这么处理的吗?错误码写在注释里,错误消息硬编码写在代码里而且是中文对吗?也许是我读书少,没见过世面。(有人反馈这里Java就是这么处理的,OK,对此我说错了大家可以斧正)

全局的架构图没有就算了,模块逻辑和模块的代码经常对不上,发版本靠吼,验证完全靠测试团队,单元测试框架几乎为零,就别说核心模块的单元测试覆盖率了。也许有人过工期短,做不过来,那么不好意思,工期短那么请保证业务的可用性和连续性,而不是老想着推翻重来。

再说个故事,某运维嫌跳板麻烦,在所有的生产环境机器全部都挂载了公网IP,连最核心的资金系统有公网IP。某些技术嫌访问github缓慢,一致要求在公司部署IDC机房进行内部开发测试,这事我强烈反对,这都8102年了,自己部署机房玩儿呢,直到IT-Support告诉我公司买了3台2U的服务器花了十几万,2台1U还摆在公司的小角落。人员结构优化过后,我认为这些服务可以迁移至AWS,服务器可以二手卖掉。结果某些别有用心的离职员工造谣维优即将倒闭,正在变卖资产,这个我只能说你们真机智。

我当时说微服务目前不合适交易技术,是考虑到实时高并发强一致性要求的情况下,事件驱动架构模式也许是更好的选择,一味地跟风微服务,怕不是“面向简历编程”吧?退一万步,就算选了微服务,那也是在深入理解业务模型的情况下,先做拆分再做聚合,就我目前看到的现状,我知道看到了拆分,没有看到聚合,过度地拆分,太细的粒度已经引起数据完整性和一致性的问题,至于kafka,这么重的东西你打算是把血吸到消息队列上去吗?

我们再来看看某些员工的职业道德问题。某些员工在离职前夕,私自下载了公司的量化交易代码,要知道量化代码的核心是量化策略,量化策略是公司高管设计出来的,代码只是载体,未授权获取量化代码相当于盗取公司资产。

06

诸如此类的问题还有,在离职潮之后公司部分数字资产失窃。考虑到离职员工的声誉问题,我们打算调查清楚再寻求警方帮助,由于涉及保密信息,我这里不再透露。

0x04 某些报道

很多人质疑我作为CTO为什么不采取管理手段?技术出了问题我CTO应该为此担责。话没错,代码管理不力这个我姑且认下来。但是有一点,交易业务的人事管理和招聘工作我完全被HR排除在外,我不知道这是别有用心还是怎么回事。
但出于对S和T的信任(S和T的资历和年龄都比我大),所以我并未直接参与人事和项目管理。所以我再次声明,我2018年未参与交易部门的技术管理工作,我工作的重心仍然是元界核心开发以及运营业务,我个人的建议一直是人员早优化早升级,鉴于种种原因没有施行也是要照顾S和T的想法,这里说我管理能力不足我也认了,为此我吸取教训。

07

08
我从来没有认为我是区块链的名人,我所做一切不过是希望元界更上一层楼,希望国内的区块链行业更好。不好意思,我觉得3000 TPS真不高,而且我也没看出内部斗争,B高管四大出身,一心想做好项目,使出全力来推动,说你们上班玩游戏还被你们解释为斗争,也是有勇气。

而且我也不明白,我出了本《区块链第一课》怎么也成了喷点,你们这脑补能力也是可以。你要是说我书写得烂可以,书哪里写得不好请你可以站出来打脸,但是恶意揣测说我“技术烂也能成个名人”,这帽子扣得真莫名其妙,是想表达我陈浩沽名钓誉吗?对不起,那可能是你的想法,和我陈浩无关。

最后我不想谈技术问题了,聊下来其实都是态度问题,工作推一步走一步,这个我不负责我不管的思维模式。诸位看官要是觉得我是因为离职员工技术菜才采取行动,那可是太天真了,职业道德和素养以及工作的态度问题,才是触及我的最后底线,我也不想罗生门,孰是孰非各位可以自己判断。最后,某些狂妄的人想评价我不懂技术可以,我个人github在这里:https://github.com/betachen ,欢迎来战,不过我还是奉劝先弄懂UTXO和ERC20再来说话。

漫谈公链发展(三):公链优先原则

Hello大家好,熊市谈币伤钱又伤心,尤其是今天(2018.9.5)的比特币,还是来聊聊公链发展吧。今天我们从数据视角来看公链的发展,看看得出什么结论。

数据壁垒:人工智能的困境

我们先从人工智能开始。
众所周知,曾经大数据的火热,推动了人工智能的发展,尤其是监督学习种类的人工智能算法,互联网行业也提出了“数据驱动”的口号。然而正如大家看到的,似乎人工智能的应用并没有向币圈一样席卷全球,那这是为什么呢?
借用吴恩达的原话:
“AI的崛起正改变着公司的竞争格局。公司的壁垒不再是算法,而是数据,让算法利用足够的数据,使得产品运行起来,然后通过产品来获取用户,用户在提供更多的数据……周而复始,又举例:搜索公司,搜索公司有着大量的数据,显示如果用户搜了这个词,就会倾向于点哪个链接。”
其实这里暗示了一个很重要的问题,当人工智能的算法不再是瓶颈时,抢占数据的高地就是运营的第一准则。那么问题又回来了,如果已经存在数据壁垒,那么其他企业想进入人工智能怎么办?这会影响人工智能的发展吗?
我认为会的,互联网行业既存数据壁垒让很多初创型公司望尘莫及。

区块链上会产生类似的数据壁垒吗?

我的回答:是。
首先要明确一点,区块链上的数据来自区块链应用。
我在今年一月份的文章《区块链应用的去中心化只是一个乌托邦》中表示基于区块链的应用想要完全去中心化是不可能的。
那么接下来的问题就是,什么程度的去中心化应用才可以被接受呢?我认为这个没有统一的答案,而是取决于场景。这也是区块链应用落地的困难之一,人们首先要达成共识,其次接受不同程度的去中心化。
那么这些应用的表现形式是什么呢,我认为是混合型区块链应用(Hybird-dApp)。
为了解释这个概念,我们参照移动端开发的Hybird App,H5与原生页面混合型APP。
那么在Hybird-dApp中,区块链所提供的功能相当于是H5部分,其他都是Native的。
如下图所示:

从图中我们可以看到,由区块链部分提供的功能是去中心化的,而Native是由中心化管理的。举个例子,当用户产生了大量的视频存储需求时,我们优先选择Centralized HTTP server,而视频的著作权我们可以使用Blockchain dAPP来搞定(围绕着token)。
这样的好处是,兼顾了区块链资源的珍贵和高昂的存储需求(陈浩:IPFS付费检索?)。
其实这样的APP已经大量出现,相当多的行情APP和钱包APP,除了用户私钥是去中心化得(寄宿在用户设备中为用户提供支付功能)。除了支付功能之外的其他功能,几乎都是中心化设施提供的,例如资讯推送,IM聊天等,这本身已经符合Hybird-dAPP的定义了,只是这个概念没有人单独提出来。
现在我们扩大视角,难道只有支付功能应该是去中心化的吗?显然不是。随着行业的发展,会涌现出相当多一批Hybird-dAPP,提供多元多样化的服务,例如金融服务、游戏娱乐等等。
说到金融服务,又不得不提到数字货币交易所。目前数字货币交易所已经积累了大量用户数据,其中归交易所私有的部分有KYC数据,成交明细数据,高净值持币用户的数据,到个人的充提数据,这些我们统称为平台私有数据;而公众可查的就只有统计级别的充提数据(交易所出入金)。
由于公链的账本都是公开的,所以充提数据才可以统计,这也是公链账本的一个特性:只要分析师掌握一点点辅助数据,就可以在链上挖掘出大量有价值的数据。
现在我们在这里引出我们的主题:区块链上的数据壁垒会在交易所以及上述Hybird-dAPP中心化部分产生。

这会逐渐形成两个壁垒:

  1. 分析壁垒,具有丰富数据分析经验+对区块链深刻理解的分析师,单单从公链账本本身就能挖掘出很多有用的数据,这属于人才壁垒,通过挖人就可以解决。
  2. 私有数据壁垒,单纯地依靠公链数据是很难对用户进行画像的,一旦掌握少许链外数据作为引子,就可以推导出超量的有用数据,那么谁积累的私有数据越多,谁对用户的画像就更为准确,利用人工智能加速扩张商业版图的可能性就越大。而私有数据壁垒会比分析壁垒更难打破。

降低区块链的数据壁垒:公链优先原则

通过上述分析,我们得出了积累私有数据、构建数据壁垒是未来区块商业竞争的核心竞争力的结论。我们接下来通过图示来进一步分析:

区块链链上数据和平台私有数据的对垒示意图

经过一段时间的竞争,C平台倒闭,B成为头部,拥有大量私有数据
上面两张图展示了仅平台之间的竞争导致的私有数据壁垒的产生,然而这不是最致命的,最致命的是下面一种情况:

平台倾向使用传统技术,公链账本不敌私有数据
公链作为一种去中心化、去信任的优质资源,被中心化商业平台“联合抵制”了,公链的地位被极大地弱化,起不了监督平台的作用。而理想的情况应当如下:

人们倾向于使用公链记录数据,包括商业化平台
那么图4和图3的区别是什么呢?为什么说图4是理想化的情况呢?
我们知道,公链的产生源自去中心化的理念,也就是公链作为基础设施提供了去中心化的协议,来帮助人们构建商业应用,这些应用可以是DApp或者Hybird-dApp,但我们并没有脱离去中心化理念的范畴。
我们将去中心化的理念再细化一下可以发现,其实去中心化体现在两点:
公开透明可监督;
用户私权至上。
图4很明显符合以上两点,而图3的情况是反其道而行之。
其实从数据的角度,从人工智能身上吸取经验,维护公链作为公开账本的价值是非常重要的,一个积累了大量数据的公链,可以养活相当多数量的中小微企业,这无形中也加速了行业发展,间接地扩展了这个公链的应用生态。
那么根据上述分析,我觉得有必要提出一个区块链应用的开发原则——公链优先原则。
公链优先原则:在公链可负载和应用成本可控的情况下,优先使用公链,而不是传统技术(含DLT技术)。

文章的最后,给大家提个问题,用户使用平台服务产生的数据,这个数据的所有权到底归属谁?

漫谈公链发展(二):交易所与公链的缠结

比特币价格从年初6万多跌至4万,7月份又开始上扬,市场变化剧烈,公链竞争也开始白热化,今天这篇文章,是我最近想法的一个总结,因为主导设计了元界,也做了交易所,所以对行业的思考比较多。本篇观点带一点预测性质,提出来希望和大家一起探讨。 虽然区块链的热门技术前沿集中在的分片(sharding)和跨链(cross-chain),但技术的迭代周期往往不及产品的迭代周期,剧烈变化的市场首先是从产品和运营体现的,那么本篇文章以交易所和公链的关系为切入点,谈谈以下三个点:代币标准,空投,上币速度。 交易所的地位在开始之前,我们先看看交易所的在币圈的地位,交易所的地位大家有目共睹,简直可以用“无法无天”形容。请大家仔细想一想,币圈的交易所,其实已经远远超出“交易所”的职能范畴了,它更像是传统金融中的...

阅读全文

漫谈公链发展

各位读者老爷们,大家过年好,先给大家拜年,祝大家狗年财运亨通,项目顺风顺水。 和面过年唠唠嗑,不搞太多干货,暂时换个风格,写了篇很形象的文章给大家。自2016年开始开发国内开源公链项目Metaverse,2016年我还戏称和小蚁项目(如今NEO)相爱相杀,因为那时候还只有我们两大公链,现在看起来现在,只有“被杀”的份儿。今年国内还有个什么“国内三大公链”的称呼,名字我就不一一举了,这和国内top3的高校有5家有异曲同工之妙。套用《食神》里面的台词,“争什么争,还不是掺在一起做撒尿牛丸。”所以这篇文章就聊聊公链发展。 擀面皮老实讲,两年前虎哥在老是和我说数字资产、数字身份的区块链的两大核心,我并不是很理解。现在回想,还是虎哥牛逼,他说的这些概念完美的预测了区块链的发展方向,只不过换了个词...

阅读全文

元界区块大竞猜(公测)

源码地址:https://github.com/betachen/mvs-gambling 是-请押注到地址A: MLuy4exuzMcoZvtkmFHeBqwBzczmwagC3D否-请押注到地址B: MBt5aoaJwngvDz4BqMfWpxG62PyN8Y5VJ2 竞猜下一个100的整数倍高度的区块哈希的最后一位是否是数字?假设:区块高度958200, 958300, 958400, 区块哈希分别是12382450071f44e94be72779b3cbb8ff6917de5e8c67df572cafcc8e9ea4359f67d63fc451a02215318181343770d80e15a04c5d838741b20dc9fc331550a6d066e2afbb7269f...

阅读全文

区块链应用的去中心化——一个乌托邦

对去中心化的质疑如果你在搜索引擎上搜索“区块链+去中心化”,那么你可以得到超过两百多万条的检索结果,并且当前有众多的区块链人在反反复复提及一个观点——“区块链技术将颠覆现有互联网”。对于以上观点,我提出了质疑。 当在讨论区块链的特性时,我们都不约而同地表示去中心化时区块链的一个核心理念,甚至在评价一个区块链应用时,如果它不满足去中心化的特性,就提出质疑甚至否决。对于以上观点,我不甚认同,我认为区块链的核心价值并不是去中心化,而是易于构建可被监督的区块链应用。 区块链的去中心化特性其实是为了描述在这个系统中,作弊的成本非常高,因此区块链可近乎认为是无需第三方的低成本可信沟通环境。如果我们考虑当下的互联网,如此丰富多彩的互联网应用几乎全部是由中心化的设施所提供的。当普通用户在使用这些应用过...

阅读全文

巴比特采访-区块链的CTO需要思考什么?

技术人员一般做到技术高管层面的时候,最大的职能转变是要从写代码转换到对团队的管理。制定战略然后源源不断地提供新的idea让团队去实施。 陈浩从三方面总结了其作为CTO需要思考的内容: 第一,最核心的是要提高公司的生产力。如何让团队达到最高效和最良好的运转状态,并帮团队解决后顾之忧。 第二,是对技术的开拓。团队在开发进程中遇到的技术难题,CTO并不一定要亲自动手去解决,而是优先考虑是否可以充分利用现有的行业资源去发掘更多的技术人才协助。 第三,要感知行业动态。这不单是局限在区块链行业的动态,还要感知所有技术行业动态。比如说目前比较热门的人工智能和云计算的发展趋势,它们是如何和传统架构结合的,与区块链技术是否有结合的可能。 元界(Metaverse)项目发起于2016年8月,是国内较早一...

阅读全文

从区块链即服务(BaaS)到价值互联网

信息互联网:是指现如今庞大复杂的信息互联网,目前信息互联网不具备金融属性,通常需要强势的第三方中介提供可信的金融服务,在信息互联网中,技术与业务可通过架构分层来剥离业务和技术的耦合; 价值互联网:是指通过构建一个自带金融属性的互联网络,该网络中第三方中介系统不再是必需的(可以存在),目前来看通过区块链是去实现价值互联网是可行的;区块链通常自带金融系统,且具有排他特性,如果将该金融系统剥离,那么演变为经典分布式系统; 信息互联网下,业务与技术分离的典型产物就是——云计算; 如今云计算的发展已经渐渐突破这种界限,试图渗透到各个垂直领域提供更好的技术方案,最典型的就是金融云解决方案; 但是无论哪种金融云解决方案,都有可重复实例化的性质,即,A厂购买F方案,B厂也购买F方案,但他们运行起来之后...

阅读全文

谈谈对区块链服务(BaaS)的理解

我认为在下半年会一个有关区块链的新词火热起来:BaaS(区块链即服务Blockchain as a Service) 理由有两: 第一、目前区块链的私有链(联盟链)竞争已经进入白热化阶段,HyperLedger/EEA等私有链产品已经摩拳擦掌,国内也有很多类似产品在相互竞争。目前还未进入真正的市场宣传阶段,如果进入对技术型产品的宣传阶段,势必会将BaaS的概念炒热。 第二、BaaS的概念可以很好地与云服务平台相结合,形成将区块链技术框架嵌入云计算平台的结合趋势。 我认为上述趋势和做法,完全偏离了的区块链发展方向。我会详细说明以下几点以证明我的观点: 什么是区块链服务? 什么是区块链技术服务? 两者区别。 为什么说区块链服务比区块链技术服务重要? 如何构建区块链服务? 我认为在下半...

阅读全文

如何使用区块链技术进行项目开发

区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求——低成本的可信环境。 本文以联盟链为例,描述了实践一个联盟链的基本过程,包含以下内容: 业务场景的构建与初步分析,业务场景建模,开发路径,开发难点。本文无法涵盖所有类型的开发,主要提供一些开发思路,并附带说明一下可行的做法。 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个...

阅读全文

© 2019 区块链技术漫谈 All Rights Reserved. 本站访客数人次 本站总访问量
The New Reality Metaverse