hashgraph-ledger
Advanced tools
Comparing version 0.0.3 to 0.0.4
{ | ||
"name": "hashgraph-ledger", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "description": "A distributed ledger running on top of the hashgraph", |
# Hashgraph Ledger | ||
The Hashgraph Ledger is an experimental network running on top of the [hashgraph](http://github.com/buhrmi/hashgraph). It is a network of interconnected peers that work together to maintain consensus over the state of a distributed ledger. The list of participating node can be dynamic, and nodes can join and leave the network as they please without causing overhead. | ||
# NOT WORKING! DONT TRY TO USE IT. Will re-do this when the time is right. | ||
The Hashgraph Ledger is an experimental network running on top of the [hashgraph](http://github.com/buhrmi/hashgraph). It is a network of interconnected peers that work together to maintain consensus over the state of a distributed ledger. Currently, the list of participating nodes needs to be configured manually. But some efforts are underway to find a way to allow joining and leaving without causing large overhead. | ||
To maintain consensus, the network employs a new consensus algorithm called hashgraph consensus. This algorithm exploits knowledge of other peers' knowledge about events (similar to "blocks" in traditional blockchains) and uses virtual voting that does not require any extra bandwidth. Hashgraph network is therefore far superior to any blockchain-based network that require some kind of proof-of-X. | ||
@@ -41,5 +43,5 @@ | ||
A contract should not attempt to modify the ledger after it called resolve() or reject(). If a contract should be considered fulfilled, it has to call resolve(result) . `result` may not be undefined. Note that the storage engine currently does not support ACID transactions, meaning changes to the the ledger are not rolled back if a contract terminates without calling resolve(). We are exploring using postgres as data backend because the postgres transaction scheme fits perfectly onto the javascript promises mechanism. | ||
A contract should not attempt to modify the ledger after it called resolve() or reject(). If a contract should be considered fulfilled, it has to call resolve(result) . `result` may not be undefined. Note that the storage engine currently does not support ACID transactions, meaning changes to the the ledger are not rolled back if a contract terminates without calling resolve(). I am currently exploring using postgres as data backend because the postgres transaction scheme fits perfectly onto the javascript promises mechanism. | ||
Note: At this point in time, the API to interact with the network state from within the contract is neither secure nor finalized and still highly experimental. We are providing a library of simple, general-purpose contracts in the [templates.js](https://github.com/buhrmi/hashgraph-ledger/blob/master/templates.js) file. | ||
Note: At this point in time, the API to interact with the network state from within the contract is neither secure nor finalized and still highly experimental. There is a library of simple, general-purpose contracts in the [templates.js](https://github.com/buhrmi/hashgraph-ledger/blob/master/templates.js) file. | ||
@@ -46,0 +48,0 @@ ## Transactions |
@@ -1,5 +0,4 @@ | ||
// This file contains some simple general-purpose contracts that can be deployed to the blockchain. | ||
// a contract is simply a promise body that "promises" to modify | ||
// the ledgerState in a regulated and truthful way. | ||
// The contract MUST NOT use random values | ||
// This file contains some simple general-purpose contracts that can be deployed to the ledger. | ||
// a contract is simply a promise body that "promises" to modify the ledger in a way | ||
// A contract has to be "pure", meaning that given a ledger, it has to modify the ledger in the same way regardless of time or location of execution | ||
@@ -6,0 +5,0 @@ module.exports = { |
15204
83
208