bibodeng

Think By My Mind


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

GBDC大会见闻与思考

发表于 2019-01-01   |   阅读次数

12月15日,BCH社区联合EOS等社区的人们一起在香港召开了一个技术大会,大会的议题就是探讨区块链的发展方向,交流一些前沿技术,同时让我们这些区块链的从业者们,互相交流碰撞出一些火花。本次大会,给我的感觉是不虚此行,虽然来的人不多,但是彼此的交流是通畅的,也碰撞出了许多火花。通过这次的大会,我看到了区块链的未来,也坚定了我们继续从事这个行业的决心。

区块链的现状

大家都知道,2017年币价涨得太疯狂,导致2018年区块链经历了大半年的熊市,一些主流币种依然跌去了很大份额,一切仿佛要往归零的方向滑落。这一年,发生了很多事情,首先是币圈的火热,导致许多人纷纷投入炒币大军,有的赚的盆满钵满,有的亏得倾家荡产。然后是EOS诞生,ICO凉凉,DApp火热,大量HD钱包诞生,我们也看到了这个未来,从而投身其中。然后是BCH分叉,大打算力仗,币价一路下跌,直到这两天才有大的反弹。

BCH社区,在经历了分裂之后,人们还有点无所适从,最直接的就是,用户变得更少了,开发者也变少了。所以总体而言,BCH的力量是被削弱了的,从币价上也能看出来,分裂后,1+1 小于 1。然而就像长征时的红军一样,分裂过后,新的格局正在形成。本质上来说,双方都有说得对的地方,总体目标是一致的,而BCHABC更加偏务实重视技术,而BCHSV更加理想看重设计。大会上江卓尔发表了演讲,阐述了应当借鉴邓小平改革开放的“猫论”、“摸论”、“不争论”,积极迭代,取长补短,来不断完善整个区块链体系。

除此之外,公链方面,EOS的兴起也得到了许多的关注,本次大会邀请了相当一部分EOS社区的开发者,例如比特派的文浩、starteos和helloeos超级节点的代表。通过演讲发现,EOS生态目前是挺活跃的,尤其是其TPS更高,出块时间更短,交易0手续费,所以用户体验较好,近期的“菠菜“类游戏也是变得火热,但其中私下聊天发现,EOS方面的用户还是有水分,EOS的相关设计,诸如不够去中心化,安全问题等等,依然让许多人抱有怀疑。

技术的迭代进步

此外,本次大会的一大议题就是前沿技术,虽然没有请到V神或者BM,但是BCH社区到场了许多技术大牛,有好几个非常精彩的演讲,主要是围绕着区块广播、SPV交易验证、扩容技术等方面探讨。

其中印象深刻的是杨光发表的可验证计算,通过为交易构造容易验证的证明信息,从而能够加速交易和区块的验证,从而降低新加入的开发者解析和同步的门槛,同时为扩大区块容量或者缩短出块时间做好准备。这项技术还只是在研究阶段,但是这场演讲娓娓道来,让人们看到区块链中有越来越多的专业人士在奉献力量。

另外,还有一个Blocxroute的项目,通过构建一个区块广播节点,直接将数据传输到相隔甚远的地方,减少区块在网络中传播的时延,同样也为大区块和缩短出块时间提供了便利,例如矿池使用该服务后,可以快速地将区块广播至全球或者从Blocxroute获取最新区块,从而能够快速投入到下一个块的挖掘,增大挖出下个区块的概率,从而提高收益,而Blocxroute从中进行分润。

除此之外,我们还和BCH的核心开发者们进行了详谈,我们和Amaury聊了关于BCH技术改进,迭代计划和治理模式的一些问题。CTOR技术、瘦区块和DAG技术,这些本质上,都是为了加速交易的验证,从而才有可能谈扩容,否则的话,扩容只会变为空谈。Amaury人非常nice,手上经常把玩着一个魔方,通过聊天,也发现Amaury并不是只关心技术的极客。他表示,BCH社区还是应该以用户为主,从用户那里获得反馈,从而指导BCH的开发工作。

社区治理模式

目前,BCH社区的治理模式并不明晰,目前,BCH社区仍然是开发组领导,开发者们通过自筹资金或接受捐赠,进行着全职或者兼职的开发工作,网络要上什么功能,都是开发者通过收集来自用户和社区的意见,然后直接作出决定的,然而这仍然需要大量的探讨。例如,比特现金的CashAddress格式,是典型的失败的设计,解决一个问题,引入一串问题,当时并没有通过社区的严格讨论,开发者宣布升级了节点程序,这样的做法是很有问题的,给用户和开发者带来了麻烦。

此外,BCH社区的开发者严重不足,当听到BCHABC开发组仅有3位主要开发者时,我是相当震惊的,这么大市值的一个币种,居然仅有那么几个人为它做基础工作。当然,目前情况有所好转,BCH拥有更多的开发组,开发组成员远程协作。作为行业龙头的比特大陆公司,还组建了一个哥白尼项目组,开发实力雄厚,但是由于易黑体质以及对治理模式的认知升级,也不愿意直接通过开发组来领导社区,而是更加欢迎比特币协议的标准化,希望由用户和应用开发者来提出需求,由一个领导组织来评审需求,由算力进行表决,从而根本解决治理模式的问题。治理模式一直是区块链的通病,有的公链要么过于中心化,要么过于去中心化,我们真正需要的是由需求驱动,能够给出正确方向的决策机制。

主要任务和目标

经过这种正式和非正式的碰撞,我们能够得出许多结论,以下这些结论适用于BCH社区,但仍需要大家独立思考。

社区首要任务

技术首要任务是扩容,或者说是提高网络处理能力。

经过数日的推演,我发现,最终要使得区块链繁荣,必须让更多数据上链。区块链本身能给我们带来身份、隐私、支付的能力,而数据上链则是将这些能力和数据结合起来,只有数据上链了,才能彻底解决落地的问题,你会发现许多问题迎刃而解。memo、keyport是非常有启发性的,它制定了一套协议,所有数据在区块链上,它们能够闭环运行。区块链成了一个可溯源、可征信的信息载体,至于谁是可信的,取决于你信任谁。

想通了这个问题,你会发现,区块链上将会涌现出海量的数据,而这些数据,需要更大的区块来容纳,故而社区的首要任务是扩容,从而为这些应用提供支撑。

然而扩容不仅仅是一句口号,而需要开发者、矿池、钱包、应用开发者 等基础提供技术和支撑,这里有很多技术亟待研究和试验。

扩容,符合比特币的初始目标,扩容后将有更好的体验,更多人使用将使得区块链网络更有价值;扩容,符合生态所有开发者和用户的利益,矿池获得更多收益,应用有更大施展空间;此外,扩容将使得生态参与者进行良性竞争,谁更能满足用户需求,谁提供的服务更优,谁将获得市场的认可。

社区技术之外的首要任务,就是建设合理的治理模式。

这个过程是很多利益集体博弈的过程,不是一朝一夕能够完成的事情。理想中的比特币,应该是一套协议,类似于TCP/IP协议一样,协议规定了比特币的最小共识,协议的制定由一个专家委员会来给出,里面有各个领域的代表。所有节点程序只是协议的一种实现,可以由生态中的企业参与进来,他们有足够的动力去开发更加好用的节点。协议尽可能地灵活,能够支撑住需求的变化,例如区块大小的限制其实是不必要的,它的大小来源于技术限制。此外,算力拥有最终的投票权,它决定了一条链的死活。

首先,可以肯定的是,社区的领导,不是由开发组领导的。开发组,拥有代码能力,是军队,开发组的领导,是军政府,拥有代码的权利就可以自行定义比特币协议,这显然是不对的。类似于毛泽东所说的,应该是理论指导实践,党指挥枪。社区的领导需要一个委员会,来凝聚各方的共识,或者建设一种无须委员会,也能让所有人参与投票的一种方式,来对不同的提案进行表决,大家不一定知道什么是对的,但是当各个方案摆出来的时候,至少是知道哪个更优,这是完全有可能实现的,BIP(比特币改善计划)就是一个雏形。

智能合约重要吗?

智能合约重要吗?重要!但是这是应用层的事情。比特币里的锁定和解锁脚本,其实就是智能合约的雏形,它强制执行了资金的所有权转移。无论是ETH和EOS里的智能合约,只有在进行资产的所有权上是最有用的,例如ICO,是通过智能合约约定了Token的所有权转移。智能合约有一个缺点,那就是需要所有节点都运行一遍,成本很高,这使得它不能开发大规模的程序。

事实上,并不是所有人都关心智能合约的内容和执行情况,但是却要求所有人去运行智能合约,这个模式不太合理。此外,我们即使有了智能合约,依然要相信Token发行者,因为是它们为Token债券负责。智能合约适合在比特币之上的一层去运行,比特币为它们提供安全模型,例如WHC/Koken/SLP/bitcointoken等方案,都是在构建智能合约体系,它们的数据直接存在链上,而比特币不需要理解其中的含义。

有了智能合约,则比特币将可以处理更加复杂的所有权应用,目前,比特币有P2PKH,P2SH(可实现多重签名)等等,但是还不够,我们需要授权,我们需要更多人参与的合约,我们需要低门槛就能写出安全、稳定合约的方案。

公链的角逐

公链里面,大家比较看好的有那么几条:

  • BTC

  • BCH

  • BSV

  • LTC

  • ETH

  • EOS

我们一个个来看,首先,BTC,它拥有Bitcoin的品牌,以及1MB的大小和复杂的闪电网络技术,然而故步自封以及走这种极客道路,会使得它无法成为点对点的电子现金,因为它不能支撑更多用户,使用体验也很差,其理念是把交易和数据从链上转移到闪电网络里面,这个方向是错误的。很大概率上,BTC将会因为糟糕的用户体验,无法承载更多用户而被淘汰出局。

其次,BCH和BSV,这两者,继承于Bitcoin,秉持着大区块的理念,目标是做点对点的电子现金,这个方向是明确而清晰的。然而这两个社区刚刚经历了一次分裂,甚至不惜砸重金大打算力战,从而对社区造成了很大的削弱(有朋友甚至开玩笑,说EOS社区里面,分叉以后大家还是朋友,然而在BCH社区里,分叉以后,大家见面都会尴尬,这也说明了BCH社区成员是多么在乎自己的想法)。其实,本质上,二者的方向并没有不同,只不过在路线上有所区别。一个对于比特币看得更加清楚,认为无论如何先扩容,但是却没有给出可行的解决方案,希望通过理念号召大家去达成各种目标;另要一个,虽然知道要扩容,但是不认为这个事情有那么紧迫,而是还在探索这个路线和步骤。我认为,应该秉持BSV的理念(CSW在路线方面说得很对),坚持电子现金不动摇,坚持大区块,同时要脚踏实地去完成各个阶段的目标。我想,这就是为什么CSW说没有分裂一样,因为我们彼此互相需要,BCH需要更强的理念,而BSV需要更强的开发能力。越来越多的社区开发者意识到了这个问题,通过这一战,理清楚了这些问题,不远的未来,我们将看到各种应用的爆发。

LTC,参考了BTC的设计,但是出块时间更短,是用户体验更好的BTC,其良好的用户体验甚至赢得了交易所搬砖专用币的称号。但由于路线和BTC一致,故而不予置评。

ETH,采用了账号概念,并且采用PoW + PoS 挖矿,其智能合约较为强大,能够实现一些较为高级的功能,但是性能方面遇到瓶颈,智能合约在每个节点上都要运行一遍,节点的处理速度跟不上交易的产生速度,从而造成了拥堵。此外,账号制会带来一些限制,它不能并行地处理账号下的交易,必须一个接一个地变更账号的余额状态。除非有非常强大的技术能够解决拥堵问题,否则,ETH的用户量将停滞。

EOS,采用了账号概念,进行了分层设计,并且引入了协议簇的概念,采用DPoS挖矿,较为中心化,但是TPS较高,用户体验较好。然而,不久之后,人们发现,EOS也碰到了性能问题,EOS所需的CPU、内存等资源紧缺,这种设计也造成了人们使用上的复杂。由于设计上的问题,EOS的发展将受到限制。

最后,说一下UTXO的设计,它是那么直接而纯粹,但是大多数人忽略了它的好处。UTXO的设计,能够使得交易能够并行处理,唯一要做的工作,就是确保UTXO的有效和预防双花。UTXO相连接,可以构造一个UTXO集合,它是一个有向无环图,也就是我们常听到的DAG。UTXO的处理瓶颈不在自身的设计,而在机器的处理能力,这一点上,是远远优于账号制的。

结论

综上,我认为区块链的未来在比特币上,也就是BCH和BSV上,它具有无限的可能,而这也足以让我们这些从业者激动不已,让我们拭目以待吧。

最后,以上观点不构成投资建议,市场的行为往往与个人判断不符。

2018我的转折年

发表于 2019-01-01   |   阅读次数

2018年,可谓是关键的转折年,在这一年,我出来创业了,在这一年,我结婚了。时代的大潮在向前翻涌,我算是做了一个勇敢的决定,然而这一路走来,感觉经历了很多,之前认为不会犯的错误,居然也踩了坑,没有达到预期。然而正是这些磨砺,让我看清楚了更多东西,也收获了宝贵的经验。

2018年上半年,我还在ViaBTC上班,其时矿池Web端主要由我一个人开发和管理,我已经熟悉了这个系统,并且做了一次大的扩容和重构,矿池能够容纳百万级别的连接,我在开发方面也游刃有余。在牛市中,公司也在快速的扩张,我们个人的资产也在2017年的牛市中获得了较大的增长,好像随便投一个币,都能涨十倍,身边有同事直接就晋级千万富翁了。然而,我却萌生了自己出去创业的想法,其实我很想要通过磨炼技术成为技术骨干,能够独挡一面,并且能够表达自己的想法。然而我实在是分身乏术,或者说是能力有限,精力不足,不能在负责日常开发运营的同时,想更多的事情。于是我思考了很久,同时咨询了好友和亲人,看看他们的建议如何。

当时想着说,反正手上有了那么一点钱,不会饿死,自己做一个项目,然后边做边看,而且做工程师总感觉路子越走越窄,于是坚定了创业的想法。当时我看到的方向是做一个钱包,虽然那会早就有很多老牌钱包了,比如 比特派、blockchain.info,imtoken,也都能满足需求,然而我看到的是它作为区块链的2C流量入口,并且以后随着区块链的普及,一定会成为使用频率很高的身份、资产管理的必不可少的工具。于是开始做调研市面上的钱包,想要做一个钱包。于是我去跟老板谈,说自己想要出去创业,他支持我的想法,他也想要做一个钱包,然而却不好分出更多精力,觉得应该有一个团队专注去做这个事情,而我对这块刚好非常感兴趣。于是,他提出帮我一把,提供种子轮的融资,就这样,公司还没成立,获得了第一笔融资。

一开始的想法真的很简单,然而真正做起来,才发现,创业,不是一般的难度等级,而是Very Hard模式的游戏。最初的冲动要是最原始最强烈的,但是接下来的每一步,都应该小心谨慎,思考全面。于2018年7月,IFWallet正式成立,我拉了两个比较熟悉的朋友和师弟,凑成一个有前端,有后端的团队,就开干了。首先是找方向,这会已经有好多团队在做钱包了,包括早在2017年底就开始发力的cobo,以及和我们同期成立的coco,还有数不胜数的新钱包,比如麦子钱包、番茄钱包,专注BitcoinCash的Electron Cash 等等等等。这个市场一下子竞争就非常激烈了,而且其中不乏技术强、会运营、不差钱的团队。

钱包,真的很需要一个定位,我们定位为多币种钱包,后来发现这里竞争太激烈,而且我们没有优势可言,除了简单好用一些,发现很难打出差异,而简单好用,大家通过模仿也都可以做到。但是不管那么多了,我们先将东西做出来才是正事。于是我们招聘了一个设计师,用ReactNative技术就开搞了,经过一个多月的研发,终于将这款产品折腾出来了,虽然非常地简单,但是总算是出来了,这一部分得益于开源库的帮助。本来我们想着走进矿工的市场,因为矿工天然就有币,而且我们可以通过ViaBTC的渠道,获取一部分用户,然而产品还没有足够完善,这一切都还不能推,之前想好的盈利模式,例如理财、交易 等等,还是比较遥远。于是我们逐渐扩充团队,争取加快产品的迭代速度,上DApp Store、支持WHC的功能,同时做一些小规模的运营,送送币,每天发一发微博之类的运营一番,然而发现要获取用户真的是太难了。搞来搞去,用户量还是非常小,根本没有规模效应,这一切其实还是因为产品满足不了需求,我们的运营也比较落后,很简单的一个问题是,我问自己我会用这款钱包吗?都很难给出一个有说服力的理由。其它钱包有的是抓住了PoS理财、有的是抓住了DApp Store并且上了一些游戏,而我们只抓住了一个WHC,但是这里的用户又太少了,这个时候熊市已经到来,市场越来越不景气,币价一落千丈,根本没人关心BCH能不能发币。就这样跌跌撞撞地走到了十月,真的是非常沮丧。

投资人也给了我一些建议,我觉得醍醐灌顶,其实现在我的投入程度还远远没上去,团队的投入程度更不用说,算不上真正能干的创业团队,我也意识到了自己的问题和公司的资金危机,于是裁员了一些不必要的岗位,每天热衷跟进度。战略方面,我们也要收缩和卡位,后来我想通了,我们的业务不够专注,又想着做多币种同时支持BCH/BTC/ETH/EOS,又想做DApp Store,结果没有一个能做好,必须要在一个点上进行突破,于是我们重新定位了自己的目标,那就是围绕着BCH,做专注BCH的钱包。那时候非常看好BCH,因为它明确了扩容的方向,社区也一派欣欣向荣的景象,有做区块链微博(memo)的,也有做区块链聊天软件(keyport)的,还有很多智能合约方案(SLP/WHC/BitcoinToken)等等,一些基础设施也逐渐完善,包括钱包、浏览器、插件等等,这是令人振奋的。专注业务的同时,我们还争取满足更多用户的需求,做了一些快讯、修复了很多bug、自建UTXO数据库,让钱包的使用体验变得更好了,在这段时间里,我能感受到用户的渴望,和团队的进步。因为我们更加专注了,产品做得更好了,用户更多的需求被满足了,自然而然地会受到欢迎。这个阶段,我也真正想通了一件事情,就是为什么之前用户不来?用户不来其实就是因为不好用,或者没有很大使用场景,所以才不来,如果你满足了他的需求,他自然而然会找到你,你要做的就是好好建设产品本身,以及把招牌打出去。

钱包的竞争,其实非常同质化,无非就是资产管理和区块链应用。资产管理其实有蛮多需求需要满足,包括初始要买数字货币、数字货币的兑换、数字货币要有用途,得让用户拿去理财,或者能发发红包,玩玩游戏也是好的,这些统统都是需要满足的需求。更长远的需求,是涉及互联网的身份、物联网的,这块需要积淀内功,将自己的数据能力做好,同时提升对区块链本身的认知,这是为了保证在下一波浪潮中不出局。钱包就是这样,要做到人无我有,人有我优,才能在竞争中存活下来。如果你能更加超前,做一个之前从没人做过,你是引路人的很酷的事情,那更加好。我一直对自己的独立思考精神是满意的,这么多次决策,我没有跟风,我都是按照自己的思路走。但是经过那么多次的决策,我发现,我一个人的思考,其实是远远不够的,需要参考非常多人的意见,调查更多的资料,才能得到最佳的方向和实施计划。一路走来,我的很多决策是失败的,我也因此付出了很多惨痛的代价。

11月,BCH硬分叉升级,社区分叉成两派,一派是坚持中本聪的初始设计和愿景,一派要快速迭代和演进,由于我们是专注BCH的钱包,而BCHABC和BCHSV之间又没有做防重放,于是用户量一下子骤减,不仅工作要重复一遍,还吃力不讨好。而更要命的是社区的分裂,大家对于BCH的发展已经失望,本来好好的局面,一下子打破了,大家的希望连同币价,倾斜而下,就连同BTC等都跟着一起跌,至今BCH和BSV加起来的币价,才到分之前的一半。币价大跌,除了我自己的资产受损,公司也发现融资环境越来越难,基本上不可能再融到钱,并且十月底发生了一些意外情况,使得情况更糟,使得我们的心理压力更大。然而,生活还要继续,我们快速地支持了BSV,并提供了分离工具,由于很早做准备,但是有个地方出了岔子,结果晚了别的团队上线,但总体还是有效果的。思想上,我们自己也需要判别,BCH到底会怎么发展,BCH和BSV之间到底谁胜谁负,谁将传承公链将灭的火种。就这样跌跌撞撞又过了一个月,2018年就说要结束了,我们还在填过去的坑,我们还在踮起脚尖,想要看到2019年是否有希望,我虽然看到了那个远方,但是公司不一定能撑过这段艰苦时期,因为我们种子轮的资金,已经难以为继了,再拿不到天使轮融资,公司就要挂了。我甚至做好了准备,自己拿出一笔钱支持公司再走个半年一年,然而,这一切终究要有根本解决办法,才能支撑我们走到梦想实现的那一天。

2018年,是转折之年,在年中鼓起勇气,摸爬滚打,算是有了一个开始,但却不甚完美,在失望和希望中反反复复,坚持到如今,看到一丝丝希望,不知道明年将会发生什么。这一年,感觉很长,因为经历得更多,所以感觉时间变长了。这期间发生了很多故事,希望2019年,我们被温柔以待,而我也能够成长为一个合格的leader,我们的团队能够成长为能打胜仗的团队。除此之外,我有了一个小家庭,我希望外公外婆能够看到我娶妻生子的一幕,祝福家人都平安喜乐。诸葛亮二十六岁初出茅庐,我在二十六岁成家开始立业,我常常念着他那句“大梦谁先觉,平生我自知”,希望自己在不断的反省中能够收获人生的快乐。

2019年1月1日,我念下这句咒语,看看这一年会发生什么:如果你全身心地想要做成一件事,全世界都会帮你!

产品设计从复杂到简单

发表于 2018-12-02   |   阅读次数

产品的简单与复杂

前几天,我们一个用户反馈,有个展示BCH收款地址的页面非常复杂,根本很难搞懂应该怎么用。这个页面含有了3个功能:

1
2
3
1. 呈现可以设置金额的BIP21二维码
2. BCH地址的新老格式切换
3. BIP21协议格式和纯地址的切换。

在设计之初,我们的本意是用户可以使用高级功能,如果不想使用默认不变就可以了。然而在实现的过程中,虽然我的思路很清晰,但是工程师也一直搞混,解释了很多遍。从这里,其实就可以看到这个功能偏复杂了。实际上,用户根本不会用BIP21来收款,而且很多钱包并不支持,故而用的最多的都是纯地址格式,而且是老的纯地址格式,他们更加不会知道BIP21是什么,也不想知道。

这也给了我一个小警示,在设计一个功能之初,千万不能想当然,应该通过多试验、多调查,设计出一个最能解决用户痛点的简单方案。这里有两个着重点,一是要解决用户的痛点,例如设置金额就不是什么痛点,因为可有可无,而扫不出正确的地址,这是痛点,而且可能会影响使用,故而这个的重要性要摆在设置金额前面;二是这个方案要足够的简单,以为如果不简单,用户不知道如何使用,开发起来也费劲,最终得到的效果还不好。如果有什么方法,使用后,能够使得很多问题变得不存在,那么这个方法就是:砍掉不必要的功能。

以前对这点体验不是那么深刻,故而没有留意更多。这样的产品故事里,遥控器那个故事应该是最耳熟能详的。以前的遥控器,非常复杂,几十个按键,每个按键还不好按,但是到了智能电视时代的遥控器,都仅有几个按钮,而且还十分方便。这样的产品体验升级虽然有一部分是技术进步的原因,但是主要还是因为这种”简单即美”的设计理念。当时设计苹果鼠标的时候,乔布斯坚持它只有一个按键,设计iPhone的时候,坚持它只有一个home键,就像爱因斯坦所说的那样,足够简单,但不过分简单。现在的苹果产品,有点过于为了简单而简单,实际上搞得更复杂,这是题外话了。

另外一个我印象深刻的例子,就是电动牙刷。前段时间我给自己买了一个小米的素士牙刷,先不谈刷牙功效如何,它竟然有四个档位,要停下来有两种方式:一种是长按,另外一种是短按逐次变档,直至停止。有时候觉得这种交互非常讨厌,产品设计师肯定没怎么用过自己设计的牙刷。因为人把电动的东西塞嘴里,本来就有一种恐惧,停止操作要越快越好,而这种逐次换档和长按短按的体验,并不好,因为这会让用户思考。而我之前用的一款Oral-B的电动牙刷,只有一个按键,那就是开关,根本不用去想,用着也舒服。

从这些失误上,我体会到一个产品设计的要旨,那就是:don’t make me think。

分叉之殇

发表于 2018-11-24   |   阅读次数

最近的BCH分叉,可谓是让加密数字货币用户受尽了伤害,不仅手里的币因为分叉而大跌,而且整个分叉期间,由于重放问题没有彻底解决,所以大部分用户还不能使用BCH。随着这一次的分裂,人们重新审视区块链,加密数字货币的方向在哪里?区块链的价值到底在哪里?

区块链的治理模式

首先,区块链的世界里,分叉是必然会发送的,而且将来也一直在发生。

区块链里凝聚了大家的共识,所谓共识,就是人们共同的约定,来源于人们的想法,而想法这个东西,必然会存在着分歧,毕竟谁也抑制不了别人心中的想法。区块链里也一样,这一套共识,如果不认同,那么就分叉,也只能分叉。今天,社区可能仍然非常团结,但将来的某一天,假如社区里面产生了不同的声音,而且越吵越烈,最终酿成不可避免的对峙,你将会选择你最认同的那个方向,这将造成分裂。

BCH当时从BTC里面分裂出来,就是因为扩容之争,多年的扩容声音没有得到Core开发组的认同,并且提出了一个走Segwit的路线,双方谈崩,从而导致分裂。2017年8月1日,BCH主动放弃了BTC的名称,引入了FORKID来做重放保护,从而新建立起了一个BCH社区。这个社区里面有着最热衷的数字货币和区块链的粉丝,可谓是真正的“区块链的火种”,一切仿佛回到比特币诞生之后不久的样子。

区块链通过阶段性地硬分叉来进行升级,通过分裂的区块链竞争来解决分歧,其实从根本上来讲,区块链自己解决不了这个分歧。故而区块链的治理,只能通过多方博弈,达成一致,要么就是用真金白银,教对方做人。我们一直都期待着,区块链自己能够解决这些根本分歧,一个方案是,将协议固话,不改了,那么就不会有分裂;另外一种方案是,允许改,但是要加快节奏,这样得到支持多的活下来,循环往复,协议会往最合适的方向进化。

两种不同的信念

然而,即使看起来团结一致的社区,也不是铁板一块,其中一部分人有着执着的白皮书理念,他们坚信BCH就是要做一个P2P的Cash,这也是比特币现金的使命所在,当时的分裂就是因为BTC引入Segwit,想通过闪电网络去走现金这条路,结果又不符合P2P这一属性,从而背离了这一理念。

比特币的发展过程中,一直都有两种思想,一种思想是人们从中看到了它作为全球数字货币的威力,将给人们带来金钱上的自由,不再承受大国干预、政治黑幕等带来的经济后果,人们使用的是纯粹的货币,现代社会的电子黄金。这是对比特币的经典看法,人们需要这样一个纯粹的货币。

而另外一帮人,他们发现比特币里还蕴含着更广阔的应用,那就是作为价值流通的网络基础。它能够引入更多的参与方,让金钱可以编程,让有用的信息和价值得以流通。可以接入物联网设备,可以作为一个消息队列,向全球的人们广播他们的可信事件。这是互联网之后的一大革命,将有可能连同人工智能、物联网极大改变人类生活,光是想想也的确挺让人激动的。

我相信绝大多BCH社区的人,都会同时有这两种信念,既希望比特币成为世界人民的Money,也希望在其上建立强大的网络和应用。它们不是矛盾的,这两种思想都源于比特币本身,比特币它有货币的性质,同时它内部使用的锁定脚本、解锁脚本,其实就是一段程序,是初始版本的智能合约。ETH的诞生,就是Vitalik想要在区块链上做更多事情,比如执行一段更强大的程序。然而BTC上,不能这么做,或者这么做非常费劲,还得不到Core的支持,所以Vitalik就带领着和他有同样理想的人去新开辟了一个领地,创造了一个图灵完备的智能合约体系,虽然还只能做一些游戏,没有什么很大的实际应用,但是它的诞生也引爆了一些新东西,比如ICO、加密猫等,带来了许多的用户。

事实上,本次分叉,其实没有什么理念上的分歧,吴忌寒是这么想的,想要让世界更多人使用它,就得在上面搭建更多应用。CSW也是同时具有这两种思想,因为我们看到他试图论证比特币的图灵完备,并申请了很多专利,想要在比特币的网络上搭建智能合约系统。这两种信念,将伴随着区块链和区块链从业者,一直走下去,直到系统自己知道如何解决分歧。

此次的分歧

我作为一个持币人,以及这个生态内的开发者,你要我选,其实我心里也是迷茫的。到底应该信谁呢?一边是意志坚定,理念纯粹的Cash派,一边是努力推进BCH迭代进程的演进派,很难选。

Cash派认为 BCH的基础框架已经搭好了,后来的人不要随意地加些乱七八糟的东西进来,自以为比中本聪还聪明。事实上,比特币发展的早期,中本聪的确说过从0.1版本起,比特币的框架已经定了,需要将它set in stone,剩下的就是在上面实现各种交易类型,逐步提升处理能力,大家可以自行去探索那些潜在应用了。

然而演进派,也有非常可靠的论据,比特币发展了十年之久,除了在Cash上,没有别的很大进展,还只能支持少数几种标准交易,早先人们在OP_RETURN上嵌入数据,尝试着给币染色等等,最终都不了了之,因为做起来太麻烦了,而ETH只需要几行代码。如果说,比特币要证明自己具备这样的能力,那十年的时间都过去了,为什么还没这样的一个东西出来呢?既然你是中本聪,这十年里干嘛去了?(中本聪的确许多年没露面了,最后一次露面说的还是自己在搞别的事情)

分歧到达一个不能调和的阶段,就势必会分裂。于是双方以区块大小为导火索,展开了一轮又一轮的辩论。理念派认为,应当扩容到128MB才能有真正的商业应用,而演进派相对保守,认为目前区块交易就那么点,还有别的事情比区块扩容紧急,好嘛!依我来看,区块大小,大家的长远计划,都是要扩容,扩大到多少为止呢?和现在的32MB相比,扩大到128MB,没有什么实际意义,而且这才扩不久,我们的终极目标都是扩大到没有限制,你有多大本事,就打多大的区块,这也符合中本聪当初的设计。

比特币作为一个基础协议,应该尽可能简洁,并且要灵活,应当去除各种各样的限制,比如区块大小限制、OP_Code限制,这样才能满足未来潜在的需求,比如在上面承载智能合约,在上面运行着大量跟钱相关的程序。

平心而论,双方都有一定的道理,两个方向都保持有一条链在探索,也是很好的,左手Cash,右手应用。然而,双方都没有妥协,因为继承BCH的用户和社区,是最好的结果,如果要另起炉灶,那规模就太小了。事实上,对的方案应当是,应用带来了更多用户,而更多用户,使得BCH成为了Cash。

对人的揣测

我们都知道,为首的两方,一方是nchain为代表的Cash派,代表人物是CSW,另外一方是比特大陆为代表的演进派,代表人物是Jihan。首先两个都是公司,两个人又都是商人。既然是公司和商人,那么除了有对BCH的信仰,必定有一定的野心,想要从BCH的发展中获利。而且人本身就非常复杂,说的和做的,有可能是不统一的。

进入分叉后,双方就在社交网络上互相攻击,也有人YY了很多的阴谋论,不过大多都只能呵呵一乐。

Jihan是比特大陆的CEO,据说公司和个人都持有很多的BCH,至于为什么要屯BCH,那应该是看好BCH未来能够增值,能够获得收益,这点上BCH用户和BCH生态建设者们都是一样的。至于人们揣测的,比特大陆想要掌控BCH,现在持有大量的币和算力,他们最担心的应该是过于中心化,导致手里的币不值钱,之前忌寒还表示过要从社区里退休。

通过BCH最好的获益方式,就是建设整个生态,一起将蛋糕做大,从中获益,掌控它,只会让它变得不值钱,因为当人们看到它只由少数人说了算的时候,大部分人的自由就没有办法保证了。BCH只是比特大陆生意的一个,也是最看好的一个,比特大陆没有动机去摧毁它,只是想从中赚到钱。如果说想通过一些PoS、收矿工税、把BCH变成ETH等方案,来进一步掌握BCH,这样将会激起非常多人的反对,不过这些提案最终也都被否决了。如此看来,比特大陆整体还是尊重社区意愿的。

而对于CSW,他自己也跳出来说自己是中本聪,之前挺多人都认为他是中本聪,包括许多大佬。因为据说他对于比特币的理解是最深刻的,并且他为人非常狂放,怼了无数的人,看起来是天才的作风。然而也有非常多人质疑他是中本聪,其中包括Vitalik,他不认为CSW是中本聪,如果是这样的话,他将改变对中本聪的看法。

中本聪是什么样的一个人,我们无从知道,不过我们“观其文,想见其人”,每个人都可以从他的一些言行中推测出不同的为人。目前比较可信的一个观点是,CSW是中本聪团队里的一员,至少是早期见证者,发现了比特币的巨大威力,想要凭借比特币获得商业上的成功,因而对比特币了解比较深。他发表的言论,也一直在强调BCH要做money,他要的就是money,如果别人不答应,他宁愿互相伤害。

这里我们做一个思想实验,假设真正的中本聪,他会怎么做?他会不会突然跳出来,胁迫所有人,必须要按他的方案来走?我想,真正的中本聪先生,他早年就放弃掌控社区,推位让“国”,并且销声匿迹,不愿露面,极小可能会这么做。我相信CSW是看到了无限可能,包括全球的money,还有广阔的应用场景(比如票据Tokenized),才会为之执着。但是如果说想坚持,谈不拢分叉出来,不互相攻击也是可以的,毕竟,区块链里就是要容忍不同意见,凝聚共识。

现在的局面,BCH已然分裂成为了BCHABC和BCHSV两条链,两条链之间没有做防重放,互相之间还进行过算力战,使得用户发送交易非常不便,除非钱包做了防重放,稍微会好一些(我们IFWallet就做了)。但是,只有最终区块链主动做了升级,才会将这朵笼罩的乌云驱散。

用户的利益

现在的局面,BCH分裂已成定局,谁能继承BCH的名字,谁主动出防重放措施,都是争议的焦点。目前继承BCH各项遗产的,比较大的概率是BCHABC,因为大家厌倦了分裂,厌倦了争吵,想要继续BCH的发展。BCH在分裂之前形势向好,许多Token方案出台,许多浏览器、钱包、矿池等基础设施纷纷出现,然而分叉一来,统统都得停下来。

用户也是希望这样的战争尽快结束,否则的话,双方互相砸盘,将手里的币砸到一钱不值,忍受这种巨额的亏损,谁也不能保证自己信仰到底有多坚定。一根阳线,改变信仰,一根阴线,也能改变信仰。所以这场分裂,其实是不符合用户利益的。很不幸,这场分裂没能避免,那么就应当今早结束,恢复用户的使用。

结语

分裂既然已成现实,那么我们就接受这个现实,两边社区都要各自好好发展,产生更多应用,获得更多用户。我们作为区块链从业者,也希望能够尽量少打这种两败俱伤的战争,应该说是多败俱伤的战争,应该集中有限的精力,去探讨和实现更多的可能,让BCH真正成为很多用户使用的Cash,成为未来的价值互联网基础协议。

粉尘交易的定义与处理

发表于 2018-08-29   |   阅读次数

什么是粉尘交易?

什么是粉尘交易,或者说粉尘交易的定义是什么,对于开发者来还是比较重要的。钱包或者交易所等基础设施,如果一不小心构造出一个粉尘交易,是无法广播到网络,被矿工打包的,这样会严重影响到用户体验。另外一方面,粉尘交易也和区块链网络安全息息相关,如果如果网络中充斥着一些微不足道的交易,而矿工们毫无差别地打包交易,那么这些价值小,但是总体体积很大的交易,就会阻碍到其它正常交易的打包确认。粉尘交易也可以看成是区块链网络上DDOS攻击的一种,攻击者通过发送许多这样小金额的交易,来堵塞整个网络。

那么有没有确切的标准来判定一笔交易是不是“粉尘交易”呢?答案是有的。

通过一番搜寻,得到一个普遍的答案:

1
2
3
4
5
6
7
8
9
10
11
12

/**
* "Dust" is defined in terms of CTransaction::minRelayTxFee, which has
* units satoshis-per-kilobyte. If you'd pay more than 1/3 in fees to
* spend something, then we consider it dust. A typical spendable
* non-segwit txout is 34 bytes big, and will need a CTxIn of at least
* 148 bytes to spend: so dust is a spendable txout less than
* 546*minRelayTxFee/1000 (in satoshis). A typical spendable segwit
* txout is 31 bytes big, and will need a CTxIn of at least 67 bytes to
* spend: so dust is a spendable txout less than 294*minRelayTxFee/1000
* (in satoshis).
*/

也就是说,在比特币的网络中,如果交易费用高于1/3的交易价值,则被视为粉尘交易,说完了。

常规的来说,一个P2PKH交易,由于其最小体积时为一个输入,一个输出,总共 148 + 34 = 182 字节,而交易手续费是由每个节点配置的minRelayTxFee(比特币中默认为0.00001BTC/KB)决定的,故而手续费就是 182 / 1000 * minRelayTxFee,那么其的3倍即 546 / 1000 * minRelayTxFee,也即默认为 0.00000546 BTC,在BCH网络上也是一样的。

其它类型的交易以此类推,交易中输出金额有低于 体积 * 3 / 1000 * minRelayTxFee 的,即为粉尘交易。

我在BCH的网络上亲自试验了一番,对于P2PKH交易果真是如此,大于等于0.00000546的交易可以发出,而小于0.00000546的交易,则无法发出。

如何避免粉尘交易

既然知道了粉尘交易的定义,那么我们就可以按照定义,避免构造出粉尘交易了。首先,可以在构造交易的过程中,根据交易的类型,计算出交易的最低金额,同时对每个输出进行判断,如果低于该金额,则不能继续构造该笔交易。特别的,如果这个输出刚好发生在找零上,且金额对于你来说不太大,则可以通过舍弃该部分的粉尘输出,以充作交易手续费来避免构造出粉尘交易。

发展中的问题

如果一个区块能够容纳的交易数量越来越多,币也变得越来越值钱,即使是1聪也值很多钱,则这个规则有可能被改变。不过,现在的定义非常巧妙,足以支持到足够久远的未来,定义的公式中,所用到的 minRelayTxFee 是由节点决定的,而节点可以将这个值设置的更低,以容纳更低手续费的交易,但是这必须要得到网络中其它成员的认可,才能保证该交易被其它矿工打包。具有交易加速器的矿池,其实就是将这个值设置得足够低,才能打包那些不被网络确认的交易,从而提高交易的虚拟手续费,通过插队的方式,完成确认。如果要在网络中达成一致地修改配置,最好是通过一次硬分叉,大家统一修改,算是对共识的升级。

解密比特币改善提案BIP21

发表于 2018-08-29   |   阅读次数

BIP及提案过程

BIP全称Bitcoin Improvement Proposal,意为比特币改善提案,是人们提出的改进比特币及其应用的一个工具,通过收集各种提案,通过讨论,大家能够推进比特币的发展和改良。有意思的是,BIP的第一个提案,就是关于BIP的详细提案规则。

BIP的提案过程如下:

BIP21

我们今天使用比特币钱包能如此方便,要感谢BIP21,接下来我们详细分析一下BIP21。

这个提案要解决的是比特币应用层(这里指钱包)的一个扫码及链接支付的标准提议。该提议介绍了一种URI的语法,这种URI语法可以使得用户可以通过一个链接来发起一笔交易,交易里面指定了一些参数,如金额、备注等,当然这个链接也可以编码成一个二维码,用户通过钱包扫码,就能理解获得一个支付地址。BIP21使得比特币的支付非常简单和普及,该标准使得可以在众多钱包中相互转账,甚至在页面里面实现点击链接转账。

对于请求支付的人来说,应该按照这个标准来构造这样一个URI,或者是二维码,而对于支付方,则需要能够解析对方给出的URI,把里面的关键信息提取出来,完成后续的转账操作。其实这两个步骤,一般都不需要用户介入,钱包商会搞定一切,最终钱包用起来就像是微信支付一样,非常方便。

BIP32协议内容

提案提议的格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 协议:地址?参数串
"bitcoin": bitcoinaddress [ "?" bitcoinparams ]
// 地址为base58编码的字符串
bitcoinaddress = *base58
// 参数串由一个个参数用&连接起来
bitcoinparams = bitcoinparam [ "&" bitcoinparams ]
// 参数类型
bitcoinparam = [ amountparam / labelparam / messageparam / otherparam / reqparam ]
// amount 参数:amount=数字
amountparam = "amount=" *digit [ "." *digit ]
// label 参数:label=字符串
labelparam = "label=" *qchar
// message 参数:message=字符串
messageparam = "message=" *qchar
// 其它自定义参数:参数名=参数值
otherparam = qchar *qchar [ "=" *qchar ]
// req参数:req-参数名=参数值 req表示是不可缺参数
reqparam = "req-" qchar *qchar [ "=" *qchar ]

从上面的定义和注释我们可以看出它和网页URL很相似,也是一个协议,加地址,再带上若干参数。实际上除了双斜杠之外,其它基本是一样的,而且该提案定义了几个参数,如amount/label/message等。

bitcoin协议名可以大写也可以小写,但是各个参数名是大小写敏感的,不能随便更改。

简化版本

上面的协议其实还是略微复杂难懂,简化版本如下:

1
bitcoin:<address>[?amount=<amount>][?label=<label>][?message=<message>]

例子

举个例子,bibo请求一个20.3BTC的捐赠:

1
bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=20.3&label=bibo&message=donation

扫码者,将通过钱包支付给比特币地址175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W一笔20.3 BTC的转账,标记为bibo,备注为donation。

BIP21的若干语言实现:

  • Javascript - https://github.com/bitcoinjs/bip21
  • Java - https://github.com/SandroMachado/BitcoinPaymentURI
  • Swift - https://github.com/SandroMachado/BitcoinPaymentURISwift

成年人应当这样获取信息

发表于 2018-08-29   |   阅读次数

人是一台“电脑”

假如将人比作一台电脑,需要输入信息,存储数据,运算思考,输出表达。而其中输入信息,作为第一步,也是非常重要的。那么作为一个成年人,应当怎么样去收集信息,才能够尽可能快,尽可能全面呢?

从小到大,其实从来没有人教过我们如何收集信息,而这看起来好像是一个无意识的过程。不就是刷刷微博、看看新闻、读读书、看看文章嘛,大家都会嘛。然而,这种无意识,往往不是最有效的方式,甚至会让你觉得非常苦恼。

我一直在思考这个问题,如何搭建自己的信息收集渠道?因为过去收集信息,没有一个完整的体系,都是无头的苍蝇,乱撞。在浏览信息的时候,还容易因为一些别的话题将注意力分散开,像猴子掰玉米一样,大量的时间花在不断地分心上面,真正关心的信息却没有找到。

结构化思维方法

首先,在找到答案前,先让我们确立一些原则。作为一个成年人,应当具备结构化的思维,这个是我的一个指导原则之一。其实我们遇到的大多数问题,是因为没有结构化思维工具,所以才会不知如何下手,不知道怎么收集信息,不知道怎么思考,不知道怎么做决定,等等。这些问题,统统都是因为没有一个稳定的思维结构,注定会导致过程的混乱和随意,最终得不到一个满意的答案。

结构化思维方法具有很多优势,它将问题拆分成更多维度,之前想到的是一个个零散的点,而结构化思维,让你从一个面、一个体、或者更高维度的视角去分析问题。这种多维度,让你看到事物的很多面,对事情有更加清晰的认识,将会帮助你解决手头的问题。

这个纷繁复杂的世界,就是由很多很多类的事物组成,而每一样事物,都有其规律可循,通过多个维度的观察、总结,那么你就更能掌握了这个规律,从而使得做起事情很轻松。

信息收集的方法论

信息收集也一样,有它特有的方法论,总结了这种方法论,可以为绝大多数人、绝大多数场景使用。

信息结构模型

信息包含了几种类型:

  • 结构化的核心知识
  • 零散的知识点
  • 即时信息

我们的信息组成应当是一个同心圆,核心是一些最重要的结构化知识,这些知识需要艰苦地学习才能获得,成为我们思考和行动的最主要依据。比如从小接受的科学教育,让我们理解这个世界是由粒子组成,再比如,你的工作技能,需要辛苦习得,而且每天都在应用,这是我们每个人吃饭的家伙。

我们的信息结构不断完善的过程,就是新知识不断加入,融汇贯通到已有的结构里面,成为你信息结构的一部分。这个过程也是你的信息圈不断扩大的过程,它看起来就像是下面这样。
image

信息的重要性及时间分配

根据二八法则,核心知识在我们的信息里面,是最重要的百分之八十,它们起的作用最大,而剩下的零散知识点和即时信息,则没有那么重要了。零散知识点可以作为我们扩展信息广度的方法,快速了解一些未掌握的信息。而即时信息,比如新闻、微博等,大多时候作为我们的一个社交谈资,作为一个普通人,你谈不谈论世界杯,也并不会对你生活有什么很大的影响。

重要的信息,需要我们花时间花精力去掌握,一门课程、一本书籍、一种技能,都需要扎扎实实地花时间去搭建整个结构。比如练吉他,首先需要知道一些简单的乐理,然后学会和弦、看谱,然后勤奋练习,最终才有可能弹奏出一首曲子来;而即时消息,则可以用一些碎片时间来刷,上班路上,刷一刷微信公众号和朋友圈,看看有啥新鲜事在发生。

所以时间分配上是:80%时间放在核心知识,剩余20%放在零散知识点和即时信息。

搭建你的信息渠道

每个人都有自己常用的信息渠道,常见的有几种:

  • 书籍
  • 网络信息
  • 社交圈

举个例子:小郑,是区块链工程师,他本科通过计算机科学专业的学习,掌握了编程的技能,他通过阅读技术书籍来学习新的技术,提高自己的水平,有时候他也逛逛知名博客以及开发者社区,了解一些技术动向。此外,他每天通过Reddit或者微博,看到一些新鲜事,他通过数字货币交流群里获得一些币圈消息,也会看朋友圈里面,大家发了什么新动态。

那么怎么设计自己的信息获取渠道呢?推荐的方法如下:

  • 通过书籍、论文等来获得结构化的核心知识,比如一门学科、一种技术
  • 通过杂志、网络的Wiki来辅助自己丰富要搭建的新知识结构,并且不断内化提升认知
  • 通过朋友、社交网络来获取一手的新闻,但是前提是要加以甄别,做一个批判性信息收集者

时间上:

  • 挤出大块的时间来啃结构化的核心知识(比如上学、上班期间,周末的一大块时间,集中精力攻克)
  • 抽出一小块时间,浏览零散的信息(如微信公众号、社区文章、杂志等,也可以收藏以后再看,或者通过语音听取知识付费的文章)
  • 利用碎片时间,瞥一下最新的快讯、新闻、消息推送(如ReadHub.me,消息来了看一眼,有个基本的判断就得了,不重要的略过,重要的要进入下一步)

行动上:

  • 知道什么信息从什么地方获取,节省你的精力和时间(比如,你想知道怎么开发Android App,你有一个朋友就是做这个的,问问他就是了)
  • 更加靠近准确信息的源头,有助于提升信息即时性和有效性
  • 提高敏感度和执行力,核心知识上做好准备,得到最新消息后立即行动

最重要的还是我们自己

无论收集的信息多么准确,多么及时,圈子多么大,最重要的还是我们自己,对关键信息是否敏感,对于信息的提取和利用是否有效。

如果对关键信息不敏感,那么也还是抓不住机会,比如,很早就知道比特币的人,可能通过朋友之口或者某个文章得知,但最终知道了就知道了,并没有深挖,也没有进一步行动,最终大腿拍烂,而有的人,抓住了一个信息,深挖下去,获得了回报。

对信息的提取和利用,如果获得了信息,首先要评判信息的真伪可靠性,做一些基本的调查和过滤,才能为你所用,而不能听风就是雨,这样你将会成为信息的奴隶,而不是信息的主人。

那么我们就要有意地锻炼自己的信息敏感度和提取信息、利用信息的能力,得到最新的消息,要试着想想这个消息蕴含着什么隐藏信息,是否代表着什么趋势和潮流,值不值得深挖下去。如果值得,那么深挖下去就好了,最终将信息为你所用。

最后

信息,总是无处不在的,在于你用发现的眼光去看待它,并且找到一种合适的方法, 沉淀下来,最终成为你的一部分。

一款BCH DApp的诞生

发表于 2018-08-29   |   阅读次数

DApp的兴起

现在的区块链,处在一个爆发的前夕,之前的ICO狂躁,带来了一定的迷茫,但是大家都在说2018年是区块链应用元年,今年一定会有区块链的杀手级应用落地,然而得有人不断地在里面投入和试错,才能诞生这么一个杀手级应用。为此我们也进行了初期的尝试,基于BCH的公链,做了一款身份验证、密码管理的应用。做区块链DApp的过程中,时常会怀疑自己做的是不是伪需求,因为区块链的个性鲜明,使得开发起来挺别扭的。虽然获得了数据的安全性,但是开发效率却不高,需要自己定义一套协议,存取的方式也需要做一次加解密。

报名BCH Geek大赛

近期,刚好来自重庆的盖茨实验室举办了一场BCH和EOS社区的极客大赛,大赛吸引了一批开发者和在校大学生的踊跃参与,从中也诞生了许多的优秀的应用,给我们带来许多启发,虽然暂时还只是一个雏形,不能有清晰明确的商业模式,但也是非常伟大的尝试。当然,我们也报名参加了这次的大赛,虽然仅了解了一点皮毛,但是我们还是鼓起勇气报名了。

我们给战队取名叫【神雕侠侣】,因为神雕侠和satoshi还挺谐音的,算是致敬中本聪吧。我们团队由两人组成,一个是我,另外一个是我女朋友,两个人一个负责开发,一个负责产品和运营。

image
邓国东,曾任职于腾讯、ViaBTC,从事Web系统、数字货币矿池及钱包开发,是一个面向全栈的技术开发人员。有志于通过技术,让更多人从区块链中受益。

image
杨春萍,任职于漫游超人,擅长品牌及产品社交媒体运营运营,精通两微一端及数字媒体传播,曾主要负责漫游超人品牌植入《唐人街探案2》项目营销。

刚上台介绍战队的时候,我一个人上去,他们以为我是那只雕。。。
既然报名了,那就硬着头皮也要上,于是也赶工了几天,终于将这个demo给做出来了。

为啥要做一个密码管理DApp

我们生活中需要使用到非常多的账号密码,然而这里有非常多的安全隐患,有许多人使用的账号密码甚至泄露已久,相当于在互联网里面裸奔,并没有什么隐私可言,甚至切身利益有可能被人随时掠夺。就密码来说,我们有许多的痛点:

  • 密码多(多到记不住)
  • 密码弱(密码很容易破解)
  • 密码重复(一个被破解,连带其它遭殃)
  • 不好输入(手动输入很繁琐)

我一开始就有一个愿望解决这些真实存在的痛点,能否开发一个使用区块链作为分布式存储方案的密码管理器呢?
答案是可行的,参考LastPass和1Password等竞品后,我们设计出了IFPassword,基本思路如下:

  • IFPassword配套有网站、小程序、浏览器插件
  • 用户通过浏览器插件可方便地添加账号密码、填写账号密码
  • 重要的密码数据将存储在去中心化存储上
  • 不重要的信息存储在IFPassword服务器上

于是我们初步实现了添加账号密码、填写账号密码的基础功能,当然,一开始只是为了验证这个流程,没有做到非常好的用户体验。

区块链知识

BCH上有一个OP_RETURN的操作码,在写入一笔交易的时候,允许在OP_RETURN上附带一个数据,大小为220Byte,足够塞下一条微博、一段哈希了。像之前诞生的memo——区块链上的微博,keyport——区块链上的微信等等都是基于OP_RETURN来存储的数据,我们实现的这个密码管理器,也是讲数据通过比特币采用的椭圆曲线算法加密后放置到OP_RETURN上的,它的安全级别和比特币是一样的。

那么如何写入这个OP_RETURN呢?其实也很简单,如果你连接的是一个比特币的节点,那么你只需要构造交易的时候,将这段数据写入输出的data字段,然后签名之后广播即可:

1
bitcoin-cli createrawtransaction '[{"txid":"3b0da5fd1beb71e1f47da2f3e9bd1af2e7026fd0282d18d9777a13e49089d146", "vout":0}]' '{"bitcoincash:qpktcr9pj6dh8vgepuvumymhwrg7536d7u4qsvdvhc": 0.00001500, "data": "6f11616d6f4141414b3034514477712b77574b384b462f567a793362375a4a6c6d4549475a79783070464d73347842447432424d4c4c65414a547449376b63622b43377a6e69455132554e4968353734626c4d5456534d786a43654d764f617162636641465966677868594a39557642526b687a365a63776361377437506a315a367171704e2f46363955774d2f68514a776c432b71694254314f596470686352656c4e664945314e55484a30745450742f644e4746565731712b673d3d"}'

如上面代码所示,将加密后的数据编码成了16进制写入了交易中,广播出去之后,就可以在区块链浏览器中看到这样的数据了,这个数据就是日后恢复数据的关键,不过千万不能把私钥给泄露了出去,泄露出去拿到私钥的人就可以解密这段消息了。
image

最终效果

编程实现了上述的写入区块链的逻辑以及相关的交互之后,大致的最终效果如下:

image
用插件管理TOTP二次验证,实现快速查看填写。

image
在插件中添加站点的账号密码。

image
在插件中查看各个网站的账号密码,可以复制粘贴到登录表单中。

启发

现在的互联网进入移动互联网以后,变成了一个个信息孤岛,大家在岛上玩得不亦乐乎,但是如果一个岛要到另外一个岛,那成本就高了。然而发明互联网的初衷,就是让人与人、人与物能够互相联通,然而现在却是越来越封闭了,并且原本属于用户的数据以及权利,被各个大公司垄断,并且他们还不能提供连续的服务,说不定哪天说停就停。我们需要一个能够持久存储你的数字资产的东西,一个人人能够使用,信息能够充分流淌的工具,就像早期的互联网一样,在上面探索可以不断发现新的东西,在区块链上,也是这样,顺藤摸瓜,能够发现许多的新东西。

我们做的这个玩意,它对我们还是有一点启发的:

  1. 数据是用户的资产,用户可以选择公开、加密它,也可以选择转让、授权给他人
  2. 数据是不需要依赖一个中心的,大家存储,大家使用,突破空间、突破时间的限制

未来,信息存储的方式以及内容分发的方式将产生极大的改变,试想这样一个问题,你是如何存储你的所有照片的?存在自己硬盘,需要常常备份,还是存在照片管理软件或在线空间,非常不方便管理和移动。然而,其实你的照片可以存储得无处不在,随时要随时取,并且永久保存,不会消失,你拥有对它的所有权利,你可以加密,你可以卖给别人,可以授权他人使用,等等。用户将重新获得数据的自由。

K线和深度图的实现

发表于 2018-08-29   |   阅读次数

K线和深度图在股票及数字货币交易中到处可见,然而这个K线和深度图的实现,如果没有真实写过一次,对里面的一些坑还是有可能避免不了。最近由于我们的产品中开发了一个云算力合约的交易K线,所以我也实现了一个简单的K线图和深度图。

K线长下面这样:
image

要实现一个K线,首先要知道K线是什么,K线由于长得就像一根根蜡烛,所以又被称为蜡烛图,是用来反映价格走势的一种图表。K线可以按照不同的周期进行划分,例如15分钟、1小时、1天等等,它的每一根“蜡烛”反映的是那个周期内的开盘价、收盘价、最高价和最低价,而底部还会有一个成交量。

image

K线的开盘价,就是“蜡烛”矩形的底边或者顶边,收盘价就是另外一边,绘制时,先绘制开盘价,如果收盘价高于开盘价,那么就绘制在开盘价上方,整个矩形的颜色是绿色(假设绿涨红跌),反之,则这个周期内是跌的,则会绘制成红色。

每根蜡烛,还会有一根细线贯穿,这根就叫“引线”,引线顶端代表该周期的最高价,底端代表着最低价,这根引线反应了这个周期内的价格震动幅度。

一根根蜡烛排列起来,就能看到价格的走势,一眼就可以看出是涨是跌,同时也能看住单个周期内的涨跌情况。一般除了蜡烛之外,还有一些其它指标,如MACD,KDJ等。这里讨论比较常见的MACD,也即平滑异同移动均线,它是采用每个周期的收盘价,做一个平均值,有MA7、MA30等不同周期长度的平均值,一般绘制K线的组件已经提供了该功能,只要填入数据,它将自动计算该周期及前六个周期的收盘价平均值,如果不满七个周期,那么则不计算。

K线图的实现

K线图要实现快速的加载,必须要添加缓存,否则每次都是用成交单据实时计算,则非常耗时。对于我们上面提到的单根蜡烛的数据,我们要将它按不同的周期存起来。以15分钟的为例,每根K线,是一个数据项。

1
2
3
4
[
  [time1, open1, high1, low1, close1],
  [time2, open2, high2, low2, close2]
]

拉取K线数据时优先从缓存中取,如果缓存中取不到,那么则从DB中根据过往的成交记录生成,然后存储到缓存中,以备下次使用,一般来说,首次加载是比较耗时的,因为这个时候所有K线数据都还没有。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
points = []
r = redis_store.hmget(market_type + '_hash_trade_kline_' + period_type, keys)
for index, value in enumerate(r):
   t = int(keys[index])
   is_cache = ((index + 1) != len(r))
   if not value:
       v = get_kline_point(market_type, period_type, t, t + interval)
       if v[5] == 0:
           if not last_v:
               continue
           last_close = last_v[4]
           v[1] = last_close # open
           v[2] = last_close # high
           v[3] = last_close # low
           v[4] = last_close # close
       if is_cache: // 防至缓存
           redis_store.hset(market_type + '_hash_trade_kline_' + period_type, t, json.dumps(v))
   else:
       v = json.loads(value) // 直接读取缓存
   points.append(v)
   last_v = v
return points

值得一提的是,如果当前周期没有成交,那怎么办?如果没有成交,那么开盘价、收盘价、最高价、最低价要以昨日的收盘价为准,这样才能保证K线是平滑变化的,而不会因为这个周期没有成交量,而导致K线断开,或者突然跌到0。

K线的绘制

K线是在前端进行绘制的,通过highlight或者Trading View等一些专业的K线绘制工具,就能将K线数据绘制出来了,一般只要配置组件的参数,将请求得到的数据放入即可,另外,MA7、MA30等一些指标,组件也可以自动根据历史数据计算出来。

MA7,即过往七个周期的收盘价格的移动平均值,依此类推,MA30,就是30个周期的收盘价格的移动平均值。所谓移动,就是说随着周期往前移动,进入一个最新数据,就会剔除一个最老数据,类似一个队列一样。MA值能够反映价格的变化趋势,是人们判断价格走势的常用工具。虽然无需我们自己计算,但我们不妨看看它们的计算公式:

image

深度图

对于用户的挂单,我们往往要展示一个深度图。深度图展示的是买卖单的价格及数量情况,通过对比买盘和买盘,我们就知道是买盘强劲还是买盘强劲,以及交易的活跃程度。

image

如上图的深度图,展示了各个价格的买卖量,然后根据买卖数量,来绘制红色区块和绿色区块的长度。这个长度是由两个因素决定的,一个是该档价格的累计委托量,这个累计委托量的意思就是,这个量是所有上的数量一直加下来累加的,而不仅仅是这档价格的量,它将作为分子,另外一个是所有委买或者委卖的量里面的最大值。比如,价格为0.0043这档,买入合计529.44,而总体的买入合计为1739,总体卖出为7867。则这一个块的绿色部分长度就是 529.44 / 7867 * 方块最大长度。我们可以看到上图右侧的卖出合计比较大,所以它的红色色块会长一点。

结语

很多经验,自己不试一次,还真就不知道K线是这样绘制出来的,而这也仅仅只是金融图表的最简单的一种,金融领域还有很多指标可以用来反映价格和市场的变化,如果能够掌握它们,用来帮助自己或者用户来把握趋势,都是意义的事情。

数字货币的盈利模式

发表于 2018-05-12   |   阅读次数

是否存在盈利模式?

数字货币是否有自己的盈利模式?答案是,有的。
从比特币诞生开始,数字货币发展至今已经将近十年的时间。这十年内,数字货币价格大起大落,许多人投身到这个领域,有的赚得盆满钵满,有的则亏得倾家荡产。我们都知道,炒币总是有风险的,然而这其中,有一些聪明人,从中把握住了稳定可靠的盈利模式,从而分得了一杯羹,并且在行业内具有稳固的积淀。

常见盈利模式

互联网发展至今,因为一开始奠定了免费的基础,但后来人们基于免费的互联网服务又发现了以下几种盈利模式:

  1. 广告
  2. 增值服务
  3. 电商
  4. 金融

数字货币领域方兴未艾,但是却已经形成它独特的盈利模式,主要分为这么几大类:

  1. 矿机矿池
  2. 交易所
  3. 钱包
  4. DAPP

今天对发token,硬分叉等盈利模式不予谈论,因为这其实是一种对某种想法的ICO,其目的不应该是赚钱,虽然很多人很多项目通过这种方法收割韭菜,大赚一笔。

矿机矿池

由于比特币等数字货币天然需要通过挖矿来获得,大家自然而然就会去研发各种高性能的矿机,币圈的矿机厂商 比特大陆、阿瓦隆 等就是通过研发矿机,然后销售出去赚钱。由于数字货币价格不断上涨,一台机器成本其实并不会比PC更高,然而由于供求关系导致,价格却远比一台PC要高,这中间的利润也可想而知。只要能生产出来,销售出去,矿机生产是一个非常好的盈利模式。

代表商家:比特大陆,嘉楠耘智

单打独斗的挖矿现在已然行不通了,不需要聚集大家的算力一起,才能够挖出区块,获得稳定的收益。为了满足这种刚需,矿池就这么诞生了。矿池集合了成千上万矿工的算力,来解答由共识机制给出的难题,并且按照PPS、PPLNS等方式给矿工分配收益,并且从中收取挖矿手续费赚钱。长期来看,矿池是一个稳赚不赔的生意,但是它需要承担由于出块随机性导致的收益不稳定风险(也即需要垫付收益),但是总体来看,挖矿的运气值总是接近于100%的,这是数学层面决定的。

在矿机矿池上衍生出来的,还有云挖矿的一个盈利模式,通过将一个个矿机打包成一个个虚拟的稳定的单位算力来出售,有点类似阿里云一样,只不过配置简单很多,只要购买了,就享有这份算力的收益权,用户将每天获得收益。这种盈利模式,通过方便用户参与挖矿,同时赚取差价、手续费、管理费来赚钱。

代表商家:Antpool, f2pool, ViaBTC

交易所

币圈最不缺的,就是交易所了,现在可谓是到处都是交易所,币币交易所、现货期货交易所等等,我们耳熟能详的OKEX,火币,币安,ZB等这些都是交易所,它们通过收取交易手续费赚取利润,由于交易的需求量很大,而且该盈利模式非常稳固,故而这些厂商也是赚的盆满钵满。当然,交易所是有比较大的安全风险的,一旦被黑,可能损失惨重,从此破产一蹶不振。

交易所还衍生出来很多的玩法,有期货交易、点对点交易、投票上币、发token抵扣手续费等等。以期货杠杆为例,由于数字货币价格波动较大,故而很多投机客想要赌一把,故而投资杠杆,将收益放大个几十倍,有可能一夜暴富,当然,也有可能一夜暴负。之前看新闻,一个哥们投资了杠杆,将给小孩治病的钱拿去玩杠杆,最后爆仓亏了一千多万,跑到OKEX去撒农药去了。其实期货本来是个好东西,可以用来平衡现货的风险,然而用于投机,则可能万劫不复,所以还是要谨慎使用。

代表厂商:OKEX,火币,币安,ZB,CoinEx

钱包

钱包领域,在中国的发展不如上面两个繁荣,其盈利模式也没有那么直接强大。钱包作为基础设施的一环,其实是直接面向用户的,负责储存数字货币,同时作为用户使用货币的一个入口。如果是服务商,可能会搭建一个自己的全节点来做钱包管理,普通用户,可以选择一些客户端钱包来使用。

钱包分为两种模式,一种是Offchain模式,另外一种是Onchain模式,所谓Offchain,就是维护了一个余额,发出的交易不直接上链的,而是通过商家统一发送。例如币信钱包,就是一个Offchain钱包,用户不持有私钥,而比特派、imtoken等,则是Onchain钱包,用户直接持有私钥。数字货币的初衷,就是每个人都要有一个自己的银行,Offchain钱包虽然简单易用,但它是中心化的,集聚了比较大的风险,其实各大交易所及矿池的钱包,就是一个Offchain钱包。

Offchain钱包通过收取提现手续费,或者将多个输出一起打出来盈利,但是一般的Onchain钱包,都已经有开源的钱包,一般不会收取手续费,只会收取一个网络矿工费,是用于奖励矿工的,钱包商不获得这部分利润。那么钱包商可以接入其它一些服务,比如币币兑换、打包理财产品等来实现盈利。

代表厂商:币信、比特派、imtoken

DAPP

目前,数字货币的DAPP还没有成熟到能够实现体验很好的应用,然而这块将是未来的发展方向。比如之前的以太猫,在ETH之上实现了一个猫游戏的智能合约,用户可以买卖,繁衍小猫,如果玩的人多,创造游戏的人,能够通过这个智能合约赚钱,比如买卖一次收取一定的手续费。如果说DAPP是基于区块链的互联网应用,那么开发这些DAPP的人,是可以直接通过使用DAPP的用户赚取利润的,基于这之上有非常多的玩法,之前互联网的盈利模式,也适用于DAPP。

未来例如EOS、NEO等公链能够支撑更多功能和应用时,将会涌现一大批开发DAPP的团队,作出一些很有意思的应用,并且通过这些应用,实现价值的流通传递。

代表案例:以太猫

小结

数字货币中赚钱的方式有许多种,然而大类的稳固的需求就那么一些:挖矿、炒币、存币、做应用。所以只要是一些刚需,必然会诞生出一个稳固的产业和盈利模式。目前对于数字货币而言,还没有特别多的应用落地,所以最重要的就是挖掘其使用场景,提高其性能,科普民众,相信坚持这样做的企业,将会得到丰厚的犒赏。

12…19
bibodeng

bibodeng

区块链爱好者,互联网从业者

189 日志
20 标签
Github Twitter Weibo
Links
  • IFWallet
  • IFPassword
© 2019 bibodeng
由 Hexo 强力驱动
主题 - NexT.Mist