คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
จะรับหมายเลขสุ่มใน NFT (ERC721) ได้อย่างไร
Chainlink
特邀专栏作者
2020-11-25 05:02
บทความนี้มีประมาณ 4905 คำ การอ่านทั้งหมดใช้เวลาประมาณ 8 นาที
นักพัฒนาสัญญาอัจฉริยะกำลังสร้างโลกสุ่มใหม่ใน NFT

ชื่อระดับแรก

แนะนำERC721กำลังติดตาม(NFTโทเค็นมาตรฐานที่ไม่สามารถเปลี่ยนได้Chainlink VRF) เป็นปัญหาที่ยากเสมอสำหรับนักพัฒนาสัญญาอัจฉริยะ ตอนนี้,

เปิดตัวแล้วบนเครือข่ายหลัก สัญญาอัจฉริยะที่ใช้ Solidity สามารถสร้างหมายเลขสุ่มบนเชนที่ป้องกันการปลอมแปลงได้อย่างราบรื่น ซึ่งสามารถพิสูจน์ได้ว่ายุติธรรมและได้รับการสนับสนุนโดยหลักฐานการเข้ารหัส ด้วย Chainlink VRF การสร้าง NFT แบบไดนามิกที่ต้องการแหล่งสุ่มที่ปลอดภัยนั้นง่ายและปลอดภัย ในขณะที่ Chainlink ยังสามารถใช้คุณสมบัติไดนามิกประเภทใดก็ได้สำหรับ NFT โดยใช้แหล่งข้อมูลนอกเครือข่าย เราจะมุ่งเน้นไปที่การใช้ ERC721 nonces หรือ NFTในบทช่วยสอนนี้ เราจะสร้างชื่อระดับแรก

NFT คืออะไร?

NFT คืออะไร?ERC20NFT (ตามมาตรฐาน ERC721) กำหนดกรอบการทำงานสำหรับการสร้างโทเค็นที่ไม่เหมือนใครและแตกต่างจากกัน (ด้วยเหตุนี้จึงเรียกว่า non-fungible) ในขณะที่เป็นที่นิยม"มาตรฐานกำหนด"ทำให้เป็นเนื้อเดียวกัน"โทเค็น ซึ่งหมายความว่าโทเค็นทั้งหมดสามารถใช้แทนกันได้และรับประกันว่าจะมีมูลค่าเท่ากัน"ทำให้เป็นเนื้อเดียวกัน

ตัวอย่างของสกุลเงิน ได้แก่ USD, EUR และ JPY ในขณะที่ตัวอย่างของโทเค็นบล็อคเชนที่ใช้งานได้ ได้แก่ AAVE, SNX และ YFI ในกรณีเหล่านี้ 1 โทเค็นที่ใช้งานได้จะเท่ากับ 1 โทเค็นประเภทเดียวกัน เช่นเดียวกับ 1 USD คือ 1 USD และ 1 LINK คือ 1 LINK อย่างไรก็ตาม NFT/ERC721 นั้นแตกต่างกันเนื่องจากแต่ละโทเค็นไม่ซ้ำกันและไม่ได้แสดงถึงมูลค่าเดียวกันหรือรายการที่ใช้แทนกันได้เนื่องจาก NFT ทั้งหมดไม่ซ้ำกัน พวกเขาจึงสามารถแสดงการอ้างสิทธิ์ความเป็นเจ้าของโทเค็นในสินทรัพย์ในโลกแห่งความเป็นจริง เช่น ที่ดินเฉพาะ หรือความเป็นเจ้าของที่แท้จริงของสินทรัพย์ดิจิทัล เช่น การ์ดซื้อขายดิจิทัลหายาก และพวกเขากำลังได้รับความนิยมเพิ่มขึ้น คุณสามารถอ้างถึงพระคัมภีร์ NFT ของ OpenSea

มาอ่านเพิ่มเติม

สร้างตัวละครแบบสุ่มของคุณ

uint256 strength;

uint256 dexterity;

uint256 constitution;

uint256 intelligence;

uint256 wisdom;

uint256 charisma;

สิ่งที่เรากำลังมองหาคือการสร้างตัวละครที่มีคุณสมบัติหกประการของตัวละคร D&D ได้แก่ :

uint256 experience;

string name;

บทบาทรวมถึง:

เราจึงสามารถเพิ่มเลเวลและตั้งชื่อสนุกๆ ให้พวกมันได้

เราใช้เสรีภาพบางอย่างที่นี่และไม่ได้ปฏิบัติตามแนวทางของ Dungeons & Dragons 100% แต่สิ่งนี้สามารถแก้ไขได้ง่ายหากคุณต้องการการนำเสนอเกมที่แม่นยำยิ่งขึ้น

สัญญานี้ควรกำหนดสิ่งต่อไปนี้:

1. อนุญาตให้คุณโอนความเป็นเจ้าของ NFT และมาตรฐาน NFT อื่นๆ ทั้งหมด

2. ตั้งชื่อตัวละครและคุณสมบัติแบบสุ่ม

เราได้ตั้งค่าที่เก็บโค้ดสำหรับคุณแล้ว และเราจะแสดงวิธีใช้งานเพื่อเริ่มต้นใช้งาน!

รหัสโคลน

git clone https://github.com/PatrickAlphaC/dungeons-and-dragons-nft

cd dungeons-and-dragons-nft

npm install

ชื่อระดับแรก

ตั้งค่าตัวแปรสภาพแวดล้อมInfura

จากนั้นตั้งค่าในไฟล์ `bash_profile` หรือส่งออกไปยังเทอร์มินัลของคุณ เช่น:

export MNEMONIC='cat dog frog....'

export RINKEBY_RPC_URL='www.infura.io/YOUR_PROJECT_ID_HERE'

ชื่อระดับแรก

มีอะไรอยู่ในไดเรกทอรีรหัส

pragma solidity ^0.6.6;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";

import "@openzeppelin/contracts/access/Ownable.sol";

import "@openzeppelin/contracts/utils/Strings.sol";

contract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable {

เป็นชุดของแพ็คเกจที่ทำให้งานพัฒนาง่ายขึ้นสำหรับ Solidity และวิศวกรสัญญาอัจฉริยะ ใครยังไม่เคยใช้ก็เตรียมใช้กันเยอะๆ นะ! เนื่องจาก ERC721 เป็นเพียงมาตรฐานโทเค็น ERC721 ทุกอันจึงควรคล้ายกัน เราจึงรู้ว่าเราสามารถใช้เทมเพลตได้ ไฟล์ `ERC721.sol` ที่เรานำเข้ากำหนดเกณฑ์ทั้งหมดสำหรับ NFT เราแค่สืบทอดมันในสัญญา กำหนด `สัญญา DungeonsAndDragons Character คือ ERC721` เราต้องการ `VRFConsumerBase.sol` เพื่อโต้ตอบกับ Chainlink VRF และรับ nonces การนำเข้าสองครั้งล่าสุดช่วยให้เรามีสิทธิ์และทำงานกับสตริงได้

ชื่อระดับแรก

โครงสร้างบทบาทและตัวสร้าง

struct Character {

      uint256 strength;

      uint256 dexterity;

      uint256 constitution;

      uint256 intelligence;

      uint256 wisdom;

      uint256 charisma;

      uint256 experience;

      string name;

  }

  Character[] public characters;

ในโครงสร้างตัวละคร เรากำหนดคุณสมบัติที่ตัวละครของเราจะมีและสร้างรายชื่อตัวละครเพื่อให้เราสามารถติดตามตัวละครทุกตัวที่สร้างขึ้นได้ เนื่องจากเราใช้อาร์เรย์เพื่อจัดเก็บรายชื่อตัวละคร อักขระแต่ละตัวจะมี ID เฉพาะในอาร์เรย์เพื่อกำหนด สิ่งนี้เรียกว่า `tokenId` และเราจะพูดถึงมันให้มากขึ้น

  constructor()

      public

      VRFConsumerBase(VRFCoordinator, LinkToken)

      ERC721("DungeonsAndDragonsCharacter", "D&D")

  {

      keyHash = 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311;

      fee = 0.1 * 10**18; // 0.1 LINK

  }

สอดคล้องกับพารามิเตอร์ 'VRFConsumerBase' และ ERC721 ที่เข้ามา Chainlink VRF ต้องการที่อยู่ผู้ประสานงาน VRF และที่อยู่ LinkToken เราได้ฮาร์ดโค้ดที่อยู่เหล่านี้ในเครือข่าย Rinkeby นอกจากนี้ยังมีตัวแปรอื่นๆ ที่กำหนดไว้สำหรับ Chainlink VRF เช่น keyHash และค่าธรรมเนียม คุณสามารถที่เอกสาร Chainlink VRFเอกสาร Chainlink VRF"DungeonsAndDragonsCharacter", "D&D"อ่านเพิ่มเติมเกี่ยวกับบทบาทของตัวแปรเหล่านี้ใน `ERC721("D&D"` จะเป็นสิ่งที่แสดงใน MetaMask และตลาด NFT

ชื่อระดับแรก

สร้างตัวละครแบบสุ่มของคุณ

เราต้องการค่าสถานะแบบสุ่มสำหรับค่าสถานะหกค่าของตัวละครแต่ละตัว แต่เราต้องการให้สามารถกำหนดชื่อตัวละครได้เอง! การเรียกใช้ Chainlink VRF อย่างง่ายช่วยให้เราสร้างตัวเลขสุ่มใน NFT/ERC721 นี้ ในฟังก์ชันคำขอของเรา เราไม่ต้องทำอะไรมาก เพียงแค่ตั้งชื่อบทบาทใหม่และ `userProvidedSeed` เมล็ดพันธุ์ที่เรามอบให้นั้นใช้เพื่อตรวจสอบกับผู้ประสานงาน VRF ว่าหมายเลขที่ให้นั้นเป็นแบบสุ่มอย่างแท้จริง คุณสามารถเลือกเมล็ดพันธุ์ที่คุณชอบ และคุณสามารถอ่านเกี่ยวกับการเลือกเมล็ดพันธุ์แบบสุ่มเพื่อเรียนรู้เพิ่มเติม

เราต้องการติดตาม `requestId` เพื่อที่เมื่อดึงหมายเลขสุ่มแล้ว เราสามารถแมปกับตัวละครที่เรากำลังสร้างได้ นี่จะเป็นการเริ่มงาน Chainlink เพียงรอให้โหนด Chainlink โทรกลับมาที่สัญญาของเรา! คุณสามารถอ่านเพิ่มเติมเกี่ยวกับรูปแบบคำขอได้ในเอกสารประกอบของ Chainlink เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของการส่งคำขอ Chainlink

เมื่อโหนด Chainlink เสร็จสิ้นการประมวลผลคำขอ โหนดจะตอบสนองด้วยการเรียกใช้ฟังก์ชัน `fulfillRandomness` ฟังก์ชันนี้มีการคำนวณสำหรับแอตทริบิวต์ที่กำหนด การเพิ่มอักขระในรายการ และการสร้าง NFT

อย่างที่คุณเห็น แอตทริบิวต์ทั้งหกถูกสร้างขึ้นด้วยตัวเลขสุ่มเพียงตัวเดียว เซ็ตย่อยของตัวเลขสุ่มขนาดใหญ่ที่ส่งคืนโดยใช้การดำเนินการแบบโมดูโล หากเราไม่ต้องการทำเช่นนี้ เราสามารถเรียก Chainlink VRF ได้โดยตรงถึงหกครั้ง แต่วิธีนี้ผลจะเหมือนกัน ตัวเลขสองหลักสุดท้ายของ nonce ที่ส่งกลับคือความแข็งแกร่ง ตัวเลขสองหลักแรกคือความว่องไว และอื่นๆ สิ่งนี้คล้ายกับวิธีที่ CryptoKitties ใช้ยีนเพื่อกำหนดค่าให้กับแมว

*หมายเหตุ: การดำเนินการบิตจะมีประสิทธิภาพมากกว่าที่เรามีอยู่ แต่เข้าใจง่ายกว่า เราจึงไม่ต้องศึกษาว่าการดำเนินการบิตทำงานอย่างไร *

เราจะใช้ Truffle และ Chainlink ดังนั้นหากคุณไม่คุ้นเคยกับ Truffle บล็อกโพสต์นี้เกี่ยวกับ [How to use Chainlink With Truffle]( จะช่วยให้คุณทบทวน แต่เราจะครอบคลุมคำสั่งทั้งหมดในบล็อกโพสต์นี้ ด้วย!

ชื่อระดับแรก

ตอนนี้เรารู้แล้วว่าเกิดอะไรขึ้น เรามาปรับใช้ NFT แบบสุ่มกันเถอะ! คุณต้องการบางอย่างRinkeby LINKและRinkeby ETHและ

truffle migrate --reset --network rinkeby

truffle exec scripts/fund-contract.js --network rinkeby

truffle exec scripts/generate-character.js --network rinkeby

truffle exec scripts/get-character.js --network rinkeby

เพื่อเรียกใช้สคริปต์เหล่านี้

คำสั่งดังกล่าวทำสิ่งต่อไปนี้:

1. ปรับใช้สัญญา NFT

2. ลงทุนตามสัญญาเพื่อให้สามารถทำการเรียก Chainlink VRF ได้

3. ใช้การเรียก Chainlink VRF เพื่อสร้างอักขระ

4. คืนค่า NFTEtherscan APIเมื่อปรับใช้แล้ว คุณยังสามารถตรวจสอบสัญญาและแม้แต่อ่านสัญญาบน Etherscan โดยใช้ปลั๊กอิน etherscan คุณต้องได้รับ

truffle run verify DungeonsAndDragonsCharacter --network rinkeby --license MIT

คีย์ และตั้งค่าตัวแปรสภาพแวดล้อม `ETHSCAN_API_KEY` หลังจากนั้นเรียกใช้:

จากนั้นจะให้ลิงก์ไปยัง NFT บน Etherscan คุณสามารถอ่านเนื้อหาสัญญาได้ที่ Etherscan

ซึ่งจะนำคุณไปยังหน้าที่คุณสามารถโต้ตอบกับสัญญาได้ หากคุณไปที่ส่วนอักขระ คุณสามารถป้อนรหัสโทเค็นที่เราเพิ่งสร้างขึ้น 0 และคุณจะสามารถดูสถิติของอักขระ D&D ใหม่ของคุณได้Rinkeybyชื่อระดับแรก

สรุป

สรุป

เอกสารประกอบสำหรับนักพัฒนาเอกสารประกอบสำหรับนักพัฒนาและเข้าร่วมDiscordที่นี่ที่นี่ติดต่อเรา.

ติดต่อเรา.

NFT
开发者
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
นักพัฒนาสัญญาอัจฉริยะกำลังสร้างโลกสุ่มใหม่ใน NFT
คลังบทความของผู้เขียน
Chainlink
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android