The NFT Bible — Part 3: การทำงานของ NFT และวิธีที่ NFT ใช้ในการเก็บข้อมูล
The NFT Bible — Part 3: การทำงานของ NFT และวิธีที่ NFT ใช้ในการเก็บข้อมูล

ในบทความที่แล้ว The NFT Bible — Part 2: มาตรฐานในการสร้าง NFT เราได้กล่าวถึงมาตรฐานรูปแบบต่าง ๆ ที่ใช้ในการสร้าง NFT และองค์ประกอบต่าง ๆ ที่ทำให้ NFT เป็น NFT แต่ในบทความนี้เราจะมาพาทุกท่านไปให้ไกลกว่าเดิมด้วยการเข้าใจว่ารูปภาพที่เราเห็นเป็น NFT นั้น ถูกจัดเก็บและนำออกมาใช้อย่างไรกันแน่ NFT แบบไหนที่มีความ Decentralized ในขณะที่ชิ้นอื่น ๆ ไม่ใช่

Non-fungible token metadata

อย่างที่เราเคยได้กล่าวไปในบทความที่แล้ว ownerOf คือฟังก์ชันของ NFT ที่ใส่เข้ามาเพื่อใช้บอกว่าใครเป็นเจ้าของผลงาน NFT ชิ้นนั้น ๆ คุณสามารถลองเล่นฟังก์ชันนี้ได้ง่าย ๆ เพียงแค่ส่งคำสั่ง ownerOf(1500718) ไปที่ CryptoKitties smart contract ด้วยวิธีนี้จะทำให้เรารู้ได้ว่าใครกำลังครอบครอง NFT ชิ้นนี้ โดยซึ่งจะเหมือนกับการเช็คจาก OpenSea และ CryptoKitties.co

แต่ OpenSea และ CryptoKitties รู้ได้อย่างไรว่า CryptoKitty #1500718 หน้าตาเป็นอย่างไร? รู้ชื่อที่บันทึกไว้ได้อย่างไรและจะรู้ได้ไงว่ามีคุณสมบัติพิเศษอะไรบ้าง?

ตรงส่วนนี้คือหน้าที่ที่ Metadata ต้องทำด้วยการทำหน้าที่เก็บข้อมูลต่าง ๆ ที่จำเป็นของ Token ต่าง ๆ แต่ละ ID ในกรณีของ CryptoKittty ข้อมูลใน Metadata จะประกอบไปด้วยสิ่งต่าง ๆ ได้แก่ ชื่อ, รูป, คำบรรยาย และคุณสมบัติพิเศษที่มีชื่อเรียกเฉพาะว่า cattributes

ส่วนในกรณีของตัวอย่างอื่น ๆ อย่างตั๋วเข้าร่วมงาน Metadata ก็จะประกอบไปด้วยวันที่ที่จัดงาน, ประเภทของตั๋ว, รวมถึงชื่อและรายละเอียดของงาน โดย Code ที่ใช้แสดง Metadata ของ NFT ควรจะมีลักษณะประมาณนี้

{
"name": "Duke Khanplum",
"image": "https://storage.googleapis.com/ck-kitty-image/0x06012c8cf97bead5deae237070f9587f8e7a266d/1500718.png",
"description": "Heya. My name is Duke Khanplum, but I've always believed I'm King Henry VIII reincarnated."
}

คำถามต่อมาคือแล้วเราจะสามารถเก็บข้อมูลเหล่านี้ได้ที่ไหนและอย่างไรสำหรับ NFT เพื่อให้แพลตฟอร์มต่าง ๆ สามารถนำมาใช้งานได้?

On-chain vs. off-chain

ปัจจุบันในการพัฒนา NFT นักพัฒนามีทางเลือกหลัก ๆ 2 ทางในการเก็บข้อมูล Metadata คือเก็บไว้บน Contract ที่เราสร้าง NFT Token ขึ้นมา (On-chain) หรือเก็บแยกไว้ต่างหากด้วยตัวเอง (Off-chain)

On-chain Metadata

ประโยชน์ของการเก็บ Metadata ด้วยวิธีนี้ได้แก่ 1) จะคงอยู่ถาวรบน Blockchain และอยู่นอกเหนือการควบคุมของแพลตฟอร์มใด ๆ 2) ไม่สามารถเปลี่ยนแปลงได้นอกเหนือจาก Logic ของ Smart Contract

ข้อ 1 เป็นข้อที่สำคัญมากสำหรับ NFT ที่เราตั้งใจสร้างขึ้นมาให้คงอยู่ตลอดไป ยกตัวอย่างเช่นงานศิลปะที่เราก็คงอยากเราสามารถเก็บไว้ได้ตลอดไปถึงแม้ว่าเว็บไซต์ที่เราซื้อรูปภาพชิ้นนั้นมาจะถูกปิดตัวไปแล้วก็ตาม

นอกเหนือไปจากนั้นการเก็บ Metadata ไว้บน On-chain จะยังช่วยให้การทำงานของ Logic ที่ถูกเขียนบน Smart Contract ทำงานได้ง่ายขึ้นอีกด้วย เพราะทุกอย่างสามารถทำสำเร็จได้อย่างรวดเร็วบน Blockchain โดยที่ไม่จำเป็นต้องรอข้อมูลจากข้างนอกอีกทีหนึ่ง

Off-chain Metadata

ถึงแม้ว่าการเก็บ Metadata บน On-chain จะให้ประโยชน์หลาย ๆ อย่าง นักพัฒนาหลาย ๆ คนก็ยังคงเลือกที่จะเก็บข้อมูลของ NFT แบบ Off-chain อยู่ดี ด้วยเหตุผลจากข้อจำกัดต่าง ๆ ที่มาจาก Ethereum Blockchain

ดังนั้นการสร้าง NFT ด้วยมาตรฐานของ ERC721 จึงกำหนดให้มี Method ที่เรียกข้อมูลจากฟังก์ชันที่มีชื่อว่า tokenURI ที่เป็นลิงก์ไว้เก็บข้อมูล ให้แพลตฟอร์มต่าง ๆ รู้ได้ว่าควรจะเรียกดูข้อมูลจากที่ไหน

function tokenURI(uint256 _tokenId) public view returns (string)

tokenURI จะทำหน้าที่ return ลิงก์ URL ที่บรรจุข้อมูลต่าง ๆ ของ NFT ไว้ในรูปแบบไฟล์ JSON ที่หน้าตาจะคล้ายกับ Dictionay ที่มี Key และ Value เหมือนในตัวอย่างข้างบนที่ผ่านมา โดยที่รูปแบบควรจะสอดคล้องกับมาตรฐานของ ERC721 metadata standard เพื่อที่จะได้ทำงานได้บนแพลตฟอร์มอื่น ๆ อย่าง OpenSea ด้วย

แต่หากนักพัฒนาต้องการที่จะใส่ลูกเล่นเพิ่มเติมอย่าง คุณสมบัติพิเศษ ไฟล์ภาพเคลื่อนไหว หรือภาพพื้นหลัง พวกเขาสามารถเลือกใช้ extensions to the ERC721 metadata standard แทนมาตรฐานพื้นฐานที่เพิ่งได้กล่าวไปข้างต้นได้

Off-chain storage solutions

หากคุณต้องบันทึกข้อมูลด้วยวิธี Off-chain คุณมีสองทางเลือก ได้แก่

Centralized servers

วิธีที่ง่ายที่สุดสำหรับการจัดเก็บข้อมูล Metadata ของ NFT คือการเก็บไว้ใน Centralized servers ของตัวเอง หรือใช้บริการ cloud storage solution อย่าง AWS แน่นอนว่าทางเลือกนี้แลกมาด้วยข้อเสียหลายอย่างด้วยกัน ได้แก่ 1) ผู้พัฒนาสามารถเปลี่ยน Metadata ได้ตลอดเวลาที่พวกเขาต้องการ 2) ถ้าโปรเจคนี้ปิดตัวลง มีความเป็นไปได้ที่ Metadata จะถูกลบออกและไม่สามารถเข้าถึงได้อีกต่อไป

IPFS

นักพัฒนาส่วนมากโดยเฉพาะกลุ่มนักพัฒนาที่กำลังสร้างแพลตฟอร์มที่เกี่ยวกับงานศิลปะส่วนใหญ่เลือกที่จะใช้ InterPlanetary File System (IPFS) เพื่อจัดเก็บข้อมูล Metadata

IPFS เป็นระบบจัดเก็บไฟล์แบบ P2P ที่อนุญาตให้เราสามารถ Host เนื้อหาข้ามคอมพิวเตอร์ได้ ดังนั้นไฟล์จะถูกเก็บไว้ในคอมพิวเตอร์หลากหลายเครื่อง สิ่งนี้ทำให้เรามั่นใจได้ว่า

  1. ข้อมูล Metadata จะไม่สามารถถูกแก้ไขได้ โดยไม่มีการตรวจสอบ
  2. ตราบใดที่มี node ในเครือข่ายยังทำหน้าที่เก็บข้อมูลอยู่ ข้อมูลจะคงอยู่ไม่ว่าจะเวลาผ่านไปนานแค่ไหน

ขณะนี้มีบริการต่างๆ ที่ให้บริการ IPFS เช่น Pinata ที่ทำให้กระบวนการใช้งาน IPFS นี้ง่ายขึ้นสำหรับนักพัฒนา

ที่มา: The Non-Fungible Token Bible: Everything you need to know about NFTs By Opensea

About this author

Crypto Community สำหรับคนรุ่นใหม่ ให้คุณได้เรียนรู้เรื่อง Blockchain แบบเจาะลึกในทุก ๆ วัน
Share on facebook
Facebook
Share on twitter
Twitter
Share on telegram
Telegram
Share on email
Email
more articleS
© 2019 BITCOINADDICT | ALL RIGHTS RESERVED