ABI-구조체 매핑
EVM 입력 데이터를 Go 구조체로 변환
ABI-구조체 매핑은 마루(Maroo) 프리컴파일에서 원시 또는 일반 EVM 입력 인자를 강력한 타입의 Go 구조체로 변환하는 데 사용되는 기술입니다. 이는 입력 인자를 JSON으로 마샬링한 다음 대상 구조체로 언마샬링하는 방식으로 이루어지며, Go의 json 구조체 태그를 활용하여 필드 이름을 매핑합니다.
왜 JSON을 중간 매체로 사용하는가?
ABI 언패커(unpacker)의
[]interface{}를 특정 구조체로 직접 매핑하는 것은 불안정할 수 있으며 모든 필드에 대해 수동 타입 단언(type assertion)이 필요합니다. JSON을 중간 계층으로 사용하면 개발자가 표준 구조체 태그(json:"fieldName")를 사용하여 매핑을 선언적으로 정의할 수 있어 상용구 코드를 줄일 수 있습니다.성능 고려사항
편리하긴 하지만, 이러한 이중 직렬화(Marshal -> Unmarshal)는 CPU 비용을 발생시킵니다. 빈도가 매우 높은 프리컴파일(기초 수학 연산 등)의 경우 수동 타입 단언이 선호됩니다. 그러나 복잡한 비즈니스 로직(PCL 또는 Identity 등)의 경우, 로직 실행 시간에 비해 오버헤드는 무시할 수 있는 수준입니다.