Skip to content

Commit 0574136

Browse files
committed
Website: add GraphQL API completion and comparison with OCaml
1 parent 5ba8f5d commit 0574136

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

website/docs/developers/graphql-api.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,110 @@ Consider:
763763
- **Concurrent requests**: The API handles concurrent requests but intensive
764764
queries may affect node performance
765765

766+
## Implementation Status Comparison
767+
768+
This table tracks the implementation status of GraphQL endpoints in the Mina
769+
Rust node compared to the
770+
[OCaml node](https://github.com/MinaProtocol/mina/blob/compatible/src/lib/mina_graphql/mina_graphql.ml#L2813-L2855).
771+
For more details, see the tracking
772+
[issue #1039](https://github.com/o1-labs/mina-rust/issues/1039).
773+
774+
### Query Endpoints Status
775+
776+
| Endpoint | Description | Priority | Rust Status | Notes |
777+
| -------------------------------------------------------------------------------------- | ------------------------------------- | -------- | ------------------ | ------------------------------------ |
778+
| **Core Queries** | | | | |
779+
| [`daemonStatus`](#daemonstatus) | Get running daemon status | HIGH | ✅ Implemented | Full daemon status with network info |
780+
| [`account`](#accountpublickey-string-token-string) | Find account via public key and token | HIGH | ✅ Implemented | Account balance, nonce, delegate |
781+
| [`block`](#blockheight-int-statehash-string) | Retrieve block by hash or height | HIGH | ✅ Implemented | Full block with transactions |
782+
| [`pooledUserCommands`](#pooledusercommandspublickey-string-hashes-string-ids-string) | User commands in transaction pool | HIGH | ✅ Implemented | Payments and delegations |
783+
| [`pooledZkappCommands`](#pooledzkappcommandspublickey-string-hashes-string-ids-string) | zkApp commands in transaction pool | HIGH | ✅ Implemented | Smart contract transactions |
784+
| [`transactionStatus`](#transactionstatuspayment-string-zkapptransaction-string) | Get transaction status | HIGH | ✅ Implemented | PENDING, INCLUDED, or UNKNOWN |
785+
| [`networkID`](#networkid) | Chain-agnostic network identifier | HIGH | ✅ Implemented | Returns `mina:<network_name>` |
786+
| **Blockchain Info** | | | | |
787+
| [`syncStatus`](#syncstatus) | Network sync status | - | ✅ Implemented | Sync state tracking |
788+
| [`version`](#version) | Node version (git commit hash) | - | ✅ Implemented | Build information |
789+
| [`bestChain`](#bestchainmaxlength-int) | Blocks from root to best tip | - | ✅ Implemented | Ordered chain of blocks |
790+
| [`genesisBlock`](#genesisblock) | Get the genesis block | - | ✅ Implemented | Initial block data |
791+
| [`genesisConstants`](#genesisconstants) | Genesis configuration | - | ✅ Implemented | Network parameters |
792+
| **SNARK Pool** | | | | |
793+
| [`snarkPool`](#snarkpool) | Completed SNARK works | - | ✅ Implemented | Proofs with fees |
794+
| [`pendingSnarkWork`](#pendingsnarkwork) | SNARK work to be done | - | ✅ Implemented | Available work items |
795+
| [`currentSnarkWorker`](#currentsnarkworker) | Current SNARK worker info | - | ✅ Implemented | Worker configuration |
796+
| **Not Yet Implemented** | | | | |
797+
| `accounts` | All accounts for a public key | - | ❌ Not Implemented | Multiple account support |
798+
| `tokenAccounts` | All accounts for a token ID | - | ❌ Not Implemented | Token-specific queries |
799+
| `tokenOwner` | Account that owns a token | - | ❌ Not Implemented | Token ownership |
800+
| `trackedAccounts` | Accounts with tracked private keys | - | ❌ Not Implemented | Wallet management |
801+
| `getPeers` | Connected peers list | - | ⚠️ Partial | Only via daemonStatus |
802+
| `initialPeers` | Initial connection peers | - | ❌ Not Implemented | Bootstrap peers |
803+
| `trustStatus` | Trust status for IP | - | ❌ Not Implemented | Peer trust management |
804+
| `trustStatusAll` | All peers trust status | - | ❌ Not Implemented | Network trust state |
805+
| `validatePayment` | Validate payment format | - | ❌ Not Implemented | Transaction validation |
806+
| `runtimeConfig` | Runtime configuration | - | ❌ Not Implemented | Node configuration |
807+
| `fork_config` | Blockchain fork config | - | ❌ Not Implemented | Fork parameters |
808+
| `evaluateVrf` | Evaluate VRF for public key | - | ❌ Not Implemented | VRF operations |
809+
| `checkVrf` | Check VRF evaluation | - | ❌ Not Implemented | VRF verification |
810+
| `blockchainVerificationKey` | Protocol state proof key | - | ❌ Not Implemented | Verification keys |
811+
| `signatureKind` | Signature type in use | - | ❌ Not Implemented | Cryptography info |
812+
| `timeOffset` | Blockchain time offset | - | ❌ Not Implemented | Time synchronization |
813+
| `connectionGatingConfig` | Connection rules | - | ❌ Not Implemented | Network policies |
814+
| `threadGraph` | Internal thread graph | - | ❌ Not Implemented | Debugging tool |
815+
| `getFilteredLogEntries` | Structured log events | - | ❌ Not Implemented | Testing/debugging |
816+
817+
### Mutation Endpoints Status
818+
819+
| Endpoint | Description | Priority | Rust Status | Notes |
820+
| ----------------------------------- | ---------------------- | -------- | ------------------ | ----------------------- |
821+
| **Core Mutations** | | | | |
822+
| [`sendPayment`](#sendpayment) | Send a payment | HIGH | ✅ Implemented | Full payment submission |
823+
| [`sendDelegation`](#senddelegation) | Change delegation | HIGH | ✅ Implemented | Stake delegation |
824+
| [`sendZkapp`](#sendzkapp) | Send zkApp transaction | HIGH | ✅ Implemented | Smart contracts |
825+
| **Not Yet Implemented** | | | | |
826+
| `createAccount` | Create new account | - | ❌ Not Implemented | Account creation |
827+
| `createHDAccount` | Create HD account | - | ❌ Not Implemented | HD wallet support |
828+
| `unlockAccount` | Unlock account | - | ❌ Not Implemented | Enable transactions |
829+
| `lockAccount` | Lock account | - | ❌ Not Implemented | Disable transactions |
830+
| `deleteAccount` | Delete private key | - | ❌ Not Implemented | Key management |
831+
| `reloadAccounts` | Reload account info | - | ❌ Not Implemented | Account refresh |
832+
| `importAccount` | Import from file | - | ❌ Not Implemented | Account import |
833+
| `mockZkapp` | Mock zkApp (testing) | - | ❌ Not Implemented | Testing tool |
834+
| `sendTestPayments` | Test payment series | - | ❌ Not Implemented | Testing tool |
835+
| `sendRosettaTransaction` | Rosetta format tx | - | ❌ Not Implemented | Rosetta API |
836+
| `exportLogs` | Export daemon logs | - | ❌ Not Implemented | Log management |
837+
| `setCoinbaseReceiver` | Set coinbase key | - | ❌ Not Implemented | Block production |
838+
| `setSnarkWorker` | Configure SNARK worker | - | ❌ Not Implemented | SNARK configuration |
839+
| `setSnarkWorkFee` | Set SNARK work fee | - | ❌ Not Implemented | Fee configuration |
840+
| `setConnectionGatingConfig` | Set connection rules | - | ❌ Not Implemented | Network policies |
841+
| `addPeers` | Connect to peers | - | ❌ Not Implemented | Peer management |
842+
| `archivePrecomputedBlock` | Archive precomputed | - | ❌ Not Implemented | Archive operations |
843+
| `archiveExtensionalBlock` | Archive extensional | - | ❌ Not Implemented | Archive operations |
844+
845+
### Subscription Endpoints Status
846+
847+
| Endpoint | Description | Rust Status | Notes |
848+
| --------------------- | ------------------- | ------------------ | ---------------------- |
849+
| `newSyncUpdate` | Sync status changes | ❌ Not Implemented | Uses EmptySubscription |
850+
| `newBlock` | New block events | ❌ Not Implemented | Uses EmptySubscription |
851+
| `chainReorganization` | Best tip changes | ❌ Not Implemented | Uses EmptySubscription |
852+
853+
### Implementation Summary
854+
855+
- **Total endpoints in OCaml node**: ~61 (excluding deprecated)
856+
- **Implemented in Rust**: 18 endpoints
857+
- **Partially implemented**: 1 endpoint
858+
- **Not implemented**: ~37 endpoints
859+
- **Deprecated (skipped)**: 8 endpoints
860+
861+
All HIGH priority endpoints required for basic node operation are fully
862+
implemented. The Rust implementation focuses on core functionality needed for:
863+
864+
- Blockchain synchronization
865+
- Account queries
866+
- Transaction submission (payments, delegations, zkApps)
867+
- SNARK work coordination
868+
- Network status monitoring
869+
766870
## Next Steps
767871

768872
- [Node Architecture](./architecture) - Understanding the node's internal

0 commit comments

Comments
 (0)