Skip to content

Releases: bloxbean/cardano-client-lib

v0.3.0-beta2 (Vasil HF compatible)

26 Jul 12:45
4d5fff8
Compare
Choose a tag to compare

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

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

Full Changelog: v0.2.0...v0.3.0-beta2

v0.2.0

15 May 07:12
Compare
Choose a tag to compare

Key Changes

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

31 Mar 16:06
Compare
Choose a tag to compare

Key Changes

  1. 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)

  2. 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

    1. UtxoSupplier : To supply utxos
    2. ProtocolParamsSupplier : To provide protocol prarameters
    3. TransactionProcessor : To submit a transaction to Cardano node.

    Note: The out-of-box implementations of above interfaces use backend service api.

  3. Staking related cbor serialization. The following staking related use cases are now possible.
    - Staking key registration
    - Stake Delegation
    - Staking key de-registration

    Staking Examples

  4. Added new UtxoSelection strategies
    - RandomImproveUtxoSelectionStrategy
    - LargestFirstUtxoSelectionStrategy

  5. Evaluate Tx method in TransactionService to calculate ExUnits. This method is currently implemented for Blockfrost and Ogmios backends.

  6. Util method to calculate tx hash from a transaction object. (TransactionUtil)

Breaking Changes

  • BackendFactory class has been removed. To create an instance of BackendService, 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 takes UtxoSupplier as parameter instead of UtxoService
  • DefaultUtxoSelectionStrategy’s constructor takes UtxoSupplier as parameter instead of UtxoService
  • DefaultUtxoSelector’s constructor takes UtxoSupplier as parameter instead of UtxoService
  • TxBuilderContext.init method takes UtxoSupplier, ProtocolParamsSupplier as parameters instead of BackendService

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

20 Feb 04:35
Compare
Choose a tag to compare

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 under com.bloxbean.cardano.client.coinselection package
  • ScriptUtxoSelection is renamed as UtxoSelector. UtxoSelector is used to find one or more utxos at an address based on given predicate.

PRs / Other Changes

New Contributors

v0.2.0-beta1

06 Jan 12:57
v0.2.0-beta1
Compare
Choose a tag to compare
  • 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

22 Dec 11:17
Compare
Choose a tag to compare
v0.2.0-preview2 Pre-release
Pre-release

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 implementing com.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

05 Dec 06:24
Compare
Choose a tag to compare
v0.2.0-preview1 Pre-release
Pre-release
  • 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

14 Nov 06:02
Compare
Choose a tag to compare

Changes

[#32] Add a new overloaded method calculateFee(List<PaymentTransaction>) in FeeCalculationService

v0.1.5-beta

29 Oct 16:25
Compare
Choose a tag to compare

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

15 Oct 14:49
Compare
Choose a tag to compare

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