[Ethereum] 이더리움의 이해(1)

개요

이더리움은 DApp을 배포할 수 있는 탈중앙화 플랫폼이다. 스마트 컨트랙트[1] 솔리디티로 작성된다. 이더리움은 이더라는 내부 화폐를 사용하며, 이더는 컨트랙트를 배포하거나 함수를 호출할 때 쓰인다. 사용자 계정과 스마트 컨트랙트 모두 이더를 보유할 수 있다.

스마트 컨트랙트의 메소드는 트랜잭션으로 호출되거나, 다른 메소드로부터 호출된다. 네트워크에는 일반 노드와 채굴자 노드 총 두 가지가 존재한다. 블록체인 사본만을 가진 노드가 일반 노드이며, 채굴자는 블록을 채굴하며 체인을 생성한다.


이더리움 계정

이더리움은 다양한 매개변수를 가지는 타원곡선암호[2]를 사용하여 비대칭 암호 키를 생성한다. 매개변수는 속도와 보안성을 조절하는 데 사용되며, 이더리움은 secp256k1을 사용한다.

이더리움의 개인 키와 공개 키는 256bit의 숫자이다. 모든 계정은 주소로 표현된다. 공개 키를 이용해 주소를 만드는 순서는 다음과 같다.

  1. 공개 키의 keccak-256 해시 생성
  2. 앞 96비트(12바이트)를 버린다.
  3. 주소를 16진수 문자열로 인코딩한다. 최종적으로 남은 40개 문자의 바이트 스트링이 유저의 계정 주소가 된다.

트랜잭션

트랜잭션은 하나의 서명된 데이터 패키지이다. 이더를 한 계정에서 다른 계정으로, 혹은 컨트랙트로 보내거나 컨트랙트의 함수 호출 및 새 컨트랙트를 배포할 때의 서명으로 쓰인다. 트랜잭션은 ECC를 기반으로 하는 디지털 서명 알고리즘인 ECDSA를 이용하여 서명된다. 트랜잭션은 메시지 수신자, 송신자를 식별하고 의도를 증명하기 위한 서명, 전송할 이더의 양, 트랜잭션 실행을 위해 허용되는 최대 연산 단계, 트랜잭션 송신자가 각 연산 단계를 위해 지불할 의사가 있는 비용을 포함한다.


이더리움 가상 머신

이더리움 가상 머신(EVM)은 이더리움 스마트 컨트랙트 바이트 코드 실행 환경이다. 네트워크 내 모든 노드는 EVM을 구동한다.


가스

가스는 계산 단계의 측정 단위이다. 모든 트랜잭션은 가스 한도와 가스당 수수료를 포함해야 한다. 채굴자는 가스 가격을 결정하고, 이 가격보다 낮은 경우 트랜잭션 포함을 거부할 수 있다.


피어 검색

노드는 네트워크 내의 다른 노드와 연결되어 있어야 한다. 그러나 네트워크에 있는 노드 모두와 연결될 필요는 없다.

중앙 서버가 없는 블록체인에서는 네트워크 내 다른 노드를 찾는 알고리즘을 사용한다. 이더리움은 Kadelima 프로토콜에 기반을 둔 자체적인 노드 검색 프로토콜을 가지고 있다.

노드 검색 프로토콜에는 부트스트랩 노드가 있다. 부트스트랩 노드는 일정 기간 동안 연결됐던 모든 노드의 목록을 유지한다. 피어가 이더리움 네트워크에 연결할 때 마지막 지정 시간 내에 연결된 목록이 있는 부트스트랩 노드에 먼저 연결한다. 이후 다른 피어를 연결하고, 동기화한다.


위스퍼

탈중앙화된 커뮤니케이션 프로토콜이다. 노드가 네트워크 내에서 통신할 수 있게 한다. 브로드캐스팅, P2P, 암호화된 메시지 등을 지원한다. 단, 대량의 데이터를 전송하도록 설계되어 있지는 않다.


스웜

탈중앙화된 스토리지 플랫폼이다. 스웜은 파일코인과 유사하지만, 기술과 인센티브에서 차이가 있다. 파일 코인은 스토어에 패널티를 부과하지 않지만 스웜은 패널티를 줘서 파일 가용성을 높인다.



이 포스트의 모든 내용은 이더리움을 활용한 블록체인 프로젝트 구축(에이콘) 책을 참고하여 작성되었습니다.




  1. 다운타임, 검열, 사기, 간섭 없이 코드 그대로 정확히 실행되는 프로그램 ↩︎

  2. ECC, Elliptic Curve Cryptography ↩︎

Share