Testnet Launch: Now!Mainnet Launch: The Equinox [9/23/2014 12:00 PM UTC]Coinshield Core is done, well, ready for launch. This is a Testnet only client, to start the distribution of binaries, and help to ensure everyone who wants to be involved from the launch date can have a binary that works [and I can verify there are no more bugs]. The binaries included here are compiled for Ubuntu and Windows. Now as lovely as Linux is, there is the flaw of not-so-portable binaries. From my research Ubuntu Binaries should work on most Linux Distros, but in case it doesn't work on yours, please post here, or send me an email or PM with your OS version, and I'll install that OS on a spare computer and compile it for you. This way you will be sure to be ready for the Coinshield Launch.Here are the links to the binaries
[For linux remember to allow Coinshield through your firewall]:Coinshield Core - Ubuntu x86Coinshield Core - Windows x86I removed the internal miners, it is unnecessary code considering I took the time to write external miners.
So to mine, you must download a CPU Miner, or compile it from my
GithubHere are compiled binaries for the CPU Prime Miner [x64 coming when my TODO list is smaller
]:
Primeminer - Windows x86 If you want a linux binary for the primeminer, let me know and I'll compile one.Now, I would like to take this opportunity here to give the Finals of all the Features in Coinshield.
I. SK Hashing: Using the new SHA3 hashing algorithms Skein and Keccak, Coinshield runs as a pure SHA3 network. The SK templates range from SK64 to SK1024. Here is the usage of each SK hashing template:SK64: Hash for Modifier Checksum as second fingerprint for Decentralized Checkpoints.
SK256: Hash to generate an Address from your Public Key Hash.
SK512: Hash for Transactions
SK576: Hash of Public Keys, which is then Hashed with SK256 to generate your Address.
SK1024: Hash for Block Generation. Used by both the CPU and GPU miners [and Stake Minting] to create new Blocks.
II. Private Key Upgrades: Using the EC_KEY algorithms allocated in OpenSSL, I upgraded the private keys to a non prime based elliptical curve encryption of 571 bits. This was the largest algorithm that was available, and also not dependent on prime numbers. The reason for this is simple: Coinshield CPU Miners are searching for very large prime numbers, so if any 'discoveries' happen from such actions, it could compromise the whole private key system. The exact algorithm Coinshield uses is secp571r1 compared to sect256k1 that is utilized by most cryptocurrencies today. This compliments the upgraded hashing algorithms to ensure the highest security possible by today's standard.III. Multiple Mining Channels: Coinshield has more options as a miner to help make the distribution as fair as possible. Dense Prime Clusters are found on the CPU channel from an SK1024 hash, while GPU miners do conventional SK1024 hashing. Each channel has its own difficulty adjustments and released rewards. The block trust is calculated to prevent streaks per channel, so in other words a different channel block will always break a streak of 2 or more blocks on a single channel. This makes each mining channel reinforce each other to prevent a 51% attack on any of them forcing an attacker to need 51% of all 3 mining channels [CPU, GPU, POS].
Block structure for Mining uses a 64 bit nNonce to overcome the 1Gh/s issue bitcoin had, part of the reason getblocktemplate was developed. At 1 Gh/s, it will take 18446744073 seconds before a new block is required, apposed to 4-5 seconds for Bitcoin. This helps in smoother operation of large pools, and accommodation for very large hashrates without necessary modifications to the LLP.IV. Proof of Stake: Developed by Sunny King for Peercoin, and adapted to fit in the multiple channel designs of Coinshield. Distribution is held on a timed release to only allow a maximum of 2% inflation yearly. Proof of Stake will begin after 1 month, so I can finish the modifications / upgrades that I am implementing, while allowing the launch to not be delayed further. The coins will stake for 2 years, to keep longevity in block production.V. Time Locked Distribution: This feature ensures that you will always have accurate data of the total CSD supply, and have an accurate prediction on what the Supply will be after X amount of time. General results are within ~0.1% margin of error which means that you will always know the given supply at any time whether past, present, or future.
With the time-locked distribution, it will prevent anyone with a large hashrate from inflating the currency while the difficulty adjusts. This is done by basing the block reward off of the time it took to create your block. This is complimented by the Exponential Decay Equations that will slowly reduce the total supply released per minute to ease reduction of supply to the miners. This ensures that miners won't be left 'in the red' after the block reward halves.
The Time Locked Distribution is split 50-50 for the CPU channel and the GPU channel. This ensures that neither channel gets more supply than the other, I believe this is the fairest approach.VI. Shield Target Difficulty: This is an asymmetrical difficulty adjustment which gives higher priority to reduction in difficulty than inflation. This will keep the blockchain from getting 'stuck' for periods of time. The second aspect is that of reduced difficulty if too much supply has been released. This will continually reduce the difficulty as long as there is more than 8 minutes of supply available. From this point, miners will be getting a Full Subsidy while the difficulty deflates, to ensure more stimulation in block production, rather than difficulty.VII. Unified Time: The Unified Time System synchronizes your clocks worldwide from an initial time seed. This seed is then propagated through the network, and maintained. Once the seed is held in the network, it can be retrieved from any node making this a Decentralized, Trustless, Clock synchronization method. Another function is to reduce any dependencies on centralized sources, such as Network Time Protocol [NTP] which has just been found to have very large Amplifiction Attack Vectors [In other words, anything running NTP is vulnerable to DDOS].
The difficulty with this time system though, is that each computer sees a second 1-2 microseconds from each other, which means computer clocks are always drifting + - 2 seconds per day. The way I compensated for this is keeping the Unified Average Moving, so that we get the most recent time seeds from last X hours. This allows the clocks to stay tight, but slightly fluid. The LLP Clock Regulator periodically grabs the Unified Seed from the Seed nodes to continually build and move this average. I usually see about + or - 1 second over a day or so. VIII. Lower Level Protocol: From my many years of experience in Network Programming, I put this knowledge to the test in the development of the Lower Level Protocol. It uses template classes to allow anyone to 'build your own protocol' without having the need for any Network Programming knowledge. It gets rid of the "1 connection per thread" limitation still lingering on a lot of servers, to allow it to scale to your hardware maximums. I maxed the bandwidth on a Server before I broke 1% CPU usage. These results come from the simplicity, but power of this protocol. From these templates, I developed two extra Protocols for Coinshield Core, the Core LLP and the Mining LLP.
The Core LLP is responsible for the Unified Time functions, to have the quickest responses from the Server to ensure the Time Seed isn't diluted by Network Propogation. I have personally run tests with no allowable clock drift with no forks, but to be sure this Testnet is running with an 8 second allowable clock drift.
The Mining LLP is what miners will connect to in order to generate blocks. This protocol allows any developer to 'plug and play' the LLP Client into their miner to remove the need for Network Programming associated with Mining. In my opinion, the focus of a miner developer should be in the optimization of their algorithms, not messing around with tedious Sockets.
The Lower Level Protocol also has built in DDOS protection that functions on a moving average to determine your Score. You as a Client will have a Request Score and a Connection Score. This is because certain operating systems have limitations on the maximum active sockets, and their corresponding timeouts so if you go over 200 Connection Requests per Second without modifying this data, your whole Network Interface will reboot. Not a fun experience. The moving average makes the DDOS protection based on Throttled Requests rather than Normal LLP Request. This helps to distinguish the difference between real traffic, and an active DDOS attack. The more a Client gets banned, the longer they will be banned for to also give slight tolerance to the average user if their client accidentally pushes the requests over the limit [could be public wifi with same IP, etc.]IX. Decentralized Checkpointing: I am really happy how this one came together, it became much simpler than my initial system. It works by passing a checkpoint that is flagged from being the block to set a new time interval through the blockchain onto another time interval. Once this new time interval is reached, that pending checkpoint becomes hardened and a new pending checkpoint is flagged. Currently this Testnet has a Checkpoint Timespan of 10 minutes which means, after you send a transaction, it will be behind a Checkpoint within 10 minutes. This helps to further prevent attackers from causing any harm, for they are only able even with 51% of all three Mining Channels to reorganize the chain for the past 10 minutes. The Checkpointing also uses the Stake Modifier Checksum generated from a CBlockIndex as a second fingerprint for the Checkpoint, so each checkpoint operates on a pair of Stake Modifier and Block Hash for extra security. Stake modifier checkpoints before were hard coded into kernel.cpp, and manually updated as with Peercoin.Alright, so that's the rundown of my work over the past 4 months of Developing Coinshield. If you may have noticed in my signature, there is a link. This will take you to my Github where there is the source code of the External Prime Miner [CPU]. During this time we can test the network, find bugs, and maybe if you are kind enough e-mail me your debug.log file so I can read through it an ensure there aren't any 'funny' things happening. This will continue to help make Coinshield stronger.
With The Testnet Launch I am releasing the LLP Client which includes the LLP types that are shared with the LLP Template Servers. This is in the External Prime Miner, ripe for the picking. Of course, it requires the LLP Server templates which I will be releasing at a later date integrated with an LLP Pool Server with Variable Difficulty, etc. I do have more pressing things to build currently though, so that is on the lower end of my list.
If you want to run a Daemon, you need a coinshield.conf file. No addnodes here [I really dislike seeing that in config files when there is a perfectly functional DNS seeding system Satoshi took the time to Develop.]
Minimum Config to run Daemon would be:
server=1
rpcuser=user
rpcpassword=password
If you love to watch realtime logging like myself, add printtoconsole=1. This will show you "under the hood" of the Coinshield Core if you are interested in seeing what is happening. I will be distributing another set of binaries that are launch prepared a few days before launch, so please keep your eyes on the thread. This client will not work on the Real Coinshield Network come launch time. I am doing this to help establish a frame of reference for who is going to be an active participant from day 1, and what tools they will need to be successful.
Remember, if you need a Launch Binary for Linux, and none work that are available, please contact me with your operating system specifications so I can ensure you can be an active participant from day 1.
Bitslapper currently has made great progress with the GPU Miner, I'm impressed with his perseverance and dedication to developing something new, and doing it well. Without him, we would not be making this launch date; this whole process ended taking way more time than anticipated, but I have no regrets. Coinshield incorporates a lot of new Technology that will hopefully not just make the Crypto world a better place, but make the Internet a better place; and show us all that we are the ones that change things. You are changing the Crypto Landscape if you even use Coinshield, if you tell your neighbor, if you spread the word. If you petition for Verification and Destruction on CoinShieldTalk.org, or even if you mine 50 CSD. Remember that, and remember that it spreads. Those of you that have been dedicated from the beginning I thank you, your support and ideas have brought me to develop what I did:
Made by the People, for the People.As Coinshield was conceived on the Solstice, it is born on the Equinox.
The revolution has begun.Viz.