IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Flashbots文档阅读1 -> 正文阅读

[区块链]Flashbots文档阅读1

官方文档地址

FLashbots Auction

Flashbots Auction对比原本的竞价机制

Flash Auction提供一个私有的交易池以及一个密封的竞价区块空间,使得各方能够将找寻最优区块构造方式的工作外包出去

传统的基于gas price以及贪婪算法的机制存在以下问题:

  1. 开放的交易池导致了恶性的竞价,给P2P网络带来不必要的负担并且导致了gas price的波动,并且损害了非复杂交易的参与者
  2. all-pay导致了链上竞价失败的回退,因此非必要地消耗了区块空间且执行交易的风险性导致竞价者低估了他们的竞价。最终也导致了区块空间的缺乏以及更低的矿工利润
  3. 对于gas price的依赖使得竞价者难以细致地表达订单偏好,因为大家都投标竞争区块顶部地位置。这也导致了另类地策略,如群发赢得竞价地可能性提高,进一步加重了损失

Flashbots Auction使用了一次竞价密封竞拍地方式,允许用户私下出价,且无需为失败地竞拍付费。这样地机制最大化了矿工的受益,同时为给定MEV机会提供了一个有效的价格发现场所。最重要的是,该方法剔除了Front-running的风险

Flashbots Auction的目标

Flashbots Auction最终希望实现如下的效果:

  1. Pre-trade privacy:交易只有在被包含入区块后才公开
  2. Failed trade privacy:失败的交易不会入块,意味着不会被公开
  3. Efficiency:MEV的提取不会导致不必要的网络或链上堵塞
  4. Bundle merging:允许合并多个传入的包且不导致冲突
  5. Finality protection:一旦Flashbots的包传递到网络后将是不可更改的,这意味着杜绝了Time-bandit Attack
  6. Complete privacy:中介人如矿工以及转发者不能观察到交易直至该交易在链上被公开
  7. Permissionless:无需任何被信任的中间机构来监管交易

Searcher

Searcher包括三类:机器人、用户以及Dapps

通过将包直接发送给relayers可以避免通过P2P网络进行传播,保证了交易的隐私性。同时,交易的费用既可以用gas price也可以直接发送eth至某个交易所地址,这样的直接交易保证用户只会为成功的交易付费

Relayer

relayer负责校验和路由Flashbots的包。由于用户不再为失败的交易付费,使得他们能够向网络发送无效的包以导致DoS。因此realyer充当了缓冲以应对DoS,且relayer也提供如包合并的功能。

Flashbots Auction的两个重大挑战是如何应对DoS以及保证Relayer的隐私性。

Relayer引入了一定的风险,因其能够接触完整的包,这也意味着他们可以重排序、监控以及窃取Searcher发送的交易。

Miner

Flashbots中的Miner使用特质的mev-geth节点,基于一次竞价密封竞拍的方式挑选出最高利润的交易,并将其包含于区块的前列

Flashbots Auction中的一些概念

Bundle

Searcher将包提交给矿工,一个包内可以包含多个交易并按提供的顺序分组执行,包中可能还包含来自mempool中其他用户的待处理交易,且一个包可以被包含于某个目标区块中

const blockNumber = await provider.getBlockNumber()
const minTimestamp = (await provider.getBlock(blockNumber)).timestamp
const maxTimestamp = minTimestamp + 120
const signedBundle = flashbotsProvider.signBundle(
    [
      {
        signedTransaction: SIGNED_ORACLE_UPDATE_FROM_PENDING_POOL // serialized signed transaction hex
      },
      {
        signer: wallet, // ethers signer
        transaction: transaction // ethers populated transaction object
      }
    ])
const bundleReceipt = await flashbotsProvider.sendRawBundle(
    signedBundle, // bundle we signed above
    targetBlockNumber, // block number at which this bundle is valid
    {
      minTimestamp, // optional minimum timestamp at which this bundle is valid (inclusive)
      maxTimestamp, // optional maximum timestamp at which this bundle is valid (inclusive)
      revertingTxHashes: [tx1, tx2] // optional list of transaction hashes allowed to revert. Without specifying here, any revert invalidates the entire bundle.
    }
  )
)

coinbase.transfer()

Flashbots中允许通过智能合约向矿工支付交易费用,矿工对待通过转账得到的费用与对待正常交易费用一样。这为用户提供了如下好处:

  1. 可以根据满足的条件向矿工付款
  2. 只为成功的交易付款,而不为失败的交易付款
  3. 可以用其他账户的ETH为本账户的交易付款

如下为简单的套利机器人源码

function uniswapWeth(uint256 _wethAmountToFirstMarket, uint256 _ethAmountToCoinbase, address[] memory _targets, bytes[] memory _payloads) external onlyExecutor payable {
    require (_targets.length == _payloads.length);
    uint256 _wethBalanceBefore = WETH.balanceOf(address(this));
    WETH.transfer(_targets[0], _wethAmountToFirstMarket);
    for (uint256 i = 0; i < _targets.length; i++) {
        (bool _success, bytes memory _response) = _targets[i].call(_payloads[i]);
        require(_success); _response;
    }

    uint256 _wethBalanceAfter = WETH.balanceOf(address(this));
    require(_wethBalanceAfter > _wethBalanceBefore + _ethAmountToCoinbase);
    if (_ethAmountToCoinbase == 0) return;

    uint256 _ethBalance = address(this).balance;
    if (_ethBalance < _ethAmountToCoinbase) {
        WETH.withdraw(_ethAmountToCoinbase - _ethBalance);
    }
    block.coinbase.transfer(_ethAmountToCoinbase);
}

当矿工将智能合约地址作为收款地址时,费用会比发送给外部地址(EOA)时稍多,这可能导致这个包执行失败,用户可以通过如下方式进行支付

block.coinbase.call{value: _ethAmountToCoinbase}(new bytes(0));

但这样一来会将执行权基于第三方,导致重入的风险

Bundle顺序衡量权重计算

以下公式计算了包中所有有效的gas price以及支付给coinbase的费用,并减去了mempool中观察到的交易gas price。之所以减去这些mempool的交易是为了防止mempool中的gasprice过高,阻塞了flashbots中的部分bundle

同时,bundle低于42000 gas的将被relayer拒绝,因其很可能是垃圾交易用于阻塞区块链
在这里插入图片描述

Searcher Reputation

信誉机制是一种防御措施,使得relayer能够防御Layer 7 attacks。通过提交那些大概率会被上链的交易可以提升一个searcher的信誉

在这里插入图片描述

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:19:40  更:2021-09-29 10:20:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 4:06:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计