Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 2.76 KB

fip-0009.md

File metadata and controls

51 lines (38 loc) · 2.76 KB
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

Abstract

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.

Motivation

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.

Specification

Changes to existing actions

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.

Rationale

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.

Implementation

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.

Release information

This feature was released in fio.contracts v2.2.0.

Backwards Compatibility

No impact, as there is no change to call structure other than making a required field allowed to be blank.

Future considerations

None