academic Distributed transaction processing A simple banking application that stores client balances across sharded clusters and allows both intra-shard and cross-shard transactions through the implementation of two-phase commit and Paxos protocols. Practical Byzantine Fault Tolerance PBFT consensus protocol implementation for a simple banking application that lets clients send and receive money despite the presence of malicious servers in the banking cluster. eGuard An eBPF-based tool for Linux to restrict certain actions by the user like creating files inside a given directory or executing a particular program. RISC-V processor A 5-stage pipelined RISC-V processor implemented in SystemVerilog supporting RV64IM instruction set personal