새소식

인기 검색어

Write Up/Ethernaut

[Ethernaut] Naught Coin

  • -
반응형

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import 'openzeppelin-contracts-08/token/ERC20/ERC20.sol';

 contract NaughtCoin is ERC20 {

  // string public constant name = 'NaughtCoin';
  // string public constant symbol = '0x0';
  // uint public constant decimals = 18;
  uint public timeLock = block.timestamp + 10 * 365 days;
  uint256 public INITIAL_SUPPLY;
  address public player;

  constructor(address _player) 
  ERC20('NaughtCoin', '0x0') {
    player = _player;
    INITIAL_SUPPLY = 1000000 * (10**uint256(decimals()));
    // _totalSupply = INITIAL_SUPPLY;
    // _balances[player] = INITIAL_SUPPLY;
    _mint(player, INITIAL_SUPPLY);
    emit Transfer(address(0), player, INITIAL_SUPPLY);
  }
  
  function transfer(address _to, uint256 _value) override public lockTokens returns(bool) {
    super.transfer(_to, _value);
  }

  // Prevent the initial owner from transferring tokens until the timelock has passed
  modifier lockTokens() {
    if (msg.sender == player) {
      require(block.timestamp > timeLock);
      _;
    } else {
     _;
    }
  } 
}

우리의 mission은 player에 있는 token을 0으로 만들어야 한다.

이 문제는 ERC20 Token에 관한 문제이다. ERC20에 대해 지식이 부족하다면 빨리 공부하고 오자!! ☞ 여기여기

 

[BlockChain] ERC20

안뇽안뇽~~ 오랜만이야 나는 rhenus라고 해!! 다들 반갑구 ㅎㅎ 요즘 나는 blockchain에 푹 빠져 있어서 공부하면서 여러 가지 지식을 블로그를 통해 정리하려고 해 그래서 오늘!!!! 주제는 무엇이냐

rhenus9911.tistory.com

Token의 총 발행량은 1,000,000,000,000,000,000,000,000개이다.

그리고 내가 가지고 있는 Token도 1,000,000,000,000,000,000,000,000개이다. 그런데 Token을 출금하려면 10년을 기다려야 한다.

출금을 하려면 approve() 함수와 transferFrom()을 사용하면 된다. 직접 출금할 수 없다면 다른 계좌에 승인을 해주고 그 계좌에서 출금하면 바로 할 수 있다.

 

그리고 lockTokens modifier가 transfer에 밖에 안 걸려 있으니 transferFrom으로 할 수 있다.

그럼 출금에 대해 승인을 해줘야 한다.

token에 1e24 넣고 출금할 계좌를 설정한다.

그리고 approve로 player한테 1e24를 출금할 수 있도록 승인해 준다.

allowance를 확인해 보면 1e24 코인이 확인된다.

 

반응형

'Write Up > Ethernaut' 카테고리의 다른 글

[Ethernaut] Recovery  (0) 2023.02.09
[Ethernaut] Privacy  (0) 2023.02.09
[Ethernaut] Gatekeeper Two  (0) 2023.02.09
[Ethernaut] Gatekeeper One  (0) 2023.02.09
[Ethernaut] Elevator  (0) 2023.02.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.