docs(Rewards Provider): Updating docs with rewards provider (#213)
This commit is contained in:
parent
456e099b7c
commit
00d9b8396f
@ -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).
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
x/builder/rewards/fixed_provider.go
Normal file
26
x/builder/rewards/fixed_provider.go
Normal 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
x/builder/rewards/proposer_provider.go
Normal file
32
x/builder/rewards/proposer_provider.go
Normal 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}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user