[Solidity]_기본 크립토 토큰 구축하기

hanseungjune·2023년 3월 2일
0

비전공자의 IT준비

목록 보기
47/68
post-thumbnail

📌 코인 발행 및 전송 코드

// SPDX-License-Identifier: MIT
// 위 주석은 이 소스 코드의 라이선스가 MIT 라이선스임을 나타냅니다.

pragma solidity >=0.7.0 <0.9.0;

contract Coin {
  address public minter;
  mapping(address => uint) public balances;

  event Sent(address from, address to, uint amount);

  constructor() {
      minter = msg.sender;
  }

  // 새로운 코인을 발행하는 함수입니다.
  // 발행자(minter)만이 이 함수를 호출할 수 있습니다.
  function mint(address receiver, uint amount) public {
      require(msg.sender == minter);
      balances[receiver] += amount;
  }

  // 코인을 송금하는 함수입니다.
  // 보내는 사람의 잔고가 충분하지 않은 경우, InsufficientBalance 오류를 발생시킵니다.
  function send(address receiver, uint amount) public {
      if(amount > balances[msg.sender])
      revert InsufficientBalance({
          requested: amount,
          available: balances[msg.sender]
      });
      balances[msg.sender] -= amount;
      balances[receiver] += amount;
      emit Sent(msg.sender, receiver, amount);
  }

  // InsufficientBalance 오류를 정의합니다.
  error InsufficientBalance(uint requested, uint available);
  
 }

위 코드에서 주석은 코드의 각 부분에 대한 설명을 제공합니다. 이를 통해 코드를 이해하고 유지보수하기 쉬워집니다. 또한 SPDX-License-Identifier 주석을 포함하여 라이선스 정보를 명시함으로써, 코드 사용 조건을 명확하게 지정합니다.

Remix 에서 첫번째 계좌(발행자)로 먼저 일정량의 코인을 mint 한다.

그리고 두 번째 계좌 주인의 돈을 100000 만큼 전송해놓고, 다섯 번째 계좌 주인에게 5000, 50000, 50000을 전송하고, 추가로 50000원을 전송하려니 잔액부족으로 에러가 발생한 것을 확인했다.

profile
필요하다면 공부하는 개발자, 한승준

0개의 댓글