From 00d9b8396fe088712ab07760d079a1d2cfdde951 Mon Sep 17 00:00:00 2001 From: David Terpay <35130517+davidterpay@users.noreply.github.com> Date: Mon, 24 Jul 2023 17:33:20 +0200 Subject: [PATCH] docs(Rewards Provider): Updating docs with rewards provider (#213) --- README.md | 5 +- api/pob/abci/v1/auction.pulsar.go | 2 +- x/builder/keeper/keeper.go | 4 +- x/builder/rewards/fixed_provider.go | 26 +++++++++ x/builder/rewards/proposer_provider.go | 32 +++++++++++ .../fixed_address_rewards_address_provider.go | 47 ---------------- .../proposer_rewards_address_provider.go | 56 ------------------- 7 files changed, 63 insertions(+), 109 deletions(-) create mode 100644 x/builder/rewards/fixed_provider.go create mode 100644 x/builder/rewards/proposer_provider.go delete mode 100644 x/builder/rewards_address_provider/fixed_address_rewards_address_provider.go delete mode 100644 x/builder/rewards_address_provider/proposer_rewards_address_provider.go diff --git a/README.md b/README.md index 13ac9c0..9606c4c 100644 --- a/README.md +++ b/README.md @@ -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). diff --git a/api/pob/abci/v1/auction.pulsar.go b/api/pob/abci/v1/auction.pulsar.go index eadfe00..fb2e665 100644 --- a/api/pob/abci/v1/auction.pulsar.go +++ b/api/pob/abci/v1/auction.pulsar.go @@ -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 -} +} \ No newline at end of file diff --git a/x/builder/keeper/keeper.go b/x/builder/keeper/keeper.go index 9a229c8..a43c4bf 100644 --- a/x/builder/keeper/keeper.go +++ b/x/builder/keeper/keeper.go @@ -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, ) diff --git a/x/builder/rewards/fixed_provider.go b/x/builder/rewards/fixed_provider.go new file mode 100644 index 0000000..83e0c6a --- /dev/null +++ b/x/builder/rewards/fixed_provider.go @@ -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 +} diff --git a/x/builder/rewards/proposer_provider.go b/x/builder/rewards/proposer_provider.go new file mode 100644 index 0000000..4b004e5 --- /dev/null +++ b/x/builder/rewards/proposer_provider.go @@ -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()) +} diff --git a/x/builder/rewards_address_provider/fixed_address_rewards_address_provider.go b/x/builder/rewards_address_provider/fixed_address_rewards_address_provider.go deleted file mode 100644 index 78a62b4..0000000 --- a/x/builder/rewards_address_provider/fixed_address_rewards_address_provider.go +++ /dev/null @@ -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} -} diff --git a/x/builder/rewards_address_provider/proposer_rewards_address_provider.go b/x/builder/rewards_address_provider/proposer_rewards_address_provider.go deleted file mode 100644 index c107a35..0000000 --- a/x/builder/rewards_address_provider/proposer_rewards_address_provider.go +++ /dev/null @@ -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} -}