Skip to content

Commit d82d4ae

Browse files
committed
Add "txId" field to HydraTx; Add "confirmed" field to HydraSnapshot
1 parent c0a92e3 commit d82d4ae

File tree

5 files changed

+16
-21
lines changed

5 files changed

+16
-21
lines changed

example/minimal/app/Main.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ messageHandler ws =
185185
setUtxoSnapshot $ HydraSnapshot
186186
{ snapshotNumber: zero
187187
, utxo
188-
-- , confirmedTransactions: mempty
188+
, confirmed: mempty
189189
}
190190
tx <- runContractInApp $ placeArbitraryDatumL2 $ toUtxoMap utxo
191191
liftEffect $ ws.submitTxL2 tx

example/minimal/src/App.purs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import Contract.Utxos (getUtxo)
3535
import Control.Monad.Error.Class (liftMaybe)
3636
import Control.Monad.Logger.Trans (LoggerT, runLoggerT)
3737
import Control.Monad.Reader (ReaderT, ask, asks, runReaderT)
38-
import Ctl.Internal.ServerConfig (blockfrostPublicSanchonetServerConfig)
3938
import Data.Log.Formatter.Pretty (prettyFormatter)
4039
import Data.Log.Message (Message)
4140
import Data.Maybe (Maybe(Just, Nothing), maybe)
@@ -53,13 +52,7 @@ import Effect.Exception (error, throw)
5352
import HydraSdk.Example.Minimal.Config (DelegateServerConfig)
5453
import HydraSdk.Example.Minimal.Contract.Collateral (getCollateral)
5554
import HydraSdk.Lib (modify) as AVar
56-
import HydraSdk.Types
57-
( HydraHeadStatus(HeadStatus_Unknown)
58-
, HydraSnapshot
59-
, Network(Mainnet, Testnet)
60-
, emptySnapshot
61-
, networkToNetworkId
62-
)
55+
import HydraSdk.Types (HydraHeadStatus(HeadStatus_Unknown), HydraSnapshot, emptySnapshot)
6356
import Node.Encoding (Encoding(UTF8))
6457
import Node.FS.Sync (readTextFile)
6558

flake.nix

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@
4545
ctl.overlays.purescript
4646
ctl.overlays.runtime
4747
ctl.overlays.spago
48-
(_: _: {
49-
arion = (import ctl.inputs.nixpkgs-arion { inherit system; }).arion;
50-
})
5148
];
5249
};
5350

src/Internal/Types/Snapshot.purs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ module HydraSdk.Internal.Types.Snapshot
99
import Prelude
1010

1111
import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson, getField)
12-
import Cardano.Types (TransactionHash)
1312
import Control.Alt ((<|>))
1413
import Data.Bifunctor (lmap)
1514
import Data.Codec.Argonaut (JsonCodec, array, decode, encode, object, string) as CA
@@ -19,6 +18,7 @@ import Data.Generic.Rep (class Generic)
1918
import Data.Newtype (class Newtype, wrap)
2019
import Data.Show.Generic (genericShow)
2120
import HydraSdk.Internal.Lib.Codec (aesonCodec, fromCaJsonDecodeError)
21+
import HydraSdk.Internal.Types.Tx (HydraTx, hydraTxCodec)
2222
import HydraSdk.Internal.Types.UtxoMap (HydraUtxoMap, hydraUtxoMapCodec)
2323

2424
data ConfirmedSnapshot
@@ -58,8 +58,7 @@ confirmedSnapshotCodec =
5858
newtype HydraSnapshot = HydraSnapshot
5959
{ snapshotNumber :: Int
6060
, utxo :: HydraUtxoMap
61-
-- FIXME: support full transactions
62-
-- , confirmedTransactions :: Array TransactionHash
61+
, confirmed :: Array HydraTx
6362
}
6463

6564
derive instance Generic HydraSnapshot _
@@ -75,19 +74,21 @@ instance DecodeAeson HydraSnapshot where
7574
snapshotNumber <- getField obj "snapshotNumber" <|> getField obj "number"
7675
utxo <- (lmap fromCaJsonDecodeError <<< CA.decode hydraUtxoMapCodec) =<< getField obj
7776
"utxo"
78-
-- confirmedTransactions <- getField obj "confirmedTransactions" <|> getField obj "confirmed"
77+
confirmed <-
78+
(lmap fromCaJsonDecodeError <<< CA.decode (CA.array hydraTxCodec))
79+
=<< getField obj "confirmed"
7980
pure $ wrap
8081
{ snapshotNumber
8182
, utxo
82-
-- , confirmedTransactions
83+
, confirmed
8384
}
8485

8586
instance EncodeAeson HydraSnapshot where
8687
encodeAeson (HydraSnapshot snapshot) = do
8788
encodeAeson
8889
{ snapshotNumber: encodeAeson snapshot.snapshotNumber
8990
, utxo: CA.encode hydraUtxoMapCodec snapshot.utxo
90-
-- , confirmedTransactions: encodeAeson snapshot.confirmedTransactions
91+
, confirmed: CA.encode (CA.array hydraTxCodec) snapshot.confirmed
9192
}
9293

9394
hydraSnapshotCodec :: CA.JsonCodec HydraSnapshot
@@ -97,6 +98,6 @@ emptySnapshot :: HydraSnapshot
9798
emptySnapshot = wrap
9899
{ snapshotNumber: zero
99100
, utxo: mempty
100-
-- , confirmedTransactions: mempty
101+
, confirmed: mempty
101102
}
102103

src/Internal/Types/Tx.purs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ module HydraSdk.Internal.Types.Tx
77
import Prelude
88

99
import Cardano.AsCbor (encodeCbor)
10-
import Cardano.Types (CborBytes, Transaction)
10+
import Cardano.Types (CborBytes, Transaction, TransactionHash)
11+
import Cardano.Types.Transaction (hash) as Transaction
1112
import Data.Codec.Argonaut (JsonCodec, object, string) as CA
1213
import Data.Codec.Argonaut.Record (record) as CAR
13-
import HydraSdk.Internal.Lib.Codec (cborBytesCodec)
14+
import HydraSdk.Internal.Lib.Codec (cborBytesCodec, txHashCodec)
1415

1516
type HydraTx =
1617
{ cborHex :: CborBytes
18+
, txId :: TransactionHash
1719
, description :: String
1820
, "type" :: String
1921
}
@@ -22,13 +24,15 @@ hydraTxCodec :: CA.JsonCodec HydraTx
2224
hydraTxCodec =
2325
CA.object "HydraTx" $ CAR.record
2426
{ cborHex: cborBytesCodec
27+
, txId: txHashCodec
2528
, description: CA.string
2629
, "type": CA.string
2730
}
2831

2932
mkHydraTx :: Transaction -> HydraTx
3033
mkHydraTx tx =
3134
{ cborHex: encodeCbor tx
35+
, txId: Transaction.hash tx
3236
, description: ""
3337
-- In hydra-node, the "type" field is not used to determine content
3438
-- and any transaction is tried to decode as a "ConwayEra"

0 commit comments

Comments
 (0)