Status Update Release 1 of DERO Blockchain released.
DERO Project : Cryptonote + Smart contracts + Lightning fast transactions.
In the status update release 1, Following parts of cryptonote has been rewritten in golang.
At present, Golang DERO daemon can sync and verify blockchain with the existing DERO network.
For specific details of current DERO core implementation and capabilities, see below:
Cryptonight Hash: This is an ASIC resistant, memory-bound algorithm. This provides assurance that all miners are equal. ( No miner has any advantage over common miners).
Wire protocol (90% completed): This protocol is used to exchange data between 2 DERO daemon nodes. At this point, Go daemon can connect to C daemon and vice-versa, sync blockchain and exchange, already possible. Complete interoperability has been achieved. This has 3 sub protocols:
Levin Protocol: Bottom most layer, basically message framing.
P2P Protocol: Handshake exchange, P2P commands and timed synchronization.
CryptoNote Protocol: This layers controls exchange of blocks, transactions and blockchain itself.
Pederson Commitment: (Part of ring confidential transactions): Pederson commitment algorithm is a cryptographic primitive that allows user to commit to a chosen value while keeping it hidden to others. Pederson commitment is used to hide all amounts without revealing the actual amount. It is a homomorphic commitment scheme.
Borromean Signature: (Part of ring confidential transactions): Borromean Signatures are used to prove that the commitment has a specific value, without revealing the value itself.
Additive Homomorphic Encryption: Additive Homomorphic Encryption is used to prove that sum of encrypted Input transaction amounts is EQUAL to sum of encrypted output amounts. This is based on Homomorphic Pederson commitment scheme.
Multilayered Linkable Spontaneous Anonymous Group (MLSAG) Work-in-Progress: (Part of ring confidential transactions): MLSAG gives DERO untraceability and increases privacy and fungibility. MLSAG is a user controlled parameter ( Mixin) which the user can change to improve his privacy. Mixin of minimal amount is enforced and user cannot disable it.
Core-Consensus Protocol implemented: Consensus protocol serves 2 major purpose
Protects the system from adversaries and protects it from forking and tampering.
Next block in the chain is the one and only correct version of truth ( balances).
Proof-of-Work(PoW) algorithm: PoW part of core consensus protocol which is used to cryptographically prove that X amount of work has been done to successfully find a block. To deter use of specialized hardware, an ASIC resistant, memory bound cryptonight algorithm is used in DERO project.
Difficulty algorithm: Difficulty algorithm controls the system so as blocks are found roughly at the same speed, irrespective of the number and amount of mining power deployed.
Serialization/De-serialization of blocks: Capability to encode/decode/process blocks .
Serialization/De-serialization of transactions: Capability to encode/decode/process transactions.
Socks proxy: Socks proxy has been implemented and integrated within the daemon to decrease user identifiability and improve user anonymity.
Interactive daemon can print blocks, txs, even entire blockchain from within the daemon
status, diff, print_bc, print_block, print_tx and several other commands implemented
GO DERO Daemon has both mainnet, testnet support.
Tree-hash for transactions (based on keccak): This merkle root allows user to verify transactions as needed without adding transaction body to block header.
BOLT Database: DERO Blockchain uses BoltDB for future scalability and low latency reads.
Enhanced Reliability, Privacy, Security, Useability, Portabilty assured.
The daemon is only for limited testing and evaluation purposes only.
NOTE: DO NOT MIGRATE to this daemon. This is strictly for evaluation.
NOTE: Following limitations apply in the current golang version.
Go Daemon has hard-code seed node address.
RPC interface not exported
Build:In go workspace: go get -u github.com/deroproject/derosuite/…
Check bin folder for derod binary. Use golang-1.9 version minimum.