YouPI-PG
A self-hosted UPI & COD payment gateway with zero per-transaction platform fees, universal JavaScript checkout integration, dynamic QR payments, WhatsApp OTP authentication, and automated payment veri
Exchange XMR for wsXMR backed by >200% overcollateralization through atomic mints and burns on BNB Chain, Base, and Robinhood Chain.
FinanceJavaScript · SolidityGitHub @madschristensen99OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Wrapsynth is bringing Monero's anonymity set to DeFi and DeFi liquidity to Monero
Taken from the repository README
Loading the full README.
Read the full README ↗A trustless cross-chain ferry for Monero. wsXMR deploys per-chain on BNB Chain (QQQB collateral), Base (cbBTC), and Robinhood Chain (SPY), backed by overcollateralized LP vaults and Ed25519 atomic swap commitments — one interface, pick your chain.
WrapSynth brings Monero's anonymity set to DeFi and DeFi liquidity to Monero. Users swap XMR for wsXMR through atomic-swap mechanics enforced on-chain: LPs post collateral (the collateral asset is per-deployment — see Roadmap), mint/burn settlement is gated by Ed25519 secret reveals verified on-chain, and timeout-based slashing protects both sides. No custodian, no federation, no trusted intermediary — every swap settles peer-to-peer between a user and an LP vault. Each chain runs an independent wsXMR deployment; there is no bridging between them.
solana/)Deployed at block 128040249. All contracts verified on BscScan; deployer powers permanently locked (deployerOperationsLocked / hubLocked verified on-chain).
| Contract | Address |
|---|---|
| wsXMR Token | 0x9B8d1851bCc06ac265c1c1ACaBD0F71E69DD312c |
| wsXmrHub | 0x15bb9ba8236De055090a262F45a7e213F6040320 |
| Liquidity Router | 0x1034259f355566fcE4571F792d239a99BBa1b9b4 |
| StataQQQB (collateral share token) | 0xd821A7D919e007b6b39925f672f1219dB4865Fba |
| wsXMR/QQQB PancakeSwap V3 Pool (0.05%) | 0x9711698489150C9Fbc377C7d5aBC735D6198A845 |
| Facet | Address |
|---|---|
| BnbOracleFacet | 0xb694120Ecdc69fbbEe3Ae21831d7B76ab8a9169B |
| VaultFacet | 0x6ABAEB70c9BA9EA497Ff5e20D08bd20Ca1E02139 |
| MintFacet | 0xb6251797386a8C5a2a4A8783f430Ef2ED5c63BeF |
| BurnFacet | 0xCE92E887d225D06c21a16d845D88E980d536FA2b |
| LiquidationFacet | 0xd6Ee29f9ae035aDB0f2741228eD55F0fC6dBb6c2 |
| BnbYieldFacet | 0xD1f77F73Ca47a726875D884cc45EFf289f6176E3 |
| CoLPFacet | 0x8e3EF1e28262E351EB066374df1bEd36CC704dDA |
Machine-readable manifest: frontend/deployment.bnb.json · ethereum/deployments/bnb-deployment.json
Deployed at block 52775153. All contracts verified on BaseScan; deployer powers permanently locked. Exercised end-to-end on mainnet: mint → burn round-trip, co-LP open + unwind (position 6297447 left live seeding the pool), and swaps through Uniswap SwapRouter02. Collateral is cbBTC; the vault is funded and active.
| Contract | Address |
|---|---|
| wsXMR Token | 0x9E50B436901A573DC4f0676150B282135f0C0623 |
| wsXmrHub | 0xF22f1550829E1413f1bc538Be419071728DD53b8 |
| Liquidity Router | 0x53E46B60D79d33D031A0e222029A382146d5a15F |
| StataCbBTC (collateral share token) | 0x64f05A6c0E19Fe7Ae76Ca88740D63EA069A5CA28 |
| wsXMR/cbBTC Uniswap V3 Pool (0.05%) | 0xEac27935Dc31AF9215822505174404c38c5A3FEc |
| Ed25519Helper | 0xA1b9115450c3e3dCAD11c04Cf9Bf4092335B3A64 |
| SwapHelper | 0x313166bb40927D94e969c51Af227bc22F30df6D2 |
| Facet | Address |
|---|---|
| BaseOracleFacet | 0x147F829Fa732811A0f54E50310eCB71218B4511a |
| VaultFacet | 0x97166ED3478759199442BFc6570F386884b4917B |
| MintFacet | 0xBfCDA75903920cDe32F0B17eD1a57974Bab4bc66 |
| BurnFacet | 0xAa32790EF174Db5457AdF7c268fEa4Bc527eB140 |
| LiquidationFacet | 0x7c7BD2D57Db2C08F39d3050fabC002593183fF69 |
| YieldFacet | 0xF1fBBb13004410dCA48360872004870B6C85a214 |
| CoLPFacet | 0xA6b4F4Ea557e2f7F2f23F32EDA9D17aB7F48dd49 |
Machine-readable manifest: frontend/deployment.base.json · ethereum/deployments/base-deployment.json
Prior beta deployment on Gnosis Chain (ChainID 100) is preserved in
frontend/deployment.gnosis.json.
All protocol state and collateral live in a single contract, wsXmrHub, which dispatches calls to stateless logic facets via a selector → facet table:
wsXmrStorage), holds all collateral, and is the only address authorized to mint/burn wsXMR ┌────────────────────────────┐
│ wsXmrHub │
│ state · collateral · token │
│ selector → facet dispatch │
└──────────┬─────────────────┘
┌──────────┬─────────┬──┴──────┬───────────┬──────────┬─────────┐
VaultFacet MintFacet BurnFacet Liquidation YieldFacet OracleFacet CoLPFacet
(LP vaults) (XMR→wsXMR)(wsXMR→XMR) Facet (per-chain) (RedStone + TWAP) (co-LP)
scalarMultBase(secret) and checks it against the user's commitment, binding settlement to the same key material used on the Monero sideStata* share adapter; YieldFacet harvests and accounts for vault yieldwsXMRLiquidityRouter deploys vault collateral as V3 concentrated liquidity (PancakeSwap on BNB, Uniswap on Base/Robinhood) paired against user-supplied wsXMR, putting backing capital to work instead of letting it sit idleethereum/lp-node/, Rust) — monitors events, manages Monero RPC, prices quotes, runs arbitrage, and exposes a REST API for the frontendinitiateMint — user posts a claim commitment (Ed25519 point) and griefing deposit; the LP vault's capacity is reservedsetMintReady — LP confirms XMR receipt on-chainrevealSecret + finalizeMint — user reveals the secret scalar; the contract verifies scalarMultBase(secret) matches the commitment, then anyone calls finalizeMint to mint wsXMR and refund the depositrequestBurn — user locks wsXMR and posts a hash commitment with their Monero destination; LP collateral is reserved against the burn and a deadline startsconfirmMoneroLock — LP signals the XMR payment is underwayfinalizeBurn settles with the secret reveal, burning the wsXMR and releasing the LP's collateralabortBurn — clean unwind before settlement, returning wsXMR to the userforceSettleBurn / claimSlashedCollateral — if the LP misses the deadline, the user seizes collateral at oracle price; bad outcomes hit the responsible vault, not the systemThe protocol has been through two rounds of security review, with all critical and high-severity findings resolved and locked in by regression tests (AuditRegressionTest.t.sol). Notable findings fixed:
requestBurn / abortBurn / forceSettleBurn state machine to remove griefing and stuck-funds pathswsXMR.replaceHub(), wsXmrHub.addSelectors() / removeSelectors()) that could repoint the
token at an arbitrary minter or add/brick facet routes at any time after launch. Both are now
closed by a one-way lockHub() / lockDeployer() pair that the deployment script calls as
its final step, so the admin key is permanently powerless once setup completes.| Power | Holder | Reachable after lockDeployer() / lockHub() |
|---|---|---|
registerFacets | hub deployer | ❌ no (and already one-time) |
addFacet (non-core facets e.g. CoLPFacet) | hub deployer | ❌ no |
addSelectors / removeSelectors | hub deployer | ❌ no |
setLiquidityRouter | hub deployer | ❌ no |
setPriceUpdater (oracle) | hub deployer | ❌ no |
wsXMR.replaceHub / setHub | token _deployer | ❌ no |
updatePrices | priceUpdater only | ✅ yes (required for oracle liveness) |
✅ Every deployment executes lockHub() / lockDeployer() as its final step — the
deployer key can no longer repoint the minter or alter facet routes. Verified on-chain at
deploy time (hubLocked() == true, deployerOperationsLocked() == true).
BurnSolvencyInvariantTest.t.sol — 633-line Foundry invariant suite asserting system solvency across randomized mint/burn/liquidation sequencesE2EFullCycle, E2EComprehensive, E2EAdvancedScenarios) plus Hardhat unit suites per facettest/)⚠️ This is early-stage protocol software. Reviews to date do not eliminate risk:
setMintReady) or release a user's XMR from the shared 2-of-2 address (by revealing lpSecret). After a mint timeout the LP has LP_CLAIM_WINDOW_BLOCKS (~1 hour at the deployment's block time) to reveal; a live LP always will — it earns the parked griefing deposit and loses nothing. If the LP is unresponsive past the window, the key bond is slashed to the user (reclaimParkedDeposit / sweepUnclaimedExpiredMint). This means an LP outage longer than the window forfeits the bond even for mints where the user never sent XMR — the chain cannot distinguish a real deposit from a phantom oneNode.js v18+, Foundry, Rust (for the LP node), Hardhat (via npm).
git clone https://github.com/madschristensen99/wrapsynth.git
cd wrapsynth/ethereum
npm install
cp .env.example .env # add PRIVATE_KEY and per-chain RPC URLs (BNB_RPC_URL, BASE_RPC_URL, ROBINHOOD_RPC_URL)
# Compile + test
npx hardhat compile
npm test # Hardhat suites
forge test # Foundry invariant + E2E suites
cd ethereum/lp-node
cargo build --release
cargo run --release -- --config config.toml
cd solana/anchor-program
anchor build && anchor test
wrapsynth/
├── ethereum/
│ ├── contracts/
│ │ ├── core/ # wsXmrHub, wsXmrStorage
│ │ ├── facets/ # Vault, Mint, Burn, Liquidation, Yield, Oracle
│ │ ├── router/ # wsXMRLiquidityRouter (co-LP V3)
│ │ ├── Ed25519.sol # On-chain Ed25519 scalar mult
│ │ └── wsXMR.sol # ERC-20 (8 decimals, matching XMR)
│ ├── test/ # Foundry invariant/E2E + Hardhat suites
│ └── lp-node/ # Rust LP node (events, Monero RPC, quotes, API)
├── solana/anchor-program/ # Solana port (Anchor)
├── frontend/ # Web app
└── docs/ # Sequence diagrams, seed storage design
The strategy is parallel collateral experiments across chains — deploy everywhere, let the market decide which venues get traction. Each deployment pairs wsXMR with a different collateral asset, spanning the censorship-resistance spectrum from native gas tokens to issuer-custodied tokenized equities.
| Chain | Collateral | Collateral type | Status |
|---|---|---|---|
| BNB Chain | QQQB (bStocks tokenized Nasdaq) | Tokenized equity | ✅ Live — deployed, verified, end-to-end tested on mainnet |
| Base | cbBTC (Coinbase Wrapped BTC) | Custodial wrapped asset | ✅ Live — deployed, verified, end-to-end tested on mainnet |
| Robinhood Chain | SPY (Robinhood tokenized S&P 500) | Tokenized equity | ✅ Live — deployed, verified, end-to-end tested on mainnet |
| Solana | Native SOL | Maximal censorship resistance — no issuer | 🔄 In development |
| HyperEVM | sUSDe (HyperLend) | Yield-bearing stablecoin | ⛔ Deprecated — removed from repo |
| Gnosis | sDAI | Yield-bearing stablecoin | ⛔ Beta (superseded) |
The oracle model minimizes external dependencies: XMR/USD comes from RedStone signed calldata, and collateral prices are computed fully on-chain from V3 TWAP pools — no second oracle provider per deployment.
Experimental protocol software provided "as is." It has undergone security review but not formal third-party audit certification or formal verification. The developers assume no liability for losses. Interact at your own risk.
If you find WrapSynth useful, consider supporting the project:
XMR: 83PvXnBHDNmN4TtRdKXMr4Vq1uHerTthZDRjrTG4hMUyeLSd7pNYwM31eCmDdX9D3F61FsdA2XvTmT92eQzqWFwR9CJ4gb8
MIT
Built with ❤️ for privacy and decentralization