NFT 스마트 계약 생성 및 배포 방법
4896 단어 soliditynftsmartcontract
Openzeppelin은 ERC1155 표준에 대한 코드를 구현했습니다. ERC1155 표준은 대체 가능한 토큰과 NFT 모두에 사용되는 계약 인터페이스입니다.
NFT 스마트 계약을 작성하기 전에 이미지를 IPFS(InterPlanetary File System)에 저장해야 합니다. IPFS는 블록체인에 디지털 미디어를 저장하는 데 사용됩니다.
NFT 미디어 파일 업로드
NFT 스마트 계약용 미디어 파일은
nft.storage
에 저장됩니다. Nft Storage 으로 이동합니다. NFT 미디어 파일을 IPFS에 저장할 수 있습니다. Github 계정을 사용하여 로그인하거나 이메일을 사용하여 서비스에 가입하십시오.업로드 버튼을 클릭하면 아래 이미지와 같은 화면이 나타납니다.
하나의 파일만 업로드하려는 경우 업로드 버튼을 클릭하여 업로드할 수 있지만 파일 디렉토리가 있는 경우 파일을
CAR
로 업로드해야 합니다. CAR은 자산의 루트 CID를 미리 계산할 수 있는 Content Addressed Archive입니다.파일 디렉토리를 업로드할 가능성이 높으므로 Upload CAR으로 진행합니다.
클릭하여 디렉토리를 열고 NFT의 자산 파일을 선택합니다. 다운로드 버튼을 클릭하여 CAR 파일을 다운로드합니다. 사이트NFT Storage로 돌아가서 CAR 파일을 업로드하여 자산을 IPFS에 업로드합니다.
NFT 메타데이터 업로드
다음 단계는 Opensea에서 읽을 메타데이터를 업로드하는 것입니다. 메타데이터 파일은 자산에 대한 설명과 함께 JSON 개체가 포함된
JSON
파일입니다.샘플 JSON 개체
{
"id" : 1,
"name" : "the name of the image or assets",
"description": "description of the image or assets",
"image" : "the location of the assets"
}
자산의 위치는 NFT 저장소에서 가져옵니다. 업로드된 자산의 작업 버튼을 클릭합니다.
드롭다운이 표시됩니다. URL 보기를 클릭합니다. URL 보기 버튼을 클릭하면 CAR을 통해 업로드된 모든 이미지가 나열된 페이지로 이동합니다. 링크를 클릭하면 브라우저에 이미지가 표시됩니다. 이미지 링크를 복사하여 JSON 파일의 이미지 값으로 사용합니다.
you should name your images using numbers like:
1.png
,2.png
; so it will be easy to retrieve the image location.
업로드된 각 이미지 자산에 대해 하나의 JSON 파일을 업로드해야 합니다. 또한
1.json
, 2.json
등과 같은 숫자를 사용하여 JSON 파일의 이름을 지정합니다.이미지 파일 업로드에 사용한 것과 동일한 방법을 사용하여 메타데이터 파일을 IPFS에 업로드해야 합니다. JSON 메타데이터의 디렉터리 콘텐츠로
CAR
파일을 만들고 NFT Storage을 통해 CAR 파일을 IPFS에 업로드합니다.스마트 계약 생성
//SPDX-License-Modifier: MIT
pragma solidity ^0.8.7;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
contract DASHNFT is ERC1155 {
uint256 public constant TOKEME = 1;
uint256 public constant VODERMOT = 2;
uint256 public constant CYRUS = 3;
uint256 public constant FLASHBOT = 4;
constructor() public ERC1155("https://bafybeigjypyqmqby2hu3rqpljezi44adnb3ttlinlz77nuzqlq33c2tyta.ipfs.nftstorage.link/{id}.json") {
_mint(msg.sender, TOKEME, 100, "");
_mint(msg.sender, VODERMOT, 100, "");
_mint(msg.sender, CYRUS, 100, "");
_mint(msg.sender, FLASHBOT, 100, "");
}
function uri(uint256 _tokenId) override public view returns (string memory){
return string(abi.encodePacked(
"https://bafybeigjypyqmqby2hu3rqpljezi44adnb3ttlinlz77nuzqlq33c2tyta.ipfs.nftstorage.link/",
Strings.toString(_tokenId),
".json"
)
);
}
}
우리는 ERC1155에 대한 OpenZeppelin 구현을 사용하고 있습니다.
ERC1155.sol
파일을 가져온 파일 맨 위에서 문자열을 함께 연결하는 데 사용되는 유틸리티 계약 파일도 가져왔습니다. 우리 계약은 ERC1155 계약에서 상속됩니다.우리는 1에서 4까지의 값으로 초기화한 4개의 상수 변수를 정의했습니다. 자산의 메타데이터 URL은 ERC1155의 생성자에게 전달됩니다.
https://bafybeigjypyqmqby2hu3rqpljezi44adnb3ttlinlz77nuzqlq33c2tyta.ipfs.nftstorage.link/{id}.json
중괄호 안에 있는 ID를 확인하십시오
{id}
. 이id
는 JSON 파일의 이름을 지정한 숫자를 나타냅니다. 생성된 각 NFT에 대해 계약은 함수uri
를 호출하여 메타데이터의 전체 위치를 가져옵니다. 우리는 _mint
함수를 호출하여 우리가 가지고 있는 네 가지 유형의 NFT를 각각 100개 복사하여 msg.sender
에 할당했습니다.uri
함수의 맞춤형 구현은 NFT의 id
를 기본 URL과 연결하고 NFT 메타데이터의 전체 URL을 반환합니다.컨트랙트를 블록체인 테스트넷에 배포하고 컨트랙트 주소를 복사한 후 Opensea의 테스트넷으로 이동하여 배포된 NFT 컨트랙트 주소로 검색합니다. 귀하의 NFT 계약과 해당 이미지가 Opansea에 표시됩니다.
읽어 주셔서 감사합니다
Reference
이 문제에 관하여(NFT 스마트 계약 생성 및 배포 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jamiescript/how-to-create-and-deploy-an-nft-smart-contract-2gj8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)