Ultra Testnet Faucets Contest

Rami James
Published in
5 min readMar 29, 2022


As Ultra aims to expand access to its offerings in 2022, wider developer cooperation and coordination becomes more and more critical

Our blockchain team has been focusing on building and expanding features that businesses and partners can leverage on-chain. To kick things off, we will start to open up some of these projects to the wider EOSIO community. The intent here is to get some of these tools up and running faster, as well as to begin creating the connections to the thriving developer community which will support our network going forward.

To this end, we’d like to start small, with some core functionality that we have seen successfully deployed to other EOSIO-based networks.

Our first target will be a token and account faucet for Ultra’s public Testnet.

A token and account faucet is a secure way to create new accounts and then release tokens to them, generally deployed to a Testnet.

Developers use this tool to create accounts which can be used to test their smart contracts, dapps, and services with.

Ultra’s network has differences to a traditional EOSIO Testnet like Jungle or Kylin. For example:

  • Since Ultra has a business focus, accounts that wish to deploy smart contracts on our blockchain must be KYCed
  • Ultra doesn’t allow users to choose their own account names and they must fit a specific format set by Ultra

Account Faucet

Developers need a quick and easy way to create accounts on the Testnet. The accepted common way is for developers to have access to an account faucet.

There are three items in this modal that are important

  1. Key input.
  2. Method to limit spamming (CAPTCHA is used here)
  3. Button that sends the request to the back-end which generates the account via a transaction.

Ultra’s accounts must fit the regex pattern: 1[a-z]{2}2[a-z]{2}3[a-z]{2}4[a-z]{2}.

Developers who participate in this contest won’t have to worry about this, and instead must simply use our custom action.

There is a get_accounts_by_authorizers API route which can be used after creating the account to return the newly created account name by providing the public key.

Key Considerations

We can leave key generation to another tool. We can also assign the same key to both ACTIVE and OWNER since this is only a developer account. Developers who wish to manage a more complex permission system can always update their key structure after the account is created.

Token Faucet

As a requirement for doing development on internal testnets (QA, dev, etc.) and the external public Testnet, we require a way for developers to have access to Tokens without having to pay for them. Tokens on Testnets have no value.

The accepted common solution to this is a “Faucet” which allows a developer to input their account name on the network, press a button, and then they receive tokens into that account.

There are four items in this modal that are important

  1. Account name
  2. Method to limit spamming (CAPTCHA is used here)
  3. Button that sends the request to the backend which sends a set amount of tokens to the account. 500 UOS should be more than enough per request.
  4. Limit sending tokens to an account by interval

Token Provisioning Considerations

Ultra has decided that we prefer to issue tokens via a Smart Contract instead of directly granting access to eosio.token. Since the Testnet has an unlimited maximum supply we can issue new tokens to be given to receivers.

We don’t believe it is secure to give a carte blanche to any deployed smart contract to issue an unlimited number of tokens on the Testnet, so the smart contract in question will allow Ultra to have a way to manage and mitigate token issuance spam.

Something as simple as the following would suffice:

In the above example, a faucet manager is utilized to set limitations on who can issue new tokens, and how many they can issue within an interval. Ultra would set up faucet settings, and then the faucet would call givetokens to actually issue those tokens.

We would need to allow the contract to call the issue action from the eosio.token contract. Ultra will handle enabling that permission internally.

The expected process will be:

  1. Submissions must be sent via email to: contact@ultra.io with the subject: “Testnet Faucets”.
  2. Your team will need to complete the KYB process to be accepted into the contest. IDs and company information is part of that process, so have it ready.
  3. You’ll need to provide us with an public keys for your faucet smart contract
  4. Create an open-source repository and will include an MIT license.
  5. Deploy a public version for testing.

Ultra’s blockchain team will review the submissions in a first come, first served order with Github dates being used as the ordering value.

Ultra will pay out 5000 UOS tokens to each of the first 2 developers that successfully fulfill the requirements laid out above.

We look forward to your submissions and wish you all the best of luck! If you have any questions, please reach out to us directly at contact@ultra.io

About Ultra

Ultra is the first entertainment platform providing all key games industry services under a single roof, accessible through a single login.

Built around our PC games distribution store, Ultra Games, our platform will provide access to countless centralized and decentralized services: Discover, buy, play and sell your games and in-game items, watch live-streaming feeds, interact with your favorite influencers, participate in contests, compete in tournaments, and much more.

Ultra has been built to provide endless value for players, a fair playing ground for developers, and a whole new world of opportunities for the games industry.

For more information, visit ultra.io and onultra.io and follow along on Twitter, YouTube, Telegram, and Discord.