이더리움의 계정 추상화, 네이티브 계정 추상화
계정 추상화
계정 추상화는 프로그래밍 함수를 포괄적으로 사용할 수 있도록 기능을 일반화할 때 사용하는 추상화와 같은 의미로 계정을 변환하는 방식을 말한다.
추상 계정은 특정 목적으로 사전 정의되어 있는 기능 외에 상황에 따라 요구하는 추가 기능을 사용할 수 있는 유연한 기능 범위를 가지게 되어 프로그래밍 가능한 계정으로 변화한다.
예를 들면, 자산의 보관 및 전송을 위한 개인 지갑 계정을 추상화하는 경우 기존에 염두에 두지 않은 NFT 발행 기능을 사용하기 위해 새로운 외부 함수를 호출하는 등의 변화가 가능해진다.
모듈식 계정
모듈식 계정은 위에서 설명한 새로운 기능 추가를 편리하게 수행할 수 있도록 기능 단위를 모듈화하여 배포한 외부 컨트랙트를 사용하는 방식을 말한다.
모듈식 계정에서 계정 본체는 최소한의 계정 기능만을 가진 OS를 배포하고, 그 외의 계정 기능은 모두 외부 컨트랙트에 배포 후 계정에서 호출 권한을 부여하는 트랜잭션에 서명하여 사용한다.
프로그래밍 시 npm, pip 과 같은 라이브러리 사용을 생각할 수 있다. 라이브러리 설치 도구에 명령어를 입력해 해당 라이브러리를 프로젝트에서 사용하도록 설정하고, 프로젝트에서 라이브러리 기능 사용을 위해 바로 호출할 수 있는 것처럼 모듈식 계정 역시 외부 기능 설치 후 호출 방식을 이용한다.
양자 내성 암호 사용을 위한 계정 추상화
최근 양자컴퓨터의 상용화 가능성을 두고 많은 주제가 화두에 오르고 있다.
블록체인 서명 체계의 양자 공격 취약성을 경고하며 빠른 대처를 요구하는 의견도 매우 활발하게 논의되고 있는데, 현재 이더리움 네트워크 및 계정 추상화를 지원하는 네트워크는 상대적으로 양자 공격에 대한 대비가 많이 진행되었다고 볼 수 있다.
계정 추상화를 지원하지 않는 네트워크의 경우에는 서명 검증 기능에서 양자 내성 암호를 사용하기 위해 네트워크 전체를 변경하는 하드포크가 필수적이며, 그 과정에서 네트워크 내부 계정들은 새로운 기능 사용을 위해 주소가 다른 새로운 계정으로 자산을 이전하는 등의 방식이 필요하다.
하지만, 계정 추상화를 지원하는 경우에는 네트워크 수준에서 양자 내성 암호 검증 알고리즘 모듈을 추가하는 상대적으로 작은 업데이트와 각 계정의 자율적인 기능 수정으로 양자 내성을 갖출 수 있다는 점에서 양자공격이 일부 대비가 진행중이다.
계정 추상화는 이런 대규모 변화에 대해서도 유연하게 대처 가능한 선택지를 제공하며, 네트워크의 업데이트와 별개로 각 계정의 자율적인 모듈 사용으로 기능을 추가할 수 있다는 점이 특징이다.
추상 레이어의 구분
계정 추상화 방식에 대해서 네트워크 내부의 추상화 지원, 외부 컨트랙트의 추상화 지원으로 구분할 수 있다.
플러그인 추상화
EIP-4337을 이용한 UserOp, EntryPoint를 이용한 계정 추상화를 플러그인 추상화라고 표현한다.
EIP-4337은 계정 외부 컨트랙트가 계정을 관리할 수 있는 스마트 컨트랙트 기능을 추가하는 제안이다.
이 방식은 외부 컨트랙트가 제출된 UserOp를 EntryPoint라는 신뢰되는 컨트랙트에 전달하여 트랜잭션 실행을 의뢰하는 방식으로 작동한다.
블록체인 네트워크 내부에서는 데이터의 저장, 컨트랙트 간의 소통에 발생하는 비용을 가스비라고 지칭하는데 위의 EntryPoint와의 소통에서 가스비가 발생하여 추상 과정이 없는 단순 트랜잭션에 비해 비용이 높다.
네이티브 추상화
EIP-8141의 프레임 트랜잭션을 이용한 네트워크 빌더 수준에서의 계정 추상화를 네이티브 추상화라고 표현한다.
EIP-8141은 네트워크 빌더 수준에서 Frame 단위 동작을 수행 기능을 추가하는 제안이다.
이 방식은 네트워크 내부 엔진에서 동작을 단위별로 구분하고, 실행하기 때문에 외부 컨트랙트와의 소통 없이 실행되어 트랜잭션 비용이 저렴하다.
Frame을 이용한 추상화로 UserOp로는 여러 개의 요청으로 분리되어야 하는 동작을 하나의 요청으로 수행할 수 있게 되었다.
UserOp는 내부에 동작을 위한 CallData가 하나 포함되어 전달되기에 하나의 UserOp 당 하나의 동작을 수행하여 복잡한 동작을 수행하기 위해서는 여러 개의 UserOp를 이용해야 하는 점에서 높은 비용을 요구한다.
Frame은 내부에 배열 형태로 여러 동작을 순차적으로 요청할 수 있어 순서 관계를 통한 복잡한 동작을 수행하기에 유리하다.
EIP-8141
EIP-8141 프레임 트랜잭션은 프레임 모드에 따른 권한 분리가 특징이다.
프레임 모드는 [VERIFY, DEFAULT, SENDER] 가 존재한다.
- VERIFY : 트랜잭션의 서명 및 진위 여부를 검증하는 프레임 모드를 의미한다. 이 모드의 프레임이 실패하거나 반려되는 경우 트랜잭션 실행 권한이 없다는 의미가 되어 트랜잭션이 무효 처리된다. (블록이 생성되지 않고 노드에서 무효 처리)
- DEFAULT : 트랜잭션에서 수행하는 상태 변경 로직이나 외부 컨트랙트와의 소통 로직을 포함하는 프레임 모드를 의미한다. 이 프레임이 실패하거나 반려되는 경우 실행 단위의 실패를 의미하며 이후 프레임을 수행하지 않고, 트랜잭션이 실패가 된다. (블록이 생성되어 실패 이력 기록)
- SENDER : 트랜잭션을 수행하는 계정의 자산에 관여하는 프레임 모드를 의미한다. 이 모드의 프레임은 자산의 전송 관련 로직을 포함하며, VERIFY 모드에서 sender_approved 상태를 반환하는 경우에만 실행 가능하다.
각 프레임은 트랜잭션 내부에 배열의 요소로 입력되고, 배열 순서에 따라 index 0 부터 순차적으로 실행된다.
블록체인 생태계는 양자컴퓨터라는 새로운 기술에 대응하기 위해 사용자의 자율성을 확대하며, 자연스러운 데이터 이전이 가능한 계정 추상화를 진행하고 있다.
네트워크마다 채택하는 양자 내성 대응 방식이 다양하지만, 이미 네트워크 활성 유저가 많은 대규모 프로젝트에서는 계정 추상화를 이용한 검증 방식 변경이 우세하며 이외의 네트워크에서는 설계 단계부터 양자 내성을 염두에 둔 경우도 존재한다.
양자컴퓨터로 인해 블록체인이 무력화된다는 의견과는 달리 양자컴퓨터 개발 분야에서의 정보 공유를 통해 보안을 강화하는 방향으로 생태계가 발전하고 있으므로 고전적인 네트워크 시스템보다 안전하다.