Skip to content
This repository was archived by the owner on May 11, 2024. It is now read-only.

feat(prover_selector): check prover's token balance #406

Merged
merged 3 commits into from
Sep 24, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
feat(prover_selector): check prover's token balance
  • Loading branch information
davidtaikocha committed Sep 24, 2023
commit 6f28d171076179ab33f8105e184424737d784a16
15 changes: 11 additions & 4 deletions proposer/prover_selector/eth_fee_eoa_selector.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,23 +145,30 @@ func (s *ETHFeeEOASelector) AssignProver(
// or, if not, then check allowance, as contract will attempt to burn directly after
// if it doesnt have the available token balance in-contract.
func (s *ETHFeeEOASelector) checkProverBalance(ctx context.Context, prover common.Address) (bool, error) {
taikoTokenBalance, err := s.rpc.TaikoL1.GetTaikoTokenBalance(&bind.CallOpts{Context: ctx}, prover)
depositedBalance, err := s.rpc.TaikoL1.GetTaikoTokenBalance(&bind.CallOpts{Context: ctx}, prover)
if err != nil {
return false, err
}

if s.protocolConfigs.ProofBond.Cmp(taikoTokenBalance) > 0 {
if s.protocolConfigs.ProofBond.Cmp(depositedBalance) > 0 {
// Check allowance on taiko token contract
allowance, err := s.rpc.TaikoToken.Allowance(&bind.CallOpts{Context: ctx}, prover, s.taikoL1Address)
if err != nil {
return false, err
}

if s.protocolConfigs.ProofBond.Cmp(allowance) > 0 {
// Check prover's taiko token balance
balance, err := s.rpc.TaikoToken.BalanceOf(&bind.CallOpts{Context: ctx}, prover)
if err != nil {
return false, err
}

if s.protocolConfigs.ProofBond.Cmp(allowance) > 0 || s.protocolConfigs.ProofBond.Cmp(balance) > 0 {
log.Info(
"Assigned prover does not have required on-chain token balance or allowance",
"providedProver", prover.Hex(),
"taikoTokenBalance", taikoTokenBalance.String(),
"depositedBalance", depositedBalance.String(),
"taikoTokenBalance", balance,
"allowance", allowance.String(),
"proofBond", s.protocolConfigs.ProofBond,
)
Expand Down