0.4.1 • Published 4 years ago

@rocksideio/rockside-wallet-sdk v0.4.1

Weekly downloads
-
License
-
Repository
github
Last release
4 years ago

rockside-wallet-sdk-js

npm logo

The Rockside Wallet SDK helps implementing a Wallet and integrating it with Rockside by providing following APIs :

  • Create a HD wallet, handle recovery and signing
  • Create a Rockside meta transaction signature

Usage

Requirements

Some of these examples require a token to authenticate the user. See the documenation to get more information on how to retrieve those.

Get a Web3 custom provider

This allows to have a transparent Web3 provider that relay all eth_sendTransaction through the given identity:

import { Rockside } from 'rockside-wallet-sdk';
const rockside = new Rockside({ token: 'MY_TOKEN' });

const wallet = await rockside.connectEncryptedWallet('username', 'password');
const identity = await rockside.deployIdentity(wallet.getAddress());
const provider = rockside.getWalletProvider(wallet, identity.address);
const web3 = new Web3(provider as any);

const erc20 = new web3.eth.Contract(JSON.parse(erc20ABI), erc20Address);
const mybalance = await erc20.methods.balanceOf(identity.address).call();

Use eth_signTypedData_v4 to sign a meta transaction using Metamask

import { executeMessageTypedData } from 'rockside-wallet-sdk';

const signer = '0x0x6f32e2588C7C2Ab80ceCf49562CAD748409dCBa7';
const domain = { chainId: 3, verifyingContract: '0x${FORWARDER_ADDRESS}' };
const metatx = {
  signer,
  to: '0x6f32e2588C7C2Ab80ceCfFFFFFFFFFFFFFFFFFFF',
  value: 0,
  data: '0xabba',
  nonce: 0,
};
const provider = window.ethereum;

const typedData = executeMessageTypedData(domain, metatx);
const signature = await new Promise((resolve, reject) => {
  provider.sendAsync({
    method: 'eth_signTypedData_v4',
    params: [signer, JSON.stringify(typedData)],
    from: signer,
  }, (err, result) => {
    if (err) { return reject(err); }
    return resolve(result.result);
  });
});

Generate a Wallet and sign a meta transaction

import { Wallet, executeMessageHash } from 'rockside-wallet-sdk';

const wallet = Wallet.createRandom();

const domain = { chainId: 3, verifyingContract: '0x${FORWARDER_ADDRESS}' };
const metatx = {
  signer: '0x0x6f32e2588C7C2Ab80ceCf49562CAD748409dCBa7',
  to: '0x6f32e2588C7C2Ab80ceCfFFFFFFFFFFFFFFFFFFF',
  value: 0,
  data: '0xabba',
  nonce: 0,
};

const hash = executeMessageHash(domain, metatx);
const signature = await wallet.sign(hash);

Run tests

First, install dev dependencies :

npm i -D

Then run tests

npm test
0.4.1

4 years ago

0.4.0

4 years ago

0.3.7

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago

0.0.1

4 years ago