Design

루니버스의 멀티체인 Web3 API는 공통 인터페이스를 통해 멀티체인 환경을 지원하도록 설계된 추상화된 블록체인 API입니다. 한번의 REST API 연동으로 이더리움 등 주요 Public 메인넷과 루니버스 메인넷, 사이드 체인을 모두 활용한 멀티체인 DApp 개발이 가능합니다. 지금 사용해보세요! 계정, 블록, 트랜잭션, 이벤트, 자산과 같이 블록체인 개발에서 다루어야 하는 다양한 도메인 데이터에 쉽고 빠르게 접근할 수 있습니다.

Chain Agnostic Interface


Chain Agnostic API란?

Chain Agnostic API란, 특정 블록체인 네트워크를 위한 개별 인터페이스가 아닌 다수의 블록체인 네트워크에 공통적으로 사용 가능한 API를 의미합니다. 이를 통해 개발자는 각각 별도의 코드를 작성하지 않고도, 서로 다른 여러 블록체인 네트워크에 배포할 수 있는 분산형 어플리케이션을 보다 쉽게 구축할 수 있습니다.


최소한으로 구현하고, 빠르게 확장하세요.

Luniverse Multichain Web3 API는 Chain Agnostic API로 설계되었습니다. 분산형 어플리케이션 개발을 계획하고 계신가요? 특정 블록체인 프로토콜 또는 네트워크에 종속적인 구현은 어플리케이션의 확장성과 재사용성을 저해하는 요인입니다. 빠르게 변화하는 블록체인 시장에서, 환경의 변화에 유연하게 대응하고 확장하세요. 추상화된 인터페이스를 활용하면, 최소한의 구현으로 쉽게 여러 블록체인 네트워크를 지원할 수 있습니다.


블록체인의 한계를 뛰어 넘으세요.

한명의 개발자가 모든 블록체인 네트워크의 전문가가 되기는 어렵습니다. 각 네트워크에서 사용되는 도메인 용어와 개념을 정확하게 이해하고, 체계적으로 데이터를 다루기 위해서는 많은 노력이 필요합니다. 자산을 추적하고 어플리케이션의 효과를 측정하기 위한 데이터들은 어떻게 얻을 수 있을까요? 서로 다른 네트워크 환경의 Finality와 Locality를 고려하면서, 실시간으로 쌓이는 수많은 Public 네트워크 데이터들의 실시간 검색, 정렬, 집계를 위한 데이터 파이프라인을 구축해야 합니다. 비싸고, 오래걸리는 파이프라인 구축 대신, 루니버스 API들을 활용하여 쉽고 빠르게 블록체인 데이터들을 활용해보세요. 쉽고 저렴한 실시간 어플리케이션 운용이 가능합니다.


API Design

1. Path

루니버스 Multichain Web3 API의 Path는 공통적으로 아래와 같이 구성됩니다.

/{version}/{protocol}/{network}/{API resource}
  • version: API의 버전을 명시합니다. (예시) v1
  • protocol: 호출 대상 블록체인 환경의 프로토콜을 명시합니다. 지원하는 체인 환경 및 사용 가능한 프로토콜 값은 Supported Chains 페이지를 참조하세요.
  • network: 호출 대상 블록체인 환경의 네트워크를 명시합니다. 지원하는 체인 환경 및 사용 가능한 네트워크 값은 Supported Chains 페이지를 참조하세요.
  • resource: 각 API의 리소스가 정의되는 파트로, 계층 구조로 구성됩니다.

2. Listing & Paging

API의 응답이 목록 형식의 데이터를 포함하는 경우 아래와 같이 countitems항목을 활용하여 목록의 크기와 데이터를 구분하여 정의합니다. 또한 대부분의 목록 응답에 대해서는 Paging을 위한 Query Parameter 사용을 지원합니다. 자세한 파라미터 사용법에 대해서는 아래 테이블을 참고하세요.

PropertyTypeDescriptionExample Value
countInteger전체 아이템의 개수.20
itemsarray:object응답 객체의 배열(목록).
pageInteger목록 Pagination을 위한 페이지 번호. 특정 페이지부터의 결과 조회를 위한 Query Parameter로 지원되며, 1 이상의 정수형 타입을 지원합니다. 지원하지 않는 형식이 입력되는 경우 무시합니다. 기본값은 1입니다.1
rppInteger목록 Pagination 시 Page당 조회할 결과 아이템의 수. 1 이상 100 미만의 정수형 타입을 지원합니다. 기본값은 20입니다.10

3. Authorization

API 명세의 우측 예시 필수 헤더에 Authorization 헤더가 포함된 경우, 인증이 필요한 API입니다. JWT 인증 토큰을 활용한 Bearer 인증 방식을 사용합니다. 다음은 인증 방법에 대한 안내입니다.

How to Authorize API with API Key

  1. 루니버스 콘솔 내 Environment 상세 화면의 API Key 탭에서 API 호출을 위한 API Key를 생성하세요.
  2. Auth API 호출 시 1에서 발급받은 API Key값을 입력하여 인증 토큰을 발급하세요.
  3. Authorization 헤더 값으로 'Bearer {JWT Token}'을 입력합니다. 발급받은 인증 토큰의 값이 TEMP_AUTH_TOKEN 문자열인 경우, API 호출 예시는 아래와 같습니다. (실제 인증 토큰은 JWT토큰 형식, 즉 더우 길고 .로 구분된 문자열 형식입니다.)
curl --location --request GET 'https://{endpoint}//{version}/{protocol}/{network}/{API resource}' \
--header 'Authorization: Bearer TEMP_AUTH_TOKEN' \
--header 'Content-Type: application/json'

4. Response Format

모든 Multichain Web3 API의 응답은 정상 응답 여부와 상관 없이 code 필드를 포함합니다. 전체 응답 코드에 대한 명세는 Error Reference 페이지를 참조하세요.

KeyValue Description
code요청 처리의 결과 코드.

정상 응답(HTTP 상태코드가 2XX인 경우)의 경우 응답 Body 내부에 data 필드를 포함하며, 해당 필드 내부에 실제 응답 객체가 도메인 응답의 형태로 반환됩니다.

KeyValue Description
data요청에 대한 결과 응답 data 객체.

정상 응답이 아닌 경우, message필드가 code필드와 함께 응답 내에 포함됩니다. 발생한 오류에 대한 설명을 포함합니다.

KeyValue Description
message오류에 대한 설명 메세지.

성공과 실패 각 케이스에 대한 응답 예시는 다음과 같습니다.

// Successful response with 2XX http status code
{
   "code":"SUCCESS",
   "data":{ --requested domain response will be included here-- }
}

// Error response
{
   "code":"RESOURCE_NOT_FOUND",
   "message":"Requested resource does not exist."
}