블록체인 네트워크에서 지갑이란 블록체인에서 실행되고, 개인키 및 공개키를 저장하고. 또한 해당 키와 관련된 모든 트랜잭션을 블록체인에 모니터링/유지 하는 S/W입니다. 즉 지갑은 비트코인, 이더 등의 암호화폐를 보관할 수 있는 계정을 의미합니다. 블록체인 네트워크에서 블록을 생성하고 체인에 추가하기 위해 증명을 하게 되는데 이 때 채굴과 노드에서 노드가 바로 지갑입니다.
지갑은 주소(공개키)와 암호(개인키)로 구성됩니다. 지갑의 주소는 공개되어 사람들에게 송금/ 이체하는데 사용되지만 개인키는 오직 지갑 소유자 보인만 가지고 있어야 합니다. 지갑의 종류로는 데스크탑 지갑, 모바일 지갑, 하드웨어 지갑, 웹 지갑으로 구분됩니다.
비트코인 지갑 UTXO(Unspent Transaction Outputs)
UTXO는 미지출 거래 출력을 의미합니다. 비트코인의 경우 이더리움의 어카운트 모델 처럼 계정 혹은 잔고 개념이 없습니다. 잔고를 확인하기 위해서는 블록체인에 기록된 소비되지 않은 출력 값(UTXO)를 통해 거래 유효성을 검사하고, 코인의 잔고를 확인합니다. 즉, 비트코인은 지갑의 개념이 아니라 UTXO(Unspent Transaction Outputs)에 잔고 데이터가 저장됩니다.
UTXO 장단점
장점 | - 이중 지불을 방지할 수 있습니다. 트랜잭션이 실행되면 해당 UTXO는 검증을 받고 TX Pool에 들어갑니다. 만약 이중지불이 발생하는 경우 채굴자들은 Pool을 확인합니다. 만약 UTXO 검사시 사용 기록이 존재하는 경우 해당 트랜잭션을 무효화 시킵니다. 하이퍼레저 패브릭(Hyperledger Fabric)에서도 UTXO를 사용합니다. - 잔고 증명을 할 수 있습니다. UTXO는 추적이 용이합니다. 이더리움의 경우 트랜잭션을 모두 검증해서 최종적으로 잔고를 알아내지만 UTXO는 해당 사용자의 UTXO만을 참조해서 잔고를 확인할 수 있습니다. |
단점 | - UTXO을 사용하는 경우 과도하게 생성되는 경우 불필요한 수수료를 지불하게 됩니다. 이더리움의 경우 잔고 하나면 검증하지만 UTXO 방식에서는 흩어진 UTXO를 모두 모아야 하기 때문에 과도하게 생성되는 경우 사용이 부적절 합니다. |
이더리움 지갑, 어카운트(Account)
이더리움에서 어카운트(Account)란 주소(Address)와 개인키(Key)의 조합을 의미합니다. 이더리움 어카운트는 이더(ETH) 잔고를 보유하고 트랜잭션을 전송하게 됩니다. 이더리움에서 주소와 키는 이더리움 소유권 및 전송을 나타냅니다.
① 주소(Address)
주소는 이더리움 블록체인에서 사용자 신분증에 해당합니다. 각 주소에는 해당 개인키가 있습니다. 개인키는 일종의 암호로써 블록체인과 상호작용하기 위해서는 주소+개인키 조합이 필요합니다. 주소는 다음과 같은 문자열 형태입니다.
001d3f1ef827552ae1154327bq3ecx1f086ba0f9
② 키
키는 공개키와 개인키로 구분됩니다. 개인키는 무작위로 생성되어 사용자는 안전하게 보관해야 합니다. 공개키는 계정을 식별하는 용도로 사용되며 개인키를 연산해서 생성합니다.
이더리움 주소 생성 과정
- 먼저 개인키를 생성하고, 개인키를 가지고 공개키를 생성함
- keccak256 알고리즘으로 공개키를 해싱함
- 해시값의 뒤쪽 20 Byte만을 가지고 이더리움 지갑의 주소를 생성함.
먼저 개인키를 무작위로 생성합니다. 개인키를 연산해서 공개키를 생성하게 됩니다. 이 후 Keccak-256 알고리즘을 사용해 공개키의 해시값을 연산합니다.
생성된 해시값의 뒤쪽 20 Byte만을 가지고 주소를 생성합니다. 20 Byte만 남기고 주소를 생성하는 이유는 암호화 알고리즘 이 후 계정 중복이 발생되지 않기 때문에 검증이 필요없게 됩니다. 따라서 20 Byte 데이터 만으로 충분히 주소를 생성할 수 있기 때문입니다.
이더리움 계정 종류
이더리움의 계정(Account)은 2가지 종류가 있습니다.
① 외부 소유 계정(EOA)
공개 주소와 개인키 조합을 의미합니다. 외부 소유 계정을 사용해서 다른 계정과 이더(ETH)를 송수신하고 스마트 컨트랙트에 트랙잭션을 보내게 됩니다.
② 컨트랙트 계정(CA)
스마트 컨트랙트를 블록체인에 배포할 때 생성됩니다. 컨트랙트 계정은 다른 계정과 이더(ETH)를 송수신하고, 관련 코드를 담는 다는 점에서 EOA와 차별점을 가집니다. EOA와 같이 개인키를 따로 기지지 않고, 외부 소유 계정이나 다른 컨트랙트의 호출을 받아서 트랜잭션을 발생시키게 됩니다.
이더리움 어카운트 장단점
장점 | 단점 |
- 이더리움의 어카운트는 상대적으로 직관적인 모델을 표방하고 있습니다. 복잡한 스마트 컨트랙트를 개발하는 여러 개발자들의 이익을 위해서 입니다. | - 이중 지불 공격에 노출됩니다. 이를 방지하기 위해 점증적인 논스(Nounce)를 구현하고 거래가 발생할 때 마다 논스를 증가시켜 이중 지불 문제를 해결합니다. |
'Blockchain' 카테고리의 다른 글
[Blockchain] 블록체인 분산 원장 기술이란? (0) | 2022.06.16 |
---|---|
[Blockchain] 분산 데이터베이스 투명성 장점 단점 (feat 블록체인) (0) | 2022.06.16 |
[Blockchain] 블록체인 합의 알고리즘 종류 비교 (0) | 2022.06.14 |
[Blockchain] 블록체인 트랜잭션이란 (0) | 2022.06.14 |
[Blockchain] 퍼블릭 블록체인 vs 프라이빗 블록체인 VS 컨소시엄 블록체인 (0) | 2022.06.14 |
댓글