区块链开发者入门指南

译文出自:登链翻译计划

译者:aisiji

校对:Tiny熊

一份帮你入门的资源清单

特别感谢RNG主持了产生本文的谈话。RNG是一个由游戏玩家、游戏开发者、区块链开发者、电竞爱好者、元老级爱好者、NFT爱好者以及几乎所有喜欢和这些人混在一起的古怪集体。

最近,有人在论坛上说,希望我为学习区块链的开发者推荐资源,于是我整理了这篇文章。

这不是一篇聊关于区块链优势和劣势的文章,只是一篇学习指南而已,给想要学习区块链的人一点帮助,也可以了解到开发区块链应用的步骤。不是所有东西都应该在区块链上。

外面有很多不同的资源,就像任何技术栈的选择一样,事情可能会变得很有意见。特别是对于这个领域的新人来说,仍然需要引导到正确的工具。我将尝试在我的意见和一般清单之间找到一个中间地带。

其实我们可以找到很多资源,然而就像任何技术栈的选择一样,可能会遇到一些比较片面或者有偏见的意见,特别对于这个领域的新人来说,更需要正确的引导。我会努力尝试选一个比较中立的清单推荐。

你想在哪条链上构建?

这其实并不重要--接下来我要聊的是以太坊上的工具和资源。其中有些与其他一些链兼容,有些不兼容。我个人认为,如果你是第一次学习区块链应用,学习如何为以太坊编写和部署可能是最好的开始,即使你的目标是在不同的链上构建。因此,这里的列表是以以太坊为重点的。

A警告

以太坊是变化非常快的,你知道三年前React的代码和现在有多不同吗?相比React,以太坊的变化要大的多。Solidity的发展速度很快,而且有时候还会出现突破性的变化。随着EIP不断的探索更优的定价机制,gas优化也在不断的变化。伴随不断的发现和推广新的模式,也就不断的出现新的bug,从而不断的解bug。今天你看到是这样的,到明天也许就不是这样了。即便如此,如果你学会了solidity0.5,你仍然具备理解0.7的能力,不仅如此,会让0.7变得更容易,而不是更难。

编写智能合约

giphy.gif

要创建一个dapp,你首先需要具备写智能合约的能力,并且还要可以让其他东西与之通信。我先假设那些与合约通信的东西,无论是前端、API、或者其他任何什么,都是用JavaScript编写的。JS有大量的库可用,我觉得大多数主流语言都有与Ethereum通信的库,但是我个人对JS的系统了解的最多。

值得一提的是你可以不用写合约直接创建一个dapp。在公链上,你可以在别人的合约上创建app。你想为Uniswap创建一个前端吗?Uniswap是不会阻止你的。因为商标的原因,你不能以Uniswap团队的身份创建前端,但你可以说:“嘿,这是我的Uniswap前端,它可以做Uniswap前端能做的一切,更酷的是,每个月付我5美元你就可以使用它。”这样是完全没有问题的。通常,我们假定你至少具备在Ethereum上开发智能合约的一般知识。如果你看不懂合约,那么你很难写出一个与Uniswap合约的接口。

Solidity是一种智能合约语言,你可以从它开始学习。Vyper是一种超级酷的语言,我还有一个用Vyper写的PR,但是它不是你的起点。Solidity有更大的社区,这意味着更多的资源,并且当你卡住的时候可以有更多的人可以求助。

日本漫画平台CANDL利用区块链使用户拥有漫画部分所有权:日本漫画家支持平台“ CANDL”使用区块链技术,使得任何人都可以获得漫画部分特许权,漫画迷还可以提前投资可能在未来成名的漫画。购买需要有以太坊钱包。(Coinpost.jp)[2020/3/4]

Cryptozombies可能仍是嵌入Solidity最好的工具,虽然我觉得它并没有好好维护。这是一个制作类似Cryptokitties游戏的教程。(有一个游戏制作教程,是Vyper的一个阶段工作,点击这里查看)

我发现,Solidity文档是非常易读的,虽然我通常对阅读文档有心理障碍。特别是“SoliditybyExample”部分,对于理解Solidity的不同元素非常有帮助。

VisualStudioCode有很好的Solidity工具,据我所知,Atom也有一些不错的工具。我觉得Vim迫切需要一个新的维护者,我对Emacs不了解,但我肯定它也有一些支持者。

最后:有很多通用的合约,可以直接拿来用,而不需要自己写。你听说过制作属于自己的ERC20代币或者NFT吗?你可以直接用一个经过审计的、可靠的、开源的模板,在模板的基础上创建,而不是从头开始写。黄金标准OpenZeppelin,这里是他们的合约库,他们也有自己的npm包。

智能合约沙盒。

?

Solidity之后,我们要讨论的是合约沙盒。假设你已经写了一个合约,你现在想要测试一下,看看他是否正常工作。你该怎么做呢?没错,你不会想要把所有的”Helloworld.“或者草案合约都部署到主网上。虽然有测试网,但一般工作流也不会直接上测试网。取而代之的是开发链,这是你可以根据需要在自己机器上运行的虚拟链。它可以帮你看到你的合约是否在编译,并且可以测试合约的函数、变量以确保都按照预期正常工作。不过开发链有一些限制——一个简单的例子,假如你正在开发与DAI交互的程序,这意味着除了部署自己的合约外,每次运行时都会在开发链上部署一个克隆Maker(DAI).这是伟大的第一步。

主要工具:

Remix,如果你只处理合约而没有其他(没有前端)。Remix也可以连接测试网和主网,是一个非常强大的工具。它会有一个学习曲线,刚开始可能看起来像在胡言乱语,但是一旦你掌握了编译和部署,你就可以用它做很多事。

Ganache,和Hardhat--我们将在一分钟内详细讨论这两个框架。它们是更大的框架的一部分,可以单独用于合约,但当你有一个完整的应用程序时又会大放光彩。

总结一下,传统的合约部署包含以下步骤。首先,合约需要被编译,从Solidity(或其他语言)转化为JSON串。你会注意到一种特别的JSON——ABI,这是合约内容概要的JSON,这种JSON多被应用于开发中。然后到实际的部署了,需要通过一个交易把合约字节码发送到链上。为了可以与合约交互,你还需要知道它在链上的地址,并且你还需要它的ABI。Etherscan是一个从链上读取合约信息的非常有用的工具。假如你知道合约地址,但是不知道它的ABI,通常都可以在Etherscan找到。

框架

?

这给我们带来了围绕合约制作一个用户界面的问题。一旦你部署了,你的合约将如何被交互?在某些情况下,仅仅在链上有一个合约就足够了,任何参与互动的人都可以使用类似Remix的东西来与之互动,但通常不会。我首先假设你的项目中有某种图形用户界面。如果是这种情况,你会想要一个框架。区块链框架将把你的合约整合到前端项目中,把你的合约编译成可以被前端理解的JSON,提供旋转开发链的能力,以及部署合约。

行情 | 区块链板块收涨0.28% 数字货币板块收涨0.38%:A股收盘,三大股指集体上涨,上证指数收涨0.54%,区块链板块收涨0.28%,数字货币板块收涨0.38%。区块链板块中190只概念股中,96只上涨,86只为跌,1只停牌,7只平盘,其中古鳌科技和四方精创涨停,长城文化跌停。数字货币板块29只概念股中,12只上涨,17只下跌。[2019/11/5]

最流行的框架是。许多教授dApp开发的在线资源也教授Truffle。Truffle可以编译,以Ganache的形式公开开发链工具,以及更多。

既然如此,我推荐。与Truffle类似,你可以编译合约,并获得对开发链的访问。不过,还有更多。Solidity没有开箱即用的console.log,但Hardhat基本上做了他们自己的黑客EVM,可以让你登录你的合约。根据我的个人经验,Hardhat的编译问题也比较少。(看着你,node-gyp。)也有更多的便利设施。在你去尝试建立你自己的Hardhat环境之前,让我们来谈谈web3库,然后我有一个建议,这应该会使你更容易。

web3库是在非区块链代码和区块链之间搭建桥梁的半官方术语。用于实例化合约对象的JavaScript代码在哪里,然后在该合约上调用一个函数?实际上,你到底用什么函数来连接到链上?很明显,JS没有内置这个功能。这就是web3库的作用。它们暴露了所有你需要做的事情的函数。JavaScript中最突出的两个库是Web3.js17和Ethers.js。我个人认为后者更容易操作,并建议你也这样做。一个建议是,目前的Ethers的文档仍在编写中。如果你在查找或理解v5的文档时遇到困难,也可以搜索。搜索的功能更强大,而且有更多的代码片段)。)

我不知道有什么资源能真正放大到web3库的熟练程度,但我在最后给出的建议也涵盖了web3。

你需要合约、框架环境和web3库,这已经是很多了。如果有什么能把这些整合到一个环境中来管理它们,那不是很好吗?

一个管理它们的环境

自然是有的。Scaffold-Eth有一个开箱即用的环境,在React应用的背景下设置了Hardhat和一大堆其他东西。Web3.js和Ethers都是通过同一个yarn安装来安装其他的依赖项。这是迄今为止最简单的入门方式,因为它几乎没有任何配置。Scaffold里有很多东西,包括自定义钩子和组件。甚至还有一个自定义合约组件,为你提供了与合约交互的近乎无障碍的方式,这与Remix非常相似。编译完合约后,只需在App.jsx中放入一个<合约名称="YourContract/>组件,其中名称是合约的名称。AustinGriffith在Scaffold的旧版本上有一个三分钟的超级超级模式的演练here,还有一个更长的演练here。

围绕它还有一个超级友好的Telegram频道,在GitHub的README中列出。我强烈推荐它。这就像在Webpack和Babel中挣扎的人与Create-React-App的区别。

我想谈的最后一件事是区块链栈中的另一个细节。区块链是一个由节点组成的网络,每个节点都存储着区块链的历史。你的React应用是如何接入网络的?虽然web3库确实暴露了一个web3提供者,但它如何知道节点的位置,以及如何查询它们?答案是,它不知道。你需要运行你自己的节点,或者连接到一个运行它们的服务。这就是最终完成的桥梁--你的JavaScript使用web3库来发送一个链上理解的命令,该命令通过web3提供者发送到网络,然后,viola,你在与区块链对话。

现场丨韩国FINTECH支援中心董事长丁有信:区块链技术是第四次产业革命的核心技术:金色财经现场报道,8月18日,由全球首个粉丝生态链FansTime主办的FTI(FansTime)国际盛典暨全球区块链精英峰会·韩国站在首尔开幕。韩国FINTECH支援中心董事长丁有信在祝辞中表示,第四次技术革命代表的技术就是区块链技术,这个技术与金融科技相结合,我相信能够为我们指明新的产业发展方向,为此我们应该作出更大的努力。因此韩国金融科技支援中心非常关注区块链技术。[2018/8/18]

区块链节点

虽然我推荐运行自己的节点,甚至还写了一篇长文关于安装Geth,我不得不承认使用服务是更普遍的做法。我会折中一下,给你一些关于两者的信息。出于各种原因,我推荐Nethermind来运行你自己的节点。为了能够做到这一点,你需要一个固态硬盘,它应该有至少500GB的空间。你可以用4GB内存进行同步,但可能至少要有8GB。这些都是为主网计算的,测试网需要的空间要小得多,而且可能用更少的内存就能搞定。如果你还在做高强度的图形工作,你可能已经有了更多的内存,你可以很容易地调整Nethermind使用多少内存。Nethermind是用.NET写的,但我在*nix系统上没有遇到任何问题。在服务方面,Infura是最著名和最广泛使用的,尽管新来的Alchemy也值得好好看看。

我把这个推到这里,之前没有提到的原因之一是,它有点不伦不类。就你的实际开发而言,无论你是否运行你自己的节点或使用服务,当你实例化一个web3对象并需要知道将其连接到什么时,对你的代码库的实际影响大约是半行。

钱包

同样,你可能要在你的浏览器上安装MetaMask来测试钱包的交互。你也可以使用其他钱包,但在我看来,MetaMask仍然是国王。

接下来的事情

一旦你掌握了这些基本知识,你会很快遇到一篮子新的问题和关注。我不可能在这里涵盖所有的问题,我自己并不了解所有的问题,也没有足够的知识来明智地解决其他问题,但我会试着谈一谈接下来你可能要关注的一些事情。

分散的文件存储

对区块链的写入是昂贵的。你要为你在链上写入或更改的每一点信息付出代价。不仅如此,每一个与链同步的节点都必须在同步时执行你放在链上的东西。这使得代码有了一些有趣的优化,但它也让你思考什么应该放在链上。链的作用很差,就是数据存储。

比方说,你有一个有用户档案的平台。你不希望在链上存储他们的简历和头像。那它应该放在哪里?一些集中的服务器?(Cueoverlydramaticmusic:)如果恶意的一方可以任意改变用户的头像,那么整个平台去中心化的意义何在!?别担心,仍然有去中心化的方式来存储数据。去中心化的文件存储也依赖于去中心化的点对点网络,就像区块链。(现在的一些人还与他们自己的区块链沟通,但这既不是这里也不是那里)。不过,他们专门拿数据来存储。现在它们中最引人注目的是Filecoin,尽管我个人也会提到Swarm和Sia。Swarm尤其如此。不同的供应商可能有不同的优势,这取决于你需要存储什么样的数据,你需要什么样的功能,等等。

Layer2解决方案

以太坊本身已经到了交易成本过高,或开采时间过长的地步了。此外,在主网上,隐私可能是一个困难的冒险。Layer2的解决方案已经被开发出来,以缓解拥堵问题,有些还提供了更强大的隐私保证。我们正处于一个百家争鸣的L2s阶段。有大量的看起来强大的、可用于市场的解决方案。Reddit希望有一个L2来投放一些平台内的货币,并收到了20多份材料。我无法比较和对比现有的平台--我缺乏信息和知识。如果你想让我挑出一个来先看看,我会推荐StarWare的Cairo或用它构建的东西。

声音 | 淄博司法局副局长:探索将区块链技术应用于社区矫正工作:近日,淄博市司法局召开全市社区矫正教育管理工作座谈会,在会上,淄博市司法局党委委员、副局长刘长军指出,要尽快研究、积极探索“区块链”技术在社区矫正工作中的应用,从而进一步推动全市社区矫正、安置帮教的工作。[2018/8/3]

预言机

有时你想根据链外发生的事情在链上做一些事情。比方说,如果以太币的美元价值超过一定数额,你就想卖掉它。美元不在链上,那么区块链怎么会知道呢?你可以写一个机器人来调查价格,并在满足条件的情况下执行交易,但假设你需要在智能合约中拥有这些信息--合约应该如何知道?这就是预言机所要解决的问题。

不幸的是,那些看起来很简单的解决方案不一定是充分的。Samczsun,一个相当传奇的以太坊白帽子,最近放出一篇文章关于预言机攻击。其结果是要小心你在那里做的事情。

也有预言机服务。Chainlink几乎可以肯定是其中最有名的,但要确保它能满足你的需要。Samczsun在他的文章中对这个问题的论述比我可能的要好,所以我就把你引到那里。

终于有了一个类似结论的东西

我们在这里还可以谈一谈:链上治理,可升级性,安全性,以及更多。正如你所知道的,我主要是通过主观的方式来挑选主题。这篇文章绝不是详尽无遗的,尽管我认为它可以给一个置身事外的开发者提供良好的方向。随着你越来越熟练,你将能够轻松地找到自己的方向。以太坊社区的一个重要方面是它的许多人都很友好。好好利用,但也要把它发扬光大。总有一天,会有另一个开发人员试图摸索这些奇怪的区块链东西,也许你会是那个在Twitter上收到他们的DM或在EthereumStackExchange上看到他们的问题的人。有了强大的以太坊,就有了保持以太坊强大的责任,或类似的东西。

资源清单

我将在这里放上一堆资源,包括上面提到的那些,以及一些教程。

首先,我应该链接到更全面的资源。我的目标是列出足够多的资源,以满足初学者的需要,但又不至于多到让人不知所措。这里有许多我将探讨的资源。ConsenSys保留了一个资源清单这里,它被链接到/r/ethdev的这个主题中,这意味着那里的评论甚至有更多。我也要向ethereum.org喊话,因为他们有一个非常棒的开发门户,他们正在不断努力改进。

核心资源

Soliditydocs

Vyperdocs

Remix

Contraktor

Eth95

OpenZeppelin(GitHub,npm)

Truffle

Hardhat

Web3.js

Ethers

Scaffold-Eth

Nethermind

Infura

Alchemy

教程

EattheBlocks

Dapp大学

过去有很好的Udemy课程,不知道现在是否有什么。

Ethernaut-我推荐使用NicoleZhu的excellentwalkthroughs

中关村区块链联盟理事长元道:EOS在治理上,打了大型公链治理的第一仗:中关村区块链联盟理事长元道:不论EOS如何,EOS在治理上,打了大型公链治理的第一仗。EOS超级节点竞选不在于结果,而是了解其过程。区块链的世界中,谈不上管理,但可以说治理。EOS这样的公链,持币者与用户的利益是不一致的,用户和生态都还没有上线。即时EOS未来是一地鸡毛,也是一个伟大的事业。所谓的3.0纯粹是胡扯,0.3还没到。[2018/6/2]

Cryptozombies

vyper.fun

资源

ethereum.org

StackExchange

/r/ethereum

/r/ethdev

Twitter-它确实是一个了不起的地方,可以看到正在发生的事情,与社区成员联系,并建立对性的抵抗,你可以使用hive.one获得一个良好的开端。

WeekInEthereum

众多的播客,我甚至不打算去尝试

EthGlobal在2020年的虚拟黑客大会上做得非常好,这是一个与其他以太坊开发者会面和互动的好方法,尤其是当你在自学时。

这次真的要结束了

5fbd1ab05d0fa2a2570a3d1b_conclusion

唷!这是个很长的清单。我希望这是一个很好的概述,足以让你开始并走上你的道路。你很快就会找到你自己的道路。

本翻译由CellETF赞助支持。

来源:https://www.linumlabs.com/articles/a-guide-for-developers-interested-in-learning-blockchain-development

参考资料

登链翻译计划:https://github.com/lbc-team/Pioneer

aisiji:https://learnblockchain.cn/people/3291

Tiny熊:https://learnblockchain.cn/people/15

RNG:http://discord.gg/rnglife

Cryptozombies:https://cryptozombies.io

这里:https://vyper.fun

Solidity文档:https://learnblockchain.cn/docs/solidity/

OpenZeppelin:https://openzeppelin.com/

这里:https://github.com/OpenZeppelin/openzeppelin-contracts

npm包:https://www.npmjs.com/package/@openzeppelin/contracts

Remix:https://remix.ethereum.org

Ganache:https://www.trufflesuite.com/ganache

Truffle:https://learnblockchain.cn/docs/truffle/

Hardhat:https://hardhat.org/

NomicLabs:https://nomiclabs.io/

Etherscan:https://learnblockchain.cn/docs/etherscan/

Web3.js:https://learnblockchain.cn/docs/web3.js/

Ethers.js:https://learnblockchain.cn/docs/ethers.js/

Scaffold-Eth:https://github.com/austintgriffith/scaffold-eth

here:https://youtu.be/ShJZf5lsXiM

here:https://youtu.be/_yRX8Qi75OE

一篇长文:https://betterprogramming.pub/run-an-ethereum-node-on-linux-late-2019-b37a1d35800e

Nethermind:https://www.nethermind.io/

Infura:https://infura.io

Alchemy:https://alchemyapi.io

MetaMask:https://metamask.io

Swarm:https://swarm.ethereum.org/

收到了20多份材料:https://www.reddit.com/r/ethereum/comments/hbjx25/the_great_reddit_scaling_bakeoff/

StarWare:https://www.reddit.com/r/ethereum/comments/hbjx25/the_great_reddit_scaling_bakeoff/

放出一篇文章:https://samczsun.com/so-you-want-to-use-a-price-oracle/

Chainlink:https://starkware.co

这里:https://github.com/ConsenSys/ethereum-developer-tools-list/blob/master/README.md

这个:https://www.reddit.com/r/ethdev/comments/9jw839/long_list_of_ethereum_developer_tools_frameworks/

ethereum.org:https://ethereum.org

Soliditydocs:https://learnblockchain.cn/docs/solidity/

Vyperdocs:https://vyper.readthedocs.io/en/stable/

Remix:https://vyper.readthedocs.io/en/stable/

Contraktor:https://ethcontract.watch/

Eth95:https://eth95.dev/

OpenZeppelin:https://openzeppelin.com/

GitHub:https://github.com/OpenZeppelin/openzeppelin-contracts

npm:https://www.npmjs.com/package/@openzeppelin/contracts

Truffle:https://learnblockchain.cn/docs/truffle/

Hardhat:https://learnblockchain.cn/docs/hardhat/getting-started/

Web3.js:https://learnblockchain.cn/docs/web3.js/

Ethers:https://docs.ethers.io/v5/

Scaffold-Eth:https://github.com/austintgriffith/scaffold-eth

Nethermind:https://nethermind.io/client

Infura:https://infura.io/

Alchemy:https://infura.io/

EattheBlocks:https://www.youtube.com/channel/UCZM8XQjNOyG2ElPpEUtNasA

Dapp大学:https://www.youtube.com/channel/UCY0xL8V6NzzFcwzHCgB8orQ

Ethernaut:https://ethernaut.openzeppelin.com

excellentwalkthroughs:https://hackernoon.com/ethernaut-lvl-1-walkthrough-how-to-abuse-the-fallback-function-118057b68b56

Cryptozombies:https://cryptozombies.io

vyper.fun:https://cryptozombies.io

ethereum.org:https://vyper.fun

StackExchange:https://ethereum.stackexchange.com/

/r/ethereum:https://www.reddit.com/r/ethereum/

/r/ethdev:https://www.reddit.com/r/ethdev/

hive.one:https://hive.one/ethereum/people

WeekInEthereum:https://weekinethereumnews.com/

EthGlobal:https://ethglobal.co/

CellETF:https://celletf.io/?utm_souce=learnblockchain

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

登链社区

现已在非小号资讯平台发布105篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/10353609.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

每周编辑精选WeeklyEditors&#039;Picks

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

[0:15ms0-1:432ms