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

ข่าวต่อไป

FOLLOW ME

Blockchain Life 2024

Crypto Coffee

Cryptomind Research Talk

CryptOmakase

ข่าวต่อไป