摘要
我们把带有共享区块链环境的博弈论模型形式化,允许玩家预先部署智能合约来替其执行后续策略。传统博弈默认玩家在现场即时做决策;而合约的出现,使玩家可以提前“切掉”某些分支(cut),在子博弈中强行表现非理性,从而把原本不可信威胁转换为可执行承诺——这会彻底改变均衡的构造方式。进一步,不同合约之间能够读取对方代码并相互推理,使得“选择用哪个合约”本身变成一次决策。
模型里只需一个合约即可与Stackelberg博弈等价,两个合约则自然对应逆Stackelberg(Reverse Stackelberg)博弈。在计算复杂性上:
- 一般情况的SPE(子博弈完美均衡)是PSPACE-难;
- 若信息不完美,1个合约已将问题抬到NP-完全;
- 精确限制为2个合约且信息完全时,我们给出线性时间算法;
- 合约数无界时仍是PSPACE-难。
目前猜测3个合约会使问题落入NP-完全集。
引言:当权力从人交给代码
区块链天然支持“代码即法律”的智能合约:任何人支付gas即可提前部署一段程序,该程序公开透明、自动执行。传统博弈假设现场决策无法质变,而合约带来可执行力,让玩家能在后续子博弈中逼自己或他人按事先约定行动。这等于赋予先手承诺权——von Stackelberg 90多年前就指出,谁拥有先行优势,谁就能强制对方进入自己更偏好的子路径。
最极端的情形:合约可直接关闭某些Action,哪怕这样做在子博弈里看似损失——却因为合同对全局可信,反而产生更大收益。谷歌/学术常把这类效果称为“可信承诺”或“智能合约博弈”。
模型精讲:合约如何植入博弈树
1 有限扩展式博弈
- 树T:根向下延展,终端叶给出n维收益向量。
- 每个非叶节点分给某位玩家,由其选一个子节点继续。
- 若信息完全,可见整条历史;若信息不完美,则某些节点信息集(information set)面纱式合并,玩家只能知道“处于同一集”而不知是哪个节点。
2 合约节点(Smart Contract Move)
新增一种方形节点,允许当前玩家部署合约——实质就是剪切不在其未来策略里的子树。
- 一次合约决策 = 一次 cut = 控制子树权能。
- 若同一节点部署多个合约,则递归展开为更高层的新树,根由合约玩家操控。
- 若某动作为 never play,切掉后其他玩家再也无法到达,等同“毒丸条款”。
图例:
┌───┐ ┌───┐
│ P1│ (根) -> 合约-玩家 P1
└─┬─┘ └─┬─┘
│ ┌────A─┐ └── left/right (切掉右)
├─B─┐ → 若切掉A,P2再也不会走到A
3 Stackelberg 等价
- 1个合约 → 普通 Stackelberg:leader 合约cut掉自己不用的分支;follower 按贪心回应。
- 2个合约 → Reverse Stackelberg:先部署的合约还能够针对后部署的合约做出实时回应,相当于“leader给出映射:只要我follower做啥,你就能得到什么结果”。
计算复杂性全景
(以下关键词已自然嵌入:子博弈完美均衡、智能合约博弈、Stackelberg复杂度)
| 合约数 | 信息 | 复杂度 | 备注 |
|---|---|---|---|
| 0 | 完全 | PTIME | 经典后向归纳 |
| 1 | 完全 | PSPACE-难 | 新模型第一点冲击 |
| 2 | 完全 | 线性时间 | 本页后的高效算法 |
| ∞ | 完全 | PSPACE-难 | 通用多重剪切 |
| 1 | 不完美 | NP-完全 | 可归约到CircuitSAT |
| 2+ | 不完美 | Σₖᵖ-难 | 层次跃迁 |
FAQ:关于合约博弈你可能早已想问
-
Q:合约真能保证玩家“无法后悔”吗?
A:只要链网络和gas足够,代码一旦写死就不可篡改,且公开可查,旁人随时可验证其执行。 -
Q:复杂度这么恐怖,能解决吗?
A:如果仅允许两个合约且信息完全,我们用“可诱导区域”(inducible region) 剪枝,时间复杂度O(n log n),运行极快;超过两条合约仍需指数空间。 -
Q:模型会不会被以太坊等公链限制?
A:文中runtime上限只要求合约在环境限gas; real network若gas昂贵,可通过分层合约解决——外层只存路径,内层执行逻辑。 -
Q:为什么要用“纯策略”而不用混合?
A:本文重点在合约可见性:在纯策略下,不可信威胁已可变成可验证cut,混合会引入额外复杂性;后续拓展可研究混合情形。 -
Q:现实中如何落地?
A:去中心化交易所的MEV博弈、PoS链质押博弈、闪电贷套利,皆是天然场景;开发者可把合约节点视为可控制的不可撤回 switch。
二合约的高效线性算法
关键思路
利用“可诱导区域”+递归后向归纳:
- 自底向上遍历树;
- 对每条边维护一个 Pareto-optimal tuple 列表;
- 合约玩家所能诱导的所有终端叶,用结构引理合并两个子树 Pareto 集合即可。
最终根节点的最佳 tuple 即为 SPE 分配。
时间分析
- 每一步做交叉合并,至多O(t) 条数据,t 为终端叶数;
- 总共线性遍历整棵大小n的树,可获得 O(n·t) 时间,信息完全场景下最快无出其右。
开放性挑战与猜想
-
三合约NP是否成立?
用单一witness可验证第一层合约是否最优,整体问题掉入NP,但NP-hard尚缺直接归约。 -
合约语言扩展
若允许stateful跨回合合约(如动态修改cut),模型将变成无限博弈,复杂度未知。 -
联盟合约
能否让多玩家联合部署单一“集体合约”?此时均衡与coalitional game交集尚处空白。