Komodo Developer Path | Using a Faucet
This tutorial is part of a series.
To return to the previous tutorial, click here.
In the non-digital world, a faucet is a tap fitting of your regular bathroom or kitchen water supply. Faucets sometimes drip.
A blockchain faucet is based on this concept. The digital faucet drips small amounts of coins to people that send a request to the faucet.
In this tutorial, we use a Komodo technology called an Antara Module to create a faucet on our TUT1
Smart Chain.
There are many types of Antara Modules, and the Faucet Antara Module is but one of them.
Transferring funds via the faucet will allow us to perform other tasks further in the tutorials.
- The mining node has ~1000 coins
- The mining node has several utxos
- One large utxo with approximately 1000 coins
- Many small utxos, each having 0.0001 coins
- These utxos are rewards for mining blocks
- Both the mining node and the seed node should be running
- If you stopped the nodes at the end of the last tutorial, restart them using the
SPINUP
functions found within each node's menu
- If you stopped the nodes at the end of the last tutorial, restart them using the
- The mining node should be set to mine
- To restart the mining node, use the
MINING-START
function in theMINING-MENU
section
- To restart the mining node, use the
- On the mining node we send some of our funds to the chain's built-in faucet
- To accomplish this, in this guided tutorial we use an automated version of the faucetfund Remote Procedure Call (RPC)
- On the seed node, which currently has 0 coins, we send a request to the faucet for funds
We first consolidate all the utxos in our wallet, both large and small, into a single utxo. We send this consolidated utxo to the Antara Module that acts as a faucet.
The reason we first consolidate the utxos into one is related to a subtle nuance of Antara Module technology. One requirement of all funds entering an Antara Module is that they must have been spent at least once before. This requirement simplifies some of the underlying code of an Antara Module.
All the utxos in our current mining wallet were generated either in the first block, or they were generated as a part of a mining reward. Therefore, they have not yet been spent.
To consolidate them in the guided tutorial, we use an automated version of the sendtoaddress RPC.
- Enter the
MINING-MENU
- Enter the
WALLET
submenu and selectSENDALLSELF
- This tutorial function performs several automated tasks
- First, the function checks our total balance using the getinfo RPC
- The function gathers the address that we saw earlier in the validateaddress RPC
- Finally, the function sends the entire amount to this address using the sendtoaddress RPC
- This sends everything in our wallet in a circular loop back into our wallet
Wait for this transaction to be mined in a block. (This process is also called "confirming a transaction.")
One way to check the status of the transaction is to use the LIST
function from the last tutorial. Right after performing the SENDALLSELF
function, you will have zero utxos in your wallet. Once a utxo reappears in your wallet, you know that the transaction is successfully mined.
When you finally have a utxo in your wallet again, you will notice that you have two utxos instead of one. This may be surprising, but this provides a good opportunity to learn about "dust."
The mathematics behind blockchain technology are complex, and transactions are rarely able to have perfectly clean total amounts. There is often a remnant of funds in the amount of a tiny fraction of a coin. These leftover funds remain in your wallet as a separate utxo, and as they are typically of such little value, they are effectively useless. This is why they are called "dust."
In this guided tutorial, we use an automated version of the faucetfund RPC. This takes any number of coins we choose from our wallet and sends them to the Faucet Antara Module.
Once the funds are in the module, other users on the chain can request to have some of the funds. The funds are disbursed in small amounts, and the module has a feature that discourages users from spamming the faucet to drain all of the funds at once.
- From the
MINING-MENU
, selectFAUCET
- Select the
FUNDFAUCET
function - Enter
200
as the amount of coins to send- (This amount is arbitrary. We choose
200
for simplicity's sake.)
- (This amount is arbitrary. We choose
Use the BACK
function on each page until you again reach the option to choose between the MINING-MENU
and the SEED-MENU
.
Choose the SEED-MENU
.
Just as before, we want to make sure that we've imported our tutorial private key before we send any funds to any address.
- Select
WALLET
and thenVALIDATE
- If the proper
ismine
isfalse
, we need to import the private key - From the
WALLET
submenu, selectIMPORT-DEV-WALLET
- This automatically performs the importprivkey RPC for us
- Return to the
SEED-MENU
section. - Select
FAUCET
- Select
GETFUNDS
The GETFUNDS
function in this guided tutorial is yet another automated version of an RPC. This time, the RPC is the faucetget method.
The faucetget method requests funds from the TUT1
faucet.
The Antara Module software automatically checks a few things to make sure that we are not attempting to spam and drain the faucet. One task the Antara Module requires is a small amount of work from our computer. The CPU of our computer will perform a few complicated encryption calculations. This may take a few seconds to perform.
The time and electricity this consumes from our computer helps to offset any incentive a malicious actor would have when trying to drain the faucet.
The Antara Module will also check to make sure that our SEED
node's wallet history is relatively fresh. The SEED
node is entirely separate from the MINING
node's data directory, and therefore no issues are detected.
There are many RPCs available to check the balance of a wallet.
A common RPC is the getinfo. This checks many aspects of the Smart Chain's current state, including the wallet's balance.
One of the most common RPC's is the getbalance method. This returns only information about the wallet's balance.
A final example is the listunspent RPC, which returns infromation about all utxos in the user's wallet.
- In the
SEED-MENU
section, selectSEED-GETINFO
to perform an automated getinfo RPC- In the response, look for the
balance
property - There should be at least
0.1
coins in your wallet
- In the response, look for the
- In the
SEED-MENU
section once again, selectWALLET
- Within the
WALLET
submenu, select theBALANCE
function to perform an automated getbalance RPC - Also within the
WALLET
submenu, selectLIST
to perform the automated listunspent RPC