-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Port DTRManager from DTR branch with OmniProtocol transport replacement.
Source
git show origin/dtr:src/libs/network/dtr/dtrmanager.ts (699 lines)
Target
src/libs/network/dtr/dtrmanager.ts
Transport Change Required
OLD (HTTP-based)
const res = await validator.longCall({
method: "nodeCall",
params: [{ message: "RELAY_TX", data: payload }],
})NEW (OmniProtocol binary)
import { OmniOpcode } from "@/libs/omniprotocol/protocol/opcodes"
import { encodeJsonRequest } from "@/libs/omniprotocol/serialization/jsonEnvelope"
const res = await validator.omniSend(
OmniOpcode.RELAY_TX,
encodeJsonRequest({ transactions: payload })
)Key Components to Preserve
validityDataCache: Map<string, ValidityData>- for retry logicisWaitingForBlock: boolean- block-aware optimizationlastBlockNumber: number- cache invalidationrelayTransactions()- main relay method (update transport)receiveRelayedTransactions()- validator receiving logic (keep as-is)waitForBlockThenRelay()- background retry (update transport)- Background retry service (10-second interval)
Notes
- Most logic is transport-agnostic
- Only
relayTransactions()andwaitForBlockThenRelay()need transport updates receiveRelayedTransactions()validation logic stays exactly the same
[Beads: node-4rm]
coderabbitai
Metadata
Metadata
Assignees
Labels
No labels