建网站培训班,wordpress主题highend,福建建设工程信息网官网查询,网站建设 高端 北京Web3是一个包含了很多领域的概念#xff0c;不讨论币圈和链圈的划分#xff0c;Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发#xff1b;也有VR、AR等追求视觉沉浸感的XR相关领域的开发#xff1b;还有基于区块链底层架构或者协议的开发。 这篇文章给出的学习路… Web3是一个包含了很多领域的概念不讨论币圈和链圈的划分Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发也有VR、AR等追求视觉沉浸感的XR相关领域的开发还有基于区块链底层架构或者协议的开发。 这篇文章给出的学习路线图是第一种类型针对Dapp应用的开发也就是基于区块链网络开发的去中心化应用。我将从首先从国内的JD开始分析国内的区块链企业需要哪些技术栈。再给出基于以太坊的学习路线图。 也许你会问为什么要学习以太坊我学习用BNB Chain、Solana、Avalanche等区块链构建我的Dapp不行吗答案当然可以但是以太坊依然是目前最大的区块链应用开发生态它的开发者工具最齐全、文档和社区也最丰富。你能找到更多的学习资料在遇到问题时也能很快找到社区的解答。 毫无疑问以太坊理应是Dapp的新手开发者第一个学习的区块链生态。 这篇文章不会介绍过多Dapp的前后端开发上我假设你了解HTML/CSS/JavaScript的相关基础知识并熟悉一门后端语言Python、Java、Rush、Go或者Node.js。 好了让我们开始吧~ 企业需要什么样的Web3开发者 如果了解现在的企业需要Web3开发者拥有什么样的技能组合能够让我们更加针对性的去学习企业级的开发实践少踩一些弯路。 需要掌握的区块链技术要点 区块链基础原理 熟悉Ethereum技术深入理解EVM Solidity编程 智能合约设计、开发、测试、上线和维护 智能合约的跨链交易 Truffle开发框架 web3js、ethers.js、OpenZeppelin等库 即使你还从未接触过Web3的开发但如果你是一位有过Web开发经验的程序员Dapp的应用开发范式基本是一致的我相信你大概能从这份JD里面能总结出这么几点 区块链的基础原理和Ethereum技术是Web3开发的基础知识 智能合约是区块链开发一个很重要的环节 Solidity是编写智能合约的一个重要语言 Truflle是一个主流的区块链开发框架 web3js、ethers.js、OpenZeppelin这几个是区块链开发中经常使用的库 没错这几个技术点是我们Dapp开发和编写智能合约通常会使用到的。也许你依然对里面的概念和技术完全不了解没关系你只需要有个大概的印象。接下来我们在下文的「学习路线指南」中都会提及到这几个技术栈。 我相信你在阅读完全文后再回来看这个JD应该会有不一样的理解。 区块链基础 在学习应用的开发前了解一定的区块链基础知识是很有必要的。虽然从技术角度上来说即使你不了解任何的区块链基础知识也能开发出Dapp。但这样的开发者基本上就是工具和语言的熟练使用者在遇见较为深入的问题和技术栈时很快就会碰见天花板。 推荐资料 对于区块链基础知识的学习我推荐以下的专栏/课程/书籍你可以任选一个深入看即可 《陈浩深入浅出区块链-极客时间》专栏 国内开源公有区块链项目 Metaverse 元界 CTO陈浩开设的专栏专栏共 36 期围绕区块链知识从浅入深分 5 个模块进行讲解浅说区块链基础 / 深入区块链技术 / 数字货币与数字资产专题 / 区块链与当下互联网 /如何从业区块链。 《自游说透区块链 - 极客时间》专栏 专栏作者是深耕一线的区块链专家专栏从应用和技术两方面出发聊区块链。比起上一个专栏整体文章的设计更加容易理解有很多丰富的案例和思考看完这个基本能搭建起区块链知识体系的完整认知。 北京大学肖臻老师《区块链技术与应用》公开课-B站视频 北京大学公开课《区块链技术与应用》由肖臻老师讲授,主要讲解区块链的基本概念和实现原理面向广大对区块链技术和应用感兴趣的同学。通过这门课的学习能够掌握比特币、以太坊等区块链技术的设计思路并有效解决实际问题。 《区块链从数字货币到信用社会中信出版社图书》书籍 本书作者之一是巴比特创始人长铗这本书较为系统的对区块链的历史和现状做了讲解并有专门的章节来介绍智能合约和区块链的应用场景。是一本很好的了解区块链基础知识的数据。 基础学习到什么程度 学习基础知识特别容易刨根问底区块链同时又是涵盖密码学、计算机科学等领域的技术综合体如果深入了解下去可能会让学习者失去学习的兴趣。那么作为一名区块链开发者你需要学习到什么程度呢我个人认为在学习完基础知识部分后你需要能够回到出以下的问题即可 区块链到底是什么它具有什么特点 区块链在技术上大致是如何实现的 区块链的共识机制是什么共识机制解决了什么问题有什么常见的共识机制 区块链的存储规则和常见的数据库有什么不同 PoW、PoS、DPoS这几个共识机制的原理、特点是什么 除了数字货币常见的区块链的应用类型有哪些 你可以带着这些问题结合上面推荐的资料学习这样效果会更好。 了解区块应用生态 基础知识的学习对于大多数人而言注定是枯燥乏味的在学习区块链的同时不妨同时了解一下现在国内外有哪些具体的应用。你也许有听过几个应用了例如MetaMask最知名的区块链钱包Stepn一个能购买跑鞋跑步会赚取收益的Dapp、Axie Infinity一款神奇宝贝主题的区块链游戏、NBA TopShotNBA官方验证的NFT、OpenSea全球最大的NFT交易市场等等。 了解这些基于区块链的Dapp能够让我们更加直观的认识到区块链的应用场景。还有什么比直接使用到能够交互的应用程序更为直观的呢在你了解的过程中你还会发现如今区块链生态的繁荣目前有很多的Dapp不是在以太坊这一条链上运行的了还有BNB Chain、SOLONA、TRON等众多公链生态。 这里推荐每位开发者都通过dappradar.com探索一下Dapp生态这个网站可以类比苹果生态中的Apple StoreDappRadar就是Web3世界Apple Store。而且这个网站的Blog质量极高有很多优秀的博客文章和专业的区块链调研报告。 以太坊相关技术 了解完区块链的基础知识这个时候就应该到了技术学习的环节。正如前文中提到的对于新手开发者而言学习区块链的最佳方式是从以太坊入手。下面我们就来看一下学习以太坊生态的相关技术栈。 以太坊开发者基础 在学习具体的技术前以太坊的基础知识和概念是需要掌握的。学习这方面的知识唯一推荐的资料就是以太坊官网。你基本可以在官网上找到太坊生态所有技术的学习资料 以太坊开发者文档通俗的介绍了以太坊的相关概念账户、区块、EVM、Gas、智能合约、共识机制等同时以太坊的国际化做得也很优秀文档支持46种语言翻译由社区进行维护。 在官方文档的阅读过程中EVM、Gas、智能合约等部分是需要重点掌握的。 Metamask 在以太坊编写智能合约之前如果你还没有下载一个区块链钱包并尝试完成一笔交易你可能无法体会到区块链交易的便利性也不能直观的感受到Gas费用的无处不在。在这之前你可以尝试下载安装MetaMask这个区块链钱包来完成一笔交易。 你可以直接在浏览器上安装MetaMask插件并且切换到相应的测试网络。如果你在测试网络上没有任何的ETH你可以从下面的Facuet网站获取以太币都是基于rinkeby测试网络的 ●Sepolia Faucet - Get Testnet TokensRinkeby测试网络 ●https://www.rinkeby.io/#faucetRinkeby测试网络 ●https://faucet.metamask.io/ Facuet测试网络 Solidity语言 智能合约 智能合约是Dapp开发的最重要的环节智能合约本质是开发者发布在 EVM 内存中的可重用代码片段程序它同时也是一个以太坊账户。任何人都可以通过“交易”来触发并执行智能合约。 能够编写智能合约的语言不止一种包括Solidity、Vyper、Yul等。但Solidity基本是绝大多数开发者和企业用来编写智能合约的唯一语言所以Solidity是你成为区块链开发者必须学习的一门语言。 你可以从以下资料中学习Solidity ●Solidity官方文档 ●Solidity中文文档-登链社区 ●基于以太坊的智能合约开发教程【Solidity】 - 千峰教育 ●Solidity-workshop - Github ●#1 Solidity Tutorial Ethereum Blockchain Programming Course | CryptoZombies一个在线游戏来学习语言和Dapp 在学习Solidity和智能合约过程中你需要一款IED去编写你的代码这边我推荐Remix。 Remix是一款基于浏览器的IDE使用Remix可以省去你安装Solidity运行环境的繁琐流程。Remix基本提供了你编写Solidity智能合约的所有功能 ●代码高亮 ●代码调试 ●代码编译 ●日志输出 ●钱包连接发送交易 ●合约部署 web3.js ethers.js web3.js和ethers.js这两个库都是用来和以太坊节点通信的两个JavaScript库。在Dapp的开发中这两个库都是常会被使用到的。你可以通过这两个库来完成一系列的功能 ●连接钱包 ●查询余额 ●发送交易 ●部署智能合约 ●查询区块信息 ●调用函数 在Dapp的开发中使用两个库的API功能大部分都是相同的你可以选择其中的一个即可。相对而言ethers.js对比使用 web3.js 代码量更少接口也更简洁个人推荐优先使用 ethers.js 。 相关文档地址如下 ●web3.js官方文档 ●web3.js中文文档-登链社区 ●ethers.js官方文档 ●ethers.js中文文档-登链社区 Truffle框架 正如我们编写前端应用会使用到React、Vue这样的前端框架编写后端Node.js应用会使用Nest.js或者Egg.js后端框架一样。社区里面编写Dapp框架最常使用的框架就Truffle。 Truffle具有以下功能 ●内置智能合约编译链接部署和二进制文件管理。 ●可快速开发自动化智能合约测试框架。 ●可脚本化、可扩展的部署和迁移框架。 ●可管理多个不同的以太坊网络可部署到任意数量的公共主网和私有网络。 ●使用 ERC190 标准使用EthPM 和 NPM 进行包装管理。 ●支持通过命令控制台直接与智能合约进行交互。 ●可配置的构建管道支持紧密集成。 ●支持在Truffle环境中使用外部脚本运行器执行脚本。 相关资料如下 ●Truffle官方文档 ●Truffle中文文档该文档已经比较久没有更新了建议查看官网 Truffle的套件中还提供了一个非常有用的应用Ganache。通过这个应用你可以一键创建你的区块链网络方便你在这个区块链网络中开发、部署和测试你的Dapp。 HardHat同样也是以太坊社区里面使用量比较大的框架就像前端中文社区里面Vue和React之争一样在以太坊社区HardHard也经常被用来和Truffle做对比。你可以把HardHat当做Truffle的一个替代框架去学习并选择一个适合你的框架去编写Dapp。 如果你想了解更多的以太坊框架可以查看去中心化应用程序开发框架 | ethereum.org ERC-20 如果你的Dapp有创建自己加密货币的需求那么ERC-20标准就是你必须了解的ERC-20 使用以太坊上最重要的智能合约标准之一。是用于实现可替换通证的智能合约技术标准。 ERC-20 提供的示例功能 ●将代币从一个账户转移到另一个账户 ●获取账户的当前代币余额 ●获取网络上可用代币的总供应量 ●批准一个账户的一定数量的代币是否可以被第三方账户消费 ERC-20相关资料 ●ERC-20 代币标准 ●以太坊官网-ERC-20 代币标准 ●了解ERC-20通证智能合约 智能合约库 在编写较为复杂的智能合约时你完全没有必要从0到1编写你的智能合约库社区里面提供了许多的智能合约库供你使用。你完全可以复用这些库或者继承它们。 使用智能合约库不仅仅能节约的时间社区里面头部的智能合约库的安全性是有保障的引入它们能够确保你关键交易的安全性。 相关智能合约库资料 ●OpenZeppelin 合约安全的智能合约开发库最广泛使用的库必学 ●DappSys智能合约构建模块能够解决常见的问题例如白名单、认证、Upgradable ERC20-token ●HQ20一个带有合约、库和案例的Solidity 项目帮助您为现实世界建立功能齐全的分布式应用 ●以太坊官网-智能合约库 智能合约安全 智能合约的安全性怎么强调都不为过。因为智能合约部署后不能修改的特性这让智能合约中的漏斗变得极为危险。我相信你已经听过了以太坊分叉的故事也听到过很多盗窃资产的事件发生。 所以在你把智能合约部署到以太坊主网之前确保的智能合约的安全性对其进行测试和安全性分析是非常重要的。同时了解一些常见的智能合约攻击手段也是必要的就像你作为一名web开发者需要了解基本的XSS攻击、CSRF攻击等一样。 相关智能合约安全性资料 ●Slither用Python 3 编写的 Solidity 静态分析框架 ●MythX以太坊智能合约的安全分析应用程序接口 ●Mythril以太坊虚拟机字节码安全分析工具 ●Manticore在智能合约和二进制文件上使用符号执行工具的命令行界面 ●Verifier于检查合约是否符合ERC20 标准的验证工具 ●Slither和Mythril智能合约分析工具 ●智能合约安全清单 ●安全性建议和最佳做法合集 总结 上面的所有内容学习完成你就是一名合格的区块链Dapp开发者了。你能够编写安全、规范的智能合约并且能够将智能合约部署在以太坊网络上再通过web3.js或ethers.js调用的方式进行智能合约和Dapp的交互实现整个Dapp的开发打通。 如果你想在区块链开发上更进一步此时你需要考虑的就会更多了例如你可能发现链上交易的Gas费用越来越高此时你需要考虑优化你的智能合约来降低每笔交易的Gas费用。你可能还需要使用到Layer2、多链或者侧链等扩展方案学习Optimistic Rollups、ZKRollup等扩容工具。这部分内容就不在这篇文章里面介绍了。