Skip to content

Commit

Permalink
feat: claim bgt by pool
Browse files Browse the repository at this point in the history
  • Loading branch information
tiennampham23 committed Apr 21, 2024
1 parent bb1fad1 commit c86c575
Show file tree
Hide file tree
Showing 6 changed files with 1,284 additions and 9 deletions.
18 changes: 10 additions & 8 deletions pkg/dapp/bex/bex.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ import (
)

var (
WBear = common.HexToAddress("0x5806E416dA447b267cEA759358cF22Cc41FAE80F")
Honey = common.HexToAddress("0x7EeCA4205fF31f947EdBd49195a7A88E6A91161B")
Bear = common.HexToAddress("0x0000000000000000000000000000000000000000")
Erc20ModuleContract = common.HexToAddress("0x0000000000000000000000000000000000696969")
bexABI, _ = BexGeneratedMetaData.GetAbi()
batchSwapKind uint8 = 0
ApproveMax, _ = new(big.Int).SetString("57896044618658097711785492504343953926634992332820282019728792003956564819967", 10)
SwapContractAddress = common.HexToAddress("0x0d5862FDbdd12490f9b4De54c236cff63B038074")
WBear = common.HexToAddress("0x5806E416dA447b267cEA759358cF22Cc41FAE80F")
Honey = common.HexToAddress("0x7EeCA4205fF31f947EdBd49195a7A88E6A91161B")
Bear = common.HexToAddress("0x0000000000000000000000000000000000000000")
Erc20ModuleContract = common.HexToAddress("0x0000000000000000000000000000000000696969")
bexABI, _ = BexGeneratedMetaData.GetAbi()
batchSwapKind uint8 = 0
ApproveMax, _ = new(big.Int).SetString("57896044618658097711785492504343953926634992332820282019728792003956564819967", 10)
SwapContractAddress = common.HexToAddress("0x0d5862FDbdd12490f9b4De54c236cff63B038074")
RewardModuleContract = common.HexToAddress("0x55684e2cA2bace0aDc512C1AFF880b15b8eA7214")
MinRewardAmountToClaim = new(big.Int).SetInt64(0)
)

var (
Expand Down
81 changes: 81 additions & 0 deletions pkg/dapp/bex/claim_bgt.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package bex

import (
"crypto/ecdsa"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/tiennampham23/berachain-airdrop/pkg/log"
"github.com/tiennampham23/berachain-airdrop/pkg/utilties/eth"
)

var (
ParsedRewardModuleABI, _ = RewardModuleMetaData.GetAbi()
)

func WithdrawAllDepositorRewards(
c *ethclient.Client,
privateKey *ecdsa.PrivateKey,
poolAddress common.Address,
) (*types.Transaction, error) {
//coins, err := CheckBGT(c, privateKey, poolAddress)
//if err != nil {
// return nil, err
//}
//canClaimFunc := func(coin CosmosCoin) bool {
// return coin.Amount.Cmp(MinRewardAmountToClaim) > 0
//}
//
//canClaim := false
//for _, coin := range coins {
// if canClaimFunc(coin) {
// canClaim = true
// }
//}
//
//if !canClaim {
// return nil, nil
//}
//
claimRewardPayload, err := ParsedRewardModuleABI.Pack("withdrawAllDepositorRewards", poolAddress)
if err != nil {
return nil, err
}

log.Logger().Infow("Claim reward payload", "payload", hexutil.Encode(claimRewardPayload))

tx, err := eth.SendTx(c, privateKey, claimRewardPayload, nil, RewardModuleContract)
if err != nil {
log.Logger().Errorw("Claim reward failed", "err", err)
return nil, err
}

log.Logger().Infow("Claim reward successfully", "txHash", tx.Hash().Hex())
return tx, nil
}

func CheckBGT(
c *ethclient.Client,
privateKey *ecdsa.PrivateKey,
poolAddress common.Address,
) ([]CosmosCoin, error) {
var (
from, _ = eth.GetAddressFromPrivateKey(privateKey)
)

// function getCurrentRewards(address depositor, address receiver) external view returns (Cosmos.Coin[] memory);
rewardModuleContract, err := NewRewardModuleCaller(RewardModuleContract, c)
if err != nil {
return nil, err
}

coins, err := rewardModuleContract.GetCurrentRewards(&bind.CallOpts{}, poolAddress, from)
if err != nil {
log.Logger().Errorw("Failed to get current rewards", "error", err)
return nil, err
}

return coins, nil
}
24 changes: 24 additions & 0 deletions pkg/dapp/bex/claim_bgt_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package bex

import (
"github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/require"
"testing"
)

func Test_ClaimBGT(t *testing.T) {
poolAddress := common.HexToAddress("0xa88572F08f79D28b8f864350f122c1CC0AbB0d96")

tx, err := WithdrawAllDepositorRewards(
c,
privateKey,
poolAddress,
)
require.NoError(t, err)

if tx == nil {
t.Log("Tx is nil")
return
}
t.Log("tx:", tx.Hash().Hex())
}
3 changes: 2 additions & 1 deletion pkg/dapp/bex/gen.sh
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
abigen --abi=bex_abi.json --pkg=bex --out=bex_generated.go -type BexGenerated
abigen --abi=bex_abi.json --pkg=bex --out=bex_generated.go -type BexGenerated
abigen --abi=reward_module.json --pkg=bex --out=reward_module_generated.go -type RewardModule
Loading

0 comments on commit c86c575

Please sign in to comment.