Chapter 2: 이더리움 기초

Bohyeon Park·2023년 7월 17일
0
post-thumbnail

이더 화폐 단위

  • 이더리움의 화폐 단위는 이더(ether)라고 불리며, 기호는 “ETH”이다.

    • Ξ, ♦ :  이런 기호도 사용하긴 하지만 거의 사용하지 않음.
    • 예를 들어, “ 1 ether ", " 1 ETH ", " Ξ1 ", " ♦1 ” 이렇게 다 똑같은 표기이다.
  • 이더 명칭 및 단위

    Value (in wei)ExponentCommon name
    11wei
    1,00010^3Babbage
    1,000,00010^6Lovelace
    1,000,000,…10^18Ether

    • 이더는 더 작은 단위로 나눠진다.
    • 이더의 가치는 항상 이더리움 내부에서는 웨이로 표시되며 부호 없는 정수값이다.
    • 예를 들어,1이더를 거래할 때 그 트랙잭션은 1,000,000,000,000,000,000 wei 값으로 인코딩해서 표기한다.

이더리움 지갑 선택하기

  • 지갑이란 무엇인가?

    • 이더리움 계정을 관리하는 데 도움이 되는 소프트웨어 어플리케이션
    • 즉, 이더리움 지갑은 이더리움 시스템의 gateway(게이트웨이, 관문)이다.
    • 사용자의 키를 보유하고, 사용자를 대신해서 트랜잭션을 생성하고 전파(브로드캐스트, broadcast)할 수 있음.
  • 지갑 유형

    • 모바일 지갑
    • 데스크톱 지갑
    • 웹 기반 지갑
  • 지갑 어플리케이션이 작동하려면 개인키에 대한 접근 권한이 있어야 함. (그래서 지갑도 잘 골라야 함. 신뢰할 수 없는 지갑이면 재산이 위험해질 가능성 있음)

  • 이 책에서는 소개하는 지갑 중 세 가지 지갑만 소개할 것 (나머지는 서비스 종료됨, 2023.07.17)

    • 메타마스크 (MetaMask) - 브라우저 확장 지갑

    • 잭스 (Jaxx) - 서비스 종료

    • 마이이더웰렛 (MyEtherWallet) - 웹 기반 지갑

    • Emerald Wallet - ?


통제와 책임

  • 하나의 개인키가 하나의 “계정”과 동일하다고 생각하면 되며, a사용자가 자신의 개인키를 관리한다

    • 만약 개인키를 잃어버린다면, 자금 및 컨트랙트에 대한 권한을 잃어버리게 되는 것
  • 커스터디를 맡기는 사람들도 있는 데 이는 본인의 개인 키에 대한 통제를 제 3자(보통 온라인 거래소)에게 넘기는 것

  • 보안 책임에 대한 몇 가지 권고사항 :

    • 귀찮다고 그냥 보안을 막 하거나 제대로 알아보지 않고 실행하는 일은 없도록 하기. 검증된 표준 접근 방식을 사용하기.

    • 더 중요한 계정일 수록 더 높은 보안 조치 취하기.

    • 최고 수준의 보안은 에어 갭이 있는 장치를 통해 이뤄지지만, 이 수준은 보통 일반인들이나 일반 계정에게 필요하진 않음.

      💡 에어갭 (air-gap) 이란?

       컴퓨터 또는 네트워크를 외부와 연결되지 않도록 격리하는 보안 조치

    • 개인키를 있는 그대로 (plain form)으로 특히 디지털 형식으로 저장하지 말 것.

    • 개인키는 암호화된 형식으로 디지털 '키스토어(keystore)' 파일로 저장할 수 있다. 암호화되어 있기 때문에 잠금을 해제하려면 패스워드가 필요하다. 계정에 접근하려면 이 키스토어 파일과 패스워드가 모두 필요하다.

    • 패스워드를 디지털 문서, 온라인 드라이브, 암호화된 PDF 등에 저장하지 말고 사진(보통 스크린샷)으로 찍어서 보관해두지도 마라. 패스워드 관리자를 사용하거나 종이에 적어라.

    • 뉴모닉은 펜과 종이를 이용해서 적어두어라 (백업하는 행위). 까먹을 게 뻔하니 백업을 미루지 말자. 만약에라도 시스템에 저장된 데이터가 손실됐거나 패스워드를 잃어버렸을 때, 뉴모닉을 이용해 개인키를 다시 작성하고 지갑을 복구할 수 있다.

    • 큰 돈을 보내기 전에(특히 처음 보내는 주소로), 꼭 적은 양(약 1000원 정도)을 먼저 보내고 수령확인이 되면 나머지 금액을 보내라.

    • 새로운 계정을 만들 때, 새 주소로는 작은 테스트 트랜잭션을 먼저 해보자. 계정 생성이 잘못되었을 경우를 대비하는 것이다. 만약에 테스트 트랜잭션이 잘 되면, 계정 생성이 잘 된 것이다.

    • 공개 블록 탐색기 (블록 익스플로러)는 트랜잭션이 네트워크에 받아졌는 지 독립적으로 확인할 수 있는 방법이다. 하지만 이 방법은 사용자를 누구나 추적할 수 있기 때문에 너의 주소를 block explorer에게 드러내게 되는 단점이 있다.



지갑과 트랜잭션 조회 관련된 아래 7개의 파트는 아래 포스트에 따로 정리놓음

  • MetaMask(메타마스크) 설치하기
  • 지갑 생성하기
  • 지갑 복구하기
  • 네트워크 전환하기
  • 테스트 이더 얻기
  • 메타마스크에서 이더 보내기
  • 트랜잭션 내역 탐색

클릭 ▶️ 메타마스크(MetaMask) 입문(1) ◀️



월드 컴퓨터 (World computer) 소개

이더는 이더리움 가상머신 (EthereumVirtual Machine, EvM)이라고하는 에뮬레이트된 컴퓨터에서 실행되는 컴퓨터프로그램인 스마트 컨트랙트(Smart Contract)를 실행하는 데 사용되는 위한 수단

EVM은 global singleton(글로벌 싱글톤)이다.

글로벌 싱글톤 이란?
마치 전 세계에 걸친 단일 인스턴스 컴퓨터인 것처럼 작동하고 전세계 어디에서든 실행되는 것

이더리움 네트워크의 각 노드는 컨트랙트 실행을 확인하기 위해 EVM의 로컬 사본을 실행하고, 이더리움 블록체인은 트랜잭션과 스마트 컨트랙트를 처리할 때 월드 컴퓨터의 변화하는 상태(state)를 기록한다.


외부 소유 계정(EOAs) 및 컨트랙트 계정 (CAs)

  • 외부 소유 계정 : Externally owned account (EOA)

    • 메타마스크에서 생성한 지갑이 대표적인 EOA
    • 개인키 (private key) 를 가지고 있음
  • 컨트랙트 계정 : Contract account (CA)

    • 스마트 컨트랙트 코드를 가지고 있음 (EOA는 가질 수 없음)
    • 개인키 (private key) 없음
    • 보통 컨트랙트를 배포할 때 생성됨

  • 컨트랙트도 주소 가지고 있고 EOA처럼 이더를 보내고 받을 수 있음

  • 트랜잭션을 보낼 주소가 컨트랙트(CA)이고 특정 조건이 다 충족이 되면, 트랜잭션과 트랜잭션 데이터를 입력(input)으로 사용하여 컨트랙트가 EVM에서 실행된다.

  • 이더(ether) 외에도, 트랜잭션에는 실행할 컨트랙트의 특정 함수와 해당 함수에 전달할 파라미터(인자값)를 나타내는 데이터(data)가 포함될 수 있음. 이렇게 해서 트랜잭션은 컨트랙트 내의 함수를 호출할 수 있음

  • 컨트랙트 계정(CA)는 개인키가 없기 때문에 트랜잭션을 시작할 순 없음.

  • 오직 외부소유계정 (EOAs)만 트랜잭션을 시작할 수 있음.

  • 컨트랙트가 실행 경로가 복잡하게 구축된 경우, 다른 컨트랙트를 호출해서 컨트랙트에 반응할 순 있음.
    즉, 컨트랙트(CA)가 컨트랙트(CA) 호출은 가능.



이더리움에는 많은 high-level languages가 있고, 모두 컨트랙트를 작성하고 EVM 바이트코드를 생성하는 데 사용할 수 있음.

이 중 가장 많이 사용되고 있는 스마트 컨트랙트 프로그래밍 high-language는 Solidity 이다.


남은 파트 :

간단한 컨트랙트: A Test Ether Faucet
Faucet 컨트랙트 컴파일
블록체인에 컨트랙트 생성하기
컨트랙트 사용하기
블록 탐색기에서 컨트랙트 주소 보기
컨트랙트 자금 조달
컨트랙트에서 출금

위 7개 파트는 스마트 컨트랙트를 다루는 포스트에서 자세하게 다룰 예정이다.


하트는 사랑입니다 ❤️

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기