Retroactive Funding Vote Executor
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Retroactive Funding Vote Executor is a DAO tool that enables community members to vote on retroactive funding proposals and execute the allocation of funds to projects based on their past impact. It reads the retroactive funding contract address, project proposals and impact metrics, voter eligibility and voting power, vote tally per project, funding allocation parameters, voting period details, voter participation history, account nonce, gas estimates for voting and execution, and previous execution records. The tool then guides voters through casting their vote on funding proposals, recording the vote on-chain, updating the vote tally, executing the funding allocation after the vote closes, and allocating funds to approved projects.
HOW TO USE
Connect your wallet via the built-in connector. Select the network where the retroactive funding contract is deployed. Enter the funding contract address, the project ID you wish to vote on, your vote choice (For or Against), and the payment token address (use address(0) for native token). The tool will read on-chain data and display a preview including: funding contract, project ID, your vote, payment token, voter eligibility, voting power, project list with vote tallies and impact metrics, voting period, and estimated gas. Review all details carefully. Click "cast vote" to submit your vote. The tool will guide you through two steps: casting the vote and recording the tally.
TECHNICAL MECHANISM
The tool uses ethers.js v5.7.2 to interact with the retroactive funding contract. It reads project proposals using `getProposal(projectId)` which returns the project name, impact metrics, and requested amount. Impact metrics are read via `getImpactMetrics(projectId)` which returns the measurable outcomes of the project. Voter eligibility is checked via `isEligibleVoter(voter)` which verifies membership or participation requirements. Voting power is read using `getVotingPower(voter)` which returns the weight of the voter's vote. Vote tally is read using `getVoteTally(projectId)` which returns the number of for and against votes. Voting period parameters are read via `getVotingPeriod()` which returns start and end times. Voter participation history is scanned using `eth_getLogs` for `VoteCast` events, with adaptive chunking (halving chunk size on failure) to handle different RPC limits—the tool walks backward from the current block and continues even if some ranges are rejected. The vote transaction calls `castVote(projectId, support)` on the contract, where support is true for For and false for Against. After the voting period ends, the tool can execute the funding allocation by calling `executeFunding()` which allocates funds to the approved projects. Gas estimates are calculated using `estimateGas` with EIP-1559 fee data from `feeData`. All transactions are built with EIP-1559 fee data, and the tool uses `effectiveGasPrice` from receipts for accurate cost accounting.
WHAT IT CANNOT SEE
This tool cannot verify that project impact metrics are accurate—it reads only on-chain data. It cannot detect if voters are misrepresenting their preferences. It cannot guarantee that funding allocation results are fair. It cannot prevent front-running of votes. It cannot validate that project impact is accurately measured. It cannot detect if the retroactive funding contract has been modified. It cannot ensure that voter eligibility is correctly enforced. It cannot verify that project execution is enforced off-chain.
PLEASE NOTE
This tool is EVM-only and supports Ethereum, Polygon, BNB Chain, Arbitrum, Optimism, and Avalanche. Vote transactions are signed by the connected wallet, and the user pays gas fees. Retroactive funding rewards past impact—ensure you understand the projects and their impact before voting. The tool does not store or transmit any voting data.