diff --git a/crates/rpc/rpc-builder/tests/it/http.rs b/crates/rpc/rpc-builder/tests/it/http.rs
index fd4a2b1db2..968280296b 100644
--- a/crates/rpc/rpc-builder/tests/it/http.rs
+++ b/crates/rpc/rpc-builder/tests/it/http.rs
@@ -342,9 +342,7 @@ where
.err()
.unwrap()
));
- assert!(is_unimplemented(
- OtterscanClient::get_contract_creator(client, address).await.err().unwrap()
- ));
+ assert!(OtterscanClient::get_contract_creator(client, address).await.unwrap().is_none());
}
#[tokio::test(flavor = "multi_thread")]
diff --git a/crates/rpc/rpc/src/otterscan.rs b/crates/rpc/rpc/src/otterscan.rs
index 7a445a7aa2..214315f8aa 100644
--- a/crates/rpc/rpc/src/otterscan.rs
+++ b/crates/rpc/rpc/src/otterscan.rs
@@ -4,15 +4,22 @@ use jsonrpsee::core::RpcResult;
use reth_primitives::{Address, BlockId, BlockNumberOrTag, TxHash, B256};
use reth_rpc_api::{EthApiServer, OtterscanServer};
use reth_rpc_eth_api::helpers::TraceExt;
+use reth_rpc_eth_types::EthApiError;
use reth_rpc_server_types::result::internal_rpc_err;
use reth_rpc_types::{
- trace::otterscan::{
- BlockDetails, ContractCreator, InternalOperation, OperationType, OtsBlockTransactions,
- OtsReceipt, OtsTransactionReceipt, TraceEntry, TransactionsWithReceipts,
+ trace::{
+ otterscan::{
+ BlockDetails, ContractCreator, InternalOperation, OperationType, OtsBlockTransactions,
+ OtsReceipt, OtsTransactionReceipt, TraceEntry, TransactionsWithReceipts,
+ },
+ parity::{Action, CreateAction, CreateOutput, TraceOutput},
},
BlockTransactions, Header, Transaction,
};
-use revm_inspectors::transfer::{TransferInspector, TransferKind};
+use revm_inspectors::{
+ tracing::TracingInspectorConfig,
+ transfer::{TransferInspector, TransferKind},
+};
use revm_primitives::ExecutionResult;
const API_LEVEL: u64 = 8;
@@ -208,7 +215,69 @@ where
}
/// Handler for `getContractCreator`
- async fn get_contract_creator(&self, _address: Address) -> RpcResult