node-cryptonight
Version:
node bindings for cryptonight hashing
98 lines (69 loc) • 2.42 kB
Markdown
# node-cryptonight
> node bindings for cryptonight hashing
### Requirements
node-cryptonight requires [Boost](http://www.boost.org) and [Sodium](http://libsodium.org)
##### Ubuntu
sudo apt-get install libboost-all-dev libsodium-dev
##### Mac
brew install boost
brew install libsodium
### Installation
npm install --save node-cryptonight
### Testing
Code is linted with [standard](https://github.com/standard/standard) and tested with [Jest](https://github.com/facebook/jest). Run `npm test` to lint and run tests.
### Usage Examples
##### Synchronous Hashing
```js
const cryptonight = require('node-cryptonight').hash
const hash = cryptonight(Buffer.from('This is a test'))
console.log(hash) // <Buffer a0 84 f0 1d 14 37 ..>
```
##### Synchronous Hashing with variant 1
```js
const cryptonight = require('node-cryptonight').hash
const hash = cryptonight(Buffer.from('This is a test'), 1)
console.log(hash) // <Buffer a0 84 f0 1d 14 37 ..>
```
##### Synchronous Hashing with variant 4 and height 123
```js
const cryptonight = require('node-cryptonight').hash
const hash = cryptonight(Buffer.from('This is a test'), 1, 123)
console.log(hash) // <Buffer a0 84 f0 1d 14 37 ..>
```
##### Asynchronous Hashing
```js
const cryptonight = require('node-cryptonight').asyncHash
cryptonight(Buffer.from('This is a test'), hash => {
console.log(hash) // <Buffer a0 84 f0 1d 14 37 ..>
})
```
##### Asynchronous Hashing with variant 1
```js
const cryptonight = require('node-cryptonight').asyncHash
cryptonight(Buffer.from('This is a test'), 1, hash => {
console.log(hash) // <Buffer a0 84 f0 1d 14 37 ..>
})
```
##### Asynchronous Hashing with variant 4 and height 123
```js
const cryptonight = require('node-cryptonight').asyncHash
cryptonight(Buffer.from('This is a test'), 4, 123, hash => {
console.log(hash) // <Buffer a0 84 f0 1d 14 37 ..>
})
```
##### Promise Wrapper Example
```js
function cryptonight(data) {
return new Promise((resolve, reject) => {
require('node-cryptonight').asyncHash(data, hash => {
resolve(hash)
})
})
}
cryptonight(Buffer.from('This is a test'))
.then(console.log) // <Buffer a0 84 f0 1d 14 37 ..>
```
### See Also
* [node-cryptonight-lite](https://github.com/ExcitableAardvark/node-cryptonight-lite)
### License
Released under the 3-Clause BSD License. Contains code from the Monero project. See `LICENSE` for more information.