Bitcoin is the first decentralized digital currency that allows peer-to-peer transfers without any intermediaries such as banks, governments, agents, or brokers, using the underlying technology of blockchain.
As a currency with a maximum supply of 21 million coins, bitcoin is a finite resource, a bit like gold. Like any finite resource, the value of bitcoin is proportional to its scarcity; an inflated supply leads to reduced value. Because of this, circulating supply needs to be managed.
if no one is in control of bitcoin, how can circulation be managed?
Nakamoto(founder) was aware of this issue when he (or possibly she) first developed bitcoin, so he implemented a protocol called proof-of-work (PoW), which would allow computers from across the world to contribute to the operation of the bitcoin network.
As a reward for these contributions, a predetermined rate of bitcoins would be minted and sent to these computers fro their efforts. Thus, a new type of mining was born, not of precious real-world minerals, but of digital representations of value, unearthed not by shovels, but by central processing units. Proof-of-work (PoW) sits at the heart of how bitcoin mining works.
Without a centralised decision-making body, how can the blockchain know that the miners are acting properly? The truth is, it cannot. Bitcoin has a fault tolerance of 50%, meaning that as long as the majority of miners are acting in good faith, the blockchain will continue to operate. The Byzantine Fault Tolerance (BFT) of any blockchain system does not just protect against malicious behaviour. If a cluster of mining nodes suddenly goes offline, or is corrupted in some other way, BFT safeguards the wider network.
Why Video Cards are used in mining not CPU?
standard GPU, like a Radeon HD 5970, clocked processing speeds of executing 3,200 32-bit instructions per clock, which was 800 times more than the speed of a CPU that executed only 4 32-bit instructions per clock.
To understand this topic, one needs first to understand following terms:
A ledger is a book or collection of accounts in which account transactions are recorded. Each account has an opening or carry-forward balance, and would record each transaction as either a debit or credit in separate columns, and the ending or closing balance.
The distributed ledger database is spread across several nodes (devices) on a peer-to-peer network, where each replicates and saves an identical copy of the ledger and updates itself independently. The primary advantage is the lack of central authority. When a ledger update happens, each node constructs the new transaction, and then the nodes vote by consensus algorithm on which copy is correct. Once a consensus has been determined, all the other nodes update themselves with the new, correct copy of the ledger.[4][5] Security is accomplished through cryptographic keys and signatures.
A consensus algorithm is a process in computer science used to achieve agreement on a single data value among distributed processes or systems. Consensus algorithms are designed to achieve reliability in a network involving multiple unreliable nodes
Byzantine Failure — Why Blockchain Development is Difficult
Byzantine Fault Tolerance
further details:
here is the source code with some list of good Readme list.
https://github.com/ajlopez/BlockchainJ
- SpongyCastle
- BouncyCastle Java
- RLP
- RLP Tests
- How to Build Your Own Blockchain Part 3 — Writing Nodes that Mine and Talk
- Create a simple HTTP Web Server in Java
- Function Pointers in Java
- A Simple Java TCP Server and TCP Client
- BlockBench: A Framework for Analyzing Private Blockchains
- Pantheon: An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client
- Add timer metrics for EVM operations #551
- Do a Simple HTTP Request in Java
- Model 0: low-level defence measures for Sybil attacks in P2P networks
- Introducing Hobbits: A lightweight wire protocol for ETH 2.0
- Ethereum 2.0’s Nodes Need to Talk – A Solution Is ‘Hobbits’
- Wisps: The Magical World of Create2
- Quantifying Immutability
- Empirically Analyzing Ethereum’s Gas Mechanism
- Blockchain Scalability: Do Layer I Solutions Hold the Key?
- Overview of Layer 2 approaches: Plasma, State Channels, Side Chains, Roll Ups
- Blockchain Consensus: The Past, Present, and Future
- Warp Sync
- What is a light client and why you should care?
- Transactions Per Second in Permissioned Blockchains — Does It Even Matter?
- Vac modular peer-to-peer messaging stack
- Pantheon Enterprise Ethereum Client
- What Comprises an Ethereum Fullnode Implementation?
- Announcing Hyperledger Besu
- Fast Ethereum Virtual Machine implementation
- Synchrony, Asynchrony and Partial synchrony
- How to implement a most-recently-used cache
- EIP 2124, Fork identifier for chain compatibility checks
- Special-purpose light clients for old receipts and transactions
- A Primer on Ethereum Blockchain Light Clients
- Byzantine Failure — Why Blockchain Development is Difficult
- How does Ethereum work, anyway?
- Understanding Ethereum’s P2P Network
- Guidelines for low-level cryptography software
- Breaking down the differences between PoW and PoS
- Mastering The Fundamentals of Ethereum (For New Blockchain Devs) Part III — Wallets, Keys, And Accounts
- Byzantine Fault Tolerance in a nutshell
- The 1.x Files: The State of Stateless Ethereum
- Stateless Ethereum: Binary Tries Experiment
- Protocol changes to bound witness size
- Developing the EigenTrust Algorithm and Determining Authenticity Online
- The EigenTrust Algorithm for Reputation Management in P2P Networks
- State Provider Models in Ethereum 2.0
- With fraud-proof-free data availability proofs, we can have scalable data chains without committees
- Requirements for Ethereum Private Sidechains
- Ren Project
- Interledger: How to Interconnect All Blockchains and Value Networks
- Transaction Announcements and Retrievals
- A-to-Z of Blockchain Consensus
- Filecoin Specification
- Archive Node
- Understanding Merkle pollards
- Kadcast: A Structured Approach to Broadcast in Blockchain Networks
- Semi-Stateless Initial Sync Experiment
- Ethereum does it too! A deep dive into DHT
- DHT: Attacks and Defenses
- Private Ethereum by Example
- What is Ethereum’s Uncle Rate and Why Does It Matter?
- Ethereum Miner Test — Results
- Uncle Mining, an Ethereum Consensus Protocol Flaw
- Does anyone understand the behavior of abi.encodePacked()?
- “Merry Go Round” sync
- Understanding Merkle pollards
- EIP 2464: eth/65: transaction announcements and retrievals
- Survey of proposals to reduce block witness size
- Understanding sparse Merkle multiproofs
- Understanding Merkle pollards
- Modified Merkle Patricia Trie — How Ethereum saves a state
- Implementing Merkle Tree and Patricia Trie
- Berty (P2P) is opening its code!
- Kadcast: A Structured Approach to Broadcast in Blockchain Networks
- Why are transaction tries in Ethereum not plain Merkle Tries?
- Replicate Ethereum’s mainnet in a development environment with Ganache’s forking feature
- Awesome Chaos Engineering
- Intro to Beam Sync
- An Ethereum Storage Decode tool
- EVM Bytecode Merklization
- Data from the Ethereum stateless prototype
- State Rent Rough Proposal
- Ethereum Series — Understanding Nonce
- What are the -Xms and -Xmx parameters when starting JVM?
- Java Xmx and Various Memory Management Options in Java
- Account Abstraction, Stateless Mining Eth1.x/Eth 2 Implementation, Rationale Document
- Testground: A platform for testing, benchmarking, and simulating distributed and p2p systems at scale
- UTXO vs Account/Balance Model
- History of Ethereum Hard Forks
- What is a light client and why you should care?
- The 1.x Files: A Primer for the Witness Specification
- The hard DiSC of the world computer
- Contra-*: Mechanisms for Countering Spam Attacks on Blockchain’s Memory Pools
- What’s Ahead for the OpenEthereum Client
- Geth Pink Marble (v1.9.14)
- Free the Birds: the Case for Tokenized Gas
- Mjolnir: Tooling for BAT Apollo
- Getting Synced - Wiki Parity Tech Documentation
- Notes on syncing Ethereum nodes
- Why do we need both nonce and mixhash values in a block?
- Snap Synchronization
- Does installing geth download the entire blockchain?
- Ethereum Snapshot Protocol (SNAP)
- Gas and circuit constraint benchmarks of binary and quinary incremental Merkle trees using the Poseidon hash function
- Optimizing sparse Merkle trees
- Ethereum 2 Specs: Merkle proofs
- Some quick numbers on code merkelization
- Open problem: improving stealth addresses Cryptography
- Towards the first release of Turbo-geth
- Analysis of EIP-1559
- Analysis of EIP-2593 (Escalator)
- Binary Trie Format
- A World Without (block) Limits!
- ReGenesis Explained
- Encrypted Blockchain Databases
- Simpler Ethereum sync: Major/minor state snapshots, blockchain files, receipt files
- TurboGeth Staged Sync
- EIP-1052: EXTCODEHASH opcode
- What is the EXTCODEHASH?
- Ethereum Virtual Machine Opcodes
- Ethereum Classic Simplicity
- evmone is a C++ implementation of the Ethereum Virtual Machine (EVM)
- EVM384 – Can we do Fast Crypto in EVM?
- EIP-1087: Net gas metering for SSTORE operations
- EIP-1283: Net gas metering for SSTORE without dirty maps
- Gas cost increases for state access opcodes
- Parsing JSON is a Minefield
- Simple Subroutines for the EVM
- Ethereum Cat Herders Update #23
- Ethereum Wiki
- Understanding Ethereum by studying the source code
- Everything You Ever Wanted to Know About Events and Logs on Ethereum
- Demystifying libp2p Gossipsub: A Scalable and Extensible p2p Gossip Protocol by Raúl Kripalani
- Broken Metre: Attacking Resource Metering in EVM
- EIP-2929: Gas cost increases for state access opcodes
- Ethereum scalability issues exposed as high gas fees stall DeFi boom
- Introduction to Nethermind Discovery Protocol
- Gas cost for calling precompiles
- EIP-2972: Wrapped Legacy Transactions
- Finite field arithmetic
- State of block header sync in light clients
- EIP-3014: Create
eth_symbol
method for JSON-RPC - Structure of a binary state tree — part 1
- What is a light client and why you should care?
- Establishing peer-to-peer connections with Jami
- Authenticated Dictionaries with Cross-Incremental Proof (Dis)aggregation
- Reducing Round Complexity of Byzantine Broadcast
- The Ethereum Virtual Machine
- Geth snap sync results (only state) against 3 serving nodes
- EIP-3091: Block Explorer API Routes
- Optimal chunking size for code merklization
- A Tale of Two Pricing Schemes
- Why Proof of Stake (Nov 2020)
- [Towards formal semantics of the beacon chain’s pyspec]
- Talk: Vac, Waku v2 and Ethereum Messaging
- Oskar Thoren | Vac, Waku v2 and Ethereum Messaging
- EVM Istanbul storage pricing
- A more gas-efficient upgradeable proxy by not using storage
- Delegatecall return values solidity 5.0
- Instant Cross-L2 Transfers are Now on Testnet!
- Blockchain reward sharing - a comparative systematization from first principles
- Working with Strings in Solidity
- Creating a blockchain with less than 100 code lines
- Transaction Fee Mechanism Design for the Ethereum Blockchain: An Economic Analysis of EIP-1559
- The Burden of Proof(s): Code Merkleization
- List of EVM features potentially worth removing
- Ethereum JSON RPC Hex Encoding
- Why it's so important to go stateless
- Verkle trie for Eth1 state
- Ethereum State Scale Management Proposals (Part 1)
- Can we do Fast Crypto in EVM?
- EIP Draft: Replace alt_bn128 Precompiles With EVM Bytecode
- EIP Draft: EVM384 and Friends
- Can a contract fetch the global block gas limit?
- EIP-1884: Repricing for trie-size-dependent opcodes
- Dodging a bullet: Ethereum State Problems
- EIP-3584: Block Access List
Comments
Post a Comment