FORAY
Tamper-evident transaction evidence

An open protocol for the form of the record — not the system that produces it.

FORAY is an open protocol standard for tamper-evident transaction evidence. DUNIN7 supplies the specification, the validation rules, and the reference implementations. The systems where transactions originate — ERP and business platforms — are the implementers. Auditors, regulators, and AI-governance platforms are the consumers. DUNIN7 competes with neither side.

Adoption of a standard like this is pulled, not pushed: it spreads because the parties who need the evidence require it, not because connectors are built one vendor at a time.

New here? Start with the plain-English companion — what FORAY is and is not, the four components in everyday language, and a verification exercise you can run yourself in minutes. It is written for a competent stranger, and it is the honest front door.

Transaction evidence you can't take outside the building

Enterprises spend heavily on audits, and the core difficulty is unchanged: proving to someone who doesn't trust your systems that a transaction happened the way your records say it did.

Fragmented records

Contracts in one system, calculations in spreadsheets, payments in another. Anyone verifying the full picture must reconstruct it manually, across systems that don't share a format.

Records that can be revised

Conventional audit logs often live in the same databases as the transactions, under the same administrators. The people best placed to commit fraud are also best placed to adjust the trail that would reveal it.

Late detection

Problems surface months or years later, at periodic audits. By then the record has often been migrated, archived, or quietly amended — and there is no way to prove which version came first.

Privacy against transparency

Full transparency exposes competitive secrets; full privacy prevents verification. Most systems pick one and give up the other.

Four components, one traceable structure

A FORAY record decomposes a business transaction into four components:
Arrangements (the contractual setup — parties, terms),
Accruals (the economic obligations that arise — formulas, calculated amounts),
Anticipations (the expected future flows — schedules, conditions),
and Actions (what actually settled — amounts, dates, status).
The name is the grammar: FORAY, from "4A."

Components reference their predecessors, so a payment traces back through the obligation it settles to the agreement that created it. Not every transaction needs all four: a cash sale can be a single Action; a depreciation entry a single Accrual. The grammar captures what happened at origination — where the assurance target sits — rather than the summarised consequences a ledger records.

An optional Attestations extension carries third-party verifications — laboratories, auditors, certification bodies — alongside the four components, for provenance and compliance chains.

The commitment goes on-chain. The data never does.

A FORAY record is hashed, and that hash is bound — together with fresh random proof material — into a 32-byte commitment that is anchored to a blockchain or a write-once store (the reference implementation anchors to Kaspa). The business data never leaves the enterprise, and the commitment reveals nothing about it. Anyone holding the record and its proof material can re-derive the commitment and check it against the chain: a match proves the record is the one originally anchored; any alteration breaks the match. The verification rules are published, so the check requires no access to DUNIN7 or to the system that produced the record — but it does require holding the evidence. That is the privacy design: the chain carries commitments, never records, and proof material stays in the custody of whoever holds the evidence.

The protocol specifies anchoring in continuous short windows — one write per window per lane — so evidence can reach the chain steadily as business happens, rather than in overnight runs.

See tamper-evidence work

Below is a small FORAY record and its SHA-256 hash. Next to it is the same record with a single digit changed. The hashes have nothing in common: that is the property the anchor relies on. If the anchored commitment was derived from the original record, no edited version — however small the edit — can reproduce it. The record cannot be quietly revised after the fact; it can only be visibly different.

Original record

{"F1":"RETAIL_2026_Q3_CASH_112","F2":"RETAIL_2026_Q3_CASH_112","F3":"Corner Cafe LLC","F7":12.5,"F8":"USD","F26":"cash_receipt","schema_version":"4.2","timestamp":"2026-07-24T08:15:00Z","arrangements":[],"accruals":[],"anticipations":[],"actions":[{"F4":"cash_receipt","F9":12.5,"F15":"completed","F22":[],"F23":[],"F24":[],"id":"ACT_CASH_SALE_112"}],"component_hashes":{},"merkle_root":"sha256:PLACEHOLDER","blockchain_anchor":{"anchored_at":null,"block_height":null,"confirmation_time_ms":null,"kaspa_tx_id":null}}

SHA-256: 71db9e649977b6c90de4e3191d8953f15a27423fc12cae104ab92de02f59ce14

Same record, one digit changed

{"F1":"RETAIL_2026_Q3_CASH_112","F2":"RETAIL_2026_Q3_CASH_112","F3":"Corner Cafe LLC","F7":12.5,"F8":"USD","F26":"cash_receipt","schema_version":"4.2","timestamp":"2026-07-24T08:15:00Z","arrangements":[],"accruals":[],"anticipations":[],"actions":[{"F4":"cash_receipt","F9":12.6,"F15":"completed","F22":[],"F23":[],"F24":[],"id":"ACT_CASH_SALE_112"}],"component_hashes":{},"merkle_root":"sha256:PLACEHOLDER","blockchain_anchor":{"anchored_at":null,"block_height":null,"confirmation_time_ms":null,"kaspa_tx_id":null}}

SHA-256: 6890258eebb38351fbe8b566e8224aafc741f029270a8d837a89ed975b0ec8f2

The hashes shown here are computed live from the sample record; for a real anchored transaction, this section would carry the actual component hashes bound into the on-chain commitment.

These hashes are computed over the records exactly as shown — copy either record and check for yourself with any SHA-256 tool.

Each record is a single line, so any SHA-256 tool — web-based or command-line — reproduces these hashes exactly. Click Copy, paste into your tool of choice, and compare. On macOS: pbpaste | shasum -a 256.

Evaluating FORAY? Give this site to your AI assistant and ask: what is this protocol, are its claims verifiable, and would it work with our systems? Everything here is built to survive that question — the demonstration transactions are on a public chain, the hashes reproduce from the files served, and the validator answers live. We invite the test; the conclusion is yours.

Why a protocol, not a product

Transaction evidence is only useful if anyone can verify it, at any time, without trusting the system — or the company — that produced it. That rules out a product. A product's evidence dies with the vendor; a protocol's evidence survives because the format and verification rules are published. FORAY therefore defines the form of tamper-evident transaction evidence — the four-part grammar, the anchoring envelope, the verification rules — for anyone to implement. DUNIN7 maintains the specification, the validation rules, and reference implementations. The systems where transactions originate implement the protocol; auditors, regulators, and AI-governance platforms consume it.

You don't buy FORAY. You require it, or you implement it.

Adopted by demand, not sold by integration

FORAY is not adopted by DUNIN7 building connectors into each business system, vendor by vendor. It is adopted when the customers of those systems require it: an organisation writes "emits FORAY-structured, anchorable transaction events" into its procurement or renewal terms, and the vendor implements the protocol to meet the requirement. This is how open standards spread — nobody buys them; buyers require them of the systems they already use. It is why the specification is open and conformance-testable: a requirement only works if anyone can verify it.

What an anchor proves

An anchor proves who asserted what, and when, and that the assertion has not changed since. What tamper-evidence changes is the economics of falsehood: a false record must be created false at origination, complete and consistent, and remains bound to its originator permanently. It cannot be quietly revised when questions come. FORAY guarantees the evidence an auditor examines is the evidence that was originally produced; the trust model is the precise statement of what every FORAY proof covers.

Enterprise audit today. Agent governance next.

Enterprise audit and ERP evidence

Auditors and regulators verifying that the records under examination are the records originally produced — across SOX, DCAA, and comparable regimes. The systems where transactions originate emit FORAY-structured, anchorable events; the audit side consumes them.

One evidentiary form, whatever the system

Every system of record describes the same deal differently: different tables, different field names, different summaries. FORAY does not normalize the systems — it normalizes the evidence. A transaction from any platform decomposes into the same four components, referenced the same way, verified by the same published rules. Evidence from two different ERPs is comparable and verifiable in one form, without either system adopting the other's schema. When organizations merge, the two estates do not need compatible systems to present compatible evidence — the records each estate anchored remain verifiable in the same form, from the day each was written.

Multi-agent safety and governance

With software agents making consequential commitments, the same question is arising in sharper form: what did this principal — human or agent — commit to, and when, and has the record changed since? FORAY provides the evidence layer. In the wider DUNIN7 suite, Stele provides identity, GRANTHA provides containment, and FORAY provides evidence.

Why Kaspa first?

FORAY's reference implementation anchors to Kaspa: its blockDAG architecture produces blocks quickly enough, at a low enough per-transaction cost, that anchoring in continuous short windows is economical at enterprise volume. Kaspa is the first substrate, not the only one the architecture admits — the protocol defines the anchoring envelope; the substrate records it.

The evidence layer has to outlive the systems it evidences, and it has to be checkable by parties who trust none of them. That is a protocol's job, not a product's.

You don't buy FORAY. You require it, or you implement it.

Verification

The following anchoring transactions are live on the Kaspa mainnet, verifiable by anyone without reference to anything DUNIN7 operates. Matching an anchor to its record is a holder-side check by design: the proof material stays with the owner of the evidence. For these two, the full proof material — record body, salt, and independent verification — is published at /proofs, so the check is not just possible in principle but reproducible today.

Finance record — accounts-payable settlement

Complete proof material — body, salt, verification — published at /proofs.

1bd7bfc63ee77ea877ee30f0033a4b3e1a7a335422deaeed29c08af98a34eb45

View on Kaspa explorer

Governance record — agent action under a grant

Complete proof material — body, salt, verification — published at /proofs.

375f4468e358a27bf64d0cd61356400aedb16be722a1f389855b26590157edd5

View on Kaspa explorer