ชื่อระดับแรก
แนะนำ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ที่นี่ที่นี่ติดต่อเรา.
ติดต่อเรา.


