@@ -1450,6 +1450,13 @@ substituteExecutionUnits
14501450 redeemer
14511451 exunits
14521452
1453+ adjustScriptWitness
1454+ :: (ScriptWitness witctx era -> Either (TxBodyErrorAutoBalance era ) (ScriptWitness witctx era ))
1455+ -> Witness witctx era
1456+ -> Either (TxBodyErrorAutoBalance era ) (Witness witctx era )
1457+ adjustScriptWitness _ (KeyWitness ctx) = Right $ KeyWitness ctx
1458+ adjustScriptWitness g (ScriptWitness ctx witness') = ScriptWitness ctx <$> g witness'
1459+
14531460 mapScriptWitnessesTxIns
14541461 :: [(TxIn , BuildTxWith BuildTx (Witness WitCtxTxIn era ))]
14551462 -> Either (TxBodyErrorAutoBalance era ) [(TxIn , BuildTxWith BuildTx (Witness WitCtxTxIn era ))]
@@ -1461,27 +1468,18 @@ substituteExecutionUnits
14611468 ]
14621469 mappedScriptWitnesses =
14631470 [ (txin, BuildTxWith <$> wit')
1464- | -- The tx ins are indexed in the map order by txid
1465- (ix, (txin, BuildTxWith wit)) <- zip [0 .. ] (orderTxIns txins)
1466- , let wit' = case wit of
1467- KeyWitness {} -> Right wit
1468- ScriptWitness ctx witness -> ScriptWitness ctx <$> witness'
1469- where
1470- witness' = substituteExecUnits (ScriptWitnessIndexTxIn ix) witness
1471+ | (ix, txin, wit) <- indexTxIns txins
1472+ , let wit' = adjustScriptWitness (substituteExecUnits ix) wit
14711473 ]
14721474 in traverse
1473- ( \ (txIn, eWitness) ->
1474- case eWitness of
1475- Left e -> Left e
1476- Right wit -> Right (txIn, wit)
1477- )
1475+ (\ (txIn, eWitness) -> (txIn,) <$> eWitness)
14781476 mappedScriptWitnesses
14791477
14801478 mapScriptWitnessesWithdrawals
14811479 :: TxWithdrawals BuildTx era
14821480 -> Either (TxBodyErrorAutoBalance era ) (TxWithdrawals BuildTx era )
14831481 mapScriptWitnessesWithdrawals TxWithdrawalsNone = Right TxWithdrawalsNone
1484- mapScriptWitnessesWithdrawals (TxWithdrawals supported withdrawals ) =
1482+ mapScriptWitnessesWithdrawals txWithdrawals' @ (TxWithdrawals supported _ ) =
14851483 let mappedWithdrawals
14861484 :: [ ( StakeAddress
14871485 , L. Coin
@@ -1490,55 +1488,30 @@ substituteExecutionUnits
14901488 ]
14911489 mappedWithdrawals =
14921490 [ (addr, withdrawal, BuildTxWith <$> mappedWitness)
1493- | -- The withdrawals are indexed in the map order by stake credential
1494- (ix, (addr, withdrawal, BuildTxWith wit)) <- zip [0 .. ] (orderStakeAddrs withdrawals)
1495- , let mappedWitness = adjustWitness (substituteExecUnits (ScriptWitnessIndexWithdrawal ix)) wit
1491+ | (ix, addr, withdrawal, wit) <- indexTxWithdrawals txWithdrawals'
1492+ , let mappedWitness = adjustScriptWitness (substituteExecUnits ix) wit
14961493 ]
14971494 in TxWithdrawals supported
14981495 <$> traverse
1499- ( \ (sAddr, ll, eWitness) ->
1500- case eWitness of
1501- Left e -> Left e
1502- Right wit -> Right (sAddr, ll, wit)
1503- )
1496+ (\ (sAddr, ll, eWitness) -> (sAddr,ll,) <$> eWitness)
15041497 mappedWithdrawals
1505- where
1506- adjustWitness
1507- :: (ScriptWitness witctx era -> Either (TxBodyErrorAutoBalance era ) (ScriptWitness witctx era ))
1508- -> Witness witctx era
1509- -> Either (TxBodyErrorAutoBalance era ) (Witness witctx era )
1510- adjustWitness _ (KeyWitness ctx) = Right $ KeyWitness ctx
1511- adjustWitness g (ScriptWitness ctx witness') = ScriptWitness ctx <$> g witness'
15121498
15131499 mapScriptWitnessesCertificates
15141500 :: TxCertificates BuildTx era
15151501 -> Either (TxBodyErrorAutoBalance era ) (TxCertificates BuildTx era )
15161502 mapScriptWitnessesCertificates TxCertificatesNone = Right TxCertificatesNone
1517- mapScriptWitnessesCertificates
1518- ( TxCertificates
1519- supported
1520- certs
1521- (BuildTxWith witnesses)
1522- ) =
1523- let mappedScriptWitnesses
1524- :: [(StakeCredential , Either (TxBodyErrorAutoBalance era ) (Witness WitCtxStake era ))]
1525- mappedScriptWitnesses =
1526- [ (stakecred, ScriptWitness ctx <$> witness')
1527- | -- The certs are indexed in list order
1528- (ix, cert) <- zip [0 .. ] certs
1529- , stakecred <- maybeToList (selectStakeCredentialWitness cert)
1530- , ScriptWitness ctx witness <-
1531- maybeToList (List. lookup stakecred witnesses)
1532- , let witness' = substituteExecUnits (ScriptWitnessIndexCertificate ix) witness
1533- ]
1534- in TxCertificates supported certs . BuildTxWith
1535- <$> traverse
1536- ( \ (sCred, eScriptWitness) ->
1537- case eScriptWitness of
1538- Left e -> Left e
1539- Right wit -> Right (sCred, wit)
1540- )
1541- mappedScriptWitnesses
1503+ mapScriptWitnessesCertificates txCertificates'@ (TxCertificates supported certs _) =
1504+ let mappedScriptWitnesses
1505+ :: [(StakeCredential , Either (TxBodyErrorAutoBalance era ) (Witness WitCtxStake era ))]
1506+ mappedScriptWitnesses =
1507+ [ (stakeCred, witness')
1508+ | (ix, _, stakeCred, witness) <- indexTxCertificates txCertificates'
1509+ , let witness' = adjustScriptWitness (substituteExecUnits ix) witness
1510+ ]
1511+ in TxCertificates supported certs . BuildTxWith
1512+ <$> traverse
1513+ (\ (sCred, eScriptWitness) -> (sCred,) <$> eScriptWitness)
1514+ mappedScriptWitnesses
15421515
15431516 mapScriptWitnessesVotes
15441517 :: Maybe (Featured ConwayEraOnwards era (TxVotingProcedures build era ))
@@ -1548,13 +1521,11 @@ substituteExecutionUnits
15481521 mapScriptWitnessesVotes Nothing = return Nothing
15491522 mapScriptWitnessesVotes (Just (Featured _ TxVotingProceduresNone )) = return Nothing
15501523 mapScriptWitnessesVotes (Just (Featured _ (TxVotingProcedures _ ViewTx ))) = return Nothing
1551- mapScriptWitnessesVotes (Just (Featured era (TxVotingProcedures vProcedures (BuildTxWith sWitMap )))) = do
1524+ mapScriptWitnessesVotes (Just (Featured era txVotingProcedures' @ (TxVotingProcedures vProcedures (BuildTxWith _ )))) = do
15521525 let eSubstitutedExecutionUnits =
15531526 [ (vote, updatedWitness)
1554- | let allVoteMap = L. unVotingProcedures vProcedures
1555- , (vote, scriptWitness) <- toList sWitMap
1556- , index <- maybeToList $ Map. lookupIndex vote allVoteMap
1557- , let updatedWitness = substituteExecUnits (ScriptWitnessIndexVoting $ fromIntegral index) scriptWitness
1527+ | (ix, vote, witness) <- indexTxVotingProcedures txVotingProcedures'
1528+ , let updatedWitness = substituteExecUnits ix witness
15581529 ]
15591530
15601531 substitutedExecutionUnits <- traverseScriptWitnesses eSubstitutedExecutionUnits
@@ -1571,13 +1542,11 @@ substituteExecutionUnits
15711542 mapScriptWitnessesProposals Nothing = return Nothing
15721543 mapScriptWitnessesProposals (Just (Featured _ TxProposalProceduresNone )) = return Nothing
15731544 mapScriptWitnessesProposals (Just (Featured _ (TxProposalProcedures _ ViewTx ))) = return Nothing
1574- mapScriptWitnessesProposals (Just (Featured era txpp@ (TxProposalProcedures osetProposalProcedures (BuildTxWith sWitMap)))) = do
1575- let allProposalsList = toList $ convProposalProcedures txpp
1576- eSubstitutedExecutionUnits =
1545+ mapScriptWitnessesProposals (Just (Featured era txpp@ (TxProposalProcedures osetProposalProcedures (BuildTxWith _)))) = do
1546+ let eSubstitutedExecutionUnits =
15771547 [ (proposal, updatedWitness)
1578- | (proposal, scriptWitness) <- toList sWitMap
1579- , index <- maybeToList $ List. elemIndex proposal allProposalsList
1580- , let updatedWitness = substituteExecUnits (ScriptWitnessIndexProposing $ fromIntegral index) scriptWitness
1548+ | (ix, proposal, scriptWitness) <- indexTxProposalProcedures txpp
1549+ , let updatedWitness = substituteExecUnits ix scriptWitness
15811550 ]
15821551
15831552 substitutedExecutionUnits <- traverseScriptWitnesses eSubstitutedExecutionUnits
@@ -1596,7 +1565,7 @@ substituteExecutionUnits
15961565 mapScriptWitnessesMinting txMintValue'@ (TxMintValue w _) = do
15971566 let mappedScriptWitnesses =
15981567 [ (policyId, pure . (assetName',quantity,) <$> substitutedWitness)
1599- | (ix, policyId, assetName', quantity, BuildTxWith witness) <- txMintValueToIndexed txMintValue'
1568+ | (ix, policyId, assetName', quantity, BuildTxWith witness) <- indexTxMintValue txMintValue'
16001569 , let substitutedWitness = BuildTxWith <$> substituteExecUnits ix witness
16011570 ]
16021571 final <- Map. fromListWith (<>) <$> traverseScriptWitnesses mappedScriptWitnesses
0 commit comments