add snapshot rpc and change snapshot idgen

try the new github diff:)

1. add snapshot rpc
2. change the snapshot id generator to address spencer's feedback in last pr.