So it turns out that scrypt is barely better than SHA-256 in terms of CPU/GPU performance ratio. Maybe tuning parameters can make it better, but it seems that the whole idea isn't working. From litecoin wiki:

Quote

GPUs still do prove useful for Litecoin mining, though the improvement over CPUs is less significant than it was for Bitcoin mining (e.g. 10x speedup instead of 20x speedup).

But looking at mining hardware comparison page, difference seems to be lower than 2x.

OK, so aren't there hashes which offer higher competitive advantage to CPUs?

I'm really not an expert in this matter, but from what I know GPUs really do not like conditional jumps: with those jumps there won't be enough work for all ALUs within one stream processor. So are there hash algos which do that?

First thing which comes in mind is to make operations which are performed dependent on input itself. It might be structured in a way similar to scrypt, but with an additional step where bits of expanded input define what operations to perform on that expanded intermediate result.

Each such operation should be non-parallelizeable so that only one ALU of a stream processor can work at a time.

As a bonus it might give a relative advantage to hashing implemented in languages like JavaScript: they are already suboptimal so hit from conditional jumps is much lower.

I think there really is a case for CPU mining since it gives ordinary people a chance to mine coins for themselves. This makes sense for in-game currencies: some people really do not want to spend real money to get game money. And I guess ideally it should work well with browser-based mining so that people won't have to install anything to get money.

People can mine coins or gold or metal or whatever for themselves in games anyway if the game wants them to, its not as if they need some special weirdness to do it really, heck using greasemonkey or on MUDs a MUD-client they can even do it in games that DON'T want them to do it. So it seems like a non-existent problem. Just leave your character digging or killing monsters or whatever.

It still doesn't matter. They can use greasemonkey or MUDclient type stuff to bake pies or weave shirts or dig up gold or whatever, and trade that in for litecoins at a trade centre / market / shop. If there is too much dug up / woven / etc then the number of coins customers will offer them per pie or shirt or nugget or whatever will be lower. There is no fundamental problem there.

In fact the game can decide ahead of time exactly how many grams of gold exist on the planet, how much in astroids, how much on other planets in the starsystem, and whether it will become possible to reach other starsystems. So again, no problem.

Making a hashing algo "GPU resistant" is the wrong way to go about it IMO.

The goal would be to use the available resources more consistently. That is: instructions per second, memory bandwidth, amount of available memory.

Difficulty would be a the magnitude of the corresponding vector of all of those. Something like automated theorem proving coupled with adaptive hashing algorithm. That would be an interesting Bachelor Thesis.. give me 3 years

First they ignore you, then they laugh at you, then they keep laughing, then they start choking on their laughter, and then they go and catch their breath. Then they start laughing even more.

You see the scrypt coins are more memory hard than the SHA coins but that's it. Their level of "memory hard"ness is static. Make a coin that has the potential to get more memory hard by offering higher block rewards to people that mine at this increasing level of "memory hard". Block rewards for lower levels of "memory hard" gradually diminish pushing miners to upgrade their hardware and and speculators to get excited about the possibility of new hardware that is faster at increasingly more memory hard math.

So make the block reward elastic but based on the level of "memory hard" not on the difficulty. This directs the network away from energy consumption and towards technological innovation.