Movement Chains

Movement Chains

arkinox

Cyberspace is a digital space that has 3 axes each 2^85 long. Objects from the nostr protocol can be addressed in this space in several ways. The method usually depends on the event's kind. Generally, all coordinates are derived from a 256-bit number by discarding the least significant bit and then dividing it into three 85-bit twos-compliment integers representing X, Y and Z coordinates; this is referred to as embedding.

  1. Kind 1 "notes" are addressed by simhashing the content of the event to obtain a 256-bit hash, which can be embedded into X, Y, and Z coordinates. This is referred to as a semantic coordinate because there is a relationship between the coordinate and the meaning of the event.
  2. Constructs are kind 33333 (replaceable) events. The construct event ID, a 256-bit hash, can be embedded into X, Y, and Z coordinates.
  3. Operators' home coordinate is derived from their 256-bit pubkey which can be embedded into X, Y, and Z coordinates.
  4. Operators that have a kind 0 with a valid NIP-05 will have their home coordinate addressed to the semantic coordinate of their NIP-05 identifier (e.x. the embedded simhash of arkinox@arkinox.tech)

Operators rez into their cyberspace journey at their home coordinate and then utilize proof-of-work to move around cyberspace. By publishing a kind 333 "Drift" event, the operator can specify their current coordinate (which will be their home coordinate for their very first drift event) and the direction they wish to move. The amount of NIP-13 proof-of-work on the drift event will determine their acceleration. Acceleration is added to their velocity, which begins at 0.

Each subsequent drift event must reference the previous drift event in the e tag and supply the remaining amount of velocity from any previous drifts. Velocity is decayed by 0.99 at a rate of 60 times per second. This continuous chain of drift events referencing their previous drift events is called a movement chain.

The movement chain allows anyone to verify that the movements are legitimate and that the operator followed the rules to arrive at the position their currently occupy.

To verify a movement chain, one must query and receive EOSE for an operator's drift events. Then, starting with the oldest event, the movement must be simulated and checked against each subsequent drift to ensure they are within an acceptable tolerance (TBD). Checks include velocity, created_at timestamps, and resulting coordinates.

If a drift event goes outside of those tolerances, it is considered "broken" and the last valid drift event is considered the "tip" of the broken movement chain. Other ways a movement chain can break:

  • a new drift event is published that does not reference the most recent drift event before it. In this case, the last drift event in the previous chain is the tip.
  • a new drift event is published that references a previous drift event which is already referenced by another drift event (movement chain fork). In this case, the last valid drift event published before the fork is the tip.

When a movement chain is broken, the new (technically invalid) movement chain is treated as if it is valid, but the tip of the broken chain acts like a frozen ghost copy of that operator. This copy is vulnerable to Derezz attacks just like any operator is, but more vulnerable because the copy is stationary.

A Derezz attack, if successful, will "kill" the victim and teleport them back to their home coordinate while also nullifying all of their proof-of-work Armor, Stealth, Vortex, and Bubble events before their demise.

A Derezz must reference a drift event of the victim and the attacker's previous drift event in the e tag. The p tag must reference the victim.

A Derezz attack may be performed on any drift event. However, the newest drift events are the most vulnerable. The older a drift event is in its movement chain, the less vulnerable it is to a successful Derezz. This is why the tip of a broken movement chain makes the operator extremely vulnerable to Derezz, because the broken chain no longer has any new drift events to defend it from attack. Here is how it works:

  • A Derezz event "X" references the victim drift event "D" in the e tag.
  • The sum of proof-of-work of all events in the victim movement chain following event D but having a timestamp before X is considered temporal armor against the Derezz attack.

The power of a Derezz attack is the amount of proof-of-work in a kind 86 event. Only 1 unit of Derezz is enough to kill a target operator. However, the Derezz power is applied like this:

  • The maximum applied power of the Derezz attack is floor( attacker valid movement chain length / 1000 )
  • The distance between the attacker and the victim drift event is subtracted from the Derezz power.
  • The victim's Armor proof-of-work (kind 10087) is subtracted from the Derezz power.
  • The victim's temporal armor is subtracted from the Derezz power.

If the remaining Derezz power is negative or zero, it has no effect.

By these rules, the tip of a broken movement chain will never have temporal armor. Drift events are essentially permanent, so a broken movement chain will remain vulnerable as long as the operator has not been killed. Once Derezzed, an operator starts fresh with a new movement chain at their home coordinate and no prior chains can be targeted.


Check out the cyberspace spec and contribute: https://github.com/arkin0x/cyberspace

Try out ONOSENDAI, the first cyberspace client at https://onosendai.tech

Github: https://github.com/arkin0x/ONOSENDAI

Telegram: https://t.me/ONOSENDAITECH

Read more about cyberspace:

https://telegra.ph/Cyberspace-and-Proof-of-Work-04-17

https://telegra.ph/Cyberspace-A-Real-Digital-Place-04-13

Geyser: https://geyser.fund/project/onosendai

npub1arkn0xxxll4llgy9qxkrncn3vc4l69s0dz8ef3zadykcwe7ax3dqrrh43w

NIP-05 arkinox@arkinox.tech

LN arkinox@getalby.com




Report Page