Skip to main content

Release Notes

Release notes summarise each release. The changelog has the full details.

v1.2.0-beta.1​

  • Add @nexscript/interpreter, a Nexa script interpreter and step debugger that uses the debug map nexc puts in artifacts
  • Add tx.inputs[i].type and tx.outputs[i].type: whether an input is spent or read-only, and whether an output is locked with a script template
  • Add tokenAuthority on inputs and outputs, the hasAuthority() function and the AUTHORITY_* constants for checking token authorities
  • Add grouped new LockingBytecodeP2ST(templateHash, constraintHash, visibleParams, groupId, amount) for token and authority outputs; an empty groupId builds an ungrouped output, so a covenant can forward any input
  • Breaking: token introspection uses OP_PARSE. tokenGroupId returns the full group ID including subgroup data, tokenSubgroupId is replaced by tokenParentGroupId, and tokenAmount is 0 for authorities. Contracts using these change their bytecode and address
  • Fix compiled contracts being rejected by the node with "Data push larger than necessary" (a regression in v1.1.0). Funds sent to an affected contract compiled with v1.1.0 or v1.1.1 cannot be spent
  • Fix ASM conversion of numbers such as -1, -2 and 118, which became opcodes since v1.1.0
  • SDK: fix transactions with both token and plain outputs, passing on an authority from a contract, and sending part of a token from manually selected inputs
  • SDK: ElectrumNetworkProvider is faster (a single client instead of a polling cluster) and lists each UTXO once

v1.1.1​

  • Fix the first function of a multi-function contract disappearing from compiled ASM
  • Test environment fixes for running against a clean regtest chain

v1.1.0​

  • Move to libnexa-ts v3 for transactions, signing, scripts and addresses, replacing nexcore-lib and @bitauth/libauth
  • Breaking: ElectrumNetworkProvider without an explicit network reads the NETWORK environment variable and defaults to regtest
  • Breaking: send() returns a libnexa-ts ITransaction, and unlocker callbacks receive a libnexa-ts TransactionBuilder
  • Remove the merkleRoot macro, to be replaced by one using OP_MERKLEROOT
  • Fix price oracle signing byte order and minimal encoding of 0 in encodeNumber
  • Tests use Vitest against a regtest node, and run in GitLab CI

v1.0.4​

  • Map opcodes to the function or member call they come from, for debugging in the playground

v1.0.3​

  • Fix token amount and group introspection, now using OP_PARSE
  • Temporarily disable tx.inputs[i].visibleParameters
  • Add search and a link to the playground to the documentation
  • Use nexad 2.1.0.0 in tests

v1.0.2​

  • Use testnet-explorer.nexa.org as a rostrum testnet server
  • Fix a typos in the README.md file
  • Fix shields.io badges for the @nexscript/nexscript package
  • Update rostrum Docker file to use the latest nightly version

v1.0.1​

  • Use bitauth 2.1.0
  • Update jest docker files to use nexad 1.4.0.1 and rostrum 10.0.0
  • Improve docker compose configuration
  • Use the correct nexa derivation path in nexscript tests suite

v1.0.0​

  • Add new encodeNumber and encodeData global functions for minimal encoding of numbers and data, best used with new LockingBytecodeP2ST
  • Add merkleRoot macro which computes the Merkle root from a serialized proof, leaf hash and leaf index (removed in v1.1.0)

v0.9.0​

  • Add new advanced TransactionBuilder class that allows combining UTXOs from multiple different smart contracts and P2PKT UTXOs in a single transaction.

v0.8.0​

  • Add merkle tools: ability to derive a compact proof of a next added element, expand proof, etc.
  • Fix MAST contracts at terminal laeves being unspendable

v0.7.0​

  • Add support for multiplex contracts (see documentation)
  • Minor breaking: changed MCP contract syntax

v0.6.1​

  • Fix several issues in documentation
  • Update electrum cash version

v0.6.0​

  • Implement MAST Contract Paths concept (see documentation)

v0.5.0​

  • Add support for group tokens in nexscript SDK

  • Bugfix: Fix tx state code generation for non-literal parameters

v0.4.0​

  • Bugfix: Fix contract unused parameterss ordering

v0.3.0​

  • Add additional introspection operations using OP_PUSH_TX_STATE: tx.groupAmountIn, tx.groupAmountOut, tx.groupCountIn, tx.groupCountOut, tx.groupNthInput, tx.groupNthOutput

v0.2.0​

  • Add token introspection emulation: tokenGroupId, tokenSubgroupId, subgroupData, tokenAmount, visibleParameters

v0.1.3​

  • Support 'unused' modifier for visible contract parameters

v0.1.2​

  • Implement LockingBytecodeP2ST in a general form, supporting empty constraints and visible arguments

v0.1.1​

  • Add currency aliases: nexa, mnexa, mex

v0.1.0​

  • 🎉 Initial release.