Understanding ZKsync: An Ethereum Layer-2 Solution