본문으로 건너뛰기
이 페이지는 영문에서 기계 번역되었으므로 오역이나 어색한 표현이 있을 수 있습니다. 따라서 정확한 정보는 영어 원문을 참조하시기 바랍니다. 또한 잦은 업데이트로 인해 일부 콘텐츠는 영문이 그대로 남아있을 수 있습니다. Crowdin에서 이 페이지의 번역을 개선하는 데 동참하여 도움을 주세요. (Crowdin translation page, Contributing guide)

ERC-721

개요

이 가이드는 Kaia에서 ERC-721 호환 토큰을 생성하고 배포하는 방법에 대한 단계별 안내를 제공합니다. Kaia의 이더리움 호환성 때문에 Kaia에서 대체 가능한 토큰을 생성하는 것은 이더리움에서와 비슷한 단계를 따르며, ERC721 표준을 사용합니다.

표준을 따르기 위해 각각 다음 ERC721 및 ERC165 인터페이스를 구현하는 컨트랙트를 배포합니다:


interface ERC721 /* is ERC165 */ {
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);=
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) external view returns (uint256);
function ownerOf(uint256 _tokenId) external view returns (address);
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address _operator, bool _approved) external;
function getApproved(uint256 _tokenId) external view returns (address);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}
interface ERC165 {
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

  • 토큰 전송 이벤트: 토큰의 소유권이 한 주소에서 다른 주소로 변경될 때 발생합니다.
  • 승인 이벤트: 주소가 특정 토큰 전송을 승인할 때 발생하는 이벤트입니다.
  • ApprovalForAll 이벤트: 소유자가 운영자가 모든 토큰을 관리할 수 있도록 승인을 승인하거나 취소할 때 발생하는 이벤트입니다.
  • balanceOf: 특정 주소가 소유한 대체 불가능한 토큰(NFT) 수를 반환하는 메서드입니다.
  • 소유자: 특정 토큰의 소유자 주소를 반환하는 메서드입니다. 각 ERC721 토큰은 ID로 표시되는 고유한 토큰입니다. 이 기능을 사용하면 사용자 또는 애플리케이션이 토큰의 고유 ID를 기반으로 토큰의 소유자를 확인할 수 있습니다.
  • (데이터 없이): 특정 토큰의 소유권을 한 주소에서 다른 주소로 안전하게 전송하는 메서드입니다. 이 함수는 수신자가 스마트 컨트랙트인지 확인합니다. 그렇다면 전송을 수락하기 위해 특정 함수(onERC721Received)를 구현해야 합니다.
  • 트랜스퍼프롬: 토큰의 소유권을 한 주소에서 다른 주소로 이전하는 메서드입니다. 일반적으로 발신자가 토큰 전송을 승인받은 경우에 사용됩니다.
  • 승인: 특정 토큰을 전송할 주소에 승인을 부여하는 메서드입니다. 이를 통해 소유자가 다른 당사자가 자신을 대신해 토큰을 전송하도록 허용하는 위임 전송이 가능합니다.
  • getApproved: 특정 토큰의 승인된 주소를 가져오는 데 사용되는 메서드입니다.
  • setApprovalForAll: 하나 이상의 토큰 소유자가 운영자가 모든 토큰을 관리할 수 있도록 승인하거나 승인을 취소할 수 있는 메서드입니다.
  • isApprovedForAll: 운영자가 모든 소유자의 토큰을 관리하도록 승인되었는지 확인하는 메서드입니다.
  • safeTransferFrom (데이터 포함): 메서드는 safeTransferFrom (데이터 제외)과 유사하지만 추가 데이터 매개변수가 있습니다. 수신자가 스마트 컨트랙트인 경우 이 추가 데이터는 전송 중에 추가 정보를 전달하는 데 사용할 수 있습니다. 이 함수는 수신자가 스마트 컨트랙트인지 여부와 onERC721Received 함수를 구현하는지 여부도 확인합니다.

시작하기

이 섹션에서는 리믹스 온라인 IDE를 사용하여 ERC721 토큰 컨트랙트를 생성하고 배포합니다. 편의성과 보안을 위해 OpenZeppelin ERC-721 컨트랙트를 사용하여 토큰을 생성합니다. 오픈제플린을 사용하면 전체 ERC-721 인터페이스를 작성할 필요가 없습니다. 대신 라이브러리 컨트랙트를 가져와서 그 기능을 사용할 수 있습니다.

1단계: Filebase 및 IPFS에 파일 추가하기

이를 위해 P2P 파일 저장 및 공유 분산 시스템인 IPFS를 사용할 것입니다. IPFS 프로토콜을 사용하는 방법에는 여러 가지가 있습니다. 자체 시스템에서 IPFS를 설정하고 운영할 수도 있고, 더 쉬운 솔루션인 Filebase를 사용할 수도 있습니다.

Filebase는 IPFS에서 웹3.0 분산형 스토리지로 연결되는 가교 역할을 합니다. 기본 인프라를 관리하여 IPFS에 대한 액세스를 간소화합니다.

이 가이드에서는 Filebase를 사용하여 IPFS에서 NFT 아트와 메타데이터를 호스팅하겠습니다.

단계:

  1. 파일베이스](https://console.filebase.com) 대시보드에 로그인합니다.
  2. 버킷이 없는 경우 버킷 만들기를 클릭하여 IPFS 버킷을 생성합니다.

  1. 버킷 대시보드에 표시되는 업로드 버튼을 선택해 NFT 아트를 업로드합니다.

  1. 파일** 탭에서 파일 이름을 클릭하고 NFT 아트에 대한 IPFS URL을 복사(공유 버튼)합니다.
  2. Filebase를 사용하여 메타데이터 JSON 파일을 IPFS에 추가합니다.

'kairos.json'이라는 JSON 파일을 생성하고 이미지 필드에 IPFS URL을 교체한 후 저장합니다. 저장 후 이전 단계와 유사하게 JSON 파일을 IPFS에 업로드합니다.


{
"name": "Kairos NFT",
"description": "gkaia frens! gazuaaaaa!!!",
"image": "https://disastrous-turquoise-parakeet.myfilebase.com/ipfs/QmRvQc4wZCp6NF7dFL4ywiWTG7FSH3KKGUAkXGgsdYfcKi"
}

업로드 후 파일 탭에서 파일 이름을 클릭하고 IPFS URL을 복사합니다. 아래 그림과 같이 표시되어야 합니다:


https://disastrous-turquoise-parakeet.myfilebase.com/ipfs/QmY1LZF8JHo2r3h4X5VzLLXtJujqnBFGTyo2aqR9joXnt8

이 IPFS URL을 저장합니다. 다음 섹션에서 NFT를 발행하려면 이 정보가 필요합니다.

2단계: ERC721 토큰 컨트랙트 만들기

오픈제플린 계약 마법사

  • 오픈제플린 계약 마법사] 열기(https://wizard.openzeppelin.com/)
  • ER721**을 선택합니다.
  • 토큰의 이름심볼을 입력합니다. 예를 들어: Kairos 및 KS.
  • 기본 URI** 필드에서 비워두기로 설정합니다.
  • 기능 섹션에서 Mintable, Burnable, URIStorage 기능을 체크하여 권한이 있는 계정(onlyOwner)이 토큰을 발행하고 소각할 수 있도록 허용하고 개별 토큰 ID에 대한 토큰 URI를 업데이트할 수 있도록 허용합니다.
  • 복사** 아이콘을 클릭하여 다음 섹션의 Remix에서 사용할 코드를 복사합니다.

리믹스

  • Remix](https://remix.ethereum.org/)에서 파일 탐색기로 이동하여 계약 폴더에 'Kairos.sol'이라는 새 파일을 생성합니다.
  • 솔리디티 컴파일러** 탭으로 이동하여 Kairos.sol 컴파일을 클릭하여 토큰 컨트랙트를 컴파일합니다.
  • 트랜잭션 배포 및 실행** 탭으로 이동합니다.
  • 환경** > 주입된 공급자 > 메타마스크를 선택합니다.
  • 계약 드롭다운**에서 계약을 선택합니다. 예를 들어, Kairos.
  • 배포** 필드에 초기 소유자에 대한 생성자 인수를 입력합니다.
  • 배포**를 클릭합니다.

3단계: ERC721 토큰 컨트랙트와 상호작용하기

이제 Remix의 배포된 컨트랙트 섹션으로 이동하여 배포된 컨트랙트를 펼칩니다. 다양한 기능을 볼 수 있습니다. 안전한 민트** 기능을 확장하고 다음 세부 정보를 추가합니다:

  1. 입력란에 지갑 주소를 추가합니다.
  2. 토큰아이디** 필드에 큰 숫자 값을 입력합니다. '1'은 발행되는 첫 번째 토큰을 나타내므로 사용하는 것이 좋습니다.
  3. 누리** 필드에 IPFS에 파일 추가하기 섹션에서 생성한 JSON 파일의 URI를 입력합니다.

  1. 트랜잭션**을 클릭하고 메타마스크에서 트랜잭션을 확인합니다. 몇 분 정도 소요될 수 있지만, KaiaScan과 같은 블록 탐색기를 통해 트랜잭션이 실행되었는지 언제든지 확인할 수 있습니다.

이제 Kaia Kairos 테스트넷에서 NFT를 사용하실 수 있습니다.

앞서 사용한 주소 또는 토큰 ID를 입력하면 balanceOf, name, 심볼, ownerOf 또는 tokenURI와 같은 기타 세부 정보를 확인할 수 있습니다.

4단계: 메타마스크에서 NFT 보기

  • 메타마스크 열기
  • NFT** 탭과 지갑 홈페이지로 이동하면 NFT가 자동으로 감지된 것을 확인할 수 있습니다.

노트

NFT를 표시하는 가장 쉬운 방법은 '설정'의 '보안 및 개인정보 보호' 아래에서 NFT 자동 감지 기능을 켜는 것입니다.

페이지를 개선해 주세요