A Monero Tip Bot for Telegram
Monero Tipping Bot
I would like to put forward a proposal for the development of a Monero tipping bot. I am a code contributor to the Monero Project and author of the Go Monero RPC Client and a member of the Monero Ecosystem and I believe that I have all the necessary skills to complete this development.
Like many others, I enjoy using Telegram on a daily basis. I am an active member in various monero groups on Telegram and I have noticed the huge interest in a Monero tip bot. So here I am, putting myself forward with a proposal to develop, and deliver, the first ever Monero tip bot for Telegram.
The Proposal and Milestones
I aim to combine my Monero RPC Client and the Monero Wallet RPC with the official Telegram Bot API. The Bot will be written in Golang, as is the above mentioned Monero RPC Client of mine that I will be using. The Bot will be group-enabled, publicly available and accessable in Telegram. Users can use the bot to tip each other from within or outside a group. Users will be able to receive a notification upon sending or receiving a tip when they have started the bot (in a PM, which is standard practice in Telegram).
What can this bot do?
This bot is the first of its kind and effectively a Monero wallet for telegram. A telegram user can receive and send Moneros from this wallet using this bot. Nothing will be stored on the server (where the bot is running), except the wallet, of course. Other than that, no user data, personal information or any other personal data will be stored. Everything happens on-chain and thus no backend database is required. You can tip other users, friends and people in groups, set up giveaways and do lots of other cool things, like sending monero to regular wallet addresses!
The bot is group-friendly, meaning it won't spam the group with messages. Most of the wallet relevant information will be sent to the user via PM.
Milestones
1. Collect Feature Requests and Prototype the Telegram bot
Gather feature requests from telegram users in various Monero groups and decide on a final specification for the bot. Put together the base, boilerplate and structure of the code and make it ready to implement the requested features.
Estimated time: 1 week
2. Implement Features
Develop the bot and roll out a test version with the essential and some of the desirable features, in order of priority. Initial focus will be on security and interoperability with the Monero Wallet RPC. Enhanced functionality will be rolled out in regular future updates.
Estimated time: 2 weeks (for core release)
3. Intensive Testing of Bot on Stagenet Within Monero Telegram Groups
At this point the bot will need extensive testing to ensure robustness and verify the security features. I propose to test it on stagenet by adding the bot into various groups and let people tip each other with stagenet coins. Every user who is interested to test the bot will be tipped with a certain amount of stagenet coins, big enough to complete a standardised testing script followed by some ‘real life’ use. Stagenet coins will be provided by myself and/or other stagenet coin owners who would like to be involved with this project. I expect a minimum of 50 people to test this bot depending on the degree of engagement from the Monero community. Bug reports from the community and testers will be collected and fixes will be deployed accordingly. Once testing is complete, the operator will switch from stagenet to mainnet by connecting to a daemon running on mainnet.
Estimated time: 4 weeks.
4. Delivering Bot to Monero Project Team
Ownership of the bot can be transferred to the official Monero Project Team (Core Team) at any point during the development, should they wish to do so. This official ‘Monero Team’ branding has the obvious advantage of increasing trust in the product, which should drive adoption on Telegram. The bot requires a Monero Wallet RPC Daemon running on a wallet that is also hosted on the node (meaning the operator holds the private keys and seed). All one needs to operate the bot on Telegram is a server (eg. Virtual Private Server or Virtual Machine) and a running Monero Wallet RPC (holding the wallet) that is connected to a remote node. Any chosen individual ‘of trust’ can host the wallet on any server of choice.
5. Maintenance and Support
As long as I am the author/maintainer of the repository, I will provide support for the code. Eg: Updates on the code when a new version of the Monero Wallet RPC is released, bug fixes, implementation of new features, maintaining Telegram API compatibility etc.
Cost
- Collect Feature Requests and Prototype the Telegram bot: 1 XMR
- Implement Features: 5 XMR
- Intensive Testing of Bot on Stagenet Within one or more Monero Telegram groups / Bug Fixing: 4 XMR
- Maintenance and Support: 3 XMR (one time fee)
Total: 13 XMR
Notes
Authors wish: I really hope that the Monero Team considers my proposal, and my track record, and takes up this offer. I am genuinely motivated by a desire to contribute towards the growth of the Monero community and the entire Monero ecosytem. Should the Monero core team prefer to host the bot themselves after this is coded, this can be easily arranged and the transfer will be fully supported by myself.
The Code will be open source and licensed under the MIT License and will be under the umbrella of the the Monero Ecosystem by transfering the repository to the monero-ecosystem organization on Github, like I did with the mentioned Go Monero RPC Client.
Who?
Sun (also known as @tombish
on Telegram and omani
on Github).
Merge request reports
Activity
Always wanted to create a tipping bot but never came to do it actually. Would be nice to have that for Telegram. But i have to say that 25 XMR isn't exactly a small amount. I would do it for 10 XMR. In Python with help of this module: https://github.com/monero-ecosystem/monero-python
But i'm not as experienced as you. That's for sure. I would need to look into it in detail again and it would take me longer than you. I would not offer lifetime support. I feel like that's unrealistic.
Telegram: @Endogen
GitHub: Endogen (https://github.com/Endogen)
StackOverflow Monero Beta: https://monero.stackexchange.com/users/5102/endogenOn a side note: There is currently a discussion going on to create a Telegram bot for Monero Jobs. Maybe if the community / TG Admins would prefer you to take that over and if you would be willing, then you probably should be involved in the discussion. Get in contact with @johnzzzzz if you are generally interested.
Edited by EndogenNo support. I think this is the start of the wrong direction of a Monero CCS.
I run the Reddit tip bot (which is currently down right now, hosting issues), where I keep everyone's wallet synced with the network to make sure the bot is non-custodial, reliable, and people can back their private keys. This is work whose mainframe took less than 5 days to build. This is work some random - a mediocre coder at best - was able to do in really no time at all (maybe 2 weeks of work, code here). This bot's costs are greater than my entire crypto portfolio, and I do it for free, with gratitude. Why? Because the second related but not directly contributing proposals get funded, nobody will want to create things for free. Our blockchain explorers, local exchanges, support sites like monero.how, everyone will start to ask for a slice of the cake. We do not want to end up like other cryptocurrencies where people only do work for the pay.
Given that that OP has previously done gracious work that is very beneficial to the Monero project, I am not suggesting he is unworthy of any crediting or use of CCS. Just not for this. If this was a proposal for work on an RPC client, then I would support that. But while I see the extraordinary benefits and potential of reaching out to the Telegram community with this, it is not the direction the CCS should go.
Edited by OsrsNeedsF2PPeople have to pay the bills.
Assume @omani had 50 hours a week to work and American Express currently pays him to work all 50 hours. Shouldn't the community have a chance to take some of those productive hours away from American Express?
I have a similar view but I think it's ok to build that bot and get payed for it. Nothing wrong about that. If you feel that this has to be done for free, please go on and implement it.
But getting payed 25 XMR just to implement that bot is way to much in my opinion. For example with Python there are really good frameworks to build your Telegram bot with. That way you have a bot running in 30 min. To add the tipping features could then take maybe another one or two weeks - even for someone that never played around with the Monero chain before.
I guess no support from my point of view. But generally i'm for a Telegram tipping bot.
added 1 commit
- 642ff63d - Edit proposal and remove "hosting" type from "Cost" section, since the goal is...
Hi there, this is sun. thank you for your inputs and comments. this is what I like about this: get opinions from others about things oneself maybe didn't think about.
I see the "lifetime" word is confusing so I've removed it from my proposal. Lifetime was referring to the practice that a author/maintainer of a github repository is actively maintaining his code on his repository as long as he is the maintainer of that repository, which is usual practice on github, but I realize the word is probably confusing to others. So I got rid of it.
I want to respond to @dginovker's comment, in particular this one:
This bot's costs are greater than my entire crypto portfolio, and I do it for free, with gratitude. Why? Because the second related but not directly contributing proposals get funded, nobody will want to create things for free. Our blockchain explorers, local exchanges, support sites like monero.how, everyone will start to ask for a slice of the cake. We do not want to end up like other cryptocurrencies where people only do work for the pay.
I don't think this is a good way to measure a price tag of something or a product. this is relative to you and will be relative and different to someone else (in your example: someone with a much bigger cryptoportfolio than the cost of this project). I love to contribute to the monero community and all my work was for free. this is my first CCS proposal, as you can see. I don't know which other cryptocurrency projects you refer to, where people only do work for the pay. but I think being paid is a boost for an individual in his motivation to do even more, also for the future.
and I completely agree to both of you @dginovker and @Endogen: building this bot can be done for free, like anything else can be done for free. like we devs do many things for free. this proposal will give us a feeling for the sentiment of the community and I personally see a huge benefit in this project.
having said that, regarding the costs: nothing is set in stone. let the community decide and price discovery will come eventually.
a big thanks to all supporters and those who critize this project (which is a part of this process)!
Edited by HAH! SunAlso I removed "hosting" from the
Cost
section, it was a typo there. To clarify things:I do not want to host the wallet, which is: the monero wallet rpc daemon running with the wallet
the bot itself (which is just a regular telegram bot) can run anywhere and by anyone. preferably also by the core team. but what is more important is the hosting of the wallet by the core team. that will make this bot the "official" bot operated by the monero team. it will make this bot unique and trustworthy. since open sourcing this code would allow anyone to run his/her own bot, there should be one bot that is uniquely the official one, where people can trust: the wallet is held by the very core team of the monero project.
I hope I could explain myself.
I think this is a very valuable project for the monero users. Having monero at your fingertips in a telegram chat and group will not only boost the adoption, but also the decoys on the blockchain.
If we want to attract talented devs, we have to realise that funding is necessary. So, speaking for myself, I would not only use the bot, but I would also be willing to contribute to the funding proposal.
The minor issue I see with the whole thing is the centralisation of the wallet. For this it would be good to have trusted individuals managing the bot (like the Core team).
Using mobile wallets is possible, but it is far from being user friendly. We have to realise that wechat, facebook and the like are on the move to integrate their coins into the chats. A bot like this will help us as a whole not be left behind in the dust. Aantonop talks of money being a form of (political) speech - and I agree. Coupling a chat programm (like telegram, widely used by the monero community) with monero itself is needed.
Let's move this along to the CCS and see if the community is willing to put up the funding for the project - which will be the deciding test if this is wanted or not.
I think the project is interesting and i tend to feel supportive about it. The main thing i'm concerned about is the fact that it would be a custodial wallet, so a trusted person should manage the funds. This is always a risk and i don't know if the core team would be willing to deal with this. I would prefer to see a non-custodial wallet developed.
I see some are concerned about the excessive cost. I don't see that as a main problem, but maybe you could think to reconsider the pricing @omani?
The Code will be open source and licensed under the MIT License and will be under the umbrella of the the Monero Ecosystem by transfering the repository to the monero-ecosystem organization on Github
About this point, i just want to clarify that in this situation a vote will be held between the members of the Monero Ecosystem project to decide if accept the project or not, as for our governance system. I don't think it would be a problem to add it, but i just wanted to make the process clear for the readers :).
Btw @omani i strongly suggest you to come discuss this proposal in the next community meeting (next saturday). There is always some time dedicated to talk about open funding proposals, and since there are various and conflicting opinions, would be great to have a sane (maybe definitive?) talk about it.
Hey,
I agree with @AlexAnarcho about that funding is necessary to encourage developers, we are working with money and I have noticed we are left behind on a very altruist philosophy (I highly recommend volunteering, I still do volunteering. Without volunteering to the Monero community is really hard to understand how the governance structure and the Monero relationships are held). We should keep on incentivizing the Monero community to do volunteer work but we also need to encourage the Monero economy.
I'm not so good at technology so is good to hear others speak out and I prefer not to have a position whether is high or a too low price.
The centralization of the wallet I also find it a little troubling but most individuals initiatives are personal (centralized). A trusted system through members is also really important. It would be nice to see if this initiative can also have a non-custodial wallet like suggested by @erciccione or multisig support.
@omani thank you for your proposal. I find it really interesting and would like to be able to use it in the future.
One question @omani, the bot only works connected to the RPC monero client?
One last thing, I think the bot should be open source like suggested. I will have to read about the MIT license and update myself with the topic. Don't really understand what does it mean:
4. Delivering Bot to Monero Project Team
Given the comments so far, I think there are two things to test before going green with this proposal.
The first relates to the project itself, and the second relates to the CCS component. For the project itself, I see two questions that need answering:
- Is this the type of work the community wants?
- Is the design sound, with actionable plans?
The first answer is obviously yes. For reasons expressed above in favor, and that there is not a single objection in these comments to the project itself.
The second one however is more difficult. I've talked to @omani on Telegram and he clearly has more ideas than is put down, and his new clarification is quite helpful; but if a core member (or anyone else who is that reputable) is going to run the wallet for trust abilities; who is it? Additionally, if the wallet design is chosen to be custodial, I am not convinced this would take more time to develop than this CCS proposal itself. That is a 2 hour job.
For funding, I believe the following need to be answered:
- Is the author reputable enough to handle the project?
- Is this the type of project the CCS should handle?
- Is this the appropriate level of funding?
The first one is likely. The Go-RPC client is small, but an incredibly useful tool that is just one more step in the right direction to make developing on Monero easier. I also think it's worth noting this project he's bringing up here; another very innovative project that's going to help bring Monero to so many people. For these reasons and more-so the latter, I firmly believe @omani covers case 1.
I simply disagree with case 2, but this warrants a much, much larger discussion. We need to figure out what constitutes appropriate usage of the CCS, and what doesn't.
- moneromoo asking for funding is an example of using the CCS extremely effectively; he is an incredible developer, working on the core project in a way that affects everybody.
- Somebody working on a RPC handler is also a good use of the CCS, for many of the same reasons. It helps future development, and allows future projects to be created easily.
- Conference-related, community projects receive funding; but this one is a bit complicated and out of this discussion's scope.
- Vulnerability response funding is another type good proposal. It's understood that much of this project relies on keeping the code and millions of people's finances safe, and we absolutely need to stay on top of it.
- Some translators are given the OK, when reputable and asking for extremely generous amounts; which is interesting, since they are one of the most important aspects to making Monero possible to so many people. From what I observe, translators have it hard simply because it's a job that many other people can perform.
- Somebody working on a Monero app rarely receives funding. Monerujo runs that line, given the OK due to its pre-existence and success, but none of the other apps such as MyMonero, Wookey, Cakewallet, or any others seem to even ask for funds.
The key here is we need to be extremely careful to make sure we still encourage volunteering and hobby projects without the second (or dare it be the first) question always being "How much funding could I get for this?". It is us asking it of our community to pay for this. We should not abuse them.
I'll abstain from the third point until the second one is further discussed, which I believe is the fundamental issue that needs to be resolved before moving forward. I think this proposal is inevitably bringing two very important things to the table, and how we determine what's an appropriate CCS could certainly impact future ones.
Edited by OsrsNeedsF2PInstead of creating another tipperbot, I'd like to just question the decision not to extend an existing one, such as @dginovker's Reddit MoneroTipper? More developers working on one implementation could hopefully give the community a more tested, maintained, stable and scalable implementation.
Edited by Jethro Grassiehi jethro,
everybody is free to contribute to the reddit tip bot since it is open source. so will be my project as well. it doesn't have to be just one tipbot out there. :)
beside that, unfortunately the reddit tip bot is not non-custodial. it holds the private keys. open sourcing the code and making others able to host their own bot does not make it non-custodial for that one particular bot named /user/MoneroTipsBot out there.
I encourage everyone to contribute to the reddit bot though, it is an awesome project and is needed, as - so I am sure of it - the telegram bot is and will be.
Edited by HAH! Sunbeside that, unfortunately the reddit tip bot is not non-custodial
I would quit this community immediately before creating something that doesn't handle people's wallets independently, and allow people to withdraw from their own private keys at anytime. While the definition of a custodial wallet hasn't been tested to if a wallet can still be custodial when providing this, it does seem to fit the FinCEN guidelines of wallets that are non-custodial when providing these features.
Edited by OsrsNeedsF2P
unfortunately the reddit tip bot is not non-custodial
ok, fair enough, but I'm not seeing how your proposed bot would work differently? You state the following in the proposal:
The bot requires a Monero Wallet RPC Daemon running on a wallet that is also hosted on the node (meaning the operator holds the private keys and seed).
Unless I'm missing something, that sounds exactly the same as how the reddit bot works.
Regardless, my point still stands, I'd love to see the efforts aligned/combined, rather than separate. Good luck though.
yes jethro it is exactly the same situation. but in case you missed it, I repeatedly mentioned explicitly that a trusted member or the core team shall do the hosting of the RPC daemon (and/or also the bot).
Regardless, my point still stands, I'd love to see the efforts aligned/combined, rather than separate. Good luck though.
I have nothing against a collaboration in the near future, for there are more awesome projects to come. :) thank you.
Edited by HAH! Sun
Hey @dginovker,
Nice you brought up the topic of what type of projects should be funded by the community.
- Is this the type of project the CCS should handle?
Two months ago I opened issue #5 (closed)(which I closed due to low interest) about the community concerns of which projects should be funded by the community and which projects shouldn't.
I consider there should be a clear set of rules for community development, in which Monero Devs could determine with their specialized knowledge what is important or could be important for the code and in that case search for community funding through the CSS.
Something totally different should be projects with different types of characteristics for the Monero community development. Those projects could have a "lighter" set of rules and open to a community section where contributors could make their proposals and have the opportunity to find funders/donators/investors.
I suggested having different sections. This will help contributors guide themselves on how to submit proposals and to which section. Not sure how many sections could the CCS have but I would always prefer one specialized for the Monero code development. This will also help develop the decentralized nature of Monero without loosing how the community has handled its relationships between contributors. In any case, this doesn't work it's easier to remove and try something else. We are all learning and this could help us also understand what's to come from the Monero development.
Several Monero community members have also had concerns about this.
Is good we start advancing on this topic.
Thank you for bringing such an important topic to the community.
:)
Good luck with the project then, @omani. Do a good job for us all :)
I couldn't make it to yesterday's community meeting (logs here), but a discussion about this proposal happened. The results are (people who explicitely approved the proposal. Please correct if wrong):
In favour: @rehrar, @el00ruobuob
Against: @pwrcycleAlso, i think the bot could be useful. I'm not sure how it could be integrated, since it's custodial and i'm not really a fan of that part. But the good thing is that the code will be public and anybody could create their own instance, this leaves room for improvements and further development. I ACK this proposal.
Edited by erciccioneThis was further discussed in today's meeting (unofficial logs here), here's a summary of what happened (I've tagged relevant discussion members, please correct any info):
I advocated that for a service that maintains just a single wallet and a file tracking everyone's balance, the price was too much. @rehrar noted I could make it if it's that easy, which I admit I can't do. My knowledge of Telegram bots is quite limited, I only have knowledge on running a tipping service on Reddit.
@SamsungGalaxyPlayer said the prototype is worth <100$
@lh1008 says: We could tell him that the community supports a 5XMR proposal and wait and see his response
@rehrar @SamsungGalaxyPlayer @Needmoney90 all agreed it needs to be hosted by Core
@lh1008 noted @Endogen wanted to add a multisig wallet to Monero jobs
Edited by OsrsNeedsF2PWow, this is sure something that the community could really benefit. I have been trying it and my first impression was amazement. New users can be easily given tips and be welcomed to the Monero world easily.
I think this should be taken more into consideration.
I have one question @omani, can the tip bot wallet be used with a monero-multisig?
@omani congratulations for this.
hi luis, thank you for your kind feedback. I am glad you like the bot. unfortunately, due to the nature of telegram, it is not possible to run the bot with a multisig wallet since that would require private keys to be sent over the wire or be otherwise exposed.
but as soon as I came with an idea which is both acceptable by UX means and doable in practical terms, I will definitely be considering it.
have fun with the bot :)
cheers.
Hey @omani, great work with the TippingBot, i like it :) About multi-sig: i didn't totally think it thru yet but in general it should work easily.
You wrote:
that would require private keys to be sent over the wire
. Why? You generate the private keys and you store them. So if you already do that then you have all you need. Let's say that you want to have a 2-out-of-3 multisig:- Add another command to create a multisig-address (technically just a normal address but every action on that address needs to be confirmed with other users)
- If user chooses to create such an address, let that user add other usernames (in this case 2 additional) and how much of them have to agree in order to create a valid transaction.
- After the bot received the two usernames he will write a message to these users
- If these users confirm to be part of it, the multisig address will be created and is active. Tips or sending XMR to users (doesn't matter from whom of these three people) will trigger a notification to the other two guys
- If other two guys confirm that message, transaction will be created and everyone will be notified.
That's just off the top of my head but i currently fail to see any issues with that.
Of course this is not true multisig but in the end it should be enough. What is needed is the functionality to agree on something and then automatically act upon that. Since none of the users of your bot knows his private key / seed, there is no way to really verify any identify other than the unique Telegram ID. Since that's how it is, there is no need for true multisig.
Edited by Endogen
As someone who spends a majority of time on Telegram I really like this proposal.
The SLP token tipping model has been spreading like a virus, as well as a Lightning Network tip bot (@lntxbot), and I think a Monero version is awesome.
Custody is never easy, but I think most people understand the risks associated with letting a 3rd party application handle funds, and with a disclaimer and an informative FAQ to instruct new users on how to withdraw properly, can be a good compromise.
@omani are you still interested in this? If so, let me know and we will move it forward.
mentioned in commit 85d4bfc0
hi there. it's been a while since the creation of my proposal. so here is a little update of the progress:
milestones reached so far:
- Collect Feature Requests and Prototype the Telegram bot
- Implement Features
right now we are in milestone:
- Intensive Testing of Bot on Stagenet Within Monero Telegram Groups / Bug Fixing
and continuing to test the bot thoroughly with currently 296 users (which is much more than the expected 50 from the milestone description).
happy to talk to you again soon.
Edited by HAH! Sun