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을 실행하고 실행 결과를 반환합니다.