来一起学习 Speed Run Ethereum 吧

自我介绍的时候也有提到,我是翻译一个 Speed Run Ethereum 相关的视频来到 LXDAO。想着这边应该比较能找到一起学习的同好,如果能有两个伙伴,三个人一起学应该比较理想。

介绍Speed Run Ethereum课程

大概是一个以太坊上的 dApp 开发课程,应该比较适合有一定 Web 开发基础,但又没怎么使用过 solidity 的朋友。形式上是一个一个 Challenge,每一个 Challenge 实现一个小 dApp。

课程项目使用的是 Scaffold-ETH 2 这个框架,用到较多 react 的前端知识。学习过程中,预计也会遇到问题,可以发出来,相信 LXDAO 里会有更多开发经验的伙伴也能帮忙解惑;记录下如何解决这些问题应该也蛮有意义。公开学习的过程,应该学起来也更有动力。

计划

我计划是能先完成前 3 个 Challenge,进度我们灵活安排,每周投入 2~3 小时样子

  • Simple NFT Example
  • Decentralized Staking App
  • Token Vendor
1 Like

我没有什么web开发基础,但是有一些solidity的知识,可以来一起学嘛

当然欢迎呀 :smiley:

可以帮助解答 solidity 方面的问题,自己也可以体验下前端特别是 react 方面的开发。

应该比较适合有一定 Web 开发基础,但又没怎么使用过 solidity 的朋友

确实,我想在 LXDAO 这边的伙伴们应该是会对 crypto 已经比较熟悉了。其实可以在程序员的社群招募同学,帮助大家了解 crypto,最好能加入 LXDAO :laughing:

我之前是稍稍体验过 第一代的 scaffold-eth,一代的框架主要是 Austin 一个人写的,也没有用 typescript,代码逻辑实现方面可能也更朴素些,可能新人上手更快。

记得在那个访谈视频里 Austin 也有提到,基于一代 scaffold-eth 的成品更像 prototype,所以二代在开发水准方面更提高了。当然这也是个 trade-off,需要在教育向的新人上手难度和成品的产品化程度之间有所取舍。


我自己的 react 使用经验基本停留在 Component API 阶段,也正好趁此机会学习下 react 的新 API :nerd_face:

那我也可以去社区宣发一下你的这个学习小组,看看要不要更多人来一起参加,

1 Like

可以发起一个共学小组,相互监督,然后产出一些内容输出。之后可以获得一些奖励,运营组 bounty 可以出。

2 Likes

昨天和阿车语音交流过,Challenge #0 阿车已经完成过啦,我自己也要加油开始咯。对学习 dApp 开发有兴趣的话也可以随时加入,期待认识更多新同学喔

1 Like

是的,从我做过的第一个challenge 来看,并没有特别难,很适合入门的新手来尝试 ,这样的小项目趣味性也很高

不错的建议。共学小组很有成立的必要,学习任何知识

提交了 Challenge #0,没通过 :cry:

https://speedruneth-challenge0.vercel.app/myNFTs

使用 sepolia testnet,欢迎大家来 mint :stuck_out_tongue_winking_eye:

好奇这个 dApp 判定系统是怎么运作的

提交后反馈 This submission did not pass all tests. Review the output below to see which tests failed and why. Viewing the file that is used for testing (packages/hardhat/test/Challenge0.ts) may help you find the exact section in which the tests failed.

After fixing the issues please resubmit the challenge. If you are still having issues, join the challenge Telegram channel.

TypeError: Function has override specified but does not override anything.
→ contracts/download-0x36efdc7f9e2ee2c2084c5aace8070ae711f9b04e.sol:40:13:
|
40 | ) internal override(ERC721, ERC721Enumerable) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

TypeError: Invalid contracts specified in override list: “ERC721” and “ERC721Enumerable”.
→ contracts/download-0x36efdc7f9e2ee2c2084c5aace8070ae711f9b04e.sol:40:13:
|
40 | ) internal override(ERC721, ERC721Enumerable) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: This contract:
@openzeppelin/contracts/token/ERC721/ERC721.sol:19:1:
|
19 | contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
| ^ (Relevant source part starts here and spans across multiple lines).
Note: This contract:
@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:14:1:
|
14 | abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
| ^ (Relevant source part starts here and spans across multiple lines).

TypeError: Function needs to specify overridden contract “ERC721URIStorage”.
→ contracts/download-0x36efdc7f9e2ee2c2084c5aace8070ae711f9b04e.sol:58:16:
|
58 | ) public view override(ERC721, ERC721Enumerable) returns (bool) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: This contract:
@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:12:1:
|
12 | abstract contract ERC721URIStorage is IERC4906, ERC721 {
| ^ (Relevant source part starts here and spans across multiple lines).

TypeError: Derived contract must override function “_beforeTokenTransfer”. Two or more base classes define function with same name and parameter types.
→ contracts/download-0x36efdc7f9e2ee2c2084c5aace8070ae711f9b04e.sol:10:1:
|
10 | contract YourCollectible is
| ^ (Relevant source part starts here and spans across multiple lines).
Note: Definition in “ERC721”:
@openzeppelin/contracts/token/ERC721/ERC721.sol:437:5:
|
437 | function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: Definition in “ERC721Enumerable”:
@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:60:5:
|
60 | function _beforeTokenTransfer(
| ^ (Relevant source part starts here and spans across multiple lines).

TypeError: Wrong argument count for function call: 3 arguments given but expected 4.
→ contracts/download-0x36efdc7f9e2ee2c2084c5aace8070ae711f9b04e.sol:41:3:
|
41 | super._beforeTokenTransfer(from, to, tokenId);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error HH600: Compilation failed
HardhatError: HH600: Compilation failed
at SimpleTaskDefinition.action (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/builtin-tasks/compile.ts:499:15)
at async Environment._runTaskDefinition (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/internal/core/runtime-environment.ts:358:14)
at async OverriddenTaskDefinition._action (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/@typechain/hardhat/src/index.ts:28:30)
at async Environment._runTaskDefinition (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/internal/core/runtime-environment.ts:358:14)
at async Environment.run (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/internal/core/runtime-environment.ts:191:14)
at async SimpleTaskDefinition.action (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/builtin-tasks/compile.ts:1424:63)
at async Environment._runTaskDefinition (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/internal/core/runtime-environment.ts:358:14)
at async Environment.run (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/internal/core/runtime-environment.ts:191:14)
at async SimpleTaskDefinition.action (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/builtin-tasks/compile.ts:1504:7)
at async Environment._runTaskDefinition (/home/ubuntu/speedrun-grader/challenge-0-simple-nft/packages/hardhat/node_modules/hardhat/src/internal/core/runtime-environment.ts:358:14)