Query Mina GraphQL API
Learn how to query the Mina GraphQL API using DataHub
Last updated
Was this helpful?
Learn how to query the Mina GraphQL API using DataHub
Last updated
Was this helpful?
You don't need any tooling or clients to communicate with Mina GraphQL API. Simply head over to DataHub service page and grab your API token, then open up GraphQL UI:
Make sure to replace the API key in the link!
We can check out the node/network status by running the following query:
query status {
daemonStatus {
syncStatus
stateHash
numAccounts
chainId
commitId
catchupStatus
blockchainLength
}
}
You'll get an output like:
{
"data": {
"daemonStatus": {
"syncStatus": "SYNCED",
"stateHash": "3NKQhPYhJgxvzjrnGYfcYx4azdashoU4HKa5kSRoqVEh8i36o9mm",
"numAccounts": 1954,
"chainId": "5f704cc0c82e0ed70e873f0893d7e06f148524e3f0bdae2afb02e7819a0c24d1",
"commitId": "a8893ab6dd8a68171e7b99a5dc6b76940411350b",
"catchupStatus": [
"to_build_breadcrumb",
"to_initial_validate",
"finished",
"to_verify",
"to_download",
"wait_for_parent"
],
"blockchainLength": 4778
}
}
}
Pull information about latest 10 blocks:
query blocks {
bestChain(maxLength: 10) {
stateHash
protocolState {
consensusState {
blockHeight
}
}
}
}
Example output:
{
"data": {
"bestChain": [
{
"stateHash": "3NKVcbeedJ6tHUb9GAD7hucwK8vfupnTfa9KNpZPWAdjy18aV8AS",
"protocolState": {
"consensusState": {
"blockHeight": "4770"
}
}
},
{
"stateHash": "3NLjoNzTnTWSB1G4E2Twf9tVhqPicn3K3UsQ8NJmUmFKvpVsU7fe",
"protocolState": {
"consensusState": {
"blockHeight": "4771"
}
}
},
{
"stateHash": "3NLRbB6KPZrQmvhe4GHobWscid7CEH5B5xv33rn4gJNkjasprPRm",
"protocolState": {
"consensusState": {
"blockHeight": "4772"
}
}
},
{
"stateHash": "3NK9drYacgJJKZLuyBkd5wFuBNmqAmTWRs6sNfuB8KfMsJqQAQtW",
"protocolState": {
"consensusState": {
"blockHeight": "4773"
}
}
},
{
"stateHash": "3NKSRCsANY2hi9d1mNm15CSGfP6gFwWezzQ4eKrrChaKc3qMv4hf",
"protocolState": {
"consensusState": {
"blockHeight": "4774"
}
}
},
{
"stateHash": "3NLVTRP2YpyiFZ1rE7vuD84myiEBwQHxDLrppW48VWGdz9maH9mb",
"protocolState": {
"consensusState": {
"blockHeight": "4775"
}
}
},
{
"stateHash": "3NK8z2vszqRFdnVCoefnZN1b8RQfmyAR5aAN8pqBM7Y7gqQSGbUb",
"protocolState": {
"consensusState": {
"blockHeight": "4776"
}
}
},
{
"stateHash": "3NL5bpevCpb9UihrXDV1x3urMnWVyUrsEYqoJJtRZogXd5oUQrZU",
"protocolState": {
"consensusState": {
"blockHeight": "4777"
}
}
},
{
"stateHash": "3NKQhPYhJgxvzjrnGYfcYx4azdashoU4HKa5kSRoqVEh8i36o9mm",
"protocolState": {
"consensusState": {
"blockHeight": "4778"
}
}
},
{
"stateHash": "3NKfgwKwq3qWFFMNcr6BcAzv1BkZip3m6ADtr9htfjD6WftD3TrS",
"protocolState": {
"consensusState": {
"blockHeight": "4779"
}
}
}
]
}
}
We can obtain the latest canonical block and it's information with:
query block {
bestChain(maxLength: 1) {
creator
stateHash
stateHashField
protocolState {
blockchainState {
date
snarkedLedgerHash
}
previousStateHash
consensusState {
blockHeight
blockchainLength
epoch
slot
totalCurrency
}
}
transactions {
userCommands {
amount
fee
from
hash
}
coinbase
}
}
}
Example output:
{
"data": {
"bestChain": [
{
"creator": "B62qjCuPisQjLW7YkB22BR9KieSmUZTyApftqxsAuB3U21r3vj1YnaG",
"stateHash": "3NKfgwKwq3qWFFMNcr6BcAzv1BkZip3m6ADtr9htfjD6WftD3TrS",
"stateHashField": "21538604359563529269247680765381984336006730725137316435164719777253393337427",
"protocolState": {
"blockchainState": {
"date": "1617151320000",
"snarkedLedgerHash": "jx1obrfdK5zczX6bKZ8YkezJRq1PENhCA6SYbTRCdvpgsaJbSEN"
},
"previousStateHash": "3NKQhPYhJgxvzjrnGYfcYx4azdashoU4HKa5kSRoqVEh8i36o9mm",
"consensusState": {
"blockHeight": "4779",
"blockchainLength": "4779",
"epoch": "0",
"slot": "6734",
"totalCurrency": "808566652840039233"
}
},
"transactions": {
"userCommands": [
{
"amount": "1000",
"fee": "10000000",
"from": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
"hash": "CkpYREaq17zXtxxnLJBdnfVQ2BqjMTp3aE7CgxLk2yGwWi1WkjM7w"
},
{
"amount": "1000",
"fee": "10000000",
"from": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
"hash": "CkpZKJXFdeTk6UN8EaML5CAo9KPkYWcgvtn8CGHkiYix94vqn8t8D"
},
{
"amount": "1000",
"fee": "10000000",
"from": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
"hash": "CkpaLPq63CJsjtPxqfdAZFR8E9DadJ2e57GjoEpt6aq3CSLot9MP7"
},
{
"amount": "1000",
"fee": "10000000",
"from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy",
"hash": "Ckpa8USvMbVNANow4NGeoSfeFKfGhb1TjJNYTAFCh9dYLyKwFJoRg"
},
{
"amount": "1000",
"fee": "10000000",
"from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy",
"hash": "CkpZGkGQcYC4X2a7VGT2oRZGph3KSoajxnUkRz6hiHJ8MHDfY23Am"
},
{
"amount": "1000",
"fee": "10000000",
"from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy",
"hash": "CkpYRm7RcwgR5ivEFLWaa1vJnzdUuh9VRmrTiG83wSsLS6EarjJ8z"
}
],
"coinbase": "720000000000"
}
}
]
}
}
See a list of pending snark jobs with:
query snarkPool {
snarkPool {
fee
prover
workIds
}
}
Example output:
{
"data": {
"snarkPool": [
{
"fee": "0",
"prover": "B62qpLeuZDL7PxNsCqsJwWFPAmnixi5ay8Kz9NcNGBQU8jK19VpJQaY",
"workIds": [
343409785,
151173040
]
}
]
}
}
We can get account balance with:
query accDetails {
account(publicKey: "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4") {
delegate
balance {
blockHeight
liquid
locked
stateHash
total
unknown
}
delegators {
publicKey
}
publicKey
stakingActive
votingFor
isDisabled
}
}
Example output:
{
"data": {
"account": {
"delegate": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
"balance": {
"blockHeight": "4779",
"liquid": "787133086000",
"locked": "0",
"stateHash": "3NKfgwKwq3qWFFMNcr6BcAzv1BkZip3m6ADtr9htfjD6WftD3TrS",
"total": "787133086000",
"unknown": "787133086000"
},
"delegators": [],
"publicKey": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
"stakingActive": false,
"votingFor": "3NK2tkzqqK5spR2sZ7tujjqPksL45M3UUrcA4WhCkeiPtnugyE2x",
"isDisabled": false
}
}
}