[Solana] Accounts

심현보·2022년 6월 9일
0

Core-concept

목록 보기
1/2
post-thumbnail

Everything is Accounts

Solana Core concept인 Accounts에 대해서 알아보겠습니다.

Solana 에선 모든 것이 Accounts 입니다. Phantom Wallet 을 통해 개인 지갑을 만드는 것도 Accounts, 이더리움에서 스마트 컨트랙트를 만들었다면 Solana에서 만든 그 컨트랙트도 Accounts 등 모든 것은 Accounts로 통합니다. 공식 문서에는 Accounts는 File과 같다는 표현이 있는데, 쉽게 생각을 하자면 솔라나 프로그램(컨트랙트)의 주요 코드도, 그 프로그램에 필요한 Data 또한 Accounts에 있다고 보면 됩니다.

대부분 Accounts로 표현되어 솔라나를 이해하는데 러닝 커브를 높게 만드는 요인 중 하나라고 생각합니다.

Accounts의 Metadata

모든 Accounts에는 Metadata로 불리는 몇가지 필드가 존재합니다. 그 대표적인 필드들은 다음과 같습니다.

  • lamports

    비트코인에선 사토시, 즉 1사토시는 0.00000001 btc(8자리)를 의미하듯이 1 lamports는 0.000000001 sol(9자리) 을 의미합니다. 이 필드는 이 Accounts의 자산을 얼마나 가지고 있는지 표시하게 됩니다.
    ps. lamports는 레슬리 램포츠 의 이름을 따 만들었다고 합니다.

  • owner

    이 계정을 소유하고 있는 주체입니다. 한글로 이해하고자 하면 굉장히 햇갈리고 owner, 그 자체로 받아들이는게 이해하기 쉽습니다.
    Owner만이 Accounts의 lamports와 data를 수정할 수 있습니다.
    한가지 확실하게 구분해야할 것은 privateKey를 들고있는 사용자는 Authority를 가진 권한자이자 Holder입니다. PrivateKey를 들고있는 사용자가 accounts의 자산을(lamports) 수정할 수 있을까요? 아닙니다. 단순히 사용자는 privateKey로 서명할 뿐이고 서명을 통해 Accounts Owner가 서명된 것을 검증/확인하고 lamports(자산)을 수정하게끔 하는 것입니다.

  • executable

    이것은 실행가능 여부를 나타냅니다. 즉 이 Accounts는 프로그램인지 아닌지를 구분하는 구분자입니다. 아래에서 다시 다루겠습니다.

  • data

    data는 프로그램 여부에 따라 코드가 담기기도하고 프로그램에 따른 데이터가 담기기도 합니다. 여기서 데이터사이즈는 한번 정의되면 수정할 수 없습니다.

  • rent_epoch

    Accounts는 노드 Validator의 메모리에 저장되게 되는데 이것에 대한 대가로 지불하는 lamports값 rent 라고 부릅니다. 이 값은 매 epoch마다 감소되어 0이 되면 Accounts가 사라지게 되지만 최소 2년치의 rent를 예치하면 임대료를 차감 대상에서 제외됩니다.

각각의 Accounts마다 각자의 상황에 맞는 값들을 가지고 있게 됩니다.

Accounts의 Type

첫번째로 Accounts를 구분하는 좋은 방법은 실행이 가능한(executable)지 아닌지에 대한 여부를 확인하는 것입니다. 기본적으로 모든 계정은 실행이 불가능한 계정으로 보면되는데 그 중 Program Accounts 만 특별하게 executable 값이 true로 실행이 가능합니다. Program Accounts은 개발자가 만든 Instruction(a.k.a 이더리움의 컨트랙트), 즉, 서명에 쓰이는 코드들이 Data 필드에 담겨있습니다.

Program Accounts를 소거하고 난 후 나머지는 모두 Data Accounts입니다. Data Accounts는 이름 그대로 Data를 저장하기 위해 존재하는 Accounts로, Data 필드에 Program Accounts가 필요로 하는 값을 적재하여 읽고 쓸수 있는 File과 같은 역할로 사용됩니다.

Accounts가 실행가능한지에 대한 여부는 Solana Explorer 를 통해 쉽게 확인할 수 있습니다.

https://explorer.solana.com 에서 PublicKey를 조회하면 Accounts의 Metadata의 간략한 정보를 얻을 수 있습니다.

Reference

profile
develop something new

0개의 댓글