읽는 데 12분
개요
ERC-721 표준을 지원하는 디지털 수집품은 ‘크립토키티(Cryptokitties )’가 출시된 이후 큰 인기를 끌었으며, 최근 몇 달간 대중적인 확산 단계로 접어들었습니다. 이 가이드에서는 OpenZeppelin 표준을 사용하여 NFT(ERC-721)를 생성하고 배포하는 방법을 다룰 것입니다.
동영상 튜토리얼을 선호하시나요? 라덱과 함께 20분 만에 ERC-721(NFT)을 생성하고 배포하는 방법을 배워보세요.
주요 업무
- 대체 불가능 토큰(NFT)과 그 활용 사례에 대해 알아보기
- 구현할 ERC-721 토큰에 대한 메타데이터를 생성하세요
- 파일을 분산형 저장 시스템(IPFS)에 업로드하세요
- Remix.IDE를 사용하여 ERC-721 토큰 생성 및 배포하기
준비물
- Quicknode 엔드포인트 ( 여기에서 무료로 생성할 수 있습니다)
- 테스트용 ETH가 들어 있는 웹3 지갑(예: MetaMask, Coinbase Wallet, Phantom 또는 WalletConnect 호환 지갑) ( Multi-Chain Quicknode Faucet에서 일부를 얻을 수 있습니다)
- IPFS CLI 설치됨
- 최신 웹 브라우저(예: 크롬)
대체 불가능 토큰(NFT)이란 무엇인가요?
‘대체 가능(fungible)’이란 동일하거나 서로 바꿔 쓸 수 있음을 의미합니다. 예를 들어, 이더리움 토큰은 특정 토큰 클래스에 속하는 모든 토큰이 동일한 가치를 지닙니다. 카르다노 토큰도 마찬가지입니다. 대체 가능한 토큰은 1:1로 서로 바꿔 쓸 수 있습니다.
이러한 점을 고려할 때, NFT는 고유하며 각각이 서로 다릅니다. 모든 토큰은 고유한 특성과 가치를 지니고 있습니다. NFT가 될 수 있는 것들로는 수집용 카드, 예술 작품, 항공권 등이 있습니다. 이들은 모두 서로 명확히 구별되며 상호 대체할 수 없습니다. 대체 불가능 토큰(NFT)을 희귀한 수집품으로 생각해 보세요. 각각은 고유한 특성과 독특한 속성을 지니고 있으며, 대부분의 경우 메타데이터도 포함하고 있습니다.
ERC-721이란 무엇인가요?
ERC는 ‘이더리움 의견 요청(Ethereum Request for Comment)’의 약자이며, 721은 제안 식별 번호입니다. ERC는 이더리움 생태계의 애플리케이션 수준 표준으로, ERC-20과 같은 토큰을 위한 스마트 계약 표준이 될 수 있습니다. ERC 제안자는 이더리움 커뮤니티와 합의를 도출할 책임이 있으며, 제안이 커뮤니티의 검토와 승인을 거치면 표준으로 확정됩니다. 최근 ERC 제안 내역은 여기에서 확인할 수 있습니다. ERC-721은 스마트 계약 내에서 NFT를 추적하고 전송할 수 있는 기능을 제안하기 위해 만들어졌습니다.
ERC-721은 EVM(이더리움 가상 머신) 호환 블록체인에서 대체 불가능 토큰(NFT)을 생성하는 방법을 규정하는 개방형 표준입니다. 이는 NFT를 위한 표준 인터페이스이며, NFT를 손쉽게 다룰 수 있도록 하는 일련의 규칙을 포함하고 있습니다. NFT는 ERC-721 유형뿐만 아니라 ERC-1155 토큰 형태도 있을 수 있습니다.
다음은 ERC-721 표준에 정의된 함수 및 이벤트 목록입니다:
ERC-721 기능
balanceOf: 이 함수는 특정 주소가 소유한 NFT(대체 불가능 토큰)의 수를 반환하는 데 사용됩니다.
ownerOf: 이 함수는 특정 토큰 소유자의 주소를 반환합니다. 각 ERC721 토큰은 고유하며, ID로 표시됩니다. 이 함수를 통해 사용자나 애플리케이션은 토큰의 고유 ID를 기반으로 토큰 소유자를 확인할 수 있습니다.
safeTransferFrom (데이터 없음): 이 함수는 특정 토큰의 소유권을 한 주소에서 다른 주소로 안전하게 이전합니다. 이 함수는 수신자가 스마트 계약인지 확인합니다. 수신자가 스마트 계약인 경우, 이전을 수락하기 위해 특정 함수(onERC721Received)를 구현해야 합니다.
transferFrom: 이 함수는 토큰의 소유권을 한 주소에서 다른 주소로 이전하는 데 사용됩니다. 일반적으로 발신자가 토큰을 이전할 권한을 승인받은 경우에 사용됩니다.
승인: 이 기능은 특정 토큰을 전송할 수 있도록 특정 주소에 승인을 부여하는 데 사용됩니다. 이를 통해 소유자가 다른 당사자가 자신을 대신하여 토큰을 전송할 수 있도록 허용하는 위임 전송이 가능해집니다.
getApproved: 이 함수는 특정 토큰에 대해 승인된 주소를 가져오는 데 사용됩니다. 해당 토큰에 승인된 주소가 없는 경우, 이 함수는 null 주소를 반환합니다.
setApprovalForAll: 이 함수를 사용하면 하나 이상의 토큰을 소유한 사용자가 운영자가 자신의 모든 토큰을 관리할 수 있도록 승인을 부여하거나 취소할 수 있습니다.
isApprovedForAll: 이 함수는 운영자가 소유자의 모든 토큰을 관리할 수 있는 권한을 부여받았는지 확인하는 데 사용됩니다.
safeTransferFrom (데이터 포함): 이 함수는 safeTransferFrom (데이터 없음)과 유사하지만, 데이터 매개변수가 추가되어 있습니다. 수신자가 스마트 계약인 경우, 이 추가 데이터를 통해 전송 중에 부가 정보를 전달할 수 있습니다. 또한 이 함수는 수신자가 스마트 계약인지, 그리고 onERC721Received 함수를 구현하고 있는지 여부를 확인합니다.
ERC-721 관련 행사
이전: 이 이벤트는 토큰의 소유권이 한 주소에서 다른 주소로 변경될 때 발생합니다. 이 이벤트에는 발신자(from), 수신자(to), 그리고 이전된 특정 토큰(ID 기준)에 대한 세부 정보가 포함됩니다. 이 이벤트를 통해 UI나 다른 계약과 같은 외부 리스너가 토큰 이전에 대응할 수 있습니다.
승인: 이 이벤트는 특정 토큰을 전송할 수 있도록 주소가 승인되었을 때 발생합니다. 여기에는 토큰의 현재 소유자(owner), 이제 토큰을 전송할 수 있게 된 승인된 주소(approved), 그리고 전송이 승인된 특정 토큰(ID 기준)이 포함됩니다. 이 이벤트를 통해 애플리케이션은 토큰 승인 내역을 추적하고 이에 따라 대응할 수 있습니다.
ApprovalForAll: 이 이벤트는 소유자가 운영자에게 자신의 모든 토큰을 관리할 수 있는 권한을 승인하거나 취소할 때 발생합니다. 여기에는 소유자의 주소(owner), 운영자의 주소(operator), 그리고 운영자가 승인되었는지 여부를 나타내는 부울 값(approved)이 포함됩니다. 이 이벤트를 통해 애플리케이션은 특정 소유자의 모든 토큰을 관리할 권한을 부여받은 주소가 어디인지 추적할 수 있습니다.
대체 불가능 토큰(NFT)의 활용 사례
-
디지털 아트(또는 실물 아트): 예술 작품은 NFT의 가장 대표적인 활용 사례입니다. 디지털 아트 경매는 NFT의 첫 번째 응용 분야였으며, 여전히 성장세를 이어가고 있습니다.
-
게임: 게임 내 구매 및 수집품 제공.
-
부동산: 부동산의 토큰화 및 스마트 계약을 통한 매매.
-
금융: 대출, 선물 등 금융 상품 및 기타 관련 업무.
-
소프트웨어 제품명: 불법 복제 방지 및 개인정보 보호를 보장하는 소프트웨어 라이선스.
-
콘서트 티켓/스포츠 경기 티켓: 티켓 판매 과정에서 사기 행위가 발생하지 않도록 하고, 팬들이 과거 관람 기록을 한곳에서 확인할 수 있도록 하기 위함입니다.
-
KYC 규정 준수: 특정 사용자의 KYC를 위한 토큰 생성.
테스트용 ETH 받기
ERC-721 토큰이 무엇이며 어떻게 작동하는지 알아보았으니, 이제 우리만의 토큰을 어떻게 생성하고 배포할 수 있는지 살펴보겠습니다.
이더리움 세폴리아(Sepolia) 테스트넷에 계약을 배포할 것입니다. 시작하려면 MetaMask 브라우저 확장 프로그램(또는 Phantom, WalletConnect 호환 등 다른 호환 가능한 web3 지갑)과 테스트용 ETH가 필요합니다. 테스트용 ETH는 Quicknode 멀티체인 페이싯( Multi-Chain Faucet)에서 받을 수 있습니다. 지갑을 연결하거나 주소를 붙여넣은 뒤 ‘계속’을 클릭하기만 하면 됩니다. 보너스를 받으려면 트윗을 공유하라는 메시지가 표시될 것입니다(권장합니다!). 그렇지 않다면 ‘아니요, 0.05 ETH만 보내주세요’를 클릭하세요. EVM 파우셋을 사용하려면 이더리움 메인넷에 0.001 ETH의 잔액이 있어야 한다는 점에 유의하세요.

IPFS에 파일 추가하기
NFT 계약을 작성하기 전에, NFT용 아트 작품을 호스팅하고 메타데이터 파일을 생성해야 합니다. 이를 위해 피어 투 피어(P2P) 방식의 분산형 파일 저장 및 공유 시스템인 IPFS를 사용할 것입니다. IPFS 프로토콜을 활용하는 방법에는 여러 가지가 있습니다. 직접 시스템에 IPFS를 구축하여 운영할 수도 있고, 더 간편한 솔루션으로 Quicknode를 선택할 수도 있습니다. Quicknode는 기반 인프라를 관리함으로써 IPFS에 대한 접근을 간소화합니다. 이 방식을 통해 사용자는 콘텐츠 제작에 집중할 수 있으며, 데이터 고정(data pinning)을 위해 로컬 IPFS 노드를 유지 관리해야 하는 부담에서 벗어날 수 있습니다. Quicknode를 사용하면 기술적인 복잡한 작업은 모두 대신 처리해 줍니다.
IPFS에 파일을 업로드하는 두 가지 방법, 즉 표준 IPFS CLI를 사용하는 방법과 간소화된 Quicknode IPFS 서비스를 이용하는 방법을 모두 다룹니다.
표준 방법: IPFS CLI 사용
IPFS 문서의 설치 안내에 따라 사용 중인 운영 체제에 맞는 IPFS CLI를 다운로드하여 설치하십시오 .
다음은 이미지 및 메타데이터 파일을 호스팅하는 단계입니다.
1단계: IPFS 저장소 생성
터미널/명령 프롬프트 창에 다음 명령어를 입력하여 IPFS 저장소를 시작하세요.
ipfs 초기화
2단계: IPFS 데몬 시작하기
IPFS 데몬을 시작한 다음, 별도의 터미널/명령 프롬프트 창을 열고 다음 명령을 입력하세요.
IPFS 데몬
3단계: IPFS에 이미지 추가하기
첫 번째 터미널 창으로 이동하여 이미지를 IPFS에 추가하세요(여기서는 art.png).
ipfs add art.png

Qm으로 시작하는 해시를 복사한 다음, 그 앞에“https://ipfs.io/ipfs/”접두사를 추가하세요. 결과는 다음과 같은 형태가 되어야 합니다. https://ipfs.io/ipfs/QmQEVVLJUR1WLN15S49rzDJsSP7za9DxeqpUzWuG4aondg
4단계: IPFS에 JSON 파일 추가하기
nft.json이라는 이름의 JSON 파일을 생성하고, 해당 파일을 이미지 파일과 같은 디렉터리에 저장하세요.
JSON 파일 형식:
{
"name": "NFT Art",
"description": "This image shows the true nature of NFT.",
"image": "https://ipfs.io/ipfs/QmZzBdKF7sQX1Q49CQGmreuZHxt9sVB3hTc3TTXYcVZ7jC"
}
이제 JSON 파일을 추가하세요.
ipfs add nft.json
Qm으로 시작하는 해시 값에 “https://ipfs.io/ipfs/”를 접두사로 붙이세요. 결과는 대략 다음과 같아야 합니다. https://ipfs.io/ipfs/QmUFbUjAifv9GwJo7ufTB5sccnrNqELhDMafoEmZdPPng7
이 URL을 저장해 두세요. NFT를 발행할 때 이 URL이 필요할 것입니다.
Quicknode IPFS 솔루션: 더 간편한 대안
Quicknode IPFS의 가격 정보에 대해 더 자세히 알아보시려면, 여기에서 요금제를 확인해 주세요.
좀 더 간편한 방법을 찾고 계신다면, Quicknode의 IPFS 서비스가 NFT 자산을 업로드할 수 있는 사용하기 쉽고 효율적인 솔루션을 제공합니다. Quicknode를 이용하면 인프라 관리의 번거로움을 덜 수 있어, 로컬 IPFS 노드를 유지 관리하는 데 신경 쓰지 않고 콘텐츠 제작에 집중할 수 있습니다.
IPFS용 Quicknode를 사용하려면 다음 단계를 따르세요:
1단계: Quicknode에 로그인하기
Quicknode에 로그인한 후 왼쪽 사이드바에서 IPFS 옵션을 선택하세요:

2단계: Quicknode를 사용하여 IPFS에 이미지 추가하기
이미지 파일을 드래그 앤 드롭하거나 Finder/파일 탐색기 창에서 클릭하여 선택하면 빠르게 업로드할 수 있습니다. 이 가이드에서는 아래 이미지를 사용합니다.

업로드가 완료되면 ‘파일’ 탭에서 파일 이름을 클릭한 다음 ‘IPFS URL 복사’ 버튼을 클릭하세요. 아래 스크린샷과 같은 방식입니다.
https://qn-shared.quicknode-ipfs.com/ipfs/QmQEVVLJUR1WLN15S49rzDJsSP7za9DxeqpUzWuG4aondg

3단계: Quicknode를 사용하여 JSON 파일을 IPFS에 추가하기
다음과 같은 이름의 JSON 파일을 생성합니다. nft.json, 다음의 IPFS URL을 이미지 필드를 입력하고 저장하세요. 저장한 후, 이전 단계와 마찬가지로 JSON 파일을 IPFS에 업로드하세요.
{
"name": "NFT Art",
"description": "This image shows the true nature of NFT.",
"image": "https://qn-shared.quicknode-ipfs.com/ipfs/QmQEVVLJUR1WLN15S49rzDJsSP7za9DxeqpUzWuG4aondg"
}
업로드가 완료되면 ‘파일’ 탭에서 파일 이름을 클릭하고 IPFS URL을 복사하세요. URL은 아래와 비슷한 형태여야 합니다.
https://qn-shared.quicknode-ipfs.com/ipfs/QmeVHZzKGEDbEbG5MVz4hUucNf4qZTRfW18AgdJNTrv22m
이 URL을 저장해 두세요. NFT를 발행할 때 이 URL이 필요할 것입니다.
우리만의 토큰 만들기
편의성과 보안을 위해 OpenZeppelin의 ERC-721 계약을 사용하여 NFT를 생성하겠습니다. OpenZeppelin을 사용하면 ERC-721 인터페이스 전체를 직접 작성할 필요가 없습니다. 대신 라이브러리 계약을 임포트하여 그 기능을 활용할 수 있습니다.
이더리움 리믹스 ( Ethereum Remix) IDE로 이동하여 새로운 솔리디티(Solidity) 파일을 생성하세요. 예를 들어, MyToken.sol과 같은 파일명을 지정할 수 있습니다.
다음 코드를 새로 만든 솔리디티 스크립트에 붙여넣으세요:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts@5.0.0/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts@5.0.0/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts@5.0.0/token/ERC721/extensions/ERC721Burnable.sol";
import "@openzeppelin/contracts@5.0.0/access/Ownable.sol";
contract MyToken is ERC721, ERC721URIStorage, ERC721Burnable, Ownable {
constructor(address initialOwner)
ERC721("MyToken", "MTK")
Ownable(initialOwner)
{}
function safeMint(address to, uint256 tokenId, string memory uri)
public
onlyOwner
{
_safeMint(to, tokenId);
_setTokenURI(tokenId, uri);
}
// The following functions are overrides required by Solidity.
function tokenURI(uint256 tokenId)
public
view
override(ERC721, ERC721URIStorage)
returns (string memory)
{
return super.tokenURI(tokenId);
}
function supportsInterface(bytes4 interfaceId)
public
view
override(ERC721, ERC721URIStorage)
returns (bool)
{
return super.supportsInterface(interfaceId);
}
}
위 코드에 대한 설명:
1행: SPDX 라이선스 유형을 MIT로 지정합니다. 이는 해당 코드가 MIT 라이선스에 따라 라이선스가 부여되었음을 나타내며, MIT 라이선스는 매우 제한적인 조건 하에서만 코드의 사용, 수정 및 배포를 허용하는 관대한 오픈소스 라이선스입니다.
2행: Solidity 버전을 ^0.8.20으로 선언합니다. 이는 코드가 Solidity 버전 0.8.20 또는 이와 호환되는 버전을 사용하여 작성되었음을 나타냅니다.
4~7행: OpenZeppelin 라이브러리에서 필요한 계약(contract)을 가져옵니다.
-
ERC721.sol: 이 계약은 OpenZeppelin 라이브러리에서 가져온 것으로, ERC721 표준의 기본 구현을 나타냅니다. ERC721은 대체 불가능 토큰(NFT)을 위한 표준입니다.
-
ERC721URIStorage.sol: 이 계약은 ERC721을 확장하여 NFT와 관련된 메타데이터 URI를 저장하고 관리하는 기능을 추가합니다. 메타데이터 URI는 일반적으로 NFT에 대한 추가 정보를 가리킵니다.
-
ERC721Burnable.sol: 이 계약은 ERC721을 확장하여 NFT를 소각(파기)할 수 있는 기능을 추가합니다. 이 계약은 NFT를 유통에서 영구적으로 제거하는 기능을 제공하며, 소유자만이 이 기능을 호출할 수 있습니다.
-
Ownable.sol: 이 계약은 접근 제어를 위해 사용됩니다. 이를 통해 계약 내에서 특별한 권한을 가진 소유자를 지정할 수 있습니다. 소유자는 다른 사용자가 수행할 수 없는 특정 작업을 수행할 수 있습니다.
9행: “”라는 이름의 계약 시작 MyToken 또한 이 계약이 ERC721, ERC721URIStorage 및 Ownable 계약을 확장한다고 언급하고 있습니다. 이는 즉, MyToken 계약은 해당 계약들에 정의된 기능과 속성을 상속받습니다.
10행: 여기에서 생성자 함수가 시작됩니다. 생성자는 솔리디티에서 계약 배포 시 단 한 번만 실행되는 특수한 함수입니다. 이 생성자는 하나의 인자를 받으며, 초기 소유자, 이는 이더리움 주소입니다.
11행: 이 행은 "MyToken"과 "MTK"를 인수로 전달하여 ERC721 계약의 생성자를 호출합니다. 이를 통해 이름이 "MyToken"이고 심볼이 "MTK"인 NFT 계약을 초기화합니다.
12행: 이 행은 Ownable 계약의 생성자를 호출하여, MyToken 계약의 초기 소유자를 initialOwner로 지정된 주소로 설정합니다.
15행: 함수 선언 safeMint 세 가지 인수를 갖습니다: to(NFT 토큰 수신자의 주소), tokenId(토큰의 고유 식별자), uri(토큰과 연결된 JSON 파일의 URI). 이 함수는 계약 소유자(다음으로 지정된)만이 호출할 수 있습니다. onlyOwner 수식어).
19행: 다음을 호출하여 새로운 토큰을 생성합니다. _safeMint ERC721 계약에서 상속받은 함수입니다. 이 함수는 새로운 토큰을 생성하여 지정된 수신자의 주소에 할당합니다.
20행: 다음을 사용하여 토큰과 연관된 토큰 URI(메타데이터 URI)를 설정합니다. _setTokenURI 다음에서 상속받은 함수 ERC721URIStorage 계약. URI는 제공된 tokenId와 uri를 기반으로 설정됩니다.
25~32행: Solidity에서 요구하는 오버라이드를 구현하여 ERC721 그리고 ERC721URIStorage 계약서. tokenURI 주어진 tokenId와 연관된 메타데이터 URI를 반환하는 함수입니다. 이 함수는 public 및 view로 표시되어 있어, 읽기 전용 함수이며 누구나 호출할 수 있음을 나타냅니다.
34~41행: 다음에서 요구하는 supportsInterface 함수를 구현합니다. ERC721 그리고 ERC721URIStorage 계약. 이 함수는 주어진 interfaceId가 해당 계약에서 지원되는지 확인하고, 그에 따라 부울 값을 반환합니다.
이러한 기능과 계약을 결합함으로써, 이 코드는 다음과 같은 이름의 사용자 정의 ERC721 토큰 계약을 생성합니다. MyToken. 이 계약을 통해 계약 소유자는 새로운 토큰을 안전하게 발행하고, 해당 토큰에 메타데이터 URI를 연결할 수 있으며, ERC721 표준에서 정의한 필수 인터페이스를 지원합니다.
자, 원하신다면 잠시 시간을 내어 스마트 계약을 본인의 정보에 맞게 수정해 보세요. 다음 줄을 수정하여 토큰 이름과 심볼을 변경할 수 있습니다. - ERC721("MyToken", "MTK").
작업이 끝나면 스마트 계약을 컴파일하고 다음을 사용하여 배포하세요. 주입된 프로바이더 (컨트랙트를 컴파일하기 전에 메타마스크에서 Sepolia 테스트넷을 선택했는지 확인하세요). 그런 다음, 바로 옆에 있는 입력란에 지갑 주소를 붙여넣으세요. 배포 버튼을 클릭하여 초기 소유자 생성자 함수의 매개변수. 마지막으로, []를 클릭하세요. 배포 Remix.IDE에서.

배포 전에 “이 계약은 추상적일 수 있습니다”라는 오류 메시지가 표시되면, ‘계약’ 탭에서 적절한 계약을 선택했는지 확인하십시오.
메타마스크에서 거래를 확인하세요:

이제 Remix의 “배포된 계약(Deployed Contracts)” 섹션으로 이동하여 배포된 계약을 펼치세요. 여러 개의 함수/메서드가 표시될 것입니다. 다음을 펼치세요. safeMint 함수를 작성하고 다음 세부 정보를 추가하세요:
- _to_ 필드에 지갑 주소를 입력하세요.
- _tokenId 필드에 임의의 Big number 값을 입력하세요. 처음 발행되는 토큰을 나타내므로 '1'을 사용하는 것을 권장합니다.
- ~에 대하여 _uri 입력란에, 앞 단계에서 사용한 메서드에 해당하는 JSON 파일의 URI를 입력하십시오:
- 표준 IPFS CLI 방법을 사용한 경우: “표준 방법: IPFS CLI 사용” 섹션에서 설명한 대로 파일을 IPFS에 업로드한 후 얻은 URI를 사용하세요. 이 URI는 https://ipfs.io/ipfs/로 시작하는 IPFS 링크에 파일의 해시 값이 이어지는 형태입니다.
- Quicknode의 IPFS 서비스를 선택한 경우: “Quicknode IPFS 솔루션: 더 쉬운 대안” 섹션에서 파일을 업로드한 후 Quicknode에서 제공한 URI를 사용하십시오. Quicknode는 파일에 대한 고유한 URI를 생성하며, 이 URI를 여기에 입력해야 합니다.

'거래'를 클릭한 후 MetaMask에서 거래를 확인하세요. 몇 분 정도 걸릴 수 있지만, Etherscan과 같은 블록 체인 탐색기를 통해 거래가 실행되었는지 언제든지 확인할 수 있습니다. 이제 Sepolia 체인에 NFT가 등록되었습니다.
다음과 같은 다른 세부 사항도 확인할 수 있습니다. 이름, 기호, ownerOf, 또는 tokenURI 앞서 언급한 토큰 ID를 입력하면 됩니다.

결론
나만의 NFT를 제작하신 것을 축하합니다! 예술가 친구들이 자신의 작품을 이더리움 블록체인에 올릴 수 있도록 도와주거나, 직접 예술가가 되어보세요. 더 많은 예시를 보려면 OpenZeppelin의 마법사(Wizard ) 를 확인해 보세요.
이더리움에 관한 더 많은 기사와 가이드를 받아보시려면 뉴스레터를 구독해 주세요. 의견이 있으시면 트위터를 통해 언제든지 연락해 주세요. 디스코드 커뮤니티 서버에서도 언제든지 저희와 대화를 나눌 수 있으며, 이곳에는 여러분이 만나볼 수 있는 가장 멋진 개발자들이 모여 있습니다 :)
여러분의 피드백을 ❤️ 환영합니다!
의견이나 다루었으면 하는 새로운 주제가 있다면 알려주세요. 여러분의 의견을 기다리고 있습니다.
