Assumption For this checkoff, we are going to assume that each table somehow has a copy of all the nodes in the system (this assumption is required to populate the finger tables as the nodes are "spawned" simultaneously and we do not have a mechanism to handle node entering and leaving the system).
functions:
- initNode in a non-distributed way
- populateKeys (without predecessor)
- populatefTable (which requires a slice of all the nodes in the system)
- main
- populateFingerTable(n)
- n.findSuccessor(k) (this needs to be API-fied)
- closestPrecedingNode (don't need to touch it)
- initNode in a distributed way
- add predecessor to populateKeys
- API-fy n.findSuccessor(k)
- integrate this with sean's grpc code
- prettify the output on the console
- add more comments to the functions