배경
니어프로토콜(NEAR Protocol)에서 개발하기 위해 니어를 공부해보기로 했다. 우선 니어에서 내세우는 Named Account에 관한 개념이다. 공식 Docs가 깔끔해서 어렵지 않았다. 커뮤니티 서비스를 개발하는 데 있어서 사용자 접근성이 무엇보다 중요한데 니어프로토콜의 Named Account는 읽기 쉽고 생성하기도 간편해서 매력적이다.
정리하고 보니, 우리팀은 현재 서비스를 NEAR Protocol 메인넷에 올릴 계획도 하고 있는데, 일반 유저들의 계정을 생성하기 위해서는 토큰(최소 0.001near)가 요구된다는 점이 아쉬웠다. 비용 문제보다는 "블록체인도 잘 모르는 웹2 유저들에게 NEAR 토큰을 구매하고 계정으로 옮기는 작업"이 어렵고 복잡하기 때문이다. 계정 생성은 무조건 간단하고 간편해야 한다. 다행히 NEAR에서는 이를 위해 FastAuth라는 이메일 기반의 계정 생성 API를 지원한다!! 다음엔 이걸 정리해봐야지.
Account Model
NEAR에 참가하려면 사용자는 계정(Account)를 생성해야 한다. NEAR 계정은 다른 블록체인과 비교해서 유니크하다.
- Human-Readable Accounts: NEAR는 사람이 읽기 쉬운 계정(asdf.example.near)을 사용하여 기억하기 쉽다.
- Permissions Through Access Keys: NEAR 계정은 각각 고유한 권한을 가진 여러 키를 가진다. 이를 사용해 타인에게 권한을 부여하거나 취소할 수 있다.
- Simple to Develop Smart Contracts: NEAR 계정은 선택적으로 스마트 컨트랙트를 보유할 수 있다.
- Mutable State(Storage): NEAR 계정은 사용자 또는 계정의 컨트랙트가 트랜잭션을 수행할 때 변경할 수 있는 상태(State, Storage)가 있다.
Ethereum과의 차이점
Ethereum Wallet | NEAR Account | |
공개 식별자 | Public Key(0x1234...) | Account ID(alice.near) 또는 Public Key |
비밀키 | Private Key(0x5678...) | 권한을 가진 여러 키쌍 - FullAccess key - FunctionCall key |
특징 | - Private Key는 full access 가능하다. - 트랜잭션을 통해 계정을 만들 필요가 없다. |
- 권한 기반의 키쌍 - Account ID는 트랙잭션을 통해 생성되어야 한다. |
Address(Account ID)
모든 NEAR 계정은 특정 주소로 식별된다. 그리고 두 가지 유형으로 구분된다.
- Named Accounts: 'alice.near'와 같이 사람이 읽기 쉬운 계정
- Implicit Accounts: '0x1234...'와 같이 64개의 문자로 이루어진 계정
Implicit Accounts(암시적 계정)
Implicit Accounts는 기존의 비트코인과 이더리움 계정과 유사하다. 고유한 ED25519 키쌍에 해당하는 64자리 문자열 주소이다.
Named Accounts(명명 계정)
메인넷에서 Named Accounts를 생성하기 위해서는 Implicit Account를 먼저 생성해야 한다. 몰라서 헤맸다..
테스트넷에서는 바로 생성 가능.
- 누구나 최상위 레벨의 계정(32자리 이상)을 생성할 수 있다. ex) qwerasdfzxcv.near
- 그 자신의 sub-accounts(하위 계정)(32자리 미만)를 생성할 수 있다. ex) alice.qwerasdfzxcv.near
- 계정은 하위 계정을 생성"만" 한다. 권한을 가지지 않는다.
- 메인넷의 하위 계정은 '.near', 테스트넷의 하위 계정은 '.testnet' 식별자를 가진다.
Creating Accounts
니어프로토콜에서 계정(Account)을 생성하는 방법은 2가지로, 지갑(Wallet) 어플리케이션에서 생성하는 방법과 로컬 툴을 사용하여 생성하는 방법이 있다. 예전에는 니어에서 'wallet.near.org'라는 지갑 서비스를 운영했었지만, 현재는 운영하지 않고 다른 지갑을 사용해야 했다. MyNearWallet이 'wallet.near.org'와 UI가 거의 똑같다.
메인넷에서 Named Accounts를 생성하기 위해서는 반드시 Implicit Accounts를 생성한 후, 요구되는 NEAR 토큰(최소 0.001near)을 지불해야 한다. 테스트넷은 바로 생성가능하다. 지갑 앱, 로컬 툴 모두 가능하다.
Access Keys
이 부분은 요약하자면, 계정은 각각 권한을 가진 키쌍을 가지고 있고 키쌍을 공유해서 권한을 부여하거나 취소할 수 있다. 졸과에 있어서는 크게 중요한 부분은 아니어서 굳이 정리하진 않겠다.
Smart Contract
NEAR의 스마트 컨트랙트는 다른 블록체인과 조금 다른데, Account의 state에 저장되고 계정 명의로 트랙잭션을 수행하며, 그 자신만의 storage를 가진다. NEAR의 스마트 컨트랙트는 JavaScript와 Rust로 작성가능하다. 컴파일되어 계정에 배포되므로, 누구나 public method를 실행할 수 있다!
State
각 계정은 메타데이터와 컨트랙트 관련 데이터(컨트랙트 코드 + storage)를 저장한다.
해당 계정만이 state를 변경할 수 있으며, 누구나 읽을 수는 있다. 그러나 state 용량을 사용하기 위해서는 일정 비용을 잠금(Staking)으로써 stroage에 대한 비용을 지불해야 한다.
'프로젝트 > 졸업과제' 카테고리의 다른 글
[졸과][NEAR] 계정 생성 어떻게 할까? (0) | 2024.02.16 |
---|---|
[졸과][NEAR] 계정 생성을 어떻게 처리할지 고민 중 (0) | 2024.02.15 |
[졸과][NEAR] near-cli로 createAccount (0) | 2024.02.14 |
[졸과][NEAR] 왜 NEAR인가 (0) | 2024.02.08 |
[졸과][블록체인] DID의 개념과 생성 (1) | 2024.02.06 |