Double spend when moving a machine

Hi All,

Just had a though regarding consensus on a transaction of Safecoins.

Compared to Bitcoin, the Safe network does not aim to reach overall consensus on a transaction. Instead it focuses on a selected group of vaults called Network Transaction Manager that verify the transaction based on Alice’s public key (Alice in this case sends a coin to Bob). 28 out of 32 of these
vaults have to agree that a transaction is valid. The vaults store the following data: current owner ID, previous owner ID, previous owner signature. The NTM (NTM1) thus knows who is the current owner
and only that current owner can spend the coin.

At least, that’s what I understood from the documentation.

The NTM is based on logical distance, not on physical distance. Here’s a nice vid explaining how a nodes join the network and creates an XOR routing table:

Now, for dramatic effect, Alice decides to move from Australia to Europe, taking with her the physical
machine that contains her Safecoin wallet. She flushes her routing table, connects to her new ISP, and a new routing table is build (based on the closest address, as can be seen in the vid at 02:33).
Essentially, a new routing table is build, and likely a new NTM (NTM2) is validating Alice’s new transaction, of the same coin.

Since only a limited part of the network (NTM1) has reached consensus on Alice’s first transaction, NTM2 considers the second transaction valid, and a double spend has occured.

Curious what I’m missing here.

The coins don’t move - Only the owner changes. So the consensus group is huddled around the coin’s address, not Alice or Bob’s… And the coin’s address never changes or moves. Some of the 32 may come and go, but their replacement will be brought up to speed pretty quickly.

So Alice signs a note to the neighbors of the coin saying “I don’t own this anymore, Bob does” If they agree Alice owned the coin, and that her signature is valid. They forget all about Alice, and now only listen to Bob.'s instructions on who owns the coin.


In above example 28 out of 32 agreed. Does that count as agreed or not? I think the question is centered around that.

28 out of 32. are needed for consensus.

I think his question assumed that the coin was contained in a wallet that moves and thus it’s neighbors would change… . That isn’t how it works. The coins stay put in address space, no matter where the owner is…

1 Like

Nothing should exist on your physical machine, except

  1. If you have a vault then a config file that states size of vault and wallet address to be paid on farming.
  2. Perhaps bootstrap cache file to allow reconnect to network (not required, but helps)
  3. A crust config to allow reconnecting to network (not private, public data and not with any info about you, same file can be used by anyone (within reason, you may have port forwarded your router etc.)

None of these have anything to do with the user (SAFE user) and you can go to any machine with a SAFE app and log in. (I am ignoring malware etc. here).

So the point is your machine is not anything to do with you the user in SAFE, your machine is just a bit of hardware we need. Nothing should be there to link you a person to the network.

So log in from anywhere you want. If you have a laptop etc. then no worries carry it with you (it may be your secured OS etc.) and you are fine. There should only be one network and that one network will come to the same consensus from anywhere in the world you connect to it.


The wallet for Bitcoin is stored on a machine. On SAFE it’s not, it’s in the network. So when you log on to SAFE, you request your own personal file. It’s contains the data-atlas. When you type username and PIN and password, a hash is derived from that info. That’s the address of your personal file (to the network just another Chunk). So the Chunk comes to you computer, you decrypt it using your password. Inside that personal file is your wallet. It contains the public and private keys etc. It also contains the data-atlas to all your files.


For Bitcoin Core running on your PC, to be precise and not possibly avoid confusion.
For other bitcoin wallets, even those that run on your PC, you can access them from anywhere as long as you follow a similar approach as MaidSafe (same s/w installed on another client, and you access your bitcoin wallet from that client).

1 Like

Who would be confused? Even if you don’t run Bitcoin QT at home, your wallet is still on a server somewhere. So even if you login to a website using a combination of words, it’s still running on a machine, with the wallet stored on a machine. That machine needs to be up and running, otherwise no access. And even if you can logon to a wallet somewhere using a 10 word passphrase, you still need to to take these words with you. That’s the magic of self-encryption for SAFE. You just “log on” get your personal file and your good. No need to store any wallets on a USB when you travel.

1 Like

The confusion of the OP comes from the difference between Bitcoin and SafeCoin. In Bitcoin the coins are registered to a public key (it’s hash). In SafeCoin the public key is registered on a coin. It’s exactly the other way around, and not obvious for those familiar with Bitcoin.

1 Like

OK, thanks all for replying, it makes more sense now.

Perhaps a person who doesn’t understand how it works?

That’s not always true, that’s what I’m trying to explain here.

You can have a lightweight bitcoin wallet that uses JavaScript to communicate with a bitcoin blockchain API.
In such case there is no “wallet” (wallet file) anywhere.

I don’t know what you mean by “a machine” - it always has to run somewhere. If you have a browser based wallet software, there is no “wallet” file per se - it works very similarly to SAFE. When you login to Omni wallet, you download data to your computer where it’s decrypted, and any sends that you may make are sent to the server encrypted.

Only if you use Bitcoin Core there is explicit wallet file, wallet.dat (and that’s a stupid way to do it, but it made sense to have a combined client-server app).