TW / Independent
← Research audits

DeFi Audit / 2026-10-08 / 2026-10-09

STRATO: lending, bridge and balance review

The 8–9 October 2026 audit archive supports a High lending finding and a Medium bridge assessment. This review explains the evidence, counterchecks and rules for remediation verification.

Scope
STRATO upquark: lending, CDP, SaveUSDST, classic and yield vaults, pools, oracles, bridge and MetalForge/TokenFactory.
Method
Assessment of the 8–9 October 2026 reports; no renewed technical validation.
Evidence
Source review, time-anchored state data, index reconciliation, local calculations and simulations. Documented writes were rejected before contract execution.
Finding

Lending: historical High. Bridge: Medium overall. Critical not established.

Present state and any fixes were not checked. Code examples are defensive models, not STRATO source code.

Assessment at the snapshotHighApplies to the snapshot described here.
Historical snapshot / 2026-10-08 / 2026-10-09

Lending: historical High. Bridge: Medium overall. Critical not established.

Counter-review retains the lending rating after corrected custody attribution. Overall bridge severity and impact must be read separately.

High / Finding status

Historically evidenced

Lending counter-review supports the historical High rating.

Critical / Finding status

Not confirmed

Critical was not established in the reviewed archive.

Findings and counterchecks

The list also includes rejected candidates and counterchecks.

3 entries
HighLendingSTR-01 / Historically evidenced
Observation
Counter-review retains High after corrected custody attribution. Documented writes did not execute successfully.
Impact
Lending surface within the historical scope.
Evidence
Historical source/state report and counterreview.
Limit
No successful live execution established; current remediation status unknown.
Next review step
Re-establish deployment, custody and remediation evidence together.
MediumNative bridgeSTR-02 / Conditional / verify assumptions
Observation
The bridge rating is Medium overall: High impact with Low likelihood.
Impact
High impact with Low likelihood yields Medium overall here.
Evidence
Isolated local model testing with a negative control.
Limit
Model impact is not production proof.
Next review step
Review finality assumptions and operational boundaries separately.
CriticalCritical threshold and remaining surfacesSTR-03 / Not confirmed
Observation
Other component reports do not establish High/Critical loss paths within their respective scopes.
Impact
No higher severity inferred from the reviewed remaining scope.
Evidence
Component-specific historical counterchecks.
Limit
No finding is not whole-system clearance.
Next review step
Scope unreviewed or changed deployments independently.
Research anatomyInteractive method model

One protocol. Many boundaries.

Collateral, state transitions and accounting are reviewed in context. The article evaluates historical report evidence.

Explanatory diagram, not live telemetry or an audit score. The article documents the assessment and its limits.

Audit question and scope

The audit asks whether STRATO's financial components keep claims and assets consistent, and which loss paths the reviewed state actually permits. It concerns the STRATO blockchain on upquark, not the hosting provider.

The 8–9 October 2026 archive covers lending, CDP, SaveUSDST, classic and yield vaults, pools, oracles, bridges and MetalForge/TokenFactory. This assessment brings those reports together. Official project sources provide context; data collected in the audit supports deployment-state claims.

Bind sources to the deployment

Scope / component overview
LendingEconomics
BridgeTrust
OracleData
CDPCollateral
VaultsAccounting
ForgeIssuance

Overview of the components assessed in this article. Not a complete call graph or a current deployment inventory.

Before a source finding can be assessed economically, executable logic, registry routing and custody must be identified. Different components may hold these roles. Lending counter-review corrected the initially assumed custody attribution. The assessment therefore had to use the actual asset holder, not just the reviewed logic contract.

The following model compares four fields in two invented manifests. It reports a changed routing revision. That calls for renewed attribution, not an automatic security finding. Matching values would be only as reliable as their supporting evidence.

pythonCompare deployment binding · Illustrative model, not STRATO code.Defensive model
expected = {"network": "demo", "implementation": "rev-A", "routing": "map-A", "custody": "pool-A"}
observed = {**expected, "routing": "map-B"}
required = ("network", "implementation", "routing", "custody")
def compare(left, right):
    missing = [key for key in required if key not in left or key not in right]
    changed = [key for key in required if key in left and key in right and left[key] != right[key]]
    return {"matches": not missing and not changed, "missing": missing, "changed": changed}
result = compare(expected, observed)
assert result["changed"] == ["routing"]
print(result)
Read the code

Interactive review model

Check source binding

Different revisions do not support an identical conclusion.

Local example model. No connection to a protocol, sample or live service.

What the evidence establishes

Four evidence types. Four different questions.
◇SourceWhich logic was actually inspected?
◎StateWhich configuration did the historical snapshot establish?
≋ModelWhich assumption does a local test support — and which does it not?
≠CounterreviewWhich counterargument limits the conclusion?

The reports use source code, time-anchored state queries, index reconciliation, local calculations and simulations. Source explains a rule; state data records configuration and balances at the time of review. Local simulation tests behavior under model assumptions.

Documented writes were rejected before contract execution. They show no successful state change. Non-persistent calls are not executed transactions either. The model below therefore separates integrity, method description and a write claim. A matching hash checks bytes, not the truth of an observation.

pythonEvidence integrity and method label · Illustrative model, not STRATO code.Defensive model
from hashlib import sha256
payload = b"invented local state observation"
record = {"digest": sha256(payload).hexdigest(), "anchor": "snapshot-A",
          "method": "local-model", "persistent": False}
allowed = {"source-review", "state-read", "local-model", "executed-write"}
def inspect(data, evidence):
    intact = sha256(data).hexdigest() == evidence["digest"]
    described = bool(evidence["anchor"]) and evidence["method"] in allowed
    write_claim = evidence["method"] == "executed-write" and evidence["persistent"] is True
    return {"intact": intact, "described": described, "write_claim": write_claim}
assert inspect(payload, record)["write_claim"] is False
assert inspect(payload + b"changed", record)["intact"] is False
print(inspect(payload, record))
Read the code

Lending: historical High

Historical lending counter-review retains the High rating. It connects the known finding to corrected custody attribution and the economic state at that time. Critical was not established.

Three claims must remain separate: a logic error, its reachability in the specific deployment and the economic prerequisites for loss. Evidence for one does not replace the others. Rejected writes in particular do not demonstrate successful fund removal.

Remediation verification needs unique claims, correctly bound collateral and an independently reconstructed balance sheet. A present rating requires fresh state evidence.

Bridge: Medium overall

The native bridge was rated Medium overall: High impact with Low likelihood. Local model testing supports a conditional loss effect, but establishes neither the necessary attacker control nor production execution. High impact is an assessment dimension here, not a High severity rating.

Defensive review separates observation, confirmation and completion into distinct states. The model permits only listed transitions and rejects completion without prior confirmation. It does not establish whether confirmation is trustworthy: consensus, operational state and actual finality are outside the example.

pythonFail-closed state transitions · Illustrative model, not STRATO code.Defensive model
def advance(state, event, verified=False):
    if state == "new" and event == "observe":
        return "observed"
    if state == "observed" and event == "confirm" and verified is True:
        return "confirmed"
    if state == "confirmed" and event == "complete":
        return "completed"
    raise ValueError("transition rejected")
assert advance("observed", "confirm", verified=True) == "confirmed"
try:
    advance("observed", "complete")
except ValueError:
    print("unconfirmed completion rejected")
else:
    raise AssertionError("invalid transition accepted")
Read the code

Accounting: deposits, rewards and strategies

SaveUSDST review did not establish a publicly triggerable severe deposit loss in the examined state. The report separately addresses a narrower question about expected-reward availability. That concerns a different entitlement from deposited principal.

Vault review did not observe the shared-resource topology required by an examined amplification hypothesis. A necessary prerequisite was therefore absent. Custody concentration may still matter, but does not prove that loss path.

The arithmetic model adds cash and deployed assets in the same integer unit, then compares them with liabilities. It checks a total. Validity of claims, value of strategy assets and timely asset availability require separate checks.

pythonReconcile integer-unit balances · Illustrative model, not STRATO code.Defensive model
def reconcile(cash, deployed, liabilities):
    values = [cash, *deployed, liabilities]
    if any(type(value) is not int or value < 0 for value in values):
        raise ValueError("non-negative integer units required")
    assets = cash + sum(deployed)
    return {"assets": assets, "liabilities": liabilities,
            "surplus": assets - liabilities, "covered": assets >= liabilities}
assert reconcile(60, [25, 15], 100)["surplus"] == 0
assert reconcile(60, [25, 15], 101)["covered"] is False
print(reconcile(60, [25, 15], 100))
Read the code

Interactive review model

Balance model

Invented integer units, not token balances.

Local example model. No connection to a protocol, sample or live service.

Oracles: age and actual use

The oracle report distinguishes stale entries from feeds economically mapped at the time of review. The stale entries did not establish a severe loss finding in the reviewed snapshot. An old timestamp alone does not tell whether an active financial component consumes that price.

The model accepts only positive prices with known, non-future and sufficiently recent timestamps. Missing information causes rejection. It checks freshness, not price accuracy, origin or actual application use.

pythonFail-closed price freshness · Illustrative model, not STRATO code.Defensive model
def valid_price(price, updated, now, max_age):
    values = (price, updated, now, max_age)
    if any(type(value) is not int for value in values):
        return False
    if price <= 0 or updated < 0 or now < 0 or max_age < 0:
        return False
    age = now - updated
    return 0 <= age <= max_age
assert valid_price(100, 990, 1000, 30)
assert not valid_price(100, 900, 1000, 30)
assert not valid_price(100, 1001, 1000, 30)
assert not valid_price(100, None, 1000, 30)
print("fresh accepted; stale, future and missing rejected")
Read the code

Interactive review model

Check freshness

Time bounds are part of the assessment.

Local example model. No connection to a protocol, sample or live service.

Other components and counterchecks

CDP and MetalForge/TokenFactory reports did not establish a severe publicly triggerable asset loss along their reviewed paths. Pool counter-review limited the economic significance of the examined edge behavior. These results did not establish Critical either.

Counterchecks are part of the audit: without required permissions, economic use or topology, the specific hypothesis remains unconfirmed. This does not settle unreviewed paths or later changes. Results apply to documented scope, not as whole-system approval.

Verify remediation

Remediation verification should start with evidenced attribution: rebind the current implementation, routing and asset holder. Then independently reconstruct claims against balances. Bridge transitions need documented confirmation prerequisites; freshness must be checked where price affects an economic decision.

The examples explain these rules but do not replace tests of the actual implementation. A production regression test must detect a broken invariant and cover the relevant configuration. This assessment did not check whether STRATO has made such changes.

Conclusion

The lending finding remains High in the historical archive. The bridge remains Medium overall; Critical was not established. Corrected custody attribution was particularly important: without it, economic assessment would have relied on the wrong component.

The next step is to bind the historical finding to the current deployment and test any remediation against the same security rules.

Findings at a glance

  • Lending was historically rated High after corrected custody attribution.
  • The native bridge remains Medium: High impact with Low likelihood.
  • Critical was not established for the other reviewed components.
  • Rejected writes and local simulations do not establish successful live exploitation.
  • Remediation verification must connect logic, routing, custody and current state.

Review limits

  • Statements refer to the 8–9 October 2026 archive.
  • Present remediation, later configurations and external disclosure were not checked.
  • Code examples explain checks; they validate neither STRATO code nor production behavior.

References

The links provide project context. The judgment rests on the evidence described in the audit. Review models and actual tool excerpts are labelled separately.

STRATO Platform — öffentliches Projekt / public project ↗BlockApps — STRATO Mercata developer documentation ↗
Final assessment

Conclusion

Recheck lending first

The lending finding remains High in the historical archive. The bridge remains Medium overall; Critical was not established. Corrected custody attribution was particularly important: without it, economic assessment would have relied on the wrong component. The next step is to bind the historical finding to the current deployment and test any remediation against the same security rules.

Next steps

  • Identify current implementation, routing and asset holder.
  • Test any remediation against the evidenced security rules.
Basis of this judgmentRatings from the 8–9 October 2026 reports; no current revalidation.
STRATO upquark: lending, CDP, SaveUSDST, classic and yield vaults, pools, oracles, bridge and MetalForge/TokenFactory.
← All research audits

Start a conversation

Discuss your project.

Start a conversation