The protocol defines a voting mechanism to dynamically add new signers and remove existing ones. In Geth this can be controlled via the clique.propose(address, authorized)
method (clique_propose
for remote RPC calls).
To authorize a new signer, existing ones can propose it via clique.propose("0x...", true)
. When more than half the signers proposed it, the authorization comes into effect immediately and the new account can start signing blocks.
Similarly, existing signers can propose deauthorizing existing ones via clique.propose("0x...", false)
. Again if half + 1 signers deauthorize a signer, it is immediately removed from the list and blocks minted by it are rejected from that point onward.
The protocol defines that the block reward is zero (and similarly there can't be any uncles). The block and uncle rewards are a subsidy for the effort wasted on PoW. Since Clique is based on PoA, there's zero cost to minting a block, so there shouldn't be any "reward" for doing it either.
Running transactions of course may incur a tiny processing time, but the sealer does get the transaction fees in exchange, so that should cover it.
All in all however note, that PoA is meant for more of a collaborative environments where miners don't try to race each other, rather attempt to play together for a common goal of keeping the network ticking.
clique_propose
or just a code snippet to understand the code??