How does votes acquisition work?
Last updated
Last updated
LobbyFi empowers users to participate in governance proposals through two distinct mechanisms: Instant Buys and Community Auctions.
Instant buys offer a direct way to acquire votes. Available for all vote types, instant buys are priced as a fraction of the underlying ask amount of the proposal. E.g., if a grant of $100k is being requested, LobbyFi will price at, e.g., 1% of that (this percentage is for overview only, the actual fraction can be different from proposal to proposal), so $1k. It is important to mention that the decision on the pricing is being met by the team after an in-depth examination of each individual proposal.
How it Works:
Pricing: The instant buy price is pre-determined and displayed for each proposal.
Execution:
On-Chain Votes: The vote purchase and execution occur within a single, atomic transaction on the blockchain. This guarantees a secure and transparent process.
Off-Chain Votes (e.g., Snapshot): When dealing with off-chain platforms like Snapshot, your instant buy triggers an automated agent. This agent securely signs and broadcasts your vote to Snapshot, ensuring it's officially recorded.
Example: Imagine a proposal with an instant buy price of 0.1 ETH. By paying 0.1 ETH, you instantly acquire the whole voting power that is delegated to LobbyFi, to vote for your support of choice on a specific proposal.
Auctions are designed for proposals that benefit from broader community participation. This model establishes two distinct pools: one for votes in favor ("For") and one against ("Against") the proposal. The auction for a particular proposal can be explicitly turned off, which would change the default behaviour of LobbyFi. The decision whether the auction shall be on or not is also met by the team. The logic the team follows is mentioned in point 3 of this page.
How it Works:
Bidding: Users can contribute ETH to either the "For" or "Against" pool. A minimum bid amount is enforced. Multiple users can contribute to the same pool.
Auction Outcome: The pool that accumulates the most ETH by the auction's end is declared the winner, given that the threshold (the reserve price is reached).
Reserve Price: The pool is to reach a threshold in order to get LobbyFi to vote for a particular support option - this ensures that the voting power is not being sold for too little. Examples below show (1) a proposal where the threshold was met (with 'for' as the winning option) and (2) a proposal where the threshold was not met - so that LobbyFi voted 'abstain' on this proposal. The threshold is set globally in the smart contract at 10% of the respective instant buy price of the proposal.
LobbyFi's Vote: LobbyFi then casts its votes in alignment with the auction outcome.
On-Chain vs. Off-Chain: Similar to instant buys, on-chain auction votes are executed directly on the blockchain, while off-chain votes are relayed to the appropriate platform (e.g., Snapshot) via an automated agent.
Example: A proposal has an auction period of 24 hours. Users bid on the "For" and "Against" pools. At the end of the auction, the "For" pool has accumulated 10 ETH, and the "Against" pool has accumulated 5 ETH. The threshold is at 3 ETH. LobbyFi will cast its vote in favor of the proposal.
Example 2: At the end of the auction, the "For" pool has accumulated 1 ETH, and the "Against" pool has accumulated 2 ETH. The threshold is at 3 ETH. LobbyFi will cast an abstain vote on the proposal.
In certain situations, the auction model might be deactivated. This is typical for proposals primarily benefiting individual parties rather than the broader community. If the individual profiting from the proposal fails to acquire the necessary votes through instant buys, LobbyFi automatically votes against the proposal. This mechanism effectively doubles the weight of LobbyFi's delegated voting power in such cases.
Example: A proposal aims to transfer a retrospective airdrop that benefits a single wallet. The auction is deactivated. The individual doesn't purchase enough votes via instant buy. LobbyFi automatically votes against the proposal.
The core logic for LobbyFi's vote acquisition resides in its smart contract. Here are some key functions:
instantBuy()
: Executes an instant buy, transferring the required funds and casting the vote.
placeBid()
: Allows users to place bids in the auction pools.
withdrawBids()
: Enables users to withdraw bids from auctions they didn't win.
closeOffer()
: Closes the voting period for a proposal, calls _finaliseAuction() if auction is on.
_finaliseAuction()
: Determines the winning pool in an auction and executes LobbyFi's vote.
_executeOnchainVote()
: Executes on-chain votes.
How are rewards distributed?
The rewards are being made available to the users directly after the proposal is purchase or the auction is closed. The rewards are distributed correspondingly to the voting power that each user was delegating as a fraction of total voting power LobbyFi had at the relevant snapshot.
What are the fees associated with instant buys and auctions?
LobbyFi keeps a fee which directly goes to the treasury address when the instant buy function is called or when the proposal is closed. The current fee can be looked up in the smart contract. It is important to understand that LobbyFi has to charge a substantial fee to prevent possible governance attacks.
What happens to the ETH in the losing auction pool?
Users may withdraw the bids that did not end up going to the winning option (either because the other pool was larger or because the threshold was not me) by calling thewithdrawBids()
function on the implementation smart contract.