Eveconomics

Flower

How long does it take?

Not to screw in a light-bulb. Honestly, I couldn’t care about that. And I doubt CCP would either, seeing as it’s light 24/7 in Reykjavik at present.

But it has been about a year since the first CSM was sweating their asses off in the meeting room, known as Exodus, at CCP HQ, due to the lack of air-conditioning. A small ½x½ meter window was our savior that weekend.

One of the topics for discussion that weekend, was shares in EVE Online. Mainly the fact that they can’t be traded. But a very important thing which was also discussed, was the problems with share dividends. The dividends system is really old by comparison to things like the alliance system. However, it suffers from a “large” problem: It’s impossible to pay out a large sum of ISK at once.

The technical aspect

It turns out that the dividend system can only pay out the value of 2,147,483,64 ISK at a time. Anybody who has taken a computer science will, will immediately identify this value to be the size of a signed 32-bit integer. I.e an integer value with sign, that fits into 32 bits. The value of 32 bits is equal to 2^32, which comes to 4.3 * 10^9. That means the unsigned value of a 32-bit integer is 4.3 * 10^9 big.

To make it signed, you divide the value by 2, and put both + and – signs in front of that. That makes the 32-bit signed integer have a value from −2,147,483,648 to +2,147,483,647.

Based on this information, it’s fair to assume that the dividend system validates it’s values against the capacity of a 32-bit signed integer.

CCP could make it a 32-bit unsigned integer. But then again, that would only double the capacity. While it might be a temporary fix, in the long run we will face the exact same problem.

Bring out the 64 bits!

The obvious solution to this problem is to allow the dividend system to pay out the value of a 64 bit integer. The capacity of 64 bit is equal to 2^64, which is equal to 1.84 * 10^19. That’s a lot!

Even by making said value signed, it will still be more than enough.

“But we don’t have time”

Because the dividends system simply creates a transaction in the EVE database, it’s fairly reasonable to assume that the problem lies client-side. As such, it must be a value check on the client, which keeps you from paying out a large value. Because the value of transactions are virtually unlimited at this point(Probably a 64-bit signed integer) in terms of EVE Online, it should be possible to change the dividend system to allow such high payouts.

How long might it take? Well, assuming that the value validation on the client side wasn’t coded by a monkey, it might be a single method which needs to have it’s value, which it checks against, to be a 64-bit variable. Hard? If it is, then I’d like to point out that maybe there’s a larger issue at play: That the code-base was coded by monkeys.

One Response to “How long does it take?”

  1. June 8th, 2009 at 9:26 am

    bridgettah says:

    Nice question

Leave a Reply