7月14日,比太钱包创始人,比特派钱包开发者文浩受邀参加了由币印矿池举办的“硬核酒馆--纯技术交流研讨会”线下沙龙。文浩为大家带来了题为《海量UTXO的钱包/交易所系统优化结构策略》的演讲,并受到了现场及在线观看用户的一致好评。本文即此次演讲的文字稿。
什么是UTXO?它有什么特点?
UTXO是未使用的交易输出,它是比特币交易生产及验证的核心概念。
UTXO具有以下特点
优点:
紧凑,账本空间最小;最适合去中心化不重用地址增强匿名性
缺点:
钱包开发难度大统计麻烦余额计算、交易查询、构造交易困难等
一笔UTXO交易为什么UTXO模型钱包开发难度大?
在钱包开发难度上,BTC>ETH>EOS。因为BTC采用的是UTXO模型,而后两者采用了账户系统+节点RPC的形式。简单来讲,当用户向比特币网络询问我有多少币时?支持比特币网络的钱包需要找到每一笔与用户地址相关的Input与Output,才能给出一个结果。而比特币的用户,特别是HD账户用户,都是地址不重用的。这也给反馈造成了困扰。而当用户向以太坊或者EOS询问余额时,钱包只需要通过RPC向节点要数据即可。
不过,UTXO模型保障了比特币的去中心化及隐私性,让每个用户手里的比特币都一样,不会有差异。稍微懂一点技术的人就知道,像EOS的账户被锁定追踪的难度不大,这就造成用户的资金是可以被标记的,也就失去了隐私性。
比特派在BTC系钱包领域具有绝对优势
虽然UTXO模型具有紧凑、账本空间小的特点,但是用户在使用钱包时产生的数据却是海量的。对于比特派,产生海量数据主要因为以下三个方面:
1、比特派在BTC系,如BTC、USDT、LTC、Doge及分叉币BCH、BSV等具有绝对优势。因此用户基数大,钱包用户占比非常高;
2、UTXO模型本身造成交易数据量大。如,我们曾有用户发现自己一笔转账的手续费很高,最后发现是因为该地址下有几千个Input,有太多细碎交易造成数据庞大;
3、比特派用户大多为真实用户,用户每天的交易频次高。比特派在链上交易占比越来越高,有些块甚至达到了50%以上。
比特派钱包是用户服务中心化,私钥管理去中心化的钱包。用户的海量数据跟交易行为是跟比特派服务器打交道。比特派在钱包架构优化上已经做了很多优化,正是这些海量真实的数据让比特派在钱包安全与管理上有更多的经验跟领先优势。
易用与去中心化的平衡之道
正如刚才所说,比特派钱包在用户服务上是中心化的,而私钥管理是去中心化的。而比特派团队早期开发的,被Bitcoin.org推荐的比太钱包是SPV轻钱包,没有服务器,用户只与BTC区块链打交道。
二者的侧重点不同,比太钱包的优点是完全去中心化,但是对小白不友好。用户经常需要同步区块来了解自己的余额,不懂的也经常受到余额不对,或者“感觉”地址没币的困扰。而比特派钱包则是由比特派服务器来为用户解决这些普通用户平日不需要自己解决的问题,大大降低了小白的使用门槛,省去了很多烦恼。
比特派的钱包架构
整体架构
比特派不提供全区块链数据查询服务
只为相关地址解析提供了区块链数据大大降低了数据量的开销,跟其它想做钱包的团队相比,我们只用了不到1/10的成本比特派是2016年底开始公测的,这使得我们从一开始就不用承担海量历史区块数据关系型处理的负担比特派在链上交易占比越来越高,有的块高达50%以上。这部分数据压力是我们本身应该去解决的
架构优化
分层
比特派架构由节点层、数据处理引擎、关系型数据库、缓存层构成。
冗余
比特派在每一层都尽量做到冗余
声音 | ZebpayCEO:一旦条件更有利于加密货币发展,Zebpay肯定会回到印度:据Ambcrypto消息,Zebpay的首席执行官Ajeet Khurana在接受采访时谈到了该公司在印度的关闭以及加密货币领域的监管更新。他表示,一旦条件更有利于加密货币发展,那么Zebpay肯定会回到印度。并且在全球范围内,加密货币法规的氛围正在改善,其中包括印度。[2019/2/10]
节点层每条公链都有多个异地节点
关系型数据库层多国复制
缓存层从早期Memcache升级到了Redis集群
多链
针对于不同公链在各层都做了隔离设计
单一公链的问题不会传递到其它公链
单一公链的性能不会影响到其它公链
单一公链的安全与其它公链无关
分片
分片是一个长期优化的过程
当前我们做到了一定程度的分片
我们仍在不断优化改进系统的架构,包括进一步数据分片
比特派正在迎接从数百万用户、数十万日活到数千万用户,数百万日活的挑战
海量用户钱包系统优化难度大于一般系统
总结
比特派当前做到了
1/10的服务器成本
1/10的运维成本
无惧竞争,如为以太坊用户提供1,000个ETH地址,增加用户资金隐私性、安全性
公链越多、用户数据量越大、日常行为越频繁,我们的优势越大,因为我们搞定了所谓的UTXO。
结语:关于比特币的真相
今天的分享也是为了纠正大家的几个错误观念。
错误观点一:比特币钱包开发难度小。
很多人总觉得比特币是一条老链,在比特币区块链上的开发难度小。实际上,比特币的结构是最简单的,最去中心化的。中本聪白皮书只有9页,干干净净就把问题给说清楚了。不过越是简单的结构,想要做好支持就越不容易。
错误观点二:比特币代码一成不变,没有活力了
总有人抨击比特币说,比特币代码层面的东西都固定没什么变化了。实际上,比特币是最大共识不变,但是GitHub上代码提交一直是最活跃的。以代码开发角度看,比特币依然是开发量最大,贡献者最多,最具影响力的开源项目。BitcoinCore也一直努力在不影响共识的前提下,让比特币交易的空间占用最小,让签名更安全,让比特币一直具备Fungibility,即可替代性。这个是很重要的,是区块链的基石。永远记得,只有你的一个比特币跟我收到的一个比特币的Input、Output结构是一样的,你才可以放心收币。否则你永远要担心,我今天收的币会不会有问题,会不会人找我麻烦等等。
精彩问答
Q:比特派不支持全区块链数据查询服务,那么用户要导入一个早于比特派公测的私钥时怎么办?
A:的确比特派在很长一段时间不支持私钥导入,但是后来我们通过跟第三方合作为用户提供历史数据导入服务。
Q:首先,我理解的比特币网络就是一个去中心化的账本,钱包也不应该有中心化的服务,但是感觉目前无论钱包还是交易所,中心化的服务太多了。其次,我觉得现在有些交易所为了所谓的用户体验,抬高了矿工费,不知您怎么看?
A:首先,说下第一点是对的,用户是要用去中心化的钱包,因为“NotYourKeys,NotYourBitcoin”。然后关于链上矿工费问题,目前还没有特别好的解决办法,在网络拥堵的时候,你想比别人更快的到账,你就要付出更高的成本。目前比特派为用户提供了动态矿工费选项,一个龟速,一个兔速,用户根据自己的需求来决定。最后说一下中心化服务,大家不用过度纠结,这其实是一个矛和盾的问题。比太钱包是完全去中心化的,没有服务器,钱包直接跟比特币网络同步,但是对小白来说是真不友好。经常有用户问我们客服,币怎么还没到。我们的回复也只有一句:请同步到最新区块。相比之下,大家更应该关心的是两个原则:1、私钥归属权问题。2、全区块账本谁说了算?是矿工说了算,还是矿池说了算,还是开发者说了算,还是大佬说了算?比特币的世界,谁说了都不算,我们希望全世界的全节点账本越多越好。像阿彪所说,如果矿机都能做spv验证,那你就更难我。但是对于一个今天入市的纯小白来说,你让他同步节点数据还是很难的,最好的方式就是打开就有,有币就到。等到某一天,他自己需要做更加专业化的钱包管理时,再来考虑完全去中心化的问题。
Q:比特派钱包的确做的很好,但是护盾产品使用蓝牙通信会不会有安全隐患?
A:硬件钱包的通信方式就这么几种方案,一种就是像我们最早在比太上使用的扫描二维码方案,第二种方案是像Trezor那样,使用USB数据线,第三种就是使用蓝牙作为交互手段。从硬件钱包发展方向来看,未来都会是采用蓝牙连接这种方案,因为的确是便捷,移动互联。安全层面大家应该关注的重点还是开源,开源大于一切。开源你就可以去看刀锋跟护盾运行的代码,到底交互了哪些信息,有没有泄露私钥。而且,Ledger的下一代产品也是蓝牙连接。Trezor慢一点,未来也会是这个方向。
Q:从节约成本的角度,比特派如果像Imtoken一样,让地址复用,是不是可以节省很大服务器开销?
A:可以负责任的说,地址复用跟不复用的服务器开销可谓天壤之别。比特派的确可以只为用户提供一个ETH地址,一直复用。但是今天是硬核交流会,核这个词英文叫Core。你如果跟BitcoinCore谈地址复用,人家会觉得你很业余。比特币的核心思想就是地址不重用,连找零都是用一个新地址。从隐私的角度讲,他们甚至公钥都不愿让你知道,而是给你一个地址。从安全性上,二者差异不大,但是从隐私性上讲,地址重用的隐私性会大大减弱,因为只有一个地址,你跟其他人发生的关联就很容易被知道。地址重用,你很容易就能追踪到说,这些币流到币安、流到火币了,但是像Localbitcoins这样很早就使用了地址不复用模型的,你很难分析出币的流向跟地址间的相关性。再者就是如果是地址重用,不开源的钱包,你这辈子也别想被Bitcoin.org推荐。
比特派因为在海量数据方面的系统架构很先进,所以跟大部分竞品比起来的优势是非常大的,比如说,我们可以很随便的为以太坊用户提供海量地址服务,比如说每个用户一千个,一万个甚至更多的地址都没什么问题。
Bitpie.com
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。