npm install
cd ./financial
npm install
node api.js
Download the DNA SIGNING TOOL and the DNA WALLET GENERATOR below to get started
THE DNA PROTOCOL IS IN CONSTANT DEVELOPMENT MAY HAVE SOME SECURITY PROBLEMS AND ERRORS PLEASE TEST THE DNA PROTOCOL AND OPEN AN ISSUE IF YOU HAVE ANY PROBLEM
The DNA PROTOCOL is an alternative to blockchain technology in finance. The DNA PROTOCOL aims to make transactions in a faster way than on the blockchain, cheaper than on the blockchain and secure as on the blockchain, in other words it is BLOCKCHAIN 2.0. The DNA PROTOCOL, generates the coins when making transactions, for each validated transaction (Explained below) 0.4 coins will be generated
The DNA PROTOCOL works inspired by DNA, that does not mean that the process that occurs in the DNA PROTOCOL is a process that emulates how DNA works correctly. The DNA PROTOCOL requires three modules to function.
- Encoder
- Decoder
- Validator
And needs a core component to stay secure: THE CHAIN HASH
When you are going to start your node you need to paste your DNA Wallet address in the user field in ./financial/network.js, also you need to set the root nodes for your node to download the chain data.
The encoder encodes the transaction as a "DNA sequence" and generates the sequence with the matching "nucleotide" to mantain the transaction secure (security sequence or strand)
The decoder decodes all the transactions in a strand and return an array with the transactions in the following format
Validates the transaction by comparing the security sequence and the transaction sequence, if the length is the same and each nucleotide in the transaction sequence matches with its corresponding nucleotide in the security sequence the transaction is valid
The Chain Hash is the SHA256 hash of all the data stored on the chain, this component is the principal component that maintains the network secure against attackers
The Chain Hash is the identifier of the network, every single node with the same hash will be sinchronyzed and will belong to the same network as the others.
Suppose we have three nodes Alice, Bob, and Jacob. Initially, Bob, Alice and Jacob will have the same string hash, for example: 2. Alice wants to insert a malicious transaction and modifies the source code of her distribution to avoid consensus validation (if the consesus does not approve the transaction, it will insert from anyway), when Alice inserts the malicious transaction into her chain and Bob and Jacob don't, Alice will have a completely different chain hash, say 21, now Alice will belong to another network. The next time Alice tries to insert a transaction with Jacob and Bob as validators, they will not insert the transaction into their chains because Alice's chain hash is not the same as Jacobs and Bobs. Resuming Alice will isolate herself in her own malicious network
- Validate the transaction locally, if the transaction is valid
- Broadcast it to another random nodes, if the majority of the nodes approves the transaction, this will be inserted in all the nodes
- Validates the transaction signature
- Check if the emitter has the required balance to send the transaction
- Check if the transaction is valid (security and transaction strand validation)
- Check if the nodes are in the same network (same Chain Hash)
You can modify the source code and run your own network, to generate the first coin you need to make a transaction of 0 value, this will generate the first 0.4 coins and give them to the validator node, then you can start transacting, foreach transaction validated nw coins will be generated