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.
This patch contains a number of bug fixes to v0.8.0
.
Implemented enhancements:
Fixed bugs:
- PyCardano does not correctly load nested PlutusData from cbor where the keys are unions of PlutusData #193
- [Bug fix] Return a value directly if its type is 'Any' on deserializing #195 (cffls)
- Fix recursive deserialization of cbor bytes #194 (nielstron)
- Fix error when adding multiple redeemers #192 (cffls)
- Fix redeemer initalization #189 (nielstron)
This patch contains a number of bug fixes and enhancements.
Implemented enhancements and bug fixes:
- Allow str addresses as change address in txbuilder #187
- Include API responses in submit_tx method #185
- Specification of the Redeemer Tag necessary? #177
- Error when submit NFT minting tx #165
- Add error handling to blockfrost submit_tx method #188 (bhatt-deep)
- Get UTxO from Transaction ID and Index #186 (juliusfrost)
- Reference UTxOs are UTxOs (not TransactionInputs) #181 (nielstron)
- Add support for complex dictionary types #180 (nielstron)
- Add functions to automatically add required signers and validity range #179 (nielstron)
- Remove the need to specify the RedeemerTag #178 (nielstron)
- Fix timezone info for Ogmios backend #176 (juliusfrost)
- Correctly parse List[X] annotated objects #170 (nielstron)
- Fixed the plutus script returned by blockfrost https://github.com/Python-Cardano/pycardano/commit/eabd61305ff4c52b8cd4dce3c54171f8e98cb7cf (cffls)
- Change plutus example to inline datum and inline script https://github.com/Python-Cardano/pycardano/commit/f5542b45066d1f17d2546be90531898b1ab63d7d. (cffls)
- [Bug fix] Force set timezone in system start unix to utc https://github.com/Python-Cardano/pycardano/commit/7771a3cc715ea7fb59900947d70b182db59e84ad (cffls)
Closed issues:
- Verification and Signing Keys Bug #184
- Error: The seed must be exactly 32 bytes long #159
- Move to hashlib for hashing #153
Merged pull requests:
- Update tutorial with renamed smart contract language #183 (nielstron)
- Bump blockfrost-python from 0.5.2 to 0.5.3 #162 (dependabot[bot])
Implemented enhancements:
- CIP-0008: Allow for signing with stake key directly #154 (thaddeusdiamond)
- Generalize the "plutus" section and introduce alternative languages #145 (nielstron)
- Switch the Plutus introduction to eopsin #144 (nielstron)
- Fix static typing #139 (cffls)
Fixed bugs:
Closed issues:
- Docs for adding arbitrary datum value to .add_output method #116
Merged pull requests:
- Fix typo in documentation pointing to Network.PREPROD #152 (nielstron)
- Bump pytest from 7.2.0 to 7.2.1 #150 (dependabot[bot])
- Fix typo that broke link formatting in the plutus introduction #149 (nielstron)
- Remove mention of pyaiken in plutus docs #147 (nielstron)
- Rename plutus sample contract name to correct "Gift contract" #146 (nielstron)
- Bump isort from 5.10.1 to 5.11.4 #142 (dependabot[bot])
- Bump mypy from 0.990 to 0.991 #133 (dependabot[bot])
Implemented enhancements:
- Modified IndefiniteList as subclass of UserList. #138 (bhatt-deep)
- Slight modification ExtendedSigningKey creation from HDWallet #132 (henryyuanheng-wang)
Fixed bugs:
A major improvement of this version is the enforcement of static typing on some modules. Special thanks to daehan-koreapool!
Implemented enhancements:
- Feature request: address.balance() helper function #115
- Improve address type hint #130 (daehan-koreapool)
- Enhance nativescript.py type hint #129 (daehan-koreapool)
- Attempt to improve liskov substitution principle error #128 (daehan-koreapool)
- Support utxo query with kupo for Vasil #121 (henryyuanheng-wang)
- Improve base + blockfrost module maintainability #120 (daehan-koreapool)
- Refactor ogmios.py module maintainability #114 (daehan-koreapool)
- Improve bip32.py type hint #107 (daehan-koreapool)
- Testing more types of HDWallet derived Cardano addresses #103 (daehan-koreapool)
- Fixing inconsistency between generated entropy value type and the expected HDWallet.entropy value type #101 (daehan-koreapool)
- Improve Ogmios backend module #111 (daehan-koreapool)
Fixed bugs:
- decodeVerKeyDSIGN: wrong length, expected 32 bytes but got 0 #113
Closed issues:
- Document how to add reference_inputs when using TransactionBuilder #118
- config option to choose local cardano-node for transactions #102
Merged pull requests:
- Bump websocket-client from 1.4.1 to 1.4.2 #126 (dependabot[bot])
- Bump sphinx-rtd-theme from 1.0.0 to 1.1.1 #125 (dependabot[bot])
- provide examples for adding transaction properties #119 (peterVG)
- Update variable name so it matches downstream code #117 (peterVG)
- Bump pytest from 7.1.3 to 7.2.0 #110 (dependabot[bot])
- Bump pytest-xdist from 2.5.0 to 3.0.2 #109 (dependabot[bot])
- Add python3.11 to CI #108 (cffls)
- Support HDWallets and mnemonic phrases. (#85)
- Fix key error when there are duplicates in reference scripts.
- If merging change into existing outputs is enabled, do not enforce min_utxo on changes.
- Make script estimation more accurate.
- Support cbor serializable for UTxO. (#84)
- Add required signers as part of fee estimation.
- Fix insufficient min_utxo amount when using Blockfrost context.
- Change the default calculation of
min_lovelace
to Vasil era. This is a backward compatible change, and it will reduce the amount ofmin_lovelace
required for transactions.
Fix dependencies.
- Add coins_per_utxo_size in blockfrost chain context
- Fixed
PPViewHashesDontMatch
issue. See details in [issue 81] (https://github.com/cffls/pycardano/issues/81).
v0.6.0
is update for Vasil hard fork.
- Support for reference inputs (CIP31).
- Support for inline datum (CIP32).
- Support for reference scripts (CIP33).
- Vasil changes for Ogmios.
- Vasil changes for blockforst.
- Add type "RawPlutusData", which is used as the default type for datum deserialized from cbor.
TransactionOutput
now has two new fields,datum
andscript
, which could be added to the transaction output.- Blockfrost chain context now supports custom API url.
- Improved the format of transaction representation.
- Method
add_script_input
inTransactionBuilder
no longer requiresscript
field to be set. If absent, the transaction builder will try to find it from chain context. - Similarly, method
add_minting_script
inTransactionBuilder
no longer requiresscript
field to be set. If absent, the transaction builder will try to find it from chain context.
- Policy json serializer (#58)
- Fix min lovelace when the input is Value type
- Staking certificates.
- Add an option to merge change into already existing output. (#38).
- Enable UTxO query with Kupo (#39).
- Add 'add_minting_script' to txbuilder.
- Add usage guides for Plutus (#46).
- Add message signing and verification (CIP8) (#45).
amount
inTransactionOutput
will be converted to typeValue
even when anint
is passed in (#42).- Add unknown fields to ArraySerializable if more values are provided.
- Prevent 'Transaction.from_cbor' from dropping data in datum.
- Add fake fee to fake transaction when fee is 0.
- Use specific version of blockfrost-python
- Don't add min_lovelace to unfulfilled_amount when change address is not provided
- Support mint redeemer
- Add execution units estimation
- Fee Estimation Improvement (#27)
- Add blockfrost support for transaction evaluation
- Refactor transaction builder to a dataclass
- Upgrade Blockfrost to 0.4.4
- Do not modify multiassets when being added or subtracted
- Restore empty datum in redeemer
Some minor improvements in transaction builder.
- Add more details to the message of expection when UTxO selectors failed.
- Validate output value is non-negative.
- Incorporate change split logic #7.
- Plutus
- Datum support for transaction inputs and transaction outputs.
- New function
add_script_input
in tx builder to support spending of Plutus script input. - Add collateral to tx builder for script transaction.
- Add
plutus_script_hash
that calculates the hash of a Plutus script. - Include script execution steps and memory into fee calculation.
- Add
build_and_sign
to tx builder.
- Remove positional argument
index
from Redeemer's constructor.
This release added essential features for Plutus script interactions.
- Plutus data
- Serialization, deserialization, and customization of plutus data and redeemer
- Plutus cost model
- Calculation of script data hash
- JSON compatibility
- Extended key support
- Sort multi-assets based on policy id and asset names
- Fail tx builder when input amount is not enough to cover outputs and tx fee
- Metadata and native script to docs
- A full stack example (flask + PyCardano + BlockFrost + React + Nami wallet)
- Continuous integration
- Ogmios backend support
- Minor fix in native token example