A Deep Dive into Ethereum Layer-2 Scaling Solutions