Some info for the new members of Cachecoin:

Since we have not prepared the White papers of the Cache Project – I wish to introduce our developer Kalgecin who will make all changes to the current version of Cachecoin.

Kalgecin speaks English, Swahili and Russian.

He is professional in programming: Python, SQL, PHP, PERL, RUBY, C++, C, C-SHARP, VISUAL BASIC, OBJECTIVE-C, JAVA and JAVASCRIPT.

In 2014 he put aside the project because of his schooling: the priority was his studies and completing his Doctorate in Mathematics.

In the year 2015 – his work was continued by another developer which was unable to finish the work, so the project had temporary success before hiatus.

In May 2017 – a new team came to an agreement with Kalgecin to continue the development of Cachecoin. During the past few years kalgecin noticed a lot of weak points in BTC algo and most of alts as they are forked from btc or ltc. Most of current coins were copied and didn’t give any proper refactoring, clean code, or were not object oriented.

We decided to continue the work with Kelgecin as he is man of honor. He would never break his agreements. The project team is a group of friends and believe in:

If you want to do something right do it yourself!

We won't tell you to buy or not to buy CACH – it should be 100% your decision, each has its own head, we all know about Crypto Whales which could make the price quickly high and 1-2 days low, but you have to understand that all real and serious projects needs development in time. For them the current price is a bargain comparing with the price of year 2015 and 2016 when the project was out of development, but it also good time for new people who want to come into the project right now!

In June our developer will be Dr. Kalgecin and exceed your expectations.

Always with you Alex (moderator of Cachecoin)

NB! Here is brief information about our developer's diploma:

**«Random Number Generation»**

INTRODUCTION

A random number generator is a computational or physical device that is used to generate a sequence of numbers or symbols that cannot be reasonably predicted better than by a random chance. Various applications of randomness have led to the development of several different methods of generating random data, of which some existed since ancient times, including dice, coin flipping, shuffling of cards, etc. Because of the mechanical nature of these techniques, generating a large amount of sufficiently random numbers requires a lot of work and/or time. Thus, results would sometimes be collected and distributed as a random number tables. Nowadays, after the advent of computational random number generators, a growing number government run lotteries, and lottery games, are using RNGs (Random Number Generators) instead of more traditional drawing methods. Ideally, a random number generator produces results that cannot be duplicated by means other than pure luck. That is, the random number generator should always produce different results for a large sequence of numbers even if the input conditions and parameters are the same. Several computational methods exist for generating random numbers. Many fall short of the goal of true randomness, although they may meet, with varying success, some statistical test for randomness intended to measure how unpredictable their results are. However, carefully designed cryptographically secure computationally based methods of generating random numbers do exist, such as those based on Yarrow algorithm and the Fortuna and others.

Practical Application and uses

Random numbers have many applications in science, art, statistics, cryptography, gaming, gambling and other fields. For example, random assignment in randomized controlled trials can help scientists test hypothesis fairly without any favoring, and random numbers and pseudo random numbers are often used in games like poker to ensure a fair game. In politics, especially ancient Greece, administration was in the hands of the people, those people were randomly selected and changed regularly. In science, random numbers have uses in physics, such as electronic noise studies, engineering, and operations research. Many methods of statistical analysis, such as bootstrap method, require random numbers. Monte Carlo methods in physics and computer science require random numbers. Random numbers are often used in parapsychology as a test of precognition. Statistical practice is based on statistical theory, which is, itself, based on the concept of randomness. Many elements of statistical practice depend on randomness via random numbers. Where those random numbers fail to be actually random, any subsequent statistical analysis may suffer may suffer from systematic bias. Elements of statistical practice that depend on randomness include: choosing a representative sample, disguising the protocol of a study from a participant and Monte Carlo simulation. Many experiments in physics rely on a statistical analysis of their output. For example, an experiment might collect X-Rays from an astronomical source and then analyze the result for periodic signals. Since random noise can be expected to appear to have faint periodic signals embedded in it, statistical analysis is required to determine the likelihood that the detected signal actually represents a genuine signal. Such analysis methods require the generation of random numbers. If the statistical method is extremely sensitive to patterns in the data (such as those used to search for binary pulsars), very large amounts of data with no recognizable pattern are needed. In many scientific and engineering fields, computer simulations are of real phenomenon are commonly used. When real phenomena are affected by unpredictable process, such as radio noise or day-to-day weather, these processes can be simulated using random, or pseudo random numbers. Automatic random number generators were first constructed to make computer simulations of physical phenomena, notably the simulation of neutron transport in nuclear fission. Pseudo-random numbers are frequently used in simulation of statistical events, a very simple example is the tossing of a coin. More complicated examples include simulation of population genetics, or the behavior of sub-atomic particles. Such simulation methods, often called stochastic methods, have many applications in computer simulation of real-world processes.

A ubiquitous use of unpredictable random numbers is in cryptography which underlies most of the schemes which attempt to provide security in modern communications (e.g., confidentiality, authentication, electronic commerce, etc.). For example, if a user wants to use an encryption algorithm, it is best that they select a random number as the key. These numbers must have high entropy (i.e., unpredictability) to any attacker, thus increasing attack difficulty. With low entropy numbers used as keys (i.e., relatively easily guessable by attackers), security is likely to be compromised. To illustrate, imagine if a simple 32 bit linear congruential pseudo-random number generator of the type supplied with most programming languages is used as a source of keys. There will only be some four billion possible values produced before the generator repeats itself. A suitably motivated adversary could simply test them all; this is practical since the computing power of around 2010, using readily available computers in modern day, it is even faster. Even if a linear congruential RNG is used with 1000-bit parameters, it is a simple exercise in linear algebra to recover the modulus m, and the constants a and b, where x' = ax +b (mod m), given only five consecutive values. Even if a better random number generator is used, it might be insecure (i.e., its starting value, the seed might be guessable), producing predictable keys and reducing security to nil. (A vulnerability of this sort was famously discovered in an early release of Netscape Navigator, forcing the authors to quickly find a source of "more random" random numbers.) For these applications, truly random numbers are ideal, and very high quality pseudo-random numbers are necessary if truly random numbers, such as coming from a hardware random number generator, are unavailable. Truly random numbers are absolutely required to be assured of the theoretical security provided by the one-time pad — the only provably unbreakable encryption algorithm. Furthermore, those random sequences cannot be reused and must never become available to any attacker, which implies a continuously operable generator. Venona for example, is an example of what happens when these requirements are violated when using a one-time pad.

For cryptographic purposes, one normally assumes some upper limit on the work an adversary can do (usually this limit is astronomically sized). If one has a pseudo-random number generator whose output is "sufficiently difficult" to predict, one can generate true random numbers to use as the initial value (i.e., the seed), and then use the pseudo-random number generator to produce numbers for use in cryptographic applications. Such random number generators are called cryptographically secure pseudo-random number generators, and several have been implemented (for example, the /dev/urandom device available on most Unixes, the Yarrow and Fortuna designs, server, and AT&T Bell Laboratories "truerand")[1]. As with all cryptographic software, there are subtle issues beyond those discussed here, so care is certainly indicated in actual practice. In any case, it is sometimes impossible to avoid the need for true (i.e., hardware-based) random number generators.

Since a requirement in cryptography is high entropy, any published random sequence is a poor choice, as are such sequences as the digits in an irrational number such as the φ or even in transcendental numbers such as π, or, e. All are available to an enterprising attacker. Put another way, in cryptography, random bit streams need to be not only random, but also secret and hence unpredictable. Public or third-party sources of random values, or random values computed from publicly observable phenomena (weather, sports game results, stock prices), are almost never cryptographically acceptable. Their use may be tempting, but in reality, they permit easier attacks than attacking the cryptography.

Since most cryptographic applications require a few thousand bits at most, slow random number generators serve well—if they are actually random. This use of random generators is important; many informed observers believe every computer should have a way to generate true random numbers

Current Methods / Physical Methods

The earliest methods for generating random numbers, such as dice, coin tossing and roulette wheels, are still used today, mainly in games and gambling as they tend to be too slow for most applications in statistics and cryptography. A physical random number generator can be based on an essentially random atomic or subatomic physical phenomenon whose unpredictability can be traced to the laws of quantum mechanics. Sources of entropy include radioactive decay, thermal noise, shot noise, avalanche noise in Zener diodes, clock drift, the timing of actual movements of a hard disk read/write head, and radio noise. However, physical phenomena and tools used to measure them generally feature asymmetries and systematic biases that make their outcomes not uniformly random. A randomness extractor, such as a cryptographic hash function, can be used to approach a uniform distribution of bits from a non-uniformly random source, though at a lower bit rate. Various imaginative ways of collecting this entropic information have been devised. One technique is to run a hash function against a frame of a video stream from an unpredictable source. Lavarand used this technique with images of a number of lava lamps. HotBits measures radioactive decay with Geiger–Muller tubes[2], while Random.orguses variations in the amplitude of atmospheric noise recorded with a normal radio. Another common entropy source is the behavior of human users of the system. While people are not considered good randomness generators upon request, they generate random behavior quite well in the context of playing mixed strategy games. Some security-related computer software requires the user to make a lengthy series of mouse movements or keyboard inputs to create sufficient entropy needed to generate random keys or to initialize pseudorandom number generators.

Computational Methods

Pseudorandom number generators (PRNGs) are algorithms that can automatically create long runs of numbers with good random properties but eventually the sequence repeats (or the memory usage grows without a bound). The series of values generated by such algorithms is generally determined by a fixed number called a seed. One of the most common PRNG is the linear congruential generator, which uses the recurrence, (2.1)

to generate numbers, where a, b and m are large integers, and is the next in X as a series of pseudo-random numbers. The maximum number of numbers the formula can produce is the modulus, m. To avoid certain non-random properties of a single linear congruential generator, several such random number generators with slightly different values of the multiplier coefficient a can be used in parallel, with a "master" random number generator that selects from among the several different generators.

A simple pen-and-paper method for generating random numbers is the so-called middle square method suggested by John von Neumann. While simple to implement, its output is of poor quality. Most computer programming languages include functions or library routines that provide random number generators. They are often designed to provide a random byte or word, or a floating point number uniformly distributed between 0 and 1. The quality i.e. randomness of such library functions varies widely from completely predictable output, to cryptographically secure. The default random number generator in many languages, including Python, Ruby, R, IDL and PHP is based on the Mersenne Twister algorithm and is not sufficient for cryptography purposes, as is explicitly stated in the language documentation. Such library functions often have poor statistical properties and some will repeat patterns after only tens of thousands of trials. They are often initialized using a computer's real time clock as the seed, since such a clock generally measures in milliseconds, far beyond the person's precision. These functions may provide enough randomness for certain tasks (for example video games) but are unsuitable where high-quality randomness is required, such as in cryptography applications, statistics or numerical analysis. Much higher quality random number sources are available on most operating systems; for example /dev/random on various BSD flavors, Linux, Mac OS X, IRIX, and Solaris, or CryptGenRandom for Microsoft Windows. Most programming languages, including those mentioned above, provide a means to access these higher quality sources.

From a probability distribution

There are a couple of methods to generate a random number based on a probability density function. These methods involve transforming a uniform random number in some way. Because of this, these methods work equally well in generating both pseudo-random and true random numbers. One method, called the inversion method, involves integrating up to an area greater than or equal to the random number (which should be generated between 0 and 1 for proper distributions). A second method, called the acceptance, involves choosing an x and y value and testing whether the function of x is greater than the y value. If it is, the x value is accepted. Otherwise, the x value is rejected and the algorithm tries again. [3]

By humans

Random number generation may also be performed by humans, in the form of collecting various inputs from end users and using them as a randomization source. However, most studies find that human subjects have some degree of non-randomness when attempting to produce a random sequence of e.g. digits or letters. They may alternate too much between choices when compared to a good random generator, [4] thus, this approach is not widely used.

Results

Using a proof of concept implementation, we implemented a simple implementation of the idea using the JAVA programming language. The results proved to be what was expected, different result when using same variables.

Conclusion

From the results we got, we can conclude that it is possible to generate random numbers without using any specialized hardware. The method shown here would only work as long as the race condition is possible. For example, on a single core device, with an operating system that does not support multithreading, or an operating system that executes one thread fully at a time, this method would fail. But those kinds of setups are very uncommon, any average computer nowadays has multicore CPU and has an operating system that schedules the threads amongst those cores, which would allow the method to work.