0xmonaco CTF 体验心得

由开发人员、艺术家和设计师组成的集体 MatchBoxDAO 宣布推出 MatchBox Arena。该团队将其称为“Web3 公司的世界杯”,并表示游戏锦标赛旨在找出哪家公司拥有最好的技术团队。

首先,可以代表公司和世界顶级的crypto公司(uniswap,polygon,ledger,chainlink。。。)同台竞技真的是一个非常荣幸的事情。所以我牺牲了宝贵的春节假期,就一直在打这个比赛。

这次CTF是一个用solidity操控汽车的算法比赛(终于遇到我非常感兴趣的地方了)

介绍

这本质上来说是一次博弈实验,而不是一次简单的代码hackthon。更像是一个社会实验,涉及纯技术方面、经济激励、效用优化模式和理性的压力测试。

对于每一个参赛者,你需要实现自己的Car合约,特别是takeyourturn这个函数。对于每一轮你都需要做出决策,具体有五种决策:

1)加速(ACCELERATE)

2)炮弹(SHELL)

3)超级炮弹(SUPER_SHELL)

4)香蕉(BANANA)

5)盾(SHIELD)

有点像跑跑卡丁车?是的。。每一种决策都会耗费掉你的金额,你的金额总量是17500。而道具的价格会随着轮次和大家购买数量的变化而变化。

策略

大体上一般分为几种策略:

1)激进策略:不断加速,尽可能耗尽金额冲到终点。

2)防守策略:前期猥琐,等1,2名互相消耗金额了之后再发力。

3)金融策略:打持久战,选最便宜的时候买道具。等他们的金额耗费了很多的时候,就把价格拉起来,打金融战。

4)xjb策略

问题的本质是一个最优化问题。但因为这里状态很多,而且没有最优子结构,这里不能使用动态规划。我的第一个想法其实是贪心, or 强化学习。但注意这里是一个使用智能合约的编码环境,solidity没有办法实现pytorch和tensorflow的计算。强化学习只能使用QLearning来模拟。

1)强化学习。

Qlearning的实现主要是定义状态,然后实现状态表,定义状态转移方程。这里的难点是怎么去定义状态S (s1, s2, s3 ….. ),和学习数据的问题。对于每一刻状态s,决策理论上是无穷的,而且数据无法拿到对手的数据,这里的方法是不可能实现的。

2)求解博弈论模型。

也是需要提前定义好决策集合,设计奖励函数,遍历2个轮次的决策结果,选择在三者博弈下最好的当前抉择。这个的难点其实在于决策本质上也是无数的,而且计算量也是很大。

3)贪心策略。

这大概是最可行的决策。我们没有办法计算出全局最优的决策,但是我们可以计算出当前状态下最优的决策。这个是可行的。我尝试把计算全局最优的想法,专注在局部最优。

局部最优:我希望在考虑对手的决策的前提下,计算出当前我决策的最优价值的决策。

总结

比赛还在继续,赛车博弈这真的非常有意思。只是时间太尴尬,发生在了春节。

梦回当年打ACM的日子。。。

Subscribe to shaneson.eth
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.