이더리움(Ethereum)
비트코인(Bitcoin)처럼 일종의 분산 원장(Distributed Ledger)이다. 비트코인이 P2P(Peer-to-Peer) 전자 화폐 시스템에 가깝다면 이더리움은 애플리케이션 구현을 위한 탈중앙화 플랫폼(Decentralized Platform)이다. 이더리움은 솔리디티(Solidity)라는 튜링 완전(Turing-complete) 프로그래밍 언어를 기본으로 제공하고 이 언어로 스마트 계약(Smart Contract)을 작성한다. 또한, 이더리움은 이더(Ether)라는 암호화폐(Cryptocurrency)를 제공하며 이더는 이더리움 애플리케이션 및 서비스에 대한 트랜잭션 수수료(Transaction fee)를 지불하거나 금액(Value)을 주고 받는 데 사용된다.
스마트 계약(Smart Contract)
일종의 컴퓨터 프로그램으로서 블록체인 애플리케이션 사이의 관계에 대한 규칙을 표현한다. 스마트 계약은 정확히 지정된 작업만 수행하며 나중에 변경할 수 없다. 다시 말해 한 번 배치된 스마트 계약을 수정할 수 없게 함으로써 신뢰와 투명성을 보장한다. 스마트 계약을 작성하기 위한 대표적인 IDE는 Remix이다.
Geth
Go로 구현한 이더리움 공식 클라이언트이다.
# install geth
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get -y update
sudo apt-get install -y ethereum
사설 네트워크 구성하기
1. 블록체인 데이터를 저장할 디렉터리 생성
mkdir datadir
2. 계정을 만들고 앞서 만든 디렉터리에 저장
geth account new --datadir datadir
3. genesis.json 파일 생성
4. genesis.json 파일을 이용한 네트워크 초기화
geth --datadir ./datadir init ./genesis.json
5. 네트워크 구동
geth --datadir ./datadir --networkid 1100 console 2>> network.log
계정
이더리움 계정은 20바이트 주소로 구성되며, 상태 전이(state transition)를 통해 두 계정 사이에서 데이터와 금액을 주고 받는다. 일반적으로 이더리움에는 두 가지 타입의 계정이 있다. 하나는 EOA고 다른 하나는 계약 계정이다. 계정마다 잔고, 계약 코드, 저장 공간(storage), 논스(nonce)에 대한 네 개의 필드를 갖고 있다. EOA는 비밀 키로 제어하며, 계약 계정은 계약 코드로 제어한다. 일반 사용자는 지갑을 통해 EOA를 생성할 수 있다. 이더리움은 비밀 키에 대해 타원 곡선 암호화(elliptical curve cryptography)를 적용한다. 비밀 키로 주소를 검색하려면 비밀 키를 64바이트 길이의 공개 키로 변환한 다음 여기에 Keccak-256 해시를 적용한 뒤 마지막 20바이트를 비밀 키에 대한 이더리움 주소로 사용한다.
개발용 네트워크 생성하기
이더리움 개발 툴인 트러플 스위트(Truffle suite)에서 제공하는 가나슈(Ganache)로 개인용 블록체인 네트워크를 생성할 수 있다.
# 가나슈 설치
sudo apt-get install -y npm
sudo npm install -g ganache-cli
지갑
이더리움에서 사용하는 암호화폐를 주고 받으려면 지갑(wallet)이 있어야 한다. 지갑은 계정과 트랜잭션을 관리하는 데 사용된다.
1. 메타마스크(MetaMask)
메타마스크는 브라우저 기반 지갑으로, 크롬과 파이어폭스에서 사용할 수 있다. 메타마스크를 통해 메인 넷(main-net), 테스트 넷(test net)을 비롯한 접근 권한이 있는 RPC 포트를 통해 다양한 이더리움 네트워크에 연결할 수 있고, 계정을 추가하거나 현재 계정의 비밀 키를 내보낼 수도 있다.
2. 마이크립토(MyCrypto)
기존 지갑을 사용하거나 새로 지갑을 생성한다. 마이크립토의 웹 인터페이스는 비밀 키, 니모닉(Mnemonic), 키파일 등으로 지갑을 생성하거나 사용하는 데 일정한 제한을 두고 있어 지갑을 생성할 때 암호를 복잡하게 지정해야 한다. 마이크립토는 계약을 배치하거나 다루고, 이더리움 네임 서비스를 사용하는 옵션도 제공하며, 자신이 보유한 이더를 다른 암호화폐로 바꾸는 기능도 제공한다.
3. 미스트-이더리움 지갑(Mist-Ethereum wallet)
미스트는 웹기반 DApp을 위한 브라우저다. 이더리움 지갑은 하나의 DApp만 접근할 수 있도록 구현된 지갑 DAppd이다. 미스트를 사용하면 트랜잭션을 주고받고, 스마트 계약을 다루거나 배치할 수 있다.
블록 탐색기
1. 이더스캔(Etherscan)
2. Eth-netstats
'Blockchain' 카테고리의 다른 글
Near 블록 데이터 구조 (0) | 2024.11.07 |
---|---|
Hyperledger Fabric Test-Network-K8S 분석 (0) | 2022.11.09 |
[Blockchain] 하이퍼레저 패브릭(Hyperledger Fabric) (0) | 2022.08.12 |
[Blockchain] 하이퍼레저 컴포저(Hyperledger Composer) (0) | 2021.07.06 |
[Blockchain] 하이퍼레저 패브릭(Hyperledger Fabric) 환경 구성 (0) | 2021.07.06 |