MetaMask is a plugin that enables you to turn a standard Web browser into a digital "wallet" for Ethereum-based tokens and cryptocurrencies. For TCUP, we implemented two crypto tokens. The KuwaToken is the "currency" that the Kuwa protocol uses to incentivize the nodes that maintain the decentralized Kuwa ID network. The KuwaCoin is a standard ERC-20 token that we created to use with TCUP's basic income distributor.
The following steps describe how to add a KuwaCoin wallet to MetaMask.
From the TCUP demo page, you can sign-up for a Kuwa ID by using either our Web or Android-based client apps. When you create your Kuwa ID, remember to download your keystore file, which will contain your public key and encrypted private key. You'll need your key pair if you ever want to send KuwaCoins.
After you create your Kuwa ID, you can use it to sign-up for a basic income distribution via our basic income distributor page.
The MetaMask plugin is available for major Web browsers. Go to MetaMask.io and then follow the appropriate directions.
Since MetaMask is able to handle ERC-20 tokens like KuwaCoin, setting up MetaMask to manage your KuwaCoin wallet is easy. In short, you just have to import the KuwaWallet.json file that you get when you create a Kuwa ID. Then you should add a "custom token" with the KuwaCoin's smart contract address, which is 0x3b5C339aa3DEBad8A5b7C8e73f1D5E0B8B4Ea30E. The following paragraphs and screenshots will walk you through the process.
After you install MetaMask, the first thing you should do is switch to full-screen mode. That will make MetaMask easier to work with. The following screenshot shows the full-screen button, which is located at the top-right area of the MetaMask user interface (shown in dialog mode).
MetaMask can connect to just about any Ethereum blockchain. You could, for example, connect MetaMask to the main Ethereum network, which would enable you to send and receive Ether (Ethereum's cryptocurrency) that has actual value. You can also connect to private Ethereum networks, public test networks, or local Ethereum testing networks. The KuwaCoins that the Kuwa Distributor currently sends are on the "Rinkeby" public test network. To connect your MetaMask plugin to Rinkeby, select it from the "Networks" pulldown at the top-right area of the MetaMask page as shown in the following screenshot.
The next screenshot shows how to import a kuwaWallet.json file into MetaMask. As shown, click on the accounts link, which is the brightly-colored ball near the top-right of the MetaMask page. Then select the "Import Account" option.
When MetaMask prompts you to select a type, which is shown in the next screen shot, select "JSON File." Then select the JSON file that you received when you created your Kuwa ID. You'll also have to enter the password that you selected when you created your Kuwa ID.
IMPORTANT: MetaMask may display an error message when you try to import a kuwaWallet.json file. In all cases that we know about so far, MetaMask still successfully imported the JSON file.
When we've imported Kuwa JSON files, MetaMask has always displayed the error message, "history push is not a function," even though it successfully imported the account. The following screenshot shows that error circled in red.
If you get an error message like the one shown in the preceding screenshot, just click the Cancel button. You should be able to see the new account.
Next, you'll need to add a "custom" token to MetaMask. The following screen shot shows how to do that. For the "Token Address," use "0x3b5C339aa3DEBad8A5b7C8e73f1D5E0B8B4Ea30E" (without quotes), which is KuwaCoin's smart contract address on the Rinkeby Ethereum blockchain.
After you import your JSON file and configure KuwaCoin as a custom token, you should be able to see your KuwaCoin balance, as the following screen shot shows.
After you configure MetaMask with your Kuwa ID, and when you have a KuwaCoin balance that's greater than zero, you can actually use your KuwaCoins in transactions (e.g., make payments by sending KuwaCoins to other people's accounts). Please note, however, that you will need some Ether in your account. That's because Ether is the currency that you must use to pay transaction fees (called "gas") on the Ethereum blockchain. You can easily get free Ether for the Rinkeby test network from the Rinkeby Faucet.