Summary
HathorWalletServiceWallet.createNFT() declares the options createMintAuthority and createMeltAuthority (defaulting to false), but they are never read: the method delegates to prepareCreateNewToken, which reads the pass-through createMint / createMelt fields instead — and those default to true.
Net effect: a wallet-service caller passing createMintAuthority: false, createMeltAuthority: false still gets an NFT created with both authorities. The declared options are dead code.
Where
src/wallet/wallet.ts — createNFT() declares createMintAuthority/createMeltAuthority (~lines 2877–2882) and never maps them to what prepareCreateNewToken consumes.
src/wallet/wallet.ts — prepareCreateNewToken() reads createMint/createMelt with default true (~lines 1892–1895).
For contrast, the fullnode facade's createNFTSendTransaction (src/new/wallet.ts, ~lines 3076–3090) defaults createMint: false, createMelt: false — so the two facades also silently diverge on effective defaults.
Suggested fix
Map createMintAuthority/createMeltAuthority onto createMint/createMelt inside createNFT() (or rename the options), and align the effective default with the fullnode facade (false) — NFTs typically should not carry authorities unless requested.
Context
Found while migrating token-creation integration tests to the shared adapter-driven suite; the test adapter works around it by always forwarding explicit createMint/createMelt booleans to both facades.
Summary
HathorWalletServiceWallet.createNFT()declares the optionscreateMintAuthorityandcreateMeltAuthority(defaulting tofalse), but they are never read: the method delegates toprepareCreateNewToken, which reads the pass-throughcreateMint/createMeltfields instead — and those default totrue.Net effect: a wallet-service caller passing
createMintAuthority: false, createMeltAuthority: falsestill gets an NFT created with both authorities. The declared options are dead code.Where
src/wallet/wallet.ts—createNFT()declarescreateMintAuthority/createMeltAuthority(~lines 2877–2882) and never maps them to whatprepareCreateNewTokenconsumes.src/wallet/wallet.ts—prepareCreateNewToken()readscreateMint/createMeltwith defaulttrue(~lines 1892–1895).For contrast, the fullnode facade's
createNFTSendTransaction(src/new/wallet.ts, ~lines 3076–3090) defaultscreateMint: false, createMelt: false— so the two facades also silently diverge on effective defaults.Suggested fix
Map
createMintAuthority/createMeltAuthorityontocreateMint/createMeltinsidecreateNFT()(or rename the options), and align the effective default with the fullnode facade (false) — NFTs typically should not carry authorities unless requested.Context
Found while migrating token-creation integration tests to the shared adapter-driven suite; the test adapter works around it by always forwarding explicit
createMint/createMeltbooleans to both facades.