Sending Safecoins to a user that is not online

Here (https://safenetwork.wiki/en/Safecoins_(How_it_works)) a transaction between Alice and Bob is explained. Transaction Managers ™ are choosen based on XOR distance, so Alice’s TM can verify if Alice posesses the correct private key.

But what if Bob is not online, how is the transaction Alice just made (to Bob) known to Bob’s TMs? In other words, when Bob comes online, how does he know that Alice send coins, without querying each and every set of TMs on the network (which nullifies the local consensus concept opposed to Bitcoin’s global consensus)?

Thanks for reading.
Fevir

If I understand things right, the transaction managers are huddled by XOR distance around the coin.

Alice signs a message for each coin she is giving to Bob, and the coin’s transaction managers decide it is valid, if it is, then wait for Bob’s signature and orders to assign it to the next guy.

So Bob isn’t needed for the transaction…

1 Like

Hi, and thanks for your reply.

I get the transaction part, I think. But what if Bob comes online at a later time - how and by whom is he notfied that Alice made this transaction?

Chapter 6 from http://maidsafe.net/docs/Safecoin.pdf

When Alice wants to mint safecoin, she sends a special request to Trans- action Managers to create an open transaction without a designated recipient. The Transaction Managers, once they have confirmed by consensus that Alice is the current owner, will then generate the transaction.

Once Alice receives the transaction name from the network, she can store it on an external storage device, such as a usb drive, together with a special validation signature which has been used as a salt when generating the previous sent request1 .This salt is used to prevent Transaction Managers them- selves trying to acknowledge the transaction to steal the coin.

When Bob receives the minted safecoin and decides he would like to spend them, he reads the transaction name and the validation signature from the storage device and then sends an ac- knowledgement to the network. Once the Trans- action Managers receive the acknowledgement, the pre-generated transaction will be updated, thus completing the transfer of ownership of that coin(s) from Alice to Bob.

1 Like

IIRC Transaction Managers will be done away with if/when Unified Structured Data is implemented for SafeCoin…

I don’t think this actually the minting example answers his question.

Coins sent. Bob offline. Ownership reasignned at coin address location. But not updated in Bob’s account, which is stored as a static file while he’s offline.

The question is, I think, how do the changes to the safecoins’ ownership get recorded in Bob’s account state if he is offline when the transaction occurs?

Good question. I don’t know the answer.

4 Likes

The real question is: How Bob know that Alice send a transfer? (now if on-line or later if off-line).

In both cases via a secure messaging. In the RFC about Messaging speak a little about it.

We also have identified a need for some form of secure messaging in order to implement safecoin,

1 Like

A simple solution will suffice ∆
" You will be notified if someone mentions your @name ,
replies to your post … " " , and when someone in the network sends you or requests from you a payment . "

Bob gets notified that there is an unread notification in the SAFE … .
As soon as he gets online all sent payments become visible in his account ,
he can then also proceed to return or reject a payment or to fulfil a request ,
besides answering any other message or address other notifications .

correct :slight_smile: thanks for refining the question

Ah, yes, that makes sense. However, this soltuion would require a centralised server which notices when Bob gets online. The idea of the Safenetwork is to have data (coins in this case) decentralized. Considering that 32 NTMs agree and verify on the transaction, which is a decentralized approach, I’m still not clear how Bob gets his money.

One idea I had is that when Alice creates a payment (when Bob is off-line), her NTM’s search for Bob’s NTM’s based on, for example, Bob’s public key. When performing a transaction, Alice’s NTM’s will agree and verify on the transaction, and Bob’s NTM’s are informed of this transaction, informing Bob when he gets online.
Though this is a bit of simple solution and would create a lot of network overhead, each sender NTM looking (by broadcasts) for the NTM of the receiver of the coins. Which doesn’t fit with the white paper, which states that transactions can be performed at network speed.

MaidSafe Public ID (MPID) managers serve as the inbox for offline clients.

The SAFE messaging don’t need a centralised server. You can read here the messaging RFC:

Thanks for pointing that out. So, a messaging system would inform Bob about a payment that’s available, which was initiated by Alice.

There’s one magical thing that happens which I don’t understand. In the paper above, it reads:
2. The MpidManagers(A) sync this message and perform the action() which sends the MpidAlert to MpidManagers(B)

  1. How does MpidManagers(A) know when a message has been received by MpidManagers(B)?
  2. Suppose Safecoin are used for day-to-day transactions, what is the maximum number of transactions that can take place (compared to 7 transactions max per second in Bitcoin)?

Apoligies for all the questions, just trying to understand how it works. My ‘concern’ would be that the network gets flooded with broadcast message from MpidManagers if there’s enough payments being made and users being off-line - it seems like a scaling issue.

1 Like

If you see the flow MpidManagers(B) awnser to MpidManagers(A)

MPid(A) =>> |MPidManager(A) (Put.Sync)(Alert.So) *->> | MPidManager(B) (Store(Alert).Sync)(Online(Mpid(B)) ? Alert.So : (WaitForOnlineB)(Alert.So)) *-> | Mpid(B) So.Retreive ->> | MpidManager(B) *-> | MpidManager(A)

Hundreds, thousands or, if the network is big enough, more. In a blockchain solution, like the bitcoin, the transaction must propagate for all the network. In the SAFE network a transaction involve only few nodes and a small data transmission, so is possible to have thousands of transaction running simultaneously.

1 Like

My guess here is that Bob don’t need to be online. The alert is only to tell Bob that is account balance has been updated. But his wallet is not controlled be himself but be the MpidManager. So when Bob come online later his wallet is already updated and no need to keep any transaction in a queue until he come online.

It’s the most logical whey for me it should work but I don’t know yet how it work actually.