Author Topic: Building Colossuscoin 2.0 the community built Coin  (Read 6310 times)

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Building Colossuscoin 2.0 the community built Coin
« on: May 27, 2014, 05:11:37 PM »
Hi everyone,

I've been working super hard on building Colossuscoin version 2 over the last few weeks and so now I'm looking to get some help from anyone that wants to help. My goal with this is to purely build and remake this coin with the help of everyone in the foundation. I'm going to start with the basics of Github and Cloning.

First we start with the main cloning guide I have been working with, I am using the Devtome guide available here http://archive.today/jdOaV and for the purpose of this project I want to add all the parts in which are lacking and keep it easy to understand.

I am working in both Windows and Linux, I have been using Windows for years but only started with Linux a few weeks or so but I have to say it is much easier in many ways, I am going to assume that most will be working with Windows. If you would like to work with Linux you can download Ubuntu at http://www.ubuntu.com/download and install the Ubuntu Operating System, it's free and can be easily installed as a partitioned operating system so you can choose to either boot in Windows or Linux.


Github


You will want to create a Github account so you can send your copy of the edited code to work with, it's not really mandatory to get a copy of the code to work with but it's good to be able to read and look through what changes have been made. As a base I am working with the Blackcoin code because of how well done the Proof of Stake code has been made so lets first take a look at how Github works.

In Github you can download the source code as a Zip file to work with from any point in time so you can download the latest code, or you can navigate back in time and download the code from a previous point by clicking on commits.



So lets click on the commits and navigate back, to a previous point.



Now we want to view these changes at this period



If you click on "browse code" it will take you to a snapshot of the source code from that point in time in which you can browse, 'fork' or download as a zip file.



You can get Github for Windows using the program Cygwin, it's a command prompt in which you can push changes and pull code directly from Github. I used this guide to get Github working for Windows http://www.gizmoplex.com/wordpress/upgrade-git-to-latest-stable-release-in-cygwin/

If using Linux, you can get Github and all the dependencies with a single command,

$sudo apt-get install sudo apt-get install build-essential libboost-all-dev libssl-dev libdb++-dev libqrencode-dev git qt-sdk libminiupnpc-dev

sudo apt-get install build-essential
sudo apt-get install libssl-dev
sudo apt-get install libdb++-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libqrencode-dev



Editing code

Your going to need a text editor in order to edit the code and make changes. For Windows I recommend notepad++ you can download it at http://notepad-plus-plus.org/

If you downloaded the code as a Zip file, make sure you unzip the source code to a folder to navigate through. To search for specific pieces of code to change while in Notepad++, click on 'search' and then on 'find in files', click on the 'find in files' tab and then find your source code folder with the 'Directory' button. It's important to have the 'Match case' box checked because upper and lower case letters in the code help determine certain files to connect to. If you have 'match whole word only' box checked, it will search for the word only if it's not combined with other words such as Blackcoin but not Blackcoind.




Now with source code is hand there is a few things that need to be changed such as names, BlackCoin, blackcoin and BLACKCOIN, the symbol BC, and port numbers. On top of what is in the guide, previous checkpoints have been removed, DNS seed nodes have been removed and the checkpoint server has been removed. I also re-enabled IRC seeding by default, hardcoded to one IRC channel instead of a choice of 5 channels and have loosened the 5 minute time difference to the original 2 hours. The Zerocoin parameters and the 2 hour time difference will have to be changed back but I think it's better to try to go with as close to the original fork as possible with all the updates included.

I have re-uploaded all my changes for some pretty clean code to work with to https://github.com/Crestington/Colossuscoinv2

I have also reset the nonce and mined a new Genesis Block so this version should be mineable.

One addition that is NOT in the code I have uploaded is the Genesis Block script. In the Guide used it mentions about changing 'false' to 'true' in the main.cpp just under where it lists the Nonce value but in the Blackcoin code it isn't listed there so I ended up finding the correct script through Google since it's a different type of hashing.



However in newer versions of code, the Genesis Script has been removed to prevent people from hashing their own Genesis Block since after the Genesis Block is created, that script is no longer needed and only needs to be run on a local machine.



The Scypt used for mining the Genesis Block in the Smallchange code would not be valid because it's based on a different hashing algorithm so with a little googling and a bit of tweaking of the code the Genesis Block Scrypt looks like this and can be used with most newer coins such as Hobonickles, Fluttercoin and pretty much all the Novacoin clones.

        printf("%s\n", block.GetHash().ToString().c_str());
        printf("%s\n", hashGenesisBlock.ToString().c_str());
        printf("%s\n", block.hashMerkleRoot.ToString().c_str());
        assert(block.hashMerkleRoot == uint256("0xeed579c62f6943b8d8e529d0c569afca71007140739115dde14b9b66d62f17ff"));
        block.print();

        // If genesis block hash does not match, then generate new genesis hash.
        if (block.GetHash() != hashGenesisBlock)
        {
            printf("Searching for genesis block...\n");
            // This will figure out a valid hash and Nonce if you're
            // creating a different genesis block:
            uint256 hashTarget = CBigNum().SetCompact(block.nBits).getuint256();
            uint256 thash;

            while(true)
            {
                thash = scrypt_blockhash(BEGIN(block.nVersion));
                if (thash <= hashTarget)
                    break;
                if ((block.nNonce & 0xFFF) == 0)
                {
                    printf("nonce %08X: hash = %s (target = %s)\n", block.nNonce, thash.ToString().c_str(), hashTarget.ToString().c_str());
                }
                ++block.nNonce;
                if (block.nNonce == 0)
                {
                    printf("NONCE WRAPPED, incrementing time\n");
                    ++block.nTime;
                }
            }
            printf("block.nTime = %u \n", block.nTime);
            printf("block.nNonce = %u \n", block.nNonce);
            printf("block.GetHash = %s\n", block.GetHash().ToString().c_str());
        }

A better view of the code in place looks like this



In order to create a new Genesis Block, you need to first generate a new Merklehash value. You create a new Merklehash by updating the Txnew time and Block time to current Epoch Time which is a measure of computer time in seconds since 1970. You can view current Epochtime here http://www.epochconverter.com/ The Nonce value is the incrementing value to find a synchronized block for the script so we want to reset that and let it find a new Nonce.

Colossuscoin2.0/blob/master/src/main.cpp

Line 2544:  txNew.nTime = 1401133000
Line 2554:  block.nTime    = 1401133000
Line 2554:  block.nNonce   = !fTestNet ? 89572 : 48952;

Note: 89572 is Mainnet and 48952 is Testnet

Also need to change the pszTimestamp to something else, typically people use a newspaper headline, Doge uses 'Nintendo'

Line 2542:  const char* pszTimestamp = "26 Mayb 2014 Colossuscoin is born";

You also want to insert the Genesis script. All your changes should look like this



Now in Linux you would now build all those changes into the Colossuscoind commandline by using the following commands in the terminal

cd Colossuscoinv2/src
Colossuscoinv2/src% make -f makefile.unix USE_UPNP=-

You can strip the file of the debug symbols to make a smaller file if you like

Colossuscoinv2/src% strip colossuscoind

It should build cleanly if you've only changed the basics so now we run colossuscoind in testnet

Colossuscoinv2/src% ./colossuscoind -testnet





« Last Edit: May 31, 2014, 05:15:41 PM by Crestington »
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

mouseman

  • Improvement Team
  • Full Member
  • ****
  • Posts: 109
  • Karma: +2/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #1 on: May 27, 2014, 08:16:38 PM »
WOW, give us a bit of time to read through this and absorb it please.

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #2 on: May 27, 2014, 09:54:53 PM »
It will immediately fail because the Merklehash isn't valid and generate a new Merklehash in the debug log. If in Linux it should be in your home folder in a .colossuscoin folder in the testnet folder. The .colossuscoin folder is sometimes hidden in Linux in the home folder and so if you can't find it, press control+h to show or hide hidden files.

In Windows it should be in your user/appdata/roaming/colossuscoin folder

The debug log should show an error at the bottom of the log and 3 hash values, the third value is our Merklehash



Our new Merklehash is d502ad9943ced9608b861f5ddf5dd60a71943b441a56269a371bf96372cc825a

Now we insert the Merklehash into the main.cpp in the previous photo

and rebuild colossuscoind with the following command

Colossuscoinv2/src$ make -f makefile.unix USE_UPNP=-

Once it's finished rebuilding the file, run it in testnet to generate the testnet genesis block

Colossuscoinv2/src$ ./colossuscoind -testnet

The script will then generate a Genesis Block in the debug log in .colossuscoin/testnet/debug.log



Now you create a Mainnet Genesis Block by running Colossuscoind as normal and it will generate a Genesis Block in .colossuscoin/debug.log



Now we insert all the values into the main.cpp file and remove he Genesis Block script so we aren't hashing a new Genesis Block by mistake and rebuild the file.

Now to review what I have done with the code is that I have changed all the BlackCoin, blackcoin and BLACKCOIN names to ColossusCoin, colossuscoin and COLOSSUSCOIN, changed the symbol BC to CV2. I have removed all the checkpoints and seed nodes, changed the port numbers to RPC port 16873 or testnet 35873 and P2P port 16872 or testnet 35872. I changed all the splash images and generated a new Merklehash, Nonce value and Genesis Block as per the instructions in the cloning guide.

Now it's time to create some wallets and colossuscoind, the command interface.

Build instructions for the wallets are within the Doc files on how to compile the colossuscoind command-line and QT builds can be found here.

https://github.com/Crestington/Colossuscoin2.0/tree/master/doc

I successfully built the Linux wallet, however I had to copy libleveldb.a libmemenv.a and build_config.mk from the Blackcoin wallet I had previously compiled. This is not really a compiling issue, more of a Debian issue somewhere when installing the dependencies (Linux).



There should be nothing stopping from mining the coin, so now I am currently working on mining and compiling of the wallets.

Had to split my topic because of how big it was getting.
« Last Edit: May 31, 2014, 05:18:02 PM by Crestington »
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #3 on: May 28, 2014, 01:22:18 PM »
Updated
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

dennislevy

  • Improvement Team
  • Newbie
  • ****
  • Posts: 9
  • Karma: +0/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #4 on: May 29, 2014, 06:55:01 PM »
Hi, Crestington

I finally found this thread again. I agree with mouseman, it is going to take me a while to absorb this info!
I will try and go step by step over the weekend and try and get as far as I can. Wanted to get back at you
yesterday, but lost my internet connection. Everyone in my neighborhood lost they cable for at least 12 hours. Was acting up a bit this afternoon, but is okay now. If I have some questions on getting things set up, I will get back at you. My guess, is I will need a little hand holding. Sorry :-[ This stuff is still pretty new to me. As I get to understand this stuff, I will be able to be more help. I will start going through the above steps Friday night and see where I get. Still playing catch up on a few things.

Have A Fantastic Weekend! Crestington
Dennis

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #5 on: May 30, 2014, 10:39:21 AM »
I was missing a couple build dependency files in the levelbd folder but have replaced them and built the Linux wallet.



I have updated the original post.
« Last Edit: May 30, 2014, 01:06:53 PM by Crestington »
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #6 on: May 30, 2014, 05:04:34 PM »
What needs to be done yet is..

New magic number for the code

Editing of the number of coins being generated and Max amount of Coins, premine amount

Mining and compiling of the wallets

Fee revamp and distribution along with the Dev fund address

Multi-sig address for the development fund

Seed nodes

Multi-pool

Checkpoints and checkpoint server

BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #7 on: May 31, 2014, 05:12:33 PM »
Modified and split the topic into 2 posts because I ran over the character limit for posting :)
« Last Edit: May 31, 2014, 05:20:26 PM by Crestington »
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

dennislevy

  • Improvement Team
  • Newbie
  • ****
  • Posts: 9
  • Karma: +0/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #8 on: June 12, 2014, 02:32:54 PM »
What is a seed node? Is it something similar to a webpage? Meaning that it is hosted on a server 24/7?
I have 2 different hosting accounts that have available bandwidth. Since I am already paying might as well get my money's worth for it. If so, let me know and I can upload some to my hosting accounts. Could also have wallets and what ever loaded on my accounts for downloading. I have a domain name already with the name of Colossus in it. I could use that for the downloading and possibly seed nodes. I believe nodes are other people's wallets with the block chains already downloaded? All this new terminology, I am not up to speed with yet. Maybe Wiki explains some of this? Past 2 weeks has been pretty hectic! My internet was out, computer acting up, along with work. Had my hands full. I am not sold on cloud servers yet. Seems they are intermittent? Online, not on line, fiber optic cables still might be the  better option. Almost everyday I get browser working, cloud server working site server down. I find it hard to believe a half dozen or more websites I am at go down for a few minutes or more almost everyday. My wireless router goes down, maybe once every 2-3 weeks. But not daily, I think the signal gets temporary interrupted, is my guess. I bought a couple of c++ instruction books. One of the books, the clown from the get go is talking over my head. Learn c++ one hour a day, if he says so. If I got some real basic code and the terminology down, I might be able to understand it. I think I am going to try 3schools website as they do give one a real basic understanding of how to use codes. I have 3 days off from work, so hopefully I can get a better understanding. Sorry I am a newbie at some of this stuff, but so was everyone else at one time.

Everyone have a fantastic weekend!
Dennis

mouseman

  • Improvement Team
  • Full Member
  • ****
  • Posts: 109
  • Karma: +2/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #9 on: June 13, 2014, 07:43:02 PM »
WOW, you definitely get an A+ for effort Dennis. Keep us posted on some of the things you are doing. Also, your ideas/offer on the seed node may be exactly something we need in the future contingent on what Crestington/Sudo think of the direction for COL2 as far as anonymous coin sending and if we will use these seed node computers like TIPS coin and dark coin..as well as I think now jackpotcoin (?) and Supercoin. I think you should PM Crestington as he is elbow deep in this stuff. 

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #10 on: June 14, 2014, 01:06:36 PM »
What is a seed node? Is it something similar to a webpage? Meaning that it is hosted on a server 24/7?
I have 2 different hosting accounts that have available bandwidth. Since I am already paying might as well get my money's worth for it. If so, let me know and I can upload some to my hosting accounts. Could also have wallets and what ever loaded on my accounts for downloading. I have a domain name already with the name of Colossus in it. I could use that for the downloading and possibly seed nodes. I believe nodes are other people's wallets with the block chains already downloaded? All this new terminology, I am not up to speed with yet. Maybe Wiki explains some of this? Past 2 weeks has been pretty hectic! My internet was out, computer acting up, along with work. Had my hands full. I am not sold on cloud servers yet. Seems they are intermittent? Online, not on line, fiber optic cables still might be the  better option. Almost everyday I get browser working, cloud server working site server down. I find it hard to believe a half dozen or more websites I am at go down for a few minutes or more almost everyday. My wireless router goes down, maybe once every 2-3 weeks. But not daily, I think the signal gets temporary interrupted, is my guess. I bought a couple of c++ instruction books. One of the books, the clown from the get go is talking over my head. Learn c++ one hour a day, if he says so. If I got some real basic code and the terminology down, I might be able to understand it. I think I am going to try 3schools website as they do give one a real basic understanding of how to use codes. I have 3 days off from work, so hopefully I can get a better understanding. Sorry I am a newbie at some of this stuff, but so was everyone else at one time.

Everyone have a fantastic weekend!
Dennis

A seed node is a node that is hardcoded into the client, it runs off a special script that will crawl for ip addresses for wallets to connect to. You don't need a seed node but it does make connections easier, especially if just starting out. Check out this Bitcointalk thread on seed nodes https://bitcointalk.org/index.php?topic=321547.0

I am still working on the Windows compiling right now, I've been building the dependencies according to the bitcoin thread referenced here https://bitcointalk.org/index.php?topic=149479.0

So far I have successfully generated the Genesis Block and compiled colossuscoind and colossuscoin-qt on Linux and so the coin should work on all accounts once additional wallets are added and mining started.

I haven't made any alterations to the algo yet because I need to be able to test the mining and staking first.

What is needed right now is either mining in Linux on a local machine or in the cloud, colossuscoind and colossuscoin-qt in Windows, and mining in Windows.

You can help by working with the same source code I provided at https://github.com/Crestington/Colossuscoinv2

Compiling is exactly the same no matter what algo we are using but I know this will run and work as needed so once mining is up and running and the Windows colossuscoind and colossuscoin-qt are compiled then we can go back and start making more changes to the algorithm. Once the compiling and mining is down pat, it's the same process to compile all the previous stuff with new changes to the algo.

Once that is out of the way we can start on DNS seed nodes, multi-pool mining and a checkpoint server.
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

dennislevy

  • Improvement Team
  • Newbie
  • ****
  • Posts: 9
  • Karma: +0/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #11 on: June 14, 2014, 03:41:07 PM »
I have an idea that if a wallet stays open longer it should be rewarded with more POS. I was reading an article on POS and most wallets are open for a short time. Which reduces available nodes. Which reduces network stability as less wallets are open. If POS is suppose to replace POW to record transactions, then ones needs some kind of incentive to keep wallets open for a longer period of time to actively record transactions. I do not know if that can be built into the wallet to give more weight in generating POS to people that keep their wallet open longer to help give network stability. If so that would be ideal to help keep network stability. In another words less staking age for wallets that stay online. Verses longer staking time for wallets that are online for shorter periods of time. I think Community Coin does this, though I am not sure. I think it does as my wallet generates coins, sometimes several times a day. I only had this wallet for 5 weeks and did not put coin in it everyday. I have only put coin in it about once a week. They have no set time frame for receiving POS like most wallets that have POS. Like 10 days or 20 days before one generates POS. I keep it open most of the time, except when I open another wallet to download block chains. As 2-3 wallets open at the same time greatly slows the process down. I guess the pnp port is small? Like hooking a garden hose up to a fire hydrant! Not very effective. Thought I would throw this idea out to see what you think of it.

Have A Fantastic Weekend!
Dennis

dennislevy

  • Improvement Team
  • Newbie
  • ****
  • Posts: 9
  • Karma: +0/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #12 on: June 14, 2014, 03:49:27 PM »
If you are interested in reading this article, it gives pros and cons on POW and POS.
http://www.reddcoin.com/papers/PoSV.pdf

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #13 on: June 14, 2014, 08:51:43 PM »
I have an idea that if a wallet stays open longer it should be rewarded with more POS. I was reading an article on POS and most wallets are open for a short time. Which reduces available nodes. Which reduces network stability as less wallets are open. If POS is suppose to replace POW to record transactions, then ones needs some kind of incentive to keep wallets open for a longer period of time to actively record transactions. I do not know if that can be built into the wallet to give more weight in generating POS to people that keep their wallet open longer to help give network stability. If so that would be ideal to help keep network stability. In another words less staking age for wallets that stay online. Verses longer staking time for wallets that are online for shorter periods of time. I think Community Coin does this, though I am not sure. I think it does as my wallet generates coins, sometimes several times a day. I only had this wallet for 5 weeks and did not put coin in it everyday. I have only put coin in it about once a week. They have no set time frame for receiving POS like most wallets that have POS. Like 10 days or 20 days before one generates POS. I keep it open most of the time, except when I open another wallet to download block chains. As 2-3 wallets open at the same time greatly slows the process down. I guess the pnp port is small? Like hooking a garden hose up to a fire hydrant! Not very effective. Thought I would throw this idea out to see what you think of it.

Have A Fantastic Weekend!
Dennis

Yes I would like to change the staking to weight against wallets that are open. The reason most people don't leave their wallets open with staking is the security risk against it. To weight it towards open wallets we can tweak the minimum and maximum stake ages and make the payout a set amount over a year such as 10% a year. In order to combat the security risk of leaving the wallet open all the time I want to test with multi-signiture transactions so that anyone can just create their own cloud wallet and be able to verify the transaction with an offline private key.
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg

Crestington

  • Hero Member
  • *****
  • Posts: 835
  • Karma: +29/-0
  • Welcome to our new ColossusCoin-Forum!
    • View Profile
Re: Building Colossuscoin 2.0 the community built Coin
« Reply #14 on: June 15, 2014, 04:30:32 AM »
I didn't have as much time to reply and wanted to further elaborate on shortening staking times.

I will be looking to strike a bit of a balance for staking times because if staking is too quick and too soon, it could work a bit negatively especially if we are mining with multi-pools. Miners will always dump which I think is a major problem with Proof of Work as it continually devalues the worth of the coin to all other holders. First way to combat this is to be 100% Proof of Stake but then you need the staking period to be like Blackcoin where the minimum stake age is 6 hours with no cap on the maximum time so that whenever you open your wallet you stake coins and it verifies transactions.

If you wanted to favor holders more as you suggested, you would want the minimum stake age around 7-14 days with retargeting for a yearly float target. If it is 10% inflation in a year and you own 1 billion, you should have 1.1 Billion at the end of the year. The minimum stake age would then become a determining factor whether you receive more or less of that 10%. If the minimum age were 14 days then if you were to move your 1 Billion, to a new address you would lose two weeks worth of staking or approximately 3.8 million. You would end up making it up because the same would apply to everyone else and so if you staked your coins 90% of the time but the average is only 20% you would end up with a 45% increase over the year where people who trade frequently got less.

I'm not saying that's how we should do it, but may give you a bit of an idea of how it could be done. Fee's are going to be a huge tool and could even work on it's own algo, maybe through proof of transaction. Personally I would want payout from staking and fees to start at around the 10 day mark but then we would need a POW element to facilitate transactions when there is no POS blocks.

What I'm going to do over the next day or two is to put up a bounty on someone creating a Windows QT wallet for the coin I made along with a guide on the exact process in which to do it. I'll be putting down $50 to start and see if someone wants to do it.
BTC: 189A74yHTNH78ct32yrm8g7yMxUJTShQUe
COL: 2A4QNtiKCNwiPX1xoYk17jxXBES3k2oszg