Hey to everyone, today I would like to take a deep dive in to the Epic-Cash core software components - the hierarchy, purpose and overall role in our blockchain ecosystem. I will try to keep it simple and readable for everyone :)
What is Epic-Cash Core Software?
In simple words it is the software responsible for maintaining our blockchain and making sure that every transaction in ledger is legit. Our developer team is maintaining three core components:
- Server also known also as Node
- Mining Software
Core software available at epic.tech/downloads and GitHub is written in RUST programming language - performance and safety focused, especially safe with memory management language is a perfect tool for the job.
The first minimalistic implementation of Mimblewimble protocol was also written in RUST and published at the beginning of 2019 as GRIN project. Epic-Cash is using fork of that source code with significant changes to fulfil its purpose in whole EPICENTER ecosystem.
Official software is and always be open-source, signed with signatures. Everyone is welcome to contribute and review our code, but changes in core software are rather rare and made only when it is really needed.
Everything starts here — server is this unstoppable piece of code that once published and run will work forever. Well not entirely forever — will work until the very last user will destroy the very last copy of that blockchain.
It takes ONE person on the entire planet to keep it running! Let’s try to keep a worldwide banking infrastructure with just one machine that can be powered from USB and takes less than 3 GB HDD space :).
- Server is validating network transactions
This is key component of network decentralization — more nodes means network is secured better — just like that. Running your own node will bring benefits to you and to entire network, own server will give you guarantee that your transactions are private and you are not in danger of losing your assets by using 3rd party malicious services. Network will gain another guard that will validate data and share results with other nodes making network stronger against attack and corruption.
- Server is storing and managing blockchain data.
Each running server instance have complete blockchain database copy, it is constantly validated against other copies to make sure that network is having consensus.
Whenever you use your wallet it must connect to node(local or public) and ask for latest update of chain state, i.e. what is the current height, what is the balance for this particular keys and so on.
- Server is managing miners
In order to start mining first you have to connect your software to node (local or public) and not only get the current chain state but also instructions about which of our proof of work algorithm is now used to secure network. With multi-algorithm approach it is crucial to ensure that instructions are clear and same for every miner in the network.
- Server is managing peer-to-peer connection
Servers are talking to each other all the time to ensure that network is always using the latest and right data.
Server is the heart of our blockchain, one running instance is enough to keep network alive, but that would be very empty and boring place - we need other users to make transactions, and transactions are done with wallets.
Fundamental tool to interact with blockchain - there is no point of having blockchain without transactions and there is no transactions without wallets.
- Wallet is your window to blockchain
Reading your balance or sending transactions is done via wallet interface but the truth is it is only a tool to manage your coins, coins are not really there! EPIC - same as Bitcoin or any other crypto - is always stored only in one place - blockchain itself. You can imagine huge pile of gold that is not moving anywhere, and transactions are only ownership certificates for particular fraction of that pile.
- Wallet is managing your keys
In order to manage account balances blockchain is using private and public keys, but it is not generating them. This is job for wallet — your key manager. Wallet is designed to use very specific standard to create your unique seed - displayed in form of 12 or 24 words known as mnemonic seed-phrase. This standard is also recognized by nodes, once wallet is connecting to the server it must show proof of ownership (private key) in order to display or spend balance. Unlike in other popular blockchains our edger is not transparent, that means no one can see your wallet balance or other sensitive data. Only seed private key (or seed phrase) owner have access to that information.
Transaction is essentially a transfer of EPIC ownership from one private key to the other with almost zero extra data leak - Mimblewimble protocol is there to secure both parties and ensure that transactions are legit.
- Wallet will send and receive your transactions
Last but not least - wallet is used to manage our assets, display history and receive transactions from network. There is multiple ways to send and receive transactions in our network, transaction file method gives most freedom and security, parties can literally generate and exchange text files in any preferred way, i.e. online messengers or USB stick to trade their EPIC.
Wallet connected to the server can interact with blockchain, i.e. send and receive transactions. But how do we get EPIC coins in the first place? We could buy them on exchange or from other user, but why not use full potential of blockchain and try to earn it for securing our network? Literally add coins to your wallet in exchange for used electricity. Although next component is not designed to be used by everyone (requires a little more tech experience), it is as important for the whole project as previous two components - lets discuss mining!
The Proof of Work consensus mechanism in Epic-Cash was designed especially to unlock one feature: flexibility. Tech world is changing super fast and new cutting edge technologies are released very often. Option to change our PoW algorithms efficiently makes us us prepared for changes and ready do adapt quickly.
- Mining is securing our network
Its job is to make sure there are no extra coins added to the network except those coined through our PoW consensus mechanism. The more miners is connected to our blockchain, the harder is to compromise network. The more transaction is done on chain, the more fees is going to be distributed for miners.
- Mining Epic-Cash is for everyone
Epic-Cash is using multi-algorithm PoW to make sure everyone can participate in securing our network — not only big farms like in older projects, you can start mining right now on any medium class PC or better laptops. Keep in mind that with ‘casual’ mining electricity cost of earning coins is similar to price on exchanges — you have to invest to scale your profits.
Mining is the last core component of the Epic-Cash blockchain. Although we need all three equally to create a fully functional network, there is hierarchy:
- Node does not requires anything else to work
- Wallet needs node in order to work
- Miner needs wallet and node in order to work
It is expected to have growing number of applications developed on our network. Most of applications will be built on top of our core components, adding next layers to just improve user experience, core software fundamental functions and security will be kept in that case. Good example is our GUI Wallet developed by @poolboy51.
We can expect also software written from scratch in different programming languages. This may bring some security concerns and should be always properly reviewed and audited before releasing. Remember to always check source of software you are planning to use to interact with the blockchain, you can always ask for help on our Telegram live support : @EpicCashHelpDesk.