Skip to content

Releases: CashScript/cashscript

v0.10.2

04 Nov 08:38
Compare
Choose a tag to compare

cashc compiler

  • ✨ Add support for using underscores in numeric literals to improve readability, e.g. 1_000_000.
  • ✨ Add support for using scientific notation in numeric literals, e.g. 1e6 or 1E6.

CashScript SDK

  • 🐛 Fix fee calculation when using SignatureAlgorithm.ECDSA.
  • 🛠️ Clean up dependencies.

v0.10.1

01 Oct 09:35
Compare
Choose a tag to compare

CashScript SDK

  • 🐛 Fix bug with MockNetworkProvider returning the wrong Network type (now returns Network.MOCKNET / "mocknet").
  • 🐛 Fix bug in debug tooling where incorrect placeholder keys were used when evaluating transactions with P2PKH inputs.

v0.10.0

12 Sep 09:15
368ba7c
Compare
Choose a tag to compare

In this version we added proper debugging support for transactions and integration with the BitAuth IDE.

Thanks mainnet_pat for the initiative and significant contributions!

cashc compiler

  • ✨ Add console.log() statements for debugging.
  • ✨ Extend require() statements to allow custom error messages for debugging.
  • 🛠️ Update artifact format to allow for new debugging features.
  • 🛠️ Update dependencies to new major versions.

CashScript SDK

  • ✨ Add support for transaction evaluation and debugging using libauth templates.
    • transaction.debug() & transaction.bitauthUri()
    • Output BitAuth IDE URI for debugging when transaction is rejected.
  • ✨ Add MockNetworkProvider to simulate network interaction for debugging and testing.
    • Add randomUtxo(), randomToken() and randomNft() functions to generate dummy UTXOs for testing.
  • ✨ Add CashScript Jest utilities for automated testing.
    • expect(transaction).toLog(message)
    • expect(transaction).toFailRequire()
    • expect(transaction).toFailRequireWith(message)
  • 🐛 Fix bug with type exports.
  • 🛠️ Update visibility of several classes.
    • Make artifact, networkProvider, addressType and encodedConstructorArgs public on Contract class.
    • Make contract, abiFunction, encodedFunctionArgs, inputs and outputs public on Transaction class.
    • Make networkProvider, inputs and outputs public on TransactionBuilder class.
    • Make privateKey public on SignatureTemplate class and add getSignatureAlgorithm() method.
  • 🛠️ Improve some error messages.
  • 🛠️ Add new FailedRequireError, FailedTransactionEvaluationError and FailedTransactionError classes.
  • 💥 BREAKING: Remove exported transaction error Reason enum + FailedTimeCheckError and FailedSigCheckError classes in favour of the new error classes.
  • 💥 BREAKING: Remove all deprecated references to meep including meep strings from errors and transaction.meep().
  • 💥 BREAKING: Separate the Argument type into FunctionArgument and ConstructorArgument and rename encodeArgument to encodeFunctionArgument.

https://twitter.com/CashScriptBCH/status/1833454128426615174

v0.9.3

10 Jan 15:09
Compare
Choose a tag to compare

cashc compiler

  • 🛠️ Migrate from antlr4ts to ANTLR's official TypeScript target to remove circular dependency issues.

v0.9.2

01 Nov 10:37
Compare
Choose a tag to compare

CashScript SDK

  • 🐛 Fix bug where UTXOs would be needlessly retrieved from the network during build() calls.
  • 🐛 Fix off-by-one fee calculation error with transactions that have many outputs.
  • 🐛 Fix bug where no error was thrown when invalid NFT commitment or token category were provided.
  • 🛠️ Export all interfaces from CashScript's interfaces.ts.
  • 🛠️ Merge duplicate code between Transaction.ts and TransactionBuilder.ts

v0.9.1

16 Oct 21:45
Compare
Choose a tag to compare

CashScript SDK

  • 🐛 Fix TransactionBuilder export bug.

v0.9.0

16 Oct 16:29
Compare
Choose a tag to compare

CashScript SDK

  • ✨ Add new advanced TransactionBuilder class that allows combining UTXOs from multiple different smart contracts and P2PKH UTXOs in a single transaction.
  • 🛠️ Deprecate all meep functionality. Meep has been unmaintained for years and does not support many new CashScript features. Meep functionality will be removed in a future release.

v0.8.2

27 Sep 10:16
Compare
Choose a tag to compare

CashScript SDK

  • 🐛 Fix bug with Vite build.
  • ✨ Expose ElectrumNetworkProvider#performRequest to allow raw Electrum requests if needed.

v0.8.1

13 Jun 12:42
Compare
Choose a tag to compare

CashScript SDK

  • 🐛 Fix bug where a different property order of NFT inputs/outputs would cause errors. (see #149)

v0.8.0

26 May 12:58
Compare
Choose a tag to compare

⚠️ From v0.8.0 onwards, CashScript is a Pure ESM package. This means that you can no longer use require() to import cashscript or cashc.

This release also contains several breaking changes, please refer to the migration notes for more information.

cashc compiler

  • ✨ Add support for the new CashTokens introspection functionality (tokenCategory,nftCommitmentand tokenAmountfor both in- and outputs).
  • ✨ Add LockingBytecodeP2SH32 to generate the new P2SH32 standard locking script.
  • 🐛 Fix optimisation bug that caused OP_0NOTEQUAL to be applied to non-integer values.
  • 💥 BREAKING: Move to Pure ESM.
  • 💥 BREAKING: Rename LockingBytecodeP2SH to LockingBytecodeP2SH20 - but it is recommended to change over to the new P2SH32 for security reasons.

CashScript SDK

  • ✨ Add support for CashTokens.
    • .to() now takes a token parameter that can be used to send CashTokens.
    • UTXOs that are retrieved with contract.getUtxos() include a token field if they are token UTXOs.
    • UTXOs that are passed into .from() can also include this token field to send tokens.
    • Add .withoutTokenChange() to disable automatic token change outputs.
    • Note that only the ElectrumNetworkProvider supports CashTokens at this time.
    • Note that NFTs do not support automatic UTXO selection
  • ✨ Add contract.tokenAddress to get the token-enabled address of a contract.
  • ✨ Add fromP2PKH() to add P2PKH inputs to a smart contract transaction.
    • Note: this was in the SDK before as experimentalFromP2PKH(). It has now been released as an official feature.
  • 💥 BREAKING: Move to Pure ESM.
  • 💥 BREAKING: Remove "testnet" & "staging" network options.
  • 💥 BREAKING: contract.address returns p2sh32 address by default, this can be configured to be p2sh20 on contract initialization.
  • 💥 BREAKING: Move the configuration of the network provider to an options object on contract initialization.
  • 💥 BREAKING: Use bigint rather than number for all instances of "script numbers" (e.g. function arguments) and satoshi amounts.
  • 💥 BREAKING: Replace contract.getRedeemScriptHex() with contract.bytecode.
  • 💥 BREAKING: Remove BitboxNetworkProvider.
  • 💥 BREAKING: All signature templates use SIGHASH_ALL | SIGHASH_UTXOS now, this new default can be overwritten in the constructor of the SignatureTemplate.