Skip to main content

One post tagged with "economics"

View All Tags

xx Network validators, shall we play a game?

· 16 min read

Shall we play a game?

The problem

xx Network has a small, but growing number of nodes owned by centralized entities ("pools"). As far as I can tell most Substrate-based chains do.

I happen to care about xx Network and I don't think we should have anyone control more nodes than the current cMixx round size (which is five).

There are variuos measures the xx Network Council has initiated to protect enhance decentralization, but as a demonstration of a working decentralized approach I'm willing to spend some of my XX coins to make a point.

Did you know...

This is only loosely related, but: did you know that Polkadot has a community event called "The Spammering" that is about to happen?

The Spammening, Polkadot’s ultimate stress test!

Polkadot is about to be put to the test as we push it to its limits in real-time. Get ready to witness the network’s resilience and scalability under extreme load as we #RekTheMeter!

This game can be thought of as a watered-down version of xx Network spammering (and in the opposite direction).

The Mission in xx Network era 1107

Your mission is to block an IPv4 address of a cMix ID node (the cMix ID) during the game era ("the era", which is 1107).

That IPv4 address will belong to a pool node identified by the cMix ID.

The cMix ID will be shared 3-4 hours before the era begins so that you have time to find and block the IP (which takes mere seconds - see below).

note

If less than six valid applications are accepted for era 1107, the game will continue in era 1108 for the remaining slots.

Rewards

Rewards for participating validators

You will get over 100% of your normal validator reward if you successfully complete the mission. Those who partially (>50% failure rate) succeed will also get rewarded, but less.

Assumption:

  • You make 40 XX in most recent era directly preceding the game era(s) (era 1106)
    • Assumption: node earnings 182 XX x 22% (maximum validator commission acceptable for this game)

Examples of earnings for two outcomes with rewards:

  • Validator successfully fails 100% of cMixx rounds with the target during the game
    • Due to these failures you make 30 XX in the era (lose 10 XX, (40 - 30)). I will compensate you for the 10 XX
    • You will receive a separate bonus of 100% of your earnings from the previous era (40 XX * 100%)
    • My net payment to your address: 50 XX
  • Validator fails between 50%+1 and less than 100% of the rounds shared with the target
    • Due to less failures than the more successful players, drop in earnings is maybe just 5 XX (40-35)
    • I will compensate you for the 5 XX and pay 40% of the earnings from previous era: (40 - 35) + (40 x 40%)
    • My net payment to your address: 21 XX
  • Validator participates but is incompetent and doesnt' hit > 50% failure rate
    • They may lose 2-3 XX ("small success") or nothing (ineffective application of firewall rules)
    • They get no compensation and no reward, so if you can't take the risk just join the chat
    • I may compensate their nominators depending on the type and extent of screw-up (stupid screwups - no compensation)
      • Example of a stupid scrweup: you block IP address of the cMixx permissioning server instead of the cMixx ID you're supposed to

Separately, I will compensate all of your nominators for the difference (drop) in rewards for the era compared to the previous era.

Additional rewards may be dispensed depending on effectiveness of the game and if less than 10 validators participate in era 1107, the game will continue into era 1108 and I may increase rewards for the remaining slots in era 1108.

info

If you participate in era 1107 but less than 6 validators participate in that era: you may also apply to participate in era 1108.

Example: if 4 people apply in era 1107, we'll take 6 people in era 1108. Applications for era 1108 will be possible as soon as era 1107 begins because by then we'll know how many unused slots we have for era 1108.

Your earnings in era 1106 will be used in era 1108 reward formulas because the same validators may participate in both era 1107 and 1108.

If five or more validators hit 100% failure rate with the target(s), I may give additional rewards to those five validators. I may also lower the criteria for above rewards if the target makes frequent changes to the IP address that make achieving these objectives hard.

Please check the rules and qualifying criteria.

Rewards for Space chat participants (non-validators welcome!)

Contributing and silent observers are welcome to join the Space. Those disapproving of the game will be permanently blocked from the Space.

A reward of 30 XX will be given to most valuable chat participant in the Space based on quality of their feedback related to this game. Both validators and non-validators qualify and validators don't need to meet any additional criteria besides their validator application.

This will be evaluated between UTC 4:03am before the era until the end of the era (27 hour period). The number of messages sent must be more than one, but whether it's 2 or 20 will not influence the odds of getting this reward. Quality first, engagement second.

Please make sure to check the rules and requirements below.

Rules

This is a bit complex, but it has to be because participants can apply and not participate. I could use multi-sig and a trusted co-signer to get minimum deposits for no-show participants, but this is easier.

Rules and crieteria for participating validators

I have to share wallet addresses because everyone must be able to verify that all applicants are qualified. That's why I cannot accept applications via DM.

  • First 10 qualified participants who apply will be accepted
    • If you see more than 10 submissions maybe it's not too late to apply - you may want to check those wallet addresses to see if the applicants qualify. If they obviously don't, submit your
    • As I check each application, I will comment and approve or reject until 10 have been approved or the era begins (whichever comes sooner)
  • Objections regarding qualifications can be shared in the Space
  • You may DM me with private questions
  • No applicants details from DM will be shared or retained by me (whether or not you're accepted)
    • Note the xx Haven Space is public, so if you join the Space others will be able to see your Haven ID
      • You may join the Haven Space using a disposable Haven ID, submit your application, then leave the Space and optionally rejoin with a different Haven ID to monitor updates.
warning

Approved no-show participants may have their wallet addresses posted on my blog.

This is the main reason why I ask for signed wallet information prior to the game.

Please do not apply if you do not intend to participate.

Criteria for validators

The first 10 people who post their signed wallet addresses and meet the following criteria:

  • Active validator in the era directly preceding "the era" (of the game)
  • 22% or lower commission the era prior to, and during, the game
  • At least 15K XX validator stake on the node in the game era (if you don't have now, you can bond before the era and unbond later)
  • Not a pool wallet. Wallets from pool nodes or obvious node farmers with 5 or more nodes will not be accepted
  • No nodes with recent history of > 25% commission as per xx Network Wallet (validator commission chart in the official wallet - see this example of a qualified node in terms of validator's commission history)

Note that some delays may happen in posting how many people have qualified.

Expected Haven message format for validator submission:

VALIDATOR
Address: <address>
Signature: <walletSignature>

See technical tips on how to do this.

note

Validators don't need to make a separate submission for chat rewards - if you participate and win, I'll use your validator node wallet to pay out.

But if you submit your validator application using one Haven ID and then rejoin for chat using another, please submit a chat address signature as well (if you want to qualify for the chat reward).

Rules for non-validating chat participants

Soft requirement: sign a XX wallet using the same wallet address.

  • Those without a signed wallet may be blocked at my discretion
  • Those without a signed wallet won't qualify for chat rewards (because I wouldn't be able to pay them)

Expected Haven message format for validator submission:

CHAT
Address: <address>
Signature: <walletSignature>

See technical tips on how to do this.

Payouts

The payout will happen within three eras after the game era. Why so long?

Because I need to check thousands of rounds of the target node and make sure that participating validators have not participated in any of the successful ones. That will take time.

I plan to write a script that checks all rounds or (worst case) manually check a sufficiently big ample of the target's successful rounds and verify that each participant's node has failed more than 50% or all 100% of them in during the era.

Chat rewards will be dispensed promptly.

Technical tips

How to find IP address for the validator?

Search the cMixx log for cMix ID 0wjnYzegPz42ZZVc_dpB0RMRfddbEbdy_AkmsBbyrdMC or its substring:

cat /opt/xxnetwork/log/cmix.log | grep "Disconnected from 0wjnYzegPz42ZZVc"

If you can't find it, ask for help in the Space.

How to block and unblock an IP address?

sudo ufw deny from <ip address>
tip

Use sudo ufw status numbered before and after you add the rule, and note the new rule number.

You can delete this new rule later with sudo ufw delete NUMBER where NUMBER is the new rule(s) you added.

For more tips see the official examples at ubuntu.com.

How to sign your wallet address?

Look at the screenshot or see this example.

Sign your wallet

  • Validators: sign your node's validator's (not controller's) wallet address. From that I can see your cMixx ID for the game era, and check if meet the qualifying criteria. Validators are automatically qualified for chat rewards
  • Non-validating chat participants: sign any wallet address (to which you hope to receive chat reward) using the same wallet

Based on the output in the screenshot above, the validator would paste this into the Haven Space:

VALIDATOR
Address: 6aCE19CakDJBp8wnVHB2HpHYfaeNiwx2RxQcsAcyWvPLVn5k
Signature: 0x9071685d1321e337a7e5b6bcecba433dc75ed18e5ac6e867fccb18ad2c1c31427757d241d021b6b8bcb5450472d65abb0ab5a261c4cfcd013ef089bd791a588a

Chat participants would just replace VALIDATOR with CHAT - the rest would be the same.

What happens to my validator if I participate?

Rounds in which the blocked IP participates would fail due to pre-comp timeout. Other rounds will work fine.

If your node was to fail 20% of the rounds, you'd make close to 20% less, i.e. your validator earnings would drop by almost 20% of your commission (assuming your commission is 22% that would be 22% - (20% x 22%) or a drop of less than 5 XX).

Your nominators will be similarly impacted, but they'll be fully compensated as I've explained above.

note

If you have additional technical questions, ask them in the Space (do not use DMs for public questions) and I'll add them to this page.

Questions and answers about the game

What happens if the target changes their IP address?

There are several potential targets, so they're unlikely to watch our Space and change IP address before or during our little game. If they do, though, let's consider some scenarios:

  • the target changes their IP address before beginning of the era: nothing changes for us. You may want to delete the outdated firewall rule and create a new one, and still earn partial rewards even if you do that hours into the game era - you just need to fail more than 50% of common rounds shared with the target
  • the target changes their IP address after beginning of the game era: my reward criteria will likely be loosened, but you can still modify your firewall rules to make more
    • if they change the node IP eight hours into an era and you update your rule 10 hours into an era, you can still meet the objective for more than 50% of the rounds and get the second tier reward
    • if they change several times during the game era (which I can check in my own logs), rewards will be prorated for the longest stretch (e.g. 6 hours) between two changes will be considered. In that case your node would make normal earnings for 24-6 hours (as blocking would fail), and I'd pay out a quarter (6/24 hours) of rewards. For six hours of successful blocking on a node that made 50 XX in that era, I'd reward you 50 x (1/4) x 100% (12.5 XX) if all of your rounds shared with the target during those six hours failed

In any case, you and your nominators won't make less in the era unless you act completely incompetently and mess up your node.

How can I time the firewall rule to begin or end just before or after the era?

Use the sleep command or use OS scheduler. For example, you can login as root (or a passwordless sudoer) and run the rule delete command after the sleep command.

sudo ufw deny ...        # enable blocking 
sudo ufw list numbered # note the rule number
su - root # passwordless suders don't need this
sleep 87000 && ufw delete ... # remove the rule (by the number)

Or simply just login tomorrow and remove the rule any time in the next era.

How does the nominator compensation work?

In the era before the game, your node earns 190 XX. In the era, if you do well your node will earn less, let's say 160 XX.

I will compensate your nominators for that difference (which would be (190 x 22%) - (160 x 22%)).

I will check every winner's nominators in the game era and send each nominator their ideal share of the loss. For example: if a nominator has 30% of all nominations, they'll get 30% of 6.6 XX (total drop of nominators' earnings after validator's commission is deducted).

What is the expected outcome

It is to estimate the effect (reward reduction for bad actors and their nominators) and costs (drop in rewards for the rest of us) of a community action like this. It's a special take on Polkadot's spammering, so to speak.

Ideally I'd like the community to be able to hurt pools in a cost-effective fashion.

Alternatively, the network can use formal measures by the Council or democracy vote, but voluntary community action is vastly superior to that approach.

note

Ideally, it would be organized by the community and I wouldn't have to spend my time and tokens doing all this on my own, but it is what it is.

Is denying IPv4 access the best way

It's not, but it's easiest.

Participants are free to use any way they want to fail rounds with the target.

Sample game workflow for validators

Sign your validator wallet address using the same address as explained above.

Paste the address and signature into the Haven Space:

VALIDATOR
Address: <yourValidatorWalletAddress>
Signature: <generatedSignature>
tip

Haven v0.3.22 has a paste bug. Use CTRL+P or similar if pasting with the mouse does not work.

I'll review and - at least two hours before start of the era - publish up to 10 accepted participants' addresses and name the target (example: cMix ID 0wjnYzegPz42ZZVc_dpB0RMRfddbEbdy_AkmsBbyrdMC).

Find the IP address:

cat /opt/xxnetwork/log/cmix.log | grep "Disconnected from 0wjnYzegPz42ZZVc"

Let's say this shows you the IP address is 1.2.3.4.

Shortly before the era begins, block the IP and note the UFW rule number:

sudo ufw deny from 1.2.3.4
sudo sudo ufw list numbered
warning

Do not paste the example IP address (1.2.3.4). Use the correct target's IP address. You may create multiple rules if you wish.

Then record the new rule numbers - you'll need them to remove them later.

After the era begins, use the xx Network Dashboard to confirm rounds are falling.

You may login or recheck the dashboard during the era to confirm the target is still using the same IP. If not, remove the existing UFW rule and update it to continue blocking.

You can do this to remove the rule in little over 24 hours.

su - root
sleep 87000 && ufw delete <ruleNumber>

Do not log out. If that is not secure, then use screen to issue the command and detach, or create a one-time cronjob.

tip

87,000 seconds is 1 day and 10 minutes.

Use multiple delete commands to delete multiple rules.

For multiple rules, delete them in descending order. If you added rules 4, 5 and 6, first delete 6, then 5, then 4. Otherwise delete rule 4 three times.

Or you can login in the next era and remove the rule(s) with sudo ufw delete <ruleNumber>.

Login after the era to confirm the node is no longer blocked in ufw. Or keep them blocked, if you want to help the network.

Hop on the chat to get started

Join ArmchariAncap Chat Space to ask questions, watch or participate!

  • Admin: recruitAnarchicIntent
  • ArmchairAncap's wallet used for (outgoing) payments: 6VXfntvzZTzY2YPA4KtSVZMx1YqPFTo7o8qtddNLB4K91Mcn