小虎论语系列前话
前话之一
今天开一个系列,主要讨论最近热火的 区块猫 cryptokittes,如何把以太坊堵成了狗,呵呵。先介绍一下我们墨客 团队的几个成员。首先是技术大牛领军人物小虎,其实小虎就是山猫。我们 老家就叫猫。人家其他地方有虎跳峡,我们当地有猫跳河,是著名的乌江上 游。那么除了小虎这只大猫,我们还有酷猫和蝙蝠猫,最近新加入的盼盼猫 (其实是熊猫)。有没有狗?有一只搬砖狗,呵呵。所以猫是墨客的朋友, 这个是一点都不假。
前话之二
自从比特币兴起,一类新的产品产生了。这个产品叫做 crypto assets,加密资产。那么比特币代表的,算是 crypto currency, 就是加密货币。当然了这个大家吵来吵去很久了,呵呵。那么区块猫的出现,代 表了另一个大类的产品出现,叫做 crypto collectables,加密收藏品。这个一 开启,就是一个百万亿的市场。你看,2 亿人民币的猫猫已经产生了,价格直追 齐白石的画,这种加密产品替代实物产品,将成为未来的一个趋势。
前话之三
正好说到齐白石,有一次他到街市去逛,看到有小 贩在卖虾。齐白石特别喜欢吃虾,就想买,可是忘记带钱。于是齐白石就提议, 用身上带着的一幅自己画的虾,和小贩换篮子里面的 。小贩坚决拒绝,嘲笑说, 你当老子撒比,用一个假 来换我的真,呵呵。大家都会嘲笑这个小贩不识货, 那么今天嘲笑你居然去买加密的猫,其实就是这个小贩的同路人。
前话之四
先让大家欣赏一下以太坊堵成狗的样子, 呵呵。大家问起为啥加密资产会盛行,其实你需要先了解两个词汇:一个是 虚拟资产,另一个是数字资产。总而言之,随着人类科技的发展和大规模生 产模式的开启,整个人类的物质产品其实是出现过剩状态。目前你看到的饥 馑和物资缺乏,并非供应端生产能力的不足,而是和分配端有关,是被金钱 的门槛给造成的。那么在这种情况下,人类文明的发现会进一步向虚拟化转 变,各种现实资产的虚拟化和数字,以及纯虚拟数字资产的产生已经开始。 在这种情况下,游戏世界里面的各种装备虽然只是在网上存在,但是与现实 存在的装备,并无太大差别。而加密资产,则是给虚拟和数字资产添加了安 全和隐私的盔甲,因此加密资产将会是这个大革命时代的标志。这一波对人 类社会的影响,要大于互联网革命。
小虎论语
小虎论语之一
猫猫如何把芳芳变成了狗狗。我们在 etherscan 上面找个区块,比如 4692278 来看一下。这个区块里面,一共有 68 个交易,其中 48 个 是撸猫,呵呵。区块猫本身是一个 DApp,其中主要两个智能合约,一个是撸猫 生崽,叫做 CryptoKittiesCore,另外一个是生出崽去拍卖,叫做 CryptoKittiesSalesAuction,呵呵。所以现在是超过一半的交易,是撸猫。那 么再看看合同调用的 gas 消耗量,大概在 50k-300k,平均估计 100k。现在芳 芳的总 gas 支持量,增加到了 670 万(以前是 450 万),所以每个区块里面可 以撸猫的次数是,670 万/100k=67 下。不错,上面这个区块就是 68 个交易,很接近。考虑到区块生成时间是 15 秒左右,那么每秒钟,就是 67/15,大概 4 下。可是区块猫会热下去,之后区块狗,区块羊,都会起来。芳芳最后成了狗狗, 呵呵。
小虎论语之二
那么芳芳以后就做不成人,只能做狗了?最简单办法,就是 提高 gas 总量,比如提高 10 倍,但是这样就要求每个处理节点的能力必须提高 10 倍。这个可能触发更多问题,或者牵涉到两位大牛撕逼的事情,呵呵。另一 个可行方法,就是分片 sharding,比如把芳芳人民公社的所有节点(大概 25000 个)分成 100 个生产大队,让各大队分别去撸猫,相当于把系统处理能力提高 100 倍,这样每秒钟可以撸猫 400 下,呵呵。
小虎论语之三
400 下撸猫很不错,为啥不马上分片?说起容易做起来难, 呵呵。(无耻地插播广告:墨客的分片已经完成,欢迎猫们狗们羊们过来尽情撸。) 芳芳已经努力两年了,目前看行程尚未过半。难点在哪儿呢?第一,分片的子群 的大小有限制。一方面,希望韩信带兵,多多益善,分尽量多的片。但是为了维 持系统的容错性,分片的节点数你必须有一个下限,比如不低于 50 个。(帮 IBM 打一个广告:我们支持总节点 16 个呢。)
小虎论语之四
什么,还有其他难处?是的,第二个难点,分片的共识有限 制。由于节点少,用 POW 的挖矿共识就不太适合,最好就是换成 POS。可是 芳芳的 POS 共识 Casper 吵了好几年了,最后可能就是共识无法转换,成为一 个双共识混用,这样分片就更复杂了。第三,分片之间必须保证数据的一致性, 目前看芳芳还没有找到最好的实现路径。可是辣莫难的分片,为啥墨客做得到 呢?
小虎论语之五
为啥墨客辣莫厉害呢?好简单,因为墨客的人都是硅谷资深 高端码农呗,呵呵。其实墨客是采取了分层的方法来实现分片。墨客的底层,用 POW 挖矿来保证全局数据的一致性,而墨客的上层,采取 POS 或者 PBFT 的方 式,保证子片的数据一致性。墨客底层称为 v-node,可以几千到几万个挖矿节 点,保证全局一致。而上层的 scs,是处理分片的智能合约,可以有几十万到几 百万个。这样墨客上面的区块猫和区块狗,就可以尽情去撸,而不会出现芳芳的 狗样,呵呵。区块猫和区块狗,也不会影响其他应用,在自己的子链里面快乐的 被撸。