MatchboxDao is organizing an E-sport tournament: 0xMonaco: The battle of Titans in a closed league with only the best Web3 companies as participants. It will be the “World cup of the Web3 companies.”. The idea is to find out which company has the best technical team. There will be real-time streaming and top-tier commentators with key partners.
We have made modifications to the original 0xMonaco to make it more suitable and entertaining in a tournament format. If you aren’t familiar with 0xMonaco, here’s a quick recap.
0xMonaco was the latest CTF challenge in the Paradigm 2022 CTF series authored by transmissions11, Bobby Abbott, Sina Sabet. By way of introducing the game’s mechanism, it’s a racing game where three cars race against each other in each round. We want to express a deep appreciation for the amazing and groundbreaking job Paradigm and the original team did with the game.
The key idea behind 0xMonaco is that each car is a smart contact, but it goes far beyond a simple code challenge. It’s a social experiment involving pure technical aspects, economic incentives, utility optimization patterns, and stress testing of rationality.
Looking at the final product, we can divide the successful strategies into three main categories — economic strategies, relative speed/position strategies, and defensive strategies. While, in reality, a player would often employ an ensemble of these strategies, making the three categories of rough distinctions is nonetheless very useful. This is because a player would often prioritize one strategy over the others, for example, resource management (i.e. maximizing economy by sticking with the race from behind for early/mid games). In addition, we’ve also seen distinctive strategies that were very creatively implemented, such as this car strategy by @ansgar.eth which finished 3rd (it used clever race predictions and simulations).
economic strategies focus on highly optimized resource management. They can be active or passive. The key idea is to accurately evaluate over/underpriced actions to manage the car balance and optimize the purchase of actions. Some strategies were more passive in the sense of reacting to price movement, and some were more active and made use of price gouging (buying actions just to make them unaffordable for the other cars) in order to lead other cars to sub-optimal resource management. Some examples are (1 2), with also this one being a pure economic strategy using statistics and not relying on other cars’ data. Overall many of the strategies used some kind of economic heuristics, while some of them devoted most of their strategy to creating optimized economic decision-making.
These strategies were based on constantly measuring and predicting the other cars’ position and speed relative to them. In this type of strategy, players use a set of heuristics, such as buying acceleration only when the speed and distance of the other cars are above some threshold. The key idea is to keep the car in a certain range of relative speeds and positions. Some strategies only took into account the relative speed and position (link), and some became more aggressive close to the finish line. Another interesting feature in some strategies was specific rule implementation to adapt/prevent certain scenarios. Some examples of this are the speed demon feature or the panic mode.
Defensive strategies are meta strategies that become more popular as the 0xMonaco event progresses. At the beginning of the challenge, ELO classes still needed to solidify. The result was that most strategies started hard with cars buying as much acceleration as they could in the hope that this would give them a sufficient lead to win, but soon the more clever strategies took advantage of “starting strong” cars and used tactical shells to close the gap near to the finish and win the race. This led to the meta-rule of trying to keep up with the race from behind, saving resources, and preventing the risk of being shelled and then losing all the advantages of previous acceleration buying. The strategy that finished 1st was based on this key idea.
Maybe in retrospect, it is easier to understand why 0xMonaco gained so much popularity and was so entertaining in its short period of existence. Still, most of us probably wouldn’t be so excited to hear a pitch about a PvP code game with very basic gameplay and rules. But this exactly captures the elegancy of solidity smart contacts, a highly concentrated logical system that encompasses unforeseen depth with only a few lines of code. We have already seen the power of elegant code in DeFi and creation of AMMs, but in the case of 0xMonaco, these phenomena are ported to an even more enhanced environment with constant iteration, and some of the most creative minds web3 has to offer to compete against each other.
When we tried to analyze the success of 0xMonaco, and the unique attribute behind we came to realize the following list:
In 0xMonaco, no one was safe. Players had to pay close attention to the simulation of the rounds and the adaptations other players made to win. Players could have been ranked 1st and then experienced a rapid drop. Strategies that were very successful at the beginning of the challenge or in a certain ELO class performed poorly in other cases. These dynamics came down not only to the speed of known adaptations but also involved a huge element of unpredictability. It initiated a game of deceivement and incomplete knowledge in which players constantly tried to come up with unpredictable strategies while trying to make induction from the results of each round about the other strategies. This highly dynamic environment is what made it so entertaining and exciting for many players and even external viewers.
One of the main motivations for developers devoting hours to the challenge was the reputational gain. When connecting the ELO scoring system with the leaderboard(containing the identities of the players), Paradigm actually created a reputational identity system. This was a big motivation, especially for highly skilled but less-known devs that gained a lot of attention and recognition. The meritocratic and informal nature of web3 creates a huge demand for this sort of challenge as a way to efficiently test and lookup for hidden talents.
web3 natives are very competitive in nature. The opportunity to perform better than other skilled developers, and more specifically, progression of the competitiveness degree as your ELO gets higher, played a major role in the success and the general entertainment. It’s hard to think about similar web3 closed loop events like this when coders are directly competing with each other. In some sense, it created a very MEV alike public event with constant alterations and adaptions.
Another reason many devs found the 0xMonaco very entertaining is that usually, writing production-ready smart contracts is a very exhausting and technical detailed job. Developers have to put a lot of effort into security aspects and gas optimization. By eliminating these requirements, developers had a lot of fun just playing around with solidity code and focusing mainly on strategy and the creative process rather than precise technical requirements. That allowed really to push the boundaries of creativity within smart contracts.
The web3 space is very familiar with game theory concepts. You can even think of blockchains, DeFi projects, and tokenomics approaches as experiments that try to align incentives of different individuals around the same goal or acknowledgment in the rational and utility optimization nature of human beings trying to pursue the ways which serve their interests the best. 0xMonaco is actually a framework for different concepts in game theory strategies that are based on incomplete knowledge optimizing different decision processes in order to win. That was a very fun experience that allowed the practical use of game theory and social concepts for the Giga brains of the space.
BANANA: Drop on the road, and the next car that goes through gets its speed divided by 2
SHELL: Reduces the speed of the car like in the original version can be used to shoot down bananas in the way
SUPER_SHELL: Same as a shell but touches every car beyond until the n°1 (and it’s more expensive) it also clears all the bananas in the way going through shields
SHIELD: Protects the car from getting a shell. One shield = 1-time protection
Our goal is to preserve the experience from the original 0xMonaco. To do so, we have to alter the game mechanics and understand that the assumptions and conclusions have been made in the last round. If we rerun the same challenge, we’d probably create a more predictable game experience with certain meta-rules becoming part of all the strategies. This will make the game not as fun as in the original round.
We expect to have the next changes:
creating an optimized design would be much tricker, firstly due to the fact there are more actions to choose from and take into account and secondly because different actions can achieve similar goals. Price gouging for shells might not work well as in the original because players also have access to super shells and bananas as a way to increase their relative speed and position. Price discovery would be more dynamic and interesting.
One of the most interesting aspects of the previous round is the creation and gradual development of meta-rules. What’s interesting about them is that meta-rules are very organic they evolve from trial and error and the natural selection process. They represent general rules successful strategies should take into account. For example, one of the meta-rules of the original round was trying to keep up with the race from behind and, more generally, dividing the race into sections(in terms of distances) in which cars become much more aggressive and active as they approached the end. These meta-rules are great, but we don’t necessarily want to have the same rules. We want to see the creation of new meta-rules and the adaptions teams would do in order to gain an advantage. one way we are dealing with it is to make defensive and passive strategies less optimal, now a car that wants to keep up with the race from behind would have to face potential bananas throws that would make it to spend money on shells and shields or to lose speed.
Our pilot would be in an upcoming closed tournament. This will result in a much smaller pool of players. In order to create a fun and unpredictable experience, we wanted to offer additional features to allow a lot more room for potential adaptions and new approaches for strategies. We also think that by adding big actions like the super shell, we can have many more unexpected twists and turns in the lead due to the bigger effect they hold. Another cool feature we are introducing are actions that have an effect on two players at the same time. For example, the super shell can potentially slow down two cars or clear bananas for the cars ahead. Generally, the actions would have much more complex effects.
another problem as the challenge progressed was the creation of pretty solid strategies which are similar but had slightly better execution or parameters. These phenomena happened in the top ELO ranks of the original 0xMonaco, and as for our tournament, you can think about it as a very high ELO rank from the beginning. This puts a lot of emphasis on feedback loops and creates a challenge in accurate execution, but we generally think it’s much more exciting to see and perform against completely different strategies rather than compete on slightly better execution of similar strategies. Also, due to the limited feedback teams would have during the rounds of the tournament, luck rather than skill can play a major part. This is why we extended the set of actions in order to create much more possibilities for new approaches and creative strategies.
one way to make other cars waste resources could be using relative pricing. For example, if the cost of throwing bananas is cheaper than the cost of the affected car to shoot it down with a shell/shield or new acceleration to gain back the same speed, throw a banana.
Other rules might be, If the cost of shell >shield> the cost of buying acceleration to gain the previous speed, then don’t buy a shield and wait to be shelled.
On the original 0xMonaco, the only way for cars to increase their relative speed compared to the cars behind them was by buying more acceleration. Now bananas are like shooting a shell backward. This introduces a much more interesting dynamic in which all the cars are constantly threatened by all the other cars. In practice, This kind of strategy can work as a next rule-based system- if the effect(on relative speed) of buying x units of acceleration is =< to the effect of the car behind getting hit by bananas, and also the price difference is above K(parameter), throw a banana.
If, in the original challenge, the only way cars could protect themselves was by sticking to the race from behind or trying to minimize loss of speed by playing passive and buying less acceleration throughout the race, here cars would have two mechanisms to protect themselves, shields and shells(to shoot down bananas) in practice defence strategy can be represented in various ways, timing will be very important, buying shields or shells to shoot down bananas obviously make sense if the price of buying is not too high compared to the price of regaining the speed through acceleration. Shields might play a major role near the end in order to secure a position gap. Also, shields and shells can both protect the car from a banana hit. Clever strategies would have to take this into account when making an optimized defence move.
There are many more types of strategies and approaches. We are looking forward to witnessing the creativity of the teams.
Stay tuned for the tournament announcement:
Article written by:
**Don’t miss upcoming articles: