Build
EVM-equivalent for almost all purposes
Solidity and Vyper contracts, Foundry, Hardhat, ethers and viem work as on Ethereum. This page covers configuration and the few differences that matter.
Foundry
[rpc_endpoints]
maya = "https://rpc.mayachain.io"
[etherscan]
maya = { key = "any", chain = 6292, url = "https://scan.mayachain.io/api/" }Deploy and verify with --verifier blockscout. MayaScan does not need an API key; any placeholder value works.
Hardhat
networks: {
maya: { url: "https://rpc.mayachain.io", chainId: 6292, accounts: [/* … */] },
},
etherscan: {
apiKey: { maya: "any" },
customChains: [{
network: "maya",
chainId: 6292,
urls: {
apiURL: "https://scan.mayachain.io/api",
browserURL: "https://scan.mayachain.io",
},
}],
}viem
import { defineChain } from 'viem';
export const mayaChain = defineChain({
id: 6292,
name: 'MAYA CHAIN',
nativeCurrency: { name: 'Maya 3G', symbol: 'M3G', decimals: 18 },
rpcUrls: { default: { http: ['https://rpc.mayachain.io'] } },
blockExplorers: { default: { name: 'MayaScan', url: 'https://scan.mayachain.io' } },
});Differences from Ethereum
- 01
Native currency
M3G. msg.value, address.balance and withdrawEth are all in M3G.
- 02
block.number
Estimate of the Ethereum block number. Use ArbSys(0x64).arbBlockNumber() for MAYA CHAIN.
- 03
block.timestamp
Set by the sequencer, within 24 hours before to 1 hour after real time. No fixed block time.
- 04
Priority fees
Not collected; ordering is first come, first served.
- 05
Gas
Includes the Ethereum data charge. Always estimate; never hard-code limits from Ethereum.
- 06
Contract size
Max contract size 48 KB; max init code 96 KB (twice Ethereum's long-standing limits).
Selected precompiles
Arbitrum system contracts live at fixed addresses on every Arbitrum chain, including MAYA CHAIN.
| Contract | Address | Use |
|---|---|---|
| ArbSys | 0x64 | Block number/hash, sendTxToL1, withdrawEth |
| ArbGasInfo | 0x6c | Gas prices, minimum base fee, L1 pricing |
| ArbOwnerPublic | 0x6b | Read chain owners and public settings |
| ArbRetryableTx | 0x6e | Inspect and redeem retryable tickets |
| NodeInterface | 0xC8 | RPC-only: gas estimates, batch lookups, withdrawal proofs |
Arbitrum SDK
The Arbitrum TypeScript SDK handles deposits, retryable tickets, withdrawals and proofs. MAYA CHAIN is not built in — register it with registerCustomArbitrumNetwork using the published ethBridge and tokenBridge addresses from mayachain.io (Contract addresses / Developer guide).
Full field lists and contract addresses for SDK registration live in the official developer documentation and on the Security page. Prefer the machine-readable config at maya-chain.json.
Cross-chain (CCIP)
Two routes exist conceptually: the canonical bridge to Ethereum, and Chainlink CCIP to other chains.
