blockcollider / bcnode Goto Github PK
View Code? Open in Web Editor NEWMining node and rovers for the five genesis chains of Block Collider.
Home Page: https://www.blockcollider.org
License: MIT License
Mining node and rovers for the five genesis chains of Block Collider.
Home Page: https://www.blockcollider.org
License: MIT License
Create docker image - Dockerfile
There is no need to run a full wav node, just use waves-api
npm similarly to lsk rover.
Features
Features
Integration of ESDoc with Travis CI
There will be 9.6 Billion NRG this will be distributed using two mechanisms A. Block Reward to miners and B. in the form of Boson Distributions which are distributed at random intervals every 4.5 months in Block time.
The Emblem bonus expands the default distance sum possible to inject blocks. This allows the miner to potentially take with less distance work. It is a logarithmic bonus.
Interesting idea: bitcoin/bitcoin#12271
Output
$ ./node_modules/npm-check-updates/bin/ncu --packageFile package.json --packageFile package.json
Using /home/travis/build/blockcollider/bcnode/package.json
async ~2.5.0 → ~2.6.0
axios ^0.17.1 → ^0.18.0
big.js ^3.2.0 → ^5.0.3
bitcoin-net ^4.5.0 → ^5.0.0
ethereum-common ^0.1.0 → ^0.2.1
leveldown ^1.8.0 → ^3.0.0
levelup ^1.3.9 → ^2.0.2
rocksdb ^1.1.0 → ^2.0.0
tx-builder ^0.7.0 → ^0.13.1
waves-api ^0.21.5 → ^0.22.0
flow-bin ^0.65.0 → ^0.66.0
jest 22.2.2 → 22.4.2
standard 10.0.3 → 11.0.0
The following dependencies are satisfied by their declared version range, but the installed versions are behind. You can install the latest versions without modifying your package file by using npm update. If you want to update the dependencies in your package file anyway, run ncu -a.
ethereumjs-devp2p ^2.1.2 → ^2.4.0
ethereumjs-util ^5.1.2 → ^5.1.5
mmap-object ^1.3.5 → ^1.3.6
node-forge ^0.7.1 → ^0.7.2
tar ^4.3.3 → ^4.4.0
babel-eslint ^8.2.1 → ^8.2.2
babel-jest ^22.2.2 → ^22.4.1
eslint-plugin-flowtype ^2.44.0 → ^2.46.1
Run ncu with -u to upgrade package.json
Features
Consider "yarn outdated" as replacement of "npm-check-updates"
Sooner or later some of the modules will be implemented in natively.
Sometimes, one wants to get a logger for different name that the one created from __filename
- as it is used everywhere right now. Change getLogger
api to:
getLogger(contextName: string, shouldTranslateFromPath: bool = true, meta?: Object)
Repeat: Turn on a VPN and attempt to run the init.js code
See:
Platforms
Optional
Block headers with payloads outside the bindings with external blockchains must include.
Rewamp Miner
Required
Optional
Integrate FIX server
Need to define the consensus rules around fees for transactions and how they are split between the block miner and the transaction miner.
{
block: 1,
txs: [{
"fpk": ?,
"d": ?
}]
}
How much to pay a miner who submitted a transaction vs the miner who found the block. The goal of transaction miners is actually to speed up the overall network while introducing a second metric by which to order the execution of transactions in a transaction pool. The transaction pool is traditionally bound by the active memory of the node.
Ex. Miner (MB) mines blocks and miner (MT) mines transactions. MB is bound by the maximum block transaction distance for each block (btd). Assuming Transaction Distance (td) then a valid block must have sum(td...td+i ) <= btd.
With compute & memory cost (cc) the MB realized transaction reward (TBR) is (fpk - cc - TR) * (btd)/actual number of transactions. The transaction reward is the optimization variable.
See https://github.com/blockcollider/bcnode/blob/master/src/cli/index.bak
Disable log printing to console
Deletes all local data including accounts, databases
Detect if Java 8 is installed
Same structure and API
Components
Rovers
Config structure mirrors module structure
Filesystem structure
$ tree src/rover -L 2
src/rover
├── btc
│ ├── controller.es6
│ ├── index.es6
│ ├── network.es6
│ └── rover.es6
├── eth
│ ├── controller.es6
│ ├── eth_rover.js
│ ├── network.es6
│ └── rover.es6
├── index.es6
├── lsk
│ ├── controller.es6
│ ├── index.es6
│ ├── network.es6
│ └── rover.es6
├── manager.es6
├── neo
├── utils.es6
└── wav
Config example
"rover": {
"btc": {
"controller" : {},
"network": {}
},
"eth": {
"controller": {}
"network": {}
}
}
There will be 9.6 Billion NRG this will be distributed using two mechanisms A. Block Reward to miners and B. in the form of Boson Distributions which are distributed at random intervals every 4.5 months in Block time.
Boson Distributions are a form of rent-busting and a encourage indirectly network participation, and pressure spammers/tumblers from creating empty transactions. Every 4.5 months a transaction ID is selected which most closely resembles the XOR combination of 100 blocks from the 4.5 month block and 100 blocks after it +/- one deviation. The public key which created the transaction ID that has the closest distance to the XOR combined hash receives or "finds" the Boson.
A fixed method of establishing the 4.5 month block needs to be defined. This can't be a fixed number because we can't predetermine when we will shift block delay times from 5.5 seconds to 3.5 etc.
The amount to be awarded should be based on the total amount of NRG transacted during that time. The algo here should create a disincentive for bad actors who just spam the network adding transactions to bump the reward.
The Boson reward is given to the public key.
Similar to "SATOSHIS" or "WEI" create float management.
Proof of Concept of gyp extensions
Candidates
Unify logging, use https://github.com/blockcollider/bcnode/tree/master/src/logger
- ~/.blockcollider
Seamlessly create, manage and collaborate on your GitHub issues directly from Asana, and vice versa.
Generate CHANGELOG.md from git commits
@mmpmm will provide transaction payload description / schema
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.