Salud Capital
Internal — Technical Spec v2

Four-Token Architecture  ·  April 2025

Technical Architecture Specification · Token Design · Smart Contract Stack · HIPAA Firewall · Medicare/Medicaid Integration

Salud Vault — Four-Token Architecture

Complete technical specification for the full Salud Vault token stack: SaludCoin (SLUD) healthcare incentives, SaludID (SAID) soulbound identity, SaludPass (SPASS) benefit enrollment, and SaludReach (REACH) programmatic marketing — with HIPAA-structural firewall separating health and commercial data at the contract level. Covers what to build in Claude Chat vs Claude Code Desktop, in what order, across all four tokens.

SLUD — Healthcare incentives SAID — Soulbound identity SPASS — Plan enrollment REACH — Marketing budget ERC-20 · ERC-5192 · ERC-721 · ERC-1155 HIPAA structural firewall ★ Unstoppable Domains — 9 domains owned Polygon PoS · Tangem ring/card
Token contracts
4
+ CampaignManager + ReachOracle
Settlement chain
Polygon
PoS <$0.01/tx · ERC-4337 native
HIPAA separation
Structural
Not policy — contract-level enforced
CMS identity
2026
ID.me + CLEAR live on Medicare.gov
Prog. ad spend
$595B
Global market 2024 — REACH addresses this
CVS locations
9,000+
Planogram positions controlled

01   Architecture Overview — Why Four Tokens

Four Distinct Token Types for Four Distinct Functions

The Salud Vault ecosystem requires four tokens because money, identity, legal entitlement, and marketing attribution are legally and operationally distinct. Conflating them in fewer tokens creates regulatory ambiguity, HIPAA exposure risk, and securities classification problems. Each token is optimized for its specific function — and the critical fourth token (REACH) operates in an entirely separate contractual domain from the first three, with no on-chain cross-reference to health data.

// The HIPAA Architectural Principle

The single most important design decision in the four-token stack is that SaludReach must have zero on-chain reference to SaludID, SaludPass, or SaludCoin. This separation must be structural — enforced at the Solidity contract level, not by internal policy. A test that verifies no cross-contract health reference should be a permanent fixture in the CI/CD pipeline. The REACH oracle reads commercial POS data. The SLUD oracle reads health event data. They are deployed as separate services with separate signing keys and separate databases. There is no API connection between them.

1
SLUD — Health incentive loyalty
2
SAID — Soulbound healthcare identity
3
SPASS — Benefit plan enrollment
4
REACH — Commercial marketing budget
HIPAA firewall between tokens 1–3 and token 4

02   Four-Token Architecture

All Four Tokens — Controlled by the Same Tangem Card or Ring Tap

Tokens 1–3 are all controlled by the same ERC-4337 smart account anchored to the Tangem card or ring's NFC signing key. Token 4 (REACH) is also stored in the same wallet, but minted and governed by a completely separate contract suite with no health data access. One ring tap at a CVS register can trigger a batch UserOperation that earns SLUD (health reward via SLUD oracle) AND earns REACH (commercial reward via REACH oracle) simultaneously — but the two oracle pipelines share zero data.

Token 01 — Health
SaludCoin
SLUD · Controlled issuance
ERC-20 Modified

Healthcare incentive and marketing utility token. Earned through health behaviors (MinuteClinic visits, Rx refills, Medicare AWV). Transfer-restricted to whitelist. Redeemable against approved healthcare services. Cannot be purchased — Howey test defense.

Transferable?Whitelist-only
Earn triggersHealth actions
Redeems forUSDC / CVS health
Legal riskHowey + AKS counsel
Token 02 — Identity
SaludID
SAID · 1 per person
ERC-5192 Soulbound

Non-transferable identity credential token. Stores keccak256 hashes of healthcare credentials (HIPAA: hashes only, never the data). Links Tangem NFC address to W3C Verifiable Credentials: Medicare ID, Medicaid, Aetna, Rx.

Transferable?Never — locked()
On-chain dataHashes only
Actual dataTangem chip only
VerificationZK proof scoped
Token 03 — Entitlement
SaludPass
SPASS · 1 per enrollment
ERC-721 NFT

Smart contract benefit enrollment token. Represents active plan (Medicare Advantage, Medicaid MCO, Salud tier). Metadata encodes plan type, copay schedule, expiry. getCopayForService() called by MinuteClinic at point-of-care check-in.

Transferable?Controlled (family)
MetadataPlan + benefits
ExpiryContract-enforced
Point-of-caregetCopayForService()
Token 04 — Marketing
SaludReach
REACH · Campaign-minted
ERC-1155 Multi-token

Programmatic marketing budget token. Earned through commercial interactions (CVS front-store, non-CVS retail, financial partners). Brands deposit USDC; Salud earns 15–25% platform fee. Zero health data access — HIPAA firewall structural.

Transferable?Yes — commercial
Earn triggersCommercial only
Health data?Zero — structural
Revenue modelB2B platform fee

03   Tokens 1–3 — Health Ecosystem Contract Specs

SaludCoin, SaludID, and SaludPass — Core Solidity Logic

SaludCoin.sol — ERC-20 + Transfer Whitelist

// SaludCoin.sol — Polygon PoS — OpenZeppelin v5
contract SaludCoin is ERC20, AccessControl, Pausable {
  bytes32 public constant MINTER_ROLE  = keccak256("MINTER_ROLE");   // SLUD oracle only
  mapping(address => bool) public transferWhitelist; // CVS, Aetna, Medicare contracts
  // triggerType: 0=MinuteClinic, 1=Rx_refill, 2=Wellness, 3=Medicare_AWV, 4=Vaccine
  event HealthActionRewarded(address indexed user, uint8 triggerType, uint256 amount);

  function earnReward(address user, uint8 triggerType, uint256 amount, bytes calldata proof)
    external onlyRole(MINTER_ROLE) { _mint(user, amount); }

  function redeem(uint256 amount, address serviceContract) external {
    require(transferWhitelist[serviceContract], "Not approved service");
    _burn(msg.sender, amount);
    IServiceContract(serviceContract).creditBeneficiary(msg.sender, amount);
  }
  // _update override: blocks all non-whitelist, non-mint/burn transfers
}

SaludID.sol — ERC-5192 Soulbound + W3C VC Hashes

// SaludID.sol — keccak256 hashes only — no PHI on-chain
struct CredentialRecord {
  bytes32 medicareIdHash;   // keccak256(MBI) — NOT the MBI
  bytes32 medicaidIdHash;   bytes32 aetnaMemberHash;
  string  vcCid;            // IPFS CID of AES-encrypted W3C VC bundle
  uint64  expiresAt;        bool medicareVerified; bool medicaidVerified;
}
function locked(uint256) external pure returns (bool) { return true; }  // ERC-5192
function transferFrom(address, address, uint256) public pure override {
  revert("SaludID: identity is not transferable");
}
// verifyMedicareEligibility(tokenId, zkProof): ZK proof — reveals nothing about MBI

SaludPass.sol — ERC-721 + Point-of-Care Copay Lookup

// SaludPass.sol — MinuteClinic calls getCopayForService() at check-in
enum PlanType { SALUD_STARTER, SALUD_FAMILIA, SALUD_PREMIUM,
  MEDICARE_ADVANTAGE, MEDICAID_MANAGED_CARE, DUAL_ELIGIBLE_SPECIAL, CVS_AETNA }
struct PlanMetadata {
  PlanType planType; uint64 effectiveDate; uint64 expiryDate;
  uint16 copayMinuteClinic; uint16 copayPrimary; uint16 copaySpecialist;
  bytes32 planContractHash; bool active;
}
function getCopayForService(uint256 tokenId, uint8 serviceType) external view returns (uint256) {
  require(isActivePlan(tokenId), "Plan expired");
  // serviceType: 0=MinuteClinic, 1=primary, 2=specialist
}

04   Token 04 — SaludReach (REACH) — Programmatic Marketing

The Commercial Layer — Marketing Dollars Without Health Data

SaludReach is the programmatic marketing budget token that turns the Salud Vault's 9,000 CVS locations into a B2B advertising network. Brands deposit USDC into campaign contracts. Consumers earn REACH through commercial interactions — front-of-store CVS purchases, non-CVS retail partner activity, and opted-in financial behavior. Salud Capital earns a 15–25% platform fee on every brand deposit. Zero health data is required, accessed, or touched.

The token standard is ERC-1155 rather than a second ERC-20 because "brand marketing budget" is not a homogeneous pool. A CVS Beauty campaign, an AARP membership offer, and a Chase credit card promotion have distinct earn rates, expiry dates, and redemption rules. ERC-1155 allows tokenId 0 to be the base fungible REACH pool (cross-campaign redeemable) while tokenIds 1–N represent campaign-specific semi-fungible vouchers, all managed in a single contract with batch transfer capability.

// Why ERC-1155 and Not Another ERC-20

ERC-1155 supports fungible, semi-fungible, and non-fungible tokens in a single contract with batch transfer. One Tangem ring tap at a CVS register can earn base REACH (redeemable anywhere) AND a campaign-specific L'Oréal voucher (redeemable only at CVS beauty) in a single UserOperation. Each brand campaign gets its own tokenId; within that campaign, tokens are fungible. ERC-1155 batch transfers mean multiple brand campaigns fire in one transaction at roughly the same gas cost as one — critical for the high-frequency retail use case.

The Three-Contract REACH Architecture

SaludReach.sol (ERC-1155)

The token contract. Manages the base REACH pool (tokenId 0) and all campaign-specific semi-fungible token IDs. Minting is gated to REACH_ORACLE_ROLE only. No function in this contract may call SaludID.sol, SaludPass.sol, or SaludCoin.sol. This is enforced at the Solidity level, not by policy.

Key functions: createCampaign(), mintReach(wallet, campaignId, txType, proof), redeemReach(campaignId, amount, rewardContract)

CampaignManager.sol

The B2B brand interface. Brands deposit USDC, define campaign parameters (target tier based on wallet-level commercial behavior only), and receive spend reporting. Salud's platform fee is deducted at deposit time and routed to the Salud treasury address.

Key functions: createCampaign(brand, earnRate, expiresAt, targetTier), withdrawUnspentBudget(), getCampaignReport(campaignId)

ReachOracle.sol — The HIPAA Boundary Contract

The critical separation point. This oracle reads exclusively from non-health data sources. It has no API connection, no database link, and no on-chain call to any health data source. Deployed as a separate service with separate signing keys from the SLUD oracle. A modifier noHealthData() reverts if any input bytes match known health contract selectors.

Data sources allowed: CVS front-store POS (non-pharmacy registers), non-CVS retail partner APIs, opted-in financial transaction metadata  ·  Data sources blocked: All pharmacy POS, MinuteClinic, SLUD earn events, SaludID state, SaludPass enrollment

The HIPAA Firewall — What REACH Can and Cannot Read

// Blocked from REACH oracle — health domain
SaludID.sol state
SaludPass.sol enrollment
SLUD earn events
Pharmacy POS / Rx data
MinuteClinic clinical
Insurance claims (FHIR)
Medicare / Medicaid IDs
Health-coded signals
// Allowed into REACH oracle — commercial only
CVS front-store POS
Non-CVS retail partners
Financial behavior (opt-in)
Wallet commercial activity
Campaign eligibility tier
Transaction frequency
Brand engagement events
Geographic / store signals

SaludReach.sol — Core Solidity Spec

// SaludReach.sol — ERC-1155 — Polygon PoS — HIPAA-structural separation
contract SaludReach is ERC1155, AccessControl {
  // ARCHITECTURAL RULE: No function here may call SaludID, SaludPass, or SaludCoin.
  // Enforced by test: verifyZeroHealthContractReference() must pass in CI/CD.
  bytes32 public constant REACH_ORACLE_ROLE = keccak256("REACH_ORACLE_ROLE");
  uint256 public constant BASE_REACH = 0;   // Fungible cross-campaign pool
  uint256 public nextCampaignId = 1;         // Campaign-specific token IDs

  struct Campaign {
    uint256 tokenId; address brand; uint256 budgetUsdc;
    uint256 budgetSpent; uint256 earnRate;
    uint64  expiresAt; uint8 targetTier; bool active;
  }
  mapping(uint256 => Campaign) public campaigns;

  // txType: 0=CVS_front_store, 1=non_CVS_retail, 2=financial_partner, 3=opt_in
  // CRITICAL: txType MUST NOT include any health-coded category (4+)
  function mintReach(
    address wallet, uint256 campaignId, uint8 txType, bytes calldata proof
  ) external onlyRole(REACH_ORACLE_ROLE) {
    require(txType <= 3, "Health-coded txType rejected");  // HIPAA guard
    Campaign storage c = campaigns[campaignId];
    require(c.active && block.timestamp <= c.expiresAt, "Campaign inactive");
    require(c.budgetSpent + c.earnRate <= c.budgetUsdc, "Budget exhausted");
    c.budgetSpent += c.earnRate;
    _mint(wallet, BASE_REACH, c.earnRate, "");       // Base fungible pool
    _mint(wallet, campaignId, c.earnRate, "");     // Campaign semi-fungible
    emit CommercialActionRewarded(wallet, campaignId, txType, c.earnRate);
  }

  function redeemReach(uint256 campaignId, uint256 amount, address rewardContract) external {
    _burn(msg.sender, BASE_REACH, amount);
    IRewardContract(rewardContract).issueBrandReward(msg.sender, amount, campaignId);
  }
}

REACH Revenue Model — B2B Platform Fee

// The Business Model Insight

SaludReach turns the 9,000 CVS planogram positions into a programmatic advertising network where brands pay to reach Salud Vault users at the moment of verified retail purchase. A ring tap is a real-world, hardware-authenticated commercial transaction — infinitely more valuable than a cookie-based or wallet-observation signal. Brands pay USDC into campaign contracts; Salud earns 15–25% platform fee at deposit time.

Revenue projection: 50,000 Vault holders × 8 front-store purchases/month × $0.15 brand cost per REACH earn event × 20% Salud fee = $12,000/month from CVS front-store alone. At 500,000 holders: $120,000/month, scaling linearly with enrollment — completely independent of subscription revenue or healthcare relationships.

05   SLUD Tokenomics — Earn and Redeem Schedule

SaludCoin Earn Rates and Redemption Values

// Howey Test — SLUD Must Not Be a Security

SLUD cannot be purchased (only earned through health actions) and is earned for the holder's own behavior — not as an investment expecting profit from others' efforts. This mirrors CVS ExtraCare points and airline miles. External securities counsel must confirm before public issuance. Also review Medicare Anti-Kickback Statute (AKS) safe harbor before launch — SLUD earn triggers must reward health behaviors, not provider-specific usage.

SLUD Earn Schedule — Health Actions

Health actionSLUD
MinuteClinic visit50
Preventive care (annual)200
Rx refill on-time25
Medicare Annual Wellness Visit500
Chronic care check-in (mo)100
Health screening (A1c, BP)150
CVS pharmacy vaccine75
Medicaid care plan compliance300/mo

SLUD Redemption Schedule

RedemptionSLUD cost
$1 CVS purchase credit100
$1 USDC to Vault balance110
MinuteClinic copay waiver500
Rx copay reduction ($10 off)1,000
Medicare Part D supplement2,000
Salud plan upgrade (1 mo)3,000
Aave yield 2x (1 mo)5,000
Telehealth visit (CVS HUB)1,500

06   Build Plan — All Four Tokens — Claude Chat vs Claude Code

What to Build, With Which Tool, in What Order

Task Tool Priority Deliverable Effort
Phase 1 — Tokens 1–3 Smart Contracts (Weeks 1–4)
SaludCoin.sol (ERC-20 + whitelist)
Earn/burn/whitelist + roles + 95%+ tests
Claude CodeCriticalHardhat, OpenZeppelin v5, Polygon Amoy deploy, Polygonscan verify4–8 hrs
SaludID.sol (ERC-5192 soulbound)
Credential struct, IPFS CID, issuer roles, ZK verifier hook
Claude CodeCriticallocked() always true, transferFrom reverts, revocation logic, test suite4–6 hrs
SaludPass.sol (ERC-721)
PlanType enum, copay lookup, family transfer
Claude CodeCriticalERC-721URIStorage, getCopayForService(), isActivePlan(), familyTransfer() with issuer sig4–6 hrs
Howey memo + AKS analysis
Securities + healthcare counsel briefing doc
Claude ChatCriticalLegal memo for external securities + healthcare counsel. Do before any public token mention.2–4 hrs
Phase 2 — Token 4 (SaludReach) Contracts (Weeks 3–6, parallel)
SaludReach.sol (ERC-1155)
Campaign struct, mintReach(), redeemReach(), HIPAA guard modifier
Claude CodeCriticalERC-1155, BASE_REACH tokenId 0, campaign tokenIds 1+, txType <= 3 guard, isolation test in CI6–10 hrs
CampaignManager.sol
Brand USDC deposit, platform fee deduction, campaign creation
Claude CodeCriticalUSDC transfer, 15–25% fee config, createCampaign(), withdrawUnspentBudget(), spend reporting4–8 hrs
ReachOracle.sol + HIPAA isolation test
Commercial POS only, noHealthData() modifier, CI test
Claude CodeCriticalSeparate oracle deployment, noHealthData() revert on health selectors, test that verifies zero cross-reference to health contracts4–8 hrs
CVS front-store POS webhook
Non-pharmacy register integration only
Claude CodeHighPython FastAPI webhook from CVS front-store POS API (separate endpoint from pharmacy API), oracle signing, mintReach() call6–10 hrs
Phase 3 — Identity + FHIR Layer (Weeks 5–8)
ID.me OAuth + Medicare MBI bridge
MBI → keccak256 hash → SaludID mint
Claude CodeHighNode.js: ID.me OIDC, MBI extract, hash, issueSaludID(), Tangem chip write via SDK6–10 hrs
CMS Blue Button 2.0 FHIR + SLUD oracle
Part D claims, Rx adherence, earn oracle service
Claude CodeHighFastAPI: BB2.0 OAuth, FHIR R4 parsing, health event detection, ECDSA signing, SaludCoin.earnReward()8–12 hrs
Phase 4 — Tangem SDK + App (Weeks 9–14)
Tangem SDK NFC integration
iOS Swift + Android Kotlin, card + ring
Claude CodeCriticalTangemSdk.startSession(), ERC-4337 UserOp signing, credential chip write, backup ring linking8–14 hrs
ERC-4337 batch UserOperation
One tap: SLUD earn + REACH earn + copay payment
Claude CodeCriticalAlchemy AccountKit, batch ops combining health + commercial rewards in one ring tap, Paymaster gas sponsorship6–10 hrs
React Native senior-optimized app
WCAG AAA, 18pt+ font, voice guidance, 3-screen max
Claude CodeHighExpo, wagmi, NativeWind, 8 screens (wallet, tap-to-pay, remittance, SLUD rewards, REACH rewards, Medicare card, Rx, MinuteClinic)10–16 hrs
Brand advertiser portal (Next.js)
Campaign creation, USDC deposit, spend dashboard
Claude CodeMediumNext.js + wagmi: brand wallet connect, USDC deposit, campaign builder (target tier, earn rate, expiry), real-time spend reporting8–14 hrs

07   Risk Register — All Four Tokens

Priority Risks Before Any Public Launch or Mainnet Deploy

High · Legal
SLUD Securities Classification
If SEC deems SLUD a security, broker-dealer registration is required. Written opinion from external securities counsel needed before any public mention. Design to fail Howey (not purchasable, no profit expectation).
Mitigation: Howey memo from Claude Chat → external securities counsel. SLUD cannot be purchased, ever.
High · Regulatory
Medicare Anti-Kickback Statute
SLUD earn triggers rewarding Medicare beneficiaries for health actions may implicate AKS. Must be structured as behavior rewards, not provider incentives. Healthcare counsel required before launch.
Mitigation: AKS safe harbor analysis in Claude Chat → external healthcare counsel. SLUD rewards behavior, not provider choice.
High · Architectural
REACH–Health Data Leakage
If REACH oracle accidentally reads health signals (SLUD earn events, SaludID state), the HIPAA firewall is breached. Must be structural, not policy. A future developer could introduce a cross-contract call without realizing the implication.
Mitigation: CI/CD test: verifyZeroHealthContractReference() must pass on every commit. noHealthData() modifier on mintReach(). Separate oracle service, separate signing key, separate database. Never the same service.
Medium · Privacy
SaludID On-Chain Correlation
4–5 public SBTs can uniquely identify an individual with 97% accuracy. Even hashes create correlation risk if multiple are public.
Mitigation: ZK proofs for all verification. Separate SaludID from financial wallet address. Use ERC-4337 stealth addresses for on-chain interactions.
Medium · Commercial
REACH Brand Adoption Risk
SaludReach requires B2B brand sales to fund campaigns. Without brand participation, REACH has no liquidity and consumers have no incentive to prefer the Salud Vault over a standard prepaid card.
Mitigation: Seed REACH pool with Salud Capital first-party campaigns (CVS ExtraCare equivalents) to demonstrate proof of concept. Lock in 2–3 national brand pilots before public launch using existing CVS relationships.
Low · Technical
ERC-1155 Wallet Support
Some wallets have incomplete ERC-1155 support, particularly for batch transfer UX. Displaying campaign-specific token IDs alongside the base REACH balance may confuse users.
Mitigation: App displays only BASE_REACH balance (tokenId 0) to consumers. Campaign vouchers render as "brand offers" in the UI. Campaign-specific tokenIds are backend-only for the redemption flow.

08   Starting Prompts — Open Claude Code Desktop Now

Verbatim Prompts for Each Phase

// Claude Code Desktop — Session 1 (Tokens 1–3)

"Set up a Hardhat + TypeScript monorepo called salud-vault-contracts. Create /contracts/health/ with: SaludCoin.sol (ERC-20 with MINTER_ROLE, transfer whitelist, earnReward() emitting HealthActionRewarded event, redeem() with burn, OpenZeppelin v5), SaludID.sol (ERC-5192 soulbound with CredentialRecord struct: medicareIdHash bytes32, medicaidIdHash bytes32, aetnaMemberHash bytes32, rxBenefitHash bytes32, vcCid string, expiresAt uint64, medicareVerified bool — locked() always true, transferFrom always reverts), SaludPass.sol (ERC-721URIStorage with PlanType enum including DUAL_ELIGIBLE_SPECIAL, PlanMetadata struct, isActivePlan() and getCopayForService() returning USDC cents). Configure for Polygon Amoy testnet. Generate comprehensive test files targeting 95%+ branch coverage."

// Claude Code Desktop — Session 2 (Token 4 — SaludReach)

"In the salud-vault-contracts monorepo, create /contracts/reach/ with three contracts. SaludReach.sol extending ERC-1155 with: Campaign struct (tokenId, brand, budgetUsdc, budgetSpent, earnRate, expiresAt, targetTier, active), BASE_REACH constant = 0, mintReach(wallet, campaignId, txType uint8, proof bytes) with REACH_ORACLE_ROLE gate and require(txType <= 3) HIPAA guard, redeemReach(campaignId, amount, rewardContract). CampaignManager.sol: USDC deposit from brands, configurable platform fee (15–25%), createCampaign() call. ReachOracle.sol: commercial POS data only, noHealthData() modifier that reverts if input matches known health contract selectors. CRITICAL: add a test file /test/HIPAAIsolation.test.ts that verifies SaludReach.sol has zero function calls to SaludID.sol, SaludPass.sol, or SaludCoin.sol. This test must be part of CI and must fail if any cross-contract health reference is introduced. Deploy all three to Polygon Amoy in a separate deployment from the health contracts."

// Claude Chat — Legal Review Session

"Apply the Howey test to SaludCoin (SLUD). SLUD is earned only through verified health actions, cannot be purchased, is transfer-restricted to whitelisted service contracts only, and is redeemable only against approved healthcare services. Analyze whether SLUD is a security and whether earn triggers implicate the Medicare Anti-Kickback Statute safe harbors. Also: analyze whether SaludReach (REACH) creates any separate securities or commodity issues — REACH is minted by brands depositing USDC and distributed to consumers for commercial retail transactions with no health component. Draft briefing memos for external securities and healthcare counsel covering both tokens."

09   Unstoppable Domains — Full Integration Spec

9 Owned Domains — Every Contract Has a Human-Readable Address

// The Core Problem UD Solves for This Market

Salud Vault's primary users are unbanked, cross-border senders who must never see a 42-character hex address. One typo loses funds permanently. Unstoppable Domains replaces 0x742d35Cc6634C0532925... with saludcap.x. UD domains live on Polygon PoS — the same chain Salud Vault is built on — so resolution is native, cheap (<$0.01), and permanent with no renewal fees.

★ saludcap.x — Corporate Identity

Resolves to Gnosis Safe multisig (Salud Capital treasury). B2B partner USDC deposits. "Login with Unstoppable" OAuth entry point. Investor/partner-facing identity. Also linked to SaludID SAID tokens as the user-facing identity string at MinuteClinic check-in.

★ saludrewards.x — REACH Portal

Resolves to CampaignManager.sol contract address. Brands deposit USDC to saludrewards.x — no hex address needed. Consumer-facing Salud Tokens + REACH rewards portal entry point.

★ saludcap.bitcoin — BTC Corridor

Resolves to Bitcoin receiving address (from Bitso account). Opens BTC remittance rail alongside USDC. Senders use saludcap.bitcoin; Bitso handles USDC↔BTC↔MXN swap. No Bitcoin infrastructure build required.

★ salud-vault — Decentralized dApp

Resolves to ERC-4337 smart account factory + IPFS dApp hash. Decentralized hosting alongside salud-vault.com. No server to go down, no domain registrar seizure. Reinforces "you own your assets" brand narrative.

Domain Resolves To Use Phase
salud-vaultERC-4337 factory + IPFS dApp hashPrimary dApp. Decentralized hosting.Phase 6
saludcap.xGnosis Safe multisigCorporate identity. UD Login. B2B deposits.Phase 6
saludrewards.xCampaignManager.solBrand USDC deposit. REACH portal.Phase 2
saludcap.bitcoinBTC address (Bitso)BTC remittance corridor via Bitso swap.Phase 2
saludcap.nftSaludPass.solNFT marketplace issuer identity for SPASS.Phase 1 mainnet
saludrewards.nftSaludReach.solREACH campaign token marketplace identity.Phase 2
saludrewards.bitcoinBTC redemption addressBTC-rail reward redemption for BTC users.Phase 2
saludcoin.xRedirect → Salud Tokens info pageBrand protection ONLY. Never use as receiving address. "Coin" framing conflicts with Howey non-security defense.Immediately
// UD Resolution — React Native Send Flow (npm install @unstoppabledomains/resolution)
import Resolution from '@unstoppabledomains/resolution';
const resolution = new Resolution();

async function resolveRecipient(input: string): Promise<string> {
  if (ethers.isAddress(input)) return input;       // already a hex address
  if (input.includes('.')) {
    try {
      const addr = await resolution.addr(input, 'MATIC');  // Polygon-native
      if (addr) return addr;
    } catch { throw new Error(`Domain "${input}" not found.`); }
  }
  throw new Error('Enter a wallet address or domain (e.g. saludcap.x)');
}
// UI: recipient field shows "✓ saludcap.x → 0x742d..." green text
// User MUST tap "Confirm & Send" — never auto-send to resolved address
// Post-Mainnet UD Dashboard Config — 2-Minute Web UI (No Solidity)

After Phase 6 mainnet deploy: log into unstoppabledomains.com dashboard. For each domain, set the Polygon (MATIC) resolution address to the deployed contract or Gnosis Safe address. saludcoin.x: set immediately as a redirect — do not wait for mainnet. This is a web UI operation, not a smart contract call. No gas cost. Permanent.