Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,3 @@ demand from integrators after mainnet.
## Open dependencies and risks

For a comprehensive tracking of external blockers, audit schedules, resolver coldstart incentives, RPC dependencies, and tooling status, see the detailed [Roadmap Dependency Tracker](docs/ROADMAP_DEPENDENCIES.md).

6 changes: 3 additions & 3 deletions docs/DILIGENCE_DATA_ROOM.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# OverSync v2 — SCF Diligence Data Room

> **Audience:** Stellar Community Fund (SCF) reviewers and prospective investors.
> **Reading time:** ≤ 10 minutes (use the section links below to jump to what you need).
> **Audience:** Stellar Community Fund (SCF) reviewers and prospective investors.
> **Reading time:** ≤ 10 minutes (use the section links below to jump to what you need).
> **Status (June 2026):** v2 is live on Sepolia + Stellar testnet. Mainnet is intentionally gated on independent audits (target: Q1 2027). No protocol behaviour changed in this document — it is documentation only.

---
Expand All @@ -25,7 +25,7 @@

## 1. Live testnet contracts

All addresses are sourced directly from [`deployments.testnet.json`](../deployments.testnet.json).
All addresses are sourced directly from [`deployments.testnet.json`](../deployments.testnet.json).
No mainnet contracts are active in the v2 UI (`VITE_MAINNET_ENABLED=false`).

### Ethereum — Sepolia (chain ID 11155111)
Expand Down
4 changes: 2 additions & 2 deletions docs/ECOSYSTEM_INTEGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ OverSync differs fundamentally by avoiding wrapping and validator committees ent

## Adapter Isolation and Feature Flagging

As we build adapters to interact with tools like CCTP or Axelar, it is critical that the core HTLC logic remains strictly isolated.
As we build adapters to interact with tools like CCTP or Axelar, it is critical that the core HTLC logic remains strictly isolated.

**Rule:** Every future ecosystem adapter must be deployed behind an explicit feature flag or launch gate.
**Rule:** Every future ecosystem adapter must be deployed behind an explicit feature flag or launch gate.
- Core HTLC settlement must not depend on the availability or security of external bridge contracts.
- Experimental integrations must not put mainnet funds at risk if a third-party bridge encounters downtime.
- Adapters should be treated as composable modules rather than embedded core logic.
Expand Down
4 changes: 2 additions & 2 deletions docs/GOVERNANCE_PATH.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ All addresses below are from [`deployments.testnet.json`](../deployments.testnet
| Stellar testnet | `HTLC` | `CDIKSJKVMXKGBRD3BBEBMF7Q4GQJ52ECU6R6G5HEKXKXVGGWK2CTA6JK` | [`soroban/contracts/htlc/src/lib.rs`](../soroban/contracts/htlc/src/lib.rs) |
| Stellar testnet | `ResolverRegistry` | `CBSR7Z4MHLPMLFFM5K3PK3YLZAVCOMJ4KPVRWO4VPL3FF64MSTIZ4WGF` | [`soroban/contracts/resolver-registry/src/lib.rs`](../soroban/contracts/resolver-registry/src/lib.rs) |

**Testnet deployer EOA (EVM):** `0x686Be1DEF4b9Bd725A5Df07505E25a94Fa71394c`
**Testnet deployer EOA (EVM):** `0x686Be1DEF4b9Bd725A5Df07505E25a94Fa71394c`
**Testnet deployer account (Stellar):** `GC4VWBK5QSJCBSRWIZJYWCF2SJAPCKU3OFHH4XK7ZBTZ5HCK7VYLU6FL`

> The legacy v1 contracts (`HTLCBridge.sol`, `EscrowFactory.sol`,
Expand Down Expand Up @@ -84,7 +84,7 @@ user funds."*

**Admin role: `Admin` key in instance storage**

Current holder: `GC4VWBK5QSJCBSRWIZJYWCF2SJAPCKU3OFHH4XK7ZBTZ5HCK7VYLU6FL`
Current holder: `GC4VWBK5QSJCBSRWIZJYWCF2SJAPCKU3OFHH4XK7ZBTZ5HCK7VYLU6FL`
Config at deploy: `minStake = 1 000 000 000 stroops (100 XLM)`,
`slashBeneficiary = deployer address` (see
[`deployments.testnet.json`](../deployments.testnet.json) §`resolverRegistryConfig`).
Expand Down
8 changes: 4 additions & 4 deletions docs/KPI_DASHBOARD_SPEC.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OverSync KPI Dashboard Specification

This document defines the overarching narrative, decision thresholds, and key performance indicators (KPIs) required to determine our testnet traction and mainnet launch readiness.
This document defines the overarching narrative, decision thresholds, and key performance indicators (KPIs) required to determine our testnet traction and mainnet launch readiness.

It explicitly maps to our canonical [Public Metrics Schema](./METRICS_SCHEMA.md) and our [User Adoption Experiments](./ADOPTION_EXPERIMENTS.md).

Expand All @@ -18,7 +18,7 @@ It explicitly maps to our canonical [Public Metrics Schema](./METRICS_SCHEMA.md)
- **Source:** Coordinator logs (`/metrics` endpoint)
- **Cadence:** Daily
- **Owner:** Core Team (Backend)
- **Thresholds:**
- **Thresholds:**
- 🟢 **Green (Launch Ready):** > 98%
- 🟡 **Yellow (Investigate):** 90% - 98%
- 🔴 **Red (Blocker):** < 90%
Expand Down Expand Up @@ -86,7 +86,7 @@ It explicitly maps to our canonical [Public Metrics Schema](./METRICS_SCHEMA.md)
- **Owner:** Core Team (Smart Contracts)
- **Thresholds:**
- 🟢 **Green (Launch Ready):** 0%
- 🟡 **Yellow (Investigate):** N/A
- 🟡 **Yellow (Investigate):** N/A
- 🔴 **Red (Blocker):** > 0%

---
Expand Down Expand Up @@ -114,7 +114,7 @@ It explicitly maps to our canonical [Public Metrics Schema](./METRICS_SCHEMA.md)
- **Owner:** Core Team (Security Lead)
- **Thresholds:**
- 🟢 **Green (Launch Ready):** 0
- 🟡 **Yellow (Investigate):** N/A
- 🟡 **Yellow (Investigate):** N/A
- 🔴 **Red (Blocker):** > 0

---
Expand Down
34 changes: 17 additions & 17 deletions docs/SCF_EVIDENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ Genuine traction narrative supported by verifiable evidence rather than vanity m
#### 3.1 User Segments
Docs/TRACTION.md defines 4 priority user segments:
- Trust-conscious power users
- Stellar-native protocols seeking ETH liquidity
- Stellar-native protocols seeking ETH liquidity
- 1inch Fusion+ resolver operators
- Treasuries and OTC desks

Expand Down Expand Up @@ -156,51 +156,51 @@ pnpm run test:e2e # differential tests (if available)
Document what changed since the rejected v1 attempt and where each fix lives.

#### 5.1 Operator Model Change
**Before:** Single privileged relayer with hot keys
**After:** Open resolver registry with stake + slash
**Before:** Single privileged relayer with hot keys
**After:** Open resolver registry with stake + slash
**Where:**
- Registry contracts: `contracts/v2/ResolverRegistry.sol` + `soroban/contracts/resolver-registry`
- Resolver runner: `resolver/` Docker image + `docs/RESOLVERS.md`
- Evidence: `docs/REVIEW_RESPONSE.md` §§1, 8, 157-159

#### 5.2 Stellar Settlement Change
**Before:** Stellar claimable balance with unconditional claimants
**After:** Native Soroban HTLC contract with sha256 hashlock + timelock
**Before:** Stellar claimable balance with unconditional claimants
**After:** Native Soroban HTLC contract with sha256 hashlock + timelock
**Where:**
- New contract: `soroban/contracts/htlc/src/lib.rs`
- 10 unit tests covering happy path, refunds, double claims
- Evidence: `docs/REVIEW_RESPONSE.md` §2

#### 5.3 Refund Path Change
**Before:** Mocked refunds (`relayer/src/recovery-service.ts:364-371`)
**After:** Permissionless on-chain refunds
**Before:** Mocked refunds (`relayer/src/recovery-service.ts:364-371`)
**After:** Permissionless on-chain refunds
**Where:**
- EVM: `HTLCEscrow.refundOrder` function
- Stellar: `oversync-htlc::refund_order` function
- Stellar: `oversync-htlc::refund_order` function
- Frontend: `RefundDialog` component
- Evidence: `docs/REVIEW_RESPONSE.md` §6

#### 5.4 Data Integrity Change
**Before:** Fake `0x1234567890abcdef` style transactions in history
**After:** All fake/mock data removed; only real on-chain events
**Before:** Fake `0x1234567890abcdef` style transactions in history
**After:** All fake/mock data removed; only real on-chain events
**Where:**
- Frontend: `TransactionHistory.tsx` with `isRealHash` filter
- Relayer: No mock data in `websocket-server.ts` or `index.ts`
- Evidence: `docs/REVIEW_RESPONSE.md` §7

#### 5.5 Documentation Change
**Before:** Inconsistent docs (`MAINNET_SETUP.md`, `env.example` duplicate)
**After:** Consolidated into `docs/DEPLOYMENT.md`
**Before:** Inconsistent docs (`MAINNET_SETUP.md`, `env.example` duplicate)
**After:** Consolidated into `docs/DEPLOYMENT.md`
**Where:** Entire `docs/DEPLOYMENT.md` file

#### 5.6 Code Quality Change
**Before:** Monolithic v1 relayer (3,276 lines)
**After:** Modular v2 coordinator (<200 lines)
**Before:** Monolithic v1 relayer (3,276 lines)
**After:** Modular v2 coordinator (<200 lines)
**Where:** `coordinator/` directory

#### 5.7 Budget Realignment
**Before:** $30K broad request
**After:** $40K tranche-gated request
**Before:** $30K broad request
**After:** $40K tranche-gated request
**Where:** `docs/REVIEW_RESPONSE.md` §167-182

---
Expand Down Expand Up @@ -243,7 +243,7 @@ Every major claim has an evidence link or an explicit "not yet shipped" status.

#### 8.1 Stellar/Soroban Usage
- [x] Soroban HTLC contract deployed and testable
- [x] Soroban resolver registry deployed and testable
- [x] Soroban resolver registry deployed and testable
- [x] Testnet contract IDs published
- [x] SDK Soroban integration completed
- [x] Freighter wallet flow implemented
Expand Down
24 changes: 24 additions & 0 deletions packages/sdk/src/logging/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
export function redactLogValue(val: any): any {
if (typeof val === 'string') {
return redactLogString(val);
}
if (val instanceof Error) {
return { message: redactLogString(val.message) };
}
return val;
}

export function redactLogString(line: string): string {
// Redact Bearer tokens
line = line.replace(/Bearer [A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*/g, 'Bearer [REDACTED]');
// Redact 64-byte hex (eth private keys)
line = line.replace(/0x[a-fA-F0-9]{64}/g, '[REDACTED]');
// Redact Stellar secrets
line = line.replace(/S[A-Z2-7]{55}/g, '[REDACTED]');
return line;
}

export function isSensitiveLogKey(key: string): boolean {
const normalized = key.toLowerCase().replace(/[-_]/g, '');
return normalized.includes('secret') || normalized.includes('privatekey') || normalized.includes('signedxdr');
}
129 changes: 123 additions & 6 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading