Git Product home page Git Product logo

validana-core's Introduction

This is the semi-annual release channel for Validana. For the latest version contact us via [email protected].

About Validana.io

Validana is a high performance decentralized data storage and processing environment for governments, educational institutes and businesses based on blockchain technology. Our permissioned approach allows the speed and flexibility of traditional systems whilst enabling organizations and individuals to independently verify transactions and processes. Validana is 100% open-source and released under the AGPLv3 license.

Validana is already in use in many business to business blockchain applications and has been under active development since early 2017 by the Dutch company Coinversable. After a lot of testing and tweaking all Validana source code was fully open-sourced in June 2018.

Please visit https://validana.io for more information.

For commercial support, licensing options or any inquiries about what Validana can do for your business please contact us directly via [email protected].

How it works

Validana was developed specifically for business to business, educational and government applications where a trusted context exists but the need for transparency and verifiability arises.

Validana can best be compared to a permissioned blockchain with a single miner which we call the validana-processor. When you configure a Validana environment you can choose who you want to allow to participate as validana-node, from the entire world to just a select group of individuals. Nodes connect to each other and obtain a full copy of the transaction history to independently verify all transactions and the transaction logic within the network. Each transaction is securely signed at their origin by the validana-client. The client locally signs the transaction and communicates the payload to the validana-server over a secure WebSocket or REST connection. The server sends the signed payload to the processor, which in turn will execute the corresponding Smart Contracts and either accept or reject the transaction. The server will listen for transaction status changes and notify the client on success or failure. By default the processor will process all pending transactions every 5 seconds. Each action the processor takes can be independently verified by the nodes. Validana's hybrid blockchain approach allows for very fast block creation and validation, processing hundreds of transactions within 5 second block-time without energy consuming consensus algorithms.

All Validana packages and smart contracts are entirely written in Typescript / JavaScript which makes code re-use a key feature of Validana. The validana-core package for instance contains common code between the node and the processor. Validana makes extensive use of technologies which are well known in the web development community such as Typescript, Promises, Node.js, REST and WebSockets. Validana is easy to understand and easy to implement for developers with experience related to web development.

Validana Core (This package)

Validana Core contains all core components needed for interacting with the blockchain, such as the block and transaction format, signing and validating them and generating private keys and addresses. It is not meant to be run standalone, but should instead be extended, as is done by the Validana Processor and the Validana Node. It can however be used to generate a private key (wif), its public key (hex) and address (base58check) from the command line, which is explained below.

Setup development environment

  1. Install Node.js 7.6 or later (https://nodejs.org/en/download/)
  2. Install yarn (https://yarnpkg.com/en/docs/install)
  3. (Optional) Run yarn global add nyc jasmine to add testing.

Setup Validana Core

  1. Make sure the development environment is setup.
  2. Clone the project with git.
  3. Navigate to project root.
  4. Run yarn install
  5. (Optional) Run yarn link so it can be linked to other packages.

Build Validana Core

  1. Make sure the project is setup.
  2. Navigate to project root.
  3. Run yarn build

Generating keys

  1. Navigate to project root.
  2. Run yarn --silent keys or yarn --silent keysjson

validana-core's People

Contributors

wdenbakker avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

Forkers

discipl

validana-core's Issues

Unsafe encryption algorithms supported

validana-core/src/tools/crypto.ts

Unsafe hash algorithm MD5 and SHA1 are supported - presumably for compatibility. These should be disabled. This class also makes unsafe direct sha1/sha256/sha512 method calls public, while wrapped APIs are available. The direct api calls should be protected or made private.

Unsafe use of hashing for message authentication

This might not be the best place for this issue. Please move it when there is a better repo for it :).

While reviewing crypto code, we observe that it uses SHA-256 module which does not guarantee authentication as provided by HMAC. Hashing is to be used only for tamper-evidence mechanism - not as the message authentication mechanism. It is recommended to use HMAC-SHA256 and use public key as passphrase.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.