Practical Large-Scale Distributed Key Generation