跳到主要内容

액세스 키

블록체인에서 계정을 사용한다는 것은, 실제로 트랜잭션에 서명하기 위해 개인 키를 사용하는 것을 의미합니다.

NEAR 계정은 액세스 키라고 하는 여러 개의 공개/개인 키 쌍을 보유하고 있으며, 각각에는 고유한 접근권한이 내장되어 있습니다.

액세스 키는 OAuth와 유사합니다. 즉, 계정에 대한 제한된 접근권을 제3자에게 부여할 수 있습니다.


액세스 키의 장점

액세스 키의 개념은 NEAR의 고유한 특징이기 때문에, 액세스 키를 사용하는 이유와 방법을 먼저 이해하는 것이 좋습니다.

안전하게 앱 사용하기

웹 앱과 스마트 컨트랙트로 구성된 웹3 게임을 하고 싶다고 상상해 보세요. NEAR에서는 게임 컨트랙트에서 특정 메소드만 호출할 수 있는 키를 생성할 수 있습니다.

키를 게임에 안전하게 제공할 수 있으므로, 트랜잭션마다 게임 플레이를 중단할 필요 없이 게임 관련 트랜잭션에 서명할 수 있습니다.

키 교체하기

키가 유출되었다고 생각되면, 간단히 키를 제거하거나 새 키로 교체할 수 있습니다. 이는 웹사이트에서 비밀번호를 변경하는 것과 같습니다.

키 복구하기

계정에서 키 복구 컨트랙트을 구현하고, 믿을 만한 사람을 위한 "복구 키"를 만들 수 있습니다. 이러한 키는 복구를 시작하는 데에만 사용할 수 있습니다.

필요한 경우 해당 제3자 구성 요소가 복구 프로세스를 시작하게 할 수도 있습니다.

키 종류

NEAR는 FullAccess 키와 FunctionCall 키라는 두 가지 유형의 액세스 키를 구현하고 있습니다.


전체 액세스 키

이름에서 알 수 있듯이, FullAccess 키는 운영 체제에서 관리자 권한을 갖는 것과 유사하게 계정을 완전히 제어할 수 있는 권한을 가집니다.

특히, 전체 액세스 키는 계정을 대신해서 모든 종류의 트랜잭션에 서명하는 데 사용될 수 있습니다. 예시로든 다음과 같은 것을 들 수 있습니다.

  1. 하위 계정을 만드는 작업.
  2. 계정을 삭제하는 작업(단 , 하위 계정은 자체 키를 가지고 있으므로 제외됨).
  3. 액세스 키를 추가하거나 제거하는 작업.
  4. 계정 내 스마트 컨트랙트를 배포하는 작업.
  5. 모든 컨트랙트(귀하 또는 다른 사람)의 메서드를 호출하는 작업.
  6. NEAR Ⓝ 전송 작업.

누군가에게 FullAccess를 넘겨주면, 그들은 해당 계정을 완전히 제어할 수 있습니다.

提示

계정을 만들 때 계정의 첫 번째 전체 액세스 키를 추가하게 될 것입니다.


함수 호출 키

FunctionCall 키는 컨트랙트에서 지불할 수 없는 메서드, 즉 NEAR Ⓝ를 포함할 필요가 없는 메서드를 호출할 수 있는 권한만 가집니다.

FunctionCall 키는 다음과 같은 세 가지 속성으로 정의됩니다.

  1. receiver_id: 키가 호출하는 것을 허용하는 컨트랙트입니다. 이 키를 사용하여 다른 컨트랙트를 호출할 수 없습니다.
  2. method_names: 키가 호출할 수 있는 컨트랙트의 메서드입니다(선택 사항). 생략하면 모든 메서드를 호출할 수 있습니다.
  3. allowance: 가스에 사용할 수 있는 Ⓝ의 양(선택 사항)입니다. 생략하면 키는 뷰 메서드 호출만 할 수 있게 됩니다(읽기 전용).

함수 호출 키의 주요 목적은 앱에 전달되어서, 귀하의 이름으로 컨트랙트 호출을 할 수 있도록 하는 것입니다.

NEAR 는 로그인 프로세스 를 구현하여 dApp에 대한 키 생성 및 제공 작업을 단순화 합니다. 간단히 말해 dApp은 지갑을 사용하여 로그인하도록 요청하여, 자동으로 dApp에 FunctionCall 키를 생성하고 제공하도록 할 수 있습니다.

FunctionCall 키를 사용하면 dApp은 가스에 대한 기본 허용량 0.25Ⓝ를 통해 계정을 대신하여 특정 메서드를 호출할 수 있습니다.

dApp 이 FunctionCall 키를 사용하여 일정량의 토큰을 전송하도록 요청하면, 지갑에서 사용자에게 트랜잭션을 승인하라는 메시지가 다시 한 번 표시 됩니다.


잠긴 계정

계정에서 모든 키를 제거하면 계정이 잠기게 됩니다. 즉, 외부에서 계정 이름으로 트랜잭션을 수행할 수 없게 됩니다.

실제로 이것은 계정의 스마트 컨트랙트만이 자산을 전송하거나, 하위 계정을 생성하며, 자체 코드를 업데이트할 수 있음을 의미합니다.

계정을 잠그는 것은 컨트랙트를 배포하였을 때, 커뮤니티가 해당 컨트랙트만이 계정을 제어할 수 있음을 확신한다면 매우 유용하게 사용될 수 있습니다.