Skip to content

Commit 1e57965

Browse files
committed
Fix the deposit output to include any specified asset
At this point we have increment failing wih H4.
1 parent 69ce551 commit 1e57965

File tree

15 files changed

+240
-123
lines changed

15 files changed

+240
-123
lines changed

hydra-cluster/bench/Bench/EndToEnd.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import Data.Set ((\\))
2828
import Data.Set qualified as Set
2929
import Data.Text (pack)
3030
import Data.Time (UTCTime (UTCTime), utctDayTime)
31-
import Hydra.Cardano.Api (NetworkId, SocketPath, Tx, TxId, UTxO, getVerificationKey, signTx)
31+
import Hydra.Cardano.Api (NetworkId, SocketPath, Tx, TxId, UTxO, getVerificationKey, lovelaceToValue, signTx)
3232
import Hydra.Chain.Backend (ChainBackend)
3333
import Hydra.Chain.Backend qualified as Backend
3434
import Hydra.Cluster.Faucet (FaucetLog (..), publishHydraScriptsAs, returnFundsToFaucet', seedFromFaucet)
@@ -352,7 +352,7 @@ seedNetwork backend Dataset{fundingTransaction, hydraNodeKeys} tracer = do
352352
fuelWith100Ada signingKey = do
353353
let vk = getVerificationKey signingKey
354354
putTextLn $ "Fuel node key " <> show vk
355-
seedFromFaucet backend vk 100_000_000 tracer
355+
seedFromFaucet backend vk (lovelaceToValue 100_000_000) tracer
356356

357357
-- | Commit all (expected to exit) 'initialUTxO' from the dataset using the
358358
-- (assumed same sequence) of clients.

hydra-cluster/src/Hydra/Cluster/Faucet.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,21 @@ seedFromFaucet ::
5252
-- | Recipient of the funds
5353
VerificationKey PaymentKey ->
5454
-- | Amount to get from faucet
55-
Coin ->
55+
Value ->
5656
Tracer IO FaucetLog ->
5757
IO UTxO
58-
seedFromFaucet backend receivingVerificationKey lovelace tracer = do
58+
seedFromFaucet backend receivingVerificationKey val tracer = do
5959
(faucetVk, faucetSk) <- keysFor Faucet
6060
networkId <- Backend.queryNetworkId backend
6161
seedTx <- retryOnExceptions tracer $ submitSeedTx faucetVk faucetSk networkId
6262
producedUTxO <- Backend.awaitTransaction backend seedTx receivingVerificationKey
6363
pure $ UTxO.filter (== toCtxUTxOTxOut (theOutput networkId)) producedUTxO
6464
where
6565
submitSeedTx faucetVk faucetSk networkId = do
66-
faucetUTxO <- findFaucetUTxO networkId backend lovelace
66+
faucetUTxO <- findFaucetUTxO networkId backend (selectLovelace val)
6767
let changeAddress = mkVkAddress networkId faucetVk
6868

69-
buildTransaction backend changeAddress faucetUTxO [] [theOutput networkId] >>= \case
69+
buildTransaction backend changeAddress faucetUTxO (toList $ UTxO.inputSet faucetUTxO) [theOutput networkId] >>= \case
7070
Left e -> throwIO $ FaucetFailedToBuildTx{reason = e}
7171
Right tx -> do
7272
let signedTx = sign faucetSk $ getTxBody tx
@@ -78,7 +78,7 @@ seedFromFaucet backend receivingVerificationKey lovelace tracer = do
7878
theOutput networkId =
7979
TxOut
8080
(shelleyAddressInEra shelleyBasedEra (receivingAddress networkId))
81-
(lovelaceToValue lovelace)
81+
val
8282
TxOutDatumNone
8383
ReferenceScriptNone
8484

@@ -152,7 +152,7 @@ seedFromFaucet_ ::
152152
Tracer IO FaucetLog ->
153153
IO ()
154154
seedFromFaucet_ backend vk ll tracer =
155-
void $ seedFromFaucet backend vk ll tracer
155+
void $ seedFromFaucet backend vk (lovelaceToValue ll) tracer
156156

157157
-- | Return the remaining funds to the faucet
158158
returnFundsToFaucet ::

hydra-cluster/src/Hydra/Cluster/Scenarios.hs

Lines changed: 64 additions & 37 deletions
Large diffs are not rendered by default.

hydra-cluster/src/HydraNode.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,19 +190,19 @@ waitForAll tracer delay nodes expected = do
190190
-- Create a commit tx using the hydra-node for later submission.
191191
requestCommitTx :: HydraClient -> UTxO -> IO Tx
192192
requestCommitTx client utxos =
193-
requestCommitTx' client utxos Nothing
193+
requestCommitTx' client utxos Nothing Nothing
194194

195195
-- | Helper to make it easy to obtain a commit tx using some wallet utxo and optional amount.
196196
-- Create a commit tx using the hydra-node for later submission.
197-
requestCommitTx' :: HydraClient -> UTxO -> Maybe Coin -> IO Tx
198-
requestCommitTx' HydraClient{apiHost = Host{hostname, port}} utxos amount =
197+
requestCommitTx' :: HydraClient -> UTxO -> Maybe Coin -> Maybe (Map PolicyId PolicyAssets) -> IO Tx
198+
requestCommitTx' HydraClient{apiHost = Host{hostname, port}} utxos amount tokens =
199199
runReq defaultHttpConfig request <&> commitTx . responseBody
200200
where
201201
request =
202202
Req.req
203203
POST
204204
(Req.http hostname /: "commit")
205-
(ReqBodyJson $ SimpleCommitRequest @Tx utxos amount mempty)
205+
(ReqBodyJson $ SimpleCommitRequest @Tx utxos amount tokens)
206206
(Proxy :: Proxy (JsonResponse (DraftCommitTxResponse Tx)))
207207
(Req.port (fromInteger . toInteger $ port))
208208

hydra-cluster/test/Test/ChainObserverSpec.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ spec = do
5353

5454
(walletVk, walletSk) <- generate genKeyPair
5555

56-
commitUTxO <- seedFromFaucet backend walletVk 10_000_000 (contramap FromFaucet tracer)
56+
commitUTxO <- seedFromFaucet backend walletVk (lovelaceToValue 10_000_000) (contramap FromFaucet tracer)
5757

5858
send hydraNode $ input "Init" []
5959

hydra-cluster/test/Test/DirectChainSpec.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ spec = around (showLogsOnFailure "DirectChainSpec") $ do
131131
-- Mimic "external commit" by using different keys for Alice.
132132
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
133133

134-
aliceUTxO <- seedFromFaucet backend aliceExternalVk aliceCommitment (contramap FromFaucet tracer)
134+
aliceUTxO <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommitment) (contramap FromFaucet tracer)
135135

136136
participants <- loadParticipants [Alice, Bob, Carol]
137137
let headParameters = HeadParameters cperiod [alice, bob, carol]
@@ -211,7 +211,7 @@ spec = around (showLogsOnFailure "DirectChainSpec") $ do
211211
headId <- fst <$> aliceChain `observesInTimeSatisfying` hasInitTxWith headParameters participants
212212

213213
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
214-
aliceUTxO <- seedFromFaucet backend aliceExternalVk 1_000_000 (contramap FromFaucet tracer)
214+
aliceUTxO <- seedFromFaucet backend aliceExternalVk (lovelaceToValue 1_000_000) (contramap FromFaucet tracer)
215215
externalCommit backend aliceChain aliceExternalSk headId aliceUTxO
216216

217217
aliceChain `observesInTime` OnCommitTx headId alice aliceUTxO
@@ -231,7 +231,7 @@ spec = around (showLogsOnFailure "DirectChainSpec") $ do
231231
postTx $ InitTx{participants, headParameters}
232232
headId <- fst <$> aliceChain `observesInTimeSatisfying` hasInitTxWith headParameters participants
233233

234-
aliceUTxO <- seedFromFaucet backend aliceCardanoVk 1_000_000 (contramap FromFaucet tracer)
234+
aliceUTxO <- seedFromFaucet backend aliceCardanoVk (lovelaceToValue 1_000_000) (contramap FromFaucet tracer)
235235
externalCommit backend aliceChain aliceCardanoSk headId aliceUTxO
236236

237237
aliceChain `observesInTime` OnCommitTx headId alice aliceUTxO
@@ -273,7 +273,7 @@ spec = around (showLogsOnFailure "DirectChainSpec") $ do
273273
headId <- fst <$> aliceChain `observesInTimeSatisfying` hasInitTxWith headParameters participants
274274

275275
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
276-
newAliceUTxO <- seedFromFaucet backend aliceExternalVk 3_000_000 (contramap FromFaucet tracer)
276+
newAliceUTxO <- seedFromFaucet backend aliceExternalVk (lovelaceToValue 3_000_000) (contramap FromFaucet tracer)
277277

278278
numberOfKeyWits <- generate $ choose (2, 10)
279279
randomKeys <- generate $ replicateM numberOfKeyWits genKeyPair
@@ -300,8 +300,8 @@ spec = around (showLogsOnFailure "DirectChainSpec") $ do
300300
\aliceChain@CardanoChainTest{postTx} -> do
301301
-- Scenario
302302
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
303-
someUTxO <- seedFromFaucet backend aliceExternalVk 2_000_000 (contramap FromFaucet tracer)
304-
someUTxOToCommit <- seedFromFaucet backend aliceExternalVk 2_000_000 (contramap FromFaucet tracer)
303+
someUTxO <- seedFromFaucet backend aliceExternalVk (lovelaceToValue 2_000_000) (contramap FromFaucet tracer)
304+
someUTxOToCommit <- seedFromFaucet backend aliceExternalVk (lovelaceToValue 2_000_000) (contramap FromFaucet tracer)
305305
participants <- loadParticipants [Alice]
306306
let headParameters = HeadParameters cperiod [alice]
307307
postTx $ InitTx{participants, headParameters}
@@ -439,7 +439,7 @@ spec = around (showLogsOnFailure "DirectChainSpec") $ do
439439
withDirectChainTest (contramap (FromDirectChain "alice") tracer) aliceChainConfig alice $
440440
\aliceChain@CardanoChainTest{postTx} -> do
441441
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
442-
someUTxO <- seedFromFaucet backend aliceExternalVk 1_000_000 (contramap FromFaucet tracer)
442+
someUTxO <- seedFromFaucet backend aliceExternalVk (lovelaceToValue 1_000_000) (contramap FromFaucet tracer)
443443

444444
participants <- loadParticipants [Alice]
445445
let headParameters = HeadParameters cperiod [alice]

hydra-cluster/test/Test/EndToEndSpec.hs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -407,11 +407,11 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
407407

408408
-- Get some UTXOs to commit to a head
409409
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
410-
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk aliceCommittedToHead (contramap FromFaucet tracer)
410+
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommittedToHead) (contramap FromFaucet tracer)
411411
requestCommitTx n1 committedUTxOByAlice <&> signTx aliceExternalSk >>= Backend.submitTransaction backend
412412

413413
(bobExternalVk, bobExternalSk) <- generate genKeyPair
414-
committedUTxOByBob <- seedFromFaucet backend bobExternalVk bobCommittedToHead (contramap FromFaucet tracer)
414+
committedUTxOByBob <- seedFromFaucet backend bobExternalVk (lovelaceToValue bobCommittedToHead) (contramap FromFaucet tracer)
415415
requestCommitTx n2 committedUTxOByBob <&> signTx bobExternalSk >>= Backend.submitTransaction backend
416416

417417
requestCommitTx n3 mempty >>= Backend.submitTransaction backend
@@ -472,11 +472,11 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
472472

473473
-- Get some UTXOs to commit to a head
474474
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
475-
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk aliceCommittedToHead (contramap FromFaucet tracer)
475+
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommittedToHead) (contramap FromFaucet tracer)
476476
requestCommitTx n1 committedUTxOByAlice <&> signTx aliceExternalSk >>= Backend.submitTransaction backend
477477

478478
(bobExternalVk, bobExternalSk) <- generate genKeyPair
479-
committedUTxOByBob <- seedFromFaucet backend bobExternalVk bobCommittedToHead (contramap FromFaucet tracer)
479+
committedUTxOByBob <- seedFromFaucet backend bobExternalVk (lovelaceToValue bobCommittedToHead) (contramap FromFaucet tracer)
480480
requestCommitTx n2 committedUTxOByBob <&> signTx bobExternalSk >>= Backend.submitTransaction backend
481481

482482
requestCommitTx n3 mempty >>= Backend.submitTransaction backend
@@ -614,7 +614,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
614614
headId <- waitForAllMatch 10 [n1, n2] $ headIsInitializingWith (Set.fromList [alice, bob])
615615

616616
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
617-
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk aliceCommittedToHead (contramap FromFaucet tracer)
617+
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommittedToHead) (contramap FromFaucet tracer)
618618
requestCommitTx n1 committedUTxOByAlice <&> signTx aliceExternalSk >>= Backend.submitTransaction backend
619619

620620
(bobExternalVk, _bobExternalSk) <- generate genKeyPair
@@ -844,7 +844,7 @@ timedTx tmpDir tracer backend hydraScriptsTxId = do
844844

845845
-- Get some UTXOs to commit to a head
846846
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
847-
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk aliceCommittedToHead (contramap FromFaucet tracer)
847+
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommittedToHead) (contramap FromFaucet tracer)
848848
_ <- requestCommitTx n1 committedUTxOByAlice <&> signTx aliceExternalSk >>= Backend.submitTransaction backend
849849

850850
waitFor hydraTracer 3 [n1] $ output "HeadIsOpen" ["utxo" .= committedUTxOByAlice, "headId" .= headId]
@@ -919,11 +919,11 @@ initAndClose tmpDir tracer clusterIx hydraScriptsTxId backend = do
919919

920920
-- Get some UTXOs to commit to a head
921921
(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
922-
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk aliceCommittedToHead (contramap FromFaucet tracer)
922+
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommittedToHead) (contramap FromFaucet tracer)
923923
requestCommitTx n1 committedUTxOByAlice <&> signTx aliceExternalSk >>= Backend.submitTransaction backend
924924

925925
(bobExternalVk, bobExternalSk) <- generate genKeyPair
926-
committedUTxOByBob <- seedFromFaucet backend bobExternalVk bobCommittedToHead (contramap FromFaucet tracer)
926+
committedUTxOByBob <- seedFromFaucet backend bobExternalVk (lovelaceToValue bobCommittedToHead) (contramap FromFaucet tracer)
927927
requestCommitTx n2 committedUTxOByBob <&> signTx bobExternalSk >>= Backend.submitTransaction backend
928928

929929
requestCommitTx n3 mempty >>= Backend.submitTransaction backend

hydra-cluster/test/Test/Hydra/Cluster/FaucetSpec.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Test.Hydra.Prelude
88
import Cardano.Api.UTxO qualified as UTxO
99
import CardanoNode (withCardanoNodeDevnet)
1010
import Control.Concurrent.Async (replicateConcurrently)
11-
import Hydra.Cardano.Api (Coin (..), selectLovelace)
11+
import Hydra.Cardano.Api (Coin (..), lovelaceToValue, selectLovelace)
1212
import Hydra.Chain.Backend qualified as Backend
1313
import Hydra.Chain.CardanoClient (QueryPoint (..))
1414
import Hydra.Chain.Direct (DirectBackend (..))
@@ -35,7 +35,7 @@ spec =
3535
it "should work concurrently when called multiple times with the same amount of lovelace" $ \(tracer, backend) -> do
3636
utxos <- replicateConcurrently 10 $ do
3737
vk <- generate genVerificationKey
38-
seedFromFaucet backend vk 1_000_000 tracer
38+
seedFromFaucet backend vk (lovelaceToValue 1_000_000) tracer
3939
-- 10 unique outputs
4040
UTxO.size (fold utxos) `shouldBe` 10
4141

@@ -50,7 +50,7 @@ spec =
5050
(vk, _) <- keysFor actor
5151
(faucetVk, _) <- keysFor Faucet
5252
initialFaucetFunds <- Backend.queryUTxOFor backend QueryTip faucetVk
53-
void $ seedFromFaucet backend vk coin tracer
53+
void $ seedFromFaucet backend vk (lovelaceToValue coin) tracer
5454
returnFundsToFaucet tracer backend actor
5555
remaining <- Backend.queryUTxOFor backend QueryTip vk
5656
finalFaucetFunds <- Backend.queryUTxOFor backend QueryTip faucetVk
@@ -71,7 +71,7 @@ spec =
7171
-- NOTE: Note use 'Faucet' as this has a very big initial amount
7272
(vk, _) <- keysFor Alice
7373
-- NOTE: 83 ADA is just enough to pay for reference scripts deposits.
74-
forM_ [1_000_000, 2_000_000, 83_000_000] $ \c -> seedFromFaucet backend vk c tracer
74+
forM_ [1_000_000, 2_000_000, 83_000_000] $ \c -> seedFromFaucet backend vk (lovelaceToValue c) tracer
7575

7676
void $ publishHydraScriptsAs backend Alice
7777

hydra-cluster/test/Test/Hydra/Cluster/HydraClientSpec.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,11 @@ prepareScenario backend nodes tracer = do
291291

292292
-- Get some UTXOs to commit to a head
293293
aliceKeys@(aliceExternalVk, aliceExternalSk) <- generate genKeyPair
294-
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk aliceCommittedToHead (contramap FromFaucet tracer)
294+
committedUTxOByAlice <- seedFromFaucet backend aliceExternalVk (lovelaceToValue aliceCommittedToHead) (contramap FromFaucet tracer)
295295
requestCommitTx n1 committedUTxOByAlice <&> signTx aliceExternalSk >>= Backend.submitTransaction backend
296296

297297
bobKeys@(bobExternalVk, bobExternalSk) <- generate genKeyPair
298-
committedUTxOByBob <- seedFromFaucet backend bobExternalVk bobCommittedToHead (contramap FromFaucet tracer)
298+
committedUTxOByBob <- seedFromFaucet backend bobExternalVk (lovelaceToValue bobCommittedToHead) (contramap FromFaucet tracer)
299299
requestCommitTx n2 committedUTxOByBob <&> signTx bobExternalSk >>= Backend.submitTransaction backend
300300

301301
requestCommitTx n3 mempty >>= Backend.submitTransaction backend

hydra-node/src/Hydra/API/HTTPServer.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ handleDraftCommitUtxo env pparams directChain getCommitInfo body = do
322322
CannotFindOwnInitial _ -> badRequest e
323323
DepositTooLow _ _ -> badRequest e
324324
AmountTooLow _ _ -> badRequest e
325+
FailedToConstructDepositTx _ -> badRequest e
325326
_ -> responseLBS status500 [] (Aeson.encode $ toJSON e)
326327
Right commitTx ->
327328
okJSON $ DraftCommitTxResponse commitTx

0 commit comments

Comments
 (0)