Documentation

Python SDK

Python helpers for Mosaic transaction dicts and metadata verification.

mosaic-sdk exports MosaicClient and metadata helpers.

Import

from mosaic_sdk import MosaicClient, canonical_metadata_hash, load_metadata

Configure

client = MosaicClient(
    rpc_url="https://mainnet.base.org",
    contract_address="0x0c7fad7C9bBaD0BE62aAc867c6069d7Aad7Cb361",
)

Defaults:

FieldValue
chain_id8453
usdc_address0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

MosaicClient rejects non-Base chain_id values and non-Base-USDC usdc_address values.

Build Bounty Transaction

metadata = {
    "version": 1,
    "title": "Find a reproducible bug",
    "brief": "Submit a minimal reproduction and a fix suggestion.",
}

tx = client.create_bounty(
    metadata_uri="ar://bounty-json",
    metadata_hash=canonical_metadata_hash(metadata),
    reward_amount=50_000_000,
    duration=86_400,
)

Returned transaction dict:

{
    "chainId": 8453,
    "to": "0x...",
    "data": "0x...",
    "value": 0,
}

Transaction Helpers

MethodContract Call
approve_usdc(amount)USDC approve(contractAddress, amount)
create_bounty(metadata_uri, metadata_hash, reward_amount, duration)createBounty(string,bytes32,uint256,uint64)
submit(bounty_id, metadata_uri, metadata_hash)submit(uint256,string,bytes32)
dispute(submission_id, metadata_uri, metadata_hash)dispute(uint256,string,bytes32)
finalize(bounty_id)finalize(uint256)
advance_review_cursor(bounty_id)advanceReviewCursor(uint256)
refund_expired(bounty_id)refundExpired(uint256)
refund_submission_bond(submission_id)refundSubmissionBond(uint256)
cancel_resolved_dispute(challenge_id)cancelResolvedDispute(uint256)
withdraw()withdraw()
withdraw_to(recipient)withdrawTo(address)

Metadata Helpers

metadata = await load_metadata(
    "ar://bounty-json",
    expected_hash="0x1111111111111111111111111111111111111111111111111111111111111111",
)

canonical_metadata_hash(metadata) hashes sorted compact JSON with Keccak.

load_metadata(uri, expected_hash=None, gateway="https://arweave.net") fetches HTTP URLs directly. For ar:// URIs, it prefixes the configured gateway. When expected_hash is set, it raises ValueError("metadata hash mismatch") on mismatch.

Inputs

  • Amount arguments are integers in USDC base units.
  • Metadata hash arguments must encode to 32 bytes.

On this page