Releases: bloxbean/cardano-client-lib
v0.3.0-beta2 (Vasil HF compatible)
Key Changes
- Vasil HF specific changes. Support for
- Key Derivation Enhancement
- Child public key derivation from parent public key
- New composable function
- BalanceTxBuilders.balanceTx to balance an unbalanced transaction
- GraphQL backend support REMOVED
PRs / Other Changes
- Fix Vulnerability - https://advisory.checkmarx.net/advisory/vulnerability/Cxa9261daf-3755/ by @edridudi in #120
- Bump Koios Java Client Version to 1.11 (Fixes TxHash Object Unknown Field 'epochNo') by @edridudi in #121
- Implemented getChildPublicKey for xPub key derivation by @zack-scott in #128
- Vasil hf related changes (Serialization, Inline datum in composable function and tests) by @satran004 in #130
- [#134] Added coinsPerUtxoSize field to protocol params by @satran004 in #135
- Min required Ada and V2 costmodel changes by @satran004 in #138
- Removed getDefaultCostMdls() and updated tests by @satran004 in #139
- Fixed existing failed testcases due to Min Ada change by @satran004 in #140
- Script Ref fix by @satran004 in #141
- Composable functions - Reference inputs, Collateral Outputs, Tests by @satran004 in #142
- Changed PlutusV2 cost model based on testnet by @satran004 in #143
- Bump Koios Java Client Version to 1.12 (Vasil HF Preparation) by @edridudi in #146
- Protocol Params api updated to return costmodels. Added method to ret… by @satran004 in #145
- Bump okhttp3 version to 4.10.0 (To fix sonatype-2022-4262),Guava vers… by @satran004 in #147
Dependencies
- Core module
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib</artifactId>
<version>0.3.0-beta2</version>
</dependency>
- Backend modules
- For backend support, use one of the following supported backend module
<!-- For Blockfrost backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-blockfrost</artifactId>
<version>0.3.0-beta2</version>
</dependency>
<!-- For Koios backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-koios</artifactId>
<version>0.3.0-beta2</version>
</dependency>
<!-- For Ogmios backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-ogmios</artifactId>
<version>0.3.0-beta2</version>
</dependency>
For Gradle, add the following dependencies to build.gradle
- Core Module
implementation 'com.bloxbean.cardano:cardano-client-lib:0.3.0-beta2'
- Backend modules
- For backend support, use one of the following supported backend module
//For Blockfrost
implementation 'com.bloxbean.cardano:cardano-client-backend-blockfrost:0.3.0-beta2'
//For Koios
implementation 'com.bloxbean.cardano:cardano-client-backend-koios:0.3.0-beta2'
//For Ogmios
implementation 'com.bloxbean.cardano:cardano-client-backend-ogmios:0.3.0-beta2'
New Contributors
- @zack-scott made their first contribution in #128
Full Changelog: v0.2.0...v0.3.0-beta2
v0.2.0
Key Changes
- CIP 8 implementation
- CIP 30 signData, verify signature implementation
- koios-java-client dependency update
PR / Other Changes
- Fix Koios Limitations Header in README.md by @edridudi in #103
- Cip8 cbor Implementation by @satran004 in #110
- Remove JsonIgnore Annotation from getPolicyId() by @edridudi in #112
- Fix Koios Schema Change for Policy Assets Endpoint + Added Account Endpoint as Backend Service for Koios and BF by @edridudi in #113
- Cip30 & CIP8 specific enhancements by @satran004 in #114
- DataSignature Jackson Serialization & Deserialization by @edridudi in #115
- Helper methods in DataSignature by @satran004 in #116
Full Changelog: v0.2.0-beta3...v0.2.0
Dependencies
- Core module
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib</artifactId>
<version>0.2.0</version>
</dependency>
- Backend modules
- For backend support, use one of the following supported backend module
<!-- For Blockfrost backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-blockfrost</artifactId>
<version>0.2.0</version>
</dependency>
<!-- For Koios backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-koios</artifactId>
<version>0.2.0</version>
</dependency>
<!-- For Ogmios backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-ogmios</artifactId>
<version>0.2.0</version>
</dependency>
<!-- For Cardano Graphql backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-gql</artifactId>
<version>0.2.0</version>
</dependency>
For Gradle, add the following dependencies to build.gradle
- Core Module
implementation 'com.bloxbean.cardano:cardano-client-lib:0.2.0'
- Backend modules
- For backend support, use one of the following supported backend module
//For Blockfrost
implementation 'com.bloxbean.cardano:cardano-client-backend-blockfrost:0.2.0'
//For Koios
implementation 'com.bloxbean.cardano:cardano-client-backend-koios:0.2.0'
//For Ogmios
implementation 'com.bloxbean.cardano:cardano-client-backend-ogmios:0.2.0'
//For Cardano Graphql
implementation 'com.bloxbean.cardano:cardano-client-backend-gql:0.2.0'
v0.2.0-beta3
Key Changes
-
Project restructuring and new backends
- cardano-client-lib : This is the core module. It contains low level serialization apis, high-level apis and composable functions to build transactions.
- cardano-client-backend : This module contains backend service apis.
- Backend modules : The following backend modules are currently supported for different providers.
- cardano-client-backend-blockfrost (Status: Stable)
- cardano-client-backend-koios (Status: Beta)
- cardano-client-backend-ogmios (Status: Experimental. Only submitTransaction & evaluateTx api)
- cardano-client-backend-gql (Status: Deprecated) -
A new abstraction layer to avoid direct dependencies with
BackendService
. The core module provides 3 simple interfaces which can be implemented by an application to build and submit transactions to Cardano blockchain- UtxoSupplier : To supply utxos
- ProtocolParamsSupplier : To provide protocol prarameters
- TransactionProcessor : To submit a transaction to Cardano node.
Note: The out-of-box implementations of above interfaces use backend service api.
-
Staking related cbor serialization. The following staking related use cases are now possible.
- Staking key registration
- Stake Delegation
- Staking key de-registration -
Added new UtxoSelection strategies
- RandomImproveUtxoSelectionStrategy
- LargestFirstUtxoSelectionStrategy -
Evaluate Tx method in TransactionService to calculate ExUnits. This method is currently implemented for Blockfrost and Ogmios backends.
-
Util method to calculate tx hash from a transaction object. (
TransactionUtil
)
Breaking Changes
BackendFactory
class has been removed. To create an instance ofBackendService
, use backend specific implementation class. Example:BFBackendService
,KoiosBackendService
,OgmiosBackendService
etc.- Fixed typo in
BlockService.getLatestBlock()
method name
To remove Backend api's dependency from core
ScriptUtxoFinders.findFirstByDatum
takesUtxoSupplier
as parameter instead ofUtxoService
DefaultUtxoSelectionStrategy
’s constructor takesUtxoSupplier
as parameter instead ofUtxoService
DefaultUtxoSelector
’s constructor takesUtxoSupplier
as parameter instead ofUtxoService
TxBuilderContext.init
method takesUtxoSupplier
,ProtocolParamsSupplier
as parameters instead ofBackendService
Package name changes:
Please refer to below old and new package names to know package name changes.
New Packages
com.bloxbean.cardano.client.api.model.Result
com.bloxbean.cardano.client.api.model.Utxo
com.bloxbean.cardano.client.api.helper.model.TransactionResult
com.bloxbean.cardano.client.api.exception.ApiException
com.bloxbean.cardano.client.api.exception.ApiRuntimeException
com.bloxbean.cardano.client.api.model.ProtocolParams
Old Packages:
com.bloxbean.cardano.client.backend.model.Result
com.bloxbean.cardano.client.backend.model.Utxo
com.bloxbean.cardano.client.backend.api.helper.model.TransactionResult
com.bloxbean.cardano.client.backend.exception.ApiException
com.bloxbean.cardano.client.backend.exception.ApiRuntimeException
com.bloxbean.cardano.client.backend.model.ProtocolParams
PRs / Other Changes
- Refactored UtxoSelectionStrategy + added RandomImproveUtxoSelectionStrategy by @stikkos in #80
- Fix [#79] - Retry fee calculation (with amount = amount - fee) in cas… by @satran004 in #84
- UTXO supplier abstraction by @stikkos in #88
- Add Koios Backend Support by @edridudi in #87
- Fix: Koios backend failed integration test (#89) + Move Koios Urls to a Constant class in koios main module bloxbean (#90) by @edridudi in #91
- [#75] Implemented staking related cbor serialization and tests by @satran004 in #92
- Updated project structure to avoid core module's direct dependency with Backend service apis by @satran004 in #93
- Ogmios backend initial implementation by @satran004 in #95
- Bump Koios Java Lib to 1.6 by @edridudi in #97
- Fix Koios Backend Functionality following Integration Tests by @edridudi in #99
- add util to get tx_hash by @SomeReason in #100
- Koios Java Lib Version Bump to 1.9 - Add Support for UTxO Ordering by @edridudi in #101
- Cosmetics by @edridudi in #102
Full Changelog: v0.2.0-beta2...v0.2.0-beta3
Dependencies
- Core module
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib</artifactId>
<version>0.2.0-beta3</version>
</dependency>
- Backend modules
- For backend support, use one of the following supported backend module
<!-- For Blockfrost backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-blockfrost</artifactId>
<version>0.2.0-beta3</version>
</dependency>
<!-- For Koios backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-koios</artifactId>
<version>0.2.0-beta3</version>
</dependency>
<!-- For Ogmios backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-ogmios</artifactId>
<version>0.2.0-beta3</version>
</dependency>
<!-- For Cardano Graphql backend -->
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-backend-gql</artifactId>
<version>0.2.0-beta3</version>
</dependency>
For Gradle, add the following dependencies to build.gradle
- Core Module
implementation 'com.bloxbean.cardano:cardano-client-lib:0.2.0-beta3'
- Backend modules
- For backend support, use one of the following supported backend module
//For Blockfrost
implementation 'com.bloxbean.cardano:cardano-client-backend-blockfrost:0.2.0-beta3'
//For Koios
implementation 'com.bloxbean.cardano:cardano-client-backend-koios:0.2.0-beta3'
//For Ogmios
implementation 'com.bloxbean.cardano:cardano-client-backend-ogmios:0.2.0-beta3'
//For Cardano Graphql
implementation 'com.bloxbean.cardano:cardano-client-backend-gql:0.2.0-beta3'
v0.2.0-beta2
Key Changes
- No native lib dependencies
- New composable functions to build payment transaction, token minting, Plutus contract call
Check examples here - Annotations to convert a custom POJO to
PlutusData
- Payment transaction improvements
Breaking Changes
UtxoSelectionStrategy
&DefaultUtxoSelectionStrategyImpl
have been moved undercom.bloxbean.cardano.client.coinselection
packageScriptUtxoSelection
is renamed asUtxoSelector
. UtxoSelector is used to find one or more utxos at an address based on given predicate.
PRs / Other Changes
- Remove after() from RequireTimeAfter.java (similar to RequireTimeBefore) + Fix Compilation Warnings by @edridudi in #62
- Policy as new Field instead of deprecated policyScript and policyKeys Fields in MintTransaction Object + PolicyUtil based on https://github.com/input-output-hk/cardano-node/blob/master/doc/reference/simple-scripts.md by @edridudi in #63
- Payment Transaction Improvements by @nemo83 in #59
- Plutus highlevel by @satran004 in #67
- Allow to create an Account from a private key by @bcoste in #68
- Coin selection by @edridudi in #70
- ed25519 extended signing by @stikkos in #73
- Functional interfaces for Plutus call by @satran004 in #76
- It restructure by @satran004 in #78
- Add data hash calculation for MinAdaCalculator by @SomeReason in #77
New Contributors
v0.2.0-beta1
- Serialization / De-Serialization support for all script types
- Plutus specific serialization fixes
- More tests added for the contract call
What's Changed
- Keys.java, RequireTimeBefore.java Serialization/Deserialization Fix + AssetService Expansion + Updated Used By Section by @edridudi in #54
- Fixes and Optimizations by @edridudi in #58
- Plutus Serialization and contract tests by @satran004 in #60
New Contributors
Dependencies
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib</artifactId>
<version>0.2.0-beta1</version>
</dependency>
Additional dependency for Raspberry pi
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib-extras</artifactId>
<version>0.2.0-beta1</version>
</dependency>
v0.2.0-preview2
Changes
-
The following features are now implemented in pure Java. Native dependencies have been removed for these features
- BIP 39 (mnemonic code generation)
- BIP 32 - ed25519
- CIP 1852 HD wallet derivation
- Helper class to derive HD key pair based on given derivation path
- Address encoding & decoding. Generation of following addresses are now supported in the lib
- Base address
- Enterprise address
- Pointer address
- Reward address (Stake address)
- Bech32 Java implementation
-
cardano-serialization-lib dependency has been removed. There is still a native lib dependency on a small rust module to sign transaction with ed25519 expanded key.
If you are on an unsupported platform, you can either compile this rust module and copy the binary to the required path or you can also now provide your own SigningProvider implementation by implementingcom.bloxbean.cardano.client.crypto.api.SigningProvider
-
CIP implementations
- CIP 20 - Transaction message/comment metadata. MessageMetadata class to create CIP20 compatible metadata.
- CIP 25 - NFT Metadata Standard. NFTMetadata class to create CIP25 compatible metadata
Breaking Changes
- The following address specific static methods are moved from Account class to
com.bloxbean.cardano.client.address.util.AddressUtil
class- addressToBytes(String address)
- bytesToBase58Address(byte[] bytes)
- bytesToAddress(byte[] bytes)
Fixes
- [#30] Added onchainMetadata field for NFT metadata
- [#49] Replace deprecated Blockfrost api endpoint for Address.getTransactions()
Dependencies
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib</artifactId>
<version>0.2.0-preview2</version>
</dependency>
Additional dependency for Raspberry pi
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib-extras</artifactId>
<version>0.2.0-preview2</version>
</dependency>
v0.2.0-preview1
- Raspberry pi support
- Need additional dependency "cardano-client-lib-extras"
- Verified on Raspberry pi 4 with "Raspbian GNU/Linux 11 (bullseye)" and "Ubuntu 20.10 (64 bits)"
- Alonzo specific serialization changes
pom.xml
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib</artifactId>
<version>0.2.0-preview1</version>
</dependency>
<dependency>
<groupId>com.bloxbean.cardano</groupId>
<artifactId>cardano-client-lib-extras</artifactId>
<version>0.2.0-preview1</version>
</dependency>
v0.1.5
v0.1.5-beta
Fixes
[#28] Token burn on a nft fails - Fixed transaction serialization for negative value
[#27] Asset names which are valid hex but without "0x" prefix are stored incorrectly in ledger during token minting
- A new api method in BackendService
FeeCalculationService getFeeCalculationService(TransactionHelperService transactionHelperService)
v0.1.4
Fixes
[#26] Utxo service returning status code 400 during transfer
[#20] Fix Min Ada in Utxo calculation - Alonzo
[#18] Caller can provide native lib name through system properties or env variable
- The native library name and folder can be customized through system properties.
Example:
System.setProperty("jna.library.path", "/Users/satya");
System.setProperty(LibraryUtil.CARDANO_CLIENT_NATIVE_LIB_NAME, "cardano-native-lib");
[#15] AddressUtil to validate addresses