mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 11:17:28 +00:00 
			
		
		
		
	* point community pool lend proposals at fee pool * update community pool lend proposal tests * remove unused begin blocker * increase test coverage * fix x/community proposal comments
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package keeper
 | 
						|
 | 
						|
import (
 | 
						|
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						|
 | 
						|
	"github.com/kava-labs/kava/x/community/types"
 | 
						|
)
 | 
						|
 | 
						|
// HandleCommunityPoolLendDepositProposal is a handler for executing a passed community pool lend deposit proposal.
 | 
						|
func HandleCommunityPoolLendDepositProposal(ctx sdk.Context, k Keeper, p *types.CommunityPoolLendDepositProposal) error {
 | 
						|
	// move funds from community pool to x/community so hard position is held by this module.
 | 
						|
	err := k.distrKeeper.DistributeFromFeePool(ctx, p.Amount, k.moduleAddress)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	// deposit funds into hard
 | 
						|
	return k.hardKeeper.Deposit(ctx, k.moduleAddress, p.Amount)
 | 
						|
}
 | 
						|
 | 
						|
// HandleCommunityPoolLendWithdrawProposal is a handler for executing a passed community pool lend withdraw proposal.
 | 
						|
func HandleCommunityPoolLendWithdrawProposal(ctx sdk.Context, k Keeper, p *types.CommunityPoolLendWithdrawProposal) error {
 | 
						|
	// hard allows attempting to withdraw more funds than there is a deposit for.
 | 
						|
	// this means the amount that gets withdrawn will not necessarily match the amount set in the proposal.
 | 
						|
	// to calculate how much is withdrawn, compare this module's balance before & after withdraw.
 | 
						|
	balanceBefore := k.bankKeeper.GetAllBalances(ctx, k.moduleAddress)
 | 
						|
 | 
						|
	// withdraw funds from x/hard to this module account
 | 
						|
	err := k.hardKeeper.Withdraw(ctx, k.moduleAddress, p.Amount)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	balanceAfter := k.bankKeeper.GetAllBalances(ctx, k.moduleAddress)
 | 
						|
	totalWithdrawn := balanceAfter.Sub(balanceBefore)
 | 
						|
 | 
						|
	// send all withdrawn coins back to community pool
 | 
						|
	return k.distrKeeper.FundCommunityPool(ctx, totalWithdrawn, k.moduleAddress)
 | 
						|
}
 |