코어 이더리움 프로그래밍
책의 2.3.2~2.3.5절에 대한 용어 정리입니다.
합의 계층
- 작업 증명(PoW, Proof of Work): 복잡한 계산 문제의 해답을 가장 빨리 찾은 마이너의 블록을 블록체인에 등록하고 이에 대한 수행 결과로 보상
- 마이닝(mining): 작업 증명 방식으로 블록을 생성하는 과정 (=채굴)
- fork: 블록체인 시스템의 업그레이드
- 하드 포크(hard fork): 무조건 업그레이드, 이전 버전 호환 x
- 소프트 포크(soft fork): 이전 버전 호환 가능
- 목표 난이드(Target Threshold): 블록 생성 시 목표 난이도를 맞추기 위해 현재 시각의 타임스탬프를 이용해 값을 조정
실행 계층
- 스마트 컨트랙트: 특정 계약을 스스로 수립, 검증, 이행하기 위한 컴퓨터 프로토콜
- 이더리움에서 스마트 컨트랙트는
- 새로운 스마트 컨트랙트를 생성
- 특정 스마트 컨트랙트 함수를 실행
- 이더를 전송
- 이더리움에서 스마트 컨트랙트는
공통 계층
- 노드: 컴퓨터
- 이더리움은 완전 분상형 P2P 토폴로지로 구성 -> 이더리움 P2P 네트워크에 연결된 모든 노드는 같은 역할, 기능 수행
- 노드 디스커버리 프로토콜: 완전 분산 네트워크를 위한 분산 해시 테이블인 카데리마(kadelima) 프로토콜을 기반으로 네트워크 상에서 노드를 탐지하는 프로코콜
- UDP 기반의 RPC 프로토콜로 네트워크에 연결된 RLPx 노드를 찾는 데 이용
- RLPx: 암호화된 피어간 네트워크 프로토콜, 이더리움에서 P2P 네크워크상에서 일반 전송과 애플리케이션 간의 통신을 위해 사용
- 부트스트랩 노드: 블록체인 정보는 저장하지 않고, 네트워크 상의 피어 노드를 찾는 데 사용, 일정 시간 동안 연결되어 있는 노드의 목록을 유지
- 레벨DB: key와 value 형태로 데이터를 저장하고 조회, 갱신 등 다양한 조작을 할 수 있도록 하는 DB
- 이더리움 데이터베이스(ethdb)
- 레벨DB를 래필
- 레벨DB가 대용량 데이터의 경우 효율성에 문제가 있어 이더리움 블록체인 데이터를 mongoDB 등으로 변환하는 ethereum/ecp 프로젝트 등도 있음 (ethereum/ecp github을 들어가봤을 때 프로젝트가 더 이상 유지되고 있는 것 같지는 않아보임)
- RLP(Recursive Length Prefix) 인코딩: 중첩괸 바이너리 배열을 인코딩
응용 계층
- Dapp(Decentralized App): 탈중앙화 앱, 스마트 컨트랙트 기반의 웹 서비스
- State of the Dapps: Dapp 프로젝트 확인 가능한 사이트
- DAO: 탈중앙화 자율조직
- DAC: 탈중앙화 회사
- 스마트 컨트랙트 배포 -> 스마트 컨트랙트의 어카운트 주소와 ABI(Application Binary Interface) 생성
- ABI: 스마트 컨트랙트의 바이트 코드를 일반 프로그램에서 호출하고 실행시킬 수 있는 정보와 인터페이스 제공
- 휘스퍼(Whisper): 댑 간의 쉽고 안전하고 효율적인 통신 수단 제공
- 스웜(Swarm): 인센티브 방식으로 운영되는 P2P 파일 시스템이자 기존 CDN(Content Delivery Network)와 유사한 콘텐츠 전달 채널
- 청크(chunk): 스웜에서 콘텐츠의 저장고 추출을 위한 기본 단위
- 문서(document): 가장 작은 단위, 파일 시스템에서 파일의 역할
- 매니페스트: 임의의 경로를 통해 일련의 문서들(컬렉션)에 대한 접근을 가능하게 하는 구조체
'블록체인' 카테고리의 다른 글
[블록체인] 공부1 (0) | 2023.07.28 |
---|---|
[Solidity] Solidity 문법정리 (2) (2) | 2022.06.12 |
Metamask와 Remix IDE로 Smart Contract 배포하기 (0) | 2022.06.12 |
[Solidity] Solidity 문법 정리 (1) (0) | 2022.06.11 |
이더리움 플랫폼 데이터 용어 정리 1 (0) | 2022.05.22 |