去中心化区块构建模拟器
用于研究分散式区块构建中地理位置选择激励的模拟器。建筑商竞相将来自跨地区分布的信息源的交易纳入其中。奖励在包含相同交易的所有建设者之间分配。建设者自私地选择地区以最大限度地提高自己的捕获率,模拟器通过无政府状态价格和不平等指标来衡量由此产生的效率低下。
快速开始
pip install -r requirements.txt
python run.py configs/ABR/sym_linear_equal.yaml用法
python run.py [config2.yaml ...] | [--poa] [--poa-method {brute_force,greedy}]异步更好的响应(ABR)
本项目中使用的主要动力是 异步更好的响应(ABR)位置博弈是一种潜在博弈,因此ABR保证收敛到纳什均衡。在每一轮中,一个构建器(循环)对所有区域进行分析评估,并迁移到严格提高预期奖励的第一个区域。
集 policy_type: ABR 在配置中使用ABR。例子:
policy_type: ABR
n_builders: 5
n_slots: 500
delta: 0.05 # 50ms slot time使用PoA计算运行:
# Exact optimal (feasible for small numbers of regions or builders)
python run.py configs/ABR/sym_linear_equal.yaml --poa
# Greedy approximation (faster for large numbers of regions or builders)
python run.py configs/ABR/sym_linear_equal.yaml --poa --poa-method greedy结果和图表保存到 results/.
学习算法
还有随机学习策略(EXP3、EMA Softmax、UCB)可通过 policy_type这些对于研究可能不具有相同收敛保证的非平衡动力学非常有用。
实验
这 scripts/ 目录包含扫描关键参数并生成图形的实验脚本:
| 脚本 | 描述 |
|---|---|
exp1_value_asymmetry.py | 扫描价值比率(高价值/外围信息源);衡量福利、福利比率、地理HHI、公用事业HHI和集群覆盖率 |
exp2_builder_count.py | 清扫工计数K;衡量福利比率、地理HHI、效用HHI、集群覆盖率和平均成对距离 |
exp3_value_asymmetry_vs_slot_duration.py | 热图超过(值比×δ);福利比率、地理HHI、效用HHI、平均成对距离和集群覆盖率 |
exp4_slot_duration.py | 以固定值比10x扫描时隙持续时间增量(10ms–12s);与exp1相同的指标 |
exp5_builders_vs_slot_duration.py | 定值比率下的热图(建筑商计数K×增量);与exp3相同的指标 |
所有脚本都使用ABR和GCP经验延迟数据以及随机信息源布局,报告多个实例和种子的中值+IQR。
关键参数
| 参数 | 说明 |
|---|---|
policy_type | "ABR", "EXP3", "EMA",或 "UCB" |
n_builders | 建筑商数量 |
n_slots | 模拟插槽数量 |
delta | 插槽持续时间(秒) |
eta, beta_reg | EMA学习率和softmax温度 |
alpha | UCB勘探奖金 |
cost_c | 迁移成本 |
指标
ABR实验脚本(exp1-5):
- 无政府状态的代价:W\*/W_ABR(≥1;1=社会最优),其中W\*是福利最大化的规划者分配,W_ABR是ABR融合配置文件下的福利
- 地理/公用事业HHI:不同地区的建筑商集中度和收益不平等
- 集群覆盖范围:从每个信息源集群捕获的预期值的分数
- 平均成对距离:融合建筑商布局的地理分布
分析管道(run.py + analysis/),与学习算法一起使用:
- 基尼系数、熵、位置和效用分布的HHI(时间序列)
- 价值捕获HHI,前1/3集中度
- 波动性:L1区域变化和插槽之间的价值份额分布
项目结构
sim/
simulator.py - core simulator (ABR, learning policies, propagation, sharing rule)
config.py - ExperimentConfig, load_config
datasets.py - GCP latency data loading
analysis/
experiment_runner.py - runner, plots
result.py - ExperimentResult
plotting.py - comparison and detail plots
poa.py - Price of Anarchy computation
scripts/ - experiment scripts (exp1–exp5, ...)
configs/ - YAML experiment configs
run.py - CLI entrypoint参考文献
- 纸张: arXiv:2509.21475v2
- 原始回购: 地理分散化模拟
