關(guān)于以太坊交易數(shù)據(jù)結(jié)構(gòu)的知識(shí):
https://learnblockchain.cn/article/2517
https://learnblockchain.cn/2018/01/04/understanding-smart-contracts/
了解ContractTransactionResponse里字段的含義豌骏,以太坊交易原理,交易的data字段。
以太坊交易回執(zhí)-receipt: https://learnblockchain.cn/books/geth/part1/receipt.html
根據(jù)txhash查詢交易的方法:https://docs.ethers.org/v6/api/providers/#Provider-getTransaction
深入Solidity數(shù)據(jù)存儲(chǔ)位置: https://learnblockchain.cn/article/4864
一邊從學(xué)習(xí)一些例子開(kāi)始赶么,再一邊學(xué)習(xí)理論和原理是個(gè)比較好的實(shí)踐方式:
https://solidity-by-example.org/
https://learnblockchain.cn/docs/solidity/solidity-by-example.html
什么是交易hash佩耳,什么是區(qū)塊hash :
https://www.jb51.net/blockchain/891465.html
進(jìn)行一筆以太坊交易時(shí)涉及的哈希計(jì)算 - 知乎 (zhihu.com)
Solidity開(kāi)發(fā)文檔:
https://docs.soliditylang.org/zh/latest/control-structures.html
Solidity開(kāi)源教程
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這個(gè)組合開(kāi)發(fā)DApp的方法恕刘,并提供了一個(gè)腳手架峻凫。從這里可以學(xué)習(xí)nextjs前端程序配合錢包provider連接區(qū)塊鏈合約這一套架構(gòu)的開(kāi)發(fā)方法愕撰。
1矮湘、不用前端錢包斟冕,調(diào)試開(kāi)發(fā)測(cè)試合約(甚至直接調(diào)用mainnet上的正式合約)則是用基于nodejs的hardhat集成的ethers.js去調(diào)用Quicknode或者Alchemy這種rpc平臺(tái)Provider,通過(guò)后者去調(diào)用鏈上的合約缅阳。
2磕蛇、使用前端錢包、例如MetaMask這種Provider十办,那么就是nextjs開(kāi)發(fā)的前端程序提供用戶交互功能秀撇、以及通過(guò)ethers.js與錢包進(jìn)行交互,通過(guò)錢包去調(diào)用鏈上的合約向族。
DApp架構(gòu)呵燕,開(kāi)發(fā)實(shí)踐指南:
https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application
https://guoyu.mirror.xyz/RD-xkpoxasAU7x5MIJmiCX4gll3Cs0pAd5iM258S1Ek 《Web3 DApp最佳編程實(shí)踐指南》
https://www.liaoxuefeng.com/article/1529816679448611 Web3全棧開(kāi)發(fā)指南
Hardhat框架:
https://hardhat.org/docs
作用是幫助開(kāi)發(fā)、測(cè)試件相、部署Solidity合約再扭,但是用來(lái)完成這些工作的框架腳本是JS/TS (這個(gè)框架是基于nodejs的),所以對(duì)前端開(kāi)發(fā)比較友好夜矗。
https://hardhat.org/tutorial/final-thoughts
Solidity智能合約開(kāi)源教程:
https://github.com/AmazingAng/WTF-Solidity/
https://github.com/dukedaily/solidity-expert
學(xué)習(xí)前端開(kāi)發(fā):
JavaScript侯养、TypeScript敦跌, react, vue, nextjs等
web app的前端和后端都用nextjs + Vercel來(lái)做:
https://react.dev/learn/tutorial-tic-tac-toe
https://www.nextjs.cn/learn/basics/create-nextjs-app
筆記:
使用hardhat/ethers.js調(diào)用已經(jīng)存在的合約 - 肥兔子愛(ài)豆畜子 - 博客園 (cnblogs.com)
以太坊dApp入門開(kāi)發(fā) - 肥兔子愛(ài)豆畜子 - 博客園 (cnblogs.com)
https://juejin.cn/post/7138072108516507661 一個(gè)web3開(kāi)發(fā)入門歷程
開(kāi)發(fā)流程:
基于目前的學(xué)習(xí)成果,理一下目前的開(kāi)發(fā)流程:
1柠傍、用hardhat編寫和調(diào)試solidity合約麸俘,然后部署到正式或測(cè)試網(wǎng)上。
(1). 開(kāi)發(fā)智能合約的時(shí)候可以借助OpenZeppelin等智能合約庫(kù)惧笛。
(2). 可以用hardhat模擬的本地網(wǎng)絡(luò)做測(cè)試从媚。
(3). 如果要發(fā)布到mainnet或者其他公共測(cè)試網(wǎng),可以用通過(guò)調(diào)用Alchemy患整、QuickNode等公共基礎(chǔ)設(shè)施來(lái)進(jìn)行部署拜效,和調(diào)用鏈上合約的方法。
2各谚、用react等框架開(kāi)發(fā)前端工程代碼紧憾,部署在服務(wù)器上
3、前端除了普通的web2功能之外昌渤,區(qū)別主要是兩個(gè):
(1). 前端代碼與本地瀏覽器錢包交互(如MetaMask)赴穗,主要是做sign,用ethers.js
(2). 前端代碼通過(guò)瀏覽器插件錢包來(lái)切換需要請(qǐng)求的網(wǎng)絡(luò)膀息,比如主網(wǎng)般眉、測(cè)試網(wǎng)等。錢包相當(dāng)于一個(gè)連入?yún)^(qū)塊鏈網(wǎng)絡(luò)的輕量化節(jié)點(diǎn)潜支。