algorand:master ← EvanJRichard:evan/nonpart_txs
opened 07:01PM - 20 Aug 19 UTC
## Summary
This PR proposes to add the ability to mark an account as `not par…ticipating`/`excluded`/`nonparticipating`, per design discussed with @algoradam (which is why I've requested him as a reviewer).
A "become non-participating" transaction is a keyreg transaction that supplies no keys, as though it were a "go offline" transaction. However, in the "become non-participating" scenario, an additional bool flag, `nonparticipating`, is high. It is an error (enforced by `transaction.WellFormed`) to have a keyreg transaction that both supplies key information and has the `nonparticipating` flag high.
Once an account is non-participating, it can never exit that state. So, the work flow for making a new non-participating account would be: make a new account; fund the account; issue a become-nonparticipating transaction from that account.
## Test Plan
I added some tests (see PR: `transaction_test`, `keyreg_test`, `onlineStatusChange_test`). Additionally, using Travis suite to detect regressions in other tests, and `make test` passed on my machine. Further, I manually spun up a private network and marked some accounts as nonparticipating myself, using `goal`.
### Documentation concerns
Reviewers or drive-by readers: what documentation are you aware of that will need updating once this is in?
So far, I have: https://developer.algorand.org/docs/goal-account