fip | title | status | type | author | created | updated |
---|---|---|---|---|---|---|
9 |
Allow voting and proxying without a FIO Address |
Final |
Functionality |
Pawel Mastalerz <[email protected]> |
2020-06-03 |
2020-06-08 |
This FIP enables token holders to vote or proxy without requiring them to have a registered FIO Address.
Modified actions:
Action | Endpoint | Description |
---|---|---|
voteproducer | vote_producer | FIO Address field can now be left blank. |
voteproxy | proxy_vote | FIO Address field can now be left blank. |
In order to make voting/proxying "free" to users to encourage them to vote/proxy, the voteproducer and voteproxy actions require FIO Address, as FIO Address is needed to allow payment with bundled transactions instead of tokens. However, it introduced the requirement that the token holder have a FIO Address in order to vote/proxy. As recommended in Issue 47 it makes sense to also allow voting/proxying even when token holder does not have a FIO Address.
voteproducer and voteproxy actions will be modified to allow FIO Address parameter to be empty. This will have the same effect as if the user passed in the FIO Address and had no remaining bundled transactions, meaning the user will be charged the vote_producer or proxy_vote fee respectively.
It should have been built this way to begin with, as vote_producer and proxy_vote are the only calls which allow bundled transactions, but do not actually require a FIO Address to execute.
Portions of the voteproducer and voteproxy actions of the fio.address::vote.cpp contract may have to be shifted and/or rewritten for this implementation to carry out the logic that supports an optional fio_address parameter.
Assertions that check the fio_address parameter must also allow for an empty string before checking for invalid input. If an empty string is provided, the logic pertaining to lookup an action to a fio_address must be excepted.
Any table lookups associated with valid action parameters and triggered assertions aside from fio_address will execute within their own code block.
Fees: Fee will be paid without any address lookup logic carried out if the parameter is not provided Bundle logic will still execute like before if valid fio_address is supplied The actor is the party paying the transaction fee. If a fio_address is supplied, then the owner of the fio_address must match the actor.
This feature was released in fio.contracts v2.2.0.
No impact, as there is no change to call structure other than making a required field allowed to be blank.
None