이전글
메타마스크, 테스트넷 배포
이번 글에서는 메타마스크를 이용하여 컨트랙트를 테스트넷에 배포하는 방법에 대해 알아보겠습니다.
1. 메타마스크
지금까지 컨트랙트를 내장 블록체인에서만 배포하여 테스트했습니다. 하지만 메인넷에 컨트랙트를 배포하기 위해서는 실제로 운용 중인 테스트용 블록체인인 테스트넷에서도 컨트랙트를 배포하여 테스트할 필요가 있습니다.
테스트넷에 컨트랙트를 배포하기 위해서는 블록체인 지갑이 필요합니다. 이번 글에서는 이더리움에서 일반적으로 사용하는 지갑인 메타마스크를 활용하여 컨트랙트 배포를 해보겠습니다.
메타마스크는 크롬 확장프로그램으로, 아래 주소에서 설치하여 사용할 수 있습니다.
메타마스크가 설치되었다면 계정을 생성하거나 기존 계정의 니모닉을 입력하여 사용할 수 있습니다. 메타마스크에 로그인하여 계정이 정상적으로 활성화된 상태에서 테스트넷 배포를 진행할 수 있습니다.
2. 테스트넷 배포
이제 테스트넷에 컨트랙트를 배포해 보겠습니다. 테스트넷에 컨트랙트를 배포하기 위해서는 먼저 어떤 테스트넷에 컨트랙트를 배포할 것인지를 선택해야 합니다. 비트코인과는 다르게 이더리움에는 여러 개의 테스트넷이 존재합니다. 따라서 적절한 테스트넷을 하나 선택해서 사용해야 합니다.
테스트넷의 종류는 상황에 따라 조금씩 바뀝니다. 글을 쓰고 있는 시점에서 권장되고 있는 테스트넷은 Sepolia이며, 권장되는 테스트넷이 바뀐 경우 해당 테스트넷을 사용하면 됩니다.
먼저 메타마스크에서 Sepolia 테스트넷으로 변경해 보겠습니다. 메타마스크 상단의 이더리움 로고를 클릭하여 네트워크 변경 메뉴를 엽니다. 그리고 Sepolia를 선택합니다. 테스트넷이 안 보일 경우 테스트 네트워크 보기를 활성화합니다.
테스트넷 환경으로 전환되면 다음과 같이 SepoliaETH로 변경됩니다.
컨트랙트 배포를 위해서는 이더가 필요하므로, Faucet을 이용하여 테스트넷 이더를 받아보겠습니다. sepolia faucet으로 검색하면 여러 faucet을 찾을 수 있으며, 이번 글에서는 아래 faucet을 사용하였습니다.
이제 메타마스크를 리믹스에 연결하여 컨트랙트 배포해 보겠습니다. 배포할 컨트랙트는 이전에 만들었던 ERC-20 컨트랙트입니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract TESTToken is ERC20("Test", "TST") {
constructor(uint256 initialSupply) {
_mint(msg.sender, initialSupply);
}
}
이전처럼 코드를 컴파일한 뒤 배포 메뉴로 이동합니다. 그다음 메타마스크와 연결하기 위해 ENVIRONMENT를 클릭합니다.
Injected Provider - MetaMask를 선택하여 메타마스크와 연결합니다.
이후 배포 과정은 이전과 동일합니다. 발행할 토큰의 개수와 함께 Deploy를 클릭합니다. Deploy를 시도할 경우 메타마스크에서 트랜잭션을 확인해야 합니다. 메타마스크에서 트랜잭션을 확인한 후 정상적으로 트랜잭션이 보내지면 몇 초 뒤에 트랜잭션이 승인됩니다. 트랜잭션 결과는 이전과 동일하게 터미널에서 확인할 수 있습니다.
컨트랙트가 테스트넷에 배포되었으므로 이더스캔에서도 관련 내용을 확인할 수 있습니다. 아래는 배포 트랜잭션과 컨트랙트 계정에 대한 이더스캔 정보입니다.
ERC-20 표준을 만족하는 토큰을 배포했기 때문에, 이더스캔의 배포 계정 내의 ERC-20 항목에서 해당 토큰의 입출금을 추적할 수 있습니다.
한 번 배포된 컨트랙트는 블록체인에 영구히 기록되며 삭제되지 않습니다. 따라서 메인넷에 컨트랙트를 배포할 때에는 매우 신중해야 합니다.
메인넷에 컨트랙트를 배포하는 방법은 테스트넷과 동일합니다. 네트워크를 이더리움 메인넷으로 변경해주기만 하면 됩니다.
지금까지 작성한 컨트랙트를 테스트넷에 배포하는 방법에 대해 알아봤습니다. 감사합니다.
'이더리움 > 솔리디티' 카테고리의 다른 글
[솔리디티] 18. ERC-721 NFT (0) | 2023.08.18 |
---|---|
[솔리디티] 17. ERC-20 토큰 (0) | 2023.08.12 |
[솔리디티] 16. import, 라이브러리 (0) | 2023.08.10 |
[솔리디티] 15. 인터페이스 (0) | 2023.08.09 |
[솔리디티] 14. 상속, 오버라이딩, 다중 상속 (0) | 2023.08.07 |