블록체인(Blockchain) 용어 정리, 나만의 ERC-20 토큰 만들기, Remix IDE 사용법

2021. 10. 18. 12:09Blockchain/Remix IDE

용어 정리

- 블록체인 네트워크란?

V, R, S : 트랜잭션의 서명이 유효한지 검증 하는 방법으로, ECDSA는 메시지(Transaction의 Hash)와 서명만 있으면 서명에 사용된 공개키를 복원하는게 가능하며, 완벽한 복원이 아닌 후보를 4개까지 줄일 수 있음. 그래서 이더리움은 4개의 후보 중에 어떤 공개키를 써야 하는지를 트랜잭션에 포함시켜서 보냄. 트랜잭션의 서명은 V, R, S 컴포넌트로 이루어져 있으며, V는 1바이트로 4개의 후보 중에 어떤 공개키를 사용해야 하는지 지정하고, R과 S는 각각 32바이트로 이루어진 서명 데이터임.

- VM(Virtural Machine)

* 블록체인 네트워크의 수 많은 노드들이 가상의 하나의 단일 기계처럼 작동하는 것을 의미하며, 스마트 컨트랙트는 이러한 VM위에서 작동 됨

* 실제 서버 환경과 테스트 환경을 동일하게 만들고 진행할 수 있게 함

 

- EVM(Ethereum Virtual Machine)

* 솔리디티 언어로 작성된 바이트코드를 해석하고 텍스트를 저장해주는 가상머신

* 많은 사람들이 동시에 EVM의 동일한 상태를 변경 할 때 데이터의 충돌이 일어나기 때문에 이것을 중재하는 것이 EVM의 중요 역할이며, 이 역할은 마이닝과 합의 알고리즘으로 해결 됨

 

- ABI(Application Binary Interface)

* EVM에 있는 기계어를 해석하고 객체에 알맞게 넣어주는 역할을 함

* ABI에서 Interfact란 데이터를 주고 받는 데이터 형식을 정하는 것

 

- Account의 종류

  1. EOA(Externall Owned Accounts)
    공인인증서 있는 계좌번호
    외부 소유 계정으로서 개인 키에 의해 통제
    다른 계정에 이더를 보내거나 메시지를 보낼 수 있음
  2. CA(Contract Accounts)
    EOA와 동일한 내용 + 코드를 저장한 계정

 

- Account의 구성

  1. 공개키(public key)
  2. 개인키(private key)
  3. nonce : tx Count(특정 계정에 트랜잭션이 몇번 일어났는지?의 일련번호값)
  4. value : 100 ETH == 1000000000000000000 Wei
    여기까지는 EOA에 포함
  5. contract code : ABI 내용이 들어감
  6. storage : 파일 데이터들이 들어감
    여기까지는 CA계정에 포함

 

- Transaction의 과정

 

- GAS

* 이더리움(wei) = gas * gas price

* GAS Limit : 한 transaction 안에 발생 될 수 있는 gas의 한계점

 

* 메타마스크와 블록체인 네트워크는 통신 할 때 RPC 통신을 하는데, 메타마스크를 통해서도 rpc 통신이 가능

* 3가지 방법(메타마스크/web3/terminal) 중 하나로 rpc통신 가능

(이전 포스트 참조, 링크 : https://hwan91.tistory.com/13)

 

* 채굴은 왜 하는지? 이더를 먹기위해
* 블록체인 네트워크에서 이더를 먹기위해서는 채굴을 해야하는 시스템을 만든 이유? -> 네트워크를 구성하기 위해


* 반감기 : 어떤 양이 초기 값의 절반이 되는데 걸리는 시간, 특정 조건에 달했을 때 코인의 발행 수량을 점점 줄임 (GAS가 많을수록 채굴 시 받는 이더 보상이 커짐, 보상 = 이더 + 수수료)


나만의 토큰 만들기 (RemixIDE 사용)

- 솔리디티 언어로 작성하고, 특정 변수에 숫자를 입력하는 방법

- 준비물 : RemixIDE(http://remix.ethereum.org), ganache 실행 후 metamask 연결

  1. RemixIDE 실행 
    Home/Compile/Deploy
  2. [Home] 탭에서 MinimumViableToken.sol 파일 생성, 코드 작성
    [HOME] 탭 화면과 MinimumViableToken.sol (아래)
    pragma solidity ^0.4.16;
    
    contract MinimumViableToken {
        mapping(address => uint256) public balanceOf;
        
        constructor() public {}
        
        function MinimumViableTokens(uint256 initialSupply) public {
            balanceOf[msg.sender] = initialSupply;
        }
        
        function transfer(address _to, uint256 _value) public {
            balanceOf[msg.sender] -= _value;
            balanceOf[_to] += _value;
        }
    }
  3. [Solidity Compiler] 탭에서 솔리디티 컴파일
    ※ Auto Compile 체크하면 자동으로 컴파일 진행 됨
  4. [Deploy] 탭에서 솔리디티 배포 
    ENVIROMENT : Injected Web3 선택, ACCOUNT에 메타마스크와 연결 된 가나슈 0번 인덱스 ADDRESS값이 일치하는지 확인 후 Deploy 클릭
    배포 정상 완료 시 결과물
  5. 메타마스크에서 나만의 토큰 만들기
    빨간 네모 클릭
    토큰 계약 주소 : 아래 설명, 토큰 기호 : 아무거나 영문 대문자로 3글자, 토큰 십진수(소수점 몇자리까지 나타낼건지) : 18
    토큰 계약 주소 가져오기 1
    토큰 계약 주소 가져오기 2
    나만의 토큰 생성 완료
  6. 나만의 토큰에 이더 보내기
    Deploy 탭에서 빨간 네모 클릭
    MinimumViableTokens 열어서 initialSupply에 1000000000000000000(wei) 입력 후 transact 클릭
  7.  결과 확인
    거래 완료