Skip to content

v17.2.0

Choose a tag to compare

@Ryang-21 Ryang-21 released this 28 Sep 21:56
· 37 commits to main since this release
7cfd51a

v17.2.0

Added

  • A stellar-contract-bindings-typescript binary implementing the Stellar CLI plugin convention, reachable as stellar contract bindings typescript. It delegates to stellar-js generate. The package also adds a stellar-sdk binary, an alias for stellar-js (#1738).

Fixed

  • AssembledTransaction.signAuthEntries() forwards a wallet's returned signerAddress to the default authorizer, so a classic-multisig signature made by a key other than the account being authorized is no longer rejected (#1681). A muxed M… signerAddress resolves to its base account; null or an empty string counts as omitted, and any other value that is not an account address is rejected by name. A custom authorizeEntry still receives raw bytes. A wallet that returns a signerAddress other than the key it signed with now fails with "signature doesn't match payload" instead of having the value ignored (#1744).
  • AssembledTransaction.signAuthEntries() throws NoSignatureNeeded when it matched no auth entry, instead of returning as if it had signed (#1681, #1610). A custom authorizeEntry skips the pre-flight check that reports this for the default authorizer, so a wrong address was silent there. When address came from its publicKey default, the error says so. Every call that signs at least one entry is unaffected (#1743).
  • authorizeEntry verifies a bare-Uint8Array signing callback against forAddress when one is given, rather than always against the entry's top-level credential address. A valid CAP-71 delegate signature was previously rejected with signature doesn't match payload (#1683, #1742). For every signer form, a forAddress that names no credential node is now rejected before the signer runs, rather than after.
  • authorizeEntry throws a TypeError naming signatureScVal when the address it would verify against is a contract, instead of StrKey's invalid version byte (#1742).
  • AssembledTransaction.needsNonInvokerSigningBy() walks CAP-71 delegate trees: it also lists the unsigned delegates under a contract account, even when the account itself has signed, and with includeAlreadySigned it lists every delegate under a contract account (#1655, #1747). signAuthEntries() still signs top-level addresses only, and names an unsigned delegate passed as address. sign() and signAndSend() now also reject an unsigned G… delegate under a contract account, whether or not the account has signed. This assumes every listed delegate must sign, so it can reject a transaction the network would accept when __check_auth uses only some of them. Pass ignoreContractDelegates to either method to skip that check for delegates under contract accounts; G… addresses are still checked.

New Contributors

Full Changelog: v17.1.0...v17.2.0