tari-project / wallet-ios

The mobile Tari wallet application for iOS
BSD 3-Clause "New" or "Revised" License
24 stars 21 forks source link

Referral Program #525

Open talmahaj opened 4 years ago

talmahaj commented 4 years ago

UX/UI

https://app.zeplin.io/project/5dbdf1a40bdfd3832e35c9c5/screen/5f2b42bf19a3e53d807ab306

User Flow

1a. Existing user ("existing user" defined in this case as a user that has already completed creating their wallet and received at least their first faucet transaction in a prior session) foregrounds Tari Aurora app for the first time following release of the referral program feature OR 1b. User taps gift icon on top right of new tx list design at any time: http://zpl.io/2vJq1We

  1. User sees modal about referral program with their unique referral URL generated for them. Design above!

  2. User shares URL with friends

  3. When friend taps deep link to download app, some parameter persists throughout app download process in order to keep track of who referred them

  4. Recipient downloads app and completes onboarding process through the first faucet transaction being received, which triggers the referrer user to receive their bonus tXTR (let's say 5000 for now) via a transaction from the referral bonus wallet we host, with a note reading "Someone you referred created their Tari Aurora wallet. Enjoy your well-deserved tXTR bonus for your efforts."

Open Questions

Jasonvdb commented 4 years ago

Open Questions

  • Does this feature have to have a centralized component, or can we do this through the Tari network somehow?

One solution might be to work this into the current faucet server. When a user requests their first drop they pass through the public key of the user that invited them. So we know who to send the reward to.

  • Is the best way to do this by creating a Tari "referral bonus wallet" we host on some always-on server that has a few million tXTR in it sent over by team members who are mining?

Yeah this is what I would assume. But the current base node doesn't yet have a complete API as far as I'm aware so automating payouts this way might not be available yet. They are working on a RPC solution but we'll need to check in with that team to confirm. Another possible solution is to use the faucet still, which would require use seeding the database with a bunch of new utxos. I think Hansie knows how to do this though.

Tracking might be tricky. Glancing at the firebase solution it seems like it all relies on a central DB of users. Something that'll never exist for Tari. Depending on what needs to be tracked we might have to build this into our faucet or payout server. We would know which pub key referred which pub key at least. But do we want to track individual users or keep anonymised stats? Can looks into this more still.

talmahaj commented 4 years ago

Open Questions

  • Does this feature have to have a centralized component, or can we do this through the Tari network somehow?

One solution might be to work this into the current faucet server. When a user requests their first drop they pass through the public key of the user that invited them. So we know who to send the reward to.

That would be awesome.

  • Is the best way to do this by creating a Tari "referral bonus wallet" we host on some always-on server that has a few million tXTR in it sent over by team members who are mining?

Yeah this is what I would assume. But the current base node doesn't yet have a complete API as far as I'm aware so automating payouts this way might not be available yet. They are working on a RPC solution but we'll need to check in with that team to confirm. Another possible solution is to use the faucet still, which would require use seeding the database with a bunch of new utxos. I think Hansie knows how to do this though.

Could we even batch manual payouts at first if needed? Let me know what you think we should do for the first iteration of this feature.

Tracking might be tricky. Glancing at the firebase solution it seems like it all relies on a central DB of users. Something that'll never exist for Tari. Depending on what needs to be tracked we might have to build this into our faucet or payout server. We would know which pub key referred which pub key at least. But do we want to track individual users or keep anonymised stats? Can looks into this more still.

Pls look into this and let us know what the options are, we definitely strongly prefer to keep anonymised.