[Week 2] 블록체인
이더리움 (스마트 컨트랙트, 가상 머신), 가스, 계정 (EOA, CA), 트랜잭션 생명 주기
[Week 2] 블록체인
이더리움
- 2015년 7월 30일 비탈리크 부테린(Vitalik Buterin)이 개발
- 전 세계 사용자들이 보유하고 있는 컴퓨팅 자원을 활용해 이더리움 가상 머신(EVM)을 만들고 이를 이용해 다양한 정보를 기록하는 시스템 창안
- 블록체인 기술을 기반으로 스마트 컨트랙트 기능을 구현하기 위한 분산 컴퓨팅 플랫폼이자 플랫폼의 자체 통화명
- 결제 뿐만 아니라 계약서, SNS, 이메일, 전자투표 등 다양한 애플리케이션을 투명하게 운영할 수 있게 확장성을 제공한다
- 공개된 소스 코드를 활용해 dApp(Decentralized Application)을 누구나 만들고 사용할 수 있게끔 하는 플랫폼
- 이더리움의 목적은 dApp 제작을 위한 대체 프로토콜을 만드는 것
- 빠른 개발 시간, 작고 드물게 사용되는 애플리케이션을 위한 보안, 다른 애플리케이션과의 효율적인 상호작용이 중요한 상황에 주안점
- 블록체인에서 프로그램을 구현하고 실현할 수 있다
- Solidity와 Serpent 등 프로그램 구현 가능
- C++, 자바, 파이썬, GO 등 주요 프로그래밍 언어 지원
- 주류는 자바스크립트를 변형한 Solidity
- 비트코인의 지갑과 동일한 개념인 계정(account)이 존재하는데 비트코인과는 다르게 EOA, Contract Account 두 가지 종류가 있다
- 이더리움이 제공하는 이더(Ether)는 비트코인처럼 암호화폐의 일종으로 거래됨
- 블록 크기에 제한을 두지 않고 블록 생성 주기를 약 12초까지 줄여 비트코인에 비해 훨씬 더 빠른 데이터 검증이 가능하다
- 상당히 느린 트랜잭션 속도를 가지고 있다
- 비트코인 이후 등장한 알트코인 중 시가 총액이 가장 높다
- 이더리움의 화폐 단위는 ETH로 표시 (비트코인의 경우 BTC)
- 블록체인 특성상 이더리움 상의 코드를 신용할 수 있고 한번 저장된 코드 및 데이터는 거의 영구적으로 남는다
- 취약점을 활용한 DAO Attack, OPCODE DDOS 등의 공격이 있었다
- BAT, GOLEM, AUGUR 등의 이더리움 기반 토큰들이 있다
스마트 컨트랙트
- 이더리움 애플리케이션 레이어의 기본 구성요소
- 한번 생성된 코드는 변경할 수 없다
- 스마트 컨트랙트를 구현하기 위한 Contract Code는 EVM이라는 독립된 실행 환경에서 실행된다
- 이더리움 블록체인 상에서 작동하는 컴퓨터 프로그램
- 사용자의 트랜잭션으로 트리거될 때 실행됨
- 탈중앙화된 앱 및 조직을 위한 블록의 역할
- 대출 앱, 탈중앙화 거래소, 보험, 쿼드라틱 펀딩, SNS, NFT 등
EVM (Ethereum Virtual Machine)
- 스마트 컨트랙트를 처리하기 위해 사용됨
- 모든 형태의 알고리즘을 처리할 수 있는 튜링 기계로서, 먼저 들어온 데이터를 우선적으로 처리하는 큐 구조를 가짐
- 저수준의 기계어에 가까운 바이트 코드만 실행 가능하기 때문에 고급 프로그래밍 언어를 실행하기 위해서는 바이트 코드로 컴파일 과정을 거쳐야 한다
- 가상 머신을 이용하기 위해서 가스(Gas)라는 대가를 지불해야 한다
가스 (Gas)
- 블록체인과 상호작용하면서 다양한 유형의 작업을 실행하기 위한 컴퓨팅 농력을 측정하는 단위
- 이더리움의 모든 작업에는 가스가 사용됨
- 가스 요금 형태로 사용자는 계산 작업에 대한 비용 지불해야 함
- Gwei로 표시되는 가스 가격은 네트워크 정체에 따라 변동되어 거래 비용에 영향
- 채굴자는 거래를 검증 및 처리하고 가스 요금을 보상으로 획득
- 악의적인 행위자가 네트워크에 스팸을 보내는 것을 방지하는 데 도움
- 가스비 = 작업 수행에 사용된 가스량 * 단위 가스당 비용
- 가스비는 거래 성공 여부와 관계 없이 ETH를 사용하여 지불됨
- 1 Gwei는 0.000000001 ETH와 같다 (10억 웨이 : giga-wei)
계정
EOA (Externally Owned Account)
- 개인키를 가진 사람이 관리하는 계정
CA (Contract Account)
- 코드로 제어되는 네트워크에 배포된 스마트 컨트랙트 계정
트랜잭션 생명 주기
- 트랜잭션 생성 (Creation)
- 사용자가 지갑 또는 애플리케이션을 통해 트랜잭션 생성
- 코인 전송, 스마트 계약 호출 등
- 주요 내용
- 보내는 주소, 받는 주소
- 전송 금액
- 수수료 (gas, fee)
- 난스
- 서명 및 브로드캐스트 (Signing & Broadcasting)
- 사용자가 개인 키로 트랜잭션에 디지털 서명
- 네트워크에 P2P로 전파
- 메모리 풀에 보관되어 블록에 아직 포함 안 됨
- 검증 대기
- 노드들은 수신한 트랜잭션 유효성 검사
- 서명 검증, 이중 지불 여부 확인, 수수료 확인 등
- 유효한 트랜잭션은 메모리 풀에 저장되어 블록 생성자가 선택 가능
- 노드들은 수신한 트랜잭션 유효성 검사
- 블록 포함
- 블록 생성자가 메모리 풀에서 트랜잭션을 선택해 블록 구성
- 수수료가 높은 트랜잭션이 우선
- 트랜잭션이 블록에 포함되어 네트워크에 전파
- 블록 생성자가 메모리 풀에서 트랜잭션을 선택해 블록 구성
- 블록체인 추가
- 블록체인에 생성된 블록이 연결되면 트랜잭션은 확정 상태
- 이후 새로운 블록이 그 위에 쌓이면서 확정 횟수가 증가
- 최종 확정
- 일반적으로 비트코인은 6회, 이더리움은 12회 정도가 되면 안전하다고 간주됨
- 이 시점에서 트랜잭션은 되돌릴 수 없고 불변
이 게시글은 저작권자의 CC BY 4.0 라이센스를 따릅니다.