INNER CODE UNIT · Rust

decode_contract_err

risc0/risc0-ethereum · contracts/src/lib.rs:121

fn decode_contract_err<T: SolInterface>(err: alloy::contract::Error) -> Result<T, Error> {
    match err {
        alloy::contract::Error::TransportError(TransportError::ErrorResp(ts_err)) => {
            let Some(data) = ts_err.data else {
                return Err(
                    DecodingError::MissingData(ts_err.code, ts_err.message.to_string()).into(),
                );
            };

            let data = data.get().trim_matches('"');

            let Ok(data) = Bytes::from_str(data) else {
                return Err(DecodingError::BytesFromStrError.into());
            };

            let decoded_error = match T::abi_decode(&data) {
                Ok(res) => res,
                Err(err) => {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…