Repository navigation
v17.2.0
v17.2.0
Added
- A
stellar-contract-bindings-typescriptbinary implementing the Stellar CLI plugin convention, reachable asstellar contract bindings typescript. It delegates tostellar-js generate. The package also adds astellar-sdkbinary, an alias forstellar-js(#1738).
Fixed
AssembledTransaction.signAuthEntries()forwards a wallet's returnedsignerAddressto the default authorizer, so a classic-multisig signature made by a key other than the account being authorized is no longer rejected (#1681). A muxedM…signerAddressresolves to its base account;nullor an empty string counts as omitted, and any other value that is not an account address is rejected by name. A customauthorizeEntrystill receives raw bytes. A wallet that returns asignerAddressother than the key it signed with now fails with "signature doesn't match payload" instead of having the value ignored (#1744).AssembledTransaction.signAuthEntries()throwsNoSignatureNeededwhen it matched no auth entry, instead of returning as if it had signed (#1681, #1610). A customauthorizeEntryskips the pre-flight check that reports this for the default authorizer, so a wrongaddresswas silent there. Whenaddresscame from itspublicKeydefault, the error says so. Every call that signs at least one entry is unaffected (#1743).authorizeEntryverifies a bare-Uint8Arraysigning callback againstforAddresswhen one is given, rather than always against the entry's top-level credential address. A valid CAP-71 delegate signature was previously rejected withsignature doesn't match payload(#1683, #1742). For every signer form, aforAddressthat names no credential node is now rejected before the signer runs, rather than after.authorizeEntrythrows aTypeErrornamingsignatureScValwhen the address it would verify against is a contract, instead of StrKey'sinvalid 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 withincludeAlreadySignedit lists every delegate under a contract account (#1655, #1747).signAuthEntries()still signs top-level addresses only, and names an unsigned delegate passed asaddress.sign()andsignAndSend()now also reject an unsignedG…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_authuses only some of them. PassignoreContractDelegatesto either method to skip that check for delegates under contract accounts;G…addresses are still checked.
New Contributors
- @devtechedge made their first contribution in #1725
Full Changelog: v17.1.0...v17.2.0