Smart Vault JS SDK
Javascript Software Development Kit
The Lightstreams Javascript SDK provides is a library the provides modules for account management and interacting with a Lightstreams node.
Source
The Lightstreams Javascript SDK Github repository.
Requirements
Node >= 10
Lightstreams node. How to install
How to use
Install node module
Install lightstreams-js-sdk
as part of your project dependencies:
npm install git+https://[email protected]:lightstreams-network/lightstreams-js-sdk#master --save
Modules
1. Wallets (ethers-js)
Learn more about ethers-js
How to create a random new wallet
import { EthersWallet as EW } from 'lightstreams-js-sdk';
const encryptedJson = await EW.Keystore.createRandomWallet(seedPhrase, password);
How to create a wallet from seed phrase
import { EthersWallet as EW } from 'lightstreams-js-sdk';
const encryptedJson = await EW.Keystore.createWallet(seedPhrase, password);
How to generate a random seed phrase
import { EthersWallet as EW } from 'lightstreams-js-sdk';
const randomSeedPhrase = EW.Keystore.generateRandomSeedPhrase();
1.1 Account
How to create a new account
import { EthersWallet as EW } from 'lightstreams-js-sdk';
const encryptedJson = await EW.Keystore.createRandomWallet(seedPhrase, password);
const account = EW.Account.createAccount(encryptedJson)
Public account object API
lock():void
: Lock wallet accountunlock(password):void
: Unlock wallet accountisLocked():boolean
: Return false is the account is unlocksign(txParams):string
: Return a signed transaction. Wallet must be unlockedexport():object
: Returns encrypted privatekey in json formatseedPhrase():array
: Return account seed phrase. Wallet must be unlocked
2. Web3 provider
In this repository you can find a customize web3 provider which uses a local keystorage to sign transactions. In addition other ethereum public API methods such as eth_lockAccount
, eth_unlockAccount
and eth_newAccount
are being overwritten to use the key local storage.
How to initialize a LS web3 provider
import { Web3 } from 'lightstreams-js-sdk';
Web3.newEngine(window.process.env.WEB3_PROVIDER).then(web3 => {
window.web3 = this.state.web3;
});
Using this web3 provider you could create a new account and unlock it as you would regularly do web3 engine api methods, such as:
web3.eth.personal.newAccount("password");
web3.eth.personal.unlockAccount("0x0Address", "password", 1000);
How to import a wallet
import { EthersWallet as EW } from 'lightstreams-js-sdk';
const encryptedJson = await EW.Keystore.createRandomWallet(password);
web3.currentProvider.importAccount(encryptedJson);
3. ENS
Learn more about it in official docs.
How to register new tld
import { ENS } from 'lightstreams-js-sdk';
const account = "0x0Address"; // Owner account
const tld = "lsn"
const { ensAddress, resolverAddress } = await ENS.SDK.deployNewRegistry(web3, { from: account });
await ENS.SDK.registerNode(web3, { ensAddress, from: account, node: tld});
How to use ENS official sdk Read docs here
const domain = 'fanbase.lsn';
const ens = ENS.SDK.initializeManager(web3.currentProvider, ensAddress);
console.log(`Registering ${domain}...`);
await ens.setSubnodeOwner(domain, account, { from: account });
console.log(`Setting resolver ...`);
await ens.setResolver(domain, resolverAddress, { from: account });
console.log(`Setting address ...`);
await ens.resolver(domain).setAddr(account, { from: account });
let address = await ens.resolver(domain).addr();
console.log(`${domain} is pointing to ${address}`);
4. Smart vault
4.1 Gateway proxy
Sample usage
const { Gateway as useGateway } = require('lightstreams-js-sdk')
const gateway = useGateway('https://gateway.sirius.lightstreams.io')
Once LightstreamsSDK
is initialized you interact with it as follow:
// Get user balance
const account = "0xa981f8ca77d069d79b609ca0069b052db79e7e30"
const { balance } = await gateway.wallet.balance(account)
Available Methods
Gateway SDK interface is made to match, one to one, every available smart vault endpoints.
/user/signup ->
gateway.user.signUp(password)
/user/signin ->
gateway.user.signIn(account, password)
/wallet/balance ->
gateway.wallet.balance(account)
/wallet/transfer ->
gateway.wallet.transfer(from, password, to, amountWei)
/storage/add ->
gateway.storage.add(owner, password, file)
/storage/fetch ->
gateway.storage.fetch(meta, token, stream)
/acl/grant ->
gateway.acl.grant(acl, owner, password, to, permission)
/acl/revoke ->
gateway.acl.revoke(acl, owner, password, to)
/acl/grant-public ->
gateway.acl.grantPublic(acl, owner, password)
/acl/revoke-public ->
gateway.acl.revokePublic(acl, owner, password)
/shop/create ->
gateway.shop.create(from, password)
/shop/shell ->
gateway.shop.sell(shop, from, password, acl, priceWei)
/shop/buy ->
gateway.shop.buy(shop, from, password, acl)
/erc20/balance ->
gateway.erc20.balance(erc20_address, account)
/erc20/transfer ->
gateway.erc20.transfer(erc20_address, from, password, to, amount)
/erc20/purchase ->
gateway.erc20.purchase(erc20_address, account, password, amount_wei)
Last updated
Was this helpful?