มาตรฐาน ERC-721
โทเค็นที่ไม่สามารถทดแทนกันได้
มาตรฐาน ERC-721 เป็นบทเรียน Web3 & DApp Development Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Web3 & DApp Development Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
ERC-721 คืออะไร
ERC-721 คือมาตรฐานสำหรับโทเค็นที่ไม่สามารถทดแทนกันได้ (NFT) ต่างจาก ERC-20 โทเค็นแต่ละรายการมีเอกลักษณ์เฉพาะตัวและระบุด้วย tokenId ที่แตกต่างกัน
NFT ใช้แสดงความเป็นเจ้าของสิ่งของที่มีเพียงชิ้นเดียว เช่น งานศิลปะ ของสะสม สินทรัพย์ในเกม และอื่น ๆ
โทเค็นที่ทดแทนกันได้กับโทเค็นที่ไม่สามารถทดแทนกันได้
ความแตกต่างสำคัญมีดังนี้:
- ERC-20 — โทเค็นทั้งหมดเหมือนกันและแลกเปลี่ยนแทนกันได้ ติดตามด้วยยอดคงเหลือ
- ERC-721 — โทเค็นแต่ละรายการมีเอกลักษณ์เฉพาะตัว ติดตามเจ้าของแยกตาม tokenId
คุณเป็นเจ้าของโทเค็นหมายเลข 42 โดยเฉพาะ ไม่ใช่เพียงส่วนหนึ่งของกลุ่มโทเค็น
ฟังก์ชันหลักเกี่ยวกับความเป็นเจ้าของ
ERC-721 ติดตามความเป็นเจ้าของด้วยมุมมองสำคัญสองรายการ:
ownerOf(tokenId)— ใครเป็นเจ้าของโทเค็นที่ระบุbalanceOf(owner)— ที่อยู่หนึ่งเป็นเจ้าของโทเค็นกี่รายการ
<code>function ownerOf(uint256 tokenId) external view returns (address);
function balanceOf(address owner) external view returns (uint256);</code>ฟังก์ชันการโอน
ERC-721 มี transferFrom และ safeTransferFrom ที่ปลอดภัยกว่า โดยจะตรวจสอบว่าสัญญาผู้รับสามารถจัดการ NFT ได้
<code>function transferFrom(address from, address to, uint256 tokenId) external;
function safeTransferFrom(address from, address to, uint256 tokenId) external;</code>ฟังก์ชันการอนุมัติ
เจ้าของสามารถอนุญาตให้ผู้อื่นโอนโทเค็นบางรายการด้วย approve หรือมอบสิทธิ์ครอบคลุมโทเค็นทั้งหมดของตนด้วย setApprovalForAll
<code>function approve(address to, uint256 tokenId) external;
function setApprovalForAll(address operator, bool approved) external;
function getApproved(uint256 tokenId) external view returns (address);
function isApprovedForAll(address owner, address operator) external view returns (bool);</code>เหตุการณ์ที่จำเป็น
ERC-721 กำหนดเหตุการณ์สามรายการ ได้แก่ Transfer, Approval และ ApprovalForAll โปรดสังเกตว่า tokenId ถูกทำดัชนีไว้ จึงติดตามการโอน NFT รายการใดรายการหนึ่งได้ง่าย
<code>event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);</code>safeTransferFrom และ onERC721Received
safeTransferFrom ช่วยป้องกันไม่ให้ NFT ติดค้าง หากผู้รับเป็นสัญญา สัญญานั้นต้องติดตั้ง onERC721Received และส่งคืนค่าพิเศษที่ถูกต้อง มิฉะนั้นการโอนจะถูกย้อนกลับ
<code>// receiving contract must implement:
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data)
external returns (bytes4);</code>ส่วนขยายข้อมูลกำกับ
NFT ส่วนใหญ่ติดตั้งส่วนขยายข้อมูลกำกับที่เป็นตัวเลือก ซึ่งเพิ่ม name(), symbol() และที่สำคัญคือ tokenURI(tokenId) ซึ่งชี้ไปยังข้อมูลกำกับ JSON ของโทเค็นนอกบล็อกเชน
<code>function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);</code>การตรวจจับอินเทอร์เฟซด้วย ERC-165
ERC-721 สร้างต่อยอดจาก ERC-165 ซึ่งช่วยให้สัญญาประกาศอินเทอร์เฟซที่รองรับผ่าน supportsInterface ตลาดซื้อขายใช้ข้อมูลนี้เพื่อตรวจจับ NFT
<code>function supportsInterface(bytes4 interfaceId) external view returns (bool);</code>การใช้ OpenZeppelin ERC721
เช่นเดียวกับ ERC-20 แนวทางที่ใช้งานได้จริงคือสืบทอดการติดตั้ง ERC721 ของ OpenZeppelin ที่ผ่านการตรวจสอบแล้ว แล้วเพิ่มตรรกะการสร้างโทเค็นของคุณ
<code>// import '@openzeppelin/contracts/token/ERC721/ERC721.sol';
// contract MyNFT is ERC721 {
// constructor() ERC721('MyNFT', 'MNFT') {}
// }</code>สินทรัพย์อยู่ที่ใด
NFT บนบล็อกเชนมีเพียงรหัสและเจ้าของเท่านั้น รูปภาพหรือสื่อจริงมักอยู่นอกบล็อกเชน (บ่อยครั้งอยู่บน IPFS) โดยอ้างอิงผ่าน tokenURI บล็อกเชนยืนยันความเป็นเจ้าของ ไม่ใช่ตัวไฟล์เอง
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับมาตรฐาน ERC-721
สรุปทบทวน
คุณได้เรียนรู้มาตรฐาน ERC-721:
- NFT มีเอกลักษณ์เฉพาะตัว ระบุด้วย tokenId และติดตามผ่าน
ownerOf - การโอนใช้
transferFromและsafeTransferFromที่ปลอดภัยกว่า - การอนุมัติ:
approveสำหรับโทเค็นแต่ละรายการ และsetApprovalForAllสำหรับโทเค็นทั้งหมด - ส่วนขยายข้อมูลกำกับเพิ่ม
tokenURIและ ERC-165 ช่วยตรวจจับอินเทอร์เฟซ - โดยทั่วไปสินทรัพย์อยู่ นอกบล็อกเชน และอ้างอิงผ่าน URI
เรียนรู้ Web3 & DApp Development Fundamentals ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 29
- บทเรียน
- 105
คำถามที่พบบ่อย
บทเรียน “มาตรฐาน ERC-721” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “มาตรฐาน ERC-721” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Web3 & DApp Development Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “มาตรฐาน ERC-721”
โทเค็นที่ไม่สามารถทดแทนกันได้ คุณปฏิบัติ Web3 & DApp Development Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Web3 & DApp Development Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Web3 & DApp Development Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “มาตรฐาน ERC-721” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Web3 & DApp Development Fundamentals นี้ได้ไหม
ได้ บทเรียน Web3 & DApp Development Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- มาตรฐาน ERC-721
- การสร้าง NFT
- เมทาดาทาโทเค็น
- ตลาดซื้อขาย