https://github.com/urbit/urbit-key-generation
Key derivation and HD wallet generation functions for Urbit
https://github.com/urbit/urbit-key-generation
Last synced: 3 months ago
JSON representation
Key derivation and HD wallet generation functions for Urbit
- Host: GitHub
- URL: https://github.com/urbit/urbit-key-generation
- Owner: urbit
- License: mit
- Created: 2018-08-01T12:09:56.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T01:35:09.000Z (over 2 years ago)
- Last Synced: 2025-04-03T01:35:29.975Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 2.61 MB
- Stars: 15
- Watchers: 17
- Forks: 8
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README
# urbit-key-generation
[](http://travis-ci.org/urbit/urbit-key-generation)
[](https://opensource.org/licenses/MIT)
[](https://www.npmjs.com/package/urbit-key-generation)Key derivation and HD wallet generation functions for Urbit.
## Install
Grab it from npm like so:
```
npm install urbit-key-generation
```To include in your node project, use:
``` javascript
const kg = require('urbit-key-generation')
```To use in the browser, you can use e.g. [rollup][roll] and the
[rollup-plugin-node-resolve][rpnr] plugin, and specify the following in your
`rollup.config.js` or similar:``` javascript
plugins: [
..,
resolve({
browser: true,
}),
..
]
```## Usage
You will probably be interested in the `generateWallet` function, which
generates a HD wallet for Urbit keys. It expects an object argument containing
the following properties:* `ticket`, a 64, 128, or 384-bit `@q` master ticket (you can use e.g. the
appropriate `patq` functions from [urbit-ob][urbo] to create these from
decimal or hex strings).
* `ship`, an Urbit ship number between 0 and 2^32 - 1.
* `passphrase`, an optional passphrase used to salt seeds derived from BIP39
mnemonics.
* `revision`, an optional number used to salt network seeds derived from a
management seed. Defaults to `0`.
* `boot`, an optional flag that indicates whether or not to generate Urbit
network keys for the provided ship. Defaults to `false`.`generateWallet` returns a Promise, so you can deal with it as follows, for
example:``` javascript
let config = {
ticket: '~marbud-tidsev-litsut-hidfep',
ship: 65012,
boot: true
}let wallet = await generateWallet(config)
```This library also contains functionality for generating Arvo keyfiles, via
`generateKeyfile`, as well as web UI login codes (`|code` in :dojo), via
`generateCode`.When using these functions to derive outputs for an on-chain ship, ensure that
you're actually passing them the ship's *current* keypair, which usually
involves specifying the ship's `%life` as the 'revision' parameter.## Security
Tlon runs a [bug bounty program][bugs]. If you believe you've discovered a
vulnerability anywhere in this implementation, you can disclose it privately to
[[email protected]][sect].## Dev
Before making a PR, you should create an updated browser bundle (generated via
`npm run-script build`).You can run the test suite with a simple `npm test`.
[urbo]: https://www.npmjs.com/package/urbit-ob
[roll]: https://rollupjs.org/guide/en
[rpnr]: https://github.com/rollup/rollup-plugin-node-resolve
[bugs]: https://urbit.org/bounties/
[sect]: mailto:[email protected]