All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Bump
cardano-api
,cardano-node
- Updated the conway genesis configuration file for mainnet
- When selecting public-key UTxOs during coin selection, outputs that are incompatible with PlutusV1 scripts are excluded.
- Fixed a bug in coin selection where the wallet's mixed inputs were not considered for a
TxBodyContent
with zero inputs - Improved the coin selection algorithm to correctly select mixed inputs for covering the transaction fees. Previously, only pure Ada inputs were considered for the fees.
- Fixed a bug in coin selection where the wallet's mixed inputs were not considered for a
TxBodyContent
with zero inputs - Considering withdrawals and certificates in
mapTxScriptWtinesses
. - Function
substituteExecutionUnits
updated to triggerTxBodyErrorAutoBalance
when witnesses are not found. MonadMockchain.sendTx
returnsEither
to allow the caller to handle submission failuresMonadMockchain.resolveDatumHash
returnsHashableScriptData
instead ofScriptData
to avoid re-hashing data values as much as possible- Coin selection uses
TxBuilder
instead ofTxBodyContent
Eq
andOrd
instances forOperator
Convex.BuildTx
: Added the option to look at all of a transaction's inputs when building a transactionConvex.CoinSelection.Class
: An effect for balancing transactionsConvex.Lenses
: Added lenses for staking certificates, withdrawals, proposal procedures and voting procedures and isos for certificates and withdrawalsConvex.BuildTx
: Added functions for withdrawals, certificates and stake witnessesConvex.Class
: AddsingleUTxO
function to retrieve a single output from the UTxO setConvex.Class
: AddMonadUtxoQuery
class for looking up unspent transaction outputs by payment credential.Convex.Devnet.CardanoNode.Types
: Add Ability to hardfork to conway era in devnet
- Move
Convex.BuildTx
fromconvex-coin-selection
toconvex-base
- Added a
Tracer m TxBalancingMessage
argument to the coin selection functions. This prints out useful information about decisions taken during coin selection and balancing. Instantiate withmempty
to ignore the messages. - Export
Convex.Wallet.MockWallet.w4
- The balancing algorithm now correctly calculates the number of required signatures when computing the transaction fee
- Deleted spurious
runQuery'
log messages - The constraints for most of the functions in
Convex.CoinSelection
have changed fromMonadFail m
toMonadError BalanceTxError m
, allowing for better error handling - Relaxed the
MonadError
instance ofMonadBlockchainCardanoNodeT
by removing theMonadError e m
constraint; fixed the implementation ofcatchError
Convex.BuildTx
: Ensure that at least 3 Ada is present when computing minimum UTxO value inminAdaDeposit
.
- More fine-grained functions in
Convex.Wallet.Operator
andConvex.Query
signing & balancing transactions - JSON instances for
CoinSelectionError
andBalancingError
- Add
Convex.Devnet.CardanoNode.withCardanoNodeDevnetConfig
and associated types for modifications to the genesis config files. IncludesallowLargeTransactions
for large transactions. - MonadLog instance for
MockchainT
- API documentation published on github pages (https://j-mueller.github.io/sc-tools/)
- A mockchain test that shows how to increase the maximum tx size
Convex.MockChain.Utils.runMockchainPropWith
to run a mockchain action in a quickcheck property with custom node params and initial distribution
Convex.Era
,Convex.Measure
,Convex.Event
modules
- Update
queryTip
andqueryTipSlotNo
inConvex.Devnet.NodeQueries
to also returnSlotLength
. - Rename
toUtxoTx
tofromUtxoTx
inConvex.Utxos
- Add generic return type to
withCardanoNode
andwithCardanoNodeDevnet
inConvex.Devnet.CardanoNode
. - Update dependencies to
cardano-api-8.8.0.0
andcardano-node-8.1.1
. Simplifiedcabal.project
Convex.BuildTx
: Include stake reference inpayToScriptHash
,payToPlutusV1
andpayToPlutusV2
Convex.CoinSelection
:- Export
requiredTxIns
,spentTxIns
- Fix a bug in coin selection that added too much output value for non-Ada assets
- Add a "change output" parameter to the coin selection functions
- Export
- Set
slotLength
inConvex.MockChain.Defaults
to 1 second (it was set to 1000 seconds by accident) - Change base monad of
mockchainSucceeds
toIO
- Change
_PlutusScriptWitness
inConvex.Lenses
to_PlutusScriptWitnessV1
- Increased the amount of UTxOs generated for wallets in the devnet from 1 to 10.
- Relax the context type of
_TxOutDatumInline
fromCtxTx
toctx
(any context type) - Added a field for
(LocalNodeConnectInfo CardanoMode, Env)
toRunningNode
inconvex-devnet
convex-base
Convex.PlutusLedger
:transAddressInEra
, prisms and isos for theInterval
type,transValue
Convex.Utxos.singleton
Convex.Utxos
: Added redeemer and ex units toRemoveUtxoEvent
Convex.Lenses
: Added_TxOutDatumInline
,_TxOutDatumInTx
,_ScriptData
,_PlutusScriptWitness
,_TxExtraKeyWitnesses
, prisms for validity intervals,_TxOutDatumHash
convex-devnet
:- Some haddocks in
Convex.Devnet.NodeQueries
- Added
Convex.Devnet.NodeQueries.queryUTxOWhole
- Some haddocks in
convex-mockchain
:Convex.MockChain
: Support for profiling plutus scripts.evaluateTx
returns the script contexts for a transaction. These can be turned into a fully applied script withfullyAppliedScript
.Convex.MockChain
: ExportfromLedgerUTxO
Convex.MockChain
:MonadTrans
instance forMockchainT
, export constructorConvex.MockChain
: AddMockchainIO
typeConvex.MockChain
: AddresolveDatumHash
function, giving access to all datums that were previously seenConvex.NodeParams
: Add lenses forProtocolParameters
type fromcardano-api
Convex.MockChain
: AddrunMockchain0IOWith
to allow easy manipulation of the protocol parameters for emulator tests, incl.mockchainSucceedsWith
andmockchainFailsWith
inConvex.MockChain.Utils
convex-node-client
: AddConvex.NodeClient.WaitForTxnClient
Convex.BuildTx
:- Add a monadic (writer) interface for building transactions
- Add
addRequiredSignature
,prependTxOut
,payToPlutusV2InlineDatum
,spendPlutusV2InlineDatum
functions - Add
spendPlutusV2RefWithInlineDatum
,spendPlutusV2RefWithoutInRef
andspendPlutusV2RefWithoutInRefInlineDatum
functions - Add
payToPlutusV2InlineWithDatum
andpayToPlutusV2InlineWithInlineDatum
functions - Add
mintPlutusV2Ref
function
- Add
querySlotNo
toMonadBlockchain
typeclass and update both blockchain and mockchain implementations. - Add
utcTimeToPosixTime
,toShelleyPaymentCredential
inConvex.Utils
. - Considering explicit error type
MonadBlockchainError
forMonadBlockchainCardanoNodeT
to enable proper error handling by caller. convex-wallet
:- Add HTTP server
- Add
Convex.Wallet.Operator
for managing credentials
convex-coin-selection
:- Add
Convex.Query
for UTxO queries, add convex-wallet backend for operator UTxOs - Add
utxosByPaymentCredentials
toMonadUtxoQuery
- Add
- Add
_PlutusScriptWitnessV2
toConvex.Lenses
- Deleted the
trading-bot
andmuesli
packages. - Deleted
spendPlutusV1Ref
as it does not make sense.
- Initial release