@balancednetwork/hw-app-icx
v1.0.6
Published
Ledger Hardware Wallet ICON Application API
Downloads
24
Readme
@balancednetwork/hw-app-icx
It is the javascript version of client library to communicatie with Ledger Nano S applications forked from LedgerHQ/app-icx.
Prerequisite
Build Environment
Test Environment
- Ledger device with ICON application installed
Getting Started
Preparation
- Connect Ledger Nano S device on a USB port
- Make sure Ledger Nano S is initialized and unlocked, and ICON application is installed and started
Build and test
Simply install dependencies, build, and start a simple web server with simple test-purpose ICON web app
$ cd client-js $ yarn $ yarn build
Access "https://[IP]:9966" on web browser and test
It uses chrome built-in extension for U2F so use Chrome web browser
Allow web browser to access site of untrusted certificate which a simple web server BUDO uses. U2F communication is only allowed on HTTPS
Build scripts
Install dependencies
yarn
Build
Build all packages
yarn build
Watch
Watch all packages change. Very useful during development to build only file that changes.
yarn watch
Clean
Clean all build output
yarn clean
API
Refer to API document.
Examples
import Transport from "@ledgerhq/hw-transport-u2f";
import Icx from "@ledgerhq/hw-app-icx";
const getIcxAddress = async () => {
const transport = await TransportU2F.create();
transport.setDebugMode(true); // if you want to print log
transport.setExchangeTimeout(60000); // Set if you want to change U2F timeout. default: 30 sec
const icx = new Icx(transport);
// coin type: ICX(4801368), ICON testnet(1)
const result = await icx.getAddress("44'/4801368'/0'", true, true);
return result.address;
};
getIcxAddress().then(a => console.log(a));
Remarks
Integration with Chrome Extension
JS library uses chrome pre-built U2F extension "CryptTokenExtension" which allows https web page as the trusted origin, and chrome extension can't use directly U2F extension. Therefore chrome extension needs to create an iframe which pulls https web page integrating with this library and communicate through Message Channel.
Refer to https://bugs.chromium.org/p/chromium/issues/detail?id=823736 for the reason U2F extension doesn't allow chrome extension origin.