【原创】从没有人从这个角度去讨论TPS的商业落地问题?


#1

这个问题来源于一次头脑风暴,话说土星同学有一群不靠谱的小伙伴,有空的时候总想着拯救地球,颠覆商业这种马云才操心的大事,其中尤其以金石开同学为最,脑洞奇大,忽悠的功夫尤其专业,大约10天前我们讨论关于商业应用平台TPS的问题,假设某xx宝平台有20万家商户,5亿的C端用户,平台能否把每一笔的交易信息都上链,公开可查询,甚至把点赞,5星好评等信息上链等等。

pen

TPS是个老生常谈的问题,这个话题从17年的时髦,到现在的谈者寥寥,严格来说,不同的商业应用所用到的tps是不同的,我带着上面这个问题和一位底层开发同学探讨了这个问题,以下为我们的问答,看完你会得到一个有趣的结论。

土星:阿乐兄,现在我的项目有5亿用户,类似某宝这样的平台,年销售额数十亿元,假如把交易全部上链,但现在的区块链只有几千tps,根本撑不住,咱这行业吹的牛能圆上嘛?

阿乐:这哥们以很轻微的蔑视眼神看了我一下,接着说:“我给你举个栗子:假设你的系统平均tps 为100,每一笔交易的价值包含1块钱(例如阿乐去商家消费,买包纸巾为1块钱1包,即可看成是一笔交易)

100 tps * 1块钱 * 3600秒 * 24 小时 = 864 0000 块钱 /天 * 365天 = 315 360 000 0 块钱/年 (约为31亿元人民币

“如果一笔交易价值10元,一年即是310亿元,你觉得这生意够不够大?”

warm%20Daddy

土星:emmm,我从很多角度考虑过TPS的问题,包括带宽等因素,例如现在中国的平均带宽是2.8M/bps,试图计算出现实网络能承受的最大tps,但从来没有从这个角度考虑过TPS是否够用的问题,这让我想起一件事情,在很早以前,还没加入区块链行业的时候,我们团队曾经给客户设计了一款产品,拿了对方很多很多银子,在做产品的时候自然想把这个东东做到尽善尽美,在撰写测试案例的时候就想把各种极端case加进来测试,以便保证客户在高通讯量的情况下不被爆掉,当时假设是同时有5000万人用怎么办? 结果调查的时候才知道,客户的极限峰值,无论如何也不会超过300万用户,意味着300万是测试的极限值,这个错误跟我问tps的事情有一点是相同的,这些假设都不切实际,导致产品设计至于空中楼阁之上!

结论 1:大多数的商业项目都用不了这么多的tps,1000 TPS都足够平时用了。

bead%20exchange

当时被他的这个计算角度给惊到了,我后来回去特意去查了阿里的数据,得到如下结果:

  • 18年双 11 当天平均17129笔交易/秒,峰值为49.1万笔交易/秒。

  • 阿里月活大概在10亿左右,假设平均每一笔的Activity都能转化为一笔交易:

10亿 / 30天(约为333 333 33 笔) /24小时/3600秒 = 385.8笔/秒

我们可以约等于认为平均的TPS数值为385 tps/秒,从上面的计算结果可知,阿里平均有400tps足够用了。

pen

但新问题又来了,我们计算的都是理想数值,人们的购物、消费习惯不会这么平均在每一秒里,某些时候可能会超过1000笔/秒,例如双 11 这种情况该怎么办呢?峰值49万笔/秒,如果小伙伴们的商业项目遇到这个问题该怎么办呢?

土星:在当前的情况下,我们可以采取如下的方案来进行解决,首先你要有2个系统,一个中心化的 A 系统,一个去中心化的区块链 B 系统,A 系统相当于一个能力巨强大的 Node,一旦系统 B 超过所能处理的阀值的时候,A 系统暂时把这些交易数据存储在中心化数据库里,待B系统平稳后,再分批把这些数据打包出块的区块链 B 系统上,这里面掠过了一些技术实现法案,A 到底和 B 怎么交互的问题,这个问题留待日后再详加讨论,综上所诉,这种互相结合的方式可以有效解决商业应用中关于区块链系统不能承载峰值交易的问题。

结论 2:商业项目可以采用这种互相结合的方式来解决TPS的问题,或者说这是一个可行的方向。

glass

一个新的疑问

在我跟阿乐讨论这些问题之后,我做了个梦,梦中有个完美的项目,解决了TPS的问题,然后我把淘宝的交易系统base在了这个系统之上,所有的交易、积分、点赞数据都上 B 链了。

问题来了,这样的一个区块链上的淘宝,谁会喜欢?首先这些打包出块的矿工会喜欢,马老板给矿工分“阿里币”,我们假设阿里也喜欢这个系统,但是对于C端的用户来说,他们有什么特别的好处?有感知嘛?

我想未必,对于阿里的用户来说,天猫买的东西质量ok,送货便捷,店家退换货服务周到,购物体验顺滑才是最重要的,数据是否上链对他们来说没那么重要,用户也不担心阿里会更改他的数据,也不担心丢的问题,或者说几乎没人关心自己的交易数据是否去中心化,《Zero to One》 的作者彼得蒂尔有句话说的很好,大概的意思如下:“某项新产品除非比旧有的产品好100倍才会吸引人们去使用或者尝试拥有它”,放置四海而皆准,区块链领域也是如此,一点点的区块链技术应用,不足以让你的产品成为爆款,你得重新挖掘 Blockchain 对项目的改变,不过我相信小伙伴们也意识到了这个问题,以他们的脑洞能力,必定会产生一个惊艳的方案,不是今天,就是明天,时间会孕育一切。

end_3


BG悬赏令--如何实现未来项目F的智能合约升级?
#2

是个很好的想法。去中心化本就不是目标,只是手段。


#3

Q1:

这样的双系统有没有意义,在这样的设计中数据写入区块链仅仅是一个上链行为而已,且不言中心化A系统的安全性、会不会容易被攻击;仅言上链这个过程,通过这样的方式,交易确认的时间可能会被大大加长,双11当天的交易我可能要等到双12才能被确认(双11当天平均17129笔/秒,TPS假设为400笔/秒,17129/400=42天)这应该是在任何时候都没有办法被接受的吧。

况且我也并不认为区块链技术仅仅是一个数据上链的过程。

Q2:
还有一个问题就是,公链的设计不是需要去承担一个淘宝的交易数据,真正公链的设计是需要去承担成百上千个淘宝的交易数据,所以下面这句话并不适用于底层公链项目。