Skip to content

Commit 48866bd

Browse files
committed
Index Propose and Vote redeemers
1 parent 397b8a3 commit 48866bd

File tree

4 files changed

+45
-34
lines changed

4 files changed

+45
-34
lines changed

packages.dhall

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,19 +175,23 @@ let additions =
175175
, "argonaut"
176176
, "bifunctors"
177177
, "bytearrays"
178+
, "console"
178179
, "effect"
179180
, "either"
181+
, "enums"
180182
, "maybe"
181183
, "nullable"
182184
, "ordered-collections"
185+
, "partial"
183186
, "prelude"
184187
, "profunctor"
185188
, "tuples"
189+
, "unsafe-coerce"
186190
]
187191
, repo =
188192
"https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"
189-
, version = "c66afbb9c572db096690ec1dd786c9ec96105c0d"
190-
}
193+
, version = "v1.0.0"
194+
}
191195
, cardano-plutus-data-schema =
192196
{ dependencies = [ "prelude" ]
193197
, repo =
@@ -221,14 +225,15 @@ let additions =
221225
, cardano-types =
222226
{ dependencies =
223227
[ "aeson"
228+
, "aff"
224229
, "arraybuffer-types"
225230
, "arrays"
226231
, "bifunctors"
227232
, "bytearrays"
228233
, "cardano-plutus-data-schema"
229234
, "cardano-serialization-lib"
230-
, "console"
231235
, "control"
236+
, "datetime"
232237
, "effect"
233238
, "either"
234239
, "encoding"
@@ -242,18 +247,21 @@ let additions =
242247
, "literals"
243248
, "maybe"
244249
, "monad-logger"
250+
, "mote"
251+
, "mote-testplan"
245252
, "newtype"
246253
, "nonempty"
247254
, "nullable"
248255
, "ordered-collections"
249256
, "partial"
250257
, "prelude"
251258
, "profunctor"
259+
, "profunctor-lenses"
252260
, "quickcheck"
253261
, "rationals"
254262
, "record"
255263
, "safe-coerce"
256-
, "strings"
264+
, "spec"
257265
, "these"
258266
, "tuples"
259267
, "typelevel-prelude"
@@ -262,7 +270,7 @@ let additions =
262270
, "unsafe-coerce"
263271
]
264272
, repo = "https://github.com/mlabs-haskell/purescript-cardano-types"
265-
, version = "40d9468a4712ad2bf57ebede19fae92208f082a0"
273+
, version = "941bf45aa2b91a012873769d252645f9187d685e"
266274
}
267275
}
268276

spago-packages.nix

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,23 +175,23 @@ let
175175

176176
"cardano-serialization-lib" = pkgs.stdenv.mkDerivation {
177177
name = "cardano-serialization-lib";
178-
version = "c66afbb9c572db096690ec1dd786c9ec96105c0d";
178+
version = "v1.0.0";
179179
src = pkgs.fetchgit {
180180
url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib";
181-
rev = "c66afbb9c572db096690ec1dd786c9ec96105c0d";
182-
sha256 = "1pi5q45nx1varl2pjpd60vfxv2cjvlg1ms7xnsfwb2acl216lmr5";
181+
rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32";
182+
sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg";
183183
};
184184
phases = "installPhase";
185185
installPhase = "ln -s $src $out";
186186
};
187187

188188
"cardano-types" = pkgs.stdenv.mkDerivation {
189189
name = "cardano-types";
190-
version = "40d9468a4712ad2bf57ebede19fae92208f082a0";
190+
version = "941bf45aa2b91a012873769d252645f9187d685e";
191191
src = pkgs.fetchgit {
192192
url = "https://github.com/mlabs-haskell/purescript-cardano-types";
193-
rev = "40d9468a4712ad2bf57ebede19fae92208f082a0";
194-
sha256 = "1iawinsrsipqgjrcgv650x3i2iad1z2vlwlhvlcx9880qmv0m9gc";
193+
rev = "941bf45aa2b91a012873769d252645f9187d685e";
194+
sha256 = "1fwmhgj4bh683w5xwpw3nagsfqy9crld4qfdfr6ljrkfl74npb22";
195195
};
196196
phases = "installPhase";
197197
installPhase = "ln -s $src $out";

src/Cardano/Transaction/Builder.purs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ import Cardano.Types.Certificate
7777
, PoolRegistration
7878
, PoolRetirement
7979
, StakeDeregistration
80-
, GenesisKeyDelegation
8180
, StakeDelegation
82-
, MoveInstantaneousRewardsCert
8381
)
8482
)
8583
import Cardano.Types.Credential
@@ -460,8 +458,7 @@ useCertificateWitness cert mbWitness = do
460458
StakeRegistration _ -> pure unit
461459
PoolRegistration _ -> pure unit
462460
PoolRetirement _ -> pure unit
463-
GenesisKeyDelegation _ -> pure unit
464-
MoveInstantaneousRewardsCert _ -> pure unit
461+
_ -> pure unit -- TODO
465462

466463
useCredentialWitness
467464
:: CredentialAction -> StakeCredential -> Maybe CredentialWitness -> BuilderM Unit

src/Cardano/Transaction/Edit.purs

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module Cardano.Transaction.Edit
2323
, toEditableTransaction
2424
, fromEditableTransactionSafe
2525
, fromEditableTransaction
26-
, RedeemerPurpose(ForSpend, ForMint, ForReward, ForCert)
26+
, RedeemerPurpose(ForSpend, ForMint, ForReward, ForCert, ForPropose, ForVote)
2727
, redeemerPurposeToRedeemerTag
2828
, DetachedRedeemer
2929
, EditableTransaction
@@ -36,21 +36,12 @@ module Cardano.Transaction.Edit
3636

3737
import Prelude
3838

39-
import Cardano.Types
40-
( Certificate
41-
, Redeemer(Redeemer)
42-
, RedeemerTag(Mint, Spend, Reward, Cert)
43-
, RewardAddress
44-
, ScriptHash
45-
, Transaction(Transaction)
46-
, TransactionBody(TransactionBody)
47-
, TransactionInput
48-
, _redeemers
49-
, _witnessSet
50-
)
39+
import Cardano.Types (Certificate, Redeemer(Redeemer), RedeemerTag(Mint, Spend, Reward, Cert, Propose, Vote), RewardAddress, ScriptHash, Transaction(Transaction), TransactionBody(TransactionBody), TransactionInput, _redeemers, _witnessSet)
5140
import Cardano.Types.BigNum as BigNum
5241
import Cardano.Types.ExUnits as ExUnits
5342
import Cardano.Types.RedeemerDatum (RedeemerDatum)
43+
import Cardano.Types.Voter (Voter)
44+
import Cardano.Types.VotingProposal (VotingProposal)
5445
import Data.Array (catMaybes, findIndex, nub)
5546
import Data.Array as Array
5647
import Data.Either (Either, blush, hush, note)
@@ -80,6 +71,8 @@ data RedeemerPurpose
8071
| ForMint ScriptHash
8172
| ForReward RewardAddress
8273
| ForCert Certificate
74+
| ForVote Voter
75+
| ForPropose VotingProposal
8376

8477
derive instance Generic RedeemerPurpose _
8578
derive instance Eq RedeemerPurpose
@@ -95,6 +88,8 @@ redeemerPurposeToRedeemerTag = case _ of
9588
ForMint _ -> Mint
9689
ForReward _ -> Reward
9790
ForCert _ -> Cert
91+
ForPropose _ -> Propose
92+
ForVote _ -> Vote
9893

9994
-- | Contains parts of a transaction that are important for redeemer processing.
10095
-- | Used to avoid re-computing.
@@ -103,18 +98,21 @@ type RedeemersContext =
10398
, mintingPolicyHashes :: Array ScriptHash
10499
, rewardAddresses :: Array RewardAddress
105100
, certs :: Array Certificate
101+
, proposals :: Array VotingProposal
102+
, voters :: Array Voter
106103
}
107104

108105
mkRedeemersContext :: Transaction -> RedeemersContext
109-
mkRedeemersContext
110-
(Transaction { body: TransactionBody { inputs, mint, withdrawals, certs } }) =
111-
{ inputs: Set.toUnfoldable $ Set.fromFoldable inputs
106+
mkRedeemersContext (Transaction { body: TransactionBody txBody }) =
107+
{ inputs: Set.toUnfoldable $ Set.fromFoldable txBody.inputs
112108
, mintingPolicyHashes:
113109
Set.toUnfoldable $ Map.keys $ unwrap $ fromMaybe
114110
(wrap Map.empty)
115-
mint
116-
, rewardAddresses: Set.toUnfoldable $ Map.keys $ withdrawals
117-
, certs
111+
txBody.mint
112+
, rewardAddresses: Set.toUnfoldable $ Map.keys $ txBody.withdrawals
113+
, certs: txBody.certs
114+
, proposals: txBody.votingProposals
115+
, voters: Set.toUnfoldable $ Map.keys $ unwrap txBody.votingProcedures
118116
}
119117

120118
detachRedeemer :: RedeemersContext -> Redeemer -> Maybe DetachedRedeemer
@@ -129,6 +127,10 @@ detachRedeemer ctx (Redeemer { tag, index, data: datum, exUnits: _ }) = do
129127
ForReward <$> Array.index ctx.rewardAddresses indexInt
130128
Cert ->
131129
ForCert <$> Array.index ctx.certs indexInt
130+
Propose ->
131+
ForPropose <$> Array.index ctx.proposals indexInt
132+
Vote ->
133+
ForVote <$> Array.index ctx.voters indexInt
132134
pure { datum, purpose }
133135

134136
attachRedeemers
@@ -149,6 +151,10 @@ attachRedeemer ctx { purpose, datum } = do
149151
{ tag: Reward, index }
150152
ForCert cert -> findIndex (eq cert) ctx.certs <#> \index ->
151153
{ tag: Cert, index }
154+
ForPropose proposal -> findIndex (eq proposal) ctx.proposals <#> \index ->
155+
{ tag: Propose, index }
156+
ForVote voter -> findIndex (eq voter) ctx.voters <#> \index ->
157+
{ tag: Vote, index }
152158
pure $
153159
Redeemer { tag, index: BigNum.fromInt index, data: datum, exUnits: ExUnits.empty }
154160

0 commit comments

Comments
 (0)