在我们最近的文章中,我简要地讨论了区块构建者在MEV供应链网络中所扮演的重要角色。区块构建者的主要责任是将Mempool中的交易与搜索者构建的盈利捆绑包相结合。

在本文中,我将指导您逐步计算区块构建者的成本和收益。

让我们以一个具体的区块为例,区块号为17419900。您可以在Ethscan网站上搜索它,并通过额外数据或费用接收方交易来识别其区块构建者。显然,此区块是由Flashbots Builder生产的。

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9c8b35de-c38c-461d-9e2c-e345aea0726b/Screenshot_2023-06-07_at_14.40.35.png

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/17828449-607f-4a2a-a74b-6ed1a618229c/Screenshot_2023-06-07_at_14.44.41.png

在区块构建者负责的区块末尾,区块构建者还会奖励提议该区块的验证者。在本例中,flashbots-builder.eth向验证者的地址发送了0.1919321个以太币,作为MEV-boost奖励和区块构建者的成本。

区块构建者的收入分为两部分。第一部分是区块奖励,通过从交易费中减去燃烧费用来计算。在本例中,金额为0.18263526个以太币。第二部分是验证者直接支付给区块构建者的款项。搜索者可以选择直接向区块构建者支付一定数量的以太币。这种行为通常通过区块内部交易来实现。以下是一个示例:0x9ba88D向flashbots-builder.eth转移了0.012998个以太币。

这意味着在该区块中,flashbots builder的总收入为:

0.18263526 + 0.012998 - 0.1919321 = 0.00370116个以太币

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e74922a7-453a-4beb-b712-e886f6cbdb37/Screenshot_2023-06-07_at_15.03.33.png

区块构建者有时会补贴他们的操作以获得更大的市场份额,从而导致收入为负的区块。Delphi Digital的文章提到了构建者0x69作为例子,他们成功地为大部分区块提供补贴,同时仍然获得利润。值得注意的是,他们通过某些区块获得了显著的利润,比如区块16067709(利润76个以太币)和区块16067699(利润139个以太币)。这种策略性使用补贴是为了抢占市场。在区块构建行业中,是一个赢者通吃的情况。尽管利润通常很薄,但有可能获得可观的以太币回报。

如果您想要分析以太坊区块相关的数据,您可以使用以下查询来检索每个区块中记录的最后一笔转账(data:0x)交易。该查询可以在以太坊区块链中识别和选择每个区块的最新交易。

with indexs as (
    select
        block_number,
        max(transaction_index) as transaction_index
    from
        ethereum.transactions
    where block_timestamp>'2023-04-01'
    group by block_number
)
select
    block_number,
    block_timestamp,
    from_address,
    to_address,
    Revenue as value/1e18,
		input
from
    ethereum.transactions
where (block_number,transaction_index) in (select * from indexs)
and input = '0x'

 order by block_number desc

  1. 查询开始时创建了一个名为indexs的临时数据集。该数据集包含两列:block_numbertransaction_index。它是通过查看ethereum.transactions表,并选择每个唯一block_number的最高transaction_index来创建的。只考虑block_timestamp晚于'2023-04-01'的行。indexs中的数据按block_number进行分组。
  2. 查询的主要部分从ethereum.transactions表中检索了特定信息。它选择了以下列作为输出:block_numberblock_timestampfrom_addressto_addressRevenue(计算为value/1e18),以及input
  3. 查询根据两个条件过滤了ethereum.transactions表中的行:
    • block_numbertransaction_index的组合应与indexs集中的值匹配。这确保只包含具有匹配的block_numbertransaction_index值的行。
    • input列中的值应完全为'0x'。
  4. 然后根据block_number按降序排列结果。这意味着输出将按照最高的block_number到最低的进行排序。

简单来说,这个查询从ethereum.transactions表中检索了特定的信息。首先创建了一个临时数据集,用于识别

某个日期之后每个block_number的最高transaction_index。然后,它从表中选择所需的列,根据与block_numbertransaction_indexinput值相关的条件过滤行,并最终按照block_number的降序对结果进行排序。

您还可以使用以下代码将区块数据导入Excel。

运行**npm install axiosnpm install exceljs**以安装所需的依赖项。

将您的SQL查询和在我们的文档中生成的任务ID放入查询行。

const axios = require('axios');
const excel = require('exceljs');

const options = {
  method: 'POST',
  url: '<https://api.chainbase.online/v1/dw/query>',
  headers: {
    accept: 'application/json',
    'x-api-key': '您的API密钥',
    'content-type': 'application/json',
  },
  data: {
    task_id: 'xxxxxxx',
    page: 1,
    query: '您的SQL查询'
  },
};

const workbook = new excel.Workbook();
const worksheet = workbook.addWorksheet('Data');

// 添加标题
worksheet.addRow(['区块编号', '区块时间戳', '源地址', '目标地址', '以太币', '输入']);

async function fetchData(page) {
  options.data.page = page;

  try {
    const response = await axios.request(options);

    if (response.data && response.data.data && Array.isArray(response.data.data.result)) {
      const data = response.data.data.result;

      for (const row of data) {
        worksheet.addRow([
          row.block_number,
          row.block_timestamp,
          row.from_address,
          row.to_address,
          row.ETH,
          row.input,
        ]);
      }

      if (response.data.data.meta && response.data.data.meta.next_page) {
        const nextPage = response.data.data.meta.next_page;
        return fetchData(nextPage); // 返回Promise以确保按顺序获取
      } else {
        return true; // 表示已获取所有页面
      }
    } else {
      console.error('无效的响应数据:', response.data);
      return false; // 表示发生错误
    }
  } catch (error) {
    console.error(error);
    return false; // 表示发生错误
  }
}

async function fetchAllData() {
  let currentPage = 1;
  const totalPages = 3; // 设置要获取的页面总数

  while (currentPage <= totalPages) {
    const success = await fetchData(currentPage);
    if (!success) {
      console.error('获取数据时发生错误。终止。');
      return;
    }
    currentPage++;
  }

  await workbook.xlsx.writeFile('chainbaseData.xlsx');
  console.log('Excel文件创建成功。');
}

fetchAllData();

通过分析这些数据,在我的情况下,我选择了选择最近的3000个区块的交易并分析了区块构建者的市场份额。

区块构建者 目标地址数量 以太币总和
0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5 717 110.2250996
0x1f9090aae28b8a3dceadf281b0f12828e676c326 644 77.75061889
0x690b9a9e9aa1c9db991c7721a92d351db4fac990 536 75.93068564
0xdafea492d9c6733ae3d56b7ed1adb60692c98bc5 362 34.08247563
0xb4c9e4617a16be36b92689b9e07e9f64757c1792 120 9.349838553
0xbaf6dc2e647aeb6f510f9e318856a1bcd66c5e19 64 13.3957448
0xfeebabe6b0418ec13b30aadf129f5dcdd4f70cea 49 9.565605888
0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97 30 2.632173092
0xce0babc8398144aa98d9210d595e3a9714910748 30 1.829768113
0x5124fcc2b3f99f571ad67d075643c743f38f1c34 26 0.893549901
0xbd3afb0bb76683ecb4225f9dbc91f998713c3b01 18 8.954708645
0x17d3c369932e200eab7264eca79e3f72a3f3d563 16 0.030609463

总的来说,计算区块收入对于了解MEV供应链网络中区块构建者的盈利能力至关重要。区块构建者的收入由区块奖励和验证者直接支付的款项组成。然而,有些构建者通过补贴来获得更大的市场份额,导致区块收入为负。通过分析以太坊区块相关的数据,可以从以太坊交易表中检索特定的信息,并使用代码片段将其导入Excel。分析这些数据可以帮助识别不同区块构建者的市场份额,并潜在地确定盈利的区块。总体而言,了解区块构建者的收入对于理解MEV供应链网络的经济学至关重要。