/array-io-keychain

A highly secure standalone application for signing transactions and generating key pairs.

Primary LanguageCMIT LicenseMIT




                                                     Tweet Contributions welcome License npm version

» Download for macOS «

» Documentation «

» Website «

Overview

KeyChain is a standalone app for signing transactions and generating key pairs. It stores private keys in an isolated environment where no logger, debugger or spyware can intercept them because of the three-layer security protecting each action of the system. KeyChain supports transactions from and to various blockchains, including Ethereum and Bitcoin in the current release, but working on Ethereum classic, Litecoin, Bitcoin Cash, and Bitshares.

Table of contents

Installation

Download and install KeyChain for macOS. Windows and Linux installers are coming soon.

Try out KeyChain on the demo page.

After installation, connect to the demo-page: http://localhost:16384/ to check if the installation was successful and to test the KeyChain commands. In case everything went well, you will see the following page and you will be able to see responses to the commands in the response box when you click on them.

image_2019-02-15_13-24-52

If you are having trouble connecting to the page, contact us and we will do our best to help you.

You can find a comprehensive installation guide for macOS.

Getting started

After you have installed KeyChain, you can start using it with web3. Just follow these simple steps.

NB: If you launch KeyChain for the first time, you need to get a public key with the "select_key" command. You can save the public key to local storage. Then you will not need to use "select_key" command again.

  1. Install keychain.js library from this source.
npm install keychain.js
  1. Now use an overridden web3 function
const { Keychain, KeychainWeb3 } = require('keychain.js');
const Web3 = require('web3');
const web3 = new Web3('YOUR_API_URL'); // https://ropsten.infura.io/v3/046804e3dd3240b09834531326f310cf
const tx = {
  to: '0xE8899BA12578d60e4D0683a596EDaCbC85eC18CC',
  value: 100,
  gas: 21000
};
const keychain = new Keychain();
const keychainWeb3 = new KeychainWeb3(keychain, web3);
keychain.selectKey()
  .then(publicKey => keychainWeb3.signTransaction(tx, publicKey))
  .then(result => web3.eth.sendSignedTransaction(result.rawTransaction));

signTransaction with KeyChain in action

signETH

Companies using KeyChain

KeyChain and Swap.Online in action:

s5fgojvfff

Contributing to the project

The main purpose of this repository is to continue to evolve KeyChain core, making it faster and easier to use. Development of KeyChain happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements.

KeyChain has adopted a Code of Conduct that we expect project participants to adhere to. Please read the full text so that you can understand what actions will and will not be accepted.

To contribute or report a bug, you can contact us or create an issue with a label "bug".

How to use

For extensive documentation on KeyChain, refer to the Wiki.

There you will find:

Contact

If you need help interacting with KeyChain, please do not hesitate to contact us:

If you want to report a security issue, include the word "security" in the subject field.

We take security issues very seriously and we'll be looking forward to hearing from you. Still, we hope you enjoy using KeyChain and the integration goes smooth!

License

This project is licensed under the terms of the MIT license.