@mintlayer/entropy-generator
v1.0.8
Published
An entropy generator based on first durstenfeld variant of fisher-yates.
Readme
Entropy generator
An entropy generator based on first durstenfeld variant of fisher-yates.
Versions
This is the main branch.
Latest packages can be find on npm or releases.
Latest public package source code can be found here: main
Install
npm i @mintlayer/entropy-generatorEnvironment support
Requires Node.js 20+ or an environment providing crypto.getRandomValues.
In browsers, use a bundler — the buffer dependency is resolved automatically.
Note on output quality: the input array shapes the shuffle, but every output byte is XORed with cryptographically secure random bytes, so the result is uniformly random regardless of the input.
Usage
generateEntropy
Call the function generateEntropy with a normalized array of integers as parameter.
The second parameter(optional) is the size of the output. If set, it has to be a non-negative integer, smaller or the same size as the input.
A Buffer object will be returned.
By "normalized" it means all values should be between 0-255. You can normalize you array by yourself or the normalizer function exported also by this library.
Example 1:
import { generateEntropy } from '@mintlayer/entropy-generator'
const initialArray = [ 1, 170, 55, 80, 190 ]
const entropy = generateEntropy(initialArray)
// entropy size: 5Example 2:
import { generateEntropy } from '@mintlayer/entropy-generator'
const initialArray = [ 1, 170, 55, 80, 190 ]
const entropy = generateEntropy(initialArray, 3)
// entropy size: 3normalize
Call the function normalize an array of integers as parameter.
Another array will be returned with all values between 0-255.
Example:
import { normalize } from '@mintlayer/entropy-generator'
const initialArray = [-2000, -15000, 300, 400, 1500]
normalize(initialArray)
// returns: [ 201, 0, 236, 238, 255 ]Development
Install deps
npm iBuild
npm run buildRun tests
Run once
npm testWatch
npm run test:watchCoverage
npm run test:coverageLint
npm run lintHow to Contribute
Check here to see what you should do, and the rules you should follow, to contribute to this project.
