Releases: Emurgo/cardano-serialization-lib
12.1.1 Banana Banana
Release Notes
- fixed bootstrap witnesses pre-calculations for inputs from a Byron address.
Published
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/12.1.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/12.1.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/12.1.1
https://crates.io/crates/cardano-serialization-lib/12.1.1
Experimental packages with gc support
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs-gc/v/12.1.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser-gc/v/12.1.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs-gc/v/12.1.1
Full Changelog: 12.1.0...12.1.1
12.1.0 Effect of butter and fly.
Release Notes
-
fixed script integrity hash calculation for the Conway era.
-
set_witness_setmethod ofFixedTransactionis now deprecated. We do not recommend using this function as it may lead to script integrity hash issues. Its sole purpose was to sign transactions from third-party sources. Instead, use the followingFixedTransactionmethods:.sign_and_add_vkey_signature().sign_and_add_icarus_bootstrap_signature().sign_and_add_daedalus_bootstrap_signature().add_vkey_witness().add_bootstrap_witness()
-
Added "arbitrary-precision-json" feature (enabled by default)
- Enables arbitrary precision for serde_json
- If you encounter build conflicts with other crates using serde_json, disable this feature in your Cargo.toml file
Published
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/12.1.0
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/12.1.0
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/12.1.0
https://crates.io/crates/cardano-serialization-lib/12.1.0
Experimental packages with gc support
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs-gc/v/12.1.0
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser-gc/v/12.1.0
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs-gc/v/12.1.0
Full Changelog: 12.0.1...12.1.0
12.0.1 Yeah we know... It hasn’t even been a year
Changes
Fixed memory management for MintAssets.insert() function.
Published
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/12.0.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/12.0.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/12.0.1
https://crates.io/crates/cardano-serialization-lib/12.0.1
Experimental packages with gc support
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs-gc/v/12.0.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser-gc/v/12.0.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs-gc/v/12.0.1
Full Changelog: 12.0.0...12.0.1
12.0.0 Conway's Game Of Li... CSL
We are happy to announce a new CSL release.
Release Summary
1. Address Types:
- Added
network_idgetter to Address types. - Introduced new address type:
Malformed. Used when it's impossible to deserialize an address in structs where the address is a nested type. - New getter for address:
kind(). Returns an enum with address type. - New getter for address:
payment_cred(). Returns payment credential. - New function for address:
is_malformed().
2. PlutusV3 Support:
- Added PlutusV3 support in all Plutus-specific structures.
3. Token Handling:
- Prohibited sending and minting of zero tokens.
4. New Certificates:
Added support for the following certificates (can be added via CertificatesBuilder):
CommitteeColdResignCommitteeHotAuthDrepDeregistrationDrepRegistrationDrepUpdateStakeAndVoteDelegationStakeRegistrationAndDelegationStakeVoteRegistrationAndDelegationVoteDelegationVoteRegistrationAndDelegation
5. Reference Script Fee:
TransactionBuilderConfigBuilder: Addedref_script_coins_per_bytesetter to account for new fees for reference script inputs.PlutusScriptSource: Now requires an additional mandatory parameter for script size for reference inputs.
6. New Builder Types:
VotingBuilder: For participation in voting for governance actions.VotingProposalBuilder: For proposing voting actions.TransactionBuilder: Now has setters for these new builders.
7. Extended Coin Selection Functions:
TransactionBuilder has two new coin selection functions to account for change output and collateral return during fee estimation:
add_inputs_from_and_change: Considers change calculation; no need to calladd_change_if_neededafter it.add_inputs_from_and_change_with_collateral_return: Considers change calculation and collateral return; no need to calladd_change_if_neededafter it.- NOTE:
add_inputs_from_and_change_with_collateral_returndoesn't perform coin selection for collateral inputs; you need to specify collateral inputs manually.
- NOTE:
8. New Protocol Types for Governance-related Actions:
VotingProcedure: Vote for specific governance action proposal.VotingProcedures: Collection of votes.VotingProposal: Proposal of specific governance action.VotingProposals: Collection of VotingProposal.DRep: Abstraction of delegate representative; can be a credential or a predefined DRep type.Voter: Abstraction of voter; can be DRep, SPO, or CC member.GovernanceActionId: ID of governance action; tuple of (tx_hash, index_of_voting_proposal). Similar to tx input abstraction.Anchor: Abstraction to specify off-chain data; tuple of URL and data hash.- Governance action types:
HardForkInitiationActionInfoActionNewConstitutionActionNoConfidenceActionParameterChangeActionTreasuryWithdrawalsActionUpdateCommitteeAction
9. Serialization Improvement:
- CSL now doesn't serialize empty collections for most witness types, in accordance with CDDL.
10. Set Behavior and Add Function:
The following types work as a set, and their add function returns a boolean. It returns true if the element is added and false if the element already exists in the collection. In the case of false, the size of the collection remains unchanged:
CredentialsEd25519KeyHashesVkeywitnessesVotingProposalsTransactionInputsCertificates
11. New Transaction Builder Functions:
TransactionBuilder has a new functions to set donation to the treasury (TransactionBuilder.set_donation()) and the current treasury value (TransactionBuilder.set_current_treasury_value()). However, if you use these fields, the Cardano node will reject all non-Plutus V3 scripts. These transaction fields can help facilitate direct donations to the treasury and limit transaction execution based on the current treasury value.
12. New Packages With GC Support (EXPERIMENTAL):
CSL now includes NPM packages with GC (Garbage Collection) support, which means you no longer need to manually call .free for every CSL object. This was achieved by enabling the WEAK_REF flag on wasm_bindgen, and it utilizes FinalizationRegistry to automatically call free for each CSL struct when it is no longer needed. However, please use this feature with caution, as it may lead to unpredictable behavior. For package links, refer to the packages in the "Published" section.
Breaking Changes:
StakeCredential Renaming:
StakeCredentialwas renamed toCredential.StakeCredKindwas renamed toCredKind.StakeCredentialswas renamed toCredentials.
TransactionBody Struct Changes:
- Removed:
multiassets()due to its confusing naming. - Note: Use
mint()to obtain information about minting in a transaction.
Fee Calculation Functions Changes:
- Removed: All functions based on 'cons per word', aligning with the protocol's transition to 'coins per byte' in the Babbage era.
- Replacement Guidelines:
- Use
new_coins_per_byteinstead of the removednew_coins_per_wordinDataCost. - In
TransactionOutputAmountBuilder, switch towith_asset_and_min_required_coin_by_utxo_cost, aswith_asset_and_min_required_coinis now removed.
- Use
ADA Requirement Function Updates:
- Removed:
min_ada_requireddue to its inability to account for full transaction output fields and reliance on the outdated coins per word parameter. - Replacement Guideline: Use
min_ada_for_output.
TransactionBuilderConfigBuilder Adjustments:
- Removed:
coins_per_utxo_word. - Replacement Guideline: Use
coins_per_utxo_byte.
NetworkInfo Simplification:
- Removed:
testnet()function, as the testnet has been replaced by testnet preprod and testnet preview.
Script Transaction Inputs Overhaul:
- Removed: Functions like
add_script_input,add_input,count_missing_input_scripts,add_required_script_input_witnesses, andadd_required_plutus_input_scripts, used for adding script transaction inputs without a script witness. - Replacement Guideline:
- For non-script inputs: Use
add_regular_input,add_key_input, oradd_bootstrap_input. - For script inputs: Use
add_native_script_inputoradd_plutus_script_input.
- For non-script inputs: Use
PlutusScriptSource Enhancement:
- Updated:
new_ref_inputinPlutusScriptSourcenow includes a language version argument, replacing the oldnew_ref_input. - Removed:
new_ref_input_with_lang_verbecausenew_ref_inputhas the same functionality and no need for a specific function with a language version. - Changed:
PlutusScriptSource.new_ref_inputnow requiresscript_sizeparameter to respectref_script_coins_per_bytefrom protocol parameters and correct fee calculation from Conway era. You need also setref_script_coins_per_byteviaTransactionBuilderConfigto use it correctly.
NativeScriptSource Enhancement:
- Changed:
NativeScriptSource.new_ref_inputnow requiresscript_sizeparameter to respectref_script_coins_per_bytefrom protocol parameters and correct fee calculation from Conway era. You need also setref_script_coins_per_byteviaTransactionBuilderConfigto use it correctly.
Script Source Unification:
- Updated:
NativeScriptSourceandPlutusScriptSourcenow hasrequired_signersoption. To set it, useNativeScriptSource.set_required_signersorPlutusScriptSource.set_required_signersandTrsansactionBuilderwill allocate space for theserequired_signersduring fee calculation.
Multiple Mints:
- Updated:
Mint.get()now returnsMintsAssetstype to respect key duplication inMintfield. - Replacement Guideline: Use
MintsAssetsinstead ofMintAssets.
Referenced Native Script:
- Changed:
TxInputsBuilder.add_native_script_inputnow requiresNativeScriptSourceto support referenced native script. UseNativeScriptSource::newto useNativeScriptwitness as before, and useNativeScriptSource::new_ref_inputto use referenced native script. - Replacement Guideline: Use
NativeScriptSource::new(NativeScript::new())instead ofNativeScript::new().
Duplicated Keys Support in Plutus Datum Maps:
- Changed:
PlutusMap.getreturns an instance ofPlutusMapValues,PlutusMap.insertaccepts an instance ofPlutusMapValuesto support duplicated keys in a datum map. - Replacement Guideline: Use
PlutusMapValues.addand thenPlutusMap.insertor just usePlutusMap.add_value.PlutusMapValueshas an accessor functionPlutusMapValues.get()to get a specific value andPlutusMapValues.len()to get the total number of values.
Ref Script Fee Support:
- Changed:
TransitionBuildernow can throw an error during the building process if you are using reference inputs with a Plutus script. To avoid it, you need to useTransactionBuilderConfigBuilder.ref_script_coins_per_byteto specify ref script byte cost and have correct fee calculations.PlutusScriptSource.new_ref_inputrequires script size to have correct fee calculation. - Note: If you use CSL in a pre-Conway environment, you can set script size and
ref_script_coins_per_byteto zero.
Transaction Inputs and Reference Inputs Deduplication:
- Changed:
TransactionBuildernow automatically removes reference inputs that are also present in the transaction inputs field. The Cardano node will not accept a transaction that has the same transaction input in both the transaction inputs field and the reference inputs field. The deduplication logic applies to all reference inputs set via builders, except for those explicitly set usingTransactionBuilder.set_ref_inputs(). If there is a duplicate between explicitly set reference inputs (via `...
12.0.0 beta 1
THIS IS A BETA RELEASE, AND SOME THINGS MIGHT CHANGE IN THE FINAL 12.0.0
Update Summary
1. Address Types:
- Added
network_idgetter to Address types. - Introduced new address type:
Malformed. Used when it's impossible to deserialize an address in structs where the address is a nested type. - New getter for address:
kind(). Returns an enum with address type. - New getter for address:
payment_cred(). Returns payment credential. - New function for address:
is_malformed().
2. PlutusV3 Support:
- Added PlutusV3 support in all Plutus-specific structures.
3. Token Handling:
- Prohibited sending and minting of zero tokens.
4. New Certificates:
Added support for the following certificates (can be added via CertificatesBuilder):
CommitteeColdResignCommitteeHotAuthDrepDeregistrationDrepRegistrationDrepUpdateStakeAndVoteDelegationStakeRegistrationAndDelegationStakeVoteRegistrationAndDelegationVoteDelegationVoteRegistrationAndDelegation
5. Reference Script Fee:
TransactionBuilderConfigBuilder: Addedref_script_coins_per_bytesetter to account for new fees for reference script inputs.PlutusScriptSource: Now requires an additional mandatory parameter for script size for reference inputs.
6. New Builder Types:
VotingBuilder: For participation in voting for governance actions.VotingProposalBuilder: For proposing voting actions.TransactionBuilder: Now has setters for these new builders.
7. Extended Coin Selection Functions:
TransactionBuilder has two new coin selection functions to account for change output and collateral return during fee estimation:
add_inputs_from_and_change: Considers change calculation; no need to calladd_change_if_neededafter it.add_inputs_from_and_change_with_collateral_return: Considers change calculation and collateral return; no need to calladd_change_if_neededafter it.- NOTE:
add_inputs_from_and_change_with_collateral_returndoesn't perform coin selection for collateral inputs; you need to specify collateral inputs manually.
- NOTE:
8. New Protocol Types for Governance-related Actions:
VotingProcedure: Vote for specific governance action proposal.VotingProcedures: Collection of votes.VotingProposal: Proposal of specific governance action.VotingProposals: Collection of VotingProposal.DRep: Abstraction of delegate representative; can be a credential or a predefined DRep type.Voter: Abstraction of voter; can be DRep, SPO, or CC member.GovernanceActionId: ID of governance action; tuple of (tx_hash, index_of_voting_proposal). Similar to tx input abstraction.Anchor: Abstraction to specify off-chain data; tuple of URL and data hash.- Governance action types:
HardForkInitiationActionInfoActionNewConstitutionActionNoConfidenceActionParameterChangeActionTreasuryWithdrawalsActionUpdateCommitteeAction
9. Serialization Improvement:
- CSL now doesn't serialize empty collections for most witness types, in accordance with CDDL.
10. Set Behavior and Add Function:
The following types work as a set, and their add function returns a boolean. It returns true if the element is added and false if the element already exists in the collection. In the case of false, the size of the collection remains unchanged:
CredentialsEd25519KeyHashesVkeywitnessesVotingProposalsTransactionInputsCertificates
Breaking Changes:
StakeCredential Renaming:
StakeCredentialwas renamed toCredential.StakeCredKindwas renamed toCredKind.StakeCredentialswas renamed toCredentials.
TransactionBody Struct Changes:
- Removed:
multiassets()due to its confusing naming. - Note: Use
mint()to obtain information about minting in a transaction.
Fee Calculation Functions Changes:
- Removed: All functions based on 'cons per word', aligning with the protocol's transition to 'coins per byte' in the Babbage era.
- Replacement Guidelines:
- Use
new_coins_per_byteinstead of the removednew_coins_per_wordinDataCost. - In
TransactionOutputAmountBuilder, switch towith_asset_and_min_required_coin_by_utxo_cost, aswith_asset_and_min_required_coinis now removed.
- Use
ADA Requirement Function Updates:
- Removed:
min_ada_requireddue to its inability to account for full transaction output fields and reliance on the outdated coins per word parameter. - Replacement Guideline: Use
min_ada_for_output.
TransactionBuilderConfigBuilder Adjustments:
- Removed:
coins_per_utxo_word. - Replacement Guideline: Use
coins_per_utxo_byte.
NetworkInfo Simplification:
- Removed:
testnet()function, as the testnet has been replaced by testnet preprod and testnet preview.
Script Transaction Inputs Overhaul:
- Removed: Functions like
add_script_input,add_input,count_missing_input_scripts,add_required_script_input_witnesses, andadd_required_plutus_input_scripts, used for adding script transaction inputs without a script witness. - Replacement Guideline:
- For non-script inputs: Use
add_regular_input,add_key_input, oradd_bootstrap_input. - For script inputs: Use
add_native_script_inputoradd_plutus_script_input.
- For non-script inputs: Use
PlutusScriptSource Enhancement:
- Updated:
new_ref_inputinPlutusScriptSourcenow includes a language version argument, replacing the oldnew_ref_input. - Removed:
new_ref_input_with_lang_verbecausenew_ref_inputhas the same functionality and no need for a specific function with a language version. - Changed:
PlutusScriptSource.new_ref_inputnow requiresscript_sizeparameter to respectref_script_coins_per_bytefrom protocol parameters and correct fee calculation from Conway era. You need also setref_script_coins_per_byteviaTransactionBuilderConfigto use it correctly.
Script Source Unification:
- Updated:
new_ref_inputinNativeScriptSourcenow requiresrequired_signers. To set it, useNativeScriptSource.set_required_signers.
Multiple Mints:
- Updated:
Mint.get()now returnsMintsAssetstype to respect key duplication inMintfield. - Replacement Guideline: Use
MintsAssetsinstead ofMintAssets.
Referenced Native Script:
- Changed:
TxInputsBuilder.add_native_script_inputnow requiresNativeScriptSourceto support referenced native script. UseNativeScriptSource::newto useNativeScriptwitness as before, and useNativeScriptSource::new_ref_inputto use referenced native script. - Replacement Guideline: Use
NativeScriptSource::new(NativeScript::new())instead ofNativeScript::new().
Duplicated Keys Support in Plutus Datum Maps:
- Changed:
PlutusMap.getreturns an instance ofPlutusMapValues,PlutusMap.insertaccepts an instance ofPlutusMapValuesto support duplicated keys in a datum map. - Replacement Guideline: Use
PlutusMapValues.addand thenPlutusMap.insertor just usePlutusMap.add_value.PlutusMapValueshas an accessor functionPlutusMapValues.get()to get a specific value andPlutusMapValues.len()to get the total number of values.
Ref Script Fee Support:
- Changed:
TransitionBuildernow can throw an error during the building process if you are using reference inputs with a Plutus script. To avoid it, you need to useTransactionBuilderConfigBuilder.ref_script_coins_per_byteto specify ref script byte cost and have correct fee calculations.PlutusScriptSource.new_ref_inputrequires script size to have correct fee calculation. - Note: If you use CSL in a pre-Conway environment, you can set script size and
ref_script_coins_per_byteto zero.
Published
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser/v/12.0.0-beta.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs/v/12.0.0-beta.1
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs/v/12.0.0-beta.1
https://crates.io/crates/cardano-serialization-lib/12.0.0-beta.1
Experimental packages with gc support
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-nodejs-gc
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-browser-gc
https://www.npmjs.com/package/@emurgo/cardano-serialization-lib-asmjs-gc
Full Changelog: 11.5.0...12.0.0-beta.1
11.5.0 "Amnesia"
Release PR: #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 "Who are you, mister tx output"
Release PR: #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.1 "Small steps"
Release PR: #603
Changes
- Fixed reordering in the PlutusMap
- Fixed protocol_magic -> network_id mapping for the ByronAddress
- Updated Plutus cost models for the new HF
Published:
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
11.3.0 "I know that reference"
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 elseNon 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.1 "Unbelievable protocol params"
Release PR: #566
Fixed ProtocolParamUpdate serialization
Published:
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