애플리케이션 레이어

지갑

지갑은 노드 클라이언트가 제공하는 기본적인 애플리케이션입니다.

스마트 계약 컴파일러

일반적인 블록체인 SDK는 스마트 계약 작성을 위한 컴파일러를 제공하며 이를 활용해 고수준의 언어로 작성된 스마트 계약을 가상머신이 이해할 수 있는 기계어/바이트코드로 변경할 수 있습니다.

RPC(Remote Procedure Call)

RPC는 노드가 아닌 외부에서 블록체인의 정보를 가져오거나 블록체인에 트랜잭션을 추가할 수 있는 등의 기능을 제공하는 API입니다. RPC가 있기 때문에 DApp을 손쉽게 제작할 수 있습니다.

웹소켓

웹소켓은 RPC와 유사하지만 정보를 일회성으로 가져오는 것이 아닌, 장시간에 걸쳐 양방향의 메시지를 전송할 때 사용합니다. 실시간으로 블록체인의 내용 변경을 모니터링할 때 사용합니다.

자바스크립트 라이브러리

많은 블록체인 프로젝트는 RPC를 조금 더 쉽게 사용할 수 있도록 자바스크립트 라이브러리를 제공합니다. 자바스크립트는 웹 브라우저에서 구동되는 언어이기 때문에 크로스 플랫폼 대응이 가능합니다.

애플리케이션 생태계

탈중앙화 스토리지

블록체인에서 제공하는 스마트 계약은 크기가 큰 데이터를 저장하기에는 많은 요금이 부과된다는 단점이 있습니다. 이러한 단점을 극복하기 위해 IPFS, Swarm과 같은 탈중앙화 스토리지에 데이터를 저장하고 스마트 계약에서 이를 참조할 수 있습니다.

탈중앙화 메시징

블록체인은 채팅 등 실시간 애플리케이션에는 적합하지 않습니다. 이런 한계를 극복하고자 나온 것이 Bitmessage나 Whipser와 같은 탈중앙화 메시징 프로토콜입니다.