@tari-project/ootle
v0.1.0
Published
Core SDK for the Tari Ootle network — transaction builder, `Provider` / `Signer` interfaces, transaction flow helpers, builtin templates, and the stealth (confidential transfer) API.
Readme
@tari-project/ootle
Core SDK for the Tari Ootle network — transaction builder, Provider / Signer
interfaces, transaction flow helpers, builtin templates, and the stealth
(confidential transfer) API.
Runtime support
| Package | Browser | Node ≥ 22 | Notes |
| --------------------- | ------- | --------- | ------------------------------------------------ |
| @tari-project/ootle | ✓ | ✓ | Core; WASM crypto via @tari-project/ootle-wasm |
Node note: Node ≥ 22 currently requires
NODE_OPTIONS=--experimental-wasm-moduleswhen running undertsxor plainnode(the WASM ESM gating in Node will be lifted in a future release). Seeexamples/node/README.mdfor the rationale and forward plan; every script inexamples/node/wires the flag into itspnpminvocation so most users never set it manually.
Install
pnpm add @tari-project/ootleAlso pair it with a Provider (e.g. @tari-project/ootle-indexer) and a
Signer (e.g. @tari-project/ootle-wallet-daemon-signer or
@tari-project/ootle-secret-key-wallet).
Hello world
Build, sign, and submit a transaction end-to-end:
import { TransactionBuilder, sendTransaction, Network } from "@tari-project/ootle";
import { ProviderBuilder } from "@tari-project/ootle-indexer";
import { WalletDaemonSigner } from "@tari-project/ootle-wallet-daemon-signer";
const provider = await ProviderBuilder.new().withNetwork(Network.LocalNet).connect();
const signer = await WalletDaemonSigner.connect({
url: "http://localhost:18103",
authToken: process.env.OOTLE_DAEMON_AUTH_TOKEN,
});
const unsignedTx = TransactionBuilder.new(Network.LocalNet)
.feeTransactionPayFromComponent(await signer.getAddress(), 1000n)
.callMethod({ componentAddress: senderAddress, methodName: "withdraw" }, [
{ Literal: resourceAddress },
{ Literal: "500" },
])
.saveVar("bucket")
.callMethod({ componentAddress: recipientAddress, methodName: "deposit" }, [{ Workspace: "bucket" }])
.buildUnsignedTransaction();
const receipt = await sendTransaction(provider, signer, unsignedTx);Deep dive
For the full API surface — TransactionBuilder methods, the transaction flow
helpers (resolveTransaction, signTransaction, sealTransaction,
submitTransaction, watchTransaction, sendTransaction, sendDryRun,
classifyOutcome), OotleWallet, the stealth API (StealthTransfer,
WalletStealthAuthorizer, decryptOwnedUtxo), and the builtin template
helpers (AccountInvokeBuilder, FaucetInvokeBuilder) — see the
root README's "@tari-project/ootle" section.
Examples
Runnable browser apps and Node scripts live under
examples/. The Node tier
(examples/node/) is the canonical reference
for using this package from plain tsx / node.
