본문 바로가기
블록체인 이론/klaytn

Klaytn 계정

by gun_poo 2022. 2. 15.

개요

Klaytn의 계정(account)은 개인의 잔액이나 스마트 컨트랙트에 관한 정보를 포함하는 데이터 구조

 

Klaytn의 상태(state)는 모든 계정의 상태, 즉 Klaytn의 계정들에 저장된 모든 데이터의 과거와 현재 상태를 의미

  • Klaytn 노드에서 트랜잭션이 실행되면, Klaytn의 상태는 모든 노드에서 변경

주소로부터 키 쌍(key pairs) 분리하기

  • 클레이튼은 사용자가 자신의 주소와 키 쌍을 선택할 수 있도록 하는 기능을 제공
    • 사용자는 원하는 주소를 선택할 수 있고, 다중 키 쌍을 사용하여 보안을 강화할 수 있다.

다중 키 쌍과 역할기반 키

  • klaytn 계정은 키쌍과 연결 되는데 이 키 쌍은 변경 될 수 있다.
  • 다중 키 쌍을 지원하며 각 키는 다른 목적을 가질 수 있다.
  • 주소와 강하게 결합된 단일키를 가진 계정과 호환 할 수 있다.
    • 사용자는 자신의 계정에서 노출된 키 쌍을 제거하고 새키 쌍을 만들어 노출된 개인키와 간단히 교체 할 수 있다

Klaytn 계정 유형

외부 소유 계정 (EOAs) 및 스마트 컨트랙트 계정(SCAs)

 

외부 소유 계정 (EOAs) : 0x1

  • 외부 소유 계정에는 논스(nonce) 및 잔고와 같은 정보
  • 이 유형의 계정에는 코드 또는 스토리지가 없다
  • EOA는 개인키로 제어되며 관련 코드를 가지지 않는다.
  • EOA는 키 페어를 사용하여 생성되고, 키 페어를 가진 어떤 사람이든 EOA를 제어 할 수 있다

스마트 컨트랙트 계정 (SCAs) : 0x2

  • EOA와 달리 SCA에는 관련 코드가 있으며 해당 코드로 제어
  • SCA는 스마트 컨트랙트 배포(deployment) 트랜잭션에 의해 생성
  • 일단 배포되면 SCA는 자체적으로 새 트랜잭션을 시작할 수 없으며, EOA 또는 다른 SCA나 다른 계정에 의해 작동되어야 한다.

계정 키

  • 계정 키는 계정과 연결된 키 구조를 나타낸다

AccountKeyNil : 빈(empty) 키

  • 계정이 AccountKeyNil object를 가지려고 하면 트랜잭션은 실패한다
  • 역할기반 키(role-based keys)를 이용하는 TxTypeAccountUpdate 트랜잭션에만 사용된다

AccountKeyLegacy : 0x01

  • 해당 키 쌍에서 파생된 주소를 가진 계정에 사용
  • 계정이 AccountKeyLegacy를 가지고 있는 경우, 트랜잭션 유효성 검사 절차는 다음과 같다
    • 공개키를 ecrecover(txhash, txsig)로부터 얻는다
    • 공개키 주소를 얻는다
    • 주소는 발신자이다

AccountKeyPublic : 0x02

  • 공개키를 하나 가진 계정에 사용된다
  • 계정에 AccountKeyPublic 객체가 있는 경우, 트랜잭션 유효성 검사 프로세스는 다음과 같이 수행
    • ecrecover(txhash, txsig)로부터 파생된 공개키를 얻는다
    • 파생된 공개키가 해당 계정의 공개키와 같은지 확인

AccountKeyFail : 0x03

  • 계정에 AccountKeyFail 키가 있으면 트랜잭션 유효성 검증 프로세스는 항상 실패
  • 특정 스마트 컨트랙트 계정에서 전송된 트랜잭션이 항상 실패하도록 사용

AccountKeyWeightedMultiSig : 0x04

  • threshold와 WeightedPublicKeys가 저장되어 있다.
  • WeightedPublicKeys는 공개키와 공개키의 가중치(weight)로 이루어진 리스트
  • AccountKeyWeightedMultiSig와 연결된 계정에 대해 유효한 트랜잭션이 되려면, 다음 조건을 만족해야한다
    • 서명된 공개키의 가중치 합계가 임계값(threshold)보다 커야한다
    • 트랜잭션에 유효하지 않은 서명이 포함되면 안 된다
    • 서명된 공개키 개수가 WeightedPublicKey 개수보다 적어야만 한다

AccountKeyRoleBased : 역할기반 키를 의미, 0x05

  • RoleTransaction : 기본키. TxTypeAccountUpdate 이외의 트랜잭션은 이 역할의 키로 서명
  • RoleAccountUpdate : TxTypeAccountUpdate 트랜잭션은 이 키로 서명되어야 한다. 이 키가 계정에 없으면, RoleTransaction 키를 사용하여 TxTypeAccountUpdate 트랜잭션의 유효성이 검사된다
  • RoleFeePayer : 이 계정이 발신자 대신 트랜잭션 수수료를 보내려면 이 키로 트랜잭션에 서명, 이 키가 계정에 없으면 RoleTransaction 키를 사용하여 수수료 위임 트랜잭션의 유효성이 검사

Omissible and Expandable Roles

RoleAccountUpdate 없이는 RoleTransaction 및 RoleFeePayer를 설정할 수 없다

'블록체인 이론 > klaytn' 카테고리의 다른 글

Klaytn 트랜잭션 비용 위임  (0) 2022.02.15
Klaytn transactions  (0) 2022.02.15
klaytn 합의 메커니즘  (0) 2022.02.15

댓글