Web3 & DApp Development Fundamentals · บทเรียน

มาตรฐาน ERC-721

โทเค็นที่ไม่สามารถทดแทนกันได้

บทเรียน 1 จาก 413 ขั้นตอน

มาตรฐาน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. มาตรฐาน ERC-721
  2. การสร้าง NFT
  3. เมทาดาทาโทเค็น
  4. ตลาดซื้อขาย
← กลับไปที่ Web3 & DApp Development Fundamentals