Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.generalmarket.io/llms.txt

Use this file to discover all available pages before exploring further.

Deployed Contract Addresses

The addresses. Where the contracts live on-chain. Verify them before sending money — trust is a luxury smart contract users cannot afford. Vision contracts are deployed on the Index L3 Arbitrum Orbit chain (chain ID 111222333).
┌─────────────────────────────────────────────────┐
│              INDEX L3 (Chain 111222333)          │
│                                                 │
│  ┌───────────────────────────────────────────┐  │
│  │              Vision Contract              │  │
│  │  0x4F1BDD073932828bf2822F6dCAD1121Da41ED1Ef│  │
│  │                                           │  │
│  │  ┌─────────┐ ┌──────────┐ ┌────────────┐ │  │
│  │  │ Batches │ │ Players  │ │ Bot Reg.   │ │  │
│  │  └─────────┘ └──────────┘ └────────────┘ │  │
│  └───────────────────────────────────────────┘  │
│                      │                          │
│              ┌───────┴───────┐                  │
│              │               │                  │
│  ┌───────────────┐  ┌────────────────────────┐  │
│  │  L3 WUSDC     │  │  OracleRegistry        │  │
│  │  (18 decimals)│  │  (BLS verification)    │  │
│  └───────────────┘  └────────────────────────┘  │
└─────────────────────────────────────────────────┘
Contract addresses are loaded from deployments/vision-deployment.json and may differ between environments (testnet, staging, production). Always verify addresses against the deployment file before interacting with contracts directly.

Network Information

PropertyValue
Chain NameIndex L3 (Arbitrum Orbit)
Chain ID111222333
RPC Endpointhttps://rpc.generalmarket.io/
Collateral TokenWUSDC (18 decimals on L3)
ConsensusBLS oracle consensus

Deployed Contracts

ContractAddressDescription
Vision0x4F1BDD073932828bf2822F6dCAD1121Da41ED1EfMain entry point for batch management, player operations, bot registry, and fee collection.
Deployer0xC0d3ca67da45613e7C5b2d55F09b00B3c99721f4The address that deployed the Vision contract.

Key Contract Parameters

These constants are set at deployment and cannot be changed:
ParameterValueDescription
PROTOCOL_FEE_BPS5 (0.05%)Fee charged on player profits
MIN_STAKE_PER_TICK100,000 (0.1 USDC)Minimum stake per tick to join a batch
BPS_DENOMINATOR10,000Basis point denominator
MAX_TICK_DURATION30 daysMaximum allowed tick duration when creating a batch
MAX_NAME_LENGTH64 bytesMaximum batch name length
MAX_DESCRIPTION_LENGTH280 bytesMaximum batch description length
MAX_URL_LENGTH128 bytesMaximum website URL length
MAX_VIDEO_URL_LENGTH256 bytesMaximum video URL length
MAX_IMAGE_URL_LENGTH256 bytesMaximum image URL length
MAX_DEPLOYER_NAME_LENGTH64 bytesMaximum deployer name length

USDC on Index L3

Vision uses WUSDC with 18 decimal places on the Index L3 chain. All amounts in the contract (deposits, stakes, balances, fees) are denominated in WUSDC’s 18-decimal format.
AmountRaw Value
0.1 USDC100000000000000000 (1e17)
1 USDC1000000000000000000 (1e18)
10 USDC10000000000000000000 (1e19)
100 USDC100000000000000000000 (1e20)
1,000 USDC1000000000000000000000 (1e21)

Retrieving Addresses

From the Deployment File

The canonical source of truth for deployed addresses is the deployment JSON:
cat deployments/vision-deployment.json
{
  "chainId": 111222333,
  "deployer": "0xC0d3ca67da45613e7C5b2d55F09b00B3c99721f4",
  "contracts": {
    "Vision": "0x4F1BDD073932828bf2822F6dCAD1121Da41ED1Ef"
  }
}

In the Frontend

The frontend imports the Vision address from the deployment module:
import deployment from "@/lib/contracts/deployment.json";

const visionAddress = deployment.contracts.Vision;

In a Bot

When building a Vision bot, read the contract address from the deployment file or pass it as a configuration parameter:
import json

with open("deployments/vision-deployment.json") as f:
    deployment = json.load(f)

VISION_ADDRESS = deployment["contracts"]["Vision"]
CHAIN_ID = deployment["chainId"]

Adding the Network to a Wallet

To interact with Vision contracts from a wallet like MetaMask:
  1. Open your wallet’s network settings.
  2. Add a custom network with the following details:
    • Network Name: Index L3
    • RPC URL: https://rpc.generalmarket.io/
    • Chain ID: 111222333
    • Currency Symbol: ETH

Immutable Contract References

The Vision contract holds two immutable references set at deployment:
ReferenceDescription
USDCThe IERC20 token used for all deposits, stakes, and payouts.
oracleRegistryThe OracleRegistry contract that stores BLS public keys for signature verification.
feeCollectorThe address authorized to call collectFees() and withdraw accumulated protocol fees.
These values are set in the constructor and cannot be changed after deployment:
constructor(address _usdc, address _oracleRegistry, address _feeCollector) {
    USDC = IERC20(_usdc);
    oracleRegistry = _oracleRegistry;
    feeCollector = _feeCollector;
}