@attocash/commons-node
v6.7.1-patch.1
Published
Node-facing Atto client interfaces, operations, monitors, and receivable stream helpers.
Maintainers
Readme
commons-node
Node-facing operations and higher-level monitors. This module defines the interfaces and helpers used by remote clients and wallet flows.
Highlights:
AttoNodeClient+AttoNodeOperations- Account membership monitor:
AttoAccountMonitor - Height-aware monitors:
toTransactionMonitor(),toAccountEntryMonitor() - Receivable stream utilities
Installation
Gradle:
implementation("cash.atto:commons-node:<version>")NPM:
npm install @attocash/commons-nodeBasic client operations
The concrete remote client lives in commons-node-remote. Example below assumes you built a client there and pass it
in.
val client: AttoNodeClient = AttoNodeClient.remote("http://localhost:8080")
// Single account by public key
val account = client.account(address.publicKey)
// Multiple accounts by address
val accounts = client.account(listOf(address1, address2))Membership monitor
Track a dynamic set of addresses and derive streams from it.
val monitor = client.createAccountMonitor()
// Add addresses to track
monitor.monitor(listOf(address1, address2))
// Ask the node for current account snapshots for tracked addresses
val current = monitor.getAccounts()Receivable stream
// Stream receivables for all tracked addresses
val min = AttoAmount.MIN
val receivables = monitor.receivableStream(min)Height-aware transaction monitor
// Build a transaction monitor from the membership monitor.
// Provide per-address initial heights; default to 1 if unknown.
val initialHeights = mapOf(/* AttoAddress -> AttoHeight */)
val txMonitor = monitor.toTransactionMonitor { address ->
initialHeights[address] ?: 1U.toAttoHeight()
}
// Consume messages and acknowledge to advance stored heights
val msg = txMonitor.stream().first()
val tx = msg.value
msg.acknowledge() // moves heightHeight-aware account-entry monitor
val entryMonitor = monitor.toAccountEntryMonitor { 1U.toAttoHeight() }
val msg = entryMonitor.stream().first()
val entry = msg.value
msg.acknowledge() // moves heightSee:
commons-node/src/commonMain/kotlin/cash/atto/commons/node/monitor/*commons-walletREADME for end-to-end usage with a wallet.
