읽는 데 5분
개요
BEP20은 이더리움 네트워크의 토큰에 널리 사용되는 ERC20 사양에 상응하는 BNB 스마트 체인의 표준입니다. 차이점은 BEP20 토큰이 이더리움 네트워크가 아닌 BNB 스마트 체인 네트워크에서 운영된다는 점입니다. 이러한 차이점에도 불구하고, BSC(BNB 스마트 체인)는 모든 스마트 계약에 이더리움 가상 머신(EVM)을 구현하고 있기 때문에, 사양과 구현 면에서 사실상 동일합니다. 이 가이드에서는 나만의 BEP20 토큰을 만드는 방법을 단계별로 안내해 드립니다.
선행 조건:
- MetaMask 브라우저 확장 프로그램
- Remix IDE에 대한 이해
MetaMask 지갑에 BSC 테스트넷 추가하기
이 새로운 프로젝트를 시작하기 위해 가장 먼저 해야 할 일은 MetaMask 지갑을 사용하여 BSC 테스트넷을 설정하는 것입니다.
MetaMask를 실행한 후 ‘네트워크’ 탭을 클릭하고 ‘사용자 지정 RPC’를 클릭하면 됩니다. 지갑을 BSC 테스트넷에 연결하도록 설정하려면 아래 그림과 같이 양식을 작성하면 됩니다.

이제 설정이 완료되었으니, 지갑을 BSC 테스트넷에 연결할 수 있습니다!
지갑에 테스트용 BNB 추가하기
다음으로 해야 할 일은 테스트용으로 사용할 BNB를 확보하는 것입니다. BNB는 BSC의 기본 통화이며, BSC에서 BNB가 차지하는 위치는 이더리움에서 ETH가 차지하는 위치와 같습니다. 테스트용 BNB를 얻으려면
로 이동하세요 .

MetaMask 브라우저 확장 프로그램에서 지갑 주소를 복사하여 해당 입력란에 붙여넣으면 BNB를 받을 수 있습니다. 지갑에 갓 입금된 BNB가 넉넉하니, 이제 마음껏 써볼까요!
토큰 코딩하기
BSC는 EVM을 사용하기 때문에, ERC-20 토큰과 BEP20 토큰을 배포하는 코드는 동일합니다. 덕분에 OpenZeppelin에서 ERC-20 사양을 가져와 우리 스마트 계약에 활용할 수 있습니다.
다음으로 할 일은 브라우저 탭을 새로 열고 Remix IDE로 이동한 뒤, 새로운 워크스페이스를 시작하는 것입니다.
contracts 폴더 안에 **BEP20.sol
**이라는 파일을 생성하겠습니다.
**
이 새 파일에는 다음과 같은 코드를 작성할 수 있습니다:
// contracts/BEP20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract BEP20 is ERC20 {
constructor(uint256 initialSupply) ERC20("BEP20Test", "BPT") {
_mint(msg.sender, initialSupply);
}
}
1/2행: 라이선스 및 이 파일의 저장 위치.
3행: 솔리디티 컴파일러를 버전 0.8.0으로 설정했습니다.
5행: 이 코드는 OpenZeppelin의 ERC20 패키지를 가져옵니다. 이 사양을 활용하여 새로운 토큰을 구현할 수 있습니다. 바로 이 표준 덕분에 다른 지갑이나 프로그램들이 새로운 토큰과 쉽게 연동할 수 있습니다.
7행: 여기서는 새로운 계약을 정의하고 있습니다. BEP20이라는 이름을 임의의 다른 이름으로 변경할 수도 있습니다. 하지만 ERC20 부분은 5행에서 임포트한 ERC20 패키지를 사용하고자 한다는 사실을 솔리디티가 인식할 수 있게 해주는 부분입니다.
8행: 계약을 BSC 테스트넷에 배포할 때마다 계약의 생성자 부분이 호출됩니다. 여기에는 uint256 형식의 initialSupply라는 단일 매개변수를 전달합니다. 그런 다음 OpenZeppelin에서 임포트한 ERC20 기능을 호출합니다. 이 기능에는 두 개의 매개변수가 있는데, 첫 번째는 토큰의 이름이고, 두 번째는 토큰의 티커입니다. 이 예제에서는 토큰 이름을 BEP20Test로 지정했으며, 티커는 BPT 로 표시됩니다.
9행: ERC20 계약에 구현된 _mint 호출입니다. _mint는 토큰을 생성하고, 새로 발행된 모든 토큰을 msg.sender에게 전송합니다. msg. sender는 테스트넷에 계약을 배포한 사람, 즉 이 경우 바로 여러분입니다! 이 호출은 initialSupply 매개변수에 전달된 수만큼의 토큰을 생성합니다.
참고: 이 함수는 WEI 형식의 InitialSupply 수량만큼 토큰을 생성합니다. WEI는 1e-18을 의미합니다. 따라서 토큰 100개를 생성하려면 함수에 100000000000000000000을 전달해야 합니다.
토큰 배포
초기 BEP20.sol 코드가 작성되었으므로, 이제 이를 BSC 테스트넷에 배포할 수 있습니다.
BEP20.sol을 클릭한 다음, 솔리디티 컴파일러 탭을 열고 컴파일러 버전을 "0.8.0+commit.c7dfd78e"로 변경합니다. 그런 다음 파란색 "Compile BEP20.sol" 버튼을 클릭합니다.

계약서를 컴파일했으니 이제 배포할 준비가 되었습니다! Remix에서 “Deploy & Run Transactions” 탭을 클릭한 다음, “Environment” 탭을 “Injected Web 3”로 변경하세요. 이전에 MetaMask를 사용하여 Remix에 연결한 적이 없다면 확인을 요청하는 메시지가 표시될 수 있습니다.
MetaMask가 Remix에 연결되면 “계정(Account)” 필드 아래에 여러분의 주소가 표시되어야 합니다. 그렇다면 이제 드롭다운 탭에서 BEP20 계약을 선택할 수 있습니다. 주황색 배포 버튼과 그 오른쪽에 양식이 표시될 것입니다. 이곳에서 앞서 설정했던 initialSupply 매개변수에 인수를 전달할 수 있습니다.
토큰을 100개 생성할 예정입니다. 이를 위해 100000000000000000000을 입력한 다음 “배포”를 클릭하겠습니다.
네트워크에 무언가를 배포하려면 BNB가 소요되므로, MetaMask에서 거래 승인을 해야 합니다.

지금까지 모든 단계를 올바르게 수행했다면 터미널에 성공 메시지가 표시될 것입니다!
“배포된 계약(Deployed Contracts)” 탭 아래에 있는 계약 주소를 복사한 다음 bscscan에서 조회해 볼 수 있습니다. “from” 필드에 본인의 지갑 주소가 표시되며, 100 BPT 토큰이 본인의 지갑으로 전송된 것을 확인할 수 있을 것입니다.
지갑에 토큰 추가하기
MetaMask UI에서 이를 확인하려면 “자산(Assets)” 탭 아래에 있는 “토큰 추가(Add Token)”를 클릭해야 합니다. 그러면 입력해야 할 3개의 필드가 있는 메뉴가 표시됩니다. Remix에서 복사한 계약 주소를 붙여넣으면 모든 필드가 자동으로 채워지며, 이후 토큰을 수락할 수 있게 됩니다.
완성되면 이렇게 보여야 합니다.

결론
축하합니다! 끝까지 잘 해내셨네요. 이제 BSC 네트워크에 사용자 정의 토큰을 배포하고 MetaMask에 추가하는 방법을 알게 되셨을 겁니다. 사실 이보다 더 많은 것을 알게 되셨는데, 이 과정은 이더리움 네트워크에서도 완전히 동일하기 때문입니다. BSC 네트워크 대신 이더리움 네트워크를 Remix와 MetaMask에 지정하기만 하면 됩니다! 바로 그 방법을 시도해 보고 싶으시다면, 여기에서 단계별 가이드를 확인하실 수 있습니다.
이더리움에 관한 더 많은 기사와 가이드를 받아보시려면 뉴스레터를 구독해 주세요. 의견이 있으시면 트위터를 통해 언제든지 연락해 주세요. 디스코드 커뮤니티 서버에서도 언제든지 저희와 대화를 나눌 수 있으며, 이곳에는 여러분이 만나볼 수 있는 가장 멋진 개발자들이 모여 있습니다 :)