Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

but that ought to run in the namespace Y, so B then transfers for (c <- y) { Q } to Y and removes it from its own state.


In both cases, the validators in Y need to receive enough messages from B that Y can be sure that B won't roll back the transferY needs B to be in a safe state to be sure that it can add the message to its state. B needs Y to be in a safe state to be sure that it can remove the message from its state. Here, "safe" means that perhaps not all validators in a namespace R know that R is committing to some action, but S can tell that there's no message that a validator in R could receive to cause a rollback.

Joins

Joins between names that are not in the same namespace is a type error.  If a process in the namespace B and a process in the namespace Y wish to race, then they should send messages to a process in the namespace B∨Y. 

If neither knows about the other, but a process wants to join messages from both, then there will have to be a forwarder process from B and Y independently to B∨Y, where the join takes place.  This does not, of course, match the semantics of a cross-namespace join!  A semantics-preserving translation would suffer from the transitive closure problem.

Casper contracts

Bonding, unbonding, slashing, and distributing rewards will be implemented on chain as "blessed" Rholang contracts.  The stuff that sends messages over the network will be implemented in scala and will communicate with the blessed contracts via the tuplespace.

Slashing

When a validator is slashed, every validator needs to know about it.  Suppose that validator b in region B is caught equivocating.  To slash b, we could use the top namespace in which everyone has to participate but where it need happen only once, or we could suggest a slashing block independently to each region.  If the latter, there may be a coalition in B that ignores the slashing block.  Is that rejection itself cause for slashing the validators in the coalition?

Problems

Validators getting to choose the region they belong to is a recipe for coalitions.  Can we fight the formation of coalitions or prevent them outright without opening up denial of service vectors?