Convert a deal — v1 to v2

A v1 deal is a template: aliases, a form, chain reads as URLs, a dialect of condition scripts, and transfer lines. A v2 deal is a policy: constants, typed inputs, named reads, derived values, rules with reasons, and the transaction — a pure function a signer can check. Same deal, different document, so a different id. This page maps one to the other in your browser and tells you exactly what moved, what was dropped and what could not be said. It works on any v1 deal — klotto's, xproof's, the archive's — not one shape.

v1 template paste one, or load
nothing yet
    v2 policy what the signers would verify
    
        
      

    What maps where

    v1v2note
    alias ∪ constantsconstantsconstants win over aliases, as the old server had it; an id written inline in a transfer gets a constant made for it
    parametersinputstyped from the prompt's example: [eg 0.0.12345] is an account, [eg 0.0.1-123-456] a txid, else a string. buyer becomes an account input
    apiobservethe host becomes a registry name (hedera.mirror, xproof.xtxt…) and the verifier picks the host; the #a/0/b selector becomes JMESPath. A host no name covers is refused
    regexderive / requirev2 has no regex. The three patterns the archive uses are engine ops in disguise — a digit of a timestamp, an account id with its checksum, a URL minus its scheme — and convert to them. A pattern that only checks a format is dropped when you tick the box, and listed as weakened
    mathFormuladerivethe expression, compiled to JSONLogic
    joinTextmemo / derivememo and memo_suffix become the memo; other joins become cat(…)
    rangerequireone rule per comparison, with its reason
    JWT · password · ip_allow · timelock · xproof (tweets) · PWYW · …—refused, by name: server-side checks with no chain-verifiable form. A v2 policy cannot keep a secret, read a tweet or remember who came before
    addHbarTransferhbarTransfersv1 wrote whole HBAR; v2 writes tinybars (× 1e8, must be whole)
    addTokenTransfer · addNftTransfertokenTransfers · nftTransferstoken amounts were already smallest units. An NFT line saying any or 1to100 is refused — v2 moves one serial
    display · userInput · commentsnamethe title is the name (it is hashed); the rest was presentation

    Klotto's own claim and unlock go through the exact path that reproduces its published v2 twins hash for hash (qa/klotto/convert-tests.js); everything else goes through the general mapping (kea/tools/convert-generic.cjs, qa/convert/generic-tests.js). Across a sample of 204 archive deals and xproof's 34, about 40% convert cleanly; the rest are refused for a reason this page will show you, most often a server-side script or a read from a host that no longer exists.