I've been thinking and prototyping over the last 24 hours with my business partner (I know stupid word) and I think we've come up with a plan that solves most of the issues concerns mentioned here on the forums. We want to make it public now to get some constructive feedback and see if we indeed covered all bases. I will try to not get into too much technical details.
The system would exist of two parts. On the one hand would be a website (service) with an API interface and on the other hand a plugin for SMF that talks to this API. The plan is to create both pieces of code so they can work neatly together.
As a forum member this is how tipping would work.
Each post has an unique 'tip link' that you can press to send a tip to author of the post, specifically for that post.
If you press the 'tip link' one of two things can happen.
- If you already tipped before: you will get a small modal with an input box that mentions your current balance and asks you how much want to tip.
- If you have not tipped before: you will instead receive a message your tipping account has been activated and you will be presented with a bitcoin address to fund your account.
Tipping will only be possible if your account is funded either by depositing money or by receiving tips.
If you send tips to an account which is not activated yet the system will simply hold the coins for you. Since you send the internal forum user id with each tip you can later redeem an account if you wish to active your own tipping account, the funds will be automatically in your account at that point.
Tipping yourself is not possible the tip link won't show on posts that are your own. And even if you try to bypass that we can do an extra check on the server side since we have the internal forum id.
Behind the scenes the forum software should do a query to the API service (on cron) to retrieve all tips made and save this in a local table to be used as cache so the tips can be shown on the forum. It will show a total amount received on the left side of the post where general user info is displayed. And the amount of tips received for that post will be displayed next to the date of the post since this is post specific information.