Call endpoints are used to invoke arbitrary, network-specific procedure calls.

/call

Make a Network-Specific Procedure Call

Call invokes an arbitrary, network-specific procedure call with network-specific parameters. The guidance for what this endpoint should or could do is purposely left vague. In Ethereum, this could be used to invoke eth_call to implement an entire Rosetta API interface for some smart contract that is not parsed by the implementation creator (like a DEX). This endpoint could also be used to provide access to data that does not map to any Rosetta models instead of requiring an integrator to use some network-specific SDK and call some network-specific endpoint (like surfacing staking parameters). Call is NOT a replacement for implementing Rosetta API endpoints or mapping network-specific data to Rosetta models. Rather, it enables developers to build additional Rosetta API interfaces for things they care about without introducing complexity into a base-level Rosetta implementation. Simply put, imagine that the average integrator will use layered Rosetta API implementations that each surfaces unique data.

Request

Schema

{
    "network_identifier": {
        "blockchain": "bitcoin",
        "network": "mainnet",
        "sub_network_identifier": {
            "network": "shard 1",
            "metadata": {
                "producer": "0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5"
            }
        }
    },
    "method": "eth_call",
    "parameters": {
        "block_number": 23,
        "address": "0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5"
    }
}

Response

200 - OK

Schema

{
    "result": {
        "count": 1000
    },
    "idempotent": true
}

500 - Error

Schema

{
    "code": 12,
    "message": "Invalid account format",
    "description": "This error is returned when the requested AccountIdentifier is improperly formatted.",
    "retriable": true,
    "details": {
        "address": "0x1dcc4de8dec75d7aab85b567b6",
        "error": "not base64"
    }
}