The Storj Developer Hub

Welcome to the Storj developer hub. You'll find comprehensive guides and documentation to help you start working with Storj as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    Support

Migrate tokens from SJCX to STORJ

1. Introduction

Recently, Storj Labs decided to move away from the Counterparty network due to high transaction fees, long transaction times and significant network congestion. As the old Storjcoin X (SJCX) token is a Counterparty token which runs on the Bitcoin blockchain, it inherits the Bitcoin limitations mentioned above. The new Storj token (STORJ) is an Ethereum based ERC20 token. With this new token, transaction times are expected be much shorter and transactions cheaper. In this guide we will walk through the process of converting the old SJCX tokens to new STORJ tokens (SJCX -> STORJ) on a 1:1 basis.

2. Opening an Ethereum wallet with ERC20 token support

First we have to open a wallet which supports the ERC20 token standard in order to be able to send the new converted tokens to this address. Technically speaking, the new STORJ token is just a contract on Ethereum, which implies that you should be able to send the tokens to any Ethereum address, however, only a limited number of Ethereum wallets allow you to also see and interact with ERC20 tokens. This means that if you send your STORJ tokens to an proprietary wallet provider or exchange that doesn´t support ERC20 tokens and does not give you access to your private keys, you will not be able to access your funds without the help of the operators of that wallet or exchange. Therefore, it is critical that one has access to either the Keystore File, Private Key or Mnemonic Phrase. Only when one has access to one or more of these three authentication options is it safe to send the STORJ tokens to this address.

Here is a nice article that mentiones all the most recommended etherum wallets compatible with our new ERC20 token STORJ. Please choose one of these for storing your tokens and as your new payout address. In the next step, we will open a MyEtherWallet for storage of our converted tokens. MyEtherWallet is the simplest compatible wallet available at the moment.

  1. Open MyEtherWallet in a web browser. Please make sure that the web page includes the https:// section, if so, you are safe to proceed.
  2. Under "Create New Wallet" enter a password, then safely write down this password. Once you ave done so, click on "Create New Wallet" to create the wallet.
*Figure 2.1. Open [MyEtherWallet](https://www.myetherwallet.com/) in a web browser.*

Figure 2.1. Open MyEtherWallet in a web browser.

  1. Now click on "Download Keystore File (UTC/JSON)". This should download the wallet file which we can use to login later. It is recommended that you store this file on external media such as a USB stick and keep multiple copies in different safe places. Once downloaded click on "I understand. Continue.".
*Figure 2.2. Download the Keystore File (UTC/JSON).*

Figure 2.2. Download the Keystore File (UTC/JSON).

  1. Next, copy the private key below "Save your Private Key (unencrypted)" and save it to a secure location, preferentially offline.
  2. Below "Print Paper Wallet" click on "Print" and save the wallet file to a safe location like you did with the private key, and/or print it out in hard copy. When done, click on "Next: Save your Address".
*Figure 2.3. Save your Private Key (unencrypted) and print the paper wallet.*

Figure 2.3. Save your Private Key (unencrypted) and print the paper wallet.

  1. This will take you to the login page. Now in the menu select "View Wallet info".
  2. In the "View Wallet Info" menu select a login method (private key in this example), and after pasting or typing in your private key, below "Unlock your Wallet" click on "Unlock".
*Figure 2.4. Login to MyEtherWallet to view wallet info.*

Figure 2.4. Login to MyEtherWallet to view wallet info.

  1. Once logged in, if you don´t see the STORJ token listed by clicking "Show All Tokens" under the "Token Balances" menu on the right side of the screen, click on "Add Custom Token" below.
*Figure 2.5. Click on "Add Custom Token" below Token Balances.*

Figure 2.5. Click on "Add Custom Token" below Token Balances.

  1. If the STORJ token is not already displayed, enter the following details for the custom token:

    • Address: 0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac
    • Token Symbol: STORJ
    • Decimals: 8
*Figure 2.6. Add a custom token to MyEtherWallet.*

Figure 2.6. Add a custom token to MyEtherWallet.

  1. When done, click on "Save". The STORJ token should now be added to the list of tokens in MyEtherWallet.
*Figure 2.7. The STORJ token is now added to the list of tokens on your account.*

Figure 2.7. The STORJ token is now added to the list of tokens on your account.

  1. Next, copy your Ethereum address, shown at the left side of the screen under "Your Address". You will be prompted to enter this address as your receiving address for the STORJ tokens in the conversion web app as described later in this guide.
*Figure 2.8. Copy your ETH address from MyEtherWallet, this address will be the receiving address for the new STORJ tokens.*

Figure 2.8. Copy your ETH address from MyEtherWallet, this address will be the receiving address for the new STORJ tokens.

3. SJCX to STORJ Converter

In this step, we will walk through the SJCX to STORJ converter made available by Storj Labs.

  1. Head over to converter.storj.io.
  2. Please carefully read the terms for using this converter app on the first screen (Figure 3.1) and confirm that you have read it by clicking the button "Yes, I understand".
*Figure 3.1. Please indicate that you have read the terms for using this converter app.*

Figure 3.1. Please indicate that you have read the terms for using this converter app.

  1. After confirmation you will see the conversion app main screen (Figure 3.2).
  2. In the "Email field" enter your email address.This email will only be used to send you confirmation of the successfully completed conversion.
  3. In the "Ethereum Address" field, enter your MyEtherWallet receiving address (Figure 2.8). If you used one of the other ERC20 token compatible ethereum wallets, enter the address you got from that wallet.
  4. Finally click on "SUBMIT".
*Figure 3.2. Enter your email address and receiving Ethereum address for the new STORJ tokens into the converter website.*

Figure 3.2. Enter your email address and receiving Ethereum address for the new STORJ tokens into the converter website.

  1. Step 2/2 in the app should now present us with a unique conversion address to which we have to send our old SJCX Counterparty based tokens. For more info on how to send the tokens please consult the next section of this guide. If you have SJCX stored in several addresses, you can send all to the same conversion address.
*Figure 3.2. The converter will now return a SJCX address to where we have to send our tokens.*

Figure 3.2. The converter will now return a SJCX address to where we have to send our tokens.

The converter now knows what our receiving STORJ and email addresses are. Once we have transfered the funds to the SJCX address provided by the converter app (see Figure 3.2. above) the converter will convert the old SJCX tokens to the new STORJ tokens on a 1:1 basis and send them to the eth address we specified within 72 hours. If the conversion is successful, Storj will send a confirmation email to our email address.

4. Send the old tokens to the SJCX address provided by the converter

How to do this mostly depends on where we currently hold our SJCX tokens.

Case 1. My SJCX tokens are on an exchange: You can withdraw the tokens directly from the exchange to the converter SJCX receiving address.You will NOT need to add any BTC miners fee in order to send your SJCX from an exchange, as the exchange will take the necessary fee directly out of your SJCX balance.

Case 2. My SJCX tokens are on a Counterparty compatible wallet: This case is a bit more complicated and requires some more steps. We recommend you use Freewallet.io because it is easier to use than Counterwallet. If you already feel comfortable with using Counterwallet to send transactions, you can skip the next explanation and go straight to section 4.1.

*Figure 4.1. Open [Freewallet.io](https://freewallet.io/) and click on "Run in a browser".*

Figure 4.1. Open Freewallet.io and click on "Run in a browser".

  • Next click on "Existing Wallet".
  • A pop-up window will now display asking to "Please enter your 12-word passphrase".
  • Now enter your wallet passphrase into the box and click on "OK". If you previously used a different wallet like Counterwallet, you can use the same passphrase to access your address(es) that are holding your SJCX.
*Figure 4.2. Enter your wallet passphrase into the box and click on "OK".*

Figure 4.2. Enter your wallet passphrase into the box and click on "OK".

  • The Freewallet dashboard should now open (Figure 4.3).
*Figure 4.3. Freewallet dashboard.*

Figure 4.3. Freewallet dashboard.

  • On the dashboard click on the SJCX token and then click on "Send".
*Figure 4.4. Click on "Send".*

Figure 4.4. Click on "Send".

  • Next on the sending page below Transaction Priority slide the "Priority" to Medium. This should display the Miner Fee (transaction fee) in BTC necessary to be able to carry out the SJCX transaction to the SJCX conversion address. Only use the Low Priority fee option if you are sure the Bitcoin Mempool is not currently saturated with a lot of pending unconfirmed transactions. If you are unsure, choose the medium or high fee option. If you know the mempool conditions will allow you to have your transaction confirmed with a very low fee, you can just type in the fee you want to use at the bottom to the right of "Miner Fee". Only do this if you are absolutely sure or have been instructed to do so by an expert.
*Figure 4.5. Slide the priority slider to 'Medium' and copy the 'Miner Fee' amount.*

Figure 4.5. Slide the priority slider to 'Medium' and copy the 'Miner Fee' amount.

  • We now know the amount of BTC that is required to send this transaction. If you do not have the required amount of BTC in your account to pay the miners fee (see figure 4.5), please first send the required BTC balance to your freewallet address before attempting to send the SJCX to the converter address.

Note: Your SJCX address is also your BTC address, so just send bitcoin for miners fees to your SJCX address if required!

  • Once you have enough Bitcoin in your account to carry out the transaction, head back to the "send menu" in freewallet, enter the SJCX address given by the conversion website (figure 3.2) in the Send to field (figure 4.6), then enter the amount of SJCX you want to send to the converter website in the Amount field, set the priority to "Medium" (or enter it manually if you are sure what you are doing) and click "Send".

Note: If the BTC funds in your account are lower than what is required to send a transaction with medium priority, you can assess the current mempool situation to evaluate if a transaction sent with a lower fee would be likely to be confirmed in a reasonable time anyway and manually adjust the Miner fee down to what you decided to spend, entering the fee in BTC in the "Miner fee" field.

Note: If you get any errors of insufficient funds please send some more BTC to your address or contact our tech support on rocketchat for guidance if you are unsure how to proceed. Keep in mind that sending with too low of a fee may result in your transaction getting stuck unconfirmed in the mempool for extended periods of time, so be careful in choosing a sufficient miners fee!

*Figure 4.6. Send your SJCX to the conversion address.*

Figure 4.6. Send your SJCX to the conversion address.

Once your transaction has been broadcast, you can check its transaction ID in an explorer like chain.so, xchain.io or blocktrail.com to see when it gets confirmed on the blockchain.

4.1. Manual fee calculation

We recommend using one of the available web sites to assess the level of saturation of the Bitcoin mempool at the time you are ready to send your SJCX to the converter SJCX address. The best sites to do so are: bitcoinfees.21.co and jochen-hoenicke.de. These sites show what are the recommended fees in sat/byte for getting your transaction confirmed within a given period of time. Higher fees will result in faster confirmation. The approximate size of a single-input counterparty transaction is about 265 bytes. So if we were to send such a transaction, and for example, we have choosen a fee of 100 sat/byte, then the total approximate amount of BTC we would need for the miners fee would be 100 sat/byte * 265 bytes = 26500 sat or 0.000265 BTC. The actual fee may vary as the size of the actual resulting transaction may be a lot bigger than this. This can happen when we have a lot of small dust amounts of BTC in our SJCX address from when we received our monthly farming payouts. To prevent the wallet from trying to use these small dust inputs in the wallet to make up the miners fee which would result in a much bigger transaction size and cause the required fee to become a lot larger than we would prefer, we should look at our SJCX address in one of the explorers mentioned above and see what is the total amount of BTC we currently have in our address. Farmers that never have sent any BTC to their SJCX address themselves before should now send to their wallet address an amount of BTC equal to the total BTC dust currently present in their SJCX address as shown by the block explorer. This will allow the wallet to have a single input of BTC from where to take the miners fee when assembling the transaction. Once we have received the extra BTC into our wallet address, we now can send out the SJCX tokens to the SJCX deposit address given by the converter app with a much lower fee than would have been necessary if we had tried to just use the dust inputs of BTC already in our address. We can now choose the lowest fee possible that should result in our transaction being approved using the web sites mentioned above to help us determine the mempool saturation level. Anyone that is unsure on how to properly follow the above steps should either just use the fee for a medium priority on freewallet, or ask for tech support to help them with this step on our rocketchat.

5. Confirm the tokens are migrated

If everything goes as intended, the conversion website will automatically send you a confirmation email notice about the successful conversion. When you receive that email we are certain that the conversion was successful and that we can find the new STORJ tokens in our MyEtherWallet within 72 hours.

*Figure 5.1. SJCX to STORJ conversion confirmation email.*

Figure 5.1. SJCX to STORJ conversion confirmation email.

6. Common questions/issues

Please contact hello@storj.io by email if you have any problems with the converter app (e.g. if you did not receiving your STORJ tokens).

  1. Can i send multiple transactions to the SJCX address given by the conversion site
    -> Yes you can!, you can send as many transactions to the SJCX conversion address as you'd like.
  2. I get an insufficient funds warning when I try to send my SJCX to the conversion address
    -> Make sure you have enough BTC funds in your wallet to send the transaction, if not, add some more BTC funds. You could also try using Counterwallet and add a lower transaction fee using Custom fees option. Please follow instructions in section 4.1 on how to determine the proper miner fee for the current level of mempool saturation at the time you want to send your transaction.

  3. I have a Mist or parity wallet, how to I add the STORJ token contract?

In Ethereum Mist wallet, select the 'CONTRACTS' tab and click 'ADD TOKEN' to open the Add Token window. Then:

  1. Under 'TOKEN CONTRACT ADDRESS', enter 0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac
  2. All other fields should be filled automatically:
    -> 'TOKEN NAME' is StorjToken
    -> 'TOKEN SYMBOL' is STORJ
    -> 'NUMBER OF DECIMALS' is 8

Parity
Parity should display STORJ tokens by default with the STJ identifier. If it doesn´t:

  1. Enable the "Contracts" tab in your Parity Settings.
  2. Navigate to the Contracts tab.
  3. Click "Watch".
  4. On the "Choose a Contract Type" screen, select "Token" and click "Next".
  5. Enter the STORJ contract address 0xf3D1f26B31DB83c8899626746D0BBc59D9Dd223c in the "network address" field.
  6. Enter Storj Token in the "contract name" field.
  7. Click "Add Contract".

Migrate tokens from SJCX to STORJ