【Web3 探索】如何高效分析区块构建者的收入

  • Chainbase
  • 更新于 2023-08-22 18:07
  • 阅读 2158

区块构建者的主要责任是将Mempool中的交易与搜索者构建的盈利捆绑包相结合并发送给验证人客户端。在本文中,我将指导您通过 SQL 索引以太坊的链上数据来获取并且计算区块构建者的收入数据。

作者:masterdai

什么是区块构建者

Untitled.png

区块构建者(Block Builder)的主要职责是将 Mempool 中的交易与搜索者构建的盈利捆绑包相结合并发送给验证人客户端。当一个用户发起一笔交易时,首先会进入公共内存池,如果这是一笔普通的交易,那就会在等待一段时间之后被区块构建者放入其创造的区块中、如果这是一笔被搜索者盯上的交易,在进入内存池之后会以捆绑包的形式进入区块中。再经过中继层、最终被区块提议者签署证明并将其广播到网络。

搜索者在内存池中寻找能够捕获利益的交易,将这一笔交易打捞起来并与自身创建的交易组合并且放入捆绑包中。搜索者获得的利润会直接进入其钱包内,而为了让这笔交易能够被区块构建者打包入区块,搜索者需要支付一笔的手续费给区块构建者(通过 gas 或者 coinbase transfer)。

本文将指导您通过 SQL 索引以太坊的链上数据来获取并且计算区块构建者的收入数据。

Flashbots Builder 具体案例场景

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

ethereum-block-1741990.png

last-TX-1741990.png

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

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

我们可以通过以下公式来计算出区块构建者的收入:

区块构建者的利润=交易费用(gas)+搜索者支付手续费-销毁的gas费用-区块构建者给验证人的费用(成本)

示例:0x9ba88D 向 flashbots-builder.eth 转移了 0.012998 个以太币。

这意味着在该区块中,Flashbots builder 的利润为:

0.18263526 + 0.012998 - 0.1919321 = 0.00370116个以太币

internal-TX-1741990.png

区块构建者会采用一系列策略以争夺市场的优势地位。其中一种常见策略便是提供补贴:区块构建者有时愿意将自身的操作成本降低,甚至不惜让区块的收入暂时呈现为负值,目的是为了获得更大的市场份额。Delphi Digital的文章提到了 0x69 作为例子,他们成功地为大部分区块提供补贴,同时仍然获得利润。值得注意的是,他们在某些特定区块中实现了显著的盈利。例如,在区块 16067709 中,他们获取了 76 个以太币的利润;而在区块 16067699 中,他们则实现了更为可观的 139 个以太币的利润。这种策略性地使用补贴的方法,实质上是一种精准而激进的市场占领策略。在区块构建者的环境中,竞争格局往往呈现出“赢者通吃”的特点。尽管每一个区块的利润空间可能相对较薄,但通过持续且高效的操作,构建者们依然有可能累积出可观的总收益。

SQL 讲解

若您希望批量分析与以太坊区块构建者相关的数据,可使用以下查询语句,检索每个区块中记录的最后一笔转账交易。此查询语句能够精准识别并选取每个以太坊区块的最新交易。

with
    indexs as (
        select
            block_number,
            max(transaction_index) as transaction_index
        from
            ethereum.transactions
        where
            block_timestamp > '2023-06-01'
        group by
            block_number
    )
select
    block_number,
    block_timestamp,
    from_address,
    to_address,
    value / 1e18 as ETH,
    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-06-01'的行。indexs中的数据按block_number进行分组。如果需要更加久远的历史数据,可通过更改block_timestamp 来实现。
  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的降序对结果进行排序。

以下是 Chainbase Data Cloud 的查询结果展示.

Screenshot 2023-08-18 at 18.13.33.png

通过这样的sql命令,您就可以筛选出每一个区块末尾的以太坊转账交易即区块构建者的收益。

将数据导入本地

您还可以使用以下代码将区块数据导入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-key', //确保注册chainbase账户并且在控制台获取api-key
    'content-type': 'application/json',
  },
  data: {
    task_id: 'xxxxxxx',
    page: 1,
    query: '您的SQL查询' // https://console.chainbase.com/dataCloud
  },
};

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();

在终端中运行命令 node <filename>.js ,即可生成对应的Exlcel 文件。当然,您也可以根据需要导入到自己的数据库中进行进一步的分析。

在这个例子下,笔者选择了最近的 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

通过深入分析以太坊区块相关的数据,我们可以从 Chainbase Data Cloud 的以太坊的交易表中检索到特定的重要信息。这些精准的数据允许我们筛选出当前收入最高的区块构建者地址以及其对应的验证人地址,并将这些信息有效地导入到 Excel 中。这样的分析不仅能够助我们清晰地识别不同区块构建者的市场份额,还可以潜在地揭示出具有较高盈利潜力的区块。

精准计算区块收入对于深入了解 MEV(Miner Extractable Value)在供应链网络中区块构建者的盈利潜力具有至关重要的意义。

关于Chainbase

Chainbase是 Web3 的一体化数据基础设施,可让您在大规模上索引、转换和使用链上数据。 通过利用丰富的链上数据和流计算技术,Chainbase 自动化了区块链数据的索引和查询,使开发者能够在更少的工作量下完成更多工作。

文章来源:Analyzing the Block Builder's Revenue

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Chainbase
Chainbase
0x7C46...d02D
Chainbase 是领先的 Web3 数据基础设施,帮助开发者轻松访问加密数据,并支持对数据的大规模索引、转换和使用。