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

This commit is contained in:
David Terpay 2023-07-24 17:33:20 +02:00 committed by GitHub
parent 456e099b7c
commit 00d9b8396f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 63 additions and 109 deletions

View File

@ -243,6 +243,5 @@ $ go install github.com/skip-mev/pob
Note, before building or upgrading the application, make sure to initialize the
escrow address for POB in the parameters of the module. The default parameters
do not initialize an escrow address as that should be determined by governance.
The escrow address will be the address that is receiving a portion of auction
house revenue alongside the proposer (if enabled).
initialize the escrow address to be the module account address. The escrow address
will be the address that is receiving a portion of auction house revenue alongside the proposer (or custom rewards providers).

View File

@ -1411,4 +1411,4 @@ func file_pob_abci_v1_auction_proto_init() {
file_pob_abci_v1_auction_proto_rawDesc = nil
file_pob_abci_v1_auction_proto_goTypes = nil
file_pob_abci_v1_auction_proto_depIdxs = nil
}
}

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,
)

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
}

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())
}

View File

@ -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}
}

View File

@ -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}
}