关于以太坊交易数据结构的知识:
https://learnblockchain.cn/article/2517
https://learnblockchain.cn/2018/01/04/understanding-smart-contracts/
了解ContractTransactionResponse里字段的含义,以太坊交易原理,交易的data字段。
以太坊交易回执-receipt: https://learnblockchain.cn/books/geth/part1/receipt.html
根据txhash查询交易的方法:https://docs.ethers.org/v6/api/providers/#Provider-getTransaction
深入Solidity数据存储位置: https://learnblockchain.cn/article/4864
一边从学习一些例子开始,再一边学习理论和原理是个比较好的实践方式:
https://solidity-by-example.org/
https://learnblockchain.cn/docs/solidity/solidity-by-example.html
什么是交易hash,什么是区块hash :
https://www.jb51.net/blockchain/891465.html
进行一笔以太坊交易时涉及的哈希计算 - 知乎 (zhihu.com)
Solidity开发文档:
https://docs.soliditylang.org/zh/latest/control-structures.html
Solidity开源教程
https://hicoldcat.com/posts/web3/learn-solidity-handbook-5/
GitHub solidity-expert/cn at main · dukedaily/solidity-expert
GitHub - AmazingAng/WTF-Solidity
ethers.js文档:
https://docs.ethers.org/v6/
《Next 13, Ethers v6, Hardhat — modern local blockchain development.》
https://medium.com/@evergreen.terranc3/next-13-ethers-v6-hardhat-modern-local-blockchain-development-4d4e85118c97
介绍使用nextjs 13, ethers v6, hardhat这个组合开发DApp的方法,并提供了一个脚手架。从这里可以学习nextjs前端程序配合钱包provider连接区块链合约这一套架构的开发方法。
1、不用前端钱包,调试开发测试合约(甚至直接调用mainnet上的正式合约)则是用基于nodejs的hardhat集成的ethers.js去调用Quicknode或者Alchemy这种rpc平台Provider,通过后者去调用链上的合约。
2、使用前端钱包、例如MetaMask这种Provider,那么就是nextjs开发的前端程序提供用户交互功能、以及通过ethers.js与钱包进行交互,通过钱包去调用链上的合约。
DApp架构,开发实践指南:
https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application
https://guoyu.mirror.xyz/RD-xkpoxasAU7x5MIJmiCX4gll3Cs0pAd5iM258S1Ek 《Web3 DApp最佳编程实践指南》
https://www.liaoxuefeng.com/article/1529816679448611 Web3全栈开发指南
Hardhat框架:
https://hardhat.org/docs
作用是帮助开发、测试、部署Solidity合约,但是用来完成这些工作的框架脚本是JS/TS (这个框架是基于nodejs的),所以对前端开发比较友好。
https://hardhat.org/tutorial/final-thoughts
Solidity智能合约开源教程:
https://github.com/AmazingAng/WTF-Solidity/
https://github.com/dukedaily/solidity-expert
这30个以太坊开发示例,让你成为80万都挖不走的区块链人才! | 登链社区 | 区块链技术社区 (learnblockchain.cn)
学习前端开发:
JavaScript、TypeScript, react, vue, nextjs等
web app的前端和后端都用nextjs + Vercel来做:
https://react.dev/learn/tutorial-tic-tac-toe
https://www.nextjs.cn/learn/basics/create-nextjs-app
笔记:
使用hardhat/ethers.js调用已经存在的合约 - 肥兔子爱豆畜子 - 博客园 (cnblogs.com)
以太坊dApp入门开发 - 肥兔子爱豆畜子 - 博客园 (cnblogs.com)
https://juejin.cn/post/7138072108516507661 一个web3开发入门历程
开发流程:
基于目前的学习成果,理一下目前的开发流程:
1、用hardhat编写和调试solidity合约,然后部署到正式或测试网上。
(1). 开发智能合约的时候可以借助OpenZeppelin等智能合约库。
(2). 可以用hardhat模拟的本地网络做测试。
(3). 如果要发布到mainnet或者其他公共测试网,可以用通过调用Alchemy、QuickNode等公共基础设施来进行部署,和调用链上合约的方法。
2、用react等框架开发前端工程代码,部署在服务器上
3、前端除了普通的web2功能之外,区别主要是两个:
(1). 前端代码与本地浏览器钱包交互(如MetaMask),主要是做sign,用ethers.js
(2). 前端代码通过浏览器插件钱包来切换需要请求的网络,比如主网、测试网等。钱包相当于一个连入区块链网络的轻量化节点。