运营交易所的安全挑战 Part 2.1.1 — 风控 - 上币部分
风控部分的文章,因为很长。所以我从大家比较有兴趣的主题先写。我想很多人比较有兴趣的部分,是上币。
上币的原则
上币是交易所收入的主要来源。是非常重要的一环。所以很多人都会好奇,交易所上币的原则是怎么样的。
多数人以为只要上币费给得多就上。但事实上不是这样的。上一个币要考量非常多因素。
而且坦白说,今年开交易所的技术难度比去年年初时开交易所难度高非常多。
以前交易所只需要接 BTC 一套资产,顶多 ETH 再一套资产。
今年要接的资产有:
- BTC
- BTC 及其分叉币
- ETH
- ETH 及其 ERC20 Token
- 各种公链
- 各种公链上的 Token ( 比如 Qtum, Neo, Steemit , XRP, EOS )
- ERC20 Token 转成公链(的过渡过程)
很多人常常会批评常去的交易所,反应不够快,态度很烂,技术不行。不支持分叉币,不支持糖果空投,不支持那个代币转换。
实际上交易所是哑巴吃黄连。
交易所的选币标准
交易所如何选币?
外界可能比较猜测到的选币标准通常是:
- 项目方给了多少钱
- 与哪一些资本战略合作
- 可以带来多少流量与交易深度
- …..
其实撇除这一些常见因素,其实更多人可能不知道的是,交易所还更考虑一个币的界接 / 维护度 / 安全度。
为什么上这个币?为什么不上这个币?
资产分两种,一种本身是链,另一种是链上的 Token。
如果要是赚钱为基础考量的话,其实大多数交易所都宁愿只支持 ERC20 Token。
原因很简单,因为:
- 钱包工程师是交易所极度希有的资源(许多交易所干到很大了,还只有 1-2 位,甚至钱包工程师可能是老板本人或 CTO 本人。。。。。)
- 一个链的热钱包通常是一台独立机器(风控因素)
以 C/P 值来说,当然交易所比较有大的意愿去支持 ERC20 Token。因为毕竟跑在同一套架构上。甚至有些交易所架构,写的比较好,改个设定就能上一套币上去了。
其他的公链,除非是前十,具有极大的流动性。否则交易所愿意接入的意愿,也相对来说较低。
特别是很多公链或者分叉币的钱包,接口与架构做的极其粗糙蛋疼。甚至这些链本身转帐与校验的方式,就不符合交易所的架构安全规范。这种优先权就会被排的非常低。
更别说,是基于其他知名度比较低链(这边就不点名了)上的 Token 了。除非是资本特别关照交易所,否则一般交易所并不会想接这么蛋疼的活。
为什么交易所 2018 年中之后上币趋于保守?
2017 BTC 分叉币之乱
2017 年底的时候,最热的话题是分叉币,各家交易所为了争取交易所,一下说支持这个分叉币,一下又说支持那个分叉币。
后来为什么大家都不支持,或者是只打快照,但实际不接充提呢?
两个原因:
- 打快照太耗交易所的资源。用户都非常在意自己领到精确数量的糖果。所以打快照需要钱包工程师或者数据库工程师全神贯注作业,甚至关闭站上充提。某种程度上相当干扰站上正常交易行为以及日常运作。
- 本来说好的区块快照高度,一变再变。
- 分叉币团队根本做不出钱包,导致无法充提。在这个情况下,交易所哑巴吃黄连,抢先发了糖果,却一直被骂单机币。但事实上是分叉币团队技术不够。
- 许多分叉币后来被证明只是炒作,对交易所毫无维护价值。
2018 年初 - ETH 智能合约漏洞
在 2018 年初,开始很多团队涌入开设交易所。支持 ERC20 Token 大家不亦乐乎。甚至某段时期,有些交易所甚至不需要上币费,推用户自主上币。
但是一段时间之后,为什么又沈寂了呢?
原因在于业界出了几次的重大事故。大家才发现原来智能合约上的信息是「不可信」的。
一般来说:
- 资安的重要意识是要假设用户的资料是恶意的,先行过滤一遍再进行处理。
- 交易所对区块链资产的充值往往只是确认数字对不对,网路上的确认数够不够。防重复充值而不会去校验,这个值是不是合理的。
问题在于:
- 一些发币项目方,并没有本事写智能合约,都是外包的。要码智能合约本身有问题,可以被偷印币。
- 要不是智能合约被外包商留了恶意后门,可以无视拥有者权限任意转帐划币。
这下很多交易所就炸锅了。因为这样会造成
- 被转帐虚假的数字,大量充值,大量提现。交易所热钱包被提光。
- 攻击者恶意砸盘提币变成 ETH 走人。
- 错帐
- 项目方「升级」(其实是换掉)智能合约硬回溯。所以空窗期的损失有可能是交易所或者使用者承担。(因为通常被攻击,到项目方通知交易所,到交易所真正关闭交易。都存在著时间差。)
所以现在多数交易所,都需要上币方必须提交审计报告,甚至质押项目风险保证金。
2018 年中 - EOS 糖果
EOS 糖果,一开始各大交易所都支持的很迟疑。甚至表示负面态度。
事实上就是被 ETH 智能合约漏洞这个问题所搞到胆战心惊的。
- EOS 本身是刚上线的 beta 版本软件,本身不知道存在什么致命性漏洞。(交易所光开充提都很小心保守)
- EOS 上的 Token 本身也是智能合约。然而,这些智能合约没有经过审计。贸然支持实在不知道会有什么后遗症。
- 再来,EOS 改进了「 ETH 智能合约不可升级的缺点」,可以链上升级。可以升级也不一定是什么好事。举个例子好了,若是项目方改变了合约里面的总量数字与合约持有者持有的 Token 总数。。。。。会发生什么事。
- 可以升级甚至可能代表「第一次 OK 的审计报告」可能是无效的。
- EOS 本身上有一些架构问题,目前陆续爆出 0day,还未修复,可能导致交易所冷钱包资源受损。
再来,某些 EOS 糖果的操作非常危险,甚至是需要动用到冷钱包本身操作去领取的。严重违反交易所本身的内控准则。
这都是为什么许多交易所对于 EOS 糖果这件事,并不是持激进态度。
交易所难为的地方在于许多区块链资产都是 beta 版软件上面跑 alpha 版架构。不支持了被用户骂侵吞资产,支持了交易所又暴露在巨大的技术风险下。
如何进行风控
上币的风控分两块
币本身的信用
- 上某个交易所本身,甚至代表交易所检查过背景
- 有些币是明显针对老年人的庞式骗局。答应上了到时候说不清
币本身的技术风险
- 合约本身是否经过审计,没有低级的安全性问题与架构上缺陷
- 项目方彼此的紧急通报机制与内部下架处理
- 风险的承受范围
- 异常交易风控的警报
- 对区块链上传入数字的校验。(可疑的大额转帐,宁愿直接 drop,人工手工入帐出帐。)
- 与生态圈的战略结盟,达到第一时间修复 0day。