[{"data":1,"prerenderedAt":1561},["ShallowReactive",2],{"navigation":3,"page-en-\u002Fconcepts\u002Fhydra-v2-changes":160,"surround-en-\u002Fconcepts\u002Fhydra-v2-changes":1556},[4,28,65,99,130,151],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":23,"path":24,"stem":25,"icon":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings-2",false,{"title":29,"path":30,"stem":31,"children":32,"icon":34},"Guides","\u002Fguides","2.guides\u002F1.index",[33,35,40,45,50,55,60],{"title":29,"path":30,"stem":31,"icon":34},"i-lucide-book-open",{"title":36,"path":37,"stem":38,"icon":39},"Build a Wallet App","\u002Fguides\u002Fbuild-wallet-app","2.guides\u002F2.build-wallet-app","i-lucide-wallet",{"title":41,"path":42,"stem":43,"icon":44},"Building Transactions","\u002Fguides\u002Ftransactions","2.guides\u002F3.transactions","i-lucide-file-signature",{"title":46,"path":47,"stem":48,"icon":49},"Mint and Burn Tokens Guide","\u002Fguides\u002Fmint-burn-tokens","2.guides\u002F4.mint-burn-tokens","i-lucide-coins",{"title":51,"path":52,"stem":53,"icon":54},"Hydra Integration Examples","\u002Fguides\u002Fhydra-integration","2.guides\u002F5.hydra-integration","i-lucide-network",{"title":56,"path":57,"stem":58,"icon":59},"Utilities Cookbook","\u002Fguides\u002Futilities-cookbook","2.guides\u002F6.utilities-cookbook","i-lucide-wrench",{"title":61,"path":62,"stem":63,"icon":64},"Integrate from Cardano-CLI","\u002Fguides\u002Fcardano-cli-keys","2.guides\u002F7.cardano-cli-keys","i-lucide-key-round",{"title":66,"path":67,"stem":68,"children":69,"icon":98},"Concepts","\u002Fconcepts","3.concepts\u002F1.index",[70,73,78,83,88,93],{"title":71,"path":67,"stem":68,"icon":72},"Why Hydra?","i-lucide-circle-help",{"title":74,"path":75,"stem":76,"icon":77},"Commit to Hydra","\u002Fconcepts\u002Fcommit-to-hydra","3.concepts\u002F2.commit-to-hydra","i-lucide-arrow-down-to-line",{"title":79,"path":80,"stem":81,"icon":82},"Decommit from Hydra","\u002Fconcepts\u002Fdecommit-from-hydra","3.concepts\u002F3.decommit-from-hydra","i-lucide-arrow-up-from-line",{"title":84,"path":85,"stem":86,"icon":87},"Transactions in Hydra","\u002Fconcepts\u002Ftransactions-in-hydra","3.concepts\u002F4.transactions-in-hydra","i-lucide-arrow-left-right",{"title":89,"path":90,"stem":91,"icon":92},"Smart Contracts in Hydra","\u002Fconcepts\u002Fsmart-contracts-in-hydra","3.concepts\u002F5.smart-contracts-in-hydra","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"icon":97},"Hydra Protocol Versions","\u002Fconcepts\u002Fhydra-v2-changes","3.concepts\u002F6.hydra-v2-changes","i-lucide-git-compare","i-lucide-lightbulb",{"title":100,"path":101,"stem":102,"children":103,"icon":129},"API Reference","\u002Fapi","4.api\u002F1.index",[104,106,111,116,120,125],{"title":100,"path":101,"stem":102,"icon":105},"i-lucide-book-marked",{"title":107,"path":108,"stem":109,"icon":110},"@hydra-sdk\u002Fcore","\u002Fapi\u002Fcore","4.api\u002F2.core","i-lucide-box",{"title":112,"path":113,"stem":114,"icon":115},"@hydra-sdk\u002Fbridge","\u002Fapi\u002Fbridge","4.api\u002F3.bridge","i-lucide-cable",{"title":117,"path":118,"stem":119,"icon":44},"@hydra-sdk\u002Ftransaction","\u002Fapi\u002Ftransaction","4.api\u002F4.transaction",{"title":121,"path":122,"stem":123,"icon":124},"@hydra-sdk\u002Fcardano-wasm","\u002Fapi\u002Fcardano-wasm","4.api\u002F5.cardano-wasm","i-lucide-cpu",{"title":126,"path":127,"stem":128,"icon":59},"@hydra-sdk\u002Fcore - Utilities","\u002Fapi\u002Futilities","4.api\u002F6.utilities","i-lucide-braces",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":27},"Resources","i-lucide-archive","\u002Fresources","5.resources",[136,141,146],{"title":137,"path":138,"stem":139,"icon":140},"Change Logs","\u002Fresources\u002Fchangelog","5.resources\u002F1.changelog","i-lucide-history",{"title":142,"path":143,"stem":144,"icon":145},"Migration","\u002Fresources\u002Fmigration","5.resources\u002F2.migration","i-lucide-arrow-right-left",{"title":147,"path":148,"stem":149,"icon":150},"Performance & Comparison","\u002Fresources\u002Fperformance","5.resources\u002F3.performance","i-lucide-gauge",{"title":152,"path":153,"stem":154,"children":155,"icon":159},"AI","\u002Fai","6.ai\u002F1.index",[156],{"title":157,"path":153,"stem":154,"icon":158},"Use with AI","i-lucide-bot","i-lucide-sparkles",{"id":161,"title":94,"body":162,"description":1549,"extension":1550,"links":1551,"meta":1552,"navigation":1553,"path":95,"seo":1554,"stem":96,"__hash__":1555},"docs_en\u002F3.concepts\u002F6.hydra-v2-changes.md",{"type":163,"value":164,"toc":1515},"minimark",[165,174,211,216,416,420,428,499,514,535,538,547,551,556,574,615,620,651,656,677,681,692,696,713,717,807,811,824,828,842,869,873,880,884,898,902,916,920,946,959,963,966,970,976,1002,1005,1009,1027,1031,1049,1053,1094,1104,1108,1112,1195,1199,1282,1286,1296,1389,1404,1408,1418,1476,1480],[166,167,168,169,173],"p",{},"Hydra SDK talks to a ",[170,171,172],"code",{},"hydra-node",", and the node follows the Hydra Head protocol's own release cycle. This page tracks that cycle and which node versions the SDK supports.",[175,176,177,191],"note",{},[166,178,179,181,182,186,187,190],{},[170,180,112],{}," ",[183,184,185],"strong",{},"2.x targets the hydra-node v2 line"," (verified against ",[183,188,189],{},"2.3.0","). The bridge major version tracks the hydra-node major version.",[166,192,193,194,197,198,201,202,205,206,210],{},"Bridge ",[183,195,196],{},"1.x is end of life"," — it spoke the v1 ",[183,199,200],{},"commit-based"," flow and receives no further releases. v2 removed the commit phase entirely (ADR-33): a head opens directly, and funds enter through ",[183,203,204],{},"incremental deposits",". Upgrading is a breaking change; see the ",[207,208,209],"a",{"href":143},"migration guide",".",[212,213,215],"h2",{"id":214},"version-timeline","Version timeline",[217,218,219,241],"table",{},[220,221,222],"thead",{},[223,224,225,229,232,235,238],"tr",{},[226,227,228],"th",{},"Version",[226,230,231],{},"Date",[226,233,234],{},"Line",[226,236,237],{},"Status",[226,239,240],{},"Theme",[242,243,244,264,281,301,321,343,362,380,398],"tbody",{},[223,245,246,252,255,258,261],{},[247,248,249],"td",{},[170,250,251],{},"1.0.0",[247,253,254],{},"2025-10-08",[247,256,257],{},"v1",[247,259,260],{},"Stable",[247,262,263],{},"First production-ready release",[223,265,266,271,274,276,278],{},[247,267,268],{},[170,269,270],{},"1.1.0",[247,272,273],{},"2025-10-28",[247,275,257],{},[247,277,260],{},[247,279,280],{},"Deposit & fanout improvements",[223,282,283,288,291,293,295],{},[247,284,285],{},[170,286,287],{},"1.2.0",[247,289,290],{},"2025-11-28",[247,292,257],{},[247,294,260],{},[247,296,297,300],{},[170,298,299],{},"SafeClose",", Blockfrost TUI",[223,302,303,308,311,313,318],{},[247,304,305],{},[170,306,307],{},"1.3.0",[247,309,310],{},"2026-03-05",[247,312,257],{},[247,314,315],{},[183,316,317],{},"Stable (SDK target)",[247,319,320],{},"Sync, rollback & fee optimization",[223,322,323,328,331,333,336],{},[247,324,325],{},[170,326,327],{},"1.2.1",[247,329,330],{},"2026-04-22",[247,332,257],{},[247,334,335],{},"Pre-release",[247,337,338,339,342],{},"Backport: era-aware ",[170,340,341],{},"EpochInfo"," fix",[223,344,345,350,353,356,359],{},[247,346,347],{},[170,348,349],{},"2.0.0",[247,351,352],{},"2026-04-02",[247,354,355],{},"v2",[247,357,358],{},"Alpha (initial V2)",[247,360,361],{},"Protocol simplification (commit-less)",[223,363,364,369,372,374,377],{},[247,365,366],{},[170,367,368],{},"2.1.0",[247,370,371],{},"2026-05-13",[247,373,355],{},[247,375,376],{},"Superseded by 2.2.0",[247,378,379],{},"SQLite persistence, snapshot & security",[223,381,382,387,390,392,395],{},[247,383,384],{},[170,385,386],{},"2.2.0",[247,388,389],{},"2026-06-12",[247,391,355],{},[247,393,394],{},"Superseded by 2.3.0",[247,396,397],{},"Partial fanout, cheaper L2 transactions",[223,399,400,404,407,409,413],{},[247,401,402],{},[170,403,189],{},[247,405,406],{},"2026-07-15",[247,408,355],{},[247,410,411],{},[183,412,317],{},[247,414,415],{},"No snapshot Plutus re-eval, HD-wallet keys, YAML config",[212,417,419],{"id":418},"v130-stable-v1-line","v1.3.0 — Stable v1 line",[166,421,422,424,425,427],{},[170,423,307],{}," is the largest and most stable release in the v1 line, and is fully supported by ",[170,426,112],{},". Highlights relevant to SDK integrations:",[429,430,431,446,462,479,493],"ul",{},[432,433,434,437,438,441,442,445],"li",{},[183,435,436],{},"~4× cheaper fees"," for ",[170,439,440],{},"init"," \u002F ",[170,443,444],{},"open"," and related on-chain transactions, thanks to improved fee estimation.",[432,447,448,451,452,441,455,458,459,461],{},[183,449,450],{},"Out-of-sync protection (breaking)"," — the node now rejects inputs while it is behind the chain, surfacing ",[170,453,454],{},"NodeUnsynced",[170,456,457],{},"NodeSynced"," state. Client code should wait for ",[170,460,457],{}," before submitting.",[432,463,464,471,472,475,476,478],{},[183,465,466,467,470],{},"Richer ",[170,468,469],{},"Greetings"," (breaking)"," — the greeting message now carries ",[170,473,474],{},"currentSlot"," and sync status; ",[170,477,112],{}," reads these extended fields.",[432,480,481,484,485,488,489,492],{},[183,482,483],{},"Longer contestation period (breaking)"," — ",[170,486,487],{},"defaultContestationPeriod"," changed from 10 minutes to ",[183,490,491],{},"12 hours",", which affects how long closing a head takes.",[432,494,495,498],{},[183,496,497],{},"Bounded transactions per snapshot"," and fixes for deposits\u002Fdecommits across chain rollbacks.",[166,500,501,181,504,507,508,507,511],{},[183,502,503],{},"Compatible tooling:",[170,505,506],{},"cardano-node 10.6.2"," · ",[170,509,510],{},"cardano-cli 10.15.0.0",[170,512,513],{},"mithril 2524.0",[175,515,516],{},[166,517,518,521,522,524,525,528,529,532,533,210],{},[170,519,520],{},"v1.2.1"," (pre-release) backports the era-aware ",[170,523,341],{}," fix from V2 to the v1 line, correcting ",[170,526,527],{},"POSIXTime"," values inside Plutus ",[170,530,531],{},"ScriptContext"," on multi-era chains. It is a pre-release — prefer ",[170,534,307],{},[536,537],"hr",{},[166,539,540,541,544,545,210],{},"Everything below describes the ",[183,542,543],{},"V2 line",". It changes the head lifecycle and on-chain scripts; V2 stabilized with ",[170,546,386],{},[212,548,550],{"id":549},"_200-protocol-simplification","2.0.0 — Protocol simplification",[552,553,555],"h3",{"id":554},"remove-commit-phase-directly-open-heads","Remove commit phase — directly open heads",[166,557,558,559,562,563,566,567,566,570,573],{},"The most fundamental change in Hydra V2: ",[183,560,561],{},"the commit phase is removed",". In V1, opening a head required all participants to commit UTxOs during an initialization phase (",[170,564,565],{},"Init"," → ",[170,568,569],{},"Commit",[170,571,572],{},"CollectCom","). In V2:",[429,575,576,595,606],{},[432,577,578,579,582,583,586,587,590,591,594],{},"Heads open ",[183,580,581],{},"directly"," after initialization — no ",[170,584,585],{},"commit",", ",[170,588,589],{},"collectCom",", or ",[170,592,593],{},"abort"," transactions.",[432,596,597,598,601,602,605],{},"Funds are added ",[183,599,600],{},"incrementally"," via ",[170,603,604],{},"deposit"," transactions while the head is already open.",[432,607,608,609,210],{},"This decision is documented in ",[207,610,614],{"href":611,"rel":612},"https:\u002F\u002Fhydra.family\u002Fhead-protocol\u002Fadr\u002F33",[613],"nofollow","ADR-33",[166,616,617],{},[183,618,619],{},"Benefits:",[429,621,622,628,634],{},[432,623,624,627],{},[183,625,626],{},"Simplified lifecycle",": removes the multi-step head opening process, reducing operational complexity.",[432,629,630,633],{},[183,631,632],{},"Resolved \"non-abortable head\" issue",": previously, a participant committing too large a UTxO could make the head un-abortable. This problem no longer exists.",[432,635,636,639,640,642,643,645,646,210],{},[183,637,638],{},"Lower costs",": eliminating ",[170,641,589],{}," and ",[170,644,593],{}," transactions reduces total on-chain costs for most use cases. See ",[207,647,650],{"href":648,"rel":649},"https:\u002F\u002Fhydra.family\u002Fhead-protocol\u002Funstable\u002Fbenchmarks\u002Ftransaction-cost",[613],"transaction cost benchmarks",[166,652,653],{},[183,654,655],{},"API changes:",[429,657,658,667,674],{},[432,659,660,663,664,666],{},[170,661,662],{},"\u002Fcommit"," endpoint behavior changes — it now accepts ",[170,665,604],{}," transactions directly since heads open without a prior commit phase.",[432,668,669,670,673],{},"Head initialization endpoint (",[170,671,672],{},"GET \u002Fhead-initialization",") removed.",[432,675,676],{},"All on-chain scripts changed — new script hashes across all networks.",[552,678,680],{"id":679},"hydraheadv2-token","HydraHeadV2 token",[166,682,683,684,687,688,691],{},"The head token name has been upgraded from ",[170,685,686],{},"HydraHeadV1"," to ",[170,689,690],{},"HydraHeadV2",". This ensures version differentiation and prevents interaction between V1 and V2 heads — code that identifies heads on L1 by token name must be updated.",[552,693,695],{"id":694},"era-aware-plutus-scripts","Era-aware Plutus scripts",[166,697,698,699,702,703,705,706,709,710,712],{},"L2 ledger ",[170,700,701],{},"Globals"," now uses era-aware ",[170,704,341],{}," queried from the blockchain instead of ",[170,707,708],{},"fixedEpochInfo",", ensuring correct ",[170,711,527],{}," values for time-sensitive Plutus scripts on multi-era chains (mainnet\u002Ftestnet).",[552,714,716],{"id":715},"snapshot-deposit-fixes","Snapshot & deposit fixes",[217,718,719,729],{},[220,720,721],{},[223,722,723,726],{},[226,724,725],{},"Issue",[226,727,728],{},"Description",[242,730,731,757,770,787],{},[223,732,733,738],{},[247,734,735],{},[183,736,737],{},"Stuck in RequestedSnapshot",[247,739,740,741,744,745,748,749,752,753,756],{},"Fixed a head getting permanently stuck when ",[170,742,743],{},"CommitFinalized"," races with an in-flight ",[170,746,747],{},"ReqSn",". Only ",[170,750,751],{},"SeenSnapshot"," now blocks re-request; ",[170,754,755],{},"RequestedSnapshot"," retries correctly.",[223,758,759,764],{},[247,760,761],{},[183,762,763],{},"Silently dropped deposits",[247,765,766,767,210],{},"Deposits that become active while a snapshot is in-flight are no longer silently dropped — the next chained snapshot picks them up via ",[170,768,769],{},"selectNextDeposit",[223,771,772,777],{},[247,773,774],{},[183,775,776],{},"Cross-head deposit contamination",[247,778,779,780,783,784,210],{},"Deposits from other heads are no longer picked up when multiple heads share the same network — ",[170,781,782],{},"depositsForHead"," is applied consistently, and deposit aggregate cases are guarded by ",[170,785,786],{},"headId",[223,788,789,794],{},[247,790,791],{},[183,792,793],{},"100 ADA commit limit removed",[247,795,796,797,799,800,803,804,806],{},"The hard-coded 100 ADA mainnet commit limit was removed. Until ",[170,798,386],{},", conservative deposit amounts were still advised for full fund safety — the ",[183,801,802],{},"Partial fanout"," feature in ",[170,805,386],{}," (below) lifts that ceiling entirely.",[212,808,810],{"id":809},"_210-persistence-resilience","2.1.0 — Persistence & resilience",[175,812,813],{},[166,814,815,817,818,820,821,823],{},[170,816,368],{}," is superseded by ",[170,819,386],{}," — prefer ",[170,822,386],{}," for the V2 line.",[552,825,827],{"id":826},"sqlite-backed-event-store","SQLite-backed event store",[166,829,830,831,834,835,837,838,841],{},"File-based persistence (the append-only JSON ",[170,832,833],{},"state"," file) is replaced with a ",[183,836,827],{}," (",[170,839,840],{},"hydra.db","):",[429,843,844,850,866],{},[432,845,846,847,210],{},"Events are persisted in ",[170,848,849],{},"\u003Cpersistence-dir>\u002Fhydra.db",[432,851,852,853,855,856,859,860,862,863,210],{},"On first startup after upgrading, existing ",[170,854,833],{}," files are ",[183,857,858],{},"automatically migrated"," into ",[170,861,840],{}," and renamed to ",[170,864,865],{},"state.migrated",[432,867,868],{},"Startup and recovery performance improve significantly.",[552,870,872],{"id":871},"deposit-security-hardening","Deposit security hardening",[166,874,875,876,879],{},"The deposit Plutus validator has been hardened against ",[183,877,878],{},"malformed increment transactions",", closing a security gap in on-chain deposit handling.",[552,881,883],{"id":882},"snapshot-latency-improvement","Snapshot latency improvement",[166,885,886,887,890,891,893,894,897],{},"Snapshot confirmation latency is reduced by ",[183,888,889],{},"~7% on average"," by caching pre-computed signable bytes in ",[170,892,751],{},". This avoids repeated UTxO serialization and hashing on every ",[170,895,896],{},"AckSn"," verification during signing rounds.",[552,899,901],{"id":900},"blockfrost-error-resilience","Blockfrost error resilience",[166,903,904,905,586,908,911,912,915],{},"Transient chain-following errors in the Blockfrost backend (",[170,906,907],{},"DecodeError",[170,909,910],{},"MissingNextBlockHash",", etc.) are now retried with ",[183,913,914],{},"exponential backoff"," instead of crashing the node.",[552,917,919],{"id":918},"other-changes","Other changes",[429,921,922,932,939],{},[432,923,924,927,928,931],{},[170,925,926],{},"List"," replaced with ",[170,929,930],{},"Seq"," to speed up transaction processing in certain operations.",[432,933,934,935,938],{},"Several ",[170,936,937],{},"StateChanged"," event fields were renamed or removed (see breaking changes below).",[432,940,941,942,945],{},"Upgraded to ",[170,943,944],{},"cardano-node"," protocol version 12+.",[166,947,948,181,950,507,953,507,956],{},[183,949,503],{},[170,951,952],{},"cardano-node 11.0.1",[170,954,955],{},"cardano-cli 11.0.0",[170,957,958],{},"mithril 2617",[212,960,962],{"id":961},"_220-partial-fanout-cheaper-l2","2.2.0 — Partial fanout & cheaper L2",[166,964,965],{},"This is the current stable V2 release.",[552,967,969],{"id":968},"partial-fanout-no-more-per-head-utxo-ceiling","Partial fanout — no more per-head UTxO ceiling",[166,971,972,973,975],{},"Until now, the number of UTxOs a head could hold was effectively capped by what fit in a single fanout transaction. ",[183,974,802],{}," removes that limit:",[429,977,978,989,995],{},[432,979,980,981,984,985,988],{},"A head with an arbitrarily large UTxO set is closed out across multiple steps — each ",[170,982,983],{},"PartialFanoutTx"," distributes as many outputs as fit in one transaction, and a final ",[170,986,987],{},"FinalPartialFanoutTx"," burns the head tokens to complete the process.",[432,990,991,992,210],{},"Every step is verified on-chain with a ",[183,993,994],{},"BLS accumulator membership proof",[432,996,997,998,1001],{},"The chunk size is determined ",[183,999,1000],{},"dynamically"," (binary search over valid sizes) rather than by a hard-coded limit.",[166,1003,1004],{},"This resolves the conservative-deposit caveat from V2's early releases.",[552,1006,1008],{"id":1007},"cheaper-l2-transactions","Cheaper L2 transactions",[166,1010,1011,1014,1015,1018,1019,1022,1023,1026],{},[170,1012,1013],{},"utxoCostPerByte"," is set to ",[183,1016,1017],{},"zero"," on L2, so a ",[170,1020,1021],{},"NewTx"," can be submitted with as little as ",[183,1024,1025],{},"1 lovelace"," — lowering the cost of transacting inside a head.",[552,1028,1030],{"id":1029},"revamped-hydra-tui","Revamped hydra-tui",[166,1032,1033,1034,1037,1038,642,1041,1044,1045,1048],{},"A substantially revised ",[170,1035,1036],{},"hydra-tui",": pending-deposit recovery from ",[170,1039,1040],{},"Open",[170,1042,1043],{},"Closed","\u002F",[170,1046,1047],{},"Final"," states, a dark\u002Flight theme toggle persisted to config, an event-history filter (all vs errors only), and tab navigation.",[552,1050,1052],{"id":1051},"correctness-performance-fixes","Correctness & performance fixes",[429,1054,1055,1058,1061,1075,1082],{},[432,1056,1057],{},"Fixed replaying persisted events from a previous head corrupting the state of a newly opened head.",[432,1059,1060],{},"Fixed a recovered incremental-commit deposit reappearing in the L2 UTxO after sideloading a snapshot (which made the same UTxO spendable on L1 and L2 at once).",[432,1062,1063,1064,1067,1068,642,1071,1074],{},"Added a ",[170,1065,1066],{},"mustNotMintOrBurn"," guard to the ",[170,1069,1070],{},"Increment",[170,1072,1073],{},"Decrement"," validator transitions.",[432,1076,1077,1078,1081],{},"Reduced on-disk event-store growth by dropping redundant ",[170,1079,1080],{},"newLocalUTxO"," fields (post-tx UTxO is recomputed arithmetically).",[432,1083,1084,1085,927,1088,1093],{},"Lazy ",[170,1086,1087],{},"Map",[183,1089,1090,1091],{},"strict ",[170,1092,1087],{}," to improve memory usage.",[166,1095,1096,181,1098,507,1100,507,1102],{},[183,1097,503],{},[170,1099,952],{},[170,1101,955],{},[170,1103,958],{},[212,1105,1107],{"id":1106},"breaking-changes-summary-v2","Breaking changes summary (V2)",[552,1109,1111],{"id":1110},"_210-statechanged-event-schema","2.1.0 — StateChanged event schema",[217,1113,1114,1124],{},[220,1115,1116],{},[223,1117,1118,1121],{},[226,1119,1120],{},"Event",[226,1122,1123],{},"Change",[242,1125,1126,1146,1161,1182],{},[223,1127,1128,1133],{},[247,1129,1130],{},[170,1131,1132],{},"SnapshotRequested",[247,1134,1135,566,1138,1141,1142,1145],{},[170,1136,1137],{},"snapshot",[170,1139,1140],{},"requestedSnapshot","; ",[170,1143,1144],{},"requestedTxIds"," removed (now carried inside the snapshot)",[223,1147,1148,1153],{},[247,1149,1150],{},[170,1151,1152],{},"PartySignedSnapshot",[247,1154,1155,566,1158],{},[170,1156,1157],{},"snapshot :: Snapshot tx",[170,1159,1160],{},"snapshotNumber :: SnapshotNumber",[223,1162,1163,1168],{},[247,1164,1165],{},[170,1166,1167],{},"SnapshotConfirmed",[247,1169,1170,566,1172,837,1175,1178,1179,1181],{},[170,1171,1157],{},[170,1173,1174],{},"snapshot :: Maybe (Snapshot tx)",[170,1176,1177],{},"Nothing"," when the snapshot was already carried by ",[170,1180,1132],{},")",[223,1183,1184,1189],{},[247,1185,1186],{},[170,1187,1188],{},"DecommitRecorded",[247,1190,1191,1194],{},[170,1192,1193],{},"utxoToDecommit :: UTxOType tx"," field removed",[552,1196,1198],{"id":1197},"_220-fanout-utxo-fields","2.2.0 — Fanout & UTxO fields",[217,1200,1201,1210],{},[220,1202,1203],{},[223,1204,1205,1208],{},[226,1206,1207],{},"Field \u002F event",[226,1209,1123],{},[242,1211,1212,1240,1267],{},[223,1213,1214,1220],{},[247,1215,1216,1219],{},[170,1217,1218],{},"HeadIsFinalized"," (server output)",[247,1221,1222,566,1225,1228,1229,1232,1233,1239],{},[170,1223,1224],{},"utxo",[170,1226,1227],{},"finalizedUTxO","; type changed from a UTxO map (keyed by ",[170,1230,1231],{},"TxIn",") to an ",[183,1234,1235,1236],{},"array of ",[170,1237,1238],{},"TxOut"," (intermediate partial-fanout outputs carry no spending reference)",[223,1241,1242,1248],{},[247,1243,1244,1247],{},[170,1245,1246],{},"ClosedState"," (persisted)",[247,1249,1250,566,1253,586,1256,566,1259,1262,1263],{},[170,1251,1252],{},"remainingFanoutUTxO",[170,1254,1255],{},"remainingFanoutOutputs",[170,1257,1258],{},"distributedFanoutUTxO",[170,1260,1261],{},"distributedFanoutOutputs","; both UTxO map → ",[183,1264,1235,1265],{},[170,1266,1238],{},[223,1268,1269,1278],{},[247,1270,1271,586,1274,586,1276],{},[170,1272,1273],{},"TransactionAppliedToLocalUTxO",[170,1275,1132],{},[170,1277,1188],{},[247,1279,1280,1194],{},[170,1281,1080],{},[552,1283,1285],{"id":1284},"hydra-script-hashes","Hydra script hashes",[166,1287,1288,1289,642,1292,1295],{},"On-chain scripts have new hashes with each protocol change. For the ",[183,1290,1291],{},"v1.3.0",[183,1293,1294],{},"V2"," lines (both supported by the bridge):",[217,1297,1298,1312],{},[220,1299,1300],{},[223,1301,1302,1305,1307,1309],{},[226,1303,1304],{},"Network",[226,1306,307],{},[226,1308,368],{},[226,1310,1311],{},"2.2.0 (two scripts)",[242,1313,1314,1339,1364],{},[223,1315,1316,1321,1326,1331],{},[247,1317,1318],{},[170,1319,1320],{},"preview",[247,1322,1323],{},[170,1324,1325],{},"8ae405c2…cf88621",[247,1327,1328],{},[170,1329,1330],{},"86288ee0…add66c4",[247,1332,1333,586,1336],{},[170,1334,1335],{},"52c84ab1…e799ad6c",[170,1337,1338],{},"dd4b3920…afb95f41",[223,1340,1341,1346,1351,1356],{},[247,1342,1343],{},[170,1344,1345],{},"preprod",[247,1347,1348],{},[170,1349,1350],{},"476b37a7…a11e8f3da",[247,1352,1353],{},[170,1354,1355],{},"16f275a5…54298e46",[247,1357,1358,586,1361],{},[170,1359,1360],{},"2c01bf78…9ea00b03",[170,1362,1363],{},"395ecc51…af4696dd",[223,1365,1366,1371,1376,1381],{},[247,1367,1368],{},[170,1369,1370],{},"mainnet",[247,1372,1373],{},[170,1374,1375],{},"2c6cff50…4d5e8b67",[247,1377,1378],{},[170,1379,1380],{},"a864514b…c45539da2",[247,1382,1383,586,1386],{},[170,1384,1385],{},"17fb77e1…b29d276b9",[170,1387,1388],{},"906ecc6e…76dbfc4a3",[166,1390,1391,1393,1394,1397,1398,1403],{},[170,1392,386],{}," publishes ",[183,1395,1396],{},"two"," script hashes per network because partial fanout adds the accumulator script. Always confirm the full hashes against the ",[207,1399,1402],{"href":1400,"rel":1401},"https:\u002F\u002Fgithub.com\u002Fcardano-scaling\u002Fhydra\u002Fblob\u002Fmaster\u002Fhydra-node\u002Fnetworks.json",[613],"networks.json"," for your exact node version.",[212,1405,1407],{"id":1406},"migrating-a-node-from-v1-to-v2","Migrating a node from V1 to V2",[166,1409,1410,1411,1414,1415,1417],{},"V1 → V2 is a ",[183,1412,1413],{},"breaking, one-way change"," at the protocol level — different protocol, token, and scripts, with no backward compatibility between a V1 and a V2 node. ",[170,1416,112],{}," supports both lines, so no SDK change is required; when you switch a node from V1 to V2:",[1419,1420,1421,1427,1433,1447,1453,1462],"ol",{},[432,1422,1423,1426],{},[183,1424,1425],{},"Close all active heads"," before upgrading the node.",[432,1428,1429,1432],{},[183,1430,1431],{},"Update script references"," — all hydra script hashes changed; update your network\u002Fscript configuration.",[432,1434,1435,1438,1439,1441,1442,1044,1444,1446],{},[183,1436,1437],{},"Update API consumers"," — adjust client code for the new ",[170,1440,937],{}," event schema, the ",[170,1443,1218],{},[170,1445,1246],{}," field changes, and the removed head-initialization endpoint.",[432,1448,1449,1452],{},[183,1450,1451],{},"Adapt the deposit workflow"," — replace the commit-then-open pattern with direct-open-then-deposit.",[432,1454,1455,1458,1459,1461],{},[183,1456,1457],{},"Verify the persistence directory"," — existing ",[170,1460,833],{}," files are auto-migrated to SQLite on first startup.",[432,1463,1464,484,1467,586,1470,586,1473,210],{},[183,1465,1466],{},"Upgrade companion tools",[170,1468,1469],{},"cardano-node >= 11.0.1",[170,1471,1472],{},"cardano-cli >= 11.0.0",[170,1474,1475],{},"mithril >= 2617",[212,1477,1479],{"id":1478},"references","References",[429,1481,1482,1488,1494,1501,1508],{},[432,1483,1484],{},[207,1485,1487],{"href":611,"rel":1486},[613],"ADR-33 — Directly Open Heads",[432,1489,1490],{},[207,1491,1493],{"href":648,"rel":1492},[613],"Transaction Cost Benchmarks",[432,1495,1496],{},[207,1497,1500],{"href":1498,"rel":1499},"https:\u002F\u002Fgithub.com\u002Fcardano-scaling\u002Fhydra\u002Freleases",[613],"GitHub Releases",[432,1502,1503],{},[207,1504,1507],{"href":1505,"rel":1506},"https:\u002F\u002Fgithub.com\u002Fcardano-scaling\u002Fhydra\u002Fblob\u002Fmaster\u002FCHANGELOG.md",[613],"Full Changelog",[432,1509,1510],{},[207,1511,1514],{"href":1512,"rel":1513},"https:\u002F\u002Fhydra.family\u002Fhead-protocol\u002F",[613],"Hydra Head Protocol Documentation",{"title":1516,"searchDepth":1517,"depth":1518,"links":1519},"",1,2,[1520,1521,1522,1529,1536,1542,1547,1548],{"id":214,"depth":1518,"text":215},{"id":418,"depth":1518,"text":419},{"id":549,"depth":1518,"text":550,"children":1523},[1524,1526,1527,1528],{"id":554,"depth":1525,"text":555},3,{"id":679,"depth":1525,"text":680},{"id":694,"depth":1525,"text":695},{"id":715,"depth":1525,"text":716},{"id":809,"depth":1518,"text":810,"children":1530},[1531,1532,1533,1534,1535],{"id":826,"depth":1525,"text":827},{"id":871,"depth":1525,"text":872},{"id":882,"depth":1525,"text":883},{"id":900,"depth":1525,"text":901},{"id":918,"depth":1525,"text":919},{"id":961,"depth":1518,"text":962,"children":1537},[1538,1539,1540,1541],{"id":968,"depth":1525,"text":969},{"id":1007,"depth":1525,"text":1008},{"id":1029,"depth":1525,"text":1030},{"id":1051,"depth":1525,"text":1052},{"id":1106,"depth":1518,"text":1107,"children":1543},[1544,1545,1546],{"id":1110,"depth":1525,"text":1111},{"id":1197,"depth":1525,"text":1198},{"id":1284,"depth":1525,"text":1285},{"id":1406,"depth":1518,"text":1407},{"id":1478,"depth":1518,"text":1479},"Hydra Head protocol release timeline, and which hydra-node versions each @hydra-sdk\u002Fbridge major supports.","md",null,{},{"icon":97},{"title":94,"description":1549},"-ku-Pff3LM2M2xMgHvesV6zCHA4peiowLIo0gVaQPr0",[1557,1559],{"title":89,"path":90,"stem":91,"description":1558,"icon":92,"children":-1},"Learn how to use Plutus smart contracts in Hydra Heads for complex DeFi and DApp logic",{"title":100,"path":101,"stem":102,"description":1560,"icon":105,"children":-1},"Per-package reference for the Hydra SDK — core, bridge, transaction, cardano-wasm, and the utility namespaces.",1784812305601]