The @utxorpc/sdk
provides a Node.js interface for interacting with UTxO-based blockchains via gRPC, making it easy to fetch blocks, follow chain tips, and more. This library is designed to help developers integrate blockchain data into their applications efficiently.
- gRPC Communication: Utilizes gRPC for efficient, low-latency communication with blockchain nodes.
- SyncClient: Stream real-time updates as new blocks are applied, undone, or when the chain resets.
- QueryClient: Retrieve UTxOs and other on-chain data.
- SubmitClient: Submit and monitor transactions.
- WatchClient: Watch for specific transactions or events related to addresses, assets, and more.
To install the SDK, use the following command in your project:
npm i @utxorpc/sdk
The following example demonstrates using CardanoSyncClient
to connect to a UTxO RPC service, fetch block data, and follow chain tips in real-time.
import { CardanoSyncClient } from "@utxorpc/sdk";
async function test() {
let syncClient = new CardanoSyncClient({
uri: "http://localhost:50051", // Replace with your UTxO RPC service URL
});
// Follow chain tips by fetching real-time block updates
let tip = syncClient.followTip([
{
slot: 54131816, // Example slot number
hash: "34c65aba4b299113a488b74e2efe3a3dd272d25b470d25f374b2c693d4386535", // Example block hash
},
]);
for await (const event of tip) {
console.log(event); // handle each event however you want
}
}
test().catch(console.error);
The SDK includes multiple clients to perform various operations:
followTip(intersect)
: Stream blockchain updates in real-time.fetchBlock(point)
: Fetch a specific block using a slot and hash.fetchHistory(start, maxItems)
: Fetch historical blocks up tomaxItems
.
readParams()
: Retrieve blockchain parameters.readUtxosByOutputRef(refs)
: Get UTxOs based on specific transaction references.searchUtxosByAddress(address)
: Search UTxOs by address. This also has variants like Search Utxos by Assets and more.
submitTx(tx)
: Submit a transaction to the blockchain.waitForTx(txHash)
: Wait for a transaction’s confirmation.watchMempool()
: Watch the mempool. This also has variants like Watch Mempool for Address and more.
watchTx(intersect)
: Watch specific transactions by chain points. This also has variants like Watch Tx for Address.
Contributions are welcome! To contribute, please fork the repository and submit a pull request. For major changes, open an issue first to discuss your ideas.
Want to discuss UTxO RPC or get involved with the community? Join the TxPipe Discord! There’s a dedicated channel for UTxO RPC where you can connect with other developers, share ideas, and get support.