import { Callout } from "nextra-theme-docs";
The UTxORPC SDK, an npm package for interacting with UTxORPC-compatible nodes, is also compatible with Deno thanks to the latest 'Deno 2' update. This allows you to fetch blocks, submit transactions, and synchronize with the latest blocks seamlessly using Deno's now native npm package support.
Ensure you have Deno 2.0 or higher installed. Deno 2 is compatible with Node.js and npm packages, which allows you to use the @utxorpc/sdk package directly in your Deno project.
To install Deno, refer to the official Deno installation guide.
You can set up a new Deno project with the deno init command, which generates a deno.json configuration file to manage dependencies and settings.
deno initAfter running this command, you’ll see a deno.json file in your project directory.
With Deno 2, you can use deno add to install npm packages without needing a package.json or node_modules folder. To install the UTxORPC SDK, run:
deno add npm:@utxorpc/sdkRunning this command will add @utxorpc/sdk to your project and update deno.json with an entry for @utxorpc/sdk as a dependency.
In Deno 2, you can also use npm packages without a package.json or node_modules folder as long as you used deno init . Instead, you can directly specify the package using the npm: prefix and it will automatically do everything for you even without the import in your deno.json.
import { CardanoSyncClient, CardanoQueryClient, CardanoSubmitClient } from "npm:@utxorpc/sdk";If you'd prefer to use a configuration file to manage dependencies, add an npm: specifier in your deno.json configuration if you manually added it without using deno add and even when using this command it should also look like this:
// deno.json
{
"imports": {
"@utxorpc/sdk": "npm:@utxorpc/sdk"
}
}Then import as follows:
import { CardanoSyncClient, CardanoQueryClient, CardanoSubmitClient } from "@utxorpc/sdk";The SDK includes three primary clients for interacting with UTxORPC nodes:
- CardanoSyncClient: Synchronize chain data, fetch blocks, and track blockchain tips.
- CardanoQueryClient: Query the ledger state and construct new transactions.
- CardanoSubmitClient: Submit transactions and monitor their progress.
For more details on configuring your node, refer to the [UTxORPC Ecosystem Servers Documentation](/servers).
Below are examples of how to use each of the clients in the SDK.
CardanoSyncClient helps you follow the tip and fetch specific blocks.
import { CardanoSyncClient } from "npm:@utxorpc/sdk";
async function followTipExample() {
const syncClient = new CardanoSyncClient({
uri: "http://localhost:50051"
});
const tip = syncClient.followTip([
{ slot: 54131816, hash: "34c65aba4b299113a488b74e2efe3a3dd272d25b470d25f374b2c693d4386535" },
]);
for await (const event of tip) {
console.log(event);
}
}
followTipExample().catch(console.error);import { CardanoSyncClient } from "npm:@utxorpc/sdk";
async function fetchBlockExample() {
const syncClient = new CardanoSyncClient({
uri: "http://localhost:50051"
});
const block = await syncClient.fetchBlock({
slot: 54131816,
hash: "34c65aba4b299113a488b74e2efe3a3dd272d25b470d25f374b2c693d4386535",
});
console.log(block);
}
fetchBlockExample().catch(console.error);CardanoQueryClient lets you query blockchain data, read protocol parameters, and search UTxOs.
import { CardanoQueryClient } from "npm:@utxorpc/sdk";
async function readParamsExample() {
const queryClient = new CardanoQueryClient({
uri: "http://localhost:50051"
});
const params = await queryClient.readParams();
console.log(params);
}
readParamsExample().catch(console.error);import { CardanoQueryClient } from "npm:@utxorpc/sdk";
async function searchUtxosByAddressExample() {
const queryClient = new CardanoQueryClient({
uri: "http://localhost:50051"
});
const utxos = await queryClient.searchUtxosByAddress(
Buffer.from("705c87cbca3a88cbfee6f6ad820acea99f484b4830fc632610f2a30146", "hex")
);
utxos.forEach((utxo) => {
console.log(utxo);
});
}
searchUtxosByAddressExample().catch(console.error);CardanoSubmitClient allows transaction submission.
import { CardanoSubmitClient } from "npm:@utxorpc/sdk";
async function submitTxExample() {
const submitClient = new CardanoSubmitClient({
uri: "http://localhost:50051"
});
const txSample = "84a300d90102818258203dc5d9977e7b3d51acaea81031d2f461404536b2828549b73876a5980295f81b00018282581d60916c769efc6e2a3339594818a1d0c3998c29e3a6303d8711de8567591a004c4b4082581d60916c769efc6e2a3339594818a1d0c3998c29e3a6303d8711de8567591b0000000253bcffb3021a0002990da100d9010281825820526fa19e3694cda4f3c0d2fb2d2bb8768925eccc49a89d5f12b1972644ac769858403d6d6599193b17e67827cd9f48aaf35ac762c6fb0c5402c52724f307b69ff96f3f7e6c3fb107670c28679c148bf510f479c01a34b9d95d0dbb7e4ff6f3cb560af5f6";
const txHash = await submitClient.submitTx(Buffer.from(txSample, "hex"));
const txHashHex = Buffer.from(txHash).toString("hex");
console.log(txHashHex);
}
submitTxExample().catch(console.error);The NodeJS UTxORPC SDK which is compatible with the Deno runtime allows seamless integration with UTxORPC nodes. With Deno’s compatibility with npm, you can access @utxorpc/sdk easily and use its tools for building robust blockchain applications in a secure and modern environment while utilizing Deno's wide variety of tools.