@odatano/core
v0.3.26
Published
SAP CAP plugin for Cardano blockchain OData V4 integration
Downloads
2,634
Maintainers
Readme

Enterprise OData Services for the Cardano Blockchain
ODATANO is an SAP CAP–based service that exposes the Cardano blockchain via a standardized OData V4 interface, enabling seamless enterprise-grade read and write access. It provides unified REST/OData access to on-chain data while supporting native transaction building and submission directly from business applications. By abstracting blockchain complexity behind familiar SAP integration patterns, ODATANO allows enterprises to integrate Cardano into core processes securely, auditable, and at scale.
Project Status
Funded by Cardano Catalyst Fund 14: Official Proposal
Milestone 1 (Completed January 2026) ✅
Cardano read operations with multi-provider failover (Blockfrost → Koios), 18 Entities defining Cardano Core Components & 15 Blockchain Read Actions with comprehensive input validation, full OData V4 query support, lazy on-demand indexing with TTL-based refresh, 340 tests across 11 test suites, CI/CD with Codecov integration
Milestone 1: OData Service Foundation & Blockchain Read Access
Milestone 2 (Completed February 2026) ✅
Cardano transaction building with dual-builder architecture (CSL & Buildooor), 4 transaction types (simple transfers, token minting, multi-asset transfers, metadata), Ogmios live backend for protocol parameters & UTxO queries, 6 Transaction Actions with external signing workflow, full Build → Sign → Submit flow, 327 new tests & 6 new test suites, end-to-end Preview testnet examples & Postman collection
Milestone 2: Transaction Build & Submit
Milestone 3 (Completed March 2026) ✅ - pending approval
Extension of the transaction module & external workflow to export unsigned Cardano transactions via OData, enabling deterministic external signing (e.g. Cardano CLI or browser wallets) with full key separation and no private-key handling in the CAP service. Includes Plutus smart contract support (BuildPlutusSpendTransaction, SetCollateral), end-to-end external signer integration, SAP S/4HANA business process examples, enterprise use cases, a sample Fiori wallet viewer app, and comprehensive automated integration and security tests.
Milestone 3: External Signing & SAP Integration
Final Milestone (Upcoming April/May 2026)
A demonstration-mode video of the Wallet Viewer Fiori App illustrating audit, compliance, and sustainability use cases, accompanied by transparent community announcements. The milestone is closed with a formal Catalyst close-out report and a short end-to-end video summarizing results, lessons learned, and future plans.
Final Milestone: Finalization, Advanced Use Cases & Project Close-Out
Key Features
- OData V4 Protocol: Full query support ($filter, $select, $expand, $top, $skip, $count, $orderby)
- Multi-Network Support: Mainnet, Preview, and Preprod configurations
- Multi-Provider Architecture: Blockfrost + Koios + Ogmios with automatic failover
- Transaction Building: Cardano Serialization Library (CSL) & Buildooor for minting, ADA or Token transfers, and metadata transactions
- Lazy On-Demand Indexing: TTL-based refresh for changing blockchain data for performance optimization
- Enterprise-Grade Validation: Strict input validation and error handling
- HSM Signing: Optional server-side transaction signing via PKCS#11 Hardware Security Modules (YubiHSM, AWS CloudHSM, Thales Luna)
- Comprehensive Testing: 1122 tests across 29 test suites, 99% statement coverage
Architecture Overview

Quick Start
Use as CAP Plugin (Recommended)
Add ODATANO to any existing SAP CAP project:
npm install @odatano/core @cap-js/sqliteConfigure in your package.json:
{
"cds": {
"requires": {
"db": { "kind": "sqlite" },
"odatano-core": {
"network": "preview",
"backends": ["blockfrost"],
"blockfrostApiKey": "preview_YOUR_KEY"
}
}
}
}cds watch
# → CardanoODataService + CardanoTransactionService + CardanoSignService auto-registered
# → /odata/v4/cardano-odata/, /odata/v4/cardano-transaction/, /odata/v4/cardano-sign/ readyDocker (Standalone)
git clone https://github.com/ODATANO/ODATANO && cd ODATANO
cp .env.example .env # Add your BLOCKFROST_KEY
docker-compose up -dService runs at http://localhost:4004
Local Development (Standalone)
git clone https://github.com/ODATANO/ODATANO && cd ODATANO
npm ci
cp .env.example .env # Add your BLOCKFROST_KEY
cds deploy --to sqlite
npm run cds:watchSee Quick Start Guide for detailed setup instructions.
Usage Examples
Read Operations (M1):
# Query transaction
curl "http://localhost:4004/odata/v4/cardano-odata/Transactions('tx_hash')"
# Address with OData expand for assets
curl "http://localhost:4004/odata/v4/cardano-odata/Addresses('addr_test1...')?\$expand=assets"Transaction Operations (M2):
# Build ADA transfer (returns buildId and unsigned CBOR)
curl -X POST http://localhost:4004/odata/v4/cardano-transaction/BuildSimpleAdaTransaction \
-H "Content-Type: application/json" \
-d '{"senderAddress":"addr_test1...","recipientAddress":"addr_test1...","lovelaceAmount":10000000}'
# Submit signed transaction (using buildId from build response)
curl -X POST http://localhost:4004/odata/v4/cardano-transaction/SubmitTransaction \
-H "Content-Type: application/json" \
-d '{"buildId":"uuid-from-build-response","signedTxCbor":"84a400..."}'External Signing Operations (M3):
# Create signing request (returns signing instructions and CLI commands)
curl -X POST http://localhost:4004/odata/v4/cardano-sign/CreateSigningRequest \
-H "Content-Type: application/json" \
-d '{"buildId":"uuid-from-build-response"}'
# Verify and submit externally signed transaction
curl -X POST http://localhost:4004/odata/v4/cardano-sign/SubmitVerifiedTransaction \
-H "Content-Type: application/json" \
-d '{"signingRequestId":"signing-request-id","signedTxCbor":"84a400..."}'HSM Signing Operations (M3):
# Check HSM connection status
curl -X POST http://localhost:4004/odata/v4/cardano-sign/GetHsmStatus \
-H "Content-Type: application/json" -d '{}'
# Sign and submit with HSM in one step (automated, no external signer needed)
curl -X POST http://localhost:4004/odata/v4/cardano-sign/SignAndSubmitWithHsm \
-H "Content-Type: application/json" \
-d '{"buildId":"uuid-from-build-response"}'See User Guide for complete API reference.
Testing
npm test # Run all 1122 tests
npm run test:coverage # With coverage report
npm run test:integration # Integration tests only
npm run test:unit # Unit tests onlySee Test Documentation for details.
Documentation
| Guide | Description | |-------|-------------| | Quick Start | Get running in 5 minutes | | User Guide | API usage, entities, and examples | | Developer Guide | Architecture and development | | Transaction Workflow | Build → Sign → Submit flow (M2/M3) | | Security Guide | Authentication, signing security, HSM | | Docker Deployment | Container deployment | | Data Model | Entity relationships | | Error Handling | Error codes and handling | | Test Documentation | Test suite overview (1122 tests) |
Postman Collections:
API Overview
Read Service (/odata/v4/cardano-odata) - M1
18 Entities: NetworkInformation, Blocks, Epochs, Transactions, TransactionInputs, TransactionOutputs, TransactionInputAssets, TransactionOutputAssets, TransactionMetadata, Addresses, AddressAssets, AddressUTxOs, AddressTransactions, UTxOAssets, Pools, Accounts, Dreps, LedgerProtocolParameters
15 Actions: GetNetworkInformation, GetBlockByHash, GetEpochByNumber, GetTransactionByHash, GetMetadataByTxHash, GetAddressByBech32, GetUTxOsByAddress, GetAssetsByAddress, GetPoolById, GetAccountByStakeAddress, GetDrepById, GetLatestTransactionsByAddress, GetLatestBlock, GetLatestEpoch, GetLedgerProtocolParameters
Transaction Service (/odata/v4/cardano-transaction) - M2
8 Entities: TransactionBuilds, TransactionBuildInputs, TransactionBuildOutputs, TransactionBuildInputAssets, TransactionBuildOutputAssets, TransactionSubmissions, TransactionSubmissionErrors, AddressTransactionBuilds
11 Actions: BuildSimpleAdaTransaction, BuildTransactionWithMetadata, BuildMultiAssetTransaction, BuildMintTransaction, SubmitTransaction, SubmitSignedTransaction, GetBuildDetails, CheckSubmissionStatus, BuildPlutusSpendTransaction, SetCollateral, GetTransactionBuildsByAddress
Signing Service (/odata/v4/cardano-sign) - M3
5 Entities: SigningRequests, SignatureVerifications, AddressSigningRequests, TransactionBuilds, TransactionSubmissions
8 Actions: CreateSigningRequest, GetSigningRequest, GetSigningRequestsByAddress, VerifySignature, SubmitVerifiedTransaction, SignWithHsm, SignAndSubmitWithHsm, GetHsmStatus
See User Guide for complete API reference with parameters.
npm Package
Published as @odatano/core on npm. See the Developer Guide for detailed plugin architecture documentation.
Technology Stack
SAP CAP 9.x | TypeScript 5.9 | Node.js 20.x/22.x | SQLite | Jest | Blockfrost | Koios | Ogmios | CSL | Buildooor | Docker
License
Apache License 2.0 - see LICENSE
Support
- Issues: GitHub Issues
- Documentation: docs/
- Project Lead: Max Weber ([email protected])
