Skip to content

EvmRpcClient::send_raw_transaction panics on a successful transactionΒ #516

@ranile

Description

@ranile
    let rpc_services = RpcServices::EthSepolia(Some(vec![EthSepoliaService::PublicNode]));
    let evm_rpc_client = EvmRpcClient::builder_for_ic()
        .with_rpc_sources(rpc_services)
        .build();

    let tx_hash = evm_rpc_client.send_raw_transaction(...).send().await
        .expect_consistent()
        .expect("failed to send transaction");

The transaction being sent here is calling mint function of an ERC20 token.

Panic stack trace

Error: Failed update call.
Caused by: The replica returned a rejection error: reject code CanisterError, reject message Error from Canister uxrrr-q7777-77774-qaaaq-cai: Canister called `ic0.trap` with message: 'Panicked at 'Not a valid visitor: TypeId { id: 176, name: "serde_core::de::impls::OptionVisitor<evm_rpc_types::Hex32>" }', /Users/elina/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/candid-0.10.17/src/de.rs:599:17'
Canister Backtrace:
ic0::trap
ic_cdk_executor::set_panic_hook::{{closure}}::{{closure}}
std::panicking::rust_panic_with_hook
std::panicking::begin_panic_handler::{{closure}}
std::sys::backtrace::__rust_end_short_backtrace
__rustc::rust_begin_unwind
core::panicking::panic_fmt
candid::de::Deserializer::recoverable_visit_some
<&mut candid::de::Deserializer as serde_core::de::Deserializer>::deserialize_option
serde_core::de::impls::<impl serde_core::de::Deserialize for core::option::Option<T>>::deserialize
<core::marker::PhantomData<T> as serde_core::de::DeserializeSeed>::deserialize
<candid::de::Compound as serde_core::de::VariantAccess>::newtype_variant_seed
serde_core::de::VariantAccess::newtype_variant
<evm_rpc_types::response::_::<impl serde_core::de::Deserialize for evm_rpc_types::response::SendRawTransactionStatus>::deserialize::__Visitor as serde_core::de::Visitor>::visit_enum
<&mut candid::de::Deserializer as serde_core::de::Deserializer>::deserialize_enum
evm_rpc_types::response::_::<impl serde_core::de::Deserialize for evm_rpc_types::response::SendRawTransactionStatus>::deserialize
<core::marker::PhantomData<T> as serde_core::de::DeserializeSeed>::deserialize
<candid::de::Compound as serde_core::de::VariantAccess>::newtype_variant_seed
serde_core::de::VariantAccess::newtype_variant
<serde_core::de::impls::<impl serde_core::de::Deserialize for core::result::Result<T,E>>::deserialize::ResultVisitor<T,E> as serde_core::de::Visitor>::visit_enum
<&mut candid::de::Deserializer as serde_core::de::Deserializer>::deserialize_enum
serde_core::de::impls::<impl serde_core::de::Deserialize for core::result::Result<T,E>>::deserialize
<core::marker::PhantomData<T> as serde_core::de::DeserializeSeed>::deserialize
<candid::de::Compound as serde_core::de::VariantAccess>::newtype_variant_seed
serde_core::de::VariantAccess::newtype_variant
<evm_rpc_types::result::_::<impl serde_core::de::Deserialize for evm_rpc_types::result::MultiRpcResult<T>>::deserialize::__Visitor<T> as serde_core::de::Visitor>::visit_enum
<&mut candid::de::Deserializer as serde_core::de::Deserializer>::deserialize_enum
evm_rpc_types::result::_::<impl serde_core::de::Deserialize for evm_rpc_types::result::MultiRpcResult<T>>::deserialize
candid::de::IDLDeserialize::deserialize_with_type
candid::de::IDLDeserialize::get_value
<(A,) as candid::utils::ArgumentDecoder>::decode
candid::utils::decode_args
candid::utils::decode_one
ic_cdk::call::Response::candid
<evm_rpc_client::runtime::IcRuntime as evm_rpc_client::runtime::Runtime>::update_call::{{closure}}::{{closure}}
core::result::Result<T,E>::and_then
<evm_rpc_client::runtime::IcRuntime as evm_rpc_client::runtime::Runtime>::update_call::{{closure}}
<core::pin::Pin<P> as core::future::future::Future>::poll
evm_rpc_client::EvmRpcClient<Runtime,Converter,RetryPolicy>::try_execute_request_once::{{closure}}
evm_rpc_client::EvmRpcClient<Runtime,Converter,RetryPolicy>::try_execute_request::{{closure}}
evm_rpc_client::EvmRpcClient<Runtime,Converter,RetryPolicy>::execute_request::{{closure}}
evm_rpc_client::request::RequestBuilder<R,Converter,RetryPolicy,Config,Params,CandidOutput,Output>::send::{{closure}}
backend::eth::mint_tokens::{{closure}}
backend::send_transaction::{{closure}}
backend::__canister_method_build_mint_transaction::{{closure}}::{{closure}}
ic_cdk_executor::poll_all
ic_cdk_executor::in_callback_executor_context
ic_cdk::call::callback

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions