Skip to content

Bug: ArkivModule.execute() sends ABI-encoded contract calls instead of raw Golem Base transactions on Braga testnet #19

@HavenCTO

Description

@HavenCTO

Summary

The ArkivModule.execute() method is fundamentally broken for the Braga testnet. It attempts to send ABI-encoded smart contract calls to 0x4400...0044 (EntityRegistry), where no contract exists. The Braga node expects raw Golem Base storage transactions to the system address 0x0000...61726b6976 ("arkiv").

Environment

  • arkiv-sdk version: 1.0.0b3.dev0
  • Network: Braga Testnet

Root Cause

The SDK's execute() method uses the contract.functions.execute(ops).transact() path, which results in:

  • To Address: 0x4400...0044 (No bytecode deployed on Braga)
  • Calldata: ABI-encoded execute(ops)
  • Result: Revert with "non-golembase transaction"

Proof of Concept / Expected Behavior

A manual transaction sending raw Golem Base encoding to 0x0000...61726b6976 succeeds:

  • To Address: 0x0000...61726b6976 (System-level handler)
  • Calldata: 47 bytes raw Golem Base encoding
  • Result: Success (21740 gas, EntityCreated event emitted)
  • Tx Hash: 0xc2ee...af37

Misleading Error

non_golem_base_transaction_error - The problem is the transaction format, not the SDK version.

Required Fix

ArkivModule.execute() needs to:

  1. Send transactions to 0x0000...61726b6976 instead of 0x4400...0044.
  2. Use raw Golem Base encoding instead of ABI encoding.

PLEASE ADVISE

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