Functional NFT คืออะไร แตกต่างกับ NFT ปกติยังไง !? ทำไมต้อง MINT ผ่านเว็บ

Nonthasak L. | MetaWarden #173
5 min readJan 2, 2022

Functional NFT คือ อะไร ? แล้วมีความแตกต่างจาก NFT ที่เป็นภาพวาดปกติ ที่พวกเราเหล่าศิลปินลงขายกันใน opensea และ platform อื่นๆ ยังไง แล้วทำไมต้องไป mint กันต่างหากที่หน้าเว็บไซต์ function ของมันมาได้ยังไง แล้วเอาไปใช้ตอนไหน มาเรียนรู้ไปด้วยกันคับ

NFT ที่เพื่อนๆ artist ลงขายบน Opensea

พูดถึง NFT ที่เพื่อนๆ ศิลปิน ลงขายอยู่บน platform ต่างๆ ที่เป็นการ วาดมือ แล้วลงทีละตัว หรือ generate ด้วย code ของโปรแกรมออกมาหลายๆ ตัว แล้วเอามาลงกับ platform จะเป็นการ mint NFT ขึ้นมาจาก smart contract ของ platform นั้น platfrom อย่าง opensea ก็จะเป็น มาตรฐาน ERC1155 ซึ่งจะเป็น multi token standard หรือ มี token หลายอย่างอยู่ใน contract เดียว

ที่มา : https://docs.openzeppelin.com/contracts/3.x/erc1155

ทำให้ platform สามารถจัดการ nft ของเพื่อนๆ แยกเป็น collection ได้ใน smart contract อันเดียว (ถ้าสังเกต เพื่อนๆ จะเห็น tokenId ที่เยอะมากๆ แล้วก็ contract address เป็น address (0x495f…7b5e) เดียวกันหมดถ้าเพื่อนๆ ลงงานบน opensea ด้วยการ create ผ่าน platform) แปลว่างานของเพื่อนๆ ถูก mint บน smart contract ของ platform โดยทุกๆ งานจะอยู่บน smart contract เดียวกันนี้ ตรงนี้ทำให้ NFT ที่เพื่อนๆ ลงขายบน platform ไม่สามารถทำให้มี FUNCTION อื่นๆ เพิ่มเติมได้นั่นเอง เพื่อนๆ จะสามารถสังเกตุได้จากหัวข้อ details ของ NFT ตัวนั้นๆ และมันจะแสดง token standard เป็น ERC-1155 และ Token ID จะมีตัวเลขที่เยอะมาก แต่ NFT ที่เป็นแบบ Functional มักจะเป็น NFT ที่เป็นแบบ ERC-721

ตัวอย่างข้อมูล NFT ที่ create บน Opensea
ตัวอย่างข้อมูล NFT ที่ สร้าง smart contract ขึ้นมาเองแบบ ERC721

นอกจากนั้นยังมีข้อสังเกตุอีกอย่างคือ ถ้าเป็น NFT แบบท่ีไม่ได้สร้าง smart contract เองตอนที่ mint จะไม่สามารถ ลิงค์ไปที่ smart contract นั้นได้ โดยที่ปกติแล้วถ้าเป็นการสร้าง smart contract เองจะสามารถที่จะกดเพื่อเข้าไปที่ smart contract ของ NFT ได้ผ่านการกดที่หัวข้อ Date

NFT ที่ create บน Opensea
NFT ที่ ถุก mint จาก smart contract ที่สร้างขึ้นมา

เพื่อน ๆ สามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ opensea store front smart contract ได้ตามลิงค์นี้

Functional NFT เป็นยังไง แล้วต่างจาก NFT ทั่วไปยังไง ?

มาที่ Functional NFT ผมจะขอยกตัวอย่างโปรเจค NFT ของผมเองที่ทำร่วมกันกับ น้อง Artist อีกหนึ่งคนเป็นโปรเจคที่ทำกันสองคน ชื่อโปรเจคว่า PookyPuppy NFT เป็น Functional NFT ที่เกิดจากแรงบัลดาลในของน้องนักวาด ที่อยากให้คนที่ซื้องานของเราได้มีสิทธิพิเศษในสิ่งที่เราจะทำต่อไปในอนาคตเมื่อคอมมูนิตี้ใหญ่ขึ้น เลยออกแบบ PookyPuppy ให้เป็นแบบว่า พอ mint แล้วจะเรียก function ที่จะไป random metadata ที่เป็น % discount ออกมาในช่วง 5–20 % โดยแต่ละตัวจะไม่เท่ากัน เพื่อให้เกิดเป็น rarity ในตัวของ NFT ขึ้นมา แล้วก็อยากเจ้าของ NFT สามารถที่จะทำเจ้าของรู้สึกว่าเป็นเจ้าของน้อง pooky จริงๆ ด้วยการที่สามารถตั้งชื่อให้กับ NFT น้องหมา Pookypuppy ก็เลยมี function ที่สามารถที่จะเปลี่ยน ชื่อใน metadata ของน้องได้ เกิดเป็น dynamic metadata นอกจากนั้นยังอยากจะคืนกำไรให้กับคนที่มา mint โดยออกแบบให้ทุกๆ 200 ตัวที่ถูก mint ออกมาจะมีการเรียก function สุ่มเพื่อที่จะส่งเงินส่วนนึงเป็นรางวัลให้กับคนที่มา mint ได้ด้วย ! (รายละเอียดเพิ่มเติมท้ายบทความ)

dynamic metadata
dynamic metadata

จากที่อธิบายไปตอนต้นจะเห็นว่า NFT ของเราไม่ได้เป็นแค่ NFT ที่ลงขายบน Opensea เหมือนงาน วาดปกติแบบที่เพื่อนๆ ศิลปินทำกันตามปกติ จะเห็นว่านอกจากจะ Pooky Puppy NFT จะเป็นภาพวาด style PFP หรือ ที่เอาไปใช้สำหรับเป็น Profile picture ใน social media ต่างๆ เพียงอย่างเดียว แต่ถูกออกแบบมาให้มี function การทำงานต่างๆ เพิ่มเติม จากเดิม เพื่อให้คนที่เป็นเจ้าของสามารถเอา NFT ที่ตัวเองถือครองอยู่ไปใช้งานได้มากกว่าการเป็นแค่ รูปภาพ ดังนั้นผมคิดว่าน่าจะสามารถสรุป ง่ายๆ สั้นๆ ได้ว่า

Functional NFT = NFT ที่มี function นั่นเอง

นั่นก็หมายความว่า Item NFT ในเกมส์ก็เป็น functional NFT เช่นกัน เพราะสามารถที่จะเอาไปใช้งานในเกมส์ได้ ทำให้รูปภาพ Item นั้นเป็นของที่มี function การใช้งานขึ้นมานั่นเอง

แล้วทำไมต้อง mint ผ่าน เว็บ ?

หน้า web3 connect wallet ของ pookypuppy nft

เหตุผลที่ต้องมีการ mint งาน ผ่านเว็บไซต์เพราะว่า Functional NFT มักจะเป็น NFT ที่ต้องสร้าง smart contract ขึ้นมาใหม่ ไม่ได้ลงงานกับ Opensea เนื่องจากเราต้องการสร้าง custom function ให้กับตัว NFT ของเรา เมื่อไม่ได้เป็น smart contract เดียวกันกับ platform ดังนั้นเราจึงไม่สามารถที่จะไป mint แล้ว ขายงานได้บน platform ด้วยการไป create ตรงๆ บน opensea

คนที่จะ mint งานของเราจะต้องมา mint จาก smart contract ของเราโดยตรง โดยที่เราจะต้องมี function สำหรับ mint และ รับเงินจากผู้ซื้อ

function mintPooky จาก Pooky Puppy NFT Smart Contract

ปกติแล้วพอเราทำ smart contract เสร็จแล้ว หลังจาก deploy ถ้าไม่มีการกำหนดอะไรเพิ่มเติม ลูกค้าสามารถที่จะเข้ามา mint งานผ่าน smart contract ได้โดยตรง

แต่ที่ต้องมี Website สำหรับที่จะไป mint ก็เพื่อ อำนวยความสะดวกให้คับคนที่มา mint โดยที่คนที่เข้ามา mint จะสามารถที่จะ connect wallet แล้วก็ mint ได้เลย ผ่านเทคโนโลยี web3

หน้าจอสำหรับ mint pookypuppy nft

Website ยังใช้เพื่อโฆษณาและ เผยแพร่ข้อมูลเกี่ยวกับ NFT ของเราได้เป็นอย่างดี เช่นการนำเสนอ ข้อมูลเกี่ยวกับตัว NFT, Roadmap, Team และ ยังใช้เป็นช่องทางสำหรับการนำเอา NFT มาใช้สิทธิ์ หรือ เอามาเล่น function ที่ creator สร้างขึ้นสำหรับตัว NFT ได้

Opensea เป็น platform ที่เจ๋งมากๆ โดยที่มันจะสามารถค้นหา NFT ที่ถูก mint ขึ้นมาใหม่บน chain ที่มัน support ได้ (ETHEREUM, POLYGON, KLAYTN) ทำให้เมื่องานใน smart contract ของเรา ถูก mint มันจะไปขึ้นโชว์บน opensea อัตโนมัติ (อัจริยะมากๆ)

mint แล้วเอาไปทำอย่างอื่นต่อได้ (ใช้ Function)

หน้าต่าง ที่จะใช้ function update metadata เพื่อเปลี่ยนชื่อ และ description ของน้องได้

รูปด้านบนเป็นการเอา NFT ไปใช้งานในการ update metadata เพื่อเปลี่ยนข้อมูลชื่อ และ description ให้กับ Pooky Puppy NFT

ชื่อ token ก่อนเปลี่ยนชื่อ
ชื่อ token หลังเปลี่ยนชื่อ

ตามไปดูใน collection ได้ ที่นี่

function mintPooky จาก Pooky Puppy NFT Smart Contract

จากรูปด้านบนจะเห็นว่าเราได้มีการออกแบบ function เอาไว้เพื่อสุ่มแจก MATIC แบบสุ่มให้กับคนที่มา mint โดยจะแจกทุกครั้งที่ครบ 200 ตัว และเมื่อตัวสุดท้ายถูก mint ก็จะทำให้เจ้าของตัวสุดท้ายเป็นคนได้รับ lastSurpirse MATIC ไป

จะเห็นว่า Functional NFT สามารถทำให้ NFT ของเรามี function การทำงานเพิ่มจากเดิมได้ โดย Function ที่ใส่เพิ่มเติมเข้าไปไม่จำกัดว่าจะต้องเป็น function แบบไหน สามารถเป็น function เพื่อการตลาดเช่น Whitelist Presale หรือ function ที่จะเอาไปใช้งานอื่นๆ ต่อ จริงๆ แล้วขึ้นอยู่กับ ไอเดียของ creator เลย ทำให้ NFT แบบที่เป็น Functional มีความยืดหยุด และขยายข้อจำกัดเรื่องของความคิดสร้างสรรค์ที่เรามีออกไปได้กว้างมากเกินว่าที่ผมจะ จินตนาการไปถึง …

Pooky Puppy NFT

อย่างงานของเรา Pooky Puppy NFT เป็นผลงานความร่วมมือของผมกับเพื่อน ที่เป็น NFT ที่ถูกออกแบบมาให้เป็น Functional NFT น้องมี Metadata ที่เป็น แบบ Dynamic เมื่อเพื่อนๆ ไปเปลี่ยนชื่อกับ description ของน้องผ่าน เว็บไซต์ของเรา แล้วชื่อ และ description จะไปเปลี่ยนบน opensea ด้วย ! (refresh metadata หลังเปลี่ยนแล้วรอ 1–2 นาที) โดยที่ศิลปินอยากให้เพื่อนๆ collector มีสิทธิพิเศษที่สามารถไป mint ผลงาน collection ต่อไป หรือ กิจกรรมอื่นๆ ที่จะเกิดขึ้น ในราคาพิเศษ เลยออกแบบให้มี metadata ที่เป็น % ที่จะออกมาแบบ สุ่ม (5–20%) ตัวไหน % มากตัวนั้นก็ได้รับสิทธิพิเศษมากไปตามไปด้วย และยังมีระบบวันเกิดที่ก็คือวันที่น้องถูก mint นั่นเอง อาจจะมีสิทธิพิเศษสำหรับวันเกิดก็ได้นะ ! นอกจากนั้นทุกๆ 200 ตัวเราสุ่มแจก 720 MATIC ให้ผู้โชคดี 1 คน และ สำหรับคนที่ Mint ตัวสุดท้ายรับไปเลย 1700 MATIC !! นอกจากนั้นเรายังมี sharity wallet ที่สามารถตรวจสอบได้ว่ามีเงินอยู่เท่าไหร่ สามารถตรวจสอบ transaction ได้ว่าเราเอาเงินไปบริจาคจริงหรือเปล่า นอกจากนั้นยังมีระบบพิเศษที่ทำให้น้องสามารถเอาไปสร้างเป็นเกมส์ต่อได้ด้วยการ สุ่ม status กลุ่ม str, agi, vit, wis ออกมาได้ด้วย !

คุณสมบัติของ Pooky Puppy NFT

  1. มี 3000 ตัว
  2. เป็น Genertive Art ผสมกับ การวาดมือแบบ Rare 1/1 แทรกลงไป (Beautiful Number Rarity)
  3. มี Rarity แบบ random generate on chain discount % (5–20%) ซึ่งเอาไปทำอะไรได้อีกเยอะมาก
  4. มีระบบวันเกิด
  5. ทุกๆ 200 ตัวที่ถูก mint จะแจก 720 Matic แบบสุ่ม
  6. คนที่ mint ตัวสุดท้ายรับไปเลย 1700 Matic ทันทีที่กด mint สำเร็จ !~
  7. Roadmap และอื่นๆ ที่อนาคตอยากให้เป็นแบบ community driven สามารถเปลี่ยนแปลงได้ตามความคิดเห็นของ community และตั้งเป้าว่าอยากจะเป็น NFT ที่สามารถทำให้เกิด real world usecase ได้

สุดท้ายนี้ ขอบคุณเพื่อนๆ ที่อ่านมาจนจบครับ บทความนี้สามารถแก้ไข และเพิ่มเติมได้ครับ ตรงไหนที่ผิดพลาด เข้าใจผิด สามารถที่จะ คอมเมนท์ หรือ ส่งข้อความเพื่อแก้ไข และแนะนำส่วนต่างๆ ได้เต็มที่ครับ

Team

pooky puppy nft team

--

--

Nonthasak L. | MetaWarden #173

เกษตรกรที่สนใจการเขียนโปรแกรม และทำให้งานสวนง่ายขึ้นอีก Solidity + Web3 DEV , NFT Addict— self taught developer