초간단 실습 erc20 발행 후 전송

유지민·2022년 12월 26일
0

erc20

목록 보기
1/1

오픈제플린을 이용해 erc20토큰을 초간단하게 발행후 하드헷으로 다른 지갑으로 보내보는 아주아주 간단한 실습

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol
참고

remix에서 파일 생성 후 베포 (당연히 테스트넷으로 베포)

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

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

contract AToken is ERC20("A_simple", "AS") {
    constructor(uint totalSupply){
        _mint(msg.sender, totalSupply); //함수실행자에게 전체를 민팅
    }

    function MintToken(uint a) public {
        _mint(address(this), a);
    }

    receive() external payable{} //AToken을 payable하게 바꾸어주는 코드
}


이렇게 베포된걸 볼수있다. (베포할 때 민팅 개수 100개로 설정함)

이제 터미널에서 하드헷을 진행하자 (install 등 세팅은 되어있는 상황)

(터미널에서)

npx hardhat --network goerli console

(> 는 console안에서 실행되는것)

> const provider = new ethers.providers.AlchemyProvider(network="goerli", "알케미 API-key")

> const PVK = "개인키"

> const signer = new ethers.Wallet(PVK, provider)

> let abi = 아까 베포한 remix abi

> let addr = "0x05d791A189246d27d3510CcC5c976732BCC99e58"

> const contract = new ethers.Contract(addr, abi, signer)

> contract (명령어로 터미널에서 contract 잘 불러왔는지 확인)

> await contract.name()
'A_simple'	//아까 등록한 이름이 나오나 확인
> await contract.symbol()
'AS'	//아까 등록한 심볼이 나오나 확인

> await contract.transfer("토큰 보낼 주소", 10)	//토큰 전송 명령어(보낼 주소, 보낼 토큰 개수)
{
  type: 2,
  chainId: 5,
  nonce: 74,
  maxPriorityFeePerGas: BigNumber { value: "1500000000" },
  maxFeePerGas: BigNumber { value: "1500000182" },
  gasPrice: null,
  gasLimit: BigNumber { value: "52145" },
  to: '0x05d791A189246d27d3510CcC5c976732BCC99e58',
  value: BigNumber { value: "0" },
  data: '0xa9059cbb000000000000000000000000905d234c0379f530495bef67cf599e435a9de0a9000000000000000000000000000000000000000000000000000000000000000a',
  accessList: [],
  hash: '0x94341b55dca5d053f549554ffb2de31f9165fb696088ddc5f83f6a01d6f521c6',
  v: 0,
  r: '0x06e30ac2e7eb86ff2e511d3773f721a282db3c73afed2a31656e407a28306ef9',
  s: '0x37cb3fbc68ac3fc626147189e0867504e38b6c2a4e03a022897ba64b3577adfa',
  from: '0xCf7287dFdD2eBF21d71efCF5c2C29A0a104504F0',
  confirmations: 0,
  wait: [Function (anonymous)]
}

> await contract.balanceOf("토큰 잔액 조회할 주소").then(console.log) //(토큰 잔액 조회(주소))
BigNumber { value: "10" }

토큰을 잘 보냈는지 확인 하려면 메타마스크 지갑에 들어가(아까 보낸 주소)


토큰 가져오기 클릭 후


여기에 컨트랙트 주소 기입 후 토큰 추가 -> 토큰 가져오기


토큰 전송 후 이더스캔에서 확인

profile
개발 취준생

0개의 댓글