Staking Fundamentals (Staking 101 for newbies like myself) + How to Use Windows Wallet for Staking (COLX)

in #wallet7 years ago (edited)

First of all, what is staking?
Staking coins in your wallet means that your wallet collects transactions and adds them to the blockchain just like miners do. You'll get a reward each time that happens.
In our example, COLX (ColossusCoinXT) is a proof-of-stake coin, so the more coins you own, the more times it will be your turn to create a new block and the more rewards you get.

Few things we need to know before starting:

  • Your coins will allow your wallet to stake only if they are at least 1 week old (for $COLX), in other words when your coins are mature for 1 week;
  • After staking, the staking coins will be swapped for a higher amount (with the reward) but that resets their maturity to 0 and you'll need to wait at least another week for those coins to stake.
  • Depending on how many coins you have, you can 'split' your coins in smaller parts. That way, when you stake, you will loose maturity for only some of your coins, the rest will continue to stake which give better rewards.
    Your wallet splits coins automatically (so e.g. you start with 1 x 100,000, staking once, next week will be 2 x 50,000 staking twice, then 4 x 25,000 staking 4 times (at most)) but with 7 days maturity for $COLX (quite long), you can speed that up a bit by splitting them yourself.
    To decide how to best split your coins is basically depending on how many coins you have.

Step by step process for COLX wallet transfer & staking:

  1. The first step is to move the coins (from an exchange in most cases) to your own wallet, then you'll probably split your coins to give you slightly better staking results later, then you'll have to let your coins mature for a week and then you'll see some staking rewards.

  2. Choose the best machine to put your wallet on, because your wallet will only stake when it's online. So if you have a computer that's on 24/7 that would be great. Some coins target a specific APR (Annual Percentage Rate), they catch up by giving you bigger rewards if your wallet has been offline for a while. In our case, COLX doesn't do that (for good reasons), it pays you a fixed amount when you stake, but again your wallet needs to be online as much as possible.

  3. Before you transfer money to your own wallet, let's make sure you have a proper connection to the network. Best is to add some addnode= statements to your configuration file ColossusCoinXT.conf. On Windows, the file is hidden in C:\Users\{your name}\AppData\Roaming\ColossusCoinXT but you can also edit it from the menu (tools, open wallet configuration file).

  4. Take a recent list of nodes from ie. NovaExchange to make sure you're properly connected to the network. This will also make sure you share the same blockchain.

  5. Shall we put the staking=1 already as well to config?
    staking=1 is default, you don't need to but it won't hurt either.

  6. Your config file should be looking something like this:
    staking=1
    listen=1
    txindex=1
    rpcuser=xquad
    rpcpassword=123456
    rpcport=51473
    port=51572
    rpcallowip=127.0.0.1
    addnode=104.198.237.48:51572
    addnode=104.238.174.172:51572
    addnode=104.238.186.60:51572
    addnode=107.191.55.141:51572
    addnode=116.196.105.120:51572
    addnode=117.48.197.46:51572
    addnode=118.89.142.85:51572
    addnode=119.29.152.164:51572
    addnode=129.125.45.179:51572
    addnode=13.57.40.167:51572
    addnode=140.143.194.34:51572
    addnode=142.44.240.57:51572
    addnode=178.85.191.220:51572
    addnode=185.87.51.46:51572
    addnode=192.161.53.61:51572
    addnode=194.67.198.15:51572
    addnode=200.56.56.213:51572
    addnode=217.61.0.156:51572
    addnode=37.134.24.236:51572
    addnode=45.32.157.28:51572
    addnode=45.63.77.200:51572
    addnode=45.76.132.221:51572
    addnode=45.76.17.148:51572
    addnode=45.77.88.23:51572
    addnode=45.77.91.38:51572
    addnode=46.128.254.188:51572
    addnode=51.15.196.167:51572
    addnode=51.15.215.130:51572
    addnode=74.118.192.18:51572
    addnode=78.200.9.26:51572
    addnode=79.98.25.164:51572
    addnode=82.14.15.242:51572
    addnode=82.211.30.118:51572
    addnode=84.200.16.124:51572
    addnode=84.208.137.165:51572
    addnode=86.234.58.229:51572
    addnode=89.239.193.68:51572
    addnode=94.177.230.81:51572

  7. When you’re done with editing the config file, restart the wallet and let it synch.

  8. In the example config file, we see rpcuser and rpcpassword, how relevant are they?
    On Linux systems, there is a separation between the background process (daemon) and the actual wallet GUI. The password file is used by both to create a secure connection between the two.
    On Windows, they are not very relevant. It's not important unless to want other software to connect to your wallet. But fields are mandatory so just enter anything.
    The rpcallowip=127.0.0.1 makes sure that RPC connections are only allowed from your local machine.

  9. Always backup your wallet.dat even if your wallet contains no coins yet. The wallet file contains the seed for all future account numbers you generate. So this old backup will enable you to retrieve even the accounts you create in the future (and their balances, because they're registered on the blockchain).

  10. Would it matter whether wallet is open or not while doing the backup?
    If you copy the file manually in Windows Explorer, make sure your wallet is closed to prevent file corruption. You can also use File, Backup Wallet when its running. It's good to know that the configuration directory also contains a backups/ directory with up to 10 wallet backups.

  11. To transfer coins to your wallet, get your default account number from File, Receiving Addresses or create a new account number and name it 'From NovaExchange' or something. Then go to NovaExchange and transfer coins to that account. You could try out a small amount first to verify things are working.

  12. Why we are recommended to create new receiving address each time?
    All transactions are public because they're on the blockchain (that's only the account numbers, not your IP or name/address). But as soon as people know one account from you (e.g. a tip jar you made public), everyone can easily track where the coins go. By using a new account for every transaction, its more difficult for people to guess which accounts belong together.

  13. Does it mean, that I will have like 2 separate addresses assigned to my windows wallet if I make 2 separate receive requests?
    Yes, you will create as many account numbers as you need and your wallet will even create new account numbers 'under the hood' e.g. when you receive change money (So if you have 10 colx and transfer 8 to another account, you'll get 2colx change in your wallet. again in a newly created account). Your wallet will display the total value of all of its accounts but you can also see the balance for each individual account number. We'll see that later when we split the coins.
    So, let's look under the hood then. Go to Settings, Options, Wallet and enable 'Coin Control'.

  14. Does it really matter or relevant to write the amount of payment requested in the wallet while generating the address? So to say, if I write 100 to receive and send from nova to wallet 200, what happens?
    All fields are optional, it makes no difference. Any amount, now or in the future, will be added to the account. You can just as well use File, Receive Addresses to simply create a new account without additional info.
    The payment request generates a code or barcode that you can show someone who wants to pay you. It just makes it easier for the other wallet to create a new transaction to pay you the given amount, e.g. on a mobile wallet, someone could scan you barcode and immediately transfer the amount to you.

  15. Would the amount of the transferred money makes any difference in terms of transfer time?
    The amount should make no difference (unless very big), but most exchanges collect multiple transactions before they send them in bulk. As soon as it gives you a transaction ID, it should be on the network and you should see it arrive in your wallet.
    Technically you need to wait for the transaction to be added to a new block on the blockchain and have some blocks on top of that (confirmations) before you can actually spend it.

  16. So, lets use these coin control features to look what's in your wallet now!
    We won't send money, but on the Send... tab, click the Inputs... button. It allows you to look in your wallet an specify exactly which coins to use for a transaction.
    input
    In our case, that looks like this:
    thisone
    In this tree-view, you see that the wallet has two accounts: 'form NovaExchange' and '(no label)'. The first one also has some 'change' accounts, resulting from transactions done before.
    The 'confirmations' column tells you how many blocks were added to the blockchain after the coins were transferred. So the 1948 colx in my wallet got into my wallet 51067 blocks ago (51067 x 2 minutes, because COLX adds a new block to the blockchain every 2 minutes).
    So those coins have 51067 'confirmations'
    In this example, you'll probably have one account with the two amounts you just transferred (or two accounts with a separate amount in each) due to small transfer test and big transfer you have made.
    If your coins are not mature enough, they will not show up in the 'Inputs...' . You can look at the transactions tab to see them, including their maturity.

  17. What does “mature enough” mean?
    When you transfer coins to your account, they start by just being a new transaction, not added to any block on the blockchain yet. Then, within two minutes, they should be added to the blockchain and you'll actually have the coins in your wallet, but with 0 confirmations (meaning they are in the most recent block on the blockchain). Then, as more blocks are added to the blockchain op top of your transaction, you'll see the number of confirmations go up.
    Technically, there's always a small chance that two blocks are added to the blockchain at the same time, by two separate wallets. As both chains grow, one of them is cut off (the shortests chain) and all transactions from that piece of the chain need to be included in the right chain.
    So the more confirmations you have, the more certain it is that your payment is in the main blockchain.
    That's why you need some confirmations before your wallet allows you to spend them, or before you can sell your coins on an exchange.
    But the COLX blockchain is pretty fast (one block each 2 minutes) so you can spend your coins almost immediately. For BTC every block = 10 minutes so sometimes you need to wait 60 minutes (6 blocks) before you are allowed to spend your coins.

  18. So, assuming in your coin control (and your transaction list), you'll have two 'blocks' of coins, a small amount and a big amount. Each should have some maturity now. Meaning they're definitely in your wallet, ready to spend.
    These separate amounts are called 'blocks' or 'outputs' because they were the output of a transaction (in this example, from novaexchange to the wallet). They have not been spent yet.
    Now if you transfer money to someone, like 60colx, your wallet will select one or more outputs from your wallet (in this case, the 80colx one) and create a new transaction:
    The input will be
    -your 80colx output
    The outputs will be:
    -60colx to 'someone'
    -0.0001 will be a fee.
    -19.999 colx will go back to your wallet as 'change' (in a newly created account).
    As you can see, an output from a previous transaction will be input to the next transaction. It's just like real money. You get a 5$ bill from someone and when you need to pay 3$, you'll need to use the 5$ bill and receive 2$ change. You can't just pay 3$ unless you have other coins in your wallet (like 3 x 1$ from previous transactions). That's exacly how a crypto wallet works. The 'blocks/ouputs' in your wallet are like the coins and bills in a regular wallet. Each of them has their own age (depending on when you got them) and for a new transaction, you'd select the most applicable coins/bills from your wallet.
    (All of this is important to be able to understand how staking works)

  19. 'Staking' means that your wallet will be the one adding a new block to the blockchain, containing all transactions since the last block. You'll get a reward for that.

    • Your wallet will only stake when it contains coins that are at least 1 week old.
    • Then after that week, your coins will 'compete' against all other staking coins on the network, like a lottery. The more coins you have, the bigger the change that you wallet is chosen to create the next block.
  20. So, let’s see what happens if we leave your wallet as it is:

    • You will wait a week;
    • Your 80colx (let’s say this is the test amount you transferred to see if wallet is working) and 500K colx (let’s say this the total amount transferred from the exchange) will then compete against the other coins;
      It is important to realize that
    • It will probably be your 500K block that stakes first, because it bigger (it will probably win the 'lottery' sooner than the 80colx);
    • If your wallet adds a new block, it will (in that block) also create a transaction paying your own reward: input will be your 500,000 block, output will be a new 500,940 colx block, back to your own account. Basically it's adding 940 to your wallet as a staking reward.
    • The network will verify your block and your payment and hopefully accept the block.
    • Because your 500K block was used in this new transaction, it’s in the top of the blockchain and its maturity will be 0 after that! So your 500,940 colx will not stake for another week. The 80colx will, but will probably take more time...
  21. So will it be more meaningful if we split 500k to 50x10k or will it reduce the staking chance by a factor of 50 at the same time?
    Yes, that's meaningful. The chance of staking will be exactly the same (you have the same amount of 'lottery tickets' so to speak) but if you stake, you will only loose maturity on a few coins. The rest will continue to stake. So for example...:

    • You split your coins in 50x10K (since they're fresh, you'll loose only a little bit of maturity);
      You will wait a week;
    • Your 80colx, 50x 10K colx will compete agains the other coins;
    • After a while, you stake.
      It is important to realize that:
    • If your wallet adds a new block, it will (in that block) also create a transaction paying your own reward: input will be your 10,000 block, output will be a new 10,940 colx block, back to your own account. Basically it's adding 940 to your wallet as a staking reward.
    • The network will verify your block and your payment and hopefully accept the block._
    • Because your 10K block was used in this new transaction, its in the top of the blockchain and its maturity will be 0 after that! So your 10,940 colx will not stake for another week but the 490,080 will. You may receive up to 51 rewards if you're lucky.
  22. In general, the smaller you inputs, the better (because you loose as little maturity as possible). But there are some limits.

    • By default, you wallet splits coins if they're big while staking. So in this case 500K block, if would actually not return one 500,940 block, but 2x 450,480 instead. So next week, you can stake up to 2 times, then up to 4, then up to 8.
    • It does so until your coins are about 2000 colx each! But it may feel too small.
    • So to improve your staking rewards by splitting the coins ourselves in, say, 10,000 colx each. That would give 500 x 10,000 blocks and 1 x 80colx in your wallet so technically, you could stake up to 51 times. That won't happen though because many people do this and there's only one reward every 2 minutes to earn. But it will improve your income from staking because you 'loose' maturity for only 10K coins when you stake.
  23. Ok so in order to split, do I basically need to send 49 transactions to new addresses? or is there a better way ?
    There is a better way, which is why we enabled 'coin control'.
    So in order to split your coins, let’s send them to your own wallet and tell the wallet that we want to split coins. As an example:
    Case
    Basically, you will transfer 500,000 colx to your own wallet, splitting in 50 small blocks.
    Because it also needs to pay a small fee, it will probably also use your 80colx block for this transaction.
    If you're adventurous, you could use the 'inputs...' screen to select all of your coins for this transaction. It will then show some more details on what it's about to do (like the amounts for fee and change).
    Inputs:
    -500,000 colx
    -80 colx
    Outputs:
    -10,000 colx (50x) to your own wallet;
    -0,0xx fee for transaction costs;
    -79,9xx change back to your wallet (newly created change account)
    Afterwards, we'll look at the transaction on the blockchain and in your 'inputs' screen.

  24. While doing the transfer do I need to select for anonymization and staking only when I'm writing my passphrase?
    No, you need to fully unlock it. This is clicked in later use for staking.

  25. Now we have 50 equally split account, 1 change account where 20 colx is used as fee and equaling 60 colx.
    So your wallet now has 50 x 10K in one account and about 60colx in another (change) account. Well done, you can check your transaction on the blockchain

  26. So if you leave your wallet to stake, it will (after one week) compete against the network with 500,000 coins. When you stake, you'll have 490,000 staking coins left and hopefully stake more than once next week.

  27. One little thing to do:
    By default, your wallet will split your coins till they're 2000 colx each (so you'll have 250 outputs in your wallet in this example) but it doesn't need to. It will only use memory and CPU. So to change that, you could use setstakesplitthreshold 10000 in the debug console.
    debug

  28. So, all of this may seem overly complicated, but that's mainly because of the 1-week-maturity time of COLX. Most other Proof-of-stake coins have only 8 hours maturity so splitting coins will happen much faster and there's no need for manual splits.
    You can normally just transfer the coins and start staking.
    When your wallet is staking, make sure to unlock it. You can use the checkbox 'for staking only' this time.

  29. So if I ever need to close my wallet, will it affect this 1 week maturity period?
    No it will be fine. Your coins are on the blockchain and the maturity = #confirmations = number of blocks added to the blockchain. That will just happen, even with your wallet closed. But your wallet will not stake when offline obviously.
    But yes, since you need to wait for your coins to mature, you can indeed close your wallet for 1 week now.

  30. One more thing about your backup wallet.dat. Even the oldest backup would be sufficient to recover your funds, including the little 9918 blocks you just created after making the backup. But still, remember to make backups now and then because the wallet file also contains account names and the threshold setting etc.
    Also, always use encrypted wallets, keep backup copies on another machine, on an encrypted disk or in an encrypted zip file. We'll see computer viruses specifically looking for wallet files soon. Be safe.

A big “thank you” to Sussoloc46 for spending half day with me and answering my newbie questions above, I also think I’ve done my share for the community by making this as a guideline.

Hope you enjoy it and happy staking!

You can join COLX community by below:
Telegram
Website
Twitter
Slack
Bitcointalk
Youtube

Sort:  

Nice work man!

Thanks a lot, I hope it would of assistance for some people :)

Congratulations @xquad! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Hello & Cheers!! I'm a content detection and information bot. You are receiving this reply because a short link or links have been detected in your post/comment. The purpose of this message is to inform your readers and yourself about the use of and dangers of short links.

To the readers of the post: Short links are provided by url shortening services. The short links they provide can be useful in some cases. Generally their use is benign. But as with all useful tools there are dangers. Short links can be used to hide all sorts of things. Quite frequently they are used to hide referral links for instance. While not dangerous this can be deceptive. They can also be used to hide dangerous links such as links to phishing sites, sites loaded with malware, scam sites, etc. You should always be extremely cautious before clicking on one. If you don't know and trust the poster don't click. Even if you do you should still be cautious and wary of any site you are sent to. It's always better to visit the site directly and not through a short link.

To the author of the post: While short links may be useful on some sites they are not needed on steemit. You can use markdown to format your links such as this link to steemit. It's as simple as [steemit](https://steemit.com) Unlike short links this allows the reader to see where they are going by simply hovering over the link before they click on it.

This message was created by a bot. It is part of the ongoing fight against spam and phishing attacks on steemit. If you did not use short links in your post and feel you have received this message in error you can contact @fubar-bdhr on discord or @fubar.bdhr on steemit chat to report the issue.

Speaking of staking, NEBL do have soft staking in Kucoin Exchange, check this for further details.