Cute Bow Tie Hearts Blinking Pink Pointer

블록체인/스마트 컨트랙트

[truffle, 스마트 컨트랙트] 토큰 생성해보기

청포도 에이드 2022. 7. 15. 16:06
728x90
mkdir truffle
cd truffle
truffle init

디렉토리

 

contracts/SimpleStore.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

contract SimpleStore{
    uint256 private value;
    address public owner;
    constructor(uint256 _value){ //배포됐을 때 생성
        value=_value;
        owner = msg.sender; //스마트컨트랜트 발동한 사람의 주소 : 누구일까? 배포자의 공개키.
    }
    //contructor의 인스턴스는 CA 이전에 생성된다.


    function getAddress() public view returns (address){
        return msg.sender;
    }

}

 

 

contracts/gyulToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

contract gyulToken{

    mapping(address => uint256) public balances;

    string public name = "gyulToken";
    string public symbol = "GTK";
    uint8 public decimals = 18;
    uint256 public totalSupply = 100000000 * 10 ** decimals; //wei단위

    event Transfer(address _from, address _to, uint256 _value);

    constructor(){
        balances[msg.sender] = totalSupply;
        /*
        {
            "0x000000000000000?":10000000
        }
        */
    }

    function balanceOf(address _owner) public view returns(uint256 balance){
        return balances[_owner];
   }

   function transfer(address _to, uint256 _value) public returns(bool success){
        require(balances[msg.sender] >= _value); // nodejs 필요하다, 파일 가져올 때 / 솔리디티에서는? 조건문
        //require(false) 꺼진다 require(true) 그대로 아래가 실행
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
   }

}

/* 
5개

name()
symbol()
decimals()
totalSupply()
balances()
transfer()
balanceOf() //남은 잔액 확인
 */

//  0xF6e96ba44210B9EF4a662F26408A698D3bC97453 :ca계정이디

// 가나슈 코인베이스 비밀키 메타마스크 등록 0xbef91be5ee8254e9457d68f05d7a23b2e917fdabb1aff41c3826383f764930bf


//메타마스크 토큰 가져오기: abi가 필요하지 않은 이유는, 함수가 같기때문에...
//(모두가 내장되어 있는 함수를 사용하기 때문에 ㅇㅇabi에 사용자 지정함수를 등록할 필요가없지)

 

새 터미널 열고

 

npx ganache-cli

 

다른 터미널에

truffle migration

CA 복사해놓기.

 

truffle-config.js

network부분 주석풀어놓는 거 잊지말기.

 

메타 private key등록후 거기서 토큰 CA주소 붙여넣으면 토큰이 등록된다.

 

truffle console
> SimpleStore.deployed().then(it=>instance = it)
> instance.owner()

코인 베이스 계정이 출력된다.

 

메타마스크에서 private key로 다른 계정 하나 더 추가해주고,

CA계정을 등록하면, 토큰을 주고 받을 수 있다!

 

728x90