Skip to content

Instantly share code, notes, and snippets.

@colin-1833
Last active October 30, 2021 04:58
Show Gist options
  • Save colin-1833/04030a60de104549ad1289df900a36fc to your computer and use it in GitHub Desktop.
Save colin-1833/04030a60de104549ad1289df900a36fc to your computer and use it in GitHub Desktop.

Problem

RP is a complex codebase of contracts and it's hard to know how all the game theory assumptions will hold up if we assume node operators don't care about the health of the RP network. On prater and mainnet, NOs will mostly behave, following the CLI suggestions. How can we simulate an environment where more adversarial NOs exist?

Potential Solution

Create a game to incentivize prater NOs to try and game the system, with no cost to their reputations. Nominate some NOs to "play". Each player is given exactly 17 gETH (1 extra for gas costs) and some amount of gRPL. They all run a staking node for the same period of time, and, at the end of the period, the RP team runs a script to confirm that the participating players followed some set of rules agreed upon before the game. Players that game the RP system to make more RPL or ETH while operating their nodes will win real RPL at the end, with the highest performing operator recieving the largest payout.

Implementation

This game would require no changes to the RP codebase. It would only require the creation of some basic rules for players to follow. The rules would need to be verified by a simple script at the end of the game. The script could be written in JS, GO, or any other language.

Benefits

In order to win the game, players will need to consider any strategy, malicious or not, that will earn them more ETH and minimize gas usage along the way. The larger the payouts at the end of the competition, the more clever our players should become.

Open Questions

  • Is it possible to simulate the high gas environment on prater/goerli at all?
  • Should seperate games be held for node operators with and without RPL collateralized nodes?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment