|
Features

Policing Online Games: Digital Currency
In
some environments, it doesn't make sense to place all the power
and responsibility on a central server. Peer-to-peer networks
can also trade bills, although they must take some extra precautions
to prevent counterfeiting. Anyone can hand over a bag of bits
to another player, but there's no simple way to prevent them from
counterfeiting by handing over the same bits to other people.
The
best approaches can only reduce the load on the central bank because
there's no way to eliminate it. All of the notes must run through
a central location to check for counterfeiting, and the security
of the system is directly proportional to the time between checks.
Banks may check only a fraction of the bills chosen at random,
but they can't eliminate the check altogether.
A
transaction in this scheme will look something like this:
-
Each bill consists of a data structure specifying the serial
number (num) and the denomination (amount): B(num,amount).
-
Each bill carries with it a chain of digital signatures of each
owner, beginning with the bank itself. If Sbank(B(num,amount))
represents the signature of the bank at the bill's birth, then
this chain might look something like this:
| SAlice(SBob(Sbank(B(num,
amount)))). |
|
This means that the bank created the note, gave it to Bob who
gave it to Alice who is now the rightful owner.
-
The player spending the bill will add a new signature to the
chain, giving up control of the bill and specifying the new
owner. This is like endorsing a check.
-
The new owner accepts the bill and checks every digital signature
in the chain. If they're valid, then the new owner closes the
transaction.
-
The new owner checks for counterfeits by comparing the new bill's
serial number will all the others owned by the player. This
won't detect all counterfeits, but it will find some.
The
notes grow each time they're spent in this scheme forming a chain
of custody for the cash. Counterfeiting, if it happens, can be
identified by looking at the chain of custody. If two bills with
the same serial number appear, the counterfeiter can be identified
by walking up the chain of custody to find the person who spent
it twice.
The
role of the bank depends upon the nature of the game. In the most
extreme case, there's no need to look for counterfeiting because
the game comes to a grand conclusion when everyone turns in their
notes and their pieces, perhaps to claim a share of a purse. If
there's one final judgement, then everyone can search for cheating
at that point. There's no need for auditing along the way.
Often,
waiting for the end of the game can be a mistake. Some games come
with no ending. Others could be wrecked by some jerk counterfeiting
like crazy.
Auditing
can take any number of forms. Complete audits every n turns
would require everyone to turn in their bills and receive new
ones. This also saves overhead because the new replacements would
not have a potentially long chain of digital signatures to be
checked. The auditing will also clean house and add efficiency.
Another
strategy is to recall bills selectively. Every so often, the bank
will ask all bills with a serial number ending in, say, a 3 to
be turned in. If this value is chosen at random, the cheaters
won't be able to time their counterfeiting for maximal effect.
Making Change
Digital
cash systems in peer-to-peer environments work more efficiently
if the peers can split notes and make change. Requiring people
to head to the bank to make change may help auditing, but it may
be too onerous in any peer-to-peer environment.
Another
solution lets users split the bills themselves. The simplest approach
is to allow users to insert a message into the chain of digital
signatures that says, in effect, "This bill has been split into
n pieces and this is piece number i." Everyone who accepts
the bill afterwards will treat it as being worth only 1/nth
of the original denomination.
If
n=10, then adding digits to the serial number is an efficient
solution. A player with bill number 1045 would split into ten
parts by creating new serial numbers 10450,10451,¼,10459.
Removing the Central
Bank
There's
no reason why there should be only one central bank for each game.
While it may be efficient in some cases, it can be a bottleneck
or an imposition on others. Some games may want to allow multiple
banks or even allow each player to run their own bank.
In
the most extreme case, each player also acts as their own bank.
Instead of withdrawing cash from a central location, they simply
mint it themselves. This temptation is not as dangerous as it
sounds because players can place limits on each other.
For
instance, if a board game begins by giving each player $100, then
each player could begin with the right to issue 100 notes with
serial numbers between 0 and 99. If someone notices a bill with
a serial number outside of this range, then there's evidence of
counterfeiting or at least inflationary spending.
Multiple
banks do not change the transaction process. Each player still
checks the validity of the chain of signatures and looks for potential
duplicate serial numbers. In some sense, the issuer's name or
number is just another part of the serial number for the bill.
Multiple Audits
Separating
the auditors from the company is one tradition from the business
world that can work here. There's no reason why the same person
needs to maintain the bank and audit the transactions.
One
simple solution is to allow any player to recall bills at any
time. Well, subject to some rational limit. One player may ask
all players to turn in a particular subset of bills at one time.
Demanding all that end with the serial number `5' would pull in
one tenth of the notes and uncover any cheating from that set.
The
auditor can either return the notes to circulation or replace
them with new notes drawn on a new bank. Having multiple players
issue new notes will make things more confusing, but reduce the
ability for individual players to create havoc. If another player
may recall notes at any time, cheating can be discovered faster.
The
downside of these multiple audits can be confusion. What happens
to the status of a note if it isn't returned? It will not
be valid, but what if this happened because of a software glitch
or a communications failure? Is there a failsafe process? Adding
all of the layers of audits discourages some cheating but certainly
increases the complexity of the game.
Conclusion
Never
Board Games created their own toolkit that lets one player's computer
act as the bank for the system. The bank issues all of the notes
at the beginning of the game and then lets players swap them as
they need to. Auditing is only done by each player after a transaction
and at the end of the game. Since many games created by Never
Board end up with one person owning all the money and property,
this is effectively the same thing.
This scheme also protects the
privacy of players. If the bank does not scrutinize every transaction,
then the bank can't know how much each person holds. People are
free to cut side deals without telling the rest of the board how
much cash they are trading.
Digital
cash systems are just more specialized versions of the process
for controlling the proliferation of objects. Every digital game
must stop people from duplicating desirable objects, and cash
is often the most desirable object. There's no reason why other
objects can't be defined with the same system if the rules of
physics apply. It may not make sense to split apart a suit of
armor, but there's no reason why a flagon of beer can't be split
into n different parts.
The
schemes in this chapter offer a rudimentary form of privacy that
may not be ideal in all cases. While a distributed mechanism doesn't
let any one player pay too much attention to another, all the
transactions are essentially in the clear. If you can see all
of the bills, you can know who did business with whom. This can
be a problem because people can pick up the data as the bills
circulate.
Lessons
-
Cash is just another object that shouldn't be duplicated.
-
The most important parts of a digital cash object are the serial
number and the value.
-
Digital currency may also include other values in the data structure
like the rightful owner, the interest rate paid on the note,
and the expiration date.
-
Everyone in the game wants to prevent others from cheating by
spending the same bill twice.
-
One solution is to run every transaction through a central bank.
This may stop cheating by ordinary players immediately, but
it places plenty of power in the central bank. Power can corrupt.
-
One way to spread authority is to require each person to sign
a bill over when spending it. This creates a chain of digital
signatures showing who owned the bill at what time.
-
If two bills appear with the same serial number, the counterfeiter
can be identified by looking at this chain of custody.
-
Auditing can occur at random times by requiring players to turn
in all bills with certain classes of serial numbers.
-
Players can create change by attaching another note explaining
that the bill was split into n parts and this is the
ith part.
For
more information about the book, an FAQ, an ordering form, and an
errata page, go to http://www.wayner.org/books/pog
______________________________________________________
|