Cardano Serialization Lib Versions Save

This is a library, written in Rust, for serialization & deserialization of data structures used in Cardano's Haskell implementation of Alonzo along with useful utility functions.

11.5.0

8 months ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/633

Changes

Added add_change_if_needed_with_datum function to the TransactionBuilder type. The function provides ability to send change to a plutus script address with a datum or datum hash. Added a new type OutputDatum specify datum or datum hash as function argument. . Fixed memory issue for asmjs version. Updated link in the CSL doc. Thanks @katomm

Published

https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.5.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.5.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.5.0 https://crates.io/crates/cardano-serialization-lib/11.5.0

11.4.0

1 year ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/612

Changes

Added from_address function to the PlutusData type. The function converts address to a datum format. Added serialization_formatfunction to the TransactionOutput type. This function provides access to information about TransactionOutput format after deserialization.

Published

https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.4.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.4.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.4.0 https://crates.io/crates/cardano-serialization-lib/11.4.0

11.3.0

1 year ago

API Changes

Safe transaction body serialization roundtrip. #582

We introduce FixedTransaction. That new type can help you save the original CBOR bytes of a transaction body for reasons you need to keep it unchanged. For example, when you need to add a new witness to a transaction. Example:

let mut original_tx = FixedTransaction::from_hex("tx hex").unwrap();
original_tx.set_witness_set(get_new_witness_set().to_bytes())
let tx_bytes = original_tx.to_bytes()
// submit your tx or use it somewhere else

Non API Changes

Plutus script minting by ref script. #568

Despite that you can use PlutusScriptSource in the MinBuilder. The MinBuilder doesn't support ref inputs inside itself. Since this version we fixed that and you can easily mint something by plutus script ref.

Published:

https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.3.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.3.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.3.0 https://crates.io/crates/cardano-serialization-lib/11.3.0

11.2.0

1 year ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/560

API Changes

Mint builder and plutus mint support. #551

We introduce MintBuilder. MintBuilder can help you to make mints with native scripts or Plutus scripts. Example:

        let mut mint_builder = MintBuilder::new();
        let plutus_script_source = PlutusScriptSource::new(&get_plutus_script());
        let mint_witnes = MintWitness::new_plutus_script(&plutus_script_source, &get_redeemer());
        let mint_witnes_native_script = MintWitness::new_native_script(&get_native_script());
        mint_builder.add_asset(&mint_witnes, &get_asset_name(), &get_amount());
        mint_builder.add_asset(&mint_witnes_native_script, &get_asset_name(), &get_amount());

Send all #480

Added create_send_all function. The fuction prepares batch of Transaction with all utxos that you put to the create_send_all argument. NOTE: create_send_all supports only non script inputs.

Lang version and ref script input #544

Now PlutusScriptSource has function .new_ref_input_with_lang_ver. The new function consider plutus lang version in its argument. .new_ref_input_with_lang_ver helps for correct .calc_script_data_hash calculation in TransactionBuilder. We recommend to use .new_ref_input_with_lang_ver instead .new_ref_input.

Multiple script inputs #539

We fixed logic for inputs with the same script addresses. Now if you wanna add missed scripts to your inputs you should use .add_required_script_input_witnesses instead of .add_required_plutus_input_scripts.

set_prefer_alonzo_format #522

Added .set_prefer_alonzo_format function to AuxiliaryData. It helps to keep alonzo format during AuxiliaryData serialization.

New testnet NetworkInfo #563

Added testnet_preview and testnet_preprod functions for preview and preprod networks.

Published:

https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.2.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.2.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.2.0 https://crates.io/crates/cardano-serialization-lib/11.2.0

11.1.1

1 year ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/555

Bindgen library dependency updated

11.1.0

1 year ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/529

API Changes

Reference inputs support. #514

We introduce DatumSource and PlutusScriptSource types for easily use plutus scripts and datums references. Just create them and put to a new PlutusWitness instance by PlutusWitness::new_with_ref() . See example below.

        let datum: PlutusData = get_datum();
        let input_with_ref_datum: TransactionInput = get_input_with_ref_datum();

        //You can create datum source with a datum or with a ref input
        let datum_source = DatumSource::new(&datum);
        let datum_ref_source = DatumSource::new_ref_input(&input_with_ref_datum);

        let script: PlutusScript = get_script();
        let input_with_ref_script: TransactionInput = get_input_with_ref_script();
        let script_hash: ScriptHash = get_script_hash();

        //You can create script source with a script or with a ref input
        let script_source = PlutusScriptSource::new(&script);
        let script_ref_source = PlutusScriptSource::new_ref_input(&script_hash, &input_with_ref_script);

        //and use script and datum source to create a plutus witness
        let plutus_witness = PlutusWitness::new_with_ref(&script_ref_source, &datum_ref_source, &get_redeemer());

        //also possible to mix ref inputs source and non-ref inputs source or use just non-ref inputs sources
        let plutus_witness = PlutusWitness::new_with_ref(&script_source, &datum_ref_source, &get_redeemer());

        //and in the and you just add plutus script input as you do it before
        let tx_inputs_builder = TxInputsBuilder::new();
        tx_inputs_builder.add_plutus_script_input(&plutus_witness, &get_script_input(), &get_amount());

Json and hex serialization support for protocol types. #345 #489 #293

Now, most of the protocol types (but not all) in the CSL contains to_json, from_json, to_hex, from_hex functions. By to_hex and from_hex you can serialize and deserialize a type instance to or from string with CBOR represented in hex format. By to_json, from_json you can serialize and deserialize a type instance to or from JSON string, that might help to provide more information when you create an issue on CSL GitHub. Or to build or change protocol type instance by your hands. There is alsoto_js_value that is available only in js API. to_js_value map a type instance to a js type. For example TransactionInput instance maps to a TransactionInputJSON type. All available ***JSON types you can see in js API.

Cardano-cli JSON datum format support. #357

Despite that we have to_json, from_json support for protocol types. Datum JSON in the cardano-cli format can be represented in two ways by BasicConversions (ScriptDataJsonNoSchema in cardano node ) and DetailedSchema(ScriptDataJsonDetailedSchema in cardano node ). For the PlutusDatum type the functions to_json and from_json are implemented with additional parameter of PlutusDatumSchema type. Also there are 'old style' functions encode_json_str_to_plutus_datum and decode_plutus_datum_to_json_str like as for a metadatum.

Additional changes.

  • Now error text from add_change_if_needed contains information about how much assets or ada not enough to cover all outputs, except a change. #520
  • The min_ada_for_output function now uses only babbage era algorithm, it usually calculates less ada then pre-babbage algorithm. #526
  • Fixed the add_mint_asset function. Now it adds mint assets without replacing old value. #513
  • Fixed RandomImproveMultiAsset algorithm for add_inputs_from function. Now it take into account previously added assets and ada into a tx builder. #523
  • DeserializeError and JsError now implements std::error::Error #506

Thank all who took part in this release!

Published:

https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.1.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.1.0 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.1.0 https://crates.io/crates/cardano-serialization-lib/11.1.0

11.0.5

1 year ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/504

An update to the min-ada fix introduced in two previous releases

11.0.3

1 year ago

Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/503

An update to the min-ada fix introduced in the previous release