区块广播:

区块链开发者观点:《Learn EOS》的作者 Christoph Michel

dfuseio船员发布在 dfuse
 35053  0

Source

对于将来的主导 dapp 来说,在其开发堆栈中使用区块链,开发人员需要他们在传统网页开发时所习惯使用的工具和信息通道。 dfuse 与经验丰富的区块链开发人员交流,分享他们的走过的路程、他们使用的工具以及他们的知识来源。 本周我们采访了《Learn EOS》的作者 Christoph Michel。**
**

向大家介绍下自己吧

我是 Christoph Michel 一名来自德国的软件工程师。在网上一般用 cmichel 的昵称。我对编程的迷恋始于我十几岁玩游戏的时候。那时,反作弊系统很容易被规避,作弊的玩家很常见。我就开始访问游戏黑客论坛,打算通过学着自己做更好的**来击败其他作弊者。有意思的是,我很快发现编写和改进作弊程序给我带来了比玩游戏更多的乐趣。我的编程生涯就此开始了,然后我转进了网络开发,最终进到大学学了数学和计算机科学。

我在读我的密码学硕士期间第一次接触了区块链技术。当我知道我学的加密协议在与经济激励的结合后能够构建完全去中心化的系统的时候,马上它就吸引住我了。从技术角度来看,像 Monero 或 Zcash 这样的隐私保护币对我来说非常有趣。

但是,作为开发人员,我真的很喜欢开发应用程序,然后我开始关注更多能够运行代码的区块链。在我评估不同的智能合约平台时,Dan Larimer 宣布了 EOS,我很赞同他在设计中做出的许多权衡。我在2018年初开始使用预发布版本的 EOS,然后在 EOS 主网上推出了首批 EOS 游戏之一,King of EOS。从那之后我就坚持使用 EOS 做开发,最近我发售了 ,这本书教会开发人员如何在 EOS 上开发 dapp 。

您写《Learn EOS》的期望是什么呢?

我在主网发布之前开始在 EOS 上做开发,文档呢主要包括如何通过手动编译 EOS 源代码来设置开发环境。当然,要弄清楚如何编写智能合约,你最终还是要阅读 EOS 源代码或其他开源智能合约,因为当时没有其他选择。我当时对 Block.one 的 “Elemental Battles” 寄予厚望,是个教你如何开发你的第一个 EOS 智能合约的游戏。但是它在发布时已经过时了,不久之后新的 EOS 版本(EOSIO.CDT v1.3)引入了许多重大变化。 (顺便提一个有意思的事:同样的事情发生在我的书的发布上了,新的 EOS 合约开发工具包就在我的出书前一天发布了。)

我和社区的许多其他开发人员一样,对 EOS 开发缺乏最新的学习资源而感到沮丧。考虑到我已经有了在 EOS上开发 dapp 的经验了,我认为我应该把我的这些经验和阅读 EOS 源代码学来的东西。

在我看来,对开发者的教育是整个生态系统的重要组成部分,我看到了一个可以用我的知识来填补的大空白。最后,我们需要用户的采用,而开发人员构建的应用程序会带来用户。

我打算创建一个完整的指南,它是自足的,有从头到尾在 EOS 上构建 dapps 的最新信息。从设置开发环境,到学习 EOS 的功能、智能合约编程、通过前端和集成钱包进行交互、去中心化部署前端到 IPFS。

虽然您可以在 EOS.IO Stack Exchange 论坛、GitHub 问题或源代码中找到这些网上的信息,但它一般都是过时了或不够完整。

例如,您可以在 EOS Developer Portal 上找到有关如何使用内联交易与其他智能合约进行通信的信息。但是,假如您想在未来某个时间而不是现在执行的交易呢?允许某项操作提前运行或预约的最长时间是多少?您能通过延期交易能得到什么保证?当他们失败时会发生什么?你如何解决这种不可靠性以及合约中的这些限制以使其有保障?

以上是一些人脉在编写文档时不会考虑到的问题,使得这些信息难以被找到。但是,当坐下来编写实际合约时,你自己还是会遇到它们。

因此,我将所有这些信息打包成260多页的书,这样所有级别的开发者都可以从中受益,不管你是初学者还是大神。唯一的先决条件是,你应该熟悉任何语言的一般编程概念。对编程的介绍并不是 EOS 所需要的,也不是我对本书的意图。外面已经有很多关于学习如何编程的好书了,所以我不想在这方面做重复的工作。这里我只把精力放在区块链的开发上。

撰写《Learn EOS》时您遇到的主要挑战是什么?

对我来说,最大的挑战是 EOS 上的智能合约是用 C ++ 编写的。

虽然我十年前写过 C 和 C ++,但从那时起,这语言经过了巨大的改变。最近大部分做的是网络开发,所以我首先必须再次熟悉现代 C ++(迭代器,函数式编程,lambda函数)及其更低级的功能,如内存管理和引用。但是主要是要习惯它的语法,我很高兴知道编写智能合约不需要掌握复杂的 C ++。

作为一个 JavaScript 网页开发员,另一个问题是开发人员工具。我习惯于热重加载和好的软件包管理系统,每当我进行代码更改时,我必须运行命令来编译和部署我的合约这个过程感觉相当古老。这促使我快速开发自己的自动构建过程。

最乏味的部分是每当 EOS 发布具有重大变化的新版本时,必须更新所有代码示例。到目前为止,这种情况发生了两次,去年十月发生一次,另一次是出书的前一天。我确定这会不会是最后一次,但我会保证让这本书保持最新状态。我认为每个用了 EOS 很长时间的人都遇到国在编写过时的智能合约代码时那种令人沮丧的经历。这对刚刚入门的新开发人员特别不好,因此我想保证本书是最新的,来消除这种挫败感。

作为区块链开发人员,您需要熟悉快节奏的更和所有在进行中的开发。对于所有技术领域都是如此,但我认为区块链更是。在传统的软件开发中,您拥有独立的服务器,您可以决定不更新。在我们这个的空间里,一切都交织在一起,会有其他因素为您做选择。您的代码在去中心的基础架构中的不同节点的硬件上执行,共识会决定运行哪些版本以及哪些新提议,把它作为系统的更新。

您希望在区块链生态中看到什么?

我想从两个不同的角度回答这个问题。首先,在所有平台的全球生态系统层面,和我具体希望在 EOS 上看到的。

在全球范围内,我希望看到项目之间的更多有意义的合作。对我而言,似乎大多数项目只关心自身,并且都有"赢家拿走一切"的心态。实际上,在我看来恰恰相反。更多的用户采用和更多真实用例将推动整个市场。

特别是随着跨区块链通信(IBC)被实现,或者甚至比如说就光是通过 Bancor 网络来进行 EOS 和以太坊上的代币交换,项目可以共存。几乎计算机科学研究的所有东西都只是不同的权衡问题,然后项目可以选择哪个项目具体有什么级别的去中心化、隐私和性能,来适合他们的需求。

另一个我希望看到的是对游戏、赌博或金融之外的用例的探索。我认为去中心化的无信保险公司是一个值得探索的好概念。基本上,任何可以通过公共 API 调用确认的内容都可以无信任、更透明和有效通过预言机实现。

最后,我希望看到开区块链公司的相关法律变得更清晰。这个问题我们不经常说,但许多团队决定保持匿名只是因为现有的法律框架尚不适用于区块链。举个例子,在向欧盟客户销售数字产品时,您必须在客户所在国家/地区支付增值税。当您的产品可以通过智能合约购买时,无法获得该信息。还有许多其他此类法律上的不确定因素。

具体在 EOS 上呢,我希望看到更多的骰子游戏。我觉得吧,把"EOS"、“BET”、"DICE"和"PLAY"这几个单词重新组合还可以变出更多这样游戏的公司 。要是不开玩笑的化,我要说许多 dapp 仍然是闭源的,即使它们是开源的,也很难验证它们确实正在运行他们说在运行的代码,因为我们在区块浏览器中缺少合约验证工具。我知道 EOSPark 和 SlowMist 团队以前都在试着发布过相关的解决方案,但我发现它们使用起来有点不稳定。

作为一名开发人员,我个人最大的愿望是拥有更多工具,使区块链解析更容易——类似于 dfuse.io 在做的。每当执行智能合约上的操作时,有个能触及你 API 端点的可靠的 webhook 是非常有价值的。现在,实现这一目标的唯一可靠方法是自己运行 EOS 主网节点,这是有大量的财务和时间成本的。

有什么想与开发人员分享的建议吗?

我对区块链发展采取逆向观点。毕竟它与传统的编程没有什么不同。某些方面它甚至更容易,例如无需考虑数据备份,设置基础架构或执行开发和维护相关任务以保持应用程序的运行。这一切都是由网络完成的。 (前提是你的所有后端逻辑都是通过智能合约完成的,是不需要服务器的。)所以我想说的是你不必害怕学习区块链开发。

EOS开发人员门户网站依旧是一个很好的入门资源,如果您对区块链感兴趣,那么现在就没有比现在更好的时间起步了。

给大家的一些提示:

  • 给你整个设置,从启动本地网络到编译和部署合约,做自动化。这个时间是叠加起来的。特别是在它只是一个你每天只投入几个小时的支线项目的时候,手动完成整个过程可能足以给你让你无法起步的负担。这就是我自己编写 EOS 样板生成器的原因。

*由于您的智能合约不是一个长期运行的流程,而是根据个人情况处理每个操作的,您需要仔细考虑您的应用程序可能最终遇到的不同状态。我发现用有限状态机器的角度考虑它并绘制出图表是非常有帮助的。就像我给我的 Cryptoship 合约做的一样。这有助于在架构早期发现无法预料到的问题,从而避免以后进行大量重构。

*不要依赖延期交易。它们不能保证百分百执行,您还是应该给用户提供手动重试的操作。

*在为一个智能合约平台开发时,您学到的许多概念会适用于其他智能合约平台。不要觉得你是在封闭自己的选择,也不要在你的平台上投入过多情感。

如果您对 EOS 开发很认真,并且想要深入了解并节省在网上找解决方案的时间,我还是会地推荐以下我自己的《Learn EOS》

另一个更简单的是合约开发工具包的"eosiolib"源代码。

慢雾的这份智能合约安全检查表也值得一提。

如果您遇到任何问题,请随时通过 Stack Exchange 或 Telegram 与社区联系。 EOS社区是我参加过的最互相帮助的社区之一!似乎所有针对 EOS 的 FUD( Fear, Uncertainty, Doubt 意思为惧、惑、疑)让每个人都更紧密。

如果你是一个开发人员并希望分享你的区块链开发经验,请随时与我们联系。 我们很乐意将你的访谈整合到我们的系列文章《区块链开发者观点》中。

  • 正序
  • 最新
沙发,很寂寞......
登录 账号发表你的看法,还没有账号?立即免费 注册
帖子数 69 获赞数 1
dfuse 是区块链 API, 通过组织全球的去中心化数据,帮助开发人员构建高性能的应用程序。 登陆官网 dfuse.io 获取免费 API Key。 进开发者微信群请加管理员:EOS_Canada
推荐节点
热帖榜
热门跟帖