Skip to content

Commit

Permalink
Merge pull request #20 from getsafle/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
sshubhamagg authored Aug 19, 2024
2 parents 1c92b2b + 11d9f3e commit 344b8d0
Show file tree
Hide file tree
Showing 10 changed files with 7,521 additions and 2 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages

name: Main Branch

on:
push:
branches:
- main
paths:
- package.json
- CHANGELOG

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 18.x
- run: npm ci
- run: npm run test

publish-npm:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 18.x
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
40 changes: 40 additions & 0 deletions .github/workflows/other-branches.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages

name: Feature/Bugfix/dev/test branch

on:
push:
branches:
- feature-*
- bugfix-*
- dev
- test
pull_request:
branches:
- feature-*
- bugfix-*
- dev
- test
paths:
- package.json
- CHANGELOG

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Code checkout
uses: actions/checkout@v2

- name: Setting up Node.js
uses: actions/setup-node@v2
with:
node-version: '18.x'

- name: Installing dependencies
run: npm ci

- name: Run tests
run: |
npm run test:coverage
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules
.nyc_output
jscoverage
test.js
.vscode/launch.json
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
### 1.0.0 (2024-08-16)

##### Rootstock Keyring Implementation

- Implemented Keyring functionality to manage accounts
- Implemented functionality to sign a raw transaction
- Implemented functionality to sign a message
- Implemented functionality to get coin balance for a wallet
- Implemented functionality to get gass fees
- Implemented functionality to broadcast a transaction
- Implemented Readme
- Implemented tests
113 changes: 111 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,111 @@
# vault-rootstock-controller
Rootstock controller for safle vault
# vault-rootstock-controller<code><a href="https://www.docker.com/" target="_blank"><img height="100" src="https://rootstock.io/og.png"></a></code>

[![npm version](https://badge.fury.io/js/@getsafle%2Fvault-rootstock-controller.svg)](https://badge.fury.io/js/@getsafle%2Fvault-rootstock-controller) <img alt="Static Badge" src="https://img.shields.io/badge/License-MIT-green"> [![Discussions][discussions-badge]][discussions-link]
<img alt="Static Badge" src="https://img.shields.io/badge/rootstock_controller-documentation-purple">

A Module written in javascript for managing various keyrings of rootstock accounts, encrypting them, and using them. This repository contains `rootstockHdKeyring` class to create **rootstock wallet** from **Safle Vault**.

- [Installation](#installation)
- [Initialize the rootstock Controller class](#initialize-the-rootstock-controller-class)
- [Methods](#methods)
- [Generate Keyring with 1 account and encrypt](#generate-keyring-with-1-account-and-encrypt)
- [Restore a keyring with the first account using a mnemonic](#restore-a-keyring-with-the-first-account-using-a-mnemonic)
- [Add a new account to the keyring object](#add-a-new-account-to-the-keyring-object)
- [Export the private key of an address present in the keyring](#export-the-private-key-of-an-address-present-in-the-keyring)
- [Sign a transaction](#sign-a-transaction)
- [Sign a message](#sign-a-message)
- [Get balance](#get-balance)

## Installation

`npm install --save @getsafle/vault-rootstock-controller`

## Initialize the rootstock Controller class

```
const { KeyringController, getBalance } = require('@getsafle/vault-rootstock-controller');
const rootstockController = new KeyringController({
encryptor: {
// An optional object for defining encryption schemes:
// Defaults to Browser-native SubtleCrypto.
encrypt(password, object) {
return new Promise('encrypted!');
},
decrypt(password, encryptedString) {
return new Promise({ foo: 'bar' });
},
},
});
```

## Methods

### Generate Keyring with 1 account and encrypt

```
const keyringState = await rootstockController.createNewVaultAndKeychain(password);
```

### Restore a keyring with the first account using a mnemonic

```
const keyringState = await rootstockController.createNewVaultAndRestore(password, mnemonic);
```

### Add a new account to the keyring object

```
const keyringState = await rootstockController.addNewAccount(keyringObject);
```

### Export the private key of an address present in the keyring

```
const privateKey = await rootstockController.exportAccount(address);
```

### Sign a transaction

```
const signedTx = await rootstockController.signTransaction(rootstockTx, _fromAddress);
```

### Sign a message

```
const signedMsg = await rootstockController.signMessage(msgParams);
```

### Sign a message

```
const signedObj = await rootstockController.sign(msgParams, pvtKey, web3Obj);
```

### Sign Typed Data (EIP-712)

```
const signedData = await rootstockController.signTypedMessage(msgParams);
```

### Get balance

```
const balance = await rootstockController.getBalance(address, web3);
```

### Send Transaction

```
const receipt = await rootstockController.sendTransaction(signedTx, web3);
```

### Calculate Tx Fees

```
const fees = await rootstockController.getFees(rawTx, web3);
```

[discussions-badge]: https://img.shields.io/badge/Code_Quality-passing-rgba
[discussions-link]: https://github.com/getsafle/vault-rootstock-controller/actions
Loading

0 comments on commit 344b8d0

Please sign in to comment.