assert(payout)
assert(amount <= contract.balance)
board_distributions = amount * config.board_ratio/100
member_distributions = amount * (100 - config.board_ratio)/100
for (member in members)
if (member.balance > 0)
member_amount = member.balance/config.total_shares * member_distributions
transfer(member, member_amount)
if (has_board_seat(member))
board_member = board.get(member)
board_amount = board_member.balance/config.total_board * board_distributions
transfer(member, board_amount)
The contract should have the following tables
board (could be eosio.token with 21 tokens minted)
members
config
There should be the following actions
register_board(user, seats)
register_member(user, ratio)
add_contribution (user, amount_hours)
start_payout
payout_amount (amount)
end_payout