Ethelia registration model
reviewed: 28 May 2023
I like sign up/in idea from Midjourney — do it via Discord. For Ethelia it's fine to use Telegram for registration and authentication (optional).
Basic idea is based from recent TG functionality upgrade. We use Ethelia official Telegram channel subscribe link to sign up. Since consumer requested channel joining, we have to contact him via bot and collect some additional info/details. Actually via the conversation with bot consumer has to pass the Turing Test 🫠
Sign up model
- Consumer request Ethelia official Telegram channel subscribe via a special link;
- Bot is checking pending subscribe requests and fetches new user to contact;
- Bot sends
Hello!
message to user and asks to provide more details — the best way is to use inline keyboards to collect the dossier; - When dossier is collected bot asks user to confirm account creation on local auth Ethereum node and returns back Ethereum address and generated password;
- Bot sends quick guide with account lock/unlock details — on free plans we create auto lock accounts with manual daily unlock (via the bot).
Account on auth Ethereum node should be lock automatically in 5 minutes and user has to unlock it via bot. The steps are:
- User sends
/unlock 0xf36...66000
request to bot directly; - Bot does a sequence of checks:
- user is subscribed to Ethelia TG channel;
- user is not blacklisted at Ethelia TG channel (not in
removed users
); - address
0xf36...66000
is associated with that user;
- Bot unlocks account for next 5 minutes and responses
Welcome to Ethelia!
back.
Dossier
On sign up bot collects mandatory user details: full name, email, social network acount.
In case of Telegram we actually do not need these details. First argument — dossier collection means that user has bee already joined our Telegram channel, so, since we do not want to spam user directly, we will broadcast our announcements not to user directly, but to all Telegram channel subscribers. Second argument — we know private Telegram chat identifier and user nick name, because user was communicated with our bot. So in edge cases we can reach the user by these details.
The problem of Second argument — user might delete the chat with bot and automatically block bot on deletion. In this case, we would not reach the user. The solution — use bot for authentication on Ethelia endpoint. It make the chat with bot active and event if the user deleted the chat, he have to open it again for any activity with Ethelia.
On sign up bot suggests to pass an interview (ChatGPT should be there as well). During this interview we will collect user details:
- What is the goal of your registration (150 chars at least)? [
skip/text
] - What is the project you are working on (pitch/cover essay or just a link)? [
skip/text
] - Why and how will you use Ethelia? [
skip/text
] - Are you going to use both API and web panel endpoints? [
yes/no
] - Are you interested in pricing plans or enterprise integration? [
yes/no
] - Can you imagine any partnership or some kind of collaboration with you and Ethelia? [
yes/no
] - Would you like to contribute to Ethelia? [
yes/no
] - Ethelia is 100% free and open source, would you like to help our project somehow? [
yes/no
] - Could you drop a few words for Ethelia team? [
skip/text
]
This list is based mostly on product payback model.
Collecting diagram
Bot dossier configuration
bot: sample configuration
chat:
- id: 1
type: start
question: Goal of registration
minchars: 10
toggles:
- skip
next: 2
- id: 2
question: Project pitch
minchars: 10
toggles:
- skip
next: 3
- id: 3
question: How will you use Ethelia?
minchars: 10
toggles:
- skip:
- next: 5
next: 4
- id: 4
question: API and/or web panel
minchars: 2
toggles:
- yes
- no
next: 5
- id: 5
question: Pricing plans or enterprise integration
minchars: 2
toggles:
- yes
- no
next: 6
- id: 6
question: Would you like to contribute
minchars: 2
toggles:
- yes
- no
next: 7
- id: 7
question: Partnership or some kind of collaboration
minchars: 2
toggles:
- yes
- no:
- next: 9
next: 8
- id: 8
question: Help or donate
minchars: 2
toggles:
- yes
- no
next: 9
- id: 9
type: finish
question: Drop a few words for Ethelia team
minchars: 10
toggles:
- skip
Bots
Command line curl
helper gists: https://gist.github.com/pheix/acd8b299e18f4b087faba596bc38864a
Trivial Perl bot
Source: /sources/tg-bot/trivial-bot.pl
Dossier Raku bot
Source: https://gitlab.com/pheix-research/raku-dossier-prototype/-/blob/main/bin/trivial-bot.raku
Dossier Raku module prototype: https://gitlab.com/pheix-research/raku-dossier-prototype
GPT4 wait list request
I'm researching authentication/registration on blockchain via 3rd-parties like Telegram or Discord. On registration step I would like to collect some details (dossier), the answers with no strict options like "yes" or "no" should be routed to GPT — just to make a registration process less official, but the idea behind — to engage user in dialog with AI and get a bit more detailed answers for original questions.