Skip to content

Commit

Permalink
Remove recover
Browse files Browse the repository at this point in the history
  • Loading branch information
v0d1ch committed Sep 19, 2024
1 parent 2340caf commit 2fa1046
Show file tree
Hide file tree
Showing 22 changed files with 617 additions and 678 deletions.
1 change: 0 additions & 1 deletion hydra-cluster/hydra-cluster.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ library
, async
, base >=4.7 && <5
, bytestring
, base16-bytestring
, cardano-slotting
, containers
, contra-tracer
Expand Down
82 changes: 0 additions & 82 deletions hydra-cluster/src/Hydra/Cluster/Scenarios.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import Data.Aeson.Lens (key, values, _JSON)
import Data.Aeson.Types (parseMaybe)
import Data.ByteString (isInfixOf)
import Data.ByteString qualified as B
import Data.ByteString.Base16 qualified as Base16
import Data.ByteString.Char8 qualified as BSC
import Data.List qualified as List
import Data.Set qualified as Set
Expand Down Expand Up @@ -648,87 +647,6 @@ canCommit tracer workDir node hydraScriptsTxId =

hydraNodeBaseUrl HydraClient{hydraNodeId} = "http://127.0.0.1:" <> show (4000 + hydraNodeId)

-- | Open a a single participant head, deposit and then recover it.
canRecoverDeposit :: Tracer IO EndToEndLog -> FilePath -> RunningNode -> TxId -> IO ()
canRecoverDeposit tracer workDir node hydraScriptsTxId =
(`finally` returnFundsToFaucet tracer node Alice) $
(`finally` returnFundsToFaucet tracer node Bob) $ do
refuelIfNeeded tracer node Alice 30_000_000
refuelIfNeeded tracer node Bob 30_000_000
let contestationPeriod = UnsafeContestationPeriod 1
aliceChainConfig <-
chainConfigFor Alice workDir nodeSocket hydraScriptsTxId [Bob] contestationPeriod
<&> setNetworkId networkId
bobChainConfig <-
chainConfigFor Bob workDir nodeSocket hydraScriptsTxId [Alice] contestationPeriod
<&> setNetworkId networkId
withHydraNode hydraTracer aliceChainConfig workDir 1 aliceSk [bobVk] [2] $ \n1 -> do
headId <- withHydraNode hydraTracer bobChainConfig workDir 2 bobSk [aliceVk] [1] $ \n2 -> do
send n1 $ input "Init" []
headId <- waitMatch 10 n1 $ headIsInitializingWith (Set.fromList [alice, bob])

-- Commit nothing
requestCommitTx n1 mempty >>= submitTx node
requestCommitTx n2 mempty >>= submitTx node

waitFor hydraTracer (20 * blockTime) [n1, n2] $
output "HeadIsOpen" ["utxo" .= object mempty, "headId" .= headId]

-- stop the second node here so that increment tx is not posted upon observing the deposit.
pure headId

-- Get some L1 funds
(walletVk, walletSk) <- generate genKeyPair
let commitAmount = 5_000_000
commitUTxO <- seedFromFaucet node walletVk commitAmount (contramap FromFaucet tracer)
let depositRequest = object ["utxo" .= commitUTxO]
resp <-
parseUrlThrow ("POST " <> hydraNodeBaseUrl n1 <> "/commit")
<&> setRequestBodyJSON depositRequest
>>= httpJSON

let depositTransaction = getResponseBody resp :: Tx

let tx = signTx walletSk depositTransaction

submitTx node tx

waitForAllMatch 10 [n1] $ \v -> do
guard $ v ^? key "tag" == Just "CommitRecorded"
pure ()

ChainPoint slotNo _ <- queryTip networkId nodeSocket
let recoverRequest =
object
[ "recoverStart" .= slotNo
]

let queryStr = BSC.unpack $ Base16.encode $ encodeUtf8 $ "\"" <> renderTxIn (fst . List.head . UTxO.pairs $ utxoFromTx tx) <> "\""

recoverResp <-
-- TODO: use slash instead of question mark to utilize the path instead of query params
parseUrlThrow ("DELETE " <> hydraNodeBaseUrl n1 <> "/commits?" <> queryStr)
<&> setRequestBodyJSON recoverRequest
>>= httpJSON

(getResponseBody recoverResp :: String) `shouldBe` "OK"

-- waitForAllMatch 20 [n1] $ \v -> do
-- guard $ v ^? key "tag" == Just "RecoverApproved"
-- pure ()

waitFor hydraTracer 50 [n1] $
output "GetUTxOResponse" ["headId" .= headId, "utxo" .= (mempty :: UTxO)]

(balance <$> queryUTxOFor networkId nodeSocket QueryTip walletVk)
`shouldReturn` lovelaceToValue commitAmount
where
RunningNode{networkId, nodeSocket, blockTime} = node

hydraTracer = contramap FromHydraNode tracer

hydraNodeBaseUrl HydraClient{hydraNodeId} = "http://127.0.0.1:" <> show (4000 + hydraNodeId)

-- | Open a a single participant head with some UTxO and incrementally decommit it.
canDecommit :: Tracer IO EndToEndLog -> FilePath -> RunningNode -> TxId -> IO ()
canDecommit tracer workDir node hydraScriptsTxId =
Expand Down
6 changes: 0 additions & 6 deletions hydra-cluster/test/Test/EndToEndSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ import Hydra.Cluster.Scenarios (
EndToEndLog (..),
canCloseWithLongContestationPeriod,
canCommit,
canRecoverDeposit,
canDecommit,
canSubmitTransactionThroughAPI,
headIsInitializingWith,
Expand Down Expand Up @@ -200,11 +199,6 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \node ->
publishHydraScriptsAs node Faucet
>>= canCommit tracer tmpDir node
it "can recover deposit" $ \tracer -> do
withClusterTempDir $ \tmpDir -> do
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \node ->
publishHydraScriptsAs node Faucet
>>= canRecoverDeposit tracer tmpDir node

describe "three hydra nodes scenario" $ do
it "does not error when all nodes open the head concurrently" $ \tracer ->
Expand Down
Loading

0 comments on commit 2fa1046

Please sign in to comment.