Layer 2 Solutions: Scaling Ethereum and Beyond