관리 메뉴

HAMA 블로그

RLP 인코딩 / 디코딩 썰~ 본문

블록체인

RLP 인코딩 / 디코딩 썰~

[하마] 이승현 (wowlsh93@gmail.com) 2019. 2. 23. 20:35

오해하기 쉬운게 RLP는 "문자열 (string)" 타입을 직렬화 하는 방식이 아니다. protobuf, BSON 등과는 다르게 타입정보가 내부에 존재하지 않는다. 단순히 바이트 어레이 or 중첩된 바이트 어레이를 저장하는 방식일 뿐이다. 즉 그 바이트 어레이를 string으로 변환하든 Integer로 변환하든 아무 상관하지 않는다. 따라서 바이트 어레이에 최소한의 공간을 이용해서 타입정보를 넣는 방식 (protocol buffer, avro, thrift  같은 것을 사용하거나 직접 직렬화를 구현시 첫번째 바이트로 'i', 's', 'm' 같은 타입정보를 추가을 사용 할 경우는 송신데이터의 타입구조가 변화 무쌍해도 수신자가 하나씩 확인해서 적절히 변환 하여 사용 할 수 있지만 RLP는 동일한 타입시스템을 갖는 양종단에서 서로 합의된 프로토콜에 의해 타입변환이 이루어져야 한다. RLP을 사용하는 이더리움은 이렇듯 최대한 단순한(분명한) 인코딩/디코딩 방식을 사용함으로써 직렬화시 발생할 수 있는 문제를 최소화 하려는 의도를 가진다. 


0 Comments
댓글쓰기 폼