docs(Rewards Provider): Updating docs with rewards provider (#213)
This commit is contained in:
@@ -8,7 +8,7 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
storetypes "github.com/cosmos/cosmos-sdk/store/types"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
rewardsaddressprovider "github.com/skip-mev/pob/x/builder/rewards_address_provider"
|
||||
"github.com/skip-mev/pob/x/builder/rewards"
|
||||
"github.com/skip-mev/pob/x/builder/types"
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ func NewKeeper(
|
||||
authority string,
|
||||
) Keeper {
|
||||
// Build a rewards address provider
|
||||
rewardsAddressProvider := rewardsaddressprovider.NewProposerRewardsAddressProvider(
|
||||
rewardsAddressProvider := rewards.NewProposerRewardsAddressProvider(
|
||||
distrKeeper,
|
||||
stakingKeeper,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package rewards
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/skip-mev/pob/x/builder/types"
|
||||
)
|
||||
|
||||
// FixedAddressRewardsAddressProvider provides a portion of
|
||||
// auction profits to a fixed address (i.e. the proposer portion).
|
||||
// This is useful for chains that do not have a distribution module.
|
||||
type FixedAddressRewardsAddressProvider struct {
|
||||
rewardsAddress sdk.AccAddress
|
||||
}
|
||||
|
||||
// NewFixedAddressRewardsAddressProvider creates a reward provider for a fixed address.
|
||||
func NewFixedAddressRewardsAddressProvider(
|
||||
rewardsAddress sdk.AccAddress,
|
||||
) types.RewardsAddressProvider {
|
||||
return &FixedAddressRewardsAddressProvider{
|
||||
rewardsAddress: rewardsAddress,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *FixedAddressRewardsAddressProvider) GetRewardsAddress(_ sdk.Context) sdk.AccAddress {
|
||||
return p.rewardsAddress
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package rewards
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
"github.com/skip-mev/pob/x/builder/types"
|
||||
)
|
||||
|
||||
// ProposerRewardsAddressProvider provides a portion of
|
||||
// auction profits to the block proposer.
|
||||
type ProposerRewardsAddressProvider struct {
|
||||
distrKeeper types.DistributionKeeper
|
||||
stakingKeeper types.StakingKeeper
|
||||
}
|
||||
|
||||
// NewProposerRewardsAddressProvider creates a reward provider for block proposers.
|
||||
func NewProposerRewardsAddressProvider(
|
||||
distrKeeper types.DistributionKeeper,
|
||||
stakingKeeper types.StakingKeeper,
|
||||
) types.RewardsAddressProvider {
|
||||
return &ProposerRewardsAddressProvider{
|
||||
distrKeeper: distrKeeper,
|
||||
stakingKeeper: stakingKeeper,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *ProposerRewardsAddressProvider) GetRewardsAddress(ctx sdk.Context) sdk.AccAddress {
|
||||
prevPropConsAddr := p.distrKeeper.GetPreviousProposerConsAddr(ctx)
|
||||
prevProposer := p.stakingKeeper.ValidatorByConsAddr(ctx, prevPropConsAddr)
|
||||
|
||||
return sdk.AccAddress(prevProposer.GetOperator())
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package rewardsaddressprovider
|
||||
|
||||
import (
|
||||
"cosmossdk.io/depinject"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/skip-mev/pob/x/builder/types"
|
||||
)
|
||||
|
||||
// FixedAddressRewardsAddressProvider provides auction profits to a fixed address
|
||||
type FixedAddressRewardsAddressProvider struct {
|
||||
rewardsAddress sdk.AccAddress
|
||||
}
|
||||
|
||||
// NewFixedAddressRewardsAddressProvider creates a reward provider for a fixed address.
|
||||
func NewFixedAddressRewardsAddressProvider(
|
||||
rewardsAddress sdk.AccAddress,
|
||||
) types.RewardsAddressProvider {
|
||||
return &FixedAddressRewardsAddressProvider{
|
||||
rewardsAddress: rewardsAddress,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *FixedAddressRewardsAddressProvider) GetRewardsAddress(_ sdk.Context) sdk.AccAddress {
|
||||
return p.rewardsAddress
|
||||
}
|
||||
|
||||
// Dependency injection
|
||||
|
||||
type FixedAddressDepInjectInput struct {
|
||||
depinject.In
|
||||
|
||||
AccountKeeper types.AccountKeeper
|
||||
}
|
||||
|
||||
type FixedAddressDepInjectOutput struct {
|
||||
depinject.Out
|
||||
|
||||
RewardsAddressProvider types.RewardsAddressProvider
|
||||
}
|
||||
|
||||
func ProvideModuleAddress(in FixedAddressDepInjectInput) FixedAddressDepInjectOutput {
|
||||
rewardAddressProvider := NewFixedAddressRewardsAddressProvider(
|
||||
in.AccountKeeper.GetModuleAddress(types.ModuleName),
|
||||
)
|
||||
|
||||
return FixedAddressDepInjectOutput{RewardsAddressProvider: rewardAddressProvider}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package rewardsaddressprovider
|
||||
|
||||
import (
|
||||
"cosmossdk.io/depinject"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
"github.com/skip-mev/pob/x/builder/types"
|
||||
)
|
||||
|
||||
// ProposerRewardsAddressProvider provides auction profits to the block proposer.
|
||||
type ProposerRewardsAddressProvider struct {
|
||||
distrKeeper types.DistributionKeeper
|
||||
stakingKeeper types.StakingKeeper
|
||||
}
|
||||
|
||||
// NewFixedAddressRewardsAddressProvider creates a reward provider for a fixed address.
|
||||
func NewProposerRewardsAddressProvider(
|
||||
distrKeeper types.DistributionKeeper,
|
||||
stakingKeeper types.StakingKeeper,
|
||||
) types.RewardsAddressProvider {
|
||||
return &ProposerRewardsAddressProvider{
|
||||
distrKeeper: distrKeeper,
|
||||
stakingKeeper: stakingKeeper,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *ProposerRewardsAddressProvider) GetRewardsAddress(context sdk.Context) sdk.AccAddress {
|
||||
prevPropConsAddr := p.distrKeeper.GetPreviousProposerConsAddr(context)
|
||||
prevProposer := p.stakingKeeper.ValidatorByConsAddr(context, prevPropConsAddr)
|
||||
|
||||
return sdk.AccAddress(prevProposer.GetOperator())
|
||||
}
|
||||
|
||||
// Dependency injection
|
||||
|
||||
type ProposerRewardsDepInjectInput struct {
|
||||
depinject.In
|
||||
|
||||
types.DistributionKeeper
|
||||
types.StakingKeeper
|
||||
}
|
||||
|
||||
type ProposerRewardsDepInjectOutput struct {
|
||||
depinject.Out
|
||||
|
||||
RewardsAddressProvider types.RewardsAddressProvider
|
||||
}
|
||||
|
||||
func ProvideProposerRewards(in ProposerRewardsDepInjectInput) ProposerRewardsDepInjectOutput {
|
||||
rewardAddressProvider := NewProposerRewardsAddressProvider(
|
||||
in.DistributionKeeper,
|
||||
in.StakingKeeper,
|
||||
)
|
||||
|
||||
return ProposerRewardsDepInjectOutput{RewardsAddressProvider: rewardAddressProvider}
|
||||
}
|
||||
Reference in New Issue
Block a user