steemit / steem

The blockchain for Smart Media Tokens (SMTs) and decentralized applications.
https://steem.com
Other
1.95k stars 790 forks source link

SIP - Solving Account Registration for New Service Providers? #322

Closed bytemaster closed 6 years ago

bytemaster commented 8 years ago

Currently only Steemit has the ability to sign up new users due to the surplus of funds and a willingness / incentive to grow the platform.

It would be nice if the witnesses could empower other accounts to create new accounts without allocating those accounts STEEM or STEEM POWER. These new accounts would be heavily limited in terms of bandwidth and the power could be revoked by the witnesses if it was abused.

With this in place, other service providers could help onboard new users without having to front costs and without spamming the network.

xeroc commented 8 years ago

Can an account with 0 SP actually interact with STEEM? Last I remember is that you can't do anything (not even vest liquid STEEM) if you don't have any SP. Also, what's the purpose of account_creation_fee, if you are not asking for it on account registrations?

Would it not rather make sense to implement something on the frontend side (in contrast to changing blockchain consensus)? For instance a private API to steemit.com's faucet that allows other services to use steemit's funds to create new accounts (rate-limited by x accounts per day per service).

samupaha commented 8 years ago

The ideal situation would be that Steem is so attractive that people are willing to pay with their own money to join. This would have two benefits:

Of course Steem might lose some potential users if everybody had to pay to get an account. Instead of giving accounts to anybody for free, like now, which creates bot problems, free accounts should be possible only with an invitation. Invitations would be given to all users who have a good reputation. Also other service providers could get a lot of them from Steemit to give to their users.

Invitations could be used also to encourage new users to buy more Steem Power to increase their influence. If a new user buys some SP when creating the account, the account creator could double the SP (up to a certain amount). For example, a new user could get $5 worth of SP with the invitation, and addition to that, he could buy $5 worth of SP with his own bitcoins, which would be doubled. So the new user would end up with $15 worth of SP.

bytemaster commented 8 years ago

The other option is to give every account a certain amount of "voting power" and then allow the community to vote on all new user requests. It would be rate limited. This process could also be used to prevent name squatting and impersonation.

theoreticalbts commented 8 years ago

We should have a transferrable token representing new accounts. Basically a new asset which tells how many accounts you're allowed to create.

How these tokens are allocated is a separate problem -- perhaps they are distributed to the witnesses at some rate, and then the witnesses distribute them to promoters (where a "promoter" is the person who actually goes out there and gets users). The distribution may be narrow (a few key service providers getting large numbers of tokens) or broad (a large number active accounts each being given a small number of tokens) -- but it is at the witnesses' discretion and thus, can learn and respond to conditions on the ground.

When the promoter's found a new user, we face the problem of bootstrapping the user PKI. Basically the promoter spends a token to create a pending_account_object which contains a public key which also serves as its identifier. Then the promoter sends the private key to the new user off-chain, for example, via PM or email. The new user then creates the account with the existing account create operation, except it has a creator name of "k=", which causes the chain to look up the pending_account_object, check that it exists, then delete it.

All steemit.com (or some other wallet provider) needs to do is support a link of the form steemit.com/register?p=. Then use the existing account create forms / logic, except:

The privkey for the pending_account_object is known by the promoter, the user, and steemit.com -- so it should be retired and not used for any other purpose once the account is created. This may be achieved by simply setting the new keys to the account based on a password entered by the user which is kept client-side.

bytemaster commented 8 years ago

Creating transferrable tokens for "new accounts" just moves the problem, they will establish a market price and people will hoard them.

New accounts need to be "free" or "socialized" in cost, not privatized.

arhag commented 8 years ago

I think this issue could be "solved" using an on-chain referral program (see discussion on the slack for details). Each registrar would have an incentive to pay the minimum account registration fee out of their pocket because they have the potential of earning back multiple times that value in SD from the users they register. They would be incentivized to register legitimate new users and try to cut down abuse in order to increase their return on investment by increasing the likelihood of each of their registered accounts earning enough in blog rewards to fully pay off the fixed initial registrar/referrer tax and become a full account (after which point those accounts are no longer taxed any percentage of their SD blog rewards).

This way we still encourage STEEM buy support in order to register new accounts (after the unsustainable Steemit free registration stage is over) but regular users still don't need to pay anything upfront to register their first account.

iamsmooth commented 8 years ago

I think a better approach is for Steemit to contract with third party registration providers in order to accomplish its goals (which it currently attempts to fulfill at its own expense) of onboarding and distributing stake. Such third party providers would be subject to reasonable and customary commercial terms of marketing joint ventures such as focus on an identified market segment, measured effectiveness and auditing.

That distributes the 'steemit' stake which is the stated purpose of (50% of) that account and which both 0-SP accounts and referral-funded registrations do not.

theoreticalbts commented 8 years ago

New accounts need to be "free" or "socialized" in cost, not privatized.

I don't see how it can be done. The blockchain has scarce resources (memory / bandwidth / storage) which are consumed by each new account. Whoever creates the account is responsible for ensuring the expected value the account contributes to the system is greater than the resources consumed. Currently this is achieved by the account creation fee.

There has to be some thing in limited supply that is consumed by the act of creating an account, so any would-be spammer can't just create a billion accounts.

they will establish a market price

New accounts must be scarce, as I showed above; and if they're not desirable Steem is dead anyway. Anything that is both scarce and desirable must have a market price.

people will hoard them

This one we can actually solve -- new account creation tokens can decay over time (e.g. implemented as exponential increase in the amount of new tokens and the cost, in tokens, of creating a new account). I left this suggestion out of my above comment for simplicity.

iamsmooth commented 8 years ago

New accounts need to be "free" or "socialized" in cost, not privatized.

I don't see how it can be done

It can be done by creating a program to allow third party participation in distributing the "ninjamined" coins that are earmarked for new users. This is not a technical problem, it is a business development problem (and therefore maybe does not belong in a github issue).

There is no other method that will accomplish that essential goal of stake distribution while at the same time signing up users in a less-centrally-operated manner. Neither of the other proposals in this issue ("free" accounts or a referral program that recovers the cost of signup from the user in the form of reduced rewards) distribute stake.

bonustrack commented 7 years ago

It's easy to get a new Facebook account and create multiple Steem account. For long term use i would love to see referal system and invitation in the blockchain side. About providers we can use phone number verification, it's hard to hack.

mvandeberg commented 6 years ago

HF 20 solves the problem outlined in this issue.