QUOTE (pbangarth @ Sep 16 2010, 07:25 PM)

I guess the part I'm not understanding is this: Say firm ABC gets a nuyen labelled 10101100. How is this verified as being a legitimate nuyen, and not a copy, except by looking in every repository everywhere for another instance of nuyen 10101100?
Good question, and to go into it, I need to take a moment to talk about Public Key Cryptography. (You can skip ahead if you already understand public key cryptography.)
Public key cryptography relies heavily on the concept that some mathematical operations work very easily one way, but are extremely difficult to reverse. For instance, mod, or remainder. 5 mod 2 is 1 (easy!) but how do you figure out X mod Y = 1 for x and y? Now that's extremely difficult, especially when we're talking about giant numbers. So you can imagine the process of public key cryptography as being made up of keys, or Xs (variables) being plugged into effectively black box, irreversible equations to get new numbers.
The person sending the message has a private key, basically a giant, prime number. Only he knows it. He plugs the original message and his private key into the encrypting equation to make an encrypted message. Every private key also has a mated public key. If you plug the encrypted message and the public key into the decryption equation, you get the original message back. The two keys are mated - they only work in conjunction with the second key - but having the public key doesn't help you figure out the private key at all, so the private key is always secret.
So if you're sending out private messages, you can share your public key with all the recipients. Of course, this means your messages are only as private as your public keys. If everyone has your public key, your encrypted messages aren't secret any more - anyone can decrypt them. However, it has a second benefit. Since no one but you has your private key, and because keys are uniquely paired, that means that no one can falsify your encrypted messages. If you take an encrypted message and decrypt it with my public key, that means you *know* it was encrypted with my private key, and if my private key is kept very safe, that means you also *know* that it was me who encrypted it. This is called a digital signature.
Now the question becomes, 'how do I know that what I'm getting out is a sensible encrypted message'. That's a lot easier - you just make part of the unencrypted message static - identical in all messages. My example was '1111', although most likely it would be longer. This really is a message saying "I am a 1 nuyen note".
Because of the huge numbers we're talking about, it would be almost impossible (i.e. - 'heat death of the universe before you solve this equation') to create a private key/message pairing such that, using your public key, you would get that same tail.
So what is the process?
0) The bank generates a private and public key. The private key is carefully guarded, the public key is distributed to whoever wants it (via a secure method). Vendors download the public key and install it into whatever they're using to store encrypted nuyen token messages.
1) Bank makes an actual computer note, including whatever they want. If we go off of our current currency, it includes a serial number, location created, author, year created, that it is a note of currency, and it's value (also, a pyramid with an eyeball). We can play with this though, making it longer or shorter. There's also no reason to use decimal, since that's a bit wasteful, so likely a lot of this information is stored in hex instead (so you'd have the letters A-F included in your numbers). Part of this information changes from token to token, and part of it always stays the same.
2) The bank encrypts it with their private key, and probably encapsulates it in something useful (saying 'this is 1 nuyen').
3) The bank distributes the encrypted note to whoever wants it.
4) People using the encrypted notes exchange them like they would normal bills.
5) Vendors who wish to verify their currency decrypt the nuyen message using the public key. They look for the static '1111'. If they don't get '1111', it means either their decryption program or public key isn't correct (unlikely), or this isn't a genuine note (more likely). They can accept the note or not, as they wish - it's just a string of bits.
6) Vendors may, if they wish, report this information back up to the central banks. This secures and pools their money. At this point, they also report that this serial code was paid on this date.
The only big flaw in this plan is that an individual may copy that nuyen note, like putting a bill in a photocopier. This is a concern whenever you're using a decentralized electronic token system - no matter how you cut it, you're just shifting bits around, and bits can be copied. I can see two solutions to this -
a) Regular reporting. Fix the problem of decentralization by centralizing it. Vendors probably do this anyway, because centralization is fun!
b) Physical controls. The public key may not be just available for anyone to download. It may be encapsulated and hardcoded inside of a device, sold for more than it's worth. This is your credstick and credstick reader. If you control the hardware and make it very difficult to fool with, you greatly reduce the odds of tampering with it to the point of being able to copy data like that.
Of course, this would all be wrapped up with extreme penalties and fines for tampering, so a vendor won't do it just because it is so likely to be traced back to them (you don't poop where you eat and all that).
QUOTE (Dwight @ Sep 16 2010, 07:27 PM)

Asking "Is bill A444BCD106 stolen?" carries the implicit information that you are about to be in the possession of bill A444BCD106. Any vender that is NOT doing this is a potential dumping point for stolen currency (AKA currency that was truly issued and passes all validity checks unless you check back with the central database that keeps track of which is stolen and which is not).
Sending data up and down like that is time-consuming for no good reason. That's server-side processing for a basic data search. It's only real advantage is that it's up-to-the-second. Replace it with four downloads of the binary tree a day and you get basically good-enough time resolution without that cost.
(In practical terms, it's the difference between 1,000 1-second queries over the day, or a single 5-second query.) So because of size and time constraints, I imagine this information is downloaded daily and just processed locally.
The exception of course would be if you're accepting a million-nuyen transaction. Just like no bank is going to accept 5,000 twenties without doing some checking, they won't accept 1m in certified cred without double checking it. But this is why robbing a bank carries different concerns than stealing a wallet (and always has).
QUOTE (Smokeskin @ Sep 17 2010, 05:19 AM)

ZO has Bank A listed as the location of the nuyen. Bank A has you listed as the owner. You want to pay someone using Bank B. You tell your bank to transfer the nuyen to the seller's account. Bank A tells ZO to change location of the nuyen to bank B, bank B registers this and the seller as the new owner, and informs the seller that the nuyen is in his account.
You need to be able to spoof or fake the communication between ZO and a bank to cheat the system.
This is a traditional EFT, and indeed, spoofing the bank would be the only real solution. However, I'm still very wary of it. It's an extremely tight, well-tracked process with a big, fat electronic trail. I'm not aware of any successful attempts to simply steal money by electronically impersonating a bank, so I don't know that it's possible. It would be quite a heist.