eth_coinbase - zkSync RPC Method
Check the legacy eth_coinbase compatibility method on zkSync Era. Public endpoints may return an address, `unimplemented`, or another unsupported-method response depending on the client.
Checks the legacy eth_coinbase compatibility method on zkSync Era. Public endpoints may return an address, unimplemented, or another unsupported-method response depending on the client behind the endpoint.
Why zkSync? Build on Matter Labs' flagship zkEVM powering the Elastic Network of interoperable hyperchains with ZK Stack modular framework, hyperchain interoperability, native account abstraction, and $1.9B in tokenized real-world assets.
Note: Treat
eth_coinbaseas a legacy compatibility probe. On shared infrastructure, this method may returnunimplementedor another unsupported-method error, so it is not a dependable production signal.
When to Use This Method
eth_coinbase is relevant for ZK developers, RWA tokenization teams, and builders launching custom L2/L3 chains when you need to:
- Check client compatibility — Confirm whether the connected client still exposes
eth_coinbase - Audit migration assumptions — Remove Ethereum-era assumptions that every endpoint reports an etherbase address
- Harden integrations — Fall back to supported identity or chain-status methods when
eth_coinbaseis unavailable
Code Examples
Common Use Cases
1. Validator Configuration Verification
Verify that a node's coinbase matches the expected reward address:
async function verifyCoinbase(provider, expectedAddress) {
try {
const coinbase = await provider.send('eth_coinbase', []);
if (coinbase.toLowerCase() === expectedAddress.toLowerCase()) {
console.log('Coinbase address verified');
return true;
} else {
console.warn(`Coinbase mismatch: expected ${expectedAddress}, got ${coinbase}`);
return false;
}
} catch {
console.error('Could not retrieve coinbase — may not be configured');
return false;
}
}2. Block Producer Identification
Identify the coinbase address alongside block production details:
async function getProducerInfo(provider) {
const [coinbase, mining, hashrate] = await Promise.allSettled([
provider.send('eth_coinbase', []),
provider.send('eth_mining', []),
provider.send('eth_hashrate', [])
]);
return {
coinbase: coinbase.status === 'fulfilled' ? coinbase.value : 'not configured',
isMining: mining.status === 'fulfilled' ? mining.value : false,
hashrate: hashrate.status === 'fulfilled' ? parseInt(hashrate.value, 16) : 0
};
}3. Multi-Node Coinbase Audit
Audit coinbase addresses across a fleet of zkSync nodes:
async function auditCoinbases(endpoints) {
const results = await Promise.all(
endpoints.map(async (endpoint) => {
const provider = new JsonRpcProvider(endpoint);
try {
const coinbase = await provider.send('eth_coinbase', []);
return { endpoint, coinbase, configured: true };
} catch {
return { endpoint, coinbase: null, configured: false };
}
})
);
const unique = new Set(results.filter(r => r.configured).map(r => r.coinbase));
console.log(`Found ${unique.size} unique coinbase address(es) across ${endpoints.length} nodes`);
return results;
}Error Handling
Common errors and solutions:
| Error Code | Description | Solution |
|---|---|---|
| -32000 | Etherbase must be explicitly specified | Node has no coinbase configured — set via client CLI flag |
| -32601 | Method not found | Node client may not support this method |
| -32603 | Internal error | Node may be initializing — retry after delay |
| -32005 | Rate limit exceeded | Reduce request frequency |
Related Methods
eth_mining— Check if the node is actively miningeth_hashrate— Get the mining hash rateeth_accounts— List all accounts managed by the node
eth_hashrate
Get the legacy eth_hashrate compatibility value on zkSync Era. Public endpoints may return `0x0` or an unsupported-method error depending on the client.
Zora - Creator Economy & NFT L2 Documentation
Complete guide to Zora L2 integration with Dwellir RPC. Build NFT marketplaces, creator tools, and onchain media platforms on Zora's OP Stack L2.