Simple blockchain implementation, in Java, WIP
This blockchain implementation has:
- Block: with number, parent block and list of transactions
- Transaction: send value from sender to receiver account
- Account: with balance and optional smart contract code
- Virtual Machine: to execute smart contracts
The world state keeps the account states. Each account has a balance and smart contract storage.
- Building a Blockchain: Introduction
- Building a Blockchain: Main Entities
- Building a Blockchain: Serialization
- Building a Blockchain: Key Value Stores
- Building a Blockchain: Subroutines in the Virtual Machine
- Building a Blockchain: Towards Beam Synchronization
- Building a Blockchain: Executing Smart Contracts
- Decoupling Storage from Execution in RSK Blockchain
- One Code Many Storages
- 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
- Signed transactions
- Numeric values in hexadecimal in JSON serialization
- Transaction receipts
- Log emit
- Update transaction pool with new block information
- Review incoming message processing (queue(s)?)
- Create/Call opcodes in virtual machine (WIP)
MIT