💡 지갑
블록체인 지갑은 블록체인에서 실행되고 개인 및 공개 키를 저장하고 해당 키와 관련된 모든 트랜잭션을 블록 체인에 모니터링하고 유지하는 소프트웨어이다. 즉, 비트코인, 이더리움 등의 암호화폐를 보관할 수 있는 계정을 뜻한다.
✓ 지갑의 종류
- 데스크탑 지갑
- 모바일 지갑
- 하드웨어 지갑
- 웹 지갑
✓ 지갑의 구조
지갑은 주소(공개키, Public Key)와 암호(개인키, Private Key)로 구성되어 있다. 지갑의 주소는 다른 사람들의 암호화폐를 송금할 수 있도록 공개해도 되지만, 개인 암호는 오직 지갑 소유자 본인만 알고 있어야 한다.
💡비트코인 - UTXO(Unspent Transaction Outputs)
UTXO는 미사용 트랜잭션 출력값(미지출 거래 출력)을 뜻한다. 비트코인은 이더리움의 어카운트 모델과 달리 계정이나 잔고가 없고, 블록체인에 기록된 소비되지 않은 출력 값을 통해 거래의 유효성을 검사하여 코인의 존재 여부를 확인한다. 즉, 코인이 지갑에 저장되는 것이 아니라 UTXO 에 저장된다고 본다.
✓ UTXO의 장단점
- 장점
이중 지불 방지 : 트랜잭션을 발생시키면 해당 UTXO는 검증을 받은 후 TX Pool 에 들어간다. 그러나 이중지불이 발생하면 채굴자들은 Pool에서 UTXO 검사 후 사용 기록이 있다면 해당 거래를 무효화할 수 있다. 같은 이유로 하이퍼레저 퍼블릭에서도 UTXO를 사용한다.
잔고의 증명: UTXO는 추적하기가 용이한 장점이 있다. 즉, 거래에 대한 유효성을 검증하기가 매우 쉽다. 일반적으로 이더리움 같은 경우는 트랜잭션들을 모두 검증 및 확인하여 최종적으로 잔고를 유추하지만 UTXO는 해당 사용자의 UTXO만 확인하면 되기 때문에 그럴 필요가 없다.
- 단점
UTXO의 가장 큰 단점은 UTXO가 너무 과하게 생성이 될 경우이다. 이더리움은 결과적으로 잔고 하나만 점검하면 끝이지만, UTXO 방식을 채용하는 코인들은 흩어져 있는 UTXO를 모두 모아야 하며 소액 결제를 엄청 자주 하거나, 채굴로 이자를 받게 되면 과도한 UTXO로 인해서 불필요한 수수료를 내야할 수도 있다.
💡이더리움 - 어카운트(Account)
✓ 어카운트란?
이더리움 주소와 개인키의 조합을 어카운트라고 한다. 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송할 수 있다.
✓ 주소(address)와 키(Key)
이더리움 블록체인에서 주소와 키는 이더리움의 소유권과 전송을 나타내는 데 주로 쓰인다.
* 주소
이더리움 블록체인에서 사용자의 신분증에 해당하는 것이 주소이다. 이더리움 주소는 0013f13xxxxxxxxxxxxxxxx 과 같은 형태를 가지게 되며, 각 주소에는 해당 개인키가 있다. 개인키는 사용자고 알고 있는 일종의 암호로 간주할 수 있으며, 블록체인과 상호 작용하려면 주소+개인키 쌍이 필요하다.
-> 이더리움의 주소와 어카운트의 차이는, 은행을 예시로 들면 주소는 계좌번호를 나타내고 어카운트는 송금과 이체를 할 수 있는 계좌라고 이해하면 된다.
* 키
키는 개인키와 공개키로 구분되어 사용된다. 개인키는 무작위로 생성되며 비밀 키로써 유지해야하는 반면, 공개키는 개인키를 엲산하여 생성되면 계정을 식별하는 요소로 사용된다.
✓ 이더리움 주소 생성 과정
1) 개인 키를 생성하고, 개인 키로부터 공개 키를 생선한다.
2) Keccak-256 알고리즘으로 공개 키의 해시 값을 계산한다.
3) 생성된 해시값의 뒤쪽 20byte만 남기고 제외 후 이더리움 주소를 생성하게 된다.
❓왜 생성된 해시값의 20byte 만 남기고 제외할까요?
20 byte로 줄여도 누구나 쉽게 계정 주소를 만들 수 있게 만든 것이다. 즉, 암호화 알고리즘이 이후에 생성된 계정과 중복이 되지 않아 검증이 필요하지 않기 때문에 20 byte 만 남겨도 문제가 되지 않는다.
✓ 이더리움 2가지 유형 계정
* 외부 소유 계정 (EOA)
공개 주소와 개인키의 조합을 말한다. 외부 소유 계정 또는 외부 계정을 사용하면 다른 계정과 이더를 송수신하고 스마트 컨트랙트에 트랜잭션을 보낼 수 있다.
* 컨트랙트 계정 (CA)
컨트랙트 계정에는 상응하는 개인키가 없다. 이러한 계정은 스마트 계약을 블록체인에 배포할 때 생성된다. 컨트랙트 계정 대신 컨트랙트로만 표시하기도 한다. 컨트랙트는 다른 계정과 이더를 송수신하고(EOA 와 동일), 관련된 코드를 담고(EOA와 다름), EOA나 다른 컨트랙트의 호출을 받아 트랜잭션을 발생시키는 기능을 갖고 있다.
✓ 어카운트의 장단점
* 장점
- 단순성(Simplicity) : 이더리움은 복잡한 스마트 컨트랙트 개발자, 특히 국가 정보가 필요하거나 여러 당사자가 참여하는 개발자의 이익을 위해 보다 직관적인 모델을 선택했다. 예를 들어 상태를 추적하여 상태를 기반으로 다른 작업을 수행하는 스마트 컨트랙트가 있다. UTXO의 상태 비저장 모델이 트랜잭션에 상태 정보를 포함하도록 강제하므로 계약의 설계가 불필요하게 복잡해지는 것과 대비를 보인다.
- 효율성(Efficiency) : 이더리움 어카운트의 단점은 이중 지불 공격에 노출된다는 점이다. 이러한 유형의 공격에 대응하기 위해 점증적인 논스를 구현한다. 이더리움엔서 모든 계정은 공개적으로 볼 수 있는 논스를 가지고 있고, 거래가 이루어질 때마다 논스는 하나씩 증가한다. 이는 동일한 트랜잭션이 두 번이상 제출되는 것을 방지할 수 있다.
비트코인의 UTXO, 이더리움의 어카운트는 각각의 장단점이 있어 어느 것이 나은 것인지는 사용하려는 목적과 기능, 사용하려는 역할데 따라 달라질 수 있다. 화폐의 역할에 충실해야 한다면 비트코인의 UTXO가 한번 사용되고 사라져 익명성과 보안성이 강하기 때문에 더 훌륭하지만, dApp 과 같이 다양한 기능을 구현하고 싶다면 스마트 컨트랙트를 활용할 수 있는 이더리움의 어카운트가 적절하다.
'블록체인 > 블록체인이란?' 카테고리의 다른 글
분산 데이터베이스와 블록체인의 차이점 그리고 분산원장이란? (0) | 2022.06.16 |
---|---|
분산 데이터 베이스란? (0) | 2022.06.16 |
비트코인 코어(Bitcoin Core) 그리고 이더리움 클라이언트(Ethereum Client) (0) | 2022.06.16 |
블록체인 거버넌스 / BIP / EIP/ ERC / KIP (0) | 2022.06.16 |
블록체인 - 합의 알고리즘이란? 작업증명? 위임지분증명? POW? POS? (0) | 2022.06.16 |
댓글