Overview

Aptos는 Rust 기반의 MOVE라는 언어를 사용하며 Block-STM, Narwhal & Tusk 등 다양한 방법을 이용하여 트랜잭션 처리 속도와 합의 과정을 개선하였습니다. Aptos는 JSON-RPC 방식이 아닌 REST API를 지원하고 있으며 Luniverse에서 지원하는 Aptos REST API에 대한 설명은 다음과 같습니다.


Account

계정에 대한 정보를 조회할 수 있는 REST API 입니다.

  • Get account

    • 계정 주소에 대한 인증 키와 sequence number를 반환합니다. 원장의 버전을 지정할 수 있으며 원장의 버전이 지정되지 않은 경우, 최신 원장의 버전을 가져옵니다.
  • Get account resources

    • 특정 계정과 특정 원장 버전에 대한 모든 Resource를 검색합니다. 원장 버전이 지정되지 않은 경우 최신 원장 버전이 사용됩니다.
  • Get account modules

    • 특정 원장 버전에서 주어진 계정의 모든 모듈을 반환합니다. 원장 버전이 지정되지 않은 경우 최신 원장 버전이 사용됩니다.
  • Get account resource

    • 특정 원장 버전에서 주어진 계정의 개별 Resource를 검색합니다. 원장 버전이 지정되지 않은 경우 최신 원장 버전이 사용됩니다.
  • Get account module

    • 특정 원장 버전에서 주어진 계정의 개별 모듈을 검색합니다. 원장 버전이 지정되지 않은 경우 최신 원장 버전이 사용됩니다.

Block

블록의 데이터를 조회할 수 있는 REST API 입니다.

  • Get blocks by height

    • 블록 번호를 이용하여 해당 블록에 대한 정보와 트랜잭션을 조회할 수 있습니다. 트랜잭션은 default 트랜잭션 사이즈로 제한이 있으며 만약 모든 트랜잭션이 존재하지 않는 경우, 유저가 get Transaction API를 이용하여 나머지 트랜잭션을 Query해야 합니다. 또한 block이 pruned 된 경우, 410 에러를 반환합니다.
  • Get blocks by version

    • 원장 버전을 이용하여 해당 블록에 대한 정보와 트랜잭션을 조회할 수 있습니다.

Event

Event와 관련된 데이터를 조회할 수 있는 REST API 입니다.

  • Get events by creation number
    • address와 creation_number를 이용해 특정 이벤트를 반환합니다.
  • Get events by event handle
    • 주어진 address, event_handle, field_name을 이용해 이벤트 타입을 전역적으로 식별할 수 있는 키를 생성합니다. 이후 이 키를 사용하여 해당 이벤트 타입과 일치하는 이벤트를 반환합니다.

General

Ledger에 대한 데이터를 받아오거나 API를 탐색하는데 사용할 수 있는 UI를 반환하는 REST API 입니다.

  • Show OpenAPI explorer
    • API를 탐색하는 데 사용할 수 있는 UI를 제공합니다. 또한 API를 직접 /spec.yaml 및 /spec.json에서 가져올 수도 있습니다.
  • Check basic node health
    • 가장 최신의 ledger에 대한 정보를 받아와 이용 중인 Aptos node에 대한 Health check를 합니다.
  • Get ledger info
    • 특정 ledger version에서의 table Item을 가져옵니다. table_handle과 key를 이용해 특정 table item을 식별할 수 있습니다. getTableItem API와 달리 Key는 오직 직렬화 된 Key 값만 필요하며 BCS 형식으로 값을 반환합니다.

Tables

Table Item과 관련된 데이터를 조회할 수 있는 REST API 입니다.

  • Get table item
    • 특정 ledger version에서의 table Item을 가져옵니다. table_handle과 key를 이용해 특정 table item을 식별할 수 있습니다.
  • Get raw table item
    • 특정 ledger version에서의 table Item을 가져옵니다. table_handle과 key를 이용해 특정 table item을 식별할 수 있습니다. Get table item API와 달리 Key는 직렬화 된 값이 필요하며 BSC 형식으로 값을 반환합니다.

Transactions

트랜잭션과 관련된 REST API 입니다.

  • Get transactions

    • On-chain에 commit된 트랜잭션을 반환합니다. 특정 트랜잭션이 필요한 경우, limit과 start를 이용하여 설정할 수 있으며 version이 pruned된 경우, 410에러가 반환됩니다. 만약 Pending 중인 트랜잭션을 조회하고 싶은 경우, /transaction/by_hash 를 이용하여 조회할 수 있습니다.
  • Submit transaction

    • 트랜잭션을 실행하기 위해 서명된 트랜잭션을 Submit 합니다. JSON/BCS 두 가지 종류의 format을 지원합니다.
  • Get transaction by hash

    • Transaction Hash를 이용해 특정 트랜잭션 데이터를 반환합니다. Hash가 주어지면 서버에서는 Storage(on-chain, committed)에서 트랜잭션을 우선 조회하며 on-chain에서 발견되지 않으면 mempool에서 조회합니다.
  • Get transaction by version

    • 트랜잭션의 버전을 이용하여 특정 트랜잭션을 식별해 반환합니다.
  • Get account transactions

    • on-chain에 committed 된 트랜잭션 중 특정 Account로 부터 생성된 트랜잭션을 반환합니다.
  • Submit batch transactions

    • 여러 개의 트랜잭션을 모아 submit 합니다. 모든 트랜잭션이 성공할 경우, 202 코드가 반환되며 일부 실패한 트랜잭션이 있거나 모든 트랜잭션이 실패했을 경우에는 실패한 트랜잭션과 206 코드가 반환됩니다.
  • Simulate transaction

    • 트랜잭션을 실제로 실행하기 전, 시뮬레이션할 수 있습니다. 이를 이용하여 실행될 트랜잭션의 최대 가스 사용량을 추정할 수 있습니다.
  • Encode submission

    • JSON format으로 인코딩된 트랜잭션을 BCS format으로 인코딩된 트랜잭션으로 변환하여 반환합니다. 이를 이용하여 유저는 BCS에 대한 라이브러리 지원이 없는 언어에서도 API를 이용해 트랜잭션 요청을 Submit할 수 있습니다.
  • Estimate gas price

    • 트랜잭션을 수행하는데 필요한 Gas의 가격 단가를 추정하여 반환합니다.

View

Function을 실행하고 결과를 반환받을 수 있는 REST API 입니다.

  • Execute view function of a module
    • 주어진 parameter를 이용하여 function을 실행하고 실행 결과를 반환합니다.