바이트 코덱 (Byte Codec)

← 메인 | English →


API | 타입 규칙 | 예제 | RLP 비교


개요

Sigilaris 바이트 코덱은 블록체인 애플리케이션을 위해 설계된 deterministic 바이트 인코딩/디코딩 라이브러리입니다. Scala 데이터 구조를 트랜잭션 서명, 블록 해싱, 머클 트리 생성에 적합한 바이트열로 타입 안전하고 조합 가능하게 인코딩합니다.

왜 deterministic인가? 블록체인 시스템에서는 같은 데이터가 항상 같은 바이트열로 인코딩되어야 합니다. 이를 통해 서로 다른 노드와 플랫폼에서도 암호화 해시와 서명이 일관되게 유지됩니다.

주요 특징:

빠른 시작 (30초)

import org.sigilaris.core.codec.byte.*
import scodec.bits.ByteVector

// 간단한 인코딩과 디코딩
val value: Long = 42L
val bytes = ByteEncoder[Long].encode(value)
val decoded = ByteDecoder[Long].decode(bytes)
// 결과: Right(DecodeResult(42, ByteVector(empty)))

// 튜플도 자동으로 동작
val pair = (1L, 2L)
val pairBytes = ByteEncoder[(Long, Long)].encode(pair)
val decodedPair = ByteDecoder[(Long, Long)].decode(pairBytes)
// 결과: Right(DecodeResult((1,2), ByteVector(empty)))

이게 전부입니다! 코덱이 자동으로:

문서

핵심 개념

활용 사례

  1. 트랜잭션 서명: 개인키로 서명하기 전에 트랜잭션 데이터 인코딩
  2. 블록 해싱: 블록 헤더의 deterministic 바이트 표현 생성
  3. 머클 트리: 머클 증명 검증을 위한 일관된 해시 생성
  4. 네트워크 프로토콜: P2P 통신을 위한 메시지 직렬화

이 라이브러리가 하지 않는 것

이 라이브러리는 바이트 인코딩/디코딩에만 집중합니다. 완전한 블록체인 기능을 위해서는 다른 모듈과 조합하여 사용하세요.

타입 지원

코덱은 다음 타입에 대한 인스턴스를 제공합니다:

기본 타입:

숫자 타입:

컬렉션:

Product 타입:

커스텀 타입:

에러 처리

디코딩은 Either[String, (A, ByteVector)]를 반환합니다:

// 예제: 불충분한 데이터 디코딩
val incomplete = ByteVector(0x01)
val result = ByteDecoder[Long].decode(incomplete)
// 결과: Left("Insufficient bytes for BigNat data: needed 1, got 0")

성능 특성

다음 단계


← 메인 | English →