DepChain is a permissioned blockchain system implementing the Byzantine Read/Write Epoch Consensus algorithm, designed to provide high dependability guarantees. The system tolerates up to f Byzantine failures in a 3f+1 node configuration.
- Byzantine Fault Tolerant consensus
- Permissioned blockchain with static membership
- Strong cryptographic security with digital signatures
- Smart contract support with ERC-20 token implementation
- Blacklist functionality for regulatory compliance
- Java JDK 11+
- Maven 3.6+
make buildGenerate key pairs for blockchain members:
make keys # Generates 5 key pairs by default
make keys N=7 # Generate custom number of key pairsKeys are stored in src/main/java/pt/tecnico/ulisboa/keys/.
make testThis runs tests for authenticated perfect links and solidity contracts, ensuring these two components work correctly independently of the rest of the code. Tests are located in /depchain/src/test/java/pt/tecnico/ulisboa/. Go to the test files to see what exactly is being tested.
make consensusThis command:
- Starts 4 blockchain servers in the background
- Launches an interactive client (ID: -1)
- This client is the owner of IST tokens with control over the blacklist and the initial supply and can be used to run the commands displayed in the terminal.
To test multi-client transactions:
make clientThis launches a second client (ID: -2) in a separate terminal that automatically connects to the running network.
The system includes two primary smart contracts:
- ISTCoin: An ERC-20 token with custom transfer rules
- Blacklist: Security contract for access control
Under the /depchain/src/main/java/pt/tecnico/ulisboa/scripts/ directory there are a bunch of scripts we used to test byzantine behaviour.
For detailed implementation information, please refer to the accompanying project report. This README focuses on setup and execution instructions.