The NFT Bible — Part 2: มาตรฐานในการสร้าง NFT

ในบทความนี้เราจะมาลงลึกถึงรายละเอียดเกี่ยวกับมาตรฐานต่าง ๆ ที่ 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

Share on facebook
Share on twitter
Share on linkedin

kt40

ข่าวต่อไป