Skip to content

Explorer parser drops DApp Store call args (upgradable2 passthrough) #2047

@Maxnflaxl

Description

@Maxnflaxl

The explorer's /contract calls history for the DApp Store (mainnet CID e2d24b…2af41c) renders every kernel as method=Passthrough, args="". The contract sits behind upgradable2, and bvm/Shaders/Explorer/Parser.cpp#L725 calls OnMethod("Passthrough") and returns without writing params. Only the signer pubkey survives in the Keys column — not enough to attribute an add_dapp / update_dapp / delete_dapp call to a specific dapp.

Per-publisher activity is recoverable for indexers, per-dapp isn't: last_updated_at can be derived from the contract's stored m_Timestamp via view_dapps, but first_seen_at and version history can't, since the contract overwrites that timestamp on every update.

Three asks, in priority order

1. Move beam-dapps-store sources into core. Specifically the contract definition at shaders/dapps_store_contract.h and its dapps_store_contract.cpp companion. Putting them under bvm/Shaders/dapps_store/ alongside the other contracts unblocks 2 without core growing a cross-repo build dependency.

2. Add a typed DApp Store parser to HandleContractsWrapped in bvm/Shaders/Explorer/Parser.cpp. The header already defines every method's args: Method_3 AddPublisher / Method_4 UpdatePublisher (PublisherBase), Method_5 AddDApp / Method_6 UpdateDApp (Base + variable text — DAppId is the first 16 bytes), Method_7 DeleteDApp (just DAppId). With those decoded the explorer would surface method=AddDApp, params={ dapp_id, ipfs_id, version, … } per call.

3. Generic fallback: expose raw passthrough args from upgradable2. For any wrapped contract that doesn't have a typed parser — today's situation, and any future wrapped contract added before its parser ships — the passthrough branch could emit the raw args buffer as hex, same path explorer/adapter.cpp#L1142 already takes for fully unknown contracts. Roughly a one-line addition next to Parser.cpp#L725. Strict subset of what's already exposed elsewhere, and unblocks indexers immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions