This commit is contained in:
David Terpay 2023-08-16 11:15:11 -04:00
parent fe172ffba3
commit eb880e5d2c
No known key found for this signature in database
GPG Key ID: 627EFB00DADF0CD1
5 changed files with 17 additions and 15 deletions

View File

@ -44,7 +44,7 @@ In the Block SDK, each lane has its own set of rules and transaction flow manage
A block with separate `lanes` can be used for:
1. **MEV mitigation**: a top of block lane could be designed to create an in-protocol top-of-block auction (as we are doing with POB) to recapture MEV in a transparent and governable way.
1. **MEV mitigation**: a top of block lane could be designed to create an in-protocol top-of-block auction (as we are doing with the Block SDK) to recapture MEV in a transparent and governable way.
2. **Free/reduced fee txs**: transactions with certain properties (e.g. from trusted accounts or performing encouraged actions) could leverage a free lane to reward behavior.
3. **Dedicated oracle space** Oracles could be included before other kinds of transactions to ensure that price updates occur first, and are not able to be sandwiched or manipulated.
4. **Orderflow auctions**: an OFA lane could be constructed such that order flow providers can have their submitted transactions bundled with specific backrunners, to guarantee MEV rewards are attributed back to users. Imagine MEV-share but in protocol.

View File

@ -1,6 +1,8 @@
# POB Specification
> **Note**: This specification is a work in progress and is subject to change.
## Abstract
The `x/builder` module is a Cosmos SDK module that allows Cosmos chains to host

View File

@ -40,7 +40,7 @@ type (
}
)
// NewLanedMempool returns a new Blockbuster mempool. The block mempool is
// NewLanedMempool returns a new Block SDK mempool. The laned mempool is
// comprised of a registry of lanes. Each lane is responsible for selecting
// transactions according to its own selection logic. The lanes are ordered
// according to their priority. The first lane in the registry has the highest

View File

@ -71,7 +71,7 @@ func NewApp() {
// visit the README in block-sdk/block/base.
//
// MEV lane hosts an action at the top of the block.
mevConfig := constructor.LaneConfig{
mevConfig := base.LaneConfig{
Logger: app.Logger(),
TxEncoder: app.txConfig.TxEncoder(),
TxDecoder: app.txConfig.TxDecoder(),
@ -84,7 +84,7 @@ func NewApp() {
)
// Free lane allows transactions to be included in the next block for free.
freeConfig := constructor.LaneConfig{
freeConfig := base.LaneConfig{
Logger: app.Logger(),
TxEncoder: app.txConfig.TxEncoder(),
TxDecoder: app.txConfig.TxDecoder(),
@ -93,12 +93,12 @@ func NewApp() {
}
freeLane := free.NewFreeLane(
freeConfig,
constructor.DefaultTxPriority(),
base.DefaultTxPriority(),
free.DefaultMatchHandler(),
)
// Default lane accepts all other transactions.
defaultConfig := constructor.LaneConfig{
defaultConfig := base.LaneConfig{
Logger: app.Logger(),
TxEncoder: app.txConfig.TxEncoder(),
TxDecoder: app.txConfig.TxDecoder(),

View File

@ -107,7 +107,7 @@ $ go install github.com/skip-mev/block-sdk
}
```
c. Instantiate the blockbuster mempool with the application's desired lanes.
c. Instantiate the Block SDK mempool with the application's desired lanes.
```go
// 1. Create the lanes.
@ -121,7 +121,7 @@ $ go install github.com/skip-mev/block-sdk
// visit the README in block-sdk/block/base.
//
// MEV lane hosts an auction at the top of the block.
mevConfig := constructor.LaneConfig{
mevConfig := base.LaneConfig{
Logger: app.Logger(),
TxEncoder: app.txConfig.TxEncoder(),
TxDecoder: app.txConfig.TxDecoder(),
@ -134,7 +134,7 @@ $ go install github.com/skip-mev/block-sdk
)
// Free lane allows transactions to be included in the next block for free.
freeConfig := constructor.LaneConfig{
freeConfig := base.LaneConfig{
Logger: app.Logger(),
TxEncoder: app.txConfig.TxEncoder(),
TxDecoder: app.txConfig.TxDecoder(),
@ -143,12 +143,12 @@ $ go install github.com/skip-mev/block-sdk
}
freeLane := free.NewFreeLane(
freeConfig,
constructor.DefaultTxPriority(),
base.DefaultTxPriority(),
free.DefaultMatchHandler(),
)
// Standard lane accepts all other transactions.
defaultConfig := constructor.LaneConfig{
defaultConfig := base.LaneConfig{
Logger: app.Logger(),
TxEncoder: app.txConfig.TxEncoder(),
TxDecoder: app.txConfig.TxDecoder(),
@ -168,7 +168,7 @@ $ go install github.com/skip-mev/block-sdk
```
d. Instantiate the antehandler chain for the application with awareness of the
blockbuster mempool. This will allow the application to verify the validity
LanedMempool. This will allow the application to verify the validity
of a transaction respecting the desired logic of a given lane. In this walkthrough,
we want the `FeeDecorator` to be ignored for all transactions that should
belong to the free lane. Additionally, we want to add the `x/builder`
@ -178,9 +178,9 @@ $ go install github.com/skip-mev/block-sdk
```go
import (
...
"github.com/skip-mev/pob/blockbuster"
"github.com/skip-mev/pob/blockbuster/utils"
builderante "github.com/skip-mev/pob/x/builder/ante"
"github.com/skip-mev/block-sdk/block"
"github.com/skip-mev/block-sdk/block/utils"
builderante "github.com/skip-mev/block-sdk/x/builder/ante"
...
)