314-tribute-to-talk is nearing completion; the designs are implemented and the contract is currently in audit by a third party firm. The MVP is an anti-spam mechanism, which enables stakeholders to set a minimum amount of SNT that must be paid in order for someone outside their network to contact him/her directly.
Inspired by one of Satoshi Nakamoto’s original suggested use cases for Bitcoin, Tribute to Talk will introduce an economics-based anti-spam filter – in our case for receiving messages and “cold” contact requests from users.
While the white paper calls for a deposit to be made and stored in escrow until the recipient accepts the tribute, the team has opted for a simplified MVP for the initial release of this SNT utility feature. In the MVP, users will bypass a tribute ‘paywall’ by making a transaction, without any participation required from the receiving user. Once the tribute is paid, the line of communication will be opened. This choice was made as a means to give plausible deniability of the transaction as opposed to an on-chain event. Future iterations of the feature aim to implement an anonymous deposit to an escrow contract.
This is the lightest version of the feature possible, but also a response to technical constraints. Ultimately, the team sees the greatest value in users being able to not simply filter spam, but also monetize their time and attention through a more feature-rich escrow version of Tribute to Talk.
GitHub: https://github.com/status-im/swarms/tree/master/ideas/314-tribute-to-talk
Designs: https://www.figma.com/file/aS1ct66VQ6V0cio7vSqS8UoG/Chat?node-id=1319%3A13403
Current Status: Design are implemented and UI is in testing. Contract in audit.
Team: Eric, Vitaliy, Maciej, Richard, Tetiana
Status Channel: #status-core-chat
The Tribute to Talk swarm feature has made significant progress in 2019. While early versions on this SNT utility feature and contract were designed and developed in April and May of 2018, the feature was previously de-prioritized as a matter of poor timing.
The initial contract details (written by Richard Ramos) can be found here.
After an initial research phase, the MVP was scoped to rely on instant transactions between the paying user and the receiving user. The team identified two layers to Tribute to Talk:
Anyone can set a tribute to talk. In the MVP, others pay this tribute via a normal wallet transaction, which instantly opens up a conversation with that individual.
MVP user stories are defined as:
User A = Person sending tribute. User B = Person accepting/rejecting chat request
January was spent conducting research into the following:
During the research phase, the team landed upon 2 main options for contract implementation:
User A = Person sending tribute. User B = Person accepting/rejecting chat request.
It was determined that the best path forward is to implement a simple solution in the form of option 1 with the following requirements:
Before jumping into design and implementation, there were a few questions to answer:
How can we mitigate the awkwardness of trying to contact someone you know, when they have a tribute set? Options: (1) Contact request feature to circumvent TtT; (2) Refund TtT fee for someone I know.
To mitigate this, we added a reminder to the paywall screen. If you know someone in real life and don’t want to pay tribute, you can share your contact info them outside of Status.
How can we ensure privacy for user A (person sending tribute) and user B (person accepting/rejecting chat request)?
Ultimately we decided to hash more of the data we store on-chain, so the least amount of data possible is transparent. For example, a user’s tribute amount isn’t visible in the smart contract. The data is instead stored on IPFS.
How do we prepare for the decoupling of a user’s Whisper key from their Ethereum address? This is planned, and the feature is currently predicated on their coupling.
Decoupling of the Whisper key and Ethereum address is still an open topic of discussion in the multi-account swarm.
A detailed Tribute to Talk Spec can be found in GitHub here. This detailed document outlines the following:
Designs are complete and the UI is implemented and in testing.
While working on the payment flow, the team decided to further reduce data stored in the contract and add in an additional control to allow for contract versioning. Adequate versioning, and the ability to deactivate a contract, means that tribute settings for clients using older versions of the TtT protocol can be forcibly disabled. This means that a user receives all messages intended for them, and is encouraged to upgrade to a client with the current TtT implementation.
Having reduced the contract to a simple registry is also better for user privacy. The only data visible in the contract is whether a user has a tribute setting. There is no information about the amount, nor about transactions from other users. Tribute transactions are indistinguishable from other transactions passing through the SNT contract.
The contract and UI are being audited by third party firm Trail of Bits. Once any vulnerabilities or flaws are addressed, the feature will go into testing on testnet.
After that, it will be made available on mainnet in a public release.
We are also conducting research on the token model and the impact of transaction data and flow of SNT on the overall value of the feature. Stay tuned for more info on the crypto economic research.
Once the MVP is released, the team would like to gather feedback from our community about Tribute to Talk.
There are two paths moving forward:
There will also be a need to adapt the feature for a new account architecture in which a user’s Whisper ID and Ethereum address are no longer coupled.
Check out the Repo in Github
Join the conversation in Status #status-core-chat
iOS
If you don’t currently have Status installed, access via TestFlight here https://testflight.apple.com/join/J8EuJmey
Android
You can find Status.im in the PlayStore and click ‘Update’