npm.io
7.10.7 • Published 1 month ago

@ledgerhq/hw-app-solana

Licence
Apache-2.0
Version
7.10.7
Deps
3
Size
109 kB
Vulns
0
Weekly
0
Stars
616

GitHub, Ledger Devs Discord, Developer Portal

@ledgerhq/hw-app-solana

Status: DEPRECATED — Replaced by the Device Management Kit (DMK). Migrate to @ledgerhq/device-signer-kit-solana.

Ledger Hardware Wallet Solana JavaScript bindings.


Are you adding Ledger support to your software wallet?

You may be using this package to communicate with the Solana Nano App.

For a smooth and quick integration:

  • See the developers’ documentation on the Developer Portal and
  • Go on Discord to chat with developer support and the developer community.

Notes

To run speculos-smoke test make sure Speculos running (apdu port 9999 and api rest endpoint http://0.0.0.0:5000) with Solana app installed on it. Then run the command from root workspace:

$ yarn run ts-node packages/hw-app-solana/tests/speculos-smoke.ts

Troubleshooting

If ledger returns error 6808 - enable blind signature in settings (not needed for unit testing).

API

Table of Contents
Solana

Solana API

Parameters
  • transport Transport a transport for sending commands to a device
  • scrambleKey string a scramble key (optional, default "solana_default_scramble_key")
Examples
import Solana from "@ledgerhq/hw-app-solana";
const solana = new Solana(transport);
getAddress

Get Solana address (public key) for a BIP32 path.

Because Solana uses Ed25519 keypairs, as per SLIP-0010 all derivation-path indexes will be promoted to hardened indexes.

Parameters
  • path string a BIP32 path
  • display boolean flag to show display (optional, default false)
Examples
solana.getAddress("44'/501'/0'").then(r => r.address)

Returns Promise<{address: Buffer}> an object with the address field

provideTrustedDynamicDescriptor

Provides trusted dynamic and signed coin metadata

Parameters
  • data DescriptorInput An object containing the descriptor and its signature from the CAL

Returns Promise<boolean>

signTransaction

Sign a Solana transaction.

Parameters
  • path string a BIP32 path
  • txBuffer Buffer serialized transaction
  • userInputType ("ata" | "sol")? optional user input type (ata or sol, for the case of token transfers)
Examples
solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)

Returns Promise<{signature: Buffer}> an object with the signature field

signOffchainMessage

Sign a Solana off-chain message.

Parameters
  • path string a BIP32 path
  • msgBuffer Buffer serialized off-chain message
Examples
solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)

Returns Promise<{signature: Buffer}> an object with the signature field

getAppConfiguration

Get application configuration.

Examples
solana.getAppConfiguration().then(r => r.version)

Returns Promise<AppConfig> application config object

getChallenge

Method returning a 4 bytes TLV challenge as an hex string

Returns Promise<string>

provideTrustedName

Provides a trusted name to be displayed during transactions in place of the token address it is associated to. It shall be run just before a transaction involving the associated address that would be displayed on the device.

Parameters
  • data string a stringified buffer of some TLV encoded data to represent the trusted name

Returns Promise<boolean> a boolean

Keywords