brunch

You can make anything
by writing

C.S.Lewis

by 오진미 Jun 27. 2022

이더리움 계정 유형 : EOA, CA의 차이

이더리움 계정(account)이란, 이더를 소유하고 트랜잭션을 보낼 수 있는 독립체이다. 입출금에 필요한 주소가 계정에 포함되어 있다. 이더리움에는 2가지 유형의 계정이 있는데, 외부 소유 계정인 EOA컨트랙트 계정인 CA로 나뉜다.







EOA (Externally Owned Accounts)


EOA는 일반적인 계정 유형으로, 계정의 주소를 통제할 수 있는 개인키가 존재한다. EOA는 트랜잭션을 발생시키고, 이를 다른 EOA나 CA에 전송할 수 있다. 대표적인 예로, 메타마스크에서 생성한 계정은 EOA이다.






CA (Contract Accounts)


CA는 컨트랙트 코드에 의해 통제되는 계정으로, 컨트랙트를 네트워크에 배포할 때 생성된다.


EOA와는 달리 CA는 계정의 주소를 통제할 수 있는 개인키가 존재하지 않는다. 대신 특정 조건을 충족했을 때 실행되는 컨트랙트 코드가 존재한다. 이를 통해 CA를 통제할 수 있다. CA에는 개인키가 없으므로 직접 트랜잭션을 발생시킬 수 없다. 따라서 EOA가 발생시킨 트랜잭션을 전송 받고, 해당 트랜잭션의 메시지가 조건을 충족한다면 컨트랙트 코드가 실행되어 특정 액션이 발생하게 된다.



장점

중앙화 거래소에서 고객의 입금 주소로 입금된 이더는 거래소의 메인 주소로 모이게 된다. 이때 CA를 사용하면, 입금된 이더의 목적지를 거래소의 메인 주소로 설정하도록 컨트랙트 코드를 구성할 수 있다. 이 경우 추가적인 트랜잭션이 발생하지 않고 CA로 입금된 이더가 메인 주소로 이동한다. 트랜잭션이 발생하지 않으므로 수수료가 발생하지 않아서, 이더를 모으는 과정에서 발생하는 수수료를 큰 폭으로 절감할 수 있다. 이러한 이유로 많은 중앙화 거래소에서 고객의 입금 주소로 CA를 채택해왔다.



단점

CA는 직접 트랜잭션을 발생시킬 수 없다. 따라서 외부에서 보낸 트랜잭션을 받을 수는 있지만(입금), 직접 트랜잭션을 발생시킬 수는 없다(출금). 그래서 고객이 CA로 오입금한 경우 복구가 매우 어렵다. 또한 트래블룰 시행으로 인해 집금 구조를 기피하는 중앙화 서비스가 많아지며 더이상 CA를 사용하지 않는 추세이다. 앞으로 트래블룰이 강화될 경우 메인 주소로 자산을 모으지 않고 고객 주소에서 직접 출금하는 상황이 발생할 가능성도 있는데, 이 경우 CA 사용이 불가능해지기 때문이다.






브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari