초보 Web3 개발자를 위한 이더리움 토큰 개발

이 블로그는 Web3 개발 초보자를 위해 OpenZeppelin, Hardhat, Infura, MetaMask를 사용하여 Ethereum 블록체인에 ERC-20 토큰을 개발하고 배포하는 방법을 단계별로 안내하며, Linea 테스트넷 배포도 포함합니다.

4분 읽기
초보 Web3 개발자를 위한 이더리움 토큰 개발

Web3 개발 초보자에게 있어 자신만의 토큰을 개발하고 배포하는 것은 온체인 소프트웨어 구축을 시작하고, Solidity 실력을 향상시키며, Web3 개발 라이프사이클을 이해하는 가장 인기 있는 방법 중 하나입니다.

이더리움에는 다양한 토큰 표준이 존재하며, 이는 토큰이 이더리움 네트워크 및 다른 dapp과의 호환성, 준수성, 상호운용성을 보장하기 위해 따라야 하는 사전 정의된 규칙 집합입니다.

이러한 표준에는 대체 가능 토큰을 위한 ERC-20, 대체 불가능 토큰(NFT)을 위한 ERC-721, 멀티 토큰 유형을 위한 ERC-1155, 고급 토큰 기능을 위한 ERC-777, 증권형 토큰을 위한 ERC-1400, 그리고 토큰화된 볼트를 위한 ERC-4626이 포함됩니다.

이 블로그에서는 표준 스마트 컨트랙트 템플릿의 안전하고 검증된 구현을 제공하는 라이브러리인 OpenZeppelin을 활용하여 ERC-20 토큰을 개발할 것입니다. 개발 환경 설정, 토큰 컨트랙트 작성, 그리고 Linea 레이어 2 네트워크에 배포하는 과정을 단계별로 살펴보겠습니다.

1단계: Hardhat으로 개발 환경 설정하기

이더리움 토큰 개발을 시작하기 전에 개발 환경을 설정해야 합니다. 이 블로그에서는 Hardhat을 사용할 것입니다. 아래 단계를 따라 진행하세요:

  1. Node.js 및 npm 설치: Node.js는 JavaScript 런타임이며, npm은 패키지 관리자입니다. 공식 Node.js 웹사이트에서 다운로드하여 설치하세요.

  2. 새 Hardhat 프로젝트 생성: 터미널을 열고, 프로젝트를 위한 새 디렉토리를 만든 후 해당 디렉토리로 이동합니다. 그런 다음 아래 명령어를 실행하세요:


mkdir my-token

cd my-token

npm init -y

npm install --save-dev hardhat

npx hardhat
복사
  1. 필요한 Hardhat 플러그인 및 OpenZeppelin 컨트랙트 설치:


npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
복사

2단계: 이더리움 토큰 생성하기

간단한 ERC-20 토큰을 생성하려면 다음 단계를 따르세요:

  1. 토큰 컨트랙트 생성: Hardhat 프로젝트에서 contracts 디렉토리로 이동하여 MyToken.sol이라는 새 파일을 만듭니다. 이 파일을 열고 토큰 컨트랙트를 정의하세요:


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {

    constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {

        _mint(msg.sender, initialSupply);

    }

}
복사

이 스마트 컨트랙트는 OpenZeppelin 라이브러리를 사용하여 심볼 "MTK"를 가진 "MyToken"이라는 ERC-20 토큰을 생성합니다. 배포 시 배포자가 지정한 초기 공급량의 토큰을 발행하고 배포자의 주소에 할당합니다.

  1. 배포 스크립트 작성: scripts 디렉토리에 deploy.js라는 새 파일을 만들고, 컨트랙트를 배포하기 위한 다음 코드를 추가하세요:


async function main() {

  const [deployer] = await ethers.getSigners();

  console.log("Deploying contracts with the account:", deployer.address);

  const MyToken = await ethers.getContractFactory("MyToken");

  const myToken = await MyToken.deploy(1000000);

  console.log("MyToken deployed to:", myToken.address);

}

main()

  .then(() => process.exit(0))

  .catch((error) => {

    console.error(error);

    process.exit(1);

  });
복사

위 스크립트는 Hardhat과 ethers.js를 사용하여 "MyToken" 스마트 컨트랙트를 배포하며, 1,000,000개의 토큰 공급량으로 초기화합니다. 배포자의 주소를 가져와 컨트랙트를 배포합니다.

  1. 컨트랙트 로컬 컴파일 및 배포: 터미널에서 Hardhat이 제공하는 로컬 블록체인에 컨트랙트를 컴파일하고 배포하세요:


npx hardhat compile

npx hardhat run scripts/deploy.js --network localhost
복사

3단계: Linea 테스트넷에 토큰 컨트랙트 배포하기

ERC-20 토큰을 로컬에서 개발하고 배포했으니, 이제 Infura와 MetaMask를 사용하여 Linea 테스트넷에 배포할 차례입니다. 다음 단계에 따라 Linea 테스트넷에서 토큰을 라이브로 운영하세요.

  1. Infura 계정 설정: Infura는 다양한 블록체인 네트워크와 테스트넷에 쉽게 접근할 수 있도록 해줍니다. 새 프로젝트를 생성하고, 지원 네트워크 메뉴에서 Linea Sepolia 테스트넷을 선택한 후 프로젝트 ID를 복사하세요.

  2. MetaMask 설정: MetaMask 지갑을 열고 네트워크 섹션으로 이동합니다. 드롭다운 메뉴에서 "테스트 네트워크 표시"가 활성화되어 있는지 확인한 후 Linea Sepolia 테스트넷을 선택하세요.

  3. Linea Sepolia ETH 받기: 컨트랙트를 배포할 때 가스비를 지불하기 위해 Linea Sepolia ETH가 필요합니다. 공식 Linea Sepolia 파우셋을 방문하여 Linea ETH를 받을 수 있습니다.

  4. Hardhat 설정 업데이트: Hardhat 프로젝트에서 hardhat.config.js를 업데이트하여 Linea 테스트넷 설정을 포함시키세요:


require("@nomiclabs/hardhat-ethers");

require("dotenv").config();

module.exports = {

  solidity: "0.8.0",

  networks: {

    lineaTestnet: {

      url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,

      accounts: [`0x${process.env.PRIVATE_KEY}`],

      chainId: 59141

    }

  }

};
복사

.env 파일에 필요한 환경 변수가 포함되어 있는지 확인하세요:


INFURA_PROJECT_ID=your_infura_project_id

PRIVATE_KEY=your_private_key
복사
  1. Linea Sepolia 테스트넷에 컨트랙트 배포하기

이제 Linea 테스트넷에 토큰 컨트랙트를 배포하려면 다음 명령어를 실행하세요:


npx hardhat compile

npx hardhat run scripts/deploy.js --network lineaTestnet
복사

이 스크립트는 MetaMask에 연결된 계정을 사용하여 ERC-20 토큰 컨트랙트를 Linea 테스트넷에 배포합니다.

MetaMask Developer로 Web3 dapp 개발 역량 높이기

이더리움 토큰 개발의 기초를 익히고, 개발 환경을 설정하며, 모범 사례를 준수함으로써 자신만의 이더리움 토큰을 성공적으로 개발하고 배포할 수 있습니다. 새로운 암호화폐를 만들거나 자산을 토큰화하는 경우 모두, 이더리움은 아이디어를 현실로 구현할 수 있는 도구와 생태계를 제공합니다.

Sign-in-with-Ethereum(SIWE), EIP-6963 지원, Snaps를 통한 MetaMask와의 원활한 통합 등 더 고급 개발 요구 사항을 위해 MetaMask Developer 포털을 방문하세요. 이 포털은 사용자 온보딩을 간소화하고, 개발자가 MetaMask 사용자를 위한 고유하고 퍼미션리스한 지갑 연결 및 인앱 경험을 구축할 수 있도록 설계된 포괄적인 도구, API, SDK 모음을 제공합니다.

AI가 번역했습니다. 오류가 있을 수 있습니다. 항상 정보를 확인하시기 바랍니다.

번역 평가하기
  • Kingsley Okonkwo
    Kingsley Okonkwo

    Kingsley, a certified Ethereum Blockchain developer, serves as a technical writer at Consensys, with a special focus on developer tools. Before joining Consensys, Kingsley worked as a freelance backend developer on sevral platforms including Gigster and Braintrust. Boasting 5 years of software development experience, he's proficient with tools such as JavaScript (Node.js & React), GoLang, SQL, and Docker. Kingsley excels in producing step-by-step tutorials and how-to guides, utilizing the latest in web3 technology to help fellow developers build better dapps. Currently based in Dubai, Kingsley enjoys playing basketball and soccer in his free time

    모든 글 읽기