bitshares / bitshares-ui

Fully featured Graphical User Interface / Reference Wallet for the BitShares Blockchain
https://wallet.bitshares.org
MIT License
517 stars 570 forks source link

[20] Messaging #697

Closed wmbutler closed 6 years ago

wmbutler commented 6 years ago

Allow for a messaging platform within the BTS wallet. Many potential uses including announcements, marketing, p2p communications. Since transactions cost BTS, this would self-regulate spam. BTS network earns fees in the process.

Establish JSON object for MEMO field:

{
  "subject": "Hello",
  "body": "This is the body of the message"
}

Other thoughts:

btsfav commented 6 years ago

probably related to https://github.com/bitshares/bitshares-ui/issues/233

startailcoon commented 6 years ago

I've had this idea before but never actually posted about it, nice to see that it wasn't just me :+1:

You could build a messaging/e-mail application on top of the bitshares platform. The question is how expensive this will be to use for messaging. Instant messaging is pretty much no go I think, because of the fees.

btsfav commented 6 years ago

maybe of interest https://github.com/DECENTfoundation/DECENT-Network/releases/tag/1.1.0

decent added messaging in their latest fork.

calvinfroedge commented 6 years ago

Is this feature currently supported in core?

svk31 commented 6 years ago

No it isn't. There are memos however which serve a similar purpose. The way I understand Bill's idea is that this requires a brand new message operation that does not transfer value, only a memo. That will require updates to bitshares-core and a hardfork.

wmbutler commented 6 years ago

Actually, I was thinking that it would just be a send operation and we would insert JSON to specify the message. The sender could determine the importance of the message by paying more or less BTS to send it eventually, but initially, it would be the bare minimum BTS fee + cost per KB, calculated for the user before send. Moving this to a later Sprint since it requires more conversation.

gibbsfromncis commented 6 years ago

@wmbutler idea looks nice. But I'm not sure that use of simple "transfer" as messages nice idea. This may cause new bugs and misunderstandings. For e.g. if I want to see only real transfers of money on "Recent Activity" why I should see a ton of transfers for 0.005 BTS? I have experience of idea like "add new feature on front-end but use a backend of another feature and recognize the type of feature by some additional field" And it was really bad experience and I suppose if we think a little bit more I'm sure we can find a lot of potential issues. Hierarchically it's bad idea.

So it's better to design like a separate operation and than use it. I can take a front-end part when backend will be ready and design it on front-end

wmbutler commented 6 years ago

Designing a separate operation is a core thing. I do see your point as it relates to activity logs.

abitmore commented 6 years ago

Since it's not a consensus feature, we can get use of custom_operation, however we need a plugin to notify the receiver, and perhaps store / cache the message, since messages can get lost very fast if this feature relies on analyzing account history.

Another option would be tracking the messages with ES plugin.

gibbsfromncis commented 6 years ago

@abitmore nice idea. So lets wait before ES plugin will be delivered and lets start @wmbutler I can work on this when backend guys will delivery ES.

wmbutler commented 6 years ago

I think the ES plugin is the way to go.

AustinAmoruso commented 6 years ago

I'm willing to help on the messaging UI. Let me know what we would want to build, maybe even do a bundling system to send multiple messages at once so you don't have to over pay for the messages. I have worked on messaging systems before in the past at prior companies as well.

abitmore commented 6 years ago

If use custom_operation, need to define message format which will need to be encoded. E.G.

{
  "category":"message",
  "type":"to-single",
  "to":"1.2.3", // "from" is omitted since it's implied by `fee_payer`
  "encrypted":true,
  "message": { // format same to encrypted memo
    "from_key":"BTS5Axxxxxxxx",
    "to_key":"BTS6Syyyyyyy",
    "nonce":31415926535,
    "message":"0a1b2c3d4e5f6789"
   }
}
{
  "category":"message",
  "type":"to-multiple",
  "to":["1.2.3","1.2.4"],
  "encrypted":false,
  "message":"hello"
}
{
  "category":"message",
  "type":"to-group",
  "to":["9.1.12345"], // need to define group somewhere else
  "encrypted":false,
  "message":"this is a message to a group"
}

We can document the specification in Wiki even in the BSIPs repo.

ahdigital commented 6 years ago

@wmbutler Can you explain a bit more your vision for this:

The sender could determine the importance of the message by paying more or less BTS to send it

If you think about an inbox where messages are ordered chronologically, what will having an importance weighting do? Is it just to bypass the standard messages and appear at the top in a 'featured/hot/important' section?

wmbutler commented 6 years ago

Importance could be represented in relative terms visually depending on the amount of BTS allocated to the message. Maybe there is a column that displays the value and allows the user to sort by that value in its simplest form.

AustinAmoruso commented 6 years ago

Please release this one I'm not certain if I will have time on this one at this point.

calvinfroedge commented 6 years ago

@wmbutler I will follow up here with both UX and research on custom operation calls.

wmbutler commented 6 years ago

I'm starting to think this is a bit out of scope for the wallet. We have so many other tasks that are better suited for a financial application.