JavaScript로 NFT 만들기 1

Soyeon·2021년 11월 5일
1

blockchain

목록 보기
2/2
post-thumbnail

배경 정보

NFT를 만들기 전에 NFT를 작동시키는 기술과 기능을 살펴보겠습니다.

ERC 프로토콜

NFT의 발행에는 이더리움 네트워크에서 사용되는 ERC 프로토콜을 사용

ERC(Ethereum Request for Comment)는 ‘이더리움의 요구사항을 위한 표준’이며, 이는
이더리움을 이용해서 가상자산을 발행할 때 지켜야 하는 규칙

NFT는 ERC-721과 최근 개발되어 적용되고 있는 ERC-1155 프로토콜을 이용하여 발행

  • ERC-721의 특징은 예술품, 골동품, 캐릭터에 대한 NFT를 발행하여 토큰을 생성하고, 해당 토큰의 고유한 가격이 결정되면 가상자산으로 거래하는 방식, 최근에는 미술품 거래에서 토큰을 분할해 소유하는 등 새로운 방식이 나타나고 있음
  • ERC-1155ERC-20ERC-721의 장점을 혼합하여, 두 토큰이 연동하여 거래할 수 있도록 설계된 프로토콜이며, 하나의 트랜잭션을 이용해 한 명 이상의 수신자에게 두 개 이상의 토큰을 보낼 수 있는 멀티 전송(Multi-transfers)이 가능한 것이 특징

Smart contracts and NFTs

‘이해 당사자간 공유 네트워크를 통하여 계약과 계약의 결과에 대한 신뢰를 쌓아 나갈 수 있는 기반 하에 확보된 자동화된 계약처리의 형태’에 대하여 미국의 프로그래머 닉 자보(Nick Szabo)는 ‘스마트계약(Smart Contracts)’이라 이름 붙였다.

Smart contracts 은 블록체인에 배포되고 있는 그대로 실행되는 간단한 프로그램입니다.
즉, 사용자가 제어하지 않습니다. 스마트 계약을 사용하여 토큰을 만들고 추적할 수 있습니다.

Smart x ERC-721 표준을 구현하는 경우 NFT로 간주될 수 있으며 NFTSmart contracts인스턴스입니다.
새로운 NFT를 발행할 때마다 블록체인에 배포된 Smart contracts 코드를 사용합니다.

Smart contracts > source code를 컴파일 > EVM bite 코드 생성 > 구체적인 작업은 ABI 취득 > ABI로부터 contracts 객체 생성 > Smart contracts 배포 > 트랜잭션 생성하여 블락에 추가 > 마이너가 해당 블락을 채굴하게 되면 블락체인에 포함됨 -> Smart contracts address를 이용하여 정보를 읽고 쓰기가 가능

Smart contracts에 쓰는 것는 것은 트랜잭션을 발생시키지만, 값을 읽어 오는 것은 트랙잭션을 발생시키지 않습니다.
만약 공유 변수 값을 읽기만 하는 경우는 트랜잭션이 발생하지 않습니다.
트랙잭션이 발생하지 않으면 거래라고 보기 어려움.

Networks

Public networks: Mainnet vs. Testnet

이더리움은 여러 네트워크를 사용합니다.
프로덕션에 사용되는 네트워크는 일반적으로 Mainnet이라고 하고 테스트에 사용되는 나머지는 Testnet이라고 합니다.
NFT를 프로덕션이나 메인넷에 배포할 때 이더리움용 작업 증명 테스트넷인 Ropsten Testnet에 있는 거래 내역과 잔액은 이월되지 않아
Testnet퍼블릭 스테이징/개발 환경으로, Mainnet프로덕션 환경으로 생각하시면 됩니다.

Private networks

네트워크의 노드가 퍼블릭 블록체인에 연결되어 있지 않으면 해당 네트워크는 프라이빗으로 간주됩니다.
이더리움 블록체인은 로컬머신이나 Private 네트워크나 컨소시엄 네트워크와 같은 그룹에서도 실행할 수 있습니다.
이런 환경에서 이더리움 블록체인을 실행하려면 이더리움 소프트웨어인 node를 사용하여 블록 및 트랜잭션을 검증해야 합니다.

HardHatGanache 에서 Smart contracts앱을 컴파일, 테스트, 배포 및 디버그하기 위해 로컬 시스템에서 실행할 수 있습니다.

for test

테스트하려면 Faucets(가입을 하면 무료로 암호화폐를 받을 수 있는 웹사이트 )에서 이더리움 암호화폐인 이더(ETH)를 가져와야 합니다.
Ropsten Faucet 와 같은 Faucets는 테스트 ETH를 지정하고 해당 주소로 보낼 수 있는 웹 앱입니다.
이를 통해서 테스트넷에서 트랜잭션을 완료할 때에 사용할 수 있습니다.

Private networks에서 이더리움 앱을 실행한 경우에는 테스트 ETH가 필요하지 않습니다.

Node

노드는 블록 및 트랜잭션 데이터를 확인합니다.
GethOpenEthereum 과 같은 클라이언트를 사용하여 자신의 노드를 만들고 블록체인에서 트랜잭션 및 블록을 검증하여 이더리움 블록체인에 기여할 수 있습니다.

자체 노드를 생성하는 과정을 건너뛰고 Alchemy 와 같은 서비스형 노드 플랫폼 으로 클라우드에서 호스팅되는 노드를 대신 사용할 수 있습니다.
개발에서 프로덕션으로 빠르게 이동할 수 있으며 애플리케이션에 대한 중요한 메트릭을 얻을 수 있습니다.

우리는 Alchemy API를 사용하여 Ropsten 블록체인에 애플리케이션을 배포할 것입니다. Alchemy는 블록체인용 AWS 로 설명되었으며 애플리케이션이 어떻게 수행되는지에 대한 통찰력을 볼 수 있는 개발자 도구를 제공합니다.









참고 자료

profile
front-end developer

0개의 댓글