EOSIO 계정 구조와 권한 이해하기
EOSIO 기반 개발환경을 처음 구성하게 되면 가장 먼저 마주하게 되는 것이 바로 **시스템 계정(eosio)**이다.
이 시스템 계정은 단순한 테스트 계정이 아니라, 전체 블록체인에서 가장 기본이 되는 관리자 계정이라 할 수 있다.
EOSIO 계정 생성 규칙
EOSIO에서 계정은 다음과 같은 명명 규칙을 따른다:
- 사용 가능한 문자: a ~ z, 1 ~ 5, . (총 33개 문자)
- 최대 길이: 12자까지 가능
- 계정명은 고정된 문자열 형태이며, 소문자만 허용된다
즉, 임의의 긴 영문자나 대소문자를 혼합해서 계정을 만들 수는 없다.
예를 들어 myaccount12, abc123def456 이런 형태는 가능하지만 MyAccount, abc_123 같은 이름은 사용할 수 없다.
계정이란 무엇인가?
EOSIO에서의 **계정(account)**은 단순히 지갑 주소가 아니라,
블록체인 상에서 트랜잭션을 실행하거나, 스마트 계약을 배포할 수 있게 해주는 **주체(subject)**이다.
모든 EOSIO 트랜잭션은 누군가의 계정에 의해 발생한다.
그리고 그 계정은 반드시 하나 이상의 **권한(permission)**을 가지고 있어야 한다.
EOSIO 계정의 권한 구조
EOSIO에서는 계정이 두 가지 기본 권한을 가진다:
- owner 권한
- 계정의 최상위 권한
- 계정 자체를 소유하고 있다는 것을 의미
- active 권한을 변경하거나, 계정 자체를 이전할 수 있는 권한
- active 권한
- 실질적인 운영 권한
- 토큰 전송, 리소스 스테이킹, 블록 프로듀서 투표 등 대부분의 작업은 이 권한으로 수행됨
이러한 구조 덕분에, 실수로 active 키를 유출하더라도 owner 키를 사용해 계정을 복구할 수 있는 안전장치가 마련되어 있다.
testnet 환경에서는 eosio 계정만 존재
개발 초기에 싱글 노드 testnet을 구성하게 되면,
기본적으로 존재하는 계정은 오직 eosio 계정 하나뿐이다.
그렇기 때문에, 처음으로 custom 계정을 생성할 때는 eosio 계정을 통해 트랜잭션을 보내야 한다.
이 과정에서 eosio의 private key를 알고 있어야 한다는 점을 잊지 말자.
예를 들어 아래와 같은 명령을 사용하게 된다:
cleos create account eosio youraccountname your_public_key
이때 eosio가 계정 생성 주체로 사용된다.
testnet에서는 권한이 오직 eosio에 있기 때문에 이런 방식이 가능하지만,
mainnet에서는 토큰 비용이 들고, 다른 방식으로 권한 분배가 이루어진다.
마무리
EOSIO의 계정은 단순한 이름 이상의 의미를 가진다.
권한(permission)을 통해 세분화된 보안을 제공하고,
트랜잭션의 주체로서 중요한 역할을 수행한다.
개발 초반에는 eosio 계정을 통해 환경을 구성하게 되지만,
실제 서비스 환경에서는 owner/active 권한 분리, 멀티 시그(Multi-signature) 등의 기능을 잘 활용해야 안전한 운영이 가능하다.
'블록체인 > EOS' 카테고리의 다른 글
[EOSIO] 용어 정리 (0) | 2023.01.03 |
---|---|
EOSIO 시작 가이드 (0) | 2023.01.02 |
EOSIO란 무엇인가? (0) | 2023.01.02 |