ทดลองทำ generative NFT แบบง่ายๆ แบบไม่ต้องโค้ดกัน บน speedboat

Blockchain & Cryptocurrency Aug 5, 2022

เราเองสนใจเรื่องการทำ generative NFT มาพักนึงแล้ว ตามความเข้าใจก็คือแยก layer แล้วทำการ coding เพื่อ random แต่ละ layer มาเป็นรูป NFT นั้นๆ แต่เดี๋ยวนี้มี tool ทำให้เราโฟกัสแค่งาน art อย่างเดียวพอ เดี๋ยว tool ช่วยจัดการให้เองจ้า

รู้จัก generative NFT กันก่อน

Opensea - the largest NFT marketplace
Photo by PiggyBank / Unsplash

NFT ย่อมาจาก Non-Fungible Token เป็น token ประเภทนึง ที่ไม่สามารถแยกเป็นหน่วยย่อยๆได้ มีความเฉพาะตัว (unique) มีเพียงหนึ่งเดียว ทดแทนกันไม่ได้ เช่น ภาพ NFT ชนิด profile picture, งาน digital art, บัตรเข้างาน

generative art คือ การใช้ computer เพื่อสร้างภาพภาพหนึ่งขึ้นมา ก็น่าจะเป็นการ coding เพื่อ render รูปแต่ละ layer ออกมาเป็นภาพนั่นแหละ

ดังนั้น generative NFT คือ NFT ที่ใช้ computer ในการ generate ภาพนั่นเอง

ตัวอย่าง generative NFT ในตลาด เช่น Bored Ape Yacht Club (BAYC), CryptoPunks

แนะนำ Speedboat 🛥

เนื่องจากกระแสของ free mint ค่อนข้างมาแรง เราก็เลยทำโปรเจกต์ NFT free mint เพื่อแจกลูกเพจ 500 ชิ้นด้วยกัน แต่เราจะต้องทดลองก่อนเนอะ ทาง Bored Town เขามี workshop ใน discord ใช้ speedboat เนอะ แต่เนื่องจากวันนั้นเข้าทำงานที่ออฟฟิศเลยไม่ได้เข้าไป แต่ก็มีคนสรุปไว้ให้ด้วยหล่ะ

วิธีทำสามารถดูตามคลิปนี้ได้เลย

speedboat เป็น tool ที่ช่วยให้เจ้าของโปรเจกต์ NFT ไม่ต้อง coding generate รูปเอง ไม่ต้องเขียน smart contract เอง แล้วก็ไม่ต้องวางขายเอง ใช้ platform เขาได้เลย

เตรียมงานอาร์ตของเราให้พร้อม

ใน workshop เขาจะให้เตรียมของ คือ รูป layer ต่างๆของ NFT ของเรา folder ละ 4 file ขึ้นไป เรียงจาก layer ล่างสุดไปบนสุด ดังนี้

  1. Background พื้นหลัง เป็นพื้นทึบเนอะ
  2. Body ส่วนลำตัว อันนี้เป็นพื้นใส
  3. Head ส่วนหัว อันนี้เป็นพื้นใส
  4. Accessory ของที่ถือ อันนี้เป็นพื้นใส

ทั้งหมดเป็นไฟล์ png นะ

ตัวอย่างที่เราทำเป็นน้อง pastel เป็นน้องกระต่ายผู้ชายสีขาว เป็น emote ช่องเราใน Twitch นั่นเอง

ไปซับช่องเพื่อใช้ emote น้องพาสเทลสุดน่ารักใน Twitch และบน Discord (อย่าลืมจอยดิสเรานะ) ได้ที่ https://www.twitch.tv/mikkipastel/ จ้า

โดยการทดลองเราหยิบ 1 ใน emote มาลองทำ นั่นคือ ตัว Yeah นั่นเอง เพราะอยากให้น้องแสดงสีหน้า ใส่เสื้อผ้าต่างๆ ถือหรือใส่ accessory ต่างๆได้

ตัวรูปเราใช้แอพ Procreate รูปขนาด 500 x 500 pixel แบ่งเป็น group ของ layer มีพื้นหลังอยู่ล่างสุด ตามมาด้วยหน้า เสื้อผ้า และของตกแต่ง

การ export แต่ละส่วน ให้ปิด layer ที่ไม่เกี่ยวข้องออก อันพื้นใสให้ปิด layer Background color ออก แต่ถ้าทำพื้นหลังทึบก็ไม่ต้องเปิด layer Background color ก็ได้นะ

แนะนำให้ export ทีละส่วน แล้ว export จาก procreate เข้าไปใน folder ของ iCloud จะรวดเร็วสุดๆ

แต่ละ layer ในชุดสาธิตก็จะเป็นแบบนี้

ไปใช้ Speedboat 🛥 เพื่อสร้างงานของเรากันเถอะ

ในที่นี้เราจะสร้างผ่าน speedboat กัน เป็นเว็บไซต์ที่นอกจากช่วยทำ generative NFT แล้ว ยังทำส่วน smart contract และ metadata ของ NFT แต่ละตัวของเราด้วยนะ แถมยังแบ่งรอบขาย NFT เพิ่ม whitelist ได้ด้วยนะ แล้วเขาก็มี lanuchpad ให้เราใช้ด้วย ไม่ต้องไปทำหน้าบ้านเองให้เสียเวลา ไม่ต้องให้คน mint งานเราระแวงว่ามันจะมา scam ไหมอีกด้วย

สร้างโปรเจกต์ NFT ของเรากัน

เมื่อเราเข้ามาเว็บนี้แล้ว กดที่ปุ่ม Launch App ได้เลย จากนั้นทำการเชื่อมต่อกระเป๋า metamask ของเรา

เข้ามาถึงหน้านี้แล้วให้เลือก chain ที่เราต้องการ ใน workshop เขาเลือกเป็น Polygon ทางเราขอเลือกเป็น Rinkeby Testnet ก็แล้วกันเนอะ เมื่อเลือกเชนตัวเว็บจะเรียก Metamask เพื่อ switch chain ในกระเป๋าเนอะ

พร้อมแล้วกด Add Project กันเลย ใส่ชื่อ collection ของเรา และ symbol คือ เหรียญพวก ERC-20 cryptocurrency ต่างๆจะมีชื่อ token ของมันอยู่ เช่น Ethereum คือ ETH ใช่ป่ะ ก็คือ token name นั่นแหละ (แต่ใดๆคือชื่อซํ้ากันได้แหละ) พอกรอกเรียบร้อยกด Next จ้า

เพิ่ม layer ของแต่ละชิ้นที่เราทำไว้

จากนั้นจะพาไปหน้าใหม่ มี detail ให้กรอกเพิ่มเติม คือ Default Price for Public Rounds คือราคาในรอบ public และ Royalty Fee ถ้ามีคนได้งานเราแล้วเอาไปขายต่อ เราจะได้กี่เปอร์เซ็นต์จากการขายรอบนั้นๆ อันนี้ใส่ทีหลังได้

ที่ต้องกรอกแน่ๆ คือ Total Amount of NFT ว่า collection นี้ของเราจะมี NFT กี่ชิ้น จากนั้นจะเริ่มเพิ่ม layer ที่ NFT Properties กันก่อนเลย

เมื่อกด Add Layer แล้ว ให้เพิ่มจาก layer ล่างขึ้นบน ก็คือเพิ่ม Background ก่อน ตามด้วย Face Cloth และ Accessory

ในที่นี้เราจะเพิ่ม layer Background ก่อนเนอะ แล้วกด Add layer

หลังจากกด Add layer แล้ว ต่อมากด Upload Image เพื่อทำการอัพรูปพื้นหลังของเรา จากนั้นกด Upload

ทำการอัพโหลด layer ที่เหลือจนครบเนอะ จะได้หน้าตาแบบนี้

ปรับเพิ่มลดจำนวนเพื่อเพิ่มลดความแรร์

เมื่อเรียบร้อยแล้วก็ได้เวลาจัดการใส่เรทกาชากัน ว่าเราอยากให้อันนี้ออกเยอะน้อยเท่าไหร่ ซึ่งเขาจะหารเฉลี่ยเบื้องต้นให้เราแล้วแหละ

preview ผลงานเบื้องต้น

เมื่อเราพอใจในเรทกาชาของเราแล้ว ลองกด Preview NFT ดูกัน เขาจะ preview ให้เราดู 3 อัน แบบนี้

Deploy งานของเรา

เมื่อกรอกทุกช่องเรียบร้อยแล้ว กดปุ่ม Continue รอระบบ deploy รูปแปปนึง ออกมาเป็นน้องน่ารักๆแบบนี้ โปรเจกต์เราเรียบร้อยแล้ว จิ้มที่ Deploy โล้ดดด เพื่อทำการสร้าง smart contract

หน้าตาที่ได้ เลือกเป็น ERC721A ก็ได้แหละ ประหยัดค่า gas เมื่อ mint หลายชิ้น เรา set ราคา public ไว้ที่ 0.005 rETH เนอะ และมี platfrom fee 0.5% แล้วกด Proceed to Deploy เลยจ้า

ค่าใช้จ่ายที่ต้องใช้จ้า บวกกับค่า gas

การรับ ETH มาใส่ในกระเป๋าบน test network Rinkeby สามารถเข้าไปรับบนเว็บไซต์เหล่านี้ได้เลย
https://faucet.rinkeby.io/
https://rinkebyfaucet.com/

เมื่อตัดเงินเรียบร้อยแล้ว ทำการกด Reload/Refresh อีกรอบนึง

จัดการการขาย NFT collection ของเรา

เราก็จะจัดการโปรเจกต์ NFT ของเราได้แล้วนะ

เริ่มการขายครั้งแรก กด Start Selling NFT ได้เลย

ใส่ชื่อรอบขาย ราคา และแต่ละคน mint ได้สูงสุดกี่อัน โดยเราทำเป็นรอบ whitelist ราคา 0 เพราะเป็น free mint และจำกัด 1 คนต่อ 1 ชิ้นนะ

ส่วนประเภทของรอบ โดย default ให้เป็น Public มา แต่เป็นรอบ whitelist จะต้องเป็น Private เนอะ ให้ทำการ import file .csv ขึ้นไป ในไฟล์ก็มีเลขกระเป๋าของผู้ได้ whitelist เนอะ

ตัวไฟล์หน้าตา template เป็นแบบนี้เนอะ เปิดแก้ใน VS Code หรือตั้งใน Excel หรือ Google Sheet ใดๆก็ได้

จะได้แบบนี้เนอะ กด Add Wallets เลย

จากนั้นก็จะเสียค่า gas ไป 1 กรุบ

เมื่อใส่เรียบร้อยกด Sell Now จะมีหน้า metamask ขึ้นมาเพื่อจ่ายค่า gas อีก 1 กรุบ ราคาทั้งสอบรอบนี้พอๆกันแหละ

ส่วนรอบ public ก็ทำคล้ายๆกันเนอะ ไม่มีอะไรมาก จะพากลับมาหน้านี้ เอ๊ะน้องซํ้าหรอ

อ่ะไปจิ้มที่ Manage เพื่อดูรอบการขายของเราเนอะ แบบนี้ๆ เราก็สามารถปรับแต่งอะไรพวกนี้ได้เนอะ

ถ้าเราจะปิดรอบขาย กดที่ Selling นะ เสียค่า gas ด้วย 1 กรุบ

อันนี้ optinal นะ เมื่อกด Get Widget จะพบกับปุ่ม mint งานอ่ะ แบบนี้ เอาไปแปะในเว็บเราได้เลย เราไม่ต้อง implement เรื่อง connect wallet อะไรพวกนี้เอง เขาจัดการให้หมด

แต่มันเป็น beta อยู่นะทุกคน

Mint NFTs From Your Own Site - Speedboat Studio General Spec

ส่งลิ้งเปิดขายงานของเราให้คนอื่น

หลังจากที่เราเปิดขายแล้ว ก็เอาลิ้งที่ได้ไปประกาศว่าเฮ้ยยย ตอนนี้เปิด mint แล้วนะ หน้าตาจะเป็นแบบนี้แหละ

https://app.speedboat.studio/{chain}/{project_name}

หน้าตาเว็บไซต์เนอะ

กด Mint จะเสียค่า gas สำหรับการ mint NFT เนอะ

เมื่อ mint เสร็จ จะขึ้น toast อยู่ด้านบนตรงกลางเนอะ

ด้วยความที่ใช้ testnet เนอะ เราก็กดไปดู transaction ของเรา พบว่าเราได้ token 1 เนอะ ได้อะไรน้าาาาาาา

ไป read contract กัน เลื่อนหา tokenURI ใส่ tokenID ที่เราได้ลงไป จะได้ tokenURI ออกมา

เมื่อเปิดไปดูแล้วจะเจอเป็น metadata ที่เป็น json file แบบนี้

น้องที่ได้

หรือง่ายๆหลัง mint เสร็จ refresh อีกรอบก็ได้นะ แหะๆ

เนื่องจากเรา mint ครบโควต้าแล้ว จึงขึ้นว่า you are not eligible to mint นะ

เนื่องจากทำใน testnet เอ่อออออออออ จะเปิดดูรูป NFT ยังไงดี เราลองไปเปิดใน Rarible ซึ่งเขามีเว็บสำหรับ testnet ด้วย ทำการเชื่อมต่อกระเป๋า แล้วไปดู profile ของเรากันเลย

https://testnet.rarible.com/

หน้าตาของน้องเนอะ สรุปก็คือแต่ละส่วน เวลาตั้งชื่อไฟล์ จะต้องตั้งชื่อไฟล์ให้พร้อมใช้เลยนะ เพราะใน speedboat มันแก้ไม่ได้แหละ เนื่องจากออกไปสองตัว ความ rarity ก็เลยจะแปลกๆนิดนึงแหละ

ก็จะประมาณนี้

ประสบการณ์หลังใช้ Speedboat

ตัว tool ใช้งานไม่ยาก โยนรูปในแต่ละ layer ก็จะออกมาเป็น generative NFT หล่ะ แต่ขึ้นตอนก่อนหน้าที่เราจะใช้นั้น คือการทำรูปออกมา เราเองต้อง make sure ว่าเอ้อมันไม่ทับ ไม่ต้องแก้อะไรเพิ่ม หลังจาก generate ออกมาแล้วเนอะ

สิ่งสำคัญ

  • การตั้งชื่อไฟล์แต่ละชิ้น ต้องพร้อมใช้ หลังจาก deploy ไปมันแก้ไม่ได้หล่ะ พอแสดง metadata ออกมาในเว็บ มันจะไม่ค่อยสวยอ่ะ สรุปอยากใช้ชิ้นนี้ชื่ออะไร ก็ตั้งตามนั้นเลย
  • การหาสูตรคำนวณเพื่อไม่ให้ได้รูปซํ้ากันเนอะ ในที่นี้ 50 อาจจะเยอะไป หรือว่าจริงๆเว็บมันบัคกันแน่นะ แบบขึ้นรูปซํ้า
  • เมื่อทำการ deploy ออกมาเรียบร้อย เจ้าของโปรเจกต์เองก็ไม่รู้ด้วยว่าในนั้นจะออกมาเป็นรูปอะไรบ้างเนอะ ก็ลุ้นกันไป
  • ดังนั้นจะต้องวางแผนงานของเราให้ดีก่อนขั้นตอนนี้น้าาา
  • ว่าแต่รูปไม่ได้อยู่บน ipfs นี่นา

แต่เรื่องสูตรการคิดจำนวน NFT ที่เหมาะสมแล้วไม่ซํ้ากันนั้น ใน document เขามีอยู่แล้วนี่นา

Creating Generative NFTs - Speedboat Studio General Spec

สูตรจะเป็นดังนี้

  • number of traits คือ จำนวน layer ของ NFT 1 รูปของเรา
  • number of variations คือ จำนวนแบบใน traits นั้นๆ
  • number of NFTs คือ จำนวนของ NFT ทั้งหมดใน collection ของเรา

ถ้าลองย้ายข้ามสมการ

number of variations ^ number of traits = number of NFTs

จากตัวอย่าง เรามี traits 4 อัน คือ background, face, cloth และ accessory

สมมุติว่าแต่ละ traits มี 4 ชิ้น ดังนั้นจะได้ NFT ทั้งหมด

4 ^ 4 = 4 * 4 * 4 * 4 = 256 ชิ้นนั่นเอง

ถ้าอันนี้ก็จะ

5 * 5 * 4 * 5 = 500 ชิ้นนั่นเอง

ดังนั้นตามสูตรก็ไม่น่าซํ้าแหละเนอะ

Speedboat - Speedboat Studio General Spec

ผลประกอบการที่ไปหยิบมาดู แอบงงที่ยังมีซํ้ากัน 5 คู่อ่ะ แงงงงงงงงงงงง

ก็จะประมาณนี้เนอะทุกคน


สำหรับใครสนใจโปรเจกต์ NFT Free Mint ของเรา สามารถเข้าไปอ่านได้ที่บล็อกนี้เลย

ทำความรู้จัก NFT โปรเจกต์ใหญ่ของเรา “Next Journey” จ้า
ในเมื่อกระแส free mint มาเร็วและกระแสใกล้หายไปแล้ว บวกกับทำเพจมาครบ 10 ปีแล้ว จึงทำ NFT ชุดนี้แจกเลยแล้วกันเนอะ เป็นโปรเจกต์ทดลองของเราในการลองทำ generative art

สามารถ support ค่ากาแฟเจ้าของบล็อกได้ที่ปุ่มแดงส้มสุดน่ารักที่มุมซ้ายล่าง หรือกดปุ่มตรงนี้ก็ได้จ้า

Buy Me a Coffee at ko-fi.com

ช่องทางการโดเนทใหม่ล่าสุด Tipme จ้า

ติดตามข่าวสารและบทความใหม่ๆได้ที่

อย่าลืมกด like กด share บทความกันด้วยนะคะ :)

Posted by MikkiPastel on Sunday, 10 December 2017

ติดตาม Twitter เพื่อข่าวสารที่รวดเร็วกว่าบนหน้าเพจกับในบล็อกนะ บางทีฟังแล้วก็สรุปทวิตเลย

ช่องทางใหม่ ติดตามทุกๆสตรีมของเราได้ที่

Twitch
Twitch is the world’s leading video platform and community for gamers.
https://www.twitch.tv/mikkipastel

Subscribe ช่อง YouTube ของเราได้ที่

mikkicoding
Android Developer & Content Creator
https://www.youtube.com/c/mikkicoding

download แอพอ่านบล็อกใหม่ของเราได้ที่นี่

MikkiPastel - Apps on Google Play
First application from “MikkiPastel” on play store beta feature- read blog from https://www.mikkipastel.com by this application- read blog content by chrome custom tab- update or refresh new content by pull to refresh- share content to social network
https://play.google.com/store/apps/details?id=com.mikkipastel.blog

Tags

Minseo Chayabanjonglerd

I am a full-time Android Developer and part-time contributor with developer community and web3 world, who believe people have hard skills and soft skills to up-skill to da moon.