mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 17:31:39 +00:00
60 lines
2.0 KiB
Go
60 lines
2.0 KiB
Go
package ante
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
|
||
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||
|
|
anteinterfaces "github.com/cosmos/evm/ante/interfaces"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Ensure ControlPanelKeeper implements the interface
|
||
|
|
var _ anteinterfaces.ControlPanelKeeper = (*ControlPanelKeeper)(nil)
|
||
|
|
|
||
|
|
// ControlPanelKeeper provides control panel functionality for sponsored transactions.
|
||
|
|
// This is a simple implementation that can be extended to support sponsored addresses
|
||
|
|
// and custom transaction priorities in the future.
|
||
|
|
type ControlPanelKeeper struct {
|
||
|
|
// sponsoredAddresses could be loaded from state or configuration
|
||
|
|
sponsoredAddresses map[string]bool
|
||
|
|
// priority for sponsored transactions
|
||
|
|
sponsoredTxPriority int64
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewControlPanelKeeper creates a new ControlPanelKeeper instance
|
||
|
|
func NewControlPanelKeeper() *ControlPanelKeeper {
|
||
|
|
return &ControlPanelKeeper{
|
||
|
|
sponsoredAddresses: make(map[string]bool),
|
||
|
|
sponsoredTxPriority: 0, // Default priority
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// IsSponsoredAddress checks if an address is sponsored for gasless transactions
|
||
|
|
func (k *ControlPanelKeeper) IsSponsoredAddress(ctx context.Context, addr []byte) bool {
|
||
|
|
// For now, return false for all addresses
|
||
|
|
// This can be extended to check against a whitelist or state
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetSponsoredTransactionPriority returns the priority for sponsored transactions
|
||
|
|
func (k *ControlPanelKeeper) GetSponsoredTransactionPriority(ctx context.Context) int64 {
|
||
|
|
// Return default priority
|
||
|
|
// This can be made configurable or dynamic based on chain state
|
||
|
|
return k.sponsoredTxPriority
|
||
|
|
}
|
||
|
|
|
||
|
|
// SetSponsoredAddress adds or removes an address from the sponsored list
|
||
|
|
// This is a helper method for future use
|
||
|
|
func (k *ControlPanelKeeper) SetSponsoredAddress(addr sdk.AccAddress, sponsored bool) {
|
||
|
|
if sponsored {
|
||
|
|
k.sponsoredAddresses[addr.String()] = true
|
||
|
|
} else {
|
||
|
|
delete(k.sponsoredAddresses, addr.String())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// SetSponsoredTransactionPriority updates the priority for sponsored transactions
|
||
|
|
// This is a helper method for future use
|
||
|
|
func (k *ControlPanelKeeper) SetSponsoredTransactionPriority(priority int64) {
|
||
|
|
k.sponsoredTxPriority = priority
|
||
|
|
}
|