ournode's People
ournode's Issues
Check difficulty changes
Verify changes in difficulty match the consensus algorithm
Add an rpc interface
Let the node manager request data locally like blocks, TXs, UTXOs, mempool...
Keep better list of peers
Discarding unresponsive peers
Prioritize most responsive ones
Organize a log scheme
At least have
- timestamps
- severity (debug/info/warning/error/fatal/config)
Conf/cmd line options
Some restrictions seem arbitrary and could be disabled while still having a compatible full node:
- Enable minimum fee
- Restrict TX's output to standard forms
Reorder chains to prioritize longest chain
In case of fork, make the "most work" chain the root chain.
Reflect changes onto persistent memory.
Calculate the UTXO set
Keep it in persistent memory and index it by TXID.
Check tx input vs output amounts
Verify that total output amounts <= total input amounts
Check coinbase tx reward
Check total fees and reward against halvings
Write blockchain to disk
- Separate folders for mainnet/testnet3/etc
- Keep files below 4GiB
- Keep full blocks, can be serialized network-like
- Index blocks by hashes
- Index blocks by height
Check TX's nLockTime
Check TXs
In blocks and mempool:
- minimum fee
- inputs are unspent
Check TX script
Ok this is a big one, let's break this down into:
- Being able to identify and check a P2PK script
- Being able to identify and check a P2PKH script
- Being able to identify and check a P2PSH script
- Being able to identify and check a P2WPKH script
- Being able to identify and check a P2WSH script
- Being able to check any signature type
Answer getaddr, getheaders, getblocks, getdata
Behave like a decent full node and provide the data.
Support SPV filtering
Answer filterload, filteradd, filterclear, merkleblock messages.
mempool
Keep and index unconfirmed TXs received from peers.
Check block hash agains difficulty
Verify block hash is below difficulty
Enable pruning
- Blocks
- spend TXOs
- UTXO set
- mempool (not keeping one)
Command line option to choose network
Choose config file according to the folder chosen
Select genesis TX accordingly
Choose algorithms specific to the chain (notably difficulty)
Keep blockchain updater from starving
One fiber downloads the list of blocks with getblocks
- inv
messages.
Sometimes it stops for some reason. Maybe the peer stops responding.
As a consequence, the fibers downloading the missing blocks stop.
Network traffic statistics
Keep and show, per peer and total:
- total bytes sent and rcvd
- current bytes/bits per second
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.