@cruxpay/js-sdk
Version:
CruxPay Javascript SDK
161 lines (116 loc) • 6.62 kB
Markdown
### CruxPay Official Documentation
[https://docs.cruxpay.com](https://docs.cruxpay.com)
### What is CruxPay?
[CruxPay](https://cruxpay.com/) is a protocol which aims to link any blockchain address to a human-readable name, and let users interact with each other and dApps with ease.
### Adding cruxpay-sdk.js
First you need to get cruxpay sdk into your project. This can be done using the following methods:
- npm: ``npm install @cruxpay/js-sdk``
- pure js: link the [cruxpay-sdk-dom.js](https://unpkg.com/@cruxpay/js-sdk/dist/cruxpay-sdk-dom.js)
### SDK Initialisation:
To initialize the sdk, you need to minimally pass a javascript object with following details:-
1. **walletClientName**
- walletClientName is the key which identifies the wallet specific configurations stored in gaiaHub like
1. Subdomain Registrar Information
2. BNS(BlockStack Name Service) Node
3. Currency symbol map of your wallet
- To help you get started, you can use `cruxdev` as the value which is already configured for our dev test users. It has 5 pre-registered crypto symbols for a fast start. You can contact us at [telegram](https://t.me/cruxpay_integration) channel for registration of your own walletClientName.
2. **privateKey (optional)**
- Required to re-initialise the CruxClient with same user across different devices.
- For clients using HD derivation paths, recommended to use the path (`m/889'/0'/0'`) for CruxPay keypair node derivation with respect to account indices.
`**Note:** Cruxprotocol JS SDK is case insensetive for cryptocurrency symbols and will always output lowercase symbols.`
Example below shows how to a cruxClient instance. These are the [SDK Operation](#sdk-operation) exposed.
```javascript
let cruxClientOptions = {
walletClientName: 'cruxdev',
privateKey: "6bd397dc89272e71165a0e7d197b280c7a88ed5b1e44e1928c25455506f1968f" // (optional parameter)
}
let cruxClient = new CruxClient(cruxClientOptions);
```
That's it! now you can use the cruxClient object to perform operations defined in [SDK Operation](#sdk-operation).
```javascript
cruxClient.getCruxIDState().then((cruxIDState) => {
console.log(cruxIDState);
})
```
Wallet clients are encouraged to surface the respective `ERROR_CODE` of the `CruxClientError` to their Users with any custom error messages. This will help in debugging any issues with the functionality.
Refer [error-handling.md](https://github.com/cruxprotocol/js-sdk/blob/master/error-handling.md) for more information on Error handling.
### SDK Operation
1. ##### isCruxIDAvailable(cruxID<onlySubdomain>)
- Description: Helps to check if a particular CruxID is available to be registered.
- Params:
- subdomain part of [CruxID](#cruxid)
- Returns: Promise resolving to a _boolean_ indicating whether a particular Crux ID is available for registration.
2. ##### getAssetMap()
- Description: Get Wallet's asset map with currency symbols as the keys and asset object as the value.
- Params: None
- Returns: Promise resolving to [IResolvedClientAssetMapping](#iresolvedclientassetmapping) which has symbols and asset objects.
3. ##### registerCruxID(cruxID<onlySubdomain>)
- Description: Reserves/registers the cruxID for the user. The user can link any blockchain address to his CruxID immediately after registration using [putAddressMap](#putaddressmap).
- Params:
- subdomain part of [CruxID](#cruxid)
- Returns: Promise resolving on successful call to the registrar.
```javascript
const sampleAddressMap: IAddressMapping = {
'BTC': {
addressHash: '1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX'
},
'ETH': {
addressHash: '0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8'
},
}
// Advised to pipe the method putAddressMap to registerCruxID call
await cruxClient.registerCruxID("bob")
.then(() => {
return cruxClient.putAddressMap(sampleAddressMap)
.catch((addressUpdationError) => {
// Handling addressUpdation error
})
})
.catch((registrationError) => {
// Handling registration error
})
```
4. ##### resolveCurrencyAddressForCruxID(cruxID, walletCurrencySymbol)
- Description: Helps to lookup a mapped address for a currency of any CruxID if its marked publically accessible.
- Params:
- complete [CruxID](#cruxid) of a user whose address you want to fetch
- [walletCurrencySymbol](#walletcurrencysymbol) wallet symbol of currency whose address you want to fetch.
- Returns: Promise resolving to [IAddress](#iaddress) for that symbol of currency if available.
5. ##### getAddressMap()
- Description: Get back the current publicly registered address json
- Params: None
- Returns: Promise resolving to [IAddressMapping](#iaddressmapping)
6. ##### putAddressMap(newAddressMap)
- Description: Helps to update 2 things:-
- publish/change list of publicly accessible currency addresses.
- change the value of addressHash and/or secIdentifier to another one.
- Note: The addresses are now publicly linked and can be resolved. To get which currencies can be part of newAddressMap please call `getAssetMap()`.
- Params:
- newAddressMap of type [IAddressMapping](#iaddressmapping) has modified map has symbols and addresses a user wants to publically expose with CruxID.
- Returns: Promise resolving to {success: [IPutAddressMapSuccess](#iputaddressmapSuccess), failures: [IPutAddressMapFailures](#iputaddressmapfailures)}
7. ##### getCruxIDState()
- Description: Returns details of the current registered CruxID(if any) for this instance of the user wallet and its registration status
- Params: None
- Returns: Promise resolving to [CruxIDState](#cruxidstate)
### Building
#### Requirements
* [Node.js](https://nodejs.org)
* npm
#### Building From Source
```bash
npm run-script build
```
Build the cruxpay-sdk.js package and put all the browser build files into the `dist` folder.
#### Testing (mocha)
```bash
npm run-script test
```
### Sample Wallet Integration
```bash
npm run-script wallet_demo
```
Running the above command will build a [demo page](https://localhost:1234), here you can play around with all method that are exposed by the sdk.
### References
Find references to all available methods at [https://cruxprotocol.github.io/js-sdk](https://cruxprotocol.github.io/js-sdk).
### How can I contribute?
See [CONTRIBUTING.md](CONTRIBUTING.md) file.