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.
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/633
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
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
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/612
Added from_address
function to the PlutusData
type. The function converts address to a datum format.
Added serialization_format
function to the TransactionOutput
type. This function provides access to information about TransactionOutput
format after deserialization.
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
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/603
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.3.1 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.3.1 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.3.1 https://crates.io/crates/cardano-serialization-lib/11.3.1
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
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.
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
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/566
Fixed ProtocolParamUpdate
serialization
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/11.2.1 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/11.2.1 https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/11.2.1 https://crates.io/crates/cardano-serialization-lib/11.2.1
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/560
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());
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.
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
.
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
.
Added .set_prefer_alonzo_format
function to AuxiliaryData
. It helps to keep alonzo format during AuxiliaryData
serialization.
Added testnet_preview
and testnet_preprod
functions for preview and preprod networks.
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
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/555
Bindgen library dependency updated
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/529
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());
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.
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.
add_change_if_needed
contains information about how much assets or ada not enough to cover all outputs, except a change. #520min_ada_for_output
function now uses only babbage era algorithm, it usually calculates less ada then pre-babbage algorithm. #526add_mint_asset
function. Now it adds mint assets without replacing old value. #513RandomImproveMultiAsset
algorithm for add_inputs_from
function. Now it take into account previously added assets and ada into a tx builder. #523DeserializeError
and JsError
now implements std::error::Error
#506Thank all who took part in this release!
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
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/504
An update to the min-ada fix introduced in two previous releases
Release PR: https://github.com/Emurgo/cardano-serialization-lib/pull/503
An update to the min-ada fix introduced in the previous release