첫 번째 레벨 제목
소개하다ERC721수행원(NFT대체 불가능한 표준 토큰Chainlink VRF)는 항상 스마트 계약 개발자에게 어려운 문제였습니다. 지금,
메인 네트워크에서 이미 출시된 Solidity 기반 스마트 계약은 공정하고 암호화 증명으로 지원되는 변조 방지 온체인 난수를 원활하게 생성할 수 있습니다. Chainlink VRF를 사용하면 안전한 임의성 소스가 필요한 동적 NFT를 간단하고 안전하게 생성할 수 있습니다. Chainlink는 오프체인 데이터 소스를 사용하여 NFT에 대한 모든 종류의 동적 속성을 구현할 수도 있지만 ERC721 논스(nonce) 또는 NFT를 사용하는 데 중점을 둘 것입니다.이 튜토리얼에서는첫 번째 레벨 제목
NFT는 무엇입니까?
NFT는 무엇입니까?ERC20NFT(ERC721 표준을 따름)는 고유하고 서로 다른(따라서 대체 불가능한 용어) 토큰을 만들기 위한 프레임워크를 정의합니다."표준은 정의합니다"균질화"즉, 토큰은 모두 상호 교환 가능하며 동일한 가치를 갖도록 보장됩니다."균질화
통화의 예로는 USD, EUR 및 JPY가 있으며 대체 가능한 블록체인 토큰의 예로는 AAVE, SNX 및 YFI가 있습니다. 이 경우 1 USD가 1 USD이고 1 LINK가 1 LINK인 것처럼 1 대체 가능 토큰은 같은 종류의 다른 1 토큰과 같습니다. 그러나 NFT/ERC721은 각 토큰이 고유하고 동일한 가치 또는 교환 가능한 항목을 나타내지 않기 때문에 다릅니다.모든 NFT는 고유하기 때문에 특정 토지와 같은 실제 자산 또는 희귀한 디지털 트레이딩 카드와 같은 디지털 자산의 실제 소유권에 대한 토큰화된 소유권 주장을 나타낼 수 있습니다. 그리고 그들은 인기를 얻고 있습니다. 당신은 참조 할 수 있습니다OpenSea의 NFT 성경
더 읽어보세요.
임의의 캐릭터 만들기
uint256 strength;
uint256 dexterity;
uint256 constitution;
uint256 intelligence;
uint256 wisdom;
uint256 charisma;
우리가 보고 있는 것은 D&D 캐릭터의 6가지 속성을 가진 캐릭터를 만드는 것입니다.
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에 대한 모든 기준을 정의합니다. 그냥 컨트랙트에서 '컨트랙트 DungeonsAndDragonsCharacter is ERC721'로 정의하여 상속합니다. Chainlink VRF와 상호 작용하고 nonce를 얻으려면 `VRFConsumerBase.sol`이 필요합니다. 마지막 두 가져오기는 권한과 문자열 작업에 도움이 됩니다.
첫 번째 레벨 제목
역할 구조 및 생성자
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 네트워크에 이러한 주소를 하드코딩했습니다. keyHash 및 수수료와 같은 Chainlink VRF에 대해 정의된 다른 변수도 있습니다. 당신은 할 수 있습니다체인링크 VRF 문서체인링크 VRF 문서"DungeonsAndDragonsCharacter", "D&D"에서 이러한 변수의 역할에 대해 자세히 읽어보십시오. `ERC721("D&D"`는 MetaMask 및 NFT 마켓플레이스에 표시됩니다.
첫 번째 레벨 제목
임의의 문자 생성

우리는 캐릭터의 6개 스탯 각각에 대해 무작위 스탯을 원하지만 캐릭터의 이름을 스스로 결정할 수 있기를 원합니다! Chainlink VRF를 간단히 호출하면 이 NFT/ERC721에서 난수를 생성할 수 있습니다. 요청 기능에서 우리는 많은 작업을 수행할 필요가 없으며 새 역할에 이름과 `userProvidedSeed`를 지정하기만 하면 됩니다. 우리가 제공하는 시드는 VRF 코디네이터에게 제공된 숫자가 정말 무작위인지 확인하는 데 사용됩니다. 원하는 시드를 선택할 수 있으며 자세한 내용은 임의 시드 선택에 대해 읽을 수 있습니다.
난수를 가져올 때 생성 중인 문자에 매핑할 수 있도록 'requestId'를 추적하려고 합니다. 그러면 Chainlink 작업이 시작됩니다. Chainlink 노드가 계약을 다시 호출할 때까지 기다리세요! Chainlink 문서에서 요청 모델에 대한 자세한 내용을 읽고 Chainlink 요청을 보내는 방법에 대해 자세히 알아볼 수 있습니다.

체인링크 노드가 요청 처리를 마치면 `fulfillRandomness` 함수를 호출하여 응답합니다. 이 함수는 주어진 속성에 대한 계산, 목록에 문자 추가, NFT 발행을 포함합니다.
보시다시피 6개의 속성 모두 하나의 난수로 생성됩니다. 모듈로 연산을 사용하여 반환된 큰 난수를 부분 집합합니다. 원하지 않으면 Chainlink VRF를 6번 직접 호출할 수도 있지만 이렇게 해도 효과는 동일합니다. 반환된 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. NFT 값 반환Etherscan API배포가 완료되면 etherscan 플러그인을 사용하여 계약을 확인하고 Etherscan에서 계약을 읽을 수도 있습니다. 당신은 얻을 필요가
truffle run verify DungeonsAndDragonsCharacter --network rinkeby --license MIT
키를 누르고 환경 변수 `ETHSCAN_API_KEY`를 설정합니다. 실행 후:
그런 다음 Etherscan의 NFT에 대한 링크를 제공합니다. Etherscan에서 계약 내용을 읽을 수 있습니다.
계약과 상호 작용할 수 있는 페이지로 이동합니다. 캐릭터 섹션으로 이동하면 방금 생성한 tokenId인 0을 입력할 수 있으며 새로운 D&D 캐릭터의 통계를 볼 수 있습니다.Rinkeyby첫 번째 레벨 제목
요약하다
요약하다
개발자 문서개발자 문서가입Discord여기여기문의하기.
문의하기.


