ในบทความนี้เราจะมาลงลึกถึงรายละเอียดเกี่ยวกับมาตรฐานต่าง ๆ ที่ NFT มี สำหรับใครที่ยังไม่รู้ว่า NFT คืออะไร คุณสามารถกลับไปอ่านบทความเรื่อง The NFT Bible — Part 1: NFT คืออะไร? เพื่อปูพื้นฐานความเข้าใจในเรื่อง NFT ก่อนได้เลยครับ แต่สำหรับใครที่เคยอ่านมาแล้ว เรามาเข้าเรื่องมาตรฐานต่าง ๆ ของ NFT ได้เลยครับ
Non-fungible token standards
มาตรฐานคือหัวใจสำคัญที่ทำให้สิ่งต่าง ๆ สามารถทำงานร่วมกันได้ สำหรับ NFT ก็เช่นเดียวกัน การจะทำให้ NFT ที่ถูกสร้างขึ้นมาจากคนทั่วทุกมุมโลกสามารถนำมาใช้ร่วมกัน หรือแลกเปลี่ยนกันได้ จำเป็นจะต้องมีมาตรฐานกลางที่เป็นเสมือนข้อตกลงร่วมของคนต้องการสร้าง NFT ขึ้นมา
ERC721
ERC721 ถูกนำมาใช้เป็นมาตรฐานของ NFT เป็นครั้งแรกโดย CryptoKitties โดย ERC721 นั้นเป็นมาตรฐานที่ถูกเขียนโดยภาษา Solidity นักพัฒนาสามารถสร้าง NFT ด้วยมาตรฐานของ ERC721 ได้ง่าย ๆ เพียง import โค้ดของ ERC721 ได้จากทาง OpenZeppelin library (คุณสามารถอ่านคำแนะนำเบื้องต้นในการสร้าง ERC721 Contract ได้ที่นี่)
หลักการของ ERC721 นั้นจริง ๆ แล้วค่อนข้างที่จะเรียบง่าย ERC721 ทำหน้าที่เป็นเหมือนสารบัญที่ทำหน้าที่จับคู่ข้อมูลต่าง ๆ ที่แสดงถึงเอกลักษณ์ของสินทรัพย์ต่าง ๆ กัน โดยใช้ Address เป็นตัวบ่งชี้ถึงข้อมูลแต่ละสินทรัพย์ ซึ่งรวมถึงข้อมูลของเจ้าของสินทรัพย์นั้น ๆ ด้วย นอกจากนั้น ERC721 ยังอนุญาตให้เจ้าของทำการเคลื่อนย้ายสินทรัพย์ของตัวเองด้วยการใช้คำสั่ง transferFrom
interface ERC721 {
function ownerOf(uint256 _tokenId) external view returns (address);
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
}
คุณจะสังเกตได้ว่ามีเพียงแค่สองฟังก์ชันใหญ่ ๆ เท่านั้นที่จำเป็นกับการกำหนดมาตรฐานของ NFT จริง ๆ ได้แก่การแสดงความเป็นเจ้าของ และความสามารถในการเคลื่อนย้าย แน่นอนว่ายังมีอีกสองสามฟังก์ชันหลัก ๆ ที่จำเป็นต่อการกำหนดมาตรฐานของ NFT โดยเฉพาะอย่างยิ่งเมื่อเราต้องการนำ NFT ของเราไปขายอยู่บน Marketplace แต่อย่างที่ได้กล่าวไปข้างต้น แกนหลักสำคัญของ ERC721 ค่อนข้างที่จะมีความเรียบง่ายและธรรมดามากทีเดียว
ERC1155
ERC1155 ถูกนำมาใช้เป็นมาตรฐานของ NFT เป็นครั้งแรกโดย Enjin ด้วยการนำแนวคิดเรื่อง semi-fungibility (กึ่งทดแทนกันได้) มาปรับใช้กับโลกของ NFT โดยใช้เลข ID ที่บันทึกอยู่ใน Smart Contract เป็นตัวแทนกลุ่มของสินทรัพย์ แทนที่จะใช้จับคู่กับสินทรัพย์เดี่ยว ๆ ที่แตกต่างกันเหมือน ERC721
ยกตัวอย่างเช่น ID หนึ่งถูกกำหนดให้ใช้แทนสินทรัพย์ประเภท “ดาบ” และหนึ่ง Wallet สามารถถือดาบได้มากสุดแค่ 1000 เล่มเท่านั้น ในกรณีนี้เราจะใช้ balanceOf
ในการตรวจสอบจำนวนดาบใน Wallet ใด ๆ และใช้ transferFrom
ในการเคลื่อนย้ายดาบเหล่านั้นจาก Wallet หนึ่ง ไปอีก Wallet หนึ่ง
interface ERC1155 {
function balanceOf(address _owner, uint256 _id) external view returns (address);
function transferFrom(address _from, address _to, uint256 _id, uint256 quantity) external payable;
}
ข้อได้เปรียบของ ERC1155 เมื่อเทียบกับ ERC721 ก็คือความสะดวกในการเคลื่อนย้ายสินทรัพย์ สมมติหากเราต้องการส่งดาบที่ถูกเขียน ERC721 การส่งนั้นจะทำได้ยาก เนื่องจาก NFT ที่ถูกเขียนด้วย ERC721 นั้นมีเอกลักษณ์ที่ไม่เหมือนกัน ทำให้การเคลื่อนย้ายทำได้ลำบากกว่า เพราะต้องเขียนโค้ดที่สามารถระบุสินทรัพย์แต่ละ ID ด้วยถึงแม้จะเป็นดาบเหมือน ๆ กัน
ในขณะที่ ERC1155 สามารถใช้คำสั่ง transferFrom
ในการเคลื่อนย้ายดาบหลาย ๆ เล่มพร้อมกันได้อย่างง่ายได้ อย่างไรก็ตามก็ต้องแลกมาด้วยข้อเสียที่ทำให้เราไม่สามารถตรวจสอบประวัติของดาบย้อนหลังเล่มต่อเล่มได้ เพราะดาบที่ถูกเขียนด้วย ERC1155 นั้นมีคุณสมบัติเหมือนกันหมด ไม่เหมือน ERC721 ที่แต่ละสินทรัพย์จะมีความพิเศษไม่ซ้ำกัน ทำให้การตรวจสอบประวัติย้อนหลังนั้นทำได้ง่าย
ถ้าเราสังเกตความสัมพันธ์ระหว่าง ERC1155 กับ ERC721 ดี ๆ เราจะพบว่า ERC721 นั้นมีคุณสมบัติที่เป็น Subset ของ ERC1155 นั่นเป็นเพราะว่าเราสามารถสร้าง NFT ที่มีคุณสมบัติแบบ ERC721 ได้ด้วยการใช้มาตรฐานของ ERC1155 ด้วยการกำหนดให้ NFT ที่ถูกสร้างโดย ERC1155 มี 1 ชิ้น ต่อ 1 ID
แผนผังนี้แสดงให้เห็นถึงโครงสร้างที่แตกต่างกันของ ERC20, ERC721 และ ERC1155 จะเห็นได้ว่า ERC1155 มีคุณสมบัติที่ครอบคลุมทั้ง ERC20 และ ERC721 ด้วยการเก็บข้อมูลทั้ง ID ของสิ่งของและจำนวนของสิ่งของภายใน Contract เดียว
ERC998
ERC998 เป็นมาตรฐานที่ค่อนข้างพิเศษกว่ามาตรฐานอื่นตรงที่ ERC998 เป็นมาตรฐานที่อนุญาตให้ผู้พัฒนาสามารถสร้าง NFT ที่มีความสามารถในการถือครองทั้งสินทรัพย์ประเภท non-fungible และ fungible ได้ เราจะเรียก NFT ที่ถูกสร้าง ERC998 ว่า composable NFTs หรือ NFT ที่ประกอบกันได้ ปัจจุบันมี NFT ที่ถูกสร้างด้วย ERC998 อยู่ในจำนวนที่ยังน้อยมาก ๆ อยู่
Cryptokitty ที่เป็น NFT ตัวหนึ่งอาจสามารถมีที่ลับเล็บและจานให้อาหารอยู่กับตัวมันเองได้ ภายในจานอาจมีโทเค็นที่มีชื่อว่า “chow” จำนวนหนึ่งอยู่ในนั้น ถ้าเราขาย cryptokitty ตัวนั้น หมายความว่าเราจะต้องขายทรัพย์สินทั้งหมดของ cryptokitty ตัวนั้นด้วย
Non-Ethereum standards
ในขณะที่มาตรฐานส่วนใหญ่ถูกสร้างโดยอ้างอิงจากการใช้งานบน Ethereum Chain ยังมีมาตรฐานอื่น ๆ ที่ถูกพัฒนาขึ้นบน Blockchain อื่น ๆ เช่นเดียวกัน ยกตัวอย่างเช่น DGoods ที่ถูกพัฒนาโดย Mythical Games โดยมีจุดประสงค์ในการใช้เป็นมาตรฐานของ NFT ที่สามารถใช้ข้าม Chain ต่าง ๆ ได้โดยจะเริ่มต้นจากที่ EOS
และนี่คือทั้งหมดเกี่ยวกับมาตรฐานของ NFT ที่คุณควรรู้จัก ผู้เขียนหวังเป็นอย่างยิ่งว่าบทความนี้จะมีประโยชน์ต่อการสร้างสรรค์ NFT ของท่านผู้อ่านไม่มากก็น้อย หากท่านใดมีข้อสงสัย สามารถส่งคำถามมาที่เพจ Nuttakit Kundum — ณัฐกิตติ์ ขุนดำ ได้เลยครับ
อ้างอิง: The Non-Fungible Token Bible: Everything you need to know about NFTs by Devin Finzer