Skip to content
This repository was archived by the owner on Dec 2, 2024. It is now read-only.

Commit a9d0232

Browse files
Don't add collateral when not needed
1 parent b9f50e5 commit a9d0232

File tree

9 files changed

+199
-206
lines changed

9 files changed

+199
-206
lines changed

plutus-contract/src/Wallet/Emulator/Wallet.hs

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -459,22 +459,29 @@ handleBalanceTx utxo utx = do
459459

460460
collateral <- traverse lookupValue (Tx.txCollateralInputs txWithinputsAdded)
461461

462-
let collAddr = maybe ownAddr Ledger.txOutAddress $ Tx.txReturnCollateral txWithinputsAdded
463-
collateralPercent = maybe 100 fromIntegral (protocolParamCollateralPercent pProtocolParams)
464-
collFees = Ada.toValue $ (Ada.fromValue fees * collateralPercent + 99 {- make sure to round up -}) `Ada.divide` 100
465-
collBalance = fold collateral PlutusTx.- collFees
466-
467-
((negColl, newTxInsColl), (_, mNewTxOutColl)) <- calculateTxChanges collAddr outRefsWithValue $ Value.split collBalance
468-
469-
txWithCollateralInputs <- if Value.isZero negColl
470-
then do
471-
logDebug NoCollateralInputsAdded
472-
pure txWithinputsAdded
473-
else do
474-
logDebug $ AddingCollateralInputsFor negColl
475-
pure $ txWithinputsAdded & over Tx.collateralInputs (sort . (++) (fmap Tx.pubKeyTxInput newTxInsColl))
476-
477-
pure $ txWithCollateralInputs & Tx.totalCollateral ?~ collFees & Tx.returnCollateral .~ mNewTxOutColl
462+
if Value.isZero (fold collateral)
463+
&& null (Tx.txRedeemers txWithinputsAdded) -- every script has a redeemer, no redeemers -> no scripts
464+
&& null (Tx.txReturnCollateral txWithinputsAdded) then
465+
-- Don't add collateral if there are no plutus scripts that can fail
466+
-- and there are no collateral inputs or outputs already
467+
pure txWithinputsAdded
468+
else do
469+
let collAddr = maybe ownAddr Ledger.txOutAddress $ Tx.txReturnCollateral txWithinputsAdded
470+
collateralPercent = maybe 100 fromIntegral (protocolParamCollateralPercent pProtocolParams)
471+
collFees = Ada.toValue $ (Ada.fromValue fees * collateralPercent + 99 {- make sure to round up -}) `Ada.divide` 100
472+
collBalance = fold collateral PlutusTx.- collFees
473+
474+
((negColl, newTxInsColl), (_, mNewTxOutColl)) <- calculateTxChanges collAddr outRefsWithValue $ Value.split collBalance
475+
476+
txWithCollateralInputs <- if Value.isZero negColl
477+
then do
478+
logDebug NoCollateralInputsAdded
479+
pure txWithinputsAdded
480+
else do
481+
logDebug $ AddingCollateralInputsFor negColl
482+
pure $ txWithinputsAdded & over Tx.collateralInputs (sort . (++) (fmap Tx.pubKeyTxInput newTxInsColl))
483+
484+
pure $ txWithCollateralInputs & Tx.totalCollateral ?~ collFees & Tx.returnCollateral .~ mNewTxOutColl
478485

479486
type PubKeyTxIn = TxOutRef
480487

plutus-contract/test/Spec/TxConstraints/MustSpendPubKeyOutput.hs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import Ledger.CardanoWallet (paymentPrivateKey)
2020
import Ledger.Constraints.OffChain qualified as Constraints (MkTxError (TxOutRefNotFound), ownPaymentPubKeyHash,
2121
typedValidatorLookups, unspentOutputs)
2222
import Ledger.Constraints.OnChain.V1 qualified as Constraints (checkScriptContext)
23-
import Ledger.Constraints.TxConstraints qualified as Constraints (collectFromTheScript, mustIncludeDatumInTx,
24-
mustPayToTheScriptWithDatumInTx,
23+
import Ledger.Constraints.TxConstraints qualified as Constraints (collectFromTheScript, mustBeSignedBy,
24+
mustIncludeDatumInTx, mustPayToTheScriptWithDatumInTx,
2525
mustSpendPubKeyOutput)
2626
import Ledger.Tx qualified as Tx
2727
import Ledger.Typed.Scripts qualified as Scripts
@@ -69,10 +69,13 @@ baseLovelaceLockedByScript :: Integer
6969
baseLovelaceLockedByScript = lovelacePerInitialUtxo `div` 2
7070

7171
mustSpendPubKeyOutputContract :: [TxOutRef] -> [TxOutRef] -> Ledger.PaymentPubKeyHash -> Contract () Empty ContractError ()
72-
mustSpendPubKeyOutputContract offChainTxOutRefs onChainTxOutRefs pkh = do
72+
mustSpendPubKeyOutputContract = mustSpendPubKeyOutputContract' []
73+
74+
mustSpendPubKeyOutputContract' :: [Ledger.PaymentPubKeyHash] -> [TxOutRef] -> [TxOutRef] -> Ledger.PaymentPubKeyHash -> Contract () Empty ContractError ()
75+
mustSpendPubKeyOutputContract' keys offChainTxOutRefs onChainTxOutRefs pkh = do
7376
let lookups1 = Constraints.typedValidatorLookups typedValidator
74-
tx1 = Constraints.mustPayToTheScriptWithDatumInTx onChainTxOutRefs
75-
$ Ada.lovelaceValueOf baseLovelaceLockedByScript
77+
tx1 = Constraints.mustPayToTheScriptWithDatumInTx onChainTxOutRefs (Ada.lovelaceValueOf baseLovelaceLockedByScript)
78+
<> foldMap Constraints.mustBeSignedBy keys
7679
ledgerTx1 <- submitTxConstraintsWith lookups1 tx1
7780
awaitTxConfirmed $ Tx.getCardanoTxId ledgerTx1
7881

@@ -135,7 +138,7 @@ mustSpendSingleUtxoFromOtherWallet =
135138
let w2TxoRefs = txoRefsFromWalletState w2State
136139
w2MiddleTxoRef = [S.elemAt (length w2TxoRefs `div` 2) w2TxoRefs]
137140
Trace.setSigningProcess w1 (Just $ signPrivateKeys [paymentPrivateKey $ walletToMockWallet' w1, paymentPrivateKey $ walletToMockWallet' w2])
138-
void $ Trace.activateContractWallet w1 $ mustSpendPubKeyOutputContract w2MiddleTxoRef w2MiddleTxoRef w2PaymentPubKeyHash
141+
void $ Trace.activateContractWallet w1 $ mustSpendPubKeyOutputContract' [mockWalletPaymentPubKeyHash w2] w2MiddleTxoRef w2MiddleTxoRef w2PaymentPubKeyHash
139142
void Trace.nextSlot
140143

141144
in checkPredicate "Successful use of mustSpendPubKeyOutput with a single txOutRef from other wallet"
@@ -150,7 +153,7 @@ mustSpendAllUtxosFromOtherWallet =
150153
let w2TxoRefs = txoRefsFromWalletState w2State
151154
allW2TxoRefs = S.elems w2TxoRefs
152155
Trace.setSigningProcess w1 (Just $ signPrivateKeys [paymentPrivateKey $ walletToMockWallet' w1, paymentPrivateKey $ walletToMockWallet' w2])
153-
void $ Trace.activateContractWallet w1 $ mustSpendPubKeyOutputContract allW2TxoRefs allW2TxoRefs w2PaymentPubKeyHash
156+
void $ Trace.activateContractWallet w1 $ mustSpendPubKeyOutputContract' [mockWalletPaymentPubKeyHash w2] allW2TxoRefs allW2TxoRefs w2PaymentPubKeyHash
154157
void Trace.nextSlot
155158

156159
in checkPredicate "Successful use of mustSpendPubKeyOutput with all initial txOutRefs from other wallet"

plutus-contract/test/Spec/golden/traceOutput - pubKeyTransactions.txt

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,45 @@ Slot 00001: W[10]: InsertionSuccess: New tip is Tip(Slot 1, BlockId 9e944371f529
1010
Slot 00001: W[9]: InsertionSuccess: New tip is Tip(Slot 1, BlockId 9e944371f5292bcd66e4e498bbc313b92ae884154f0eca1ddf75cd0ec69ddc47, BlockNumber 0). UTxO state was added to the end.
1111
Slot 00001: W[3]: InsertionSuccess: New tip is Tip(Slot 1, BlockId 9e944371f5292bcd66e4e498bbc313b92ae884154f0eca1ddf75cd0ec69ddc47, BlockNumber 0). UTxO state was added to the end.
1212
Slot 00001: W[5]: InsertionSuccess: New tip is Tip(Slot 1, BlockId 9e944371f5292bcd66e4e498bbc313b92ae884154f0eca1ddf75cd0ec69ddc47, BlockNumber 0). UTxO state was added to the end.
13-
Slot 00001: W[1]: TxSubmit: 9344dbba07e037ac1e332c688c1dec1d548db83cd7d98e3f7c12e9acf94374de
14-
Slot 00001: TxnValidate 9344dbba07e037ac1e332c688c1dec1d548db83cd7d98e3f7c12e9acf94374de
13+
Slot 00001: W[1]: TxSubmit: 38fbe171e83c33581a737d0d1efa064afe389c8d49049e609a8ea311738a834e
14+
Slot 00001: TxnValidate 38fbe171e83c33581a737d0d1efa064afe389c8d49049e609a8ea311738a834e
1515
Slot 00001: SlotAdd Slot 2
16-
Slot 00002: W[7]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
17-
Slot 00002: W[8]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
18-
Slot 00002: W[6]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
19-
Slot 00002: W[4]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
20-
Slot 00002: W[2]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
21-
Slot 00002: W[1]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
22-
Slot 00002: W[10]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
23-
Slot 00002: W[9]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
24-
Slot 00002: W[3]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
25-
Slot 00002: W[5]: InsertionSuccess: New tip is Tip(Slot 2, BlockId 58b712cc278c4b6dba83cb8659f0f7b516673622f8713f2ef9c59c853eb313c0, BlockNumber 1). UTxO state was added to the end.
26-
Slot 00002: W[2]: TxSubmit: 45189b9ee9e012eb0305c915cb6f8411b9ae71fb7459939bb100adb432acd3b0
27-
Slot 00002: TxnValidate 45189b9ee9e012eb0305c915cb6f8411b9ae71fb7459939bb100adb432acd3b0
16+
Slot 00002: W[7]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
17+
Slot 00002: W[8]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
18+
Slot 00002: W[6]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
19+
Slot 00002: W[4]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
20+
Slot 00002: W[2]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
21+
Slot 00002: W[1]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
22+
Slot 00002: W[10]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
23+
Slot 00002: W[9]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
24+
Slot 00002: W[3]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
25+
Slot 00002: W[5]: InsertionSuccess: New tip is Tip(Slot 2, BlockId c7e6a8921696ca0bed1e8968643ed7d73508379416804ce0d2d332f711ccf8b0, BlockNumber 1). UTxO state was added to the end.
26+
Slot 00002: W[2]: TxSubmit: 41d625f32bf13e52ca6d42896ffb31e97883259fd15db239ffe86d2371e3ad67
27+
Slot 00002: TxnValidate 41d625f32bf13e52ca6d42896ffb31e97883259fd15db239ffe86d2371e3ad67
2828
Slot 00002: SlotAdd Slot 3
29-
Slot 00003: W[7]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
30-
Slot 00003: W[8]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
31-
Slot 00003: W[6]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
32-
Slot 00003: W[4]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
33-
Slot 00003: W[2]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
34-
Slot 00003: W[1]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
35-
Slot 00003: W[10]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
36-
Slot 00003: W[9]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
37-
Slot 00003: W[3]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
38-
Slot 00003: W[5]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 3d2c5ce6c94eb4ee62893799b518909183f5317df4224060824bb77f23e0dab4, BlockNumber 2). UTxO state was added to the end.
39-
Slot 00003: W[3]: TxSubmit: e2cdbc621f6b7b502d990b041d784909c78484aab1ae0f350ddf08620c3d80bb
40-
Slot 00003: TxnValidate e2cdbc621f6b7b502d990b041d784909c78484aab1ae0f350ddf08620c3d80bb
29+
Slot 00003: W[7]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
30+
Slot 00003: W[8]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
31+
Slot 00003: W[6]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
32+
Slot 00003: W[4]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
33+
Slot 00003: W[2]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
34+
Slot 00003: W[1]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
35+
Slot 00003: W[10]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
36+
Slot 00003: W[9]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
37+
Slot 00003: W[3]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
38+
Slot 00003: W[5]: InsertionSuccess: New tip is Tip(Slot 3, BlockId 8155c96f8e8e41a4b9a2b1bbb673bb41344f88603187ea6663f5132d21d5d1c6, BlockNumber 2). UTxO state was added to the end.
39+
Slot 00003: W[3]: TxSubmit: 9948453c9860bb58020be67bc1289fda347814035ea5eb54849c285b5f8145b0
40+
Slot 00003: TxnValidate 9948453c9860bb58020be67bc1289fda347814035ea5eb54849c285b5f8145b0
4141
Slot 00003: SlotAdd Slot 4
42-
Slot 00004: W[7]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
43-
Slot 00004: W[8]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
44-
Slot 00004: W[6]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
45-
Slot 00004: W[4]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
46-
Slot 00004: W[2]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
47-
Slot 00004: W[1]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
48-
Slot 00004: W[10]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
49-
Slot 00004: W[9]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
50-
Slot 00004: W[3]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
51-
Slot 00004: W[5]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 24bf0cf2cd2d34a8f0921d43ad33650b718a35fb470517efbfec5da55412398d, BlockNumber 3). UTxO state was added to the end.
42+
Slot 00004: W[7]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
43+
Slot 00004: W[8]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
44+
Slot 00004: W[6]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
45+
Slot 00004: W[4]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
46+
Slot 00004: W[2]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
47+
Slot 00004: W[1]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
48+
Slot 00004: W[10]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
49+
Slot 00004: W[9]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
50+
Slot 00004: W[3]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
51+
Slot 00004: W[5]: InsertionSuccess: New tip is Tip(Slot 4, BlockId 42e2cacb9e07846b4b629e6f036799eeaa60b0fd58aaf022714b3cdb0c7bb8d1, BlockNumber 3). UTxO state was added to the end.
5252
Slot 00004: SlotAdd Slot 5
5353
Final balances
5454
Wallet 7:
@@ -60,14 +60,14 @@ Wallet 6:
6060
Wallet 4:
6161
{, ""}: 100000000
6262
Wallet 2:
63-
{, ""}: 99820463
63+
{, ""}: 99822575
6464
Wallet 1:
65-
{, ""}: 99820375
65+
{, ""}: 99828559
6666
Wallet 10:
6767
{, ""}: 100000000
6868
Wallet 9:
6969
{, ""}: 100000000
7070
Wallet 3:
71-
{, ""}: 99820463
71+
{, ""}: 99822575
7272
Wallet 5:
7373
{, ""}: 100000000

0 commit comments

Comments
 (0)