教你如何设计去中心化交易所
【前言】
最近学习了闪电网络、雷电网络,第一反应觉得这种链上信息链下处理,甚至有些项目提出hub中心的概念来集中处理,本质和银行或者说和中心化交易所又有啥区别?如果要这样来提升速度达到信息交换和减轻主链的负担,那还不如好好做好监管好每一个交易所更实际,目前他们在链下就扮演着这个角色。也许笔者的理解还未升华,暂时还不能接受区块链作为全球货币发行,线下银行作为hub运作的模式,这都属于后话了。
当然本文的主题不在讨论闪电网络的思路,主角还是交易所。如果基础还不了解的童鞋,可以前往《中心化交易所和去中心化交易所交易流程对比》一文先学习再来看本文。以下将以去中心化交易所作为主要探讨对象,并使用分布式交易所一词代替去中心化交易所(笔者真心开始厌恶中心化和去中心化这两个词藻了)。
【背景知识】
在探讨如何设计分布式交易所之前,我们先反观一下传统的股票市场的运作模式,早期时候我国股票交易所和币圈的交易所很相似。在2007年前,股民保证金有两种方式:一种是普通的银证转帐,券商有机会挪用;另一种是银证通,卖出股票资金立马回到银行,不给券商任何挪用机会。
然而,第一种由于南方,华夏等券商的倒下而被证明是不安全的,于是上述券商被重组后即被强制实行三方存管,此制度后来扩展到全部券商;第二种方式对于股民是绝对安全了,但券商无法吃利差了,当时这对于券商是很大一笔收入,于是证监会找到银监会叫停了这种模式。
在2007年6月份的时候,证券法正式提出:为防止和纠正证券公司在管理客户投资资金时的种种违规行为,证监会对客户投资资金管理作出专门规定,客户投资资金必须由证券公司的开户银行(一般只能选择二家银行)进行“第三方存管”,也就是说证券公司不能再直接管理客户资金。
三方存管始于建行与中投的合作,模式由建行设计,后来推广到其他银行和券商,并作为券商分类(创新类,风险类)的条件。三方存管的核心是,区分券商的自营与客户资金,客户资金只能划转到交易所备付金账户,并且这个操作由银行完成,具体说就是如果当天净买入,次日银行根据交易所数据将客户资金账户划入相应金额去交易所,反之则收到交易所退款。三方存管是最保险的制度,其他类似的托管,监管都不如它。很多私募之类的故意混淆概念,其实目前只有普通的银证转账才是唯一的“第三方存管”制度,连证监会监管的B股银证转账,两融银证转账,期权银衍转账,期货银期转账统统不是三方存管制度。
以上扯了那么多传统股票市场的模式,简单而言就是:股民的钱是由银行保管的,券商只是负责维护股票交易的账本(交易撮合)、股份管理和清算交收等,每天收市之后,券商把账本提交给托管银行,银行按照账本来进行具体的资金清算业务,这也是为啥资金提取都是T+1操作的本质原因。为了防止股票市场券商的作恶,股票交易分成了交易撮合和交易清算两个流程,并将责任体分离,从而达到监管保证股民安全的作用。此处还需要强调一点的是,期货也不算三方存管,只是券商要从自有资金账户划一笔钱到存管银行的账户作为保证金。
回归到币圈交易所,目前中心化交易所最受诟病的就是币转给交易所之后用户就不在享有所有权,正和当年股票银证转帐模式一样,而区块链的优势是不需要中心化组织来维护账本,天然的提供了一个解决办法——分布式交易所。鉴于跨链问题尚无法有效解决,所以分布式交易所能彻底运作起来的只有erc20代币系列。也有一部分项目试图从模仿股票市场的银行存管模式,将交易和清算分离达到安全性提升的效果。
所以,细化分布式交易所的概念就有以下三种:
1.完全分布式交易所——如idex(以德貌似因为一系列丑闻感觉已经淡出了市场);
2.中心化撮合,分布式清算(股票市场的银行存管模式)——著名代表DEW;
3.中心化交易所,分布式管理——如上币权由用户主导,拥有平台代币权益更多等;
【中心化撮合,分布式清算模式(资产存管)——DEW】
由上述提到的细分概念,很显然第一种完全分布式交易所鉴于跨链问题,加上处理速度和用户界面以及个人安全性问题,路还很长;而第三种本质还是中心化交易所欲图洗白模式,目前最有前途的貌似还是中心化撮合,分布式清算。那么我们再来仔细研究一下DEW。
DEW的链托管
这是DEW对自己分布式清算的一个解释,主要就是说用户注册时候的那个拥有密钥的地址就是链托管账户,最终表现形式就是提现只能提交到最早绑定的账户而且不能篡改。这个公开的托管智能合约地址就是笔者《中心化交易所和去中心化交易所交易流程对比》一文中提到的DEW交易所智能合约地址:0x7b74c19124a9ca92c6141a2ed5f92130fc2791f2,由于看不到具体代码,从表现形式推测DEW智能合约的主要四个功能:
1.充值功能。用户通过钱包工具向DEW合约发起充值函数调用,该交易会将代币资产转账至合约地址,DEW合约会对该笔转让资产进行接收。
2.实现提现地址的绑定功能。用户通过软件向DEW合约发起提现函数调用,该交易会将代币资产从合约地址转账至个人绑定的账户地址。
3.对中心服务器用户资产账簿数据的交互功能。如充值时,资产接收完成后还得有录入用户资产账簿的操作,像IDEX和以德这个用户资产账簿是链上的,作为中心服务器撮合模式,笔者个人觉得用户资产账簿和订单簿放在中心服务器应该更合理,合约通过调用中心服务器中的用户资产账簿来确认执行提现操作,同时返回执行结果,服务器中的用户资产更新。
4.admin账户的提现权限、更改权限等高级需求。以上是实现类似股票账户托管的必备功能,同时DEW现在的主营业务已经从现货交易完全变成期货交易,期货交易即时强行平仓的要求,加上交易和提现的手续费,以及安全性的考虑,所以这个智能合约应该还有一个类似admin的对接账户,它能转出交易所的盈利(包含手续费、爆仓所得等,当然用户盈利时也得补充资金),同时智能合约地址相当于一个热钱包,出于安全考虑,交易所不会将所有的资产都托管在其中,必将需求将一部分资金托管到冷钱包中的需求。从这个角度讲,这种模式属于一个弱账户托管的模式,因为资金仍然可以是被调用的。
笔者推测DEW模式
其中针对第4点的推测逻辑来源于传统期货市场也不算三方存管模式,因为有平仓需求,同时参考中心化交易所的安全模式,笔者认为是合情合理的。下图为中心化交易所的一个基本模式,主要是钱包管理服务器和数据服务器是完全分开的,钱包管理服务器又分为两大块:热钱包和冷钱包。热钱包主要用于大量的小额冲提服务,冷钱包正常是离线状态,只有出现大额转帐时才会使用,保证了主要资产的安全性。同时多个热钱包分别管理不同的用户也增强了安全性,甚至是对于不同级别用户的管理。
(中心化交易所BTC交易流程参考: 交易网站和钱包管理是分开的,通过数据库通信各个账户余额就可以了。它们在不同的网络上,每个账户的钱包就是一个地址,如果用户充币,钱包管理服务器,向数据库该用户记录增加一个bitcoin地址,余额是0,用户向这个地址充值,交易服务器查询区块链txid,发现确认到账,增加用户相应余额。私钥在钱包管理服务器。用户提币,交易服务器,经过发邮件,谷歌认证码等确认通过后,写到数据库服务器,该用户提币申请,另一个网络钱包服务器发现后,向区块链里面该用户提币地址发币,把txid写到该账户记录里面。)
中心化交易所基本模式
【分布式交易所的账户资产托管模式】
由上可见,从防止中心化交易所作恶的角度来看,未来如果在合规的情况下,引入股市的第三方托管模式是一个合理可行的思路,而又因为加密数字货币的去中介化特性(参见区块链技术的去中介化、精简中间过程化 – 类ONT项目:韩国Edenchain +日本proximaX),这个第三方可以通过技术方法——链上托管的模式来解决,而不是传统的以银行等强大信用背书的机构。然而技术却只能是辅助作用,考虑到安全性、利润以及多种模式(传统行业也只有股票能做到真正的资产第三方托管),这个设计过程仍然是需要一定信用背书的机构来人工干预。不过我们仍然是可以在以上基础上有改进空间:
1.建立多个智能合约地址实现账户分布式托管,这样类似中心化交易所多个热钱包的思路,减小安全风险;
2.考虑交易所和资产托管主体分离,交易所负责中心化撮合,资产托管机构负责设计链上托管智能合约,负责依照交易所的账簿进行清算。同时允许执行admin权限对智能合约地址资产的转出,但是也必须绑定一个地址,这应该是一个多签账户,交易所和资产托管企业2/2签名才能操作账户里面的余额。如果以后合法化了,甚至可以增加监管机构的多签权限。不过这一块动了太多利益方的蛋糕了,有一定难度;
3.每个热钱包设置一定资产限额,多余一定值以后统一转出到冷钱包地址,这个冷钱包也应该是个多签账户。
4.不过以上资产托管模式仍然是局限在能支持智能合约的公链,对于诸如BTC的交易的资产托管模式只能直接采用多主体的多签账户来实现(将链托管的智能合约替换成BTC多签账户),从这个角度讲,多主体分离多签相互监督制约也算是分布式的概念,同时这样设计出来的分布式交易所也可以实现跨链交易的功能了(交易本质只是订单簿,用户账簿数字的变化,处理好资产托管的转入和提出即可)。
发表回复