NEAR has two different types of accounts:
- Implicit accounts, similar to ones that Ethereum and Bitcoin do. They don’t exist on-chain until someone actually sends some $N to them. They are not usually super useful for applications because user doesn’t have any $N to spend on gas.
- “Named” accounts, which require an actual registration. This registration currently done via calling a function on
.nearaccount, which requires that whoever creates it already has a NEAR account. “Named” accounts have a benefit of having a readable name that people can recognize when they are using apps and sending funds. At the same time, they require right now a bit of “dance” to create as exchanges and other tools outside of NEAR Wallet don’t support their creation.
Let’s create a faucet that allows people to create “named” accounts.
This requires solving “Sybil” problem, as such faucet will be funding this accounts with some $NEAR.
There are next options to provide good enough solution:
- Using Github and various ways to identify if this account is legit. For example age of the account and that it has been active. There are existing systems that try to evaluate how real a Github account is.
- If user wants to use specific app, an account with an access key for only that app can be created. Faucet will keep the full access key, pretty much making sure that funds are not abused (outside of just sending a lot of transactions to the given app). If user wants to grab their account, they should get more funds into the account (e.g. receive from someone else) and then ask faucet to withdraw it’s initial funding & delete full access key.
There are two major user flows:
- A specific faucet website, which have few of the above options to initiate account creation. It checks that this is indeed a valid person and that they haven’t already used this faucet. After that, it create a “near drop” and redirects them to wallet.near.org to finish creating an account.
- Any app can integrate a piece of JS with the same “create account” options that hit the same backend which create a “near drop” and redirect to wallet.near.org + allow to authorize this specific in nearly created account before redirecting back.
It’s important to highlight that this will be a temporary faucet, meaning that app developers should not rely on that continuously.
One alternative to simplify this, is to integrate this faucet directly into wallet.near.org right now.