lambdaclass / stark_compass_explorer

Stark Compass: the only open source explorer
https://starkcompass.com
Apache License 2.0
68 stars 23 forks source link

Get transaction details return `Internal Server Error` #338

Open zhouqiang-cl opened 12 months ago

zhouqiang-cl commented 12 months ago

Hi, I am trying to use stark_compass_explorer with madara, it works well for blocks, but seems transaction details always return Internal Server Error

and the log from stark_compass_explorer like this

Request: GET /transactions/0x5f4262ae7da49508c395bb2afd9ebca6d2bbf64f43ee5d083cfd5f9fd7432c4
** (exit) an exception was raised:
    ** (FunctionClauseError) no function clause matching in List.foldl/3
        (elixir 1.15.4) lib/list.ex:248: List.foldl(nil, {%{}, %{}}, #Function<4.24610739/2 in StarknetExplorer.Calldata.functions_by_selector_and_version/2>)
        (starknet_explorer 0.1.0) lib/starknet_explorer/calldata.ex:243: StarknetExplorer.Calldata.process_class_data/3
        (starknet_explorer 0.1.0) lib/starknet_explorer/calldata.ex:231: StarknetExplorer.Calldata.get_functions_data/3
        (starknet_explorer 0.1.0) lib/starknet_explorer/calldata.ex:24: anonymous fn/3 in StarknetExplorer.Calldata.parse_calldata/3
        (elixir 1.15.4) lib/enum.ex:1693: Enum."-map/2-lists^map/1-1-"/2
        (starknet_explorer 0.1.0) lib/starknet_explorer/data.ex:156: StarknetExplorer.Data.full_transaction/2
        (starknet_explorer 0.1.0) lib/starknet_explorer_web/live/transaction_live.ex:702: StarknetExplorerWeb.TransactionLive.mount/3
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/utils.ex:394: anonymous fn/6 in Phoenix.LiveView.Utils.maybe_call_live_view_mount!/5
9oelM commented 11 months ago

This is possibly because the feeder gateway is being used for some parts of the explorer application. If you are using a local blockchain network, it wouldn't work because feeder gateway is only available for the real starknet testnet and mainnet.

There's no solution to this problem other than waiting for JSON RPC v0.5.0 spec to be implemented by underlying frameworks, which will get rid of the need for the feeder gateway.

Meanwhile, you can disable the feeder gateway by using export ENABLE_GATEWAY_DATA=false in the env file. This might get rid of the errors being thrown (while the transaction page on the explorer will still struggle to show some info)