อัปเดต: มุ่งหน้าไปยัง Cyfrin Updraft
สำคัญ: repo นี้ไม่ได้รับการดูแลอย่างแข็งขันอีกต่อไปเนื่องจากมีการเปลี่ยนแปลงในเครื่องมือ Hardhat วิดีโอไม่ได้ซิงค์กับรหัสและคุณยังสามารถติดตามพร้อมกับวิดีโอได้ แต่คุณอาจต้องแก้ไขปัญหาการเปลี่ยนแปลงในเครื่องมือและการพึ่งพา โปรดทราบว่าแนวทางปฏิบัติที่ดีที่สุดมีการพัฒนาตั้งแต่วิดีโอนี้
หากคุณต้องการฝึกอบรมต่อไปด้วยวัสดุที่ทันสมัยมากขึ้นคุณสามารถดู Cyfrin Updraft ได้ เนื้อหานั้นได้รับการพัฒนาด้วยความรักโดย Patrick & Cyfrin <3 อย่างไรก็ตามโปรดทราบว่าการฝึกอบรม Cyfrin Updraft ใช้โรงหล่อไม่ใช่ hardhat ดังนั้นจะมีการเปลี่ยนแปลงเครื่องมือที่เกี่ยวข้อง
Web3, Full Stack Solidity, Smart Contract & Blockchain - เริ่มต้นจากผู้เชี่ยวชาญ Ultimate Course | JavaScript Edition

ยินดีต้อนรับสู่ที่เก็บสำหรับ Ultimate Web3 ความแข็งแกร่งของสแต็กเต็มรูปแบบและสัญญาอัจฉริยะ - เริ่มต้นจากผู้เชี่ยวชาญเต็มหลักสูตร | JavaScript Edition หลักสูตร FreeCodecamp!
ลิงก์ไปยังวิดีโอ: https://www.youtube.com/watch?v=GyMWXUJRBJQ
การอ้างอิงโค้ดทั้งหมดมีทั้ง JavaScript และ TypeScript Edition
Testnet ที่แนะนำ: Sepolia
เราได้อัปเดต repos เพื่อทำงานร่วมกับ Sepolia เนื่องจาก Rinkeby และ Kovan เป็นพระอาทิตย์ตกดินและ Goerli เป็นหายนะ แจ้งให้เราทราบหากการเปลี่ยนแปลงใด ๆ ทำลายสิ่งต่างๆ!
testnet faucets
Faucet หลัก: https://faucets.chain.link การสำรองข้อมูล faucet: https://sepoliafaucet.com/
รหัสทั้งหมดที่เกี่ยวข้องกับหลักสูตรนี้มีวัตถุประสงค์เพื่อการสาธิตเท่านั้น พวกเขายังไม่ได้รับการตรวจสอบและไม่ควรพิจารณาการผลิตพร้อม โปรดใช้ความเสี่ยงของคุณเอง
ทรัพยากรสำหรับหลักสูตรนี้
คำถาม
- การอภิปรายของ GitHub
- ถามคำถามและพูดคุยเกี่ยวกับหลักสูตรที่นี่!
- Ethereum แลกเปลี่ยนสแต็ก
- สถานที่ที่เหมาะสำหรับการถามคำถามทางเทคนิคเกี่ยวกับ Ethereum
- stackoverflow
- สถานที่ที่เหมาะสำหรับการถามคำถามทางเทคนิคโดยรวม
สารบัญ
ทรัพยากร
- testnet faucets
- ทรัพยากรสำหรับหลักสูตรนี้
- สารบัญ
บทเรียนที่ 0: ขอบของรูกระต่าย
- ยินดีต้อนรับสู่หลักสูตร!
- แนวทางปฏิบัติที่ดีที่สุด
บทเรียนที่ 1: พื้นฐาน blockchain
- blockchain คืออะไร? blockchain ทำอะไร?
- วัตถุประสงค์ของสัญญาอัจฉริยะ
- ผลประโยชน์ blockchain อื่น ๆ
- มีสัญญาอัจฉริยะอะไรบ้าง?
- ทำธุรกรรมครั้งแรกของคุณ
- ก๊าซ I: บทนำสู่แก๊ส
- blockchains ทำงานอย่างไร?
- การลงนามในธุรกรรม
- ก๊าซ II
- พื้นฐานบล็อกเชนระดับสูง
บทที่ 2: ยินดีต้อนรับสู่รีมิกซ์! ที่เก็บข้อมูลง่ายๆ
- การแนะนำ
- การตั้งค่าสัญญาแรกของคุณ
- ความแข็งแกร่งพื้นฐาน: ประเภท
- ความแข็งแกร่งพื้นฐาน: ฟังก์ชั่น
- ความแข็งแกร่งขั้นพื้นฐาน: อาร์เรย์และโครงสร้าง
- ความแข็งแกร่งพื้นฐาน: ข้อผิดพลาดของคอมไพเลอร์และคำเตือน
- หน่วยความจำ, ที่เก็บ, calldata (อินโทร)
- การทำแผนที่
- ปรับใช้สัญญาแรกของคุณ
- EVM & A สรุปบทเรียนที่ 2
บทที่ 3: โรงงานจัดเก็บรีมิกซ์
- การแนะนำ
- ความแข็งแกร่งขั้นพื้นฐาน: การนำเข้าสัญญาเข้าสู่สัญญาอื่น ๆ
- ความแข็งแกร่งขั้นพื้นฐาน: การโต้ตอบกับสัญญาอื่น ๆ
- ความแข็งแกร่งขั้นพื้นฐาน: การสืบทอดและการแทนที่
- บทเรียนที่ 3 สรุป
บทที่ 4: Remix Fund Me
- การแนะนำ
- การส่ง ETH ผ่านฟังก์ชั่นและการเปลี่ยนกลับ
- chainlink & oracles
- ทบทวนการส่ง ETH และทำงานกับ ChainLink
- อินเทอร์เฟซและฟีดราคา
- การนำเข้าจาก GitHub & NPM
- คณิตศาสตร์จุดลอยตัวในความแข็งแกร่ง
- ความแข็งแกร่งพื้นฐาน: อาร์เรย์และโครงสร้าง II
- การทบทวน Interfacs การนำเข้าจาก GitHub และคณิตศาสตร์ในความแข็งแกร่ง
- ห้องสมุด
- Safemath, การตรวจสอบล้นและ keywork "ไม่ถูกตรวจสอบ"
- ความแข็งแกร่งพื้นฐาน: สำหรับลูป
- ความแข็งแกร่งขั้นพื้นฐาน: การรีเซ็ตอาร์เรย์
- การส่ง ETH จากสัญญา
- ความแข็งแกร่งพื้นฐาน: ตัวสร้าง
- ความแข็งแกร่งพื้นฐาน: ตัวดัดแปลง
- Demo Testnet
- ความแข็งแกร่งขั้นสูง
- ไม่เปลี่ยนรูปและคงที่
- ข้อผิดพลาดที่กำหนดเอง
- ฟังก์ชั่นรับและทางเลือก
- บทเรียน 4 สรุป
บทที่ 5: ethers.js ที่เก็บข้อมูลง่ายๆ
- กลยุทธ์การดีบักที่มีประสิทธิภาพและขอความช่วยเหลือ
- การติดตั้งและการตั้งค่า
- การตั้งค่า Mac & Linux
- การตั้งค่า Windows
- Gitpod
- บทนำการพัฒนาท้องถิ่น
- ทบทวนจาวาสคริปต์เล็ก ๆ
- การเขียนโปรแกรมแบบอะซิงโครนัสใน JavaScript
- รวบรวมความแข็งแกร่งของเรา
- Ganache & Networks
- รู้เบื้องต้นเกี่ยวกับ ethers.js
- หมายเหตุเกี่ยวกับคำหลักรอ
- การเพิ่มการแทนที่ธุรกรรม
- ใบเสร็จรับเงิน
- การส่งธุรกรรม "ดิบ" ใน Ethersjs
- โต้ตอบกับสัญญาใน Ethersjs
- ตัวแปรสภาพแวดล้อม
- การจัดการคีย์ส่วนตัวที่ดีขึ้น
- การจัดรูปแบบที่สวยงามเป็นทางเลือก
- การปรับใช้กับ testnet หรือ mainnet
- การตรวจสอบบนบล็อกนักสำรวจจาก UI
- Dashboard Alchemy & The Mempool
- บทเรียนที่ 5 สรุป
- TypeScript Ethers จัดเก็บอย่างง่าย
บทที่ 6: Hardhat Simple Storage
- การแนะนำ
- การตั้งค่า Hardhat
- การแก้ไขปัญหาการตั้งค่า Hardaht
- การตั้งค่า Hardhat ยังคงดำเนินต่อไป
- การปรับใช้งานง่ายๆจาก hardhat
- เครือข่ายใน hardhat
- การตรวจสอบโปรแกรม
- โต้ตอบกับสัญญาใน Hardhat
- สิ่งประดิษฐ์การแก้ไขปัญหา
- งาน hardhat ที่กำหนดเอง
- hardhat localhost node
- คอนโซล hardhat
- การทดสอบ hardhat
- นักข่าวก๊าซ Hardhat
- ความครอบคลุมของความแข็งแกร่ง
- ฮาร์ดฮัตวาฟเฟิล
- บทเรียน 6 สรุป
- TypeScript Hardhat Simple Storage
บทที่ 7: Hardhat Fund Me
- การแนะนำ
- การตั้งค่า Hardhat - ให้ทุนฉัน
- การเป็นผ้าสำลี
- การตั้งค่า Hardhat - ให้กองทุนฉัน - ต่อ
- การนำเข้าจาก NPM
- Hardhat ปรับใช้
- เยาะเย้ย
- โฟลเดอร์ Utils
- Testnet Demo - Hardhat Fund Me
- คู่มือสไตล์ความแข็งแกร่ง
- ทดสอบกองทุนฉัน
- จุดพักและการดีบัก
- GAS III:
- console.log & debugging
- กองทุนทดสอบฉัน II
- การจัดเก็บในความแข็งแกร่ง
- การเพิ่มประสิทธิภาพก๊าซโดยใช้ความรู้การจัดเก็บ
- คู่มือสไตล์ chainlink ที่มีความแข็งแกร่ง
- รีวิวการจัดเก็บข้อมูล
- การทดสอบการแสดงละคร
- รันสคริปต์บนโหนดท้องถิ่น
- การเพิ่มสคริปต์ลงในแพ็คเกจของคุณ json
- ผลักไปที่ GitHub
- - ทวีตฉัน (เพิ่ม repo ของคุณ)!
บทที่ 8: HTML / JavaScript Fund Me (Full Stack / Front End)
- การแนะนำ
- เว็บไซต์ทำงานอย่างไรกับ web3 wallets
- การตั้งค่า HTML
- การเชื่อมต่อ HTML กับ Metamask
- JavaScript ในไฟล์ของตัวเอง
- ES6 vs nodejs
- การส่งธุรกรรมจากเว็บไซต์
- การรีเซ็ตบัญชีใน Metamask
- การฟังกิจกรรมและการทำธุรกรรมที่เสร็จสมบูรณ์
- แบบฟอร์มอินพุต
- อ่านจาก blockchain
- ถอนฟังก์ชั่น
- บทเรียนที่ 8 สรุป
บทที่ 9: Hardhat Smart Contract Lottery
- การแนะนำ
- การตั้งค่า Hardhat - ลอตเตอรีสัญญาอัจฉริยะ
- Raffle.sol ตั้งค่า
- รู้เบื้องต้นเกี่ยวกับเหตุการณ์
- กิจกรรมใน Raffle.sol
- รู้เบื้องต้นเกี่ยวกับ chainlink vrf
- บทเรียนย่อย: chainlink vrf
- การใช้งาน ChainLink VRF - บทนำ
- การใช้งาน ChainLink VRF - คำขอ
- การใช้งาน chainlink vrf - การเติมเต็ม
- รู้เบื้องต้นเกี่ยวกับ Chainlink Keepers
- การใช้งาน ChainLink Keepers - CheckupKeep
- การใช้งาน ChainLink Keepers - CheckupKeep ยังคงดำเนินต่อไป
- การใช้งาน ChainLink Keepers - PerformUpKeep
- การล้างรหัส
- การปรับใช้ Raffle.sol
- ผู้ประสานงาน MockLink VRF
- ต่อเนื่อง
- การทดสอบหน่วย Raffle.sol
- การทดสอบกิจกรรมและการจับคู่ชัย
- ฉันดำเนินการต่อ
- วิธีการ hardhat และการเดินทางข้ามเวลา
- callstatic
- ต่อเนื่อง III
- การทดสอบสัญญาขนาดใหญ่
- IV ต่อเนื่อง
- Raffle.sol การทดสอบการจัดเตรียม
- การทดสอบบน testnet
- จำนวนลิงค์ที่แนะนำสำหรับการทดสอบการจัดเตรียมเซปิเลีย:
- บทสรุป
- TypeScript - ลอตเตอรีสัญญาอัจฉริยะ
บทเรียนที่ 10: NextJS Smart Contract Lottery (Full Stack / Front End)
- การแนะนำ
- บทเสริมย่อย: การพัฒนาสแต็กเต็มรูปแบบและห้องสมุดอื่น ๆ
- การตั้งค่า nextjs
- ส่วนหัวด้วยตนเอง i
- ส่วนหัวด้วยตนเอง II
- hook useeffect
- ที่เก็บข้อมูลท้องถิ่น
- ISWEB3ENABLELINGING
- web3uikit
- บทนำเกี่ยวกับฟังก์ชั่นการโทรใน nextjs
- ค่าคงที่อัตโนมัติ UI updater
- runcontractfunction
- ใช้งาน
- ฟังก์ชั่นการโทรใน nextjs
- การทำให้เป็นระเบียบ
- การอ่านและแสดงข้อมูลสัญญา
- หมายเหตุเกี่ยวกับ
onSuccess - ความท้าทายสำหรับคุณ
- Tailwind & Styling
- รู้เบื้องต้นเกี่ยวกับการโฮสต์เว็บไซต์ของคุณ
- IPFS
- โฮสติ้งบน IPFS
- โฮสติ้งบน IPFS & FileCoin โดยใช้ Fleek
- ภาพรวม FileCoin
- บทเรียน 10 สรุป
บทที่ 11: ชุดเริ่มต้น Hardhat
บทที่ 12: hardhat erc20s
- ERC คืออะไร? EIP คืออะไร?
- ERC20 คืออะไร?
- สร้างโทเค็น ERC20 ด้วยตนเอง
- การสร้างโทเค็น ERC20 ด้วย openzeppelin
- บทเรียนที่ 12 สรุป
บทเรียนที่ 13: hardhat defi & aave
- defi คืออะไร?
- AAVE คืออะไร?
- การกู้ยืมและการให้ยืมแบบโปรแกรม
- weth - eth ห่อ
- ฟอร์กเมนเน็ต
- ฝากลงใน AAVE
- ยืมจาก AAVE
- การชำระคืนกับ AAVE
- การแสดงภาพการทำธุรกรรม
- บทเรียนที่ 13 สรุป
- Happy Bow-Tie Friday กับ Austin Griffith
- การเรียนรู้ defi เพิ่มเติม:
บทเรียนที่ 14: hardhat nfts (ทุกสิ่งที่คุณต้องรู้เกี่ยวกับ NFTs)
- NFT คืออะไร?
- ภาพรวมรหัส
- การตั้งค่า Hardhat
- NFT พื้นฐาน
- IPFS แบบสุ่ม nft
- การทำแผนที่ chainlink vrf คำขอ
- การสร้าง NFT ที่หายาก
- การตั้งค่าภาพ NFT
- การตั้งราคา NFT มิ้นต์
- ปรับใช้สคริปต์
- อัพโหลดรูปภาพโทเค็นด้วย pinata
- อัพโหลดโทเค็น Uris (ข้อมูลเมตา) กับ Pinata
- การปรับใช้
- การทดสอบ
- SVG แบบไดนามิก on-chain nft
- SVG คืออะไร?
- รหัสเริ่มต้น
- การเข้ารหัส base64
- ขั้นสูง: EVM opcodes, การเข้ารหัสและการโทร
- abi.encode & abi.encodepacked
- บทนำเกี่ยวกับการเข้ารหัสฟังก์ชันการโทรโดยตรง
- บทนำเกี่ยวกับการเข้ารหัสฟังก์ชั่นการเรียกเรียกคืน
- ฟังก์ชั่นการเข้ารหัสโดยตรง
- การสร้าง nft tokenuri on-chain
- ทำให้ NFT ไดนามิก
- ปรับใช้สคริปต์
- การปรับใช้ NFTs เป็น testnet
- บทเรียนที่ 14 สรุป
บทที่ 15: NextJS NFT Marketplace (ถ้าคุณเรียนจบบทเรียนนี้คุณเป็นสัตว์ประหลาดเต็มรูปแบบ!)
- การแนะนำ
- ส่วนที่ 1: สัญญาตลาด NFT
- การตั้งค่า Hardhat
- nftmarketplace.sol
- การกลับมาใหม่
- nftmarketplace.sol - ต่อเนื่อง
- nftmarketplace.sol - ปรับใช้สคริปต์
- nftmarketplace.sol - การทดสอบ
- nftmarketplace.sol - สคริปต์
- ตอนที่ II: Moralis Front End
- Moralis คืออะไร?
- การตั้งค่า nextjs
- การเพิ่ม tailwind
- รู้เบื้องต้นเกี่ยวกับการจัดทำดัชนีใน Web3
- เชื่อมโยงคุณธรรมกับโหนด hardhat ในพื้นที่ของเรา
- การซิงค์เหตุการณ์ Moralis
- Moralis Cloud Functions
- Moralis Cloud Functions II
- การสอบถามฐานข้อมูล Moralis
- แสดงภาพ NFT
- อัปเดตรายการโมดอล
- ซื้อรายชื่อ NFT
- รายชื่อ NFTs ขาย
- ตอนที่ III: ส่วนหน้าของ TheGraph
- การแนะนำ
- กราฟคืออะไร?
- การสร้างกราฟย่อย
- การปรับใช้กราฟย่อยของเรา
- อ่านจากกราฟ
- เป็นเจ้าภาพ dapp ของเรา
บทที่ 16: การอัพเกรด Hardhat
- ภาพรวมสัญญาอัจฉริยะที่อัพเกรดได้
- ประเภทของการอัพเกรด
- Delegatecall
- ตัวอย่างพร็อกซีขนาดเล็ก
- สัญญาอัจฉริยะที่อัพเกรดได้โปร่งใส
บทที่ 17: hardhat daos
- การแนะนำ
- Dao คืออะไร?
- วิธีสร้าง Dao
บทเรียนที่ 18: ความปลอดภัยและการตรวจสอบ
- การแนะนำ
- เลื่อน
- กล่องเครื่องมือความปลอดภัยและความปลอดภัยของ ETH
- การปิดความคิด
ทรัพยากรเพิ่มเติม
- ยินดีด้วย
- ฉันจะไปที่ไหนตอนนี้?
- เรียนรู้เพิ่มเติม
- ชุมชน
- การแฮ็กแฮ็ก
บทเรียนที่ 0: ขอบของรูกระต่าย
ยินดีต้อนรับสู่หลักสูตร!
⌨ (00:00:00) บทเรียน 0: ยินดีต้อนรับสู่ blockchain
แนวทางปฏิบัติที่ดีที่สุด
- ติดตามที่เก็บ: ในขณะที่ผ่านหลักสูตรจะต้องแน่ใจ 100% ที่จะติดตามพร้อมกับที่เก็บ GitHub หากคุณพบปัญหาตรวจสอบการอัปเดตตามลำดับเวลาใน repo
- มีความกระตือรือร้นในชุมชน: ถามคำถามและมีส่วนร่วมกับนักพัฒนาอื่น ๆ ที่ต้องผ่านหลักสูตรในแท็บการอภิปรายอย่าลืมไปทักทายหรือจีเอ็ม! พื้นที่นี้แตกต่างจากอุตสาหกรรมอื่น ๆ คุณไม่จำเป็นต้องเป็นความลับ สื่อสารเครือข่ายและเรียนรู้กับผู้อื่น :)
- เรียนรู้ด้วยความเร็วของคุณเอง: ไม่สำคัญว่าจะใช้เวลาหนึ่งวันสัปดาห์ละครั้งเดือนหรือหนึ่งปี ความคืบหน้า >>> ความสมบูรณ์แบบ
- หยุดพัก: คุณจะหมดสติและจำได้น้อยลงถ้าคุณออกไปข้างนอกและดูหลักสูตรทั้งหมดในการนั่งหนึ่ง กลยุทธ์ที่แนะนำ ทุก ๆ 25 นาทีจะหยุดพัก 5 นาทีและทุก 2 ชั่วโมงจะใช้เวลาพักนานกว่า 30 นาทีนานขึ้น
- อ้างถึงเอกสารประกอบ: สิ่งต่าง ๆ ได้รับการปรับปรุงอย่างต่อเนื่องดังนั้นเมื่อใดก็ตามที่แพทริคเปิดเอกสารบางอย่างให้เปิดจุดสิ้นสุดของคุณและอาจมีตัวอย่างรหัสถัดจากคุณ
บทเรียนที่ 1: พื้นฐาน blockchain
⌨ (00:09:05) บทเรียนที่ 1: blockchain basics
blockchain คืออะไร? blockchain ทำอะไร?
- bitcoin whitepaper
- Ethereum whitepaper
- สัญญาอัจฉริยะคืออะไร?
- Nick Szabo
- สัญญาสมาร์ทไฮบริด
- Blockchain Oracles
- คำศัพท์
- Web3
- blockchain คืออะไร
วัตถุประสงค์ของสัญญาอัจฉริยะ
⌨ (00:18:27) วัตถุประสงค์ของสัญญาอัจฉริยะ
- - วิดีโอต้นฉบับ
- - ETH DENVER TALK ของฉัน
- - McDonalds Scandal
- ⛓เพิ่มเติมเกี่ยวกับวิวัฒนาการของข้อตกลง
- ✍สัญญาอัจฉริยะคืออะไร?
- - blockchain ทำงานอย่างไร?
- - chainlink & oracles
ผลประโยชน์ blockchain อื่น ๆ
⌨ (00:30:41) ผลประโยชน์ blockchain อื่น ๆ
- กระจายอำนาจ
- ความโปร่งใสและความยืดหยุ่น
- ความเร็วและประสิทธิภาพ
- ความปลอดภัยและความไม่สามารถเปลี่ยนแปลงได้
- การกำจัดความเสี่ยงคู่สัญญา
- ไว้วางใจข้อตกลงที่ลดลง
มีสัญญาอัจฉริยะอะไรบ้าง?
⌨ (00:36:36) สัญญาอัจฉริยะทำอะไรไปบ้าง?
- ความดี
- defi llama
- ทำไม defi จึงมีความสำคัญ
- DAOS
- nfts
ทำธุรกรรมครั้งแรกของคุณ
⌨ (00:39:17) การทำธุรกรรมครั้งแรกของคุณ
- ลิงค์ดาวน์โหลด metamask
- คีย์ส่วนตัวคืออะไร?
- วลีลับคืออะไร?
- ชาวอีทิร์สแคน
- Sepolia Etherscan
- Sepolia Faucet (ตรวจสอบหน้าสัญญาโทเค็นลิงค์)
- หมายเหตุ: เอกสาร chainlink มักจะมีก๊อกน้ำที่ทันสมัยที่สุดในหน้าสัญญาโทเค็นลิงก์ของพวกเขา หาก faucet ข้างต้นเสียให้ตรวจสอบเอกสาร chainlink สำหรับ faucet ที่ทันสมัยที่สุด
- หรือใช้ Sepolia ETH faucet เพียงให้แน่ใจว่าได้เปลี่ยน metamask ของคุณเป็น Sepolia!
ก๊าซ I: บทนำสู่แก๊ส
⌨ (00:58:59) แก๊ส I: บทนำสู่แก๊ส
- ค่าธรรมเนียมก๊าซและก๊าซ
- Wei, Gwei และ Ether Converter
- ปั๊มน้ำมัน
blockchains ทำงานอย่างไร?
⌨ (01:05:32) blockchains ทำงานอย่างไร
- แฮชคืออะไร?
- การสาธิตบล็อกเชน
- สรุป
การลงนามในธุรกรรม
⌨ (01:22:55) การลงนามในธุรกรรม
- กุญแจสาธารณะ / ส่วนตัว
- เลเยอร์ 2 และโรลอัพ
- oracles blockchain กระจายอำนาจ
ก๊าซ II
⌨ (01:30:22) GAS II: Block Rewards & EIP 1559
- บล็อกรางวัล
- ก๊าซขั้นสูง
- EIP 1559
- Gwei, Wei และ ETH
สรุป GAS II
⌨ (01:36:44) สรุป GAS II
- เรียกใช้โหนด Ethereum ของคุณเอง
พื้นฐานบล็อกเชนระดับสูง
[⌨ (01:39:32) ปัจจัยพื้นฐานระดับสูง blockchain] https://www.youtube.com/watch?v=GyMWXUJRBJQ&t=5972S ()
- ฉันทามติ
- หลักฐานการถือหุ้น
- หลักฐานการทำงาน
- ฉันทามติ Nakamoto
- Ethereum 2 (การผสาน)
- เสร็จสิ้นพื้นฐาน blockchain! -
บทที่ 2: ยินดีต้อนรับสู่รีมิกซ์! ที่เก็บข้อมูลง่ายๆ
⌨ (02:01:16) บทเรียนที่ 2: ยินดีต้อนรับสู่รีมิกซ์! ที่เก็บข้อมูลง่ายๆ
รหัส: https://github.com/patrickalphac/simple-storage-fcc
การแนะนำ
⌨ (02:03:05) บทนำ
- รีมิกซ์
- เอกสารความแข็งแกร่ง
การตั้งค่าสัญญาแรกของคุณ
⌨ (02:05:18) การตั้งค่าสัญญาแรกของคุณ
- การกำหนดเวอร์ชัน
- จดบันทึกในรหัสของคุณ!
- ใบอนุญาตซอฟต์แวร์คืออะไร
- ใบอนุญาต SPDX
- การรวบรวม
- การประกาศสัญญา
ความแข็งแกร่งพื้นฐาน: ประเภท
⌨ (02:12:28) ประเภทความแข็งแกร่งพื้นฐาน
- ประเภทและประกาศตัวแปร
-
uint256 , int256 , bool , string , address , bytes32 - ประเภทความแข็งแกร่ง
- บิตและไบต์
- ค่าเริ่มต้นเริ่มต้น
- ความเห็น
ความแข็งแกร่งพื้นฐาน: ฟังก์ชั่น
⌨ (02:18:40) ฟังก์ชั่นความแข็งแกร่งพื้นฐาน
- ฟังก์ชั่น
- ปรับใช้สัญญา
- สัญญาอัจฉริยะมีที่อยู่เช่นเดียวกับกระเป๋าเงินของเรา
- เรียกฟังก์ชั่นการเปลี่ยนแปลงของรัฐ
- การมองเห็น
- GAS III | ตัวอย่าง
- ขอบเขต
- ดูและฟังก์ชั่นบริสุทธิ์
ความแข็งแกร่งขั้นพื้นฐาน: อาร์เรย์และโครงสร้าง
⌨ (02:35:30) อาร์เรย์และโครงสร้างความแข็งแกร่งขั้นพื้นฐาน
- โครงสร้าง
- อินโทรไปยังการจัดเก็บ
- อาร์เรย์
- ไดนามิกและขนาดคงที่
- ฟังก์
push ชอาร์เรย์
ความแข็งแกร่งพื้นฐาน: ข้อผิดพลาดของคอมไพเลอร์และคำเตือน
⌨ (02:45:35) ข้อผิดพลาดและคำเตือนขั้นพื้นฐาน
- สีเหลือง: คำเตือนก็โอเค
- สีแดง: ข้อผิดพลาดไม่เป็นไร
หน่วยความจำ, ที่เก็บ, calldata (อินโทร)
⌨ (02:46:34) หน่วยความจำความแข็งแกร่งพื้นฐานการจัดเก็บและ calldata (อินโทร)
- 6 สถานที่ที่คุณสามารถจัดเก็บและเข้าถึงข้อมูล
- calldata
- หน่วยความจำ
- พื้นที่จัดเก็บ
- รหัส
- ท่อนไม้
- กองซ้อน
การทำแผนที่
⌨ (02:50:17) การแมปความแข็งแกร่งขั้นพื้นฐาน
ปรับใช้สัญญาแรกของคุณ
⌨ (02:53:38) การปรับใช้สัญญาแรกของคุณ
- testnet หรือ mainnet
- การเชื่อมต่อ metamask
- ค้นหาก๊อกน้ำที่นี่
- ดู faucets ที่ด้านบนของ readme นี้!
- การโต้ตอบกับสัญญาปรับใช้
EVM & A สรุปบทเรียนที่ 2
⌨ (03:03:07) EVM & A สรุปบทเรียน 2
บทที่ 3: โรงงานจัดเก็บรีมิกซ์
⌨ (03:05:34) บทเรียนที่ 3: โรงงานจัดเก็บข้อมูลรีมิกซ์
รหัส: https://github.com/patrickalphac/storage-factory-fcc
การแนะนำ
⌨ (03:06:06) บทนำ
ความแข็งแกร่งขั้นพื้นฐาน: การนำเข้าสัญญาเข้าสู่สัญญาอื่น ๆ
⌨ (03:07:29) การนำเข้าสัญญาเข้าสู่สัญญาอื่น ๆ
- ความสามารถในการประกอบ
- คำหลักใหม่ที่แข็งแกร่ง
- การนำเข้ารหัสในความแข็งแกร่ง
ความแข็งแกร่งขั้นพื้นฐาน: การโต้ตอบกับสัญญาอื่น ๆ
⌨ (03:16:36) การโต้ตอบกับสัญญาอื่น ๆ
- ในการโต้ตอบคุณต้องการ: ABI + ที่อยู่
- Abi
ความแข็งแกร่งขั้นพื้นฐาน: การสืบทอดและการแทนที่
⌨ (03:25:23) มรดกและการแทนที่
- มรดก
- แทนที่และคำหลักเสมือนจริง
บทเรียนที่ 3 สรุป
⌨ (03:30:29) บทเรียน 3 บทสรุป
บทที่ 4: Remix Fund Me
⌨ (03:31:55) บทที่ 4: Remix Fund Me
รหัส: https://github.com/patrickalphac/fund-me-fcc
การแนะนำ
การส่ง ETH ผ่านฟังก์ชั่นและการเปลี่ยนกลับ
- ฟิลด์ในการทำธุรกรรม
- เพิ่มเติมเกี่ยวกับ V, R, S
- เจ้าหนี้
- msg.value และคำหลักทั่วโลกอื่น ๆ
- จำเป็นต้อง
- ย้อนกลับ
chainlink & oracles
- Blockchain Oracle คืออะไร?
- ปัญหา Oracle คืออะไร?
- chainlink
- ฟีดราคา chainlink (ฟีดข้อมูล)
- chainlink vrf
- Chainlink Keepers
- การโทร chainlink api
- การนำเข้าโทเค็นไปยัง Metamask ของคุณ
- การร้องขอและรับโมเดล chainlink
ทบทวนการส่ง ETH และทำงานกับ ChainLink
อินเทอร์เฟซและฟีดราคา
- ฟีดราคา chainlink (ฟีดข้อมูล)
- chainlink github
- ส่วนต่อประสาน
การนำเข้าจาก GitHub & NPM
คณิตศาสตร์จุดลอยตัวในความแข็งแกร่ง
- tuple
- หมายเลขจุดลอยตัวในความแข็งแกร่ง
- ประเภทการหล่อ
- การประมาณค่าก๊าซล้มเหลว
- ใครบางคนควรสร้างบทความอธิบายข้อผิดพลาดนี้
ความแข็งแกร่งพื้นฐาน: อาร์เรย์และโครงสร้าง II
ตรวจสอบอินเทอร์เฟซการนำเข้าจาก GitHub และคณิตศาสตร์ในความแข็งแกร่ง
ห้องสมุด
- ห้องสมุด
- ห้องสมุดที่แข็งแกร่งโดยตัวอย่าง
Safemath, การตรวจสอบล้นและคำหลัก "ไม่ถูกตรวจสอบ"
- Openzeppelin Safemath
- ไม่ถูกตรวจสอบกับการตรวจสอบ
ความแข็งแกร่งพื้นฐาน: สำหรับลูป
- สำหรับลูป
-
/* */ เป็นอีกวิธีหนึ่งในการแสดงความคิดเห็น
ความแข็งแกร่งขั้นพื้นฐาน: การรีเซ็ตอาร์เรย์
การส่ง ETH จากสัญญา
ความแข็งแกร่งพื้นฐาน: ตัวสร้าง
ความแข็งแกร่งพื้นฐาน: ตัวดัดแปลง
- เท่ากับสองเท่า
- ตัวดัดแปลง
Demo Testnet
ความแข็งแกร่งขั้นสูง
ไม่เปลี่ยนรูปและคงที่
- ไม่เปลี่ยนรูป
- คงที่
- ราคาก๊าซ ETH ปัจจุบัน
- อย่าเครียดเกี่ยวกับการเพิ่มประสิทธิภาพของก๊าซ! (ยัง)
- การตั้งชื่อการประชุม
ข้อผิดพลาดที่กำหนดเอง
- การแนะนำข้อผิดพลาดที่กำหนดเอง
ฟังก์ชั่นรับและทางเลือก
- เอกสารที่มีความแข็งแกร่งฟังก์ชั่นพิเศษ
- ทางเลือก
- รับ
บทเรียน 4 สรุป
- พื้นฐานความแข็งแกร่งเสร็จสมบูรณ์! -
บทที่ 5: ethers.js ที่เก็บข้อมูลง่ายๆ
⌨ (05:30:42) บทเรียนที่ 5: ethers.js ที่เก็บข้อมูลง่ายๆ
รหัส: https://github.com/patrickalphac/ethers-simple-storage-fcc
- Alchemy: https://alchemy.com/?a=673c802981
กลยุทธ์การดีบักที่มีประสิทธิภาพและขอความช่วยเหลือ
⌨ (5:30:46) การดีบักที่มีประสิทธิภาพและขอความช่วยเหลือ
- ปัญหาทิงเกอร์และไอโซเลต
- สำหรับหลักสูตรนี้ใช้เวลาอย่างน้อย 15 นาทีในการหาข้อบกพร่อง
- Google / เว็บค้นหาปัญหาที่แน่นอน
- ไปที่ GitHub repo / การอภิปรายนี้
- ถามคำถามเกี่ยวกับฟอรัมเช่น Ethereum Ethereum หรือสแต็กล้น
- จัดรูปแบบคำถามของคุณ !!
- ใช้ Markdown
วิธีการดีบักวิดีโออะไร
- วิดีโอดั้งเดิมของ Patrick
การติดตั้งและการตั้งค่า
- รหัสสตูดิโอภาพ
- nodejs
- vscode keybindings
- กระตวน
- เทอร์มินัลคืออะไร?
การตั้งค่า Mac & Linux
การตั้งค่า Windows
- WSL
- เมื่อทำงานใน WSL ให้ใช้คำสั่ง Linux แทนคำสั่ง Windows
- การแก้ไขปัญหา
-
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
โปรดใช้ gitpod เป็นทางเลือกสุดท้าย
Gitpod
- Gitpod
- หากใช้สิ่งนี้อย่าแบ่งปันคีย์ส่วนตัวด้วยเงินจริงบน Gitpod
- เป็นการดีที่คุณจะหา macOS, linux หรือ windows ติดตั้ง
บทนำการพัฒนาท้องถิ่น
-
CMD + K หรือ CTRL + K ล้างเทอร์มินัล -
mkdir ethers-simple-storage-fcc -
code . เพื่อเปิด vScode ในหน้าต่าง vscode ใหม่
หลักสูตรการชน JavaScript
หลักสูตร nodejs
หลักสูตร JavaScript
นำเข้า SimpleStorage.sol ของคุณ
ความแข็งแกร่ง + ส่วนขยาย vscode hardhat
จัดรูปแบบรหัสความแข็งแกร่งของคุณด้วย:
"[solidity]": {
"editor.defaultFormatter": "NomicFoundation.hardhat-solidity"
},
"[javascript]":{
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
ในไฟล์ .vscode/settings.json ของคุณ
ทบทวนจาวาสคริปต์เล็ก ๆ
การเขียนโปรแกรมแบบอะซิงโครนัสใน JavaScript
- การเขียนโปรแกรมแบบอะซิงโครนัส
- คำหลัก async
- สัญญาใน JavaScript
- รอคำหลัก
รวบรวมความแข็งแกร่งของเรา
- การติดตั้งเส้นด้าย
- SOLC-JS
- สคริปต์เส้นด้าย
Ganache & Networks
- กานาช
- เครือข่ายใน Metamask
- URL RPC
- เก ธ
- สนามเด็กเล่นสเป็ค JSON RPC
รู้เบื้องต้นเกี่ยวกับ ethers.js
- ethers.js
- Prettier-Plugin-Solidity
หมายเหตุเกี่ยวกับคำหลักรอ
การเพิ่มการแทนที่ธุรกรรม
ใบเสร็จรับเงิน
การส่งธุรกรรม "ดิบ" ใน ethers.js
โต้ตอบกับสัญญาใน ethers.js
ตัวแปรสภาพแวดล้อม
การจัดการคีย์ส่วนตัวที่ดีขึ้น
- Wallet.encpt
- คำมั่นสัญญา. ENV
การจัดรูปแบบที่สวยงามเป็นทางเลือก
- สวยกว่า
- เทมเพลต ReadMe ที่ดีที่สุด
การปรับใช้กับ testnet หรือ mainnet
- การเล่นแร่แปรธาตุ
- รับคีย์ส่วนตัวของคุณจาก Metamask
-
CTRL + C หยุดคำสั่งขั้ว
การตรวจสอบบนบล็อกนักสำรวจจาก UI
Dashboard Alchemy & The Mempool
- แขกรับเชิญพิเศษ Albert Hu
- mempool
บทเรียนที่ 5 สรุป
TypeScript Ethers จัดเก็บอย่างง่าย
บทที่ 6: Hardhat Simple Storage
⌨ (08:20:17) บทที่ 6: Hardhat Simple Storage
รหัส: https://github.com/patrickalphac/hardhat-simple-storage-fcc
การแนะนำ
⌨ (08:20:19) บทนำ
การตั้งค่า Hardhat
⌨ (08:22:47) การตั้งค่า Hardhat
- เอกสาร Hardhat
- devdependencies vs การพึ่งพา
- @ Sign Node Modules
การแก้ไขปัญหาการตั้งค่า Hardhat
⌨ (08:29:43) การแก้ไขปัญหาการตั้งค่า Hardhat
- แขกรับเชิญพิเศษ Cami Ramos Garzon
การตั้งค่า Hardhat ยังคงดำเนินต่อไป
⌨ (08:31:48) การตั้งค่า Hardhat ยังคงดำเนินต่อไป
การปรับใช้งานง่ายๆจาก hardhat
⌨ (08:33:10) การปรับใช้งานง่าย ๆ จาก hardhat
เครือข่ายใน hardhat
⌨ (08:41:44) เครือข่ายใน hardhat
- เครือข่าย hardhat
- การกำหนดค่า Hardhat
- รายการรหัสโซ่
การตรวจสอบโปรแกรม
⌨ (08:51:16) การตรวจสอบโปรแกรม
- Etherscan ตรวจสอบการสอน
- เอกสาร Etherscan
- Hardhat-Etherscan
- คีย์ Etherscan API
- JavaScript == vs ===
โต้ตอบกับสัญญาใน Hardhat
⌨ (09:06:37) การโต้ตอบกับสัญญาใน Hardhat
สิ่งประดิษฐ์การแก้ไขปัญหา
⌨ (09:09:42) สิ่งประดิษฐ์การแก้ไขปัญหา
งาน hardhat ที่กำหนดเอง
⌨ (09:10:52) งาน hardhat ที่กำหนดเอง
- งาน Hardhat
- ฟังก์ชันลูกศร JavaScript
hardhat localhost node
⌨ (09:18:12) Hardhat Localhost Node
คอนโซล hardhat
⌨ (09:23:11) คอนโซล Hardhat
การทดสอบ hardhat
⌨ (09:26:13) การทดสอบ hardhat
- การทดสอบ hardhat
- การทดสอบสไตล์มอคค่า
- ไค
- การทดสอบวาฟเฟิล
นักข่าวก๊าซ Hardhat
⌨ (09:38:10) Hardhat Gas Reporter
- นักข่าวก๊าซ Hardhat
- Coinmarketcap API
ความครอบคลุมของความแข็งแกร่ง
⌨ (09:44:40) ความครอบคลุมความแข็งแกร่ง
- ความครอบคลุมของความแข็งแกร่ง
ฮาร์ดฮัตวาฟเฟิล
⌨ (09:47:02) Hardhat Waffle
บทเรียน 6 สรุป
⌨ (09:47:37) บทเรียน 6 บทสรุป
TypeScript Hardhat Simple Storage
⌨ (09:52:15) TypeScript Hardhat Simple Storage
yarn add --dev @typechain/ethers-v5 @typechain/hardhat @types/chai @types/node @types/mocha ts-node typechain typescript
บทที่ 7: Hardhat Fund Me
⌨ (10:00:48) บทที่ 7: Hardhat Fund Me
รหัส: https://github.com/patrickalphac/hardhat-fund-me-fcc
การแนะนำ
⌨ (10:00:50) บทนำ
การตั้งค่า Hardhat - ให้ทุนฉัน
⌨ (10:03:41) การตั้งค่า Hardhat - ให้ทุนฉัน
การเป็นผ้าสำลี
⌨ (10:06:20) ผ้าสำลี
การตั้งค่า Hardhat - ให้กองทุนฉัน - ต่อ
⌨ (10:07:47) การตั้งค่า Hardhat - ให้กองทุนฉัน - ต่อ
การนำเข้าจาก NPM
⌨ (10:09:38) การนำเข้าจาก NPM
Hardhat ปรับใช้
⌨ (10:10:43) Hardhat ปรับใช้
เยาะเย้ย
⌨ (10:21:05) เยาะเย้ย
- เยาะเย้ย
- Aave GitHub
- chainlink github
- ความแข็งแกร่งหลายรุ่น
- แท็กใน hardhat
โฟลเดอร์ Utils
⌨ (10:52:51) Utils Folder
Testnet Demo - Hardhat Fund Me
⌨ (10:55:45) Testnet Demo - Hardhat Fund Me
- Hardhat ปรับใช้การยืนยันบล็อก
ตัวพิมพ์ใหญ่
- ไฟล์รหัส (TypeScript Edition)
- กำหนด blockconfirmations ในไฟล์
helper-hardhat-config.ts แทน hardhat-config.js
คู่มือสไตล์ความแข็งแกร่ง
⌨ (11:00:10) คู่มือสไตล์ความแข็งแกร่ง
ทดสอบกองทุนฉัน
⌨ (11:08:36) ทดสอบกองทุนฉัน
- การทดสอบหน่วย
- Hardhat ปรับใช้งานติดตั้ง
- ethers.getContract
- คาดหวัง
- ethers.utils.parseunits
- Waffle chai matchers
จุดพักและการดีบัก
⌨ (11:30:39) จุดพักและการดีบัก
ก๊าซ III
⌨ (11:33:40) GAS III
- การตอบสนองการทำธุรกรรม
- ใบเสร็จการทำธุรกรรม
console.log & debugging
⌨ (11:36:35) console.log & debugging
กองทุนทดสอบฉัน II
⌨ (11:37:31) การทดสอบกองทุนฉัน II II
การจัดเก็บในความแข็งแกร่ง
⌨ (11:44:34) ที่เก็บข้อมูลในความแข็งแกร่ง
- เค้าโครงจัดเก็บข้อมูล
- วัตถุประสงค์ของคำหลักหน่วยความจำ
- getStorageat
การเพิ่มประสิทธิภาพก๊าซโดยใช้ความรู้การจัดเก็บ
⌨ (11:52:38) การเพิ่มประสิทธิภาพก๊าซโดยใช้ความรู้การจัดเก็บข้อมูล
- opcodes
- opcodes โดยแก๊ส
- opcodes โดยแก๊ส
- ผนวก
s_ เข้ากับตัวแปรจัดเก็บข้อมูล - ผนวก
i_ เข้ากับตัวแปรที่ไม่เปลี่ยนรูป - CAPS LOCK และ ENVERSCORE ตัวแปรคงที่
คู่มือสไตล์ chainlink ที่มีความแข็งแกร่ง
⌨ (12:05:29) คู่มือสไตล์ ChainLink Solidity
- คู่มือสไตล์ Chainlink Solidity
รีวิวการจัดเก็บข้อมูล
⌨ (12:09:59) รีวิวการจัดเก็บข้อมูล
การทดสอบการแสดงละคร
⌨ (12:11:43) การทดสอบการจัดเตรียม
รันสคริปต์บนโหนดท้องถิ่น
⌨ (12:17:58) เรียกใช้สคริปต์บนโหนดท้องถิ่น
การเพิ่มสคริปต์ลงในแพ็คเกจของคุณ json
⌨ (12:22:00) การเพิ่มสคริปต์ลงในแพ็คเกจของคุณ json
ผลักไปที่ GitHub
⌨ (12:25:17) ผลักไปที่ GitHub
- GitHub Quickstart
- Git คืออะไร?
- quickstart ที่เราติดตามในวิดีโอ
- เรียนรู้เกี่ยวกับ Git และ GitHub
- ทวีตฉัน (เพิ่ม repo ของคุณ)!
บทที่ 8: HTML / JavaScript Fund Me (Full Stack / Front End)
⌨ (12:32:57) บทที่ 8: HTML / JavaScript Fund Me (เต็มสแต็ค / หน้าเต็ม)
รหัส: https://github.com/patrickalphac/html-fund-me-fcc
การแนะนำ
เว็บไซต์ทำงานอย่างไรกับ web3 wallets
- วิธีเชื่อมต่อสัญญาอัจฉริยะของคุณกับ Metamask
- รหัสจากวิดีโอ: https://github.com/patrickalphac/full-stack-web3-metamask-connectors
- ✍บทความจากวิดีโอ: https://betterprogramming.pub/everything-you-need-to-know-about-fullstack-web3-94c0f1b18019?
การตั้งค่า HTML
- เซิร์ฟเวอร์สด: extensionID: ritwickdey.liveserver
การเชื่อมต่อ HTML กับ Metamask
JavaScript ในไฟล์ของตัวเอง
ES6 vs nodejs
- es6 vs nodesjs
- Ethers Docs สำหรับเว็บเบราว์เซอร์
- โมดูลกับข้อความ/จาวาสคริปต์
การส่งธุรกรรมจากเว็บไซต์
- web3provider
- การเพิ่มเครือข่ายไปยัง Metamask
การรีเซ็ตบัญชีใน Metamask
MetaMask - RPC Error:
[ethjs-query] while formatting ouputs from RPC '{"value":{"code":-32603,"data":{"code":-32000,"message":"Nonce too high. Expected nonce to be 2 but got 4. Note that transactions can't be queued when automining."}}}'
การฟังกิจกรรมและการทำธุรกรรมที่เสร็จสมบูรณ์
- provider.once
- ฟังก์ชั่นนิรนาม
- JavaScript Promise
แบบฟอร์มอินพุต
อ่านจาก blockchain
ถอนฟังก์ชั่น
บทเรียนที่ 8 สรุป
ลิงค์เสริม:
บทที่ 9: Hardhat Smart Contract Lottery
⌨ (13:41:02) บทที่ 9: Hardhat Smart Contract Lottery
รหัส: https://github.com/patrickalphac/hardhat-smartcontract-lottery-fcc
การแนะนำ
การตั้งค่า Hardhat - ลอตเตอรีสัญญาอัจฉริยะ
⌨ (13:43:43) การตั้งค่า hardhat
yarn add --dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers @nomiclabs/hardhat-etherscan @nomiclabs/hardhat-waffle chai ethereum-waffle hardhat hardhat-contract-sizer hardhat-deploy hardhat-gas-reporter prettier prettier-plugin-solidity solhint solidity-coverage dotenv
- ติดตั้งการพึ่งพา (รุ่น typecript):
yarn add --dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers @nomiclabs/hardhat-etherscan @nomiclabs/hardhat-waffle chai ethereum-waffle hardhat hardhat-contract-sizer hardhat-deploy hardhat-gas-reporter prettier prettier-plugin-solidity solhint solidity-coverage dotenv @typechain/ethers-v5 @typechain/hardhat @types/chai @types/node ts-node typechain typescript
Raffle.sol ตั้งค่า
⌨ (13:46:55) การตั้งค่า Raffle.sol
- ข้อผิดพลาดที่กำหนดเองในความแข็งแกร่ง
รู้เบื้องต้นเกี่ยวกับเหตุการณ์
⌨ (13:54:02) บทนำเกี่ยวกับเหตุการณ์
- วิดีโอกิจกรรมและการบันทึก
- กิจกรรมและการบันทึกใน hardhat
กิจกรรมใน Raffle.sol
⌨ (14:00:47) เหตุการณ์ใน Raffle.sol
รู้เบื้องต้นเกี่ยวกับ chainlink vrf
⌨ (14:02:30) บทนำสู่ ChainLink VRF
บทเรียนย่อย: chainlink vrf
- เอกสาร chainlink vrfv2
- walkthrough chainlink vrfv2
- สัญญา chainlink
การใช้งาน ChainLink VRF - บทนำ
⌨ (14:09:53) การใช้งาน chainlink vrf
Hardhat ชวเลข
การใช้งาน ChainLink VRF - คำขอ
การใช้งาน chainlink vrf - การเติมเต็ม
โมดูโล
รู้เบื้องต้นเกี่ยวกับ Chainlink Keepers
- Chainlink Keepers docs
- chainlink keepers walkthrough
การใช้งาน ChainLink Keepers - CheckupKeep
enums
การใช้งาน ChainLink Keepers - CheckupKeep ยังคงดำเนินต่อไป
การใช้งาน ChainLink Keepers - PerformUpKeep
การล้างรหัส
การปรับใช้ Raffle.sol
ผู้ประสานงาน MockLink VRF
ต่อเนื่อง
การทดสอบหน่วย Raffle.sol
- เราใช้
async function ในบล็อกอธิบายในตอนเริ่มต้น แต่เรานำพวกเขาออกมาในภายหลัง
การทดสอบกิจกรรมและการจับคู่ชัย
ฉันดำเนินการต่อ
วิธีการ hardhat และการเดินทางข้ามเวลา
- ทำให้ hardhat ทำทุกอย่างที่คุณต้องการ
- วิธีการดีบักพิเศษวิธีการ hardhat
ต่อเนื่อง II
callstatic
ต่อเนื่อง III
การทดสอบสัญญาขนาดใหญ่
IV ต่อเนื่อง
Raffle.sol การทดสอบการจัดเตรียม
การทดสอบบน testnet
จำนวนลิงค์ที่แนะนำสำหรับการทดสอบการจัดเตรียมเซปิเลีย:
- chainlink vrf: 2 ลิงค์
- Chainlink Keepers: 8 ลิงก์
บทสรุป
TypeScript - ลอตเตอรีสัญญาอัจฉริยะ
- เสร็จสิ้นพื้นฐาน Hardhat! -
บทเรียนที่ 10: NextJS Smart Contract Lottery (Full Stack / Front End)
⌨ (16:34:07) บทเรียนที่ 10: NextJS Smart Contract Lottery (Full Stack / Front End)
รหัส: https://github.com/patrickalphac/nextjs-smartcontract-lottery-fcc
⚡การสาธิตสด IPFS: ipfs: // qmxwacyjcs8tl7ukywimpqmqw9skzshuje4uszbsyqvueh
⚡การสาธิตสด fleek: https://fancy-dream-3458.on.fleek.co/
การแนะนำ
เราย้ายไปใช้ NextJs สำหรับส่วนหน้าของเรา NextJS เป็นกรอบการตอบสนองสำหรับการสร้างเว็บไซต์
บทเสริมย่อย: การพัฒนาสแต็กเต็มรูปแบบและห้องสมุดอื่น ๆ
- 6 วิธีในการเชื่อมต่อ dapp ของคุณกับกระเป๋าเงิน
- NextJS Crash Course
- ไลบรารีปฏิกิริยาอื่น ๆ :
- Web3React
- Wagmi
- react-moralis
- UsedApp
- web3modal
- usemetamask
- เทมเพลตสแต็ค Web3 เต็มรูปแบบอื่น ๆ
- นั่งร้าน
- Ethereum-Boilerplate
- Create-Eth-App
- ตอบสนองเป็นที่นิยมมาก
- ทำไมต้องใช้ React?
การตั้งค่า nextjs
- เอกสาร NextJS
- NextJS ตัวอย่างอีเทอร์ขั้นต่ำสำหรับลอตเตอรี
ส่วนหัวด้วยตนเอง i
- องค์ประกอบคืออะไร?
- JSX
- คุณธรรม
- ตอบสนองคุณธรรม
เบ็ดตอบสนอง
ส่วนหัวด้วยตนเอง II
hook useeffect
- hook useeffect
- เพิ่มเติมเกี่ยวกับ useeffect
- ทำปฏิกิริยาบริบท
ที่เก็บข้อมูลท้องถิ่น
ISWEB3ENABLELINGING
web3uikit
- web3uikit
- Web3uikit Interactive Docs
- ปุ่มเชื่อมต่อ web3uikit
บทนำเกี่ยวกับฟังก์ชั่นการโทรใน nextjs
ค่าคงที่อัตโนมัติ UI updater
runcontractfunction
- ผู้ให้บริการคุณธรรม
- usemoralis
- นกเพชร
ใช้งาน
ฟังก์ชั่นการโทรใน nextjs
การทำให้เป็นระเบียบ
- เพิ่ม
onError ในการโทร runContractFunction ทั้งหมดของคุณ
การอ่านและแสดงข้อมูลสัญญา
หมายเหตุเกี่ยวกับ onSuccess
-
onSuccess เพียงตรวจสอบเพื่อดูว่า Metamask ส่งธุรกรรมไม่ใช่หรือไม่
ความท้าทายสำหรับคุณ
Tailwind & Styling
- เรียนรู้ CSS
- tailwindcss
- ส่วนขยาย postcss
- ส่วนขยาย tailwind
- ติดตั้ง tailwind เป็น nextjs
รู้เบื้องต้นเกี่ยวกับการโฮสต์เว็บไซต์ของคุณ
⌨ (18:12:50) แนะนำให้โฮสต์เว็บไซต์ของคุณ
- vercel
- คุณธรรม
- มีความสุขมาก
- IPFS
IPFS
⌨ (18:15:14) IPFS
โฮสติ้งบน IPFS
⌨ (18:18:51) โฮสติ้งบน IPFS
- IPFS Companion
- เบราว์เซอร์ที่กล้าหาญ
-
yarn build && yarn next export
โฮสติ้งบน IPFS & FileCoin โดยใช้ Fleek
⌨ (18:25:45) โฮสติ้งบน IPFS & FileCoin โดยใช้ Fleek
ภาพรวม FileCoin
⌨ (18:31:28) ภาพรวม FileCoin
- แขกรับเชิญพิเศษ Haire
- URL IPFS ของวิดีโอของ Ally
บทเรียน 10 สรุป
บทที่ 11: ชุดเริ่มต้น Hardhat
⌨ (18:51:36) บทที่ 11: ชุดเริ่มต้น Hardhat
รหัส: https://github.com/smartcontractkit/hardhat-starter-kit
บทที่ 12: hardhat erc20s
⌨ (18:59:24) บทเรียนที่ 12: hardhat erc20s
รหัส: https://github.com/patrickalphac/hardhat-erc20-fcc
ERC คืออะไร? EIP คืออะไร?
- EIP คืออะไร?
- eips codebase
ERC20 คืออะไร?
- วิดีโอ (ใช้บราวนี่/ไพ ธ อน)
- EIP-20
- ERC-677
- EIP-777
สร้างโทเค็น ERC20 ด้วยตนเอง
การสร้างโทเค็น ERC20 ด้วย openzeppelin
- Openzeppelin
- สัญญา Openzeppelin
- Solmate (ทางเลือก Openzeppelin)
บทเรียนที่ 12 สรุป
บทเรียนที่ 13: hardhat defi & aave
⌨ (19:16:13) บทเรียนที่ 13: hardhat defi & aave
รหัส: https://github.com/patrickalphac/hardhat-defi-fcc
defi คืออะไร?
AAVE คืออะไร?
- เครื่องฟาง
- วิดีโอ AAVE ก่อนหน้าของฉันเกี่ยวกับสินทรัพย์สั้น
การกู้ยืมและการให้ยืมแบบโปรแกรม
weth - eth ห่อ
- Weth Token Sepolia Etherscan
- weth token mainnet
ฟอร์กเมนเน็ต
ฝากลงใน AAVE
ยืมจาก AAVE
- Aave ยืมคำถามที่พบบ่อย
- ปัจจัยสุขภาพ
- พารามิเตอร์ความเสี่ยง AAVE
การชำระคืนกับ AAVE
การแสดงภาพการทำธุรกรรม
บทเรียนที่ 13 สรุป
Happy Bow-Tie Friday กับ Austin Griffith
- แขกรับเชิญพิเศษ Austin Griffith!
- Ethereum ความเร็ว
การเรียนรู้ defi เพิ่มเติม:
บทเรียนที่ 14: hardhat nfts (ทุกสิ่งที่คุณต้องรู้เกี่ยวกับ NFTs)
⌨ (20:28:51) บทที่ 14: hardhat nfts
รหัส: https://github.com/patrickalphac/hardhat-nft-fcc
NFT คืออะไร?
- วิดีโอ
- ตัวเลือก: ทั้งหมดในโซ่ svg nft
- EIP-721
ภาพรวมรหัส
การตั้งค่า Hardhat
NFT พื้นฐาน
การทดสอบเขียน
IPFS แบบสุ่ม nft
การทำแผนที่ chainlink vrf คำขอ
การสร้าง NFT ที่หายาก
การตั้งค่าภาพ NFT
การตั้งราคา NFT มิ้นต์
ปรับใช้สคริปต์
อัพโหลดรูปภาพโทเค็นด้วย pinata
- Pinata
- nft.storage
- Pinata NPM
- เอกสาร Pinata
อัพโหลดโทเค็น Uris (ข้อมูลเมตา) กับ Pinata
การปรับใช้
การทดสอบ
SVG แบบไดนามิก on-chain nft
- วิดีโอดั้งเดิมของ Patrick
SVG คืออะไร?
รหัสเริ่มต้น
การเข้ารหัส base64
- การเข้ารหัส base64
- base64-sol
ขั้นสูง: EVM opcodes, การเข้ารหัสและการโทร
abi.encode & abi.encodepacked
- abi.encode
- Abi.encodepacked ขอบคุณ Alex Roan สำหรับความช่วยเหลือของเขาในเซสชั่นนี้!
- ตัวอย่างการทำธุรกรรมการสร้างสัญญาอะไรคือ ABI จริงๆ?
- EVM opcodes
- opcodes EVM เพิ่มเติม
- แผ่นโกงที่แข็งแกร่ง
- abi.encode vs abi.encodepacked
บทนำเกี่ยวกับการเข้ารหัสฟังก์ชันการโทรโดยตรง
บทนำเกี่ยวกับการเข้ารหัสฟังก์ชั่นการเรียกเรียกคืน
ฟังก์ชั่นการเข้ารหัสโดยตรง
- ตัวเลือกฟังก์ชั่น
- ลายเซ็นฟังก์ชั่น
การสร้าง nft tokenuri on-chain
ทำให้ NFT ไดนามิก
ปรับใช้สคริปต์
การปรับใช้ NFTs เป็น testnet
บทเรียนที่ 14 สรุป
เครดิตพิเศษ:
- การแยกแยะความแข็งแกร่ง
- รู้และควบคุมที่อยู่สัญญาอัจฉริยะของคุณ
- จากความแข็งแกร่งเป็นรหัสไบต์
บทที่ 15: NextJS NFT Marketplace (ถ้าคุณเรียนจบบทเรียนนี้คุณเป็นสัตว์ประหลาดเต็มรูปแบบ!)
⌨ (23:37:03) บทเรียนที่ 15: NextJS NFT Marketplace (เต็มสแต็ค / ส่วนหน้า)
อัปเดตขนาดใหญ่โปรดอ่าน
Moralis เพิ่งอัปเดตเป็นเซิร์ฟเวอร์ที่โฮสต์ด้วยตนเองผ่านเซิร์ฟเวอร์ของตนเอง สำหรับสิ่งนี้คุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้:
- เรียนรู้วิธีการวิ่งด้วยตัวคุณเอง
- ติดตามเพื่อเรียนรู้แนวคิดของแอพโต้ตอบนี้มากขึ้นโดยไม่ต้องเข้ารหัสจริง ๆ
- ข้ามไปยังส่วนที่เราโต้ตอบกับกราฟ
TL; DR: รหัสกราฟควรทำงานเหมือนกับวิดีโอ แต่รหัส Moralis จะไม่
รหัส:
- แบ็กเอนด์ (สัญญา): https://github.com/patrickalphac/hardhat-nft-marketplace-fcc
- Frontend (Moralis Indexer): https://github.com/PatrickAlphaC/nextjs-nft-marketplace-moralis-fcc
- Frontend (TheGraph Indexer): https://github.com/PatrickAlphaC/nextjs-nft-marketplace-thegraph-fcc
- The Graph: https://github.com/PatrickAlphaC/graph-nft-marketplace-fcc
Special thanks to Matt Durkin for help with this section.
การแนะนำ
Part I: NFT Marketplace Contracts
Hardhat Setup
NftMarketplace.sol
Reentrancy
- Reentrancy
- Rekt.news
- Openzeppelin NonReentrant
NftMarketplace.sol - Continued
NftMarketplace.sol - Deploy Script
NftMarketplace.sol - Tests
NftMarketplace.sol - Scripts
Part II: Moralis Front End
What is Moralis?
- Special Guest Ivan Liljeqvist
NextJS Setup
Adding Tailwind
Introduction to Indexing in Web3
Connecting Moralis to our Local Hardhat Node
- NextJS Environment Variables
- Reverse Proxy FRP
- Moralis Forum
- Moralis Admin CLI
Moralis Event Sync
- Moralis Add Event Sync From Code
Reset Local Chain
Moralis Cloud Functions
- Moralis Cloud Functions
- Moralis Logging
- Hardhat Network Reference
- Moralis Database only confirms a transaction with a block confirmation - so we need to move blocks on our hardhat local node.
- Moralis Triggers
Practice Resetting the Local Chain
Moralis Cloud Functions II
Querying the Moralis Database
Rendering the NFT Images
- useNFTBalance
- fetch
- next/image
Update Listing Modal
Buy NFT Listing
Listing NFTs for Sale
Part III: TheGraph Front End
การแนะนำ
What is The Graph?
- Special Guest Nader Dabit
Building a Subgraph
- Example Subgraphs
- The Graph Studio
- GraphQL VSCode Extension
- GraphQL
Deploying our Subgraph
Reading from The Graph
- @apollo/client
- gql
- The Graph Docs
Hosting our Dapp
- Completed Front End Basics! -
Lesson 16: Hardhat Upgrades
⌨️ (28:53:11) Lesson 16: Hardhat Upgrades
Code: https://github.com/PatrickAlphaC/hardhat-upgrades-fcc
Upgradable Smart Contracts Overview
- Optional Video
- [Links from Video]
Types of Upgrades
- พารามิเตอร์
- Social Migrate
- พร็อกซี
- Proxy Gotchas
- Function Collisions
- Storage Collisions
- Metamorphic Upgrades
- โปร่งใส
- UUPS
- เพชร
Delegatecall
- delegatecall (solidity-by-example)
- Yul
Small Proxy Example
Transparent Upgradable Smart Contract
- Hardhat-deploy Proxies
- Openzeppelin Upgrades Plugin
- Openzeppelin upgrades tutorial
- hardhat deploy upgrades examples
Lesson 17: Hardhat DAOs
⌨️ (29:45:24) Lesson 17: Hardhat DAOs
⬆️ Up-to-date code: https://github.com/PatrickAlphaC/dao-template
Code from video: https://github.com/PatrickAlphaC/hardhat-dao-fcc
การแนะนำ
What is a DAO?
How to build a DAO
- How to build a DAO
- That's Patrick
- PY Code
- Python Video
- Openzeppelin Governance
- Compound Governance
- Contract Wizard
- CastVoteBySig
Lesson 18: Security & Auditing
⌨️ (31:28:32) Lesson 18: Security & Auditing
Code: https://github.com/PatrickAlphaC/hardhat-security-fcc
การแนะนำ
Slither
- Install python
- Slither
- solc-select
- Fuzz testing
Fuzzing and Eth Security Toolbox
- Echidna
- Docker Install
- Eth-Security-ToolBox
Closing Thoughts
- Best Practices
- Attacks
- Oracle Attacks
- Re-entrancy Attacks
- Damn Vulnerable Defi
- Ethernaut
- Some Auditors:
- OpenZeppelin
- SigmaPrime
- Trail of Bits
ยินดีด้วย
- Completed The Course! -
Where do I go now?
Learning More
- CryptoZombies
- Patrick Collins
- Dapp University
- ChainShot
- Cami Ramos Garzon
- Albert Hu
- Ivan Liljeqvist
- Ally Haire
- Stephen Fluin
- Eat the Blocks
- Austin Griffith
- Nader Dabit
- Ethereum.org
ชุมชน
- Twitter
- Hardhat Discord
- Ethereum Python Community Discord
- Chainlink Discord
- Ethereum Discord
- Reddit ethdev
Hackathons
- CL Hackathon
- ETHGlobal
- ETHIndia
Be sure to check out project grant programs!
And make today an amazing day!
ขอบคุณ
Thanks to everyone who is taking, participating in, and working on this course. It's been a passion project and a data dump of everything I've learnt in the web3 space to get you up to speed quickly. Also, a big thank you to Chainlink Labs for encouraging this course to come to light-and to the many Chainlink Labs team members who helped with various assets!