[BEB] Section3 : 트랜잭션 / 채굴 노드 / 합의 알고리즘 / 지갑 / UTXO와 Account / 거버넌스

jsg_ko·2021년 12월 31일
0
post-custom-banner

블록체인소개

🔥공개 범위에 따른 블록체인

블록체인을 활용하는 목적이나 공개 범위에 따라 블록체인 네트워크를 구축 할 수 있고, 그 종류에 따라 퍼블릭 블록체인, 프라이빗 블록체인, 컨소시엄 블록체인이 있다.

퍼블릭 블록체인(Public Blockchain)

개방형 블록체인으로 누구나 블록체인 네트워크에 접근 할 수 있고 블록을 생성 할 수 있는 블록체인이다.

탈중화화 되있고 모든 참여자의 상호검증을 거치기 때문에 신뢰도 가 매우 높다. 하지만 네트워크상의 모든 트랜잭션을 참여자들 모두에게 남기고, 이를 공유하느라 처리 속도가 느리다는 단점이 있다.

프라이빗 블록체인(Private Blockchain)

폐쇄형 블록체인으로 서비스 제공자(기업 또는 기관)만이 참여 할 수 있다. 주로 기업에서 활용하기 때문에 엔터프라이즈 블록체인이라고도 한다.

리눅스 재단의 오픈소스 블록체인 프로젝트 하이퍼레저Hyperledger가 이에 해당함.
스마트 계약을 구현할 수 있는 오픈소스 기반의 프라이빗 블록체인 플랫폼으로 기업 비즈니스를 구현하기에 적합한 환경이지만 중앙화되어 있다.

컨소시엄 블록체인(Consortium Blockchain)

동일한 목적이나 가치를 가지고 있는 다수의 기업과 단체들이 하나의 컨소시엄을 구성하고 그 안에서 작동하는 블록체인 이다. 프라이빗 블록체인의 한 형태이지만, 이를 별도로 구별하여 하이브리드 블록체인으로 분류하기도 한다.

프라이빗 블록체인과는 달리 같은 목적을 가지고 있는 여러 기관이 하나의 컨소시엄을 구성하여 공정성과 확장성을 보완하였다. 따라서 다수 참여자의 협의가 필요한 분야에서는 컨소시엄 블록체인이 프라이빗 블록체인보다 효과적이다. 컨소시엄 블록체인을 이용하면 기관 간에 직접 거래함으로써 제3자에 대한 거래 수수료를 줄이고 거래 시간을 단축할 수 있다.

퍼블릭 블록체인프라이빗 블록체인컨소시엄 블록체인
관리자모든 거래 참여자한 중앙 기관이 모든 권한 보유컨소시엄에 소속된 참여자
거버넌스한번 정해진 법칙을 바꾸기 매우 어려움중앙 기관의 의사결정에 따라 용이하게 법칙을 바꿀 수 있음컨소시엄 참여자들의 합의에 따라 법칙을 바꿀 수 있음
거래속도네트워크 확장이 어렵고 거래속도가 느림네트워크 확장이 매우 쉽고 거래 속도가 빠름네트워크 확장이 쉽고 거래 속도가 빠름
데이터 접근누구나 접근 가능허가 받은 사용자만 접근 가능허가 받은 사용자만 접근 가능
식별성익명성식별가능식별가능

🔥분산원장기술(DLT; distributed ledger technology)

분산원장(distributed ledger)거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 분산화된 네트워크에서 참여자들이 공동으로 기록 및 관리하는 기술로 공유원장 이라고 불리기도 한다.

중앙집중원장(Centralized ledger)의 취약점

  • 비용문제
    • 거래자들 사이에서 과도한 관리, 중개수수료를 청구한다.
    • 중앙집중형 시스템은 데이터베이스를 유지, 관리하기 위해 많은 보안유지비용을 지출한다.
  • 시간문제
    • 은행의 경우 각 은행들의 데이터베이스를 통해 거래를 확인하고 처리하기까지 중앙은행과 금융결제원, 외환거래의 경우 더 많은 중간다리가 포함되어 있다. 이렇게 많은 미들맨(Middle man)들이 존재할 경우 프로세스 전반에 걸쳐 시간과 비용이 증가하여 효율성이 떨어진다.
  • 보안문제
    • 해커들의 공격대상은 오직 하나, 중앙집권화 되어있는 데이터베이스 이다. 아무리 보안유지에 힘을 쓴다 하더라도 오직 중앙 하나만 공격당하면 모든 데이터 보안이 뚫리게 된다.

분산원장기술의 장점

중앙 집중형 방식에 비해 인증과 증명의 효율성, 시스템 안정성, 보안성, 투명성이 뛰어나다

중간 매개체 또는 인증기관 없이 사용자가 거래 내역을 직접 공유하기 때문에 효율적이고, 비용이 줄어든다.

그리고 거래 내역이 암호화되어 분산되어 저장되기 때문에 해킹 및 위조의 위험성이 낮고, 안전하고 투명하다.

🔥트랜잭션(Transaction)

블록체인(Blockchain)은 블록(Block) + 체인(Chain). 블록들이 체인으로 연결되어 있는 구조이다.이 블록(Block)은 헤더(Header) + 바디(Body)로 이루어져 있고, 헤더(Header)는 메타데이터, 바디(Body)는 트랜잭션들의 리스트로 구성되어 있다.

블록은 거래의 기록단위로 다수의 트랜잭션을 포함할 수 있다.

메타데이터

블록이라는 데이터를 설명하는 데이터이다.

  • 이 블록은 체인 중 몇 번째 블록인지
  • 이 블록에 몇 개의 트랜잭션이 있는지
  • 이 블록을 생성은 누가 했는지
  • 이 블록의 크기, 총 전송량 등은 얼마인지 등

트랜잭션

데이터베이스의 상태를 변환시키는 기능을 수행하기 위한 작업의 단위라고 하며, 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어 ACID를 통해 트랜잭션의 특성을 알 수 있다.

내가 은행앱에서 김코딩한테 돈을 이체한다면, 이 행위자체가 트랜잭션이 일어난것이고, 은행의 원장(데이터베이스)에 나의 트랜잭션이 기록될것이다. 트럔잭션은 ACID 성질을 갖고 이를 통해 안정성을 보장한다.
ACID?
Atomicity(원자성), Consistency(일관성), Isolation(격리성, 고립성), Durability(지속성)

블록체인에서 트랜잭션 역시 작업 수행의 논리적 단위이다. 추상적인 관점에서 트랜잭션은 블록체인의 상태(State)를 변화시키는 일련의 작업을 내포하고 있다.

예를 들어, 앨리스가 밥에게 $50를 송금을 하고자 한다면, 자신이 보유하고 있는 전체금액에서 앨리스는 -$50, 밥은 +$50의 상태변화가 생긴다.

비트코인과 이더리움의 트랜잭션 데이터 구조 차이

비트코인과 이더리움의 트랜잭션 데이터 구조는 각각 다음과 같고, 논스(nonce)의 유무가 가장 큰 차이이다.

이더리움 트랜잭션 논스(nonce)의 특징은 2가지가 있다.

  • 거래(transaction) 전송시 논스는 1씩 증가한다.
  • 논스는 계정에서 유일하며, 동일한 논스가 존재하지 않는다.

최초 계정 생성시 nonce는 0 (계정 기준으로 전송된 트랜잭션이 하나도 없을때 )
전송한 Transaction1 : 1(nonce)
전송한 Transaction2 : 2(nonce)
전송한 Transaction3 : 3(nonce)
...전송한 Transaction10 : 10(nonce)

  • 비트코인 트랜잭션 구조

  • 이더리움 트랜잭션 구조

트랜잭션은 외부 소유 계정(EOA)에 의해 서명된 메시지로, 이더리움 네트워크에 의해 전송되고 이더리움 블록체인에 기록된다.

필드설명
논스(nonce)발신 EOA에 의해 발행되어 메시지 재사용을 방지하는데 사용되는 일련번호
가스 가격(gas price)발신자가 지급하는 가스의 가격
가스 한도(gas limit)이 트랜잭션을 위해 구입할 가스의 최대량
수신자(recipient)목적지 이더리움의 주소
값(value)목적지에 보낼 이더의 양
데이터(data)가변 길이 바이너리 데이터 페이로드
v, r, sEOA의 ECDSA 디지털 서명의 세가지 구성 요소

논스란 발신주소의 속성이며, 발신주소의 컨텍스트 안에서만 의미를 갖는다.

명시적으로 저장되지않고 해당 주소에서 발생한 확인된 트랜잭션 건수를 세어서 동적으로 계산되는 값이 논스이다.

논스는 중복되지 않고, 순차적이기 때문에 같은 논스의 여러 트랜잭션 전송이 발생했다면 해당 논스중 가장 높은 가스비를 지불한 트랜잭션이 처리된다. 이더리움은 이러한 방법으로 이중 지불 문제를 방지한다.

이중 지불 문제란?
트랜잭션은 일회성이다. 하나의 트랜잭션은 하나의 상태만 변화시킬 수 있다.
하나의 트랜잭션이 중복해서 처리되는(지불되는)것을 말한다.
예를 들자면, A가 B에게 1,000원이라고 기록된 파일을 전송한 후 다시 해당 트랜잭션을 복사하여 C에게 또 1,000원을 전송하는 것.

만약, 논스가 0인 트랜잭션 전송 후 논스가 2인 트랜잭션을 전송한다면?

논스가 2인 트랜잭션은 어떤 블록에도 포함되지 않는다. 이더리움 네트워크는 누락된 논스(논스 1)가 나타날 때까지 기다리는 동안 두 번째 논스를 멤풀(mempool)에 저장한다.

멤풀(mempool)이란?
아직 블록에 들어가지 않은 상태의 트랜잭션들이 어떤 공간에 있는 것을 의미함.

그 다음 논스가 1인 누락된 트랜잭션을 전송하면, 두 트랜잭션이 처리가 되고 블록에 포함한다.

➕비트코인의 경우 이중지불 문제를 UTXO(Unspent Transaction Outputs)을 통해 해결한다.

블록체인의 구성요소

🔥채굴과 노드

우리는 블록체인이 탈중앙화라는 것을 알고 있다. 그렇다면 관리자 없이 시스템이 어떻게 돌아가는지?에 대한 물음이 동반하는데, 이 부분의 솔루션을 채굴(Mining)과 노드(Node)가 갖고있다.

노드

전 세계적으로 수십만개 이상이 존재하며 블록체인에서는 이 블록체인 블록정보를 가지고있는 네트워크 참여자, 즉 서버를 노드(Node)라고 한다.

이 여러개의 노드는 P2P로 연결되어 블록체인 네트워크를 형성한다. 그리고 하나의 거래 정보가 발생하면 이 거래 정보는 블록체인 네트워크에 분산되어 있는 수많은 노드에 전파된다.

노드의 종류는 여러가지가 있지만, 주로 두가지로 분류 할 수 있다.

  • 풀 노드 모든 기능을 다 가지고 있는 노드이다.
    블록체인의 최초의 블록부터 현재 새롭게 생성되는 블록까지의 데이터를 모두 가지고 있다.
    모든 블록체인 정보를 수집하고 저장하는 역할을 수행하며, 새로운 블록을 추가하기 위해 전달받은 블록에 대해 검증을 수행한다.
  • 라이트 노드 일종의 요약본인 블록의 헤더정보만 가지고 있는 노드이다.
    지갑기능이 있으며 개별 거래에 대한 트랜잭션을 확인하기 위해 SPV를 수행한다.

    SPV(Simple Payment Verify)란?
    라이트 노드에서 개별 거래를 검증하기 위해 풀 노드에게 블록정보를 요청하여(이때, 머클트리가 쓰인다) 이 거래가 검증된 거래인지를 확인하는 방법이 SPV이다.

왜 구분하는가?
저장용량이 큰 풀 노드는 그만큼 데이터를 불러오는데에 걸리는 시간이 오래걸린다.
또한 스마트폰같이 저장공간이 블록정보를 모두 저장하기 엔 부족한 기기들도 블록체인 네트워크에 참여할 수 있게 구분하여 사용한다.

더 알아보기

채굴(Mining)

채굴(Mining)이란, 암호화폐의 트랜잭션을 기록한 블록을 생성하고 그 대가로 암호화폐를 얻는 행위를 말한다. 분산원장 시스템이라는 광산에서 합의 알고리즘이라는 작업을 통해 코인을 소유하는 것을 표현한 것이다.
새로운 블록을 만드는 것이 바로 채굴의 핵심이며, 블록체인 기반의 암호화폐에서 새로운 블록을 생성하고 그 대가(보상)로 암호화폐를 지급받는 사람을 채굴자 혹은 마이너(miner)라고 한다.

비트코인에서 채굴에 보상이 주어지는 이유

누군가는 트랜잭션을 기록하고 네트워크를 통해 전파해야 그 네트워크가 유지될텐데, 이는 네트워크 및 전력장원이 낭비되고 아무런 보상이 없다면 결국 네트워크가 유지될 수 가 없다.

🔥합의 알고리즘

노드가 발행한 블록이 올바른지 검증하기 위해 다수의 참여자들이 통일된 의사결정을 하는데 사용하는 알고리즘을 말한다

블록체인 네트워크경우는 데이터의 원본과 사본의 구별이 없으며, 통일된 의사결정을 내릴 수 있는 중앙이 존재 하지 않기 때문에 데이터를 잘못된 값으로 변경하거나 다른 노드들과 올바르지 않은 정보를 공유하는 피어를 찾아내고 방지하는 것이 큰 도전 과제이다.

이런 상황에서 합리적이고 효율적인 의사결정을 내릴 수 있는 다양한 알고리즘이 개발되었다.

  • 작업 증명(PoW. Proof of Work)
    네트워크에서 수용할 값(블록)을 제안하기 전에 충분한 컴퓨팅 자원을 소모했다는 증명을 따른다. 이 기법은 비트코인, 라이트코인(Litecoin) 등 여러 암호화폐 블록체인에서 사용 된다.
    - 작업 증명에 단점
    A, B, C가 동시에 채굴을 시작했고 C가 채굴에 성공했다. 채굴에 성공한 하나의 노드를 제외한 나머지 모든 노드들은 에너지 자원을 낭비할 뿐이다. 이것이 작업 증명의 가장 큰 단점이다.

    현재로서는 시빌 공격(Sybil attack)같은 블록체인 네트워크에 대한 각종 공격에 맞서 놀랄 만큼 성공적이라고 입증된 유일한 알고리즘이다.

  • 지분 증명(PoS. Proof of Stake)
    작업증명 방식에서는 유효한 해시를 찾는 경쟁을 통해 블록을 채굴했다.
    반면 지분증명은 새로운 블록을 생성하는 데에 기여한 모든 노드들에게 지분에 따라 발생하는 보상을 이자로 지급하는 과정이다.
    블록을 형성할 노드는 어떻게 선출하는가?
    작업이 아닌 보통 더 많은 지분(해당 코인)을 가지고 있을 수록 블록을 기록할 권한이 더 많이 부여된다.
    가장 지분이 많은 노드만 선택되는 것을 방지하기 위해 여러 방식을 사용한다. 예를 들어 코인을 Staking 한 일수 x 코인의 지분 크기로 선출, 한번 선출되면 다시 Staking 일수를 0
    이더리움 2.0이 지향하는 합의 방식이 PoS이다.
    PoW보다 에너지 소모가 적고, 코인을 가진 노드 누구나 네트워크에 허가없이 참여하기 때문에 분산화가 더 잘 되어 많은 노드가 의사결정 과정에 쉽게 참여할 수 있는 이점이 있다.

  • 위임 지분 증명(DPoS. Delegated Proof of Stake)
    기본 PoS에서 변형된 것으로, 시스템의 지분을 가진 각 노드는 투표를 통해 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명하는 개념이다. 주로, 이오스(EOS)에서 사용이 된다.

    이오스(EOS)는 위임지분증명(DPoS) 방식을 사용하는 제3세대 암호화폐이다.

  • 비잔틴 장애 허용(BFT. Byzantine Fault Tolerance)
    장애가 있더라도 전체의 3분의 1을 넘지 않는다면, 시스템이 정상 작동하도록 허용하는 합의 알고리즘이다.

  • 프랙티컬 비잔틴 장애 허용(PBFT. Practical Byzantine Fault Tolerance)
    네오, 질리카, 하이퍼레저, R3, ITC, 텐더민트 등에서 사용하는 합의 알고리즘이다. 이 기술은 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어졌다.

🔥지갑과 어카운트

지갑(Wallet)

블록체인 지갑은 블록체인에서 실행되고, 개인 키 및 공개 키를 저장하고 해당 키와 관련된 모든 트랜잭션을 모니터링하고 유지하는 소프트웨어이다.

즉, 비트코인, 이더리움 등의 암호화폐를 보관할 수 있는 계정을 뜻한다.
노드(Node)가 바로, 지갑의 기능을 한다.

  • 지갑의 종류
    • 데스크탑(PC)지갑
    • 모바일 지갑
    • 하드웨어 지갑
    • 웹 지갑

지갑은 주소(공개 키. Public key)와 암호(개인 키. Private Key)로 구성되어 있다. 지갑의 주소는 다른 사람들이 암호화폐를 송금할 수 있도록 공개하지만, 개인 암호(개인 키)는 오직 지갑 소유자 본인만 알고 있어야 한다.

비트코인 - UTXO(Unspent Transaction Outputs)

앞서 비트코인은 UTXO를 통해 이중지불 문제를 해결한다고 했다.

UTXO는 미사용 트랜잭션 출력값으로 이더리움의 어카운트(Account) 계좌 잔고 모델과 달리 잔고라는 개념이 없고 블록체인에 기록된 소비되지 않은 출력 값을 통해 거래의 유효성을 검사하여 코인의 존재 여부를 확인한다.

즉 코인이 지갑이 아닌 UTXO에 저장된다고 보면 된다.

  1. A가 김코딩한테 2비트를, B가 김코딩한테 5비트를 보낸다면 김코딩은 총 8비트와 2개(2비트 UTXO, 5비트 UTXO)의 UTXO를 가진다.
  2. 김코딩이 C에게 4비트를 보낸다면 김코딩이 가진 UTXO 중 4비트 이상인 값을 찾는다 그리고 해당값을 입력값으로 넣고 C의 지갑에서 출력값으로 찍히는 4비트를 제외하고 1비트는 김코딩의 지갑에 찍히게 된다. (김코딩의 해당 UTXO는 소멸되고 새로운 1비트의 UTXO가 생성된다)

이렇게 한번 타인에게 전달한 UTXO는 영원히 소멸되고, TX Pool에 들어가며 사용기록을 추적 할 수 있으므로 이중지불 문제가 생기지 않는다.
그리고 트랜잭션이 일어나서 남은 잔고를 계산할때에 그 동안의 모든 거래내역을 검토하는게 아니라,
UTXO만을 확인해 표시해 주면된다.

  • UTXO의 장단점
    • 장점
      • 이중 지불 방지
        트랜잭션이 발생하면 해당 UTXO는 검증을 받은 후 TX Pool에 들어간다. 그러므로 이중지불이 발생하면 채굴자들은 Pool에서 UTXO 검사 후 사용 기록이 있다면 해당 거래를 무효화 할 수 있습니다. 이중지불 방지의 장점으로 하이퍼레저 패브릭(Hyperledger Fabric)에서도 UTXO를 사용한다.
      • 잔고의 증명
        UTXO는 추적하기가 용이하다. 즉, 거래에 대한 유효성을 검증하기가 매우 쉽다. 일반적으로 이더리움 같은 경우는 트랜잭션들을 모두 검증 및 확인하여 최종적으로 잔고를 유추하지만 UTXO는 해당 사용자의 UTXO만 확인하면 되기 때문에 그럴 필요가 없다.
    • 단점
      UTXO의 가장 큰 단점은 UTXO가 너무 과하게 생성이 될 경우이다.
      UTXO 방식을 채용하는 코인들은 흩어져 있는 UTXO를 모두 모아야 되며 소액 결제를 엄청 자주 하거나, 채굴로 이자를 받게 되면 과도한 UTXO로 인해서 불필요한 수수료를 내야할 수 있다.

더 알아보기

이더리움 - 어카운트(Account)

어카운트(Account)란?

이더리움 주소(Address)와 개인키(Private Key)의 조합을 계정(Accounts)이라고 한다. 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송할 수 있다.

  • 주소(Address)
    이더리움 주소는 001d3f1ef827552ae1114027bd3ecf1f086ba0f9 과 같은 형태를 가지게 되며, 각 주소에는 해당 개인키가 있다.
    개인키는 사용자가 알고 있는 일종의 암호이며, 블록체인과 상호 작용하려면 주소 + 개인키 쌍이 필요하다.
  • 키(Key)
    키는 개인키(Private Key)공개키(Public key)로 구분되어 사용된다. 개인키는 무작위로 생성되며 비밀 키로써 유지해야 하는 반면, 공개키는 개인키를 연산하여 생성되며 계정을 식별하는 요소로 사용된다.

이더리움 주소 생성 과정

1) 개인 키를 생성하고, 개인 키로부터 공개 키를 생성
2) keccak256 알고리즘으로 공개 키의 해시값을 계산
3) 생성된 해시값의 뒤쪽 20byte만 남기고 제외후 이더리움 주소를 생성하게 된다.

이더리움의 2가지 유형 계정

  • 외부 소유 계정(EOA)
    위에서 언급한, 공개 주소와 개인키의 조합을 말한다. 외부 계정을 사용하면 다른 계정과 이더를 송수신하고 스마트 컨트랙트에 트랜잭션을 보낼 수 있다.
  • 컨트랙트 계정(CA)
    컨트랙트 계정에는 상응하는 개인키가 없다. 이러한 계정은 스마트 계약을 블록체인에 배포할 때 생성된다. 컨트랙트(contract)로만 표시되기도 한다.
    컨트랙트는 다른 계정과 이더를 송수신하고(EOA와 동일), 관련된 코드를 담고(EOA와 다름), EOA나 다른 컨트랙트의 호출을 받아 트랜잭션을 발생시키는 기능을 갖고 있다.

어카운트의 장단점

  • 장점
    • 단순성(Simplicity)
    • 효율성(Efficiency)
      단순성과 더불어 전송 계정이 거래 비용을 지불하기에 충분한 잔액을 가지고 있는지 확인하기만 하면 되므로 더욱 효율적이다.
  • 단점
    • 이중 지불
      이더리움 Account의 단점은 이중 지불 공격에 노출된다는 점이다. 이러한 유형의 공격에 대응하기 위해 점증적인 nonce를 구현한다(앞에 설명). 이는 동일한 트랜잭션이 두 번 이상 제출되는 것을 방지할 수 있다.

💡 왜 비트코인은 UTXO를 사용하고 이더리움은 nonce를 사용하는가?

화폐의 역할에 충실해야 한다면 비트코인의 UTXO가 한번 사용되고 사라져 익명성과 보안성이 강하기 때문에 더 훌륭하지만, DApp과 같이 다양한 기능을 구현하고 싶다면 스마트 컨트랙트를 활용할 수 있는 이더리움의 Account가 적절하다.

🔥비트코인과 이더리움

비트코인 코어(Bitcoin Core)

비트코인 코어(Bitcoin Core)는 비트코인의 레퍼런스 클라이언트이다.

개발자들은 비트코인 코어의 변경사항을 통해 기반이 되는 비트코인 프로토콜을 변경하게 되고, 비트코인 코어는 풀노드를 돌리는 것을 전제로 한 소프트웨어이므로 100GB가 넘는 블록체인 데이터를 다운로드 받아야 제대로 사용 가능하다.

💡 비트코인은 무슨 언어로 개발되었나?
비트코인은 다양한 언어로 개발되었고, C++이 주 언어이다.

이더리움 클라이언트(Ethereum Client)

이더리움 클라이언트는 이더리움 블록체인 네트워크를 구성하는 개별 클라이언트 노드(node) 이다.
이더리움 클라이언트는 멀티 플랫폼 환경을 지원하기 위해 다양한 프로그래밍 언어로 개발되고 있다.

  • 이더리움 블록체인에서 응용 프로그램을 빌드하는 데 사용할 수 있는 도구들

    • Geth
      Geth는 이더리움 재단이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었다. Geth를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드node라고도 불림)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 된다. 그리고 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신한다. 또한 Geth를 이용해 블록을 채굴하고, 블록체인에 트랜잭션을 추가, 검증하며 트랜잭션을 실행할 수도 있다. RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할을 하기도 합니다.

      블록체인에 연결할 수 있는 자바스크립트 클라이언트(geth console)도 있다.

    • Parity
      이더리움 프로토콜의 또 다른 구현체이며, 러스트(Rust) 프로그래밍 언어로 개발되었다. 현재 Parity Inc. 라는 기업에서 운영하고 있다.
      사실 이더리움 네트워크에 접속할 수 있는 클라이언트 소프트웨어를 개발하는 길은 누구에게나 열려 있으며, C++, 파이썬 및 다른 언어로 작성된 클라이언트도 있다.

거버넌스를 통한 플랫폼의 발전

거버넌스(Governance)란
구성원들이 이해관계를 조정, 의사결정에 참여하여 중요한 사항을 집단으로 결정하는 체계를 말한다. 협치라고도 한다. 기존의 거버넌스의 의사결정 방식은 정부나 기업처럼 상명하복식의 수직적인 체계 였다면 블록체인의 등장으로 탈중앙화 분산형 조직이 DAO가 생겨나며 수평적이고 자율적인 거버넌스 구조가 확산되었다.

블록체인 거버넌스는 다양한 커뮤니티를 통해 네트워크의 방향성을 잡고 의사결정을 하는데 대표적인 예로 비트코인의 BIP, 이더리움의 EIP등 이있다. 다양한 코인들 또한 네트워크 성장을 위한 거버넌스의 필요성을 인지하고 구축하고 있다.

거버넌스의 문제점
성숙된 민주의식을 기본으로 둔 시민사회가 전제되어야 함. 참여자들이 트롤짓을 할 경우 그 책임을 누가 지는가에 대한 문제가 발생 할 수 있음. (예: 이더리움 비트코인의 하드포크)

BIP / EIP / ERC / KIP

  • BIP(Bitcoin Improvement Proposal)
    BIP(Bitcoin Improvement Proposal)는 비트코인의 개선 제안을 의미.
    비트코인에 수정이 필요하다고 문제를 제기해 타인들로부터 일정 규모 이상의 지지를 받고 95%의 찬성표를 받으면 제안이 채택되어 플랫폼에 적용된다.
    최근 가장 인기있는 BIP는 BIP141이다. BIP141은 구현에 따라 거래 속도가 빨라지고 수수료가 줄어드는 내용이다.

  • EIP(Ethereum Improvement Proposal)
    EIP(Ethereum Improvement Proposal)는 이더리움의 개선 제안을 의미.
    EIP는 이더리움 커뮤니티에 정보를 제공하거나 새로운 기능을 설명하는 설계문서인데, 특징에 대한 간략한 기술 명세서와 특징에 대한 근거를 제공해야 하고 작성자는 집단 내에서 합의를 도출해 반대 의견을 문서화할 책임이 있다.

  • ERC(Ethereum Request for Comment)
    “새로운 아이디어를 내가 제시했으니까 어떤지 평가 좀 해줘!” 라는 글을 작성해서 올린 후에 많은 사람들이 괜찮다고 생각하면 인터넷 표준이 되는 것을 RFC라고 하는데, ERC는 이더리움 RFC로서, 인터넷이 아닌 이더리움의 표준이 될 만한 내용이다.

  • KIP(Klaytn Improvement Proposals)
    KIP(Klaytn Improvement Proposals)는 클레이튼의 개선 제안을 의미.
    핵심 프로토콜 사양, 클라이언트 API 및 계약 표준을 포함하여 Klaytn 플랫폼에 대한 표준을 설명한다.

참고

https://m.blog.naver.com/mage7th/221439829511 UTXO

https://blog.naver.com/PostView.nhn?blogId=sunchan683&logNo=221583485363&parentCategoryNo=&categoryNo=19&viewDate=&isShowPopularPosts=false&from=postView UTXO

https://m.blog.naver.com/sunchan683/221606846917 POW 와 논스

https://xiubindev.tistory.com/22 UTXO

profile
디버깅에서 재미를 추구하면 안되는 걸까
post-custom-banner

0개의 댓글