docs(Rewards Provider): Updating docs with rewards provider (#213)

This commit is contained in:
David Terpay
2023-07-24 15:33:20 +00:00
committed by GitHub
parent 456e099b7c
commit 00d9b8396f
7 changed files with 63 additions and 109 deletions
+2 -2
View File
@@ -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,
)
+26
View File
@@ -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
}
+32
View File
@@ -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}
}