IPrecompile은 모든 마루 프리컴파일(IOkrw, IPcl, IEas, IAgent, IPrivacy)이 상속하는 기본 Solidity 인터페이스입니다. 세 가지 계열의 커스텀 오류를 선언하며, 각 프리컴파일이 이 오류로 revert할 수 있습니다. 입력·인코딩 오류(InvalidAddress, InvalidAmount, InvalidNumberOfArgs, UnknownMethod, QueryFailed, MsgServerFailed, EventEmitFailed, ABISetupFailed, RequesterIsNotMsgSender, InvalidHeight, InvalidPubkey, InvalidPubkeySize, InvalidPageRequest), 표준 SDK 오류 매핑(SDKUnauthorized, SDKInsufficientFunds, SDKInvalidAddress, SDKInvalidCoins, SDKInvalidRequest, SDKInvalidType, SDKNotFound, UnmappedCosmosError), 트랜잭션 수준 거절 오류(InsufficientFee, NonceTooLow, NonceGap, IntrinsicGasTooLow, FloorDataGasTooLow, TipAboveFeeCap, FeeCapTooHigh, TipTooHigh, GasPriceTooLow, GasLimitExceeded, InvalidSender, ChainIdMismatch)입니다. 한 번만 선언되고 상속되므로, 이 오류들의 ABI 조각 하나가 모든 마루 프리컴파일에 대해 정상적으로 디코드됩니다.