vnm
v1.3.2
Published
A Von Neumann machine for deep spacetime.
Downloads
18
Readme
#VNM - The Discrete Distributed Platform
VNM implements a hyperconvergent design inspired by the von Neumann cellular automaton. The ultimate goal is to allow extremely reliable software to be written once and executed in any supported EMCAscript environment.
- Universal replication - machines are portable regardless of state.
- Simple scaling - provide sets of supported URNs or allow VNM to autoconfigure.
- Transactional non-repudiation - operations are stored as blockchains and signed by human/machine agents
- Provably optimal execution - stop worrying about architecture and write code.
- Gated behavior - prevent unauthorized or unknown changes from being introduced.
- Integrate easily with your CI/CD processes -
npm i -g vnm-cli && vnm -h
##Get Started
Install vnm to your package.json
npm i vnm
var vnm = require('vnm')
//Create our entity model
var entity = {'foo': 'bar'}
//Initialize with defaults and secure our vnm
vnm.init();
vnm.secure(entity);
//Update the entity model state
entity.foo = biz;
//Encrypt and store the last state
vnm.replicate(entity);
//Decrypt and retrieve the last state
console.log(vnm.communicate());
//Show status, allowing you to tune constraints when initialized
console.log(vnm.status());
##Configuration
var machineOptions = {
"debug": true, //Default false
"currencyUnit": "USD",
"durationUnit": "ms", //ISO 8601 ms
"memoryUnit": "MB",
"storageUnit": "MB",
"maxOps": 0, //Operation limit, 0 for none
"maxDuration": 5 * 60 * 100, //Max duration, 0 for none
"maxNodes": 4, //Parallel nodes limit, 0 for none
"maxCost": .1, //Cost limit, 0 for none
"maxMemory": 128, //MB
"maxStorage": 32, //MB
"cells": 4, //Cell count, total blocks = cells x dimensions
"dimensions": 4 //Dimension count
}
var encryptionOptions = {
"debug": true, //Default false
"saltBytes": 256, //Bytes used for salt
"digest": "sha512", //Hash digest
"keyBytes": 32, //Encryption key bytes
"iterations": 10000, //Crypto iterations (not yet implemtented)
"algorithm": "aes-256-cbc", //Encryption algorithm - must support iv
"ivBytes": 16, //IV bytes
"password": crypto.randomBytes(32) //Password, generated at runtime
}
##Examples
Clone/download the repo master branch or browse the /examples directory.
##Contributing
See CONTRIBUTING.md and CODE_OF_CONDUCT.md
##License
See LICENSE.md
##References
https://en.wikipedia.org/wiki/Von_Neumann_cellular_automaton