How the Bridge Works

Architecture, trust model, security properties, and the roadmap from trusted to trustless.

What is wtJKC?

Wrapped tJunkcoin (wtJKC) is a 1:1 backed ERC-20 token on supported EVM chains. It lets tJunkcoin (tJKC) participate in EVM DeFi, DEXs, and wallets without changing the native tJunkcoin chain.

πŸ’‘ Mint / Burn Model

wtJKC is minted on-demand when tJKC is deposited, and burned when wtJKC is withdrawn back to tJKC. The bridge contract is the sole minter. Supply is elastic: totalSupply() equals the amount of tJKC currently held in the bridge custody wallet. A hard cap of 54,000,000 wtJKCprevents minting beyond the native chain's capacity.

Max Supply Cap
54,000,000
wtJKC β€” hard cap, elastic supply
Bridge Fee
0.50%
Max 1%, set by owner
Minimum
2 tJKC
Per deposit or withdrawal
Committee
2-of-3
FROST threshold Schnorr

Deployed contract

Live values are read from the event indexer, not from the RPC β€” only deployment metadata and the contract's immutable constants come from configuration.

Addresses
Deployerβ€”
Ownerβ€”
Deploy block57526855
Deployedβ€”
Network
EVM chainLitVM LiteForge (4441)
UTXO chaintJunkcoin β€” tJKC
Confirmations6 tJKC
Indexerloading…
Statusβ€”
Parameters
Bridge feeβ€” (max 1%)
Max supply54,000,000 wtJKC
Daily mint capβ€” wtJKC
Circulatingβ€” wtJKC
FROST custody
Custody addressβ€”
Group key (x-only)β€”
Custody typeP2TR (Taproot, key-path spend)
Signature schemeBIP-340 Schnorr (FROST)

Current Trust Model

⚠️ Trusted Setup β€” Read This First

The wtJKC Bridge is currently operated by a single 2-of-3 committee run by thetJunkcoin development team. The committee holds shares of one FROST threshold key; no member ever holds the full key. This is a deliberate choice for the initial launch to enable fast iteration and incident response.

What this means for you: You are trusting the committee operators not to collude and steal funds. The contract verifies a single threshold signature against the group key, so a compromised member cannot act alone β€” but all three members are currently controlled by the same organisation.

Phase 1 β€” NowTrusted Validators (Centralised)
Three validator nodes each hold a share of one FROST threshold key. The same group key secures the tJunkcoin Taproot custody and signs every EVM attestation as a BIP-340 Schnorr signature β€” there is no separate EVM key. A threshold of shares is required to mint wtJKCor release tJKC. On-chain safeguards (rate limits, daily mint cap, pause) are active. Users trust the team's operational security.
  • Daily wtJKC mint is capped β€” limits the blast radius of a breach
  • Pause mechanism β€” team can halt the bridge instantly
  • 7-day withdrawal cancellation window for user protection
  • Each attestation is an EIP-712 typed digest (chain + contract + data specific), signed with the committee's BIP-340 Schnorr key
  • Validators run independently with no shared database β€” each node verifies every claim against on-chain data (both the EVM contract and the tJunkcoin chain) before signing. On-chain data is the source of truth; peer messages are never trusted unverified.
  • The payout leader commits to the exact transaction fingerprint inside the signing session, and every co-signer rebuilds it deterministically and refuses to sign unless it matches. Two committees can therefore never sign two different payouts of the same withdrawal.
Phase 2 β€” NextPermissioned External Validators
Add independent operators to the committee without changing the custody key or address. FROST proactive refresh and committee expansion are already implemented and preserve the group key, so membership can grow (and a lost node can be repaired) without moving funds.
Phase 3 β€” LaterTrustless via Light Client or ZK Proof
Replace validator attestations with a cryptographic proof of the tJKC chain state β€” either a tJunkcoin SPV light client or a ZK proof of UTXO inclusion. No validator trust required; the contract verifies the tJKC transaction itself.

tJKC β†’ wtJKC (Deposit)

Deposit tJKC on the tJunkcoin network and receive wtJKC on the EVM chain. After 6 tJKC confirmations, the committee verifies and mints wtJKC to your wallet.

  1. 1
    Create a deposit intent.Connect your EVM wallet and enter the amount. The frontend generates OP_RETURN metadata containing your EVM address β€” this routes wtJKC to your wallet automatically.
  2. 2
    Send tJKC to the custody address.Transfer native tJKC to the bridge custody address shown in the UI, and attach the OP_RETURN metadata. You can send from any self-custody wallet.
  3. 3
    Auto-detect on-chain.After sending, click "I've Sent" in the bridge UI. The frontend scans the tJunkcoin chain directly for your transaction by matching the OP_RETURN metadata to your EVM address β€” no manual TXID entry needed.
  4. 4
    Wait for 6 tJKC confirmations.The node waits for 6 block confirmations to prevent double-spend and reorg attacks.
  5. 5
    Validators verify and sign.Each validator watches the custody address on the tJunkcoin chain directly β€” detection does not depend on this frontend. Each independently checks: OP_RETURN contains a valid EVM address, amount β‰₯ 2 tJKC, TXID not previously processed on the bridge contract. They each sign the EIP-712 deposit digest (chainId + bridge address + recipient + amount + TXID) with their FROST shares, producing one threshold signature.
  6. 6
    wtJKC minted on EVM.Once the MPC validator committee reaches threshold consensus, a validator calls registerDepositClaim()with the committee's joint MPC signature to register the deposit on-chain. You then call claimDeposit() to mintwtJKC to your wallet minus the fee (user pays EVM gas). The daily mint limit is checked at registration time.

wtJKC β†’ tJKC (Withdrawal)

Burn your wtJKC on the EVM chain and receive native tJKC to your tJunkcoin wallet. An elected leader builds the tJKC UTXO transaction and commits to its exact fingerprint; the other validators rebuild it deterministically, verify it, and only then co-sign.

  1. 1
    Approve and initiate.Approve the bridge contract to spend your wtJKC, then call initiateWithdrawal(amount, jkcAddress, maxFeeBps). The maxFeeBps parameter is a slippage guard β€” the call reverts if the current fee is higher than your specified maximum. Your wtJKC is burned (net amount) and the fee is retained by the bridge.
  2. 2
    On-chain event emitted.The contract emits WithdrawalInitiated with your tJKC destination address and net amount after fee. The fee is fixed at the moment of initiation β€” it cannot change later even if the owner updates feeBps.
  3. 3
    A leader validator is deterministically elected.One validator is deterministically elected leader for your withdrawal (rotating every timeout, anchored to the EVM block timestamp so all validators agree on the schedule). The leader builds the deterministic tJKC payout transaction from the custody UTXO set, and records its fingerprint in a persistent sign-once registry to prevent double-signing.
  4. 4
    Validators verify and threshold-sign via FROST MPC.Each validator in the round's committee re-verifies the proposal against on-chain data: the WithdrawalInitiated event (destination + amounts), every input UTXO (owned by custody and still unspent), and every output (your address, exact net amount, change back to custody). Once verified and sign-once is asserted, the committee participates in the off-chain FROST MPC signing round.
  5. 5
    tJKC arrives in your wallet.Once FROST MPC threshold signing completes, the transaction is broadcast to the tJunkcoinnetwork. You receive native tJKC minus a small tJKCnetwork fee. The payout embeds your withdrawal's EVM transaction hash as an OP_RETURN output β€” a public, verifiable link between the burn on the EVM chain and the payout on the tJunkcoin chain.
  6. 6
    The withdrawal is closed on-chain.The committee signs the EIP-712 WithdrawalConfirmed digest carrying the tJKCtransaction ID and submits confirmWithdrawal(). The contract marks your withdrawal completed and permanently records the tJKC TXID β€” the same TXID can never close two withdrawals.
πŸ›‘οΈ Double-Payout Protection

Three independent layers prevent a withdrawal from ever being paid twice: the on-chain fingerprint gate serializes which single transaction may be signed; every validator keeps a durable sign-once record and scans the tJunkcoin chain and mempool for an existing payout (via the OP_RETURN link) before signing or broadcasting; and deterministic coin selection means two conflicting attempts would spend the same UTXOs β€” the tJunkcoin chain itself rejects the second. A reconciliation watchdog additionally checks that custody funds always cover the outstanding wtJKC supply.

πŸ” Withdrawal Cancellation

If a validator has not processed your withdrawal after 7 days, you can cancel it yourself on-chain. Your wtJKC (including the fee) will be returned to your wallet. Use the Activity tab to find the cancellation option.


Smart Contract Safeguards

The following protections are enforced by the smart contract β€” they cannot be overridden by the validators or the owner.

  • Replay protection. processedTxids permanently records every completed tJKC deposit, and processedJkcTxids records every tJKC payout TXID β€” the same transaction can never mint twice or close two withdrawals. Resubmitting reverts with AlreadyProcessed.
  • Payout fingerprint gate. Before any signature exists, the leader commits to the exact tJKC transaction fingerprint and every co-signer rebuilds it deterministically from on-chain state. A co-signer refuses to sign anything that does not match β€” a node that lost all local state still cannot be tricked into signing a competing payout. The gate holds no funds and reads its committee from the bridge, so rotating validators on the bridge applies everywhere at once.
  • EIP-712 structured signatures. Each validator signature commits to the exact chain ID, bridge address, recipient, amount, and tJKC TXID using typed data signing. A signature from one chain or contract is useless on another.
  • Duplicate signer prevention. A single validator cannot submit two copies of their own signature to meet the threshold β€” the contract checks for duplicate signers in each call.
  • Daily mint rate limit. A configurable maxDailyMint cap (5M wtJKC/day by default) limits how much can be minted per 24-hour window. Even if all 3 validator keys were compromised, an attacker could only mint up to this limit per day, giving the team time to pause the bridge and respond.
  • Reentrancy guard. registerDepositClaim(), claimDeposit(), and refundFailedWithdrawal() use ReentrancyGuard. State is always updated before external token transfers (CEI pattern).
  • Pause / emergency stop. The owner can pause all deposits and withdrawals instantly. If paused for more than 7 days with no owner action, anyone can trigger an emergency unpause to prevent the contract being frozen forever.
  • Fee cap. The bridge fee cannot exceed 1% (100 bps) β€” hardcoded in the contract. The owner cannot change this cap.
  • Minimum deposit. Transactions below 2 tJKC / 2 wtJKC are rejected to prevent dust spam.
  • Ownership protection. Ownership transfer requires two steps (propose + accept). renounceOwnership() is permanently disabled β€” the contract cannot be made ownerless accidentally.
  • Fee stored at initiation. The withdrawal fee is set at the moment you call initiateWithdrawal(). A later fee change by the owner does not affect pending withdrawals.

Risks & Honest Limitations

  • Validator collusion (Phase 1 risk). All 3 validator nodes are controlled by the same team. If the team colluded or was coerced, 2 of the 3 keys could mint wtJKCbeyond users' deposits. The daily rate limit reduces this to a maximum of maxDailyMint wtJKC per day. This risk is addressed in Phase 2 with independent validator operators.
  • tJKC custody key compromise. The tJunkcoin UTXO custody address is a Taproot P2TR address protected by FROST threshold MPC. Multiple independent key shares are required to produce any valid signature. Mitigation: key shares are encrypted at rest with Argon2id + AES-256-GCM and stored on isolated validator hosts.
  • Validator liveness. If all 3 nodes go offline, new deposits and withdrawals stall. Your funds are never at risk β€” wtJKC in the contract is safe, and you can cancel a pending withdrawal after 7 days. Service resumes when nodes come back online.
  • tJunkcoin reorg. The 70-confirmation requirement makes a successful reorg attack on a processed deposit extremely unlikely (~70Γ— harder than a 1-confirmation attack).
  • Frontend trust. The frontend is a convenience layer, not a security layer. A compromised or replaced frontend could show a wrong custody address. Always verify the custody address against the official source before sending large amounts.
  • Wrong tJKC address. tJunkcoin UTXO transactions are irreversible. If you enter an incorrect destination address during withdrawal, the funds cannot be recovered. Triple-check before confirming.
  • Supply cap. The bridge cannot mint more than 54,000,000 wtJKC total. Daily mint rate limits provide additional protection. Withdrawals (wtJKC β†’ tJKC) burn tokens, reducing circulating supply.

Fees

A 0.50% bridge fee is charged on both deposits and withdrawals. The fee is deducted from the transferred amount β€” you always receive slightly less than you send. Fees accumulate as wtJKC inside the bridge contract and are periodically withdrawn by the owner to fund operations.

The fee is capped at 1% maximum by the contract β€” the owner cannot set it higher. The current fee is always visible in the bridge UI before you confirm a transaction.

Minimum transaction size: 2 tJKC / wtJKC. Amounts below this threshold are rejected to prevent spam.

Gas Costs (EVM)

Validators call registerDepositClaim() to register deposits on-chain (they pay a small amount of EVM gas). Users then call claimDeposit() to mint theirwtJKC to their own wallet β€” users pay their own EVM gas for claiming. A registered claim must be claimed within 30 days, after which it can be re-registered. The 0.50% bridge fee funds bridge operations; no separate gas tank is used.


⚠️ User Security Checklist
  • Deposit: Include the OP_RETURN metadata in your tJKC transaction. This routes wtJKC to your connected EVM wallet automatically.
  • Withdrawal: Triple-check your tJKC destination address before confirming.tJunkcoin transactions are irreversible.
  • Custody address: Verify the tJKC custody address against the officialtJunkcoin Bridge announcement before sending. A fake frontend cannot be ruled out.
  • No exchanges: Do not send tJKC from or to exchange addresses. Use a self-custodied wallet only.
  • Time: A deposit needs 6 tJKC confirmations plus one attestation transaction. A withdrawal needs the committee signing round plus the tJKC payout.
  • Cancellation: If your withdrawal is not processed within 7 days, you can cancel it on-chain and recover your wtJKC.