对于正在寻求使用去中心化网络的强大功能的开发人员来说,在区块链上构建应用程序是一项很大的挑战。 考虑到这一点,dfuse 邀请了一些经验丰富的开发人员来分享他们构建这些下一代dapp 的历程。本周,我们很高兴请到了 Lynn Duke,Bitjoy 的创始人和 dfuse API 的早期用户之一。
向大家介绍下你自己吧
我的名字是 Lynn Duke,Bitjoy.io 的首席技术管和创始人,已经专业开发软件近20年了。 我在德克萨斯州出生和长大,我第一次见到计算机是我爸爸从我们当地的 Radio Shack (电器店) 带回了一台有48K的 RAM 的 TRS-80 彩色计算机! 当 TRS-80 到期时,我在青少年期间又用过了几个 Tandy 和 Commodore 64。 我在1996年开始上大学,最开始在戏剧课或计算机科学专业课之间很难决定。 一年之内,我对游戏编程的热情让我做出了选择。
90年代末,我毕业了,第一次在一家名为 Wind River 的实时操作系统公司做全职开发。 最初几年我接触到了汇编和,但最终离开了嵌入式软件开发,并进入了当时 Atari 旗下的游戏发行商 THQ 的游戏开发团队。 我花了几年的时间学习 Xbox 和 PlayStation 游戏机上的图形渲染技术。 我曾为几家游戏工作室的核心游戏引擎和技术团队工作过,甚至在2000年代中期建立了自己的游戏引擎。 到2008年,我发现了“移动开发”漏洞,并着手开始创造自己的 iOS 软件和游戏。 接下来的4年里,我开发了200多个iOS应用和游戏,其中一些在 App Store 中也上榜第一。
在做 iOS 初创公司的期间,2011年,我偶然发现了 bitcoin.org。 不幸的是,和许多其他人一样,我完全误解了整个概念。 我记得在 bitcoin.org 上与网站管理员联系,想了解他们有关移动“SDK”的计划的更多信息,哈哈。 当然,我从来没有得到回复。 到2013年,我反应过来了,就开始完全沉迷于比特币和相关更广泛的区块链技术。 我全心全意地相信它可以从根本上改变人们的生活。 我研究了每一个跟区块链相关的话题。
对于一些人来说,早上的一杯咖啡会让他们醒来。 对我来说,是区块链。 在 Adam B. Levine,Stephanie Murphy 和 Andreas Antonopoulos 结束了 LetsTalkBitcoin Podcast 节目之后都会激发我的想象力和好奇心。 2015年,我开始专业地构建区块链应用程序,在没回过头。
Bitjoy 的愿景是什么?
凭借庞大的游戏开发背景,对于我们来说专注于游戏和区块链的交点非常的合适。 我们特别感兴趣的是近年来游戏直播的爆红。 游戏直播已经成为一种人气这么高的社交体验,可以解决大量网络流量问题,数百万人不仅可以在线玩游戏,还可以观看其他人玩游戏。
亚马逊的 Twitch,微软的 Mixer 以及来自 Facebook 和谷歌的新竞争者的平台向我们展示了实时娱乐的未来,其中独特的游戏体验由世界各地的社区和观众创建、打造和评论。 游戏主播(或玩家)与观众之间的互动在很大程度上尚未开发 - 尤其是在游戏中。
我们正在构建一个平台和基于代币的协议,以激励游戏主播和观众之间的交互式游戏玩法和新的价值创造模型。 我们称之为 Bitjoy。 它通过在游戏体验中创造经济激励并使用真实世界的代币价值来支持它,从而增强互动。 这个价值可以由游戏代码安全地实时传输、合计和执行以改变直播体验。
支持 Bitjoy 平台的是一个叫“POWER”的代币。 在游戏过程中,观众发送 POWER 代币以引起在游戏中和直播中的实时变化。 POWER 代币不仅仅可以用来交易 - 它是一种抵押品,能代表观众在社区游戏机制中的利益 - 这也为新的经济激励、新型合作性游戏玩法、观众由主播的游戏表现而获得奖励等能力打开了大门。
想象一下,如果观众能够通过在游戏中打开一扇秘密之门来协助玩家、如果观众能够在与BOSS战斗中帮助主播补充生命值。 这是可以实时创建独特的游戏资产和游戏机制的:20,000 名观众可以帮助主播把一把独一无二的神剑加强,这把剑可以在链上存在一年,在此期间主播可以再次在游戏中自由使用它,将其出售或出租给其他玩家。 游戏世界中的独特资产可以由能够轰动足够大的观众群的主播带领铸造。 或者,观众可以集中他们的资源来赋予主播“开挂式”的能力的或临时的升级 - 总的来说就是会激励主播直播,因为观众是一直都准备好要看的。
让我们不要忽视这其中游戏设计师的机会。 我认为这是个人最让我着迷的地方。 作为游戏开发者,我们将大部分开发时间用于为玩家构建出色的体验,并且几乎没有想到观看的观众的体验。 我认为这部分是因为能有65万人观看一个主播玩游戏还是一件相对新的现象,哈哈,观众货币化也是游戏设计和开发的新领域。 通过将观众带入直播的游戏体验并赋予他们在直播中参与价值创造的能力,他们凭借自己的权利成为有价值的“玩家”。 游戏设计师可以开始构建一个可见的市场,这个市场可能比播放观众大几个数量级。
通常到这会有人问我们:“为什么需要把它放在区块链上?”我喜欢回答这个问题。 我会说: “我们没有。”这人们就不懂了,但这是为我接下来的要说的话做铺垫。 事实是,您可以在集中式基础架构上构建任何这样应用程序。 但是,在区块链上代替集中式系统构建它的原因是我们可以将信息存储在用户完全控制其自己记录的数据库中。 当您这样做时 - 当您从集中的信息存储转移到分散的信息存储上时 - 您可以为生态系统中的利益相关者提供巨大的发言权、可证明性和安全性,他们可以把它作为存储真实信息的 Oracle。 您在该系统中就把价值的所有者对接上了。
游戏、应用程序甚至公司之间的边界会消失,留下的是能将您的价值转移到另一个直播或甚至另一个游戏的真正开放和安全的方式。 POWER代币代表着电子价值,而区块链让它可以在没有中间人的情况下将它们流通到世界各地。 没有第三方支付处理商收取费用或阻止与它规则集或白名单不匹配的用户交易。 这是任何承诺安全、可靠、实时价值转移的应用程序或平台都无法在集中系统上实现,这是集中式系统的控制权掌握在少数管理员手中。 Bitjoy必须建立在区块链上,以实现真正的点对点价值通信。
在区块链上开发时,Bitjoy 面临的主要挑战是什么?
在我看来,区块链开发者面临的最大挑战是出块时间和交易费用对用户体验的影响。 这是你必须在每一次都要处理的事情。我们在过去用比特币和以太坊开发的时涨了经验,也幸好现在我们可以利用过去的教训和错误。
我花了无数个小时试着用花哨的等待画面和创意性的应用逻辑来掩盖高延迟的出块时间,最后还是意识到无论它看起来多漂亮或者你向用户解释的多清楚需要等待的的原因 - 谁都觉得它的体验不好。 您给消费者的任何创造性教育都不能让等待时间容易接受。 Bitjoy专注的就是实时游戏和互动,这使我们的工作变得更加困难。
最初,Bitjoy 的原型是2015年在比特币上进行设计的,之后又在以太坊上进行了原型设计。 我们必须在这些链上进行的用户体验权衡是无法忍受的。 由于我们必须为这些链支付的交易费用,我们仍然必须在交易之前从中引入 SQL 数据库来汇总值。 不幸的是,一次性只发送一分钱的梦想仍然只是一个梦想。
2017年,我们通过转向使用 EOS 实现了技术发展 - EOS是新一代区块链,没有用户交易费用还有一秒以内的出块时间。 说实话,我们从未感受到如此强大的力量。 我们在过去几个月里在 EOS 上取得的成就使我们对过去几年感到羞耻。 帮你自己一个忙,从第一天开始选择适合您特定用例的区块链来做开发。
像我们这样试图修改价值并实时影响游戏体验应用程序仍然存在挑战。 微分叉在EOS上也是个难题。 你猜怎么着? 您在10秒前发送的交易实际上并没入块,并且该交易的任何副作用都可能需要回滚! 如果我们为成千上万的玩家的游戏体验要做出实时改变,你怎么向他们解释 - “哦,对不起大家,你们想看到加 buff 的游戏剑实际上都没有加强。我们可以退币吗?“ 为了缓解微微分叉,我们发现将交易类型划分为几个重要级别很有帮助。 在某些情况下甚至不需要回滚。
在像我们这样的系统中,我们实际上需要游戏设计师来分配元数据,这些元数据描述了微分叉(或意外延迟)对特定游戏道具或 buff 造成副作用的程度。 那是因为没有一种方法可以适用于所有副作用的微型叉处理方法。 在游戏世界中,解锁角色皮肤和开会产生双重伤害的道具 buff 相关的副作用是非常不同的。
链上的数据最终会变得一致,但您应该尽可能地保持应用程序副作用的同步。 大额交易应该等到达到某个最终阈值。 例如,将游戏物品从一个玩家玩家转移到另一个玩家可以等待来自链的高度确定性,同时也要对用户体验的影响最小。
用户会发现他们在使用一个区块链吗?
是也不是。我们在 Bitjoy 的想法是,每日18个活跃用户的去中心化平台并不行。此外,我们还赞同这个概念:如果用户在注册我们平台的最关键时刻看到“区块链”这个词,那就是我们的错了。
如果你只是想使用 Bitjoy,也不关心你的同事所关注的这个叫“区块链”的东西,那么就用传统的用户名和密码创建帐户,开搞吧。但是,当您开始在我们的平台上积累价值时,我们很乐意借此机会告诉您控制自己的私钥的好处,并让您选择成为你去中心化未来的主人。
我们将为您提供一种方法,让您能控制您的帐户并取消我们的保管控制权。在此之前,我们可以任何身份为您服务。我们甚至正在探索一些有趣的方法来激励这些类型的用户尽快控制他们的密钥。
如果您出现在我们的欢迎屏幕上,并且您已拥有自己的EOS帐户和/或私钥 - 完美!我们已准备好对接,连接您拥有私钥的帐户。
从 Bitjoy 的角度来看,如果我们等待主流用户了解区块链并接受帐户创建和密钥管理的障碍,那么我相信我们已经在看着 GAME OVER 的屏幕了。
对于想要在区块链上构建项目的开发人员,你有什么建议?
从项目的终点开始,然后倒着向前工作。 听起来有点反直觉吧? 开发区块链应用程序与任何其他类型的应用程序开发大致相似。 您已经熟悉的语言,您已经体验过的平台和IDE ......您都会需要。 挑战开发人员大脑的部分是去中心化应用程序数据的存储方式以及读取和写入数据的时间。 写作智能合约会让人感到熟悉,但他们独特的时序限制和有限的指令集也是要花时间起步学习的。
我们目前的区块链交易分析是由 dfuse 提供支持。 我们的后端是 dfuse、Web 服务和其他流程组合起来的,提供有关 EOS 区块链中的游戏道具、能量提升和其他机制的信息。 我们的一些流程甚至负责在特殊时间自行提交交易。 但是,还是主播和观众的代币交易会推动整个系统的及时推进。 我们持续维护一些用于缓存的数据库,这使我们能够支持运行 Bitjoy SDK 的游戏和应用程序的复杂查询。
我们很幸运,EOS拥有丰富的开发资源。 Block.one 提供了 EOSIO 开源软件,有了它就有了可供您的应用程序使用的许多代码的例子。软件的经常更新,并且在最新版本中总是有新的功能。
然后是社区。 EOS 拥有我多年来参与过的的最好的区块链社区之一。 BP节点和社区成员不断以各种形式为社区做出巨大的贡献。 比如说 EOS Canada 出品的 dfuse API 和它的 SQE 结构化查询引擎、GenerEOS 的 EOS Toolkit、EOS New York 的 Echo publication 以及 Rob Finch 和 Zack Gall 的 Everything EOS 播客这几个例子。 还有 MonsterEOS、Dice、Infiniverse 等创新应用的开源智能合约,能给您提供智能合约开发的基础知识的和灵感。
还有,我建议从产品的最终愿景开始并向前工作,在应用程序开发周期中建立一些动力。 在机会时、在对您的应用程序和用例有100%的意义时引入去中心化的的组件。 区块链在你的身边普及是不可避免的,要不断挑战自己和他人。
实现去中心的,P2P 的未来的全球运动将需要多次迭代,什么是最佳的方式方法将一次又一次地重新定义。 所以放松,从中取乐,在区块链上建造一些引人注目的东西,供全世界使用。不管怎么说,是你把汗水和泪水注入那个将区块链纳入你的项目的人,这意味着你最终要确定它在你的最终产品中扮演的角色。
如果你是一个开发人员并希望分享你的区块链开发经验,请随时与我们联系。 我们很乐意将你的访谈整合到我们的系列文章《区块链开发者观点》中。