Web3 NFT – Python, Pinata, Opensea를 사용하여 NFT 구축 및 나열
Opensea 시장에 상장할 수 있는 Python, Openzeppelin 및 Pinata를 사용하여 Web3 NFT 컬렉션을 구축하십시오.
토큰 경제는 비즈니스 세계에서 뜨거운 용어입니다. 대체 가능한 토큰과 대체 불가능한 토큰인 두 가지 주요 유형의 토큰입니다. NFT(Non-Fungible Token)는 블록체인에 기록되는 복사, 대체 또는 세분화할 수 없는 고유한 디지털 식별자 입니다 . 그것은 진품의 공개 인증서 또는 소유권 증명을 제공합니다.
자산, 특히 무형 자산은 전통적인 무형 자산 평가와 비교하여 절대적으로 투명하고 파괴적인 방식으로 지속적이고 공개적으로 평가될 수 있지만 NFT 소유권 자체에는 고유한 법적 의미가 없습니다.
이 기사에서는 Opensea 시장에 상장할 수 있는 Python, Openzeppelin 및 Pinata를 사용하여 Web3 NFT 컬렉션을 구축하는 방법을 살펴보겠습니다.
Web3 NFT의 구성 요소 – Python, Openzeppelin, Solidity를 사용하여 NFT 구축
목차
- NFT 스마트 계약
- 메타데이터
- Opeasea 계정 통합
- Python 배포 스크립트
- Brownie-config, ENV 및 AssistScripts
- Python, Openzeppelin, Pinata를 사용하여 NFT를 구축하는 전체 스크립트
NFT 스마트 계약
대체 가능한 토큰뿐만 아니라 NFT 개발에서 스마트 계약 코드를 개발하는 것부터 시작해야 합니다.
먼저 Openzeppelin과 같은 기존 모듈을 잘 활용하면 공통 기능을 개발하는 데 시간을 절약할 수 있습니다. brownie-config.YAML에도 종속 항목을 추가해야 합니다. 이와 관련하여 궁금한 점이 있으면 Easy2Digital web3 컬렉션의 다른 기사를 참조하십시오.
// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol" ;
대체 가능한 토큰인 ERC20과 다른 ERC721은 보시다시피 표준 대체 불가능한 토큰입니다. 따라서 이 모듈에서는 ERC721을 사용하여 계약을 생성합니다.
- 여기 ERC721에는 두 개의 매개변수가 있습니다. 하나는 전체 이름이고 다른 하나는 생성된 NFT의 짧은 이름입니다. 그리고 NFT를 하나씩 생성할 때 플러스 기능을 포함하여 생성된 컬렉션에서 볼 수 있듯이 토큰으로 시작합니다.
contract SimpleCollection is ERC721 {
uint256 public to encounte;
constructor () public ERC721 ("LouisNFT", "LVnft") {
tokenCounter = 0 ;
}
function createCollection ( string memory tokenURI ) public returns ( uint256 ) {
uint256 newTokenId = tokenCounter;
_safeMint ( msg.sender , newTokenId);
_setTokenURI (newTokenId, tokenURI);
tokenCounter = tokenCounter + 1 ;
return newTokenId;
}
}
- 그런 다음 각각의 새로운 NFT에는 고유한 토큰 URI와 토큰 ID가 있습니다. 토큰 ID는 토큰 카운터 번호를 기반으로 uint256으로 해시됩니다. 그리고 토큰 URI에는 기본적으로 이미지를 포함하는 NFT에 대한 모든 자료 정보가 포함됩니다. 잠시 후에 살펴보겠습니다.
메타데이터
메타데이터는 OpenSea와 같은 애플리케이션이 디지털 자산에 대한 풍부한 데이터를 가져와 앱 내에서 쉽게 표시할 수 있도록 하는 JSON 파일입니다. 기본 메타데이터 파일에 포함된 요소는 다음과 같습니다.
블록체인에 데이터를 저장하는 것은 해당 스크립트 파일을 제외하고는 매우 비쌀 수 있습니다. 그럼에도 불구하고 대용량 자료가 될 수 있는 이미지, 비디오 및 오디오는 블록체인에 저장될 수 있습니다.
따라서 일반적으로 IPFS와 같은 분산형 스토리지를 사용하여 활용할 수 있습니다. IPFS 또는 행성간 파일 시스템은 분산 파일 시스템에서 데이터를 저장하고 공유하기 위한 프로토콜, 하이퍼미디어 및 파일 공유 P2P 네트워크입니다.
기본적으로 NFT 자료를 IPFS에 업로드하는 두 가지 방법이 있습니다. 하나는 로컬 IPFS 환경을 설치하여 IPFS 네트워크와 상호 작용하는 것입니다. 다른 하나는 Pinata와 같은 타사 플랫폼을 통해 실행하는 것입니다.
토큰 URI를 생성하기 위해 NFT 이미지와 JSON 파일을 Pinata에 업로드합니다.
먼저 첫 번째 단계는 Pinata 계정을 만들고 NFT로 변환할 이미지를 준비하는 것입니다.
그런 다음 이미지를 파일로 Pinata에 업로드하면 이 자료에서 CID 키를 얻을 수 있습니다. 이 키는 곧 JSON 파일을 생성하는 데 사용됩니다.
또한 토큰 URI가 JSON 파일이므로 다음 단계는 NFT와 관련된 모든 정보를 JSON 파일에 추가하는 것입니다. 다음은 VSC를 사용한 샘플입니다.
- 이름
- 이미지: IPFS URL 구조,
https://ipfs.io/ipfs/ + image CID key (Generated just now)
- 설명
- 기인하다
마지막으로 JSON 파일이 준비되면 Pinata로 돌아가서 JSON을 업로드하고 JSON 파일 CID 키를 생성하십시오. 다음은 IPFS URL의 최종 토큰 URI 샘플입니다.
https://ipfs.io/ipfs/QmV8rPonNpVaKnH2ri826AWqJ5XxeKYdeJupjKch4kA1UK?filename=NFT1.json
Opeasea 계정 통합
OpenSea는 NFT 및 암호화 수집품을 위한 세계 최초이자 최대 규모의 web3 마켓플레이스입니다. OpenSea를 사용하여 NFT를 검색, 생성, 구매, 판매 및 경매합니다. 모든 NFT의 경우 판매 목적이든 아니든 마켓플레이스에 등록하는 것은 매우 일반적입니다. 특히 대부분의 회사는 이를 활용하여 브랜드 인지도를 높이고 충성도 프로그램을 구현하는 데 도움을 줍니다.
이 경우 opensea testnet을 사용하여 NFT 목록 프로세스를 시뮬레이션할 수 있습니다. 해외 테스트넷 계정 생성은 완전히 무료입니다. 우리의 경우 MetaMask를 사용하여 NFT를 나열합니다. 따라서 MetaMask testnetwork 계정과 연동되는 opensea 테스트 계정도 반드시 가입하시기 바랍니다.
opeansea testnext NFT URL은 기본적으로 암호화폐 네트워크와
opasea 목록 URL의 경우 구조에 두 개의 변수가 있으며 다음은 샘플입니다.
https://testnets.opensea.io/assets/ goerli/0x8eeb73f75e6d80a6a21302d1ec36d0ead0ceb295/0
- 네트워크 주소:
goerli/0x8eeb73f75e6d80a6a21302d1ec36d0ead0ceb295
- 토큰 카운터: 0 (이 숫자는 NFT의 순서를 나타내며 0은 첫 번째임을 의미합니다.)
Python 배포 스크립트에서 잠시 후에 이것을 사용할 것입니다.
Python 배포 스크립트
브라우니 및 보조 스크립트 모듈 가져오기와 대체 가능한 토큰 구축 외에도 NFT 배포에는 두 가지 변수가 필요합니다. sample_collection_URI 및 OPEASEA_URL입니다.
sample_collection_URI = "https://ipfs.io/ipfs/QmV8rPonNpVaKnH2ri826AWqJ5XxeKYdeJupjKch4kA1UK?filename=NFT1.json"
OPENSEA_URL = "https://testnets.opensea.io/assets/ {} / {} "
그런 다음 기본 기능에서 NFT 스마트 계약 초기에 생성된 createcollection
기능을 사용해야 합니다.
def main ():
account = get_account ()
Simple_Collection = SimpleCollection.deploy({ "from" : account })
tx = Simple_Collection .createCollection(
sample_collection_URI , { "from" : account })
tx .wait( 1 )
Brownie-config, ENV 및 AssistScripts
대체 가능한 토큰 개발뿐만 아니라 이러한 스크립트를 추가해야 합니다. 자세한 내용은 다음 기사를 참조하십시오.
Python 스크립트에서 Infura 및 MetaMask를 사용하여 실제 이더리움 블록체인 네트워크에 Web3 스마트 계약 배포
스크립트가 준비되면 특정 네트워크에서 스크립트를 실행할 수 있으며 여기에 결과가 표시되고 NFT가 시장에 나열되었습니다.
Brownie run scripts/deploy_NFTCreate.py –network goerli
Python, Openzeppelin, Pinata를 사용하여 NFT를 구축하는 전체 스크립트
Web3 NFT에 관심이 있는 경우 – Python, Openzeppelin, Pinata, "Web3.0 tutorial 7"이라는 메시지를 추가하여 뉴스레터를 구독 하십시오. . 귀하의 사서함으로 스크립트를 즉시 보내드립니다.
Web3 NFT – Python, Openzeppelin 및 Pinata를 사용하여 NFT 구축 및 나열을 즐겨 보시기 바랍니다. 그렇다면 아래 나열된 항목 중 하나를 수행하여 지원해 주세요. 항상 채널에 도움이 되기 때문입니다.
- PayPal( paypal.me/Easy2digital )을 통해 내 채널을 지원하고 기부하세요.
- 제 채널 구독하시고 알림벨을 켜주세요 Easy2Digital 유튜브 채널 .
- 내 페이지 팔로우 및 좋아요 Easy2Digital Facebook 페이지
- #easy2digital 해시태그를 사용하여 소셜 네트워크에 기사를 공유하세요.
- Easy2Digital 최신 기사, 비디오 및 할인 코드를 받으려면 주간 뉴스레터에 가입하십시오.
- 독점적인 혜택을 누리려면 Patreon을 통해 월간 멤버십을 구독하세요( www.patreon.com/louisludigital ).