Bitcoin Forum
July 30, 2024, 06:30:29 PM *
News: Help 1Dq create 15th anniversary forum artwork.
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Coin That Depends on RAM Availability for Mining  (Read 1009 times)
themattenthehat (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
August 14, 2015, 06:32:32 PM
 #1

Hello all, been out of the crypto game for a couple years, but starting to get back into it, and had an interesting idea today:

What if there was a cryptocurrency in which mining speed was dependent on the availability of RAM (or other fast memory) rather than computational speed?

Here's why I think such a coin would be good:
  • Specialized hardware resistence - Such a coin would not be (very) succeptible to domination by dedicated mining hardware, which would help keep lots of individuals mining, and thereby help prevent centralization. Desktop RAM is pretty much the cheapest memory (per GB with similar latency, read/write speeds) available, so it would remain more or less the dominant mining platform. Graphics cards would obviously not be practical because they are extremely expensive for the amount of memory they provide. ASICs could provide small gains over ordinary computer setups by reducing the cost of supporting hardware for the RAM (motherboard, CPU, PSU, etc.), but it would not be as major as with SHA-256/Scrypt. The point here is that the main contributor to the startup cost of mining this coin would be the RAM itself, which is unlikely to be made significantly cheaper (plenty of companies are already working very hard to build memory as cheaply as possible, so the extra push of a cryptocurrency would probably not change the market significantly).
  • Low power usage - A coin like this would use relatively little power to mine in comparison to coins that rely on computational speed. RAM uses very little power, even when being hammered to its maximum potential, compared to a fully utilized CPU, GPU, or even ASIC. This low power usage would lead to low upkeep costs on a mining rig, which would encourage miners to stick around even as difficulty increases and rewards drop. As we all know, you'd be losing money trying to CPU/GPU mine BTC/LTC now, but if it used much, much less power that may not be true (although profits may be small). Once again, encouraging individuals to keep mining helps prevent centralization or control by one entity/conglomerate. Furthermore, I feel that Bitcoin and later Litecoin will begin to run into problems when mining rewards become very small because of the high power usage (and therefore cost) of mining driving most miners away (and thereby reducing the security of the network against 51% attacks). Reduced power usage of mining would help alleviate this problem, as well as reducing the ecological impact of the coin.

Here are some important properties that I feel an implementation of this idea would need to have:
  • Linear scaling of mining performance with RAM - It would be important that mining performance scale linearly (rather than exponentially or logarithmically) with the amount of available RAM (and possibly speed of said RAM). That is, a person with 4GB of RAM dedicated to mining should get roughly double the performance of a person with 2GB. Exponential scaling (where doubling the available amount of RAM more than doubles performance) would give a huge advantage to people that could afford very large machines, and would drive the average user away. Logarithmic scaling (where doubling the available amount of RAM less than doubles performance) would discourage upgrading, which wold stagnate the total network performance, and reduce (or not increase) the security of the network over time. While linear scaling is taken for granted with other coins (mining bitcoins with two ASICs is about twice as good as mining with just one), it may not be so simple with a coin dependant on RAM, depending on the implementation
  • Very low computational requirements - In order for a coin like this to gain the benefits I mentioned above, it would need to be completely dependent on memory, rather than computational speed. Therefore, even very large memory setups should not be bottlenecked by a low-end CPU.
  • All the usuals - Of course, like any cryptocurrency (or any currency at all for that matter), speed, convenience, and security are all important considerations.

The dilema:
  • I personally have no idea how this type of coin could be implemented. I can't conceive of any type of algorithm that would fit these requirements well. Then again, I'm (very, very) far from a cryptography expert. Maybe there's something obvious that I'm missing. If anybody has any idea how this could be implemented, please chime in!

So what does everyone think? Is this a good idea? A terrible one? Are there problems I didn't think of or benefits/requirements that I missed?
tromp
Legendary
*
Offline Offline

Activity: 989
Merit: 1108


View Profile
August 14, 2015, 07:52:06 PM
 #2

What if there was a cryptocurrency in which mining speed was dependent on the availability of RAM (or other fast memory) rather than computational speed?

You mean like a memory bound proof-of-work?!
https://en.wikipedia.org/wiki/Proof-of-work_system#Variants

Quote
Linear scaling of mining performance with RAM - It would be important that mining performance scale linearly (rather than exponentially or logarithmically) with the amount of available RAM (and possibly speed of said RAM).

I don't think that's realistic. You'll probably need to scale computing power along with the memory. Something like

"1 memory bank + 1 virtual core = 1 vote"

If one virtual core is waiting on a random access to a memory bank (incurring row switching latency), then other memory banks can still be serving requests from other cores.

I would argue for the following desirable properties of a memory bound PoW:

a target memory footprint that exceeds a single memory chip
a pattern of necessarily random memory accesses
minimal computation per random memory access
no feasible trade-off of memory for time

And of course instant memory less verification...
themattenthehat (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
August 14, 2015, 08:42:12 PM
 #3


You mean like a memory bound proof-of-work?!
https://en.wikipedia.org/wiki/Proof-of-work_system#Variants

Sort of except (at least by my understanding, feel free to correct me if I'm wrong) a 'typical' memory bound proof-of-work would be bandwidth/latency limited, with little consideration for volume of memory. I would prefer the AMOUNT of memory to be the limiting metric rather than (primarily) that memory's speed. I feel that this would allow the network to grow more smoothly as it is entirely possible to acquire additional memory but not really feasible to speed memory up beyond a certain maximum. I feel that steady growth of the network is necessary to maintain security.

Quote
Linear scaling of mining performance with RAM - It would be important that mining performance scale linearly (rather than exponentially or logarithmically) with the amount of available RAM (and possibly speed of said RAM).

I don't think that's realistic. You'll probably need to scale computing power along with the memory. Something like

"1 memory bank + 1 virtual core = 1 vote"

If one virtual core is waiting on a random access to a memory bank (incurring row switching latency), then other memory banks can still be serving requests from other cores.
I agree that it would probably not be possible to have zero computational overhead, but I think it would be best if that overhead was as minimal as possible. Ideally, an ordinary desktop CPU could fully utilize a very large memory bank for mining purposes. This may not be possible, but I think it would be best if it could be achieved (primarily for reduced power usage).

I would argue for the following desirable properties of a memory bound PoW:

a target memory footprint that exceeds a single memory chip
Ideally, I think that mining performance should scale with the amount of memory available. I think you are imagining a scenario where a mining algorithm uses a large but finite amount of memory, and access to sufficient memory would allow mining. I am imagining instead an algorithm that uses all available memory, and performance scales with the size of that memory space. This might be achievable by running as many instances of a mining algorithm as will fit in available memory, where each instance uses minimal CPU time but a large (but finite) amount of memory, and hashes at a fixed rate (not sure how that fixed rate could be set).

a pattern of necessarily random memory accesses
minimal computation per random memory access
Agreed and agreed, as much memory as possible should be accessed in each computation, and memory access should be random to ensure that the miner keeps an entire data set in memory (rather than loading items in and out as necessary). There needs to be some advantage, however, to having a very large data set in memory compared to a small one.

no feasible trade-off of memory for time
I think what you mean is that you shouldn't be able to simulate a very large amount of memory by paging data in and out of physical memory. If so, I entirely agree.

And of course instant memory less verification...
Not quite sure what you mean by this, could you explain in a bit more detail?
tromp
Legendary
*
Offline Offline

Activity: 989
Merit: 1108


View Profile
August 14, 2015, 08:57:35 PM
 #4

I am imagining instead an algorithm that uses all available memory, and performance scales with the size of that memory space. This might be achievable by running as many instances of a mining algorithm as will fit in available memory

I think that's the only feasible way to utilize large amounts of memory.

If a single core can solve the PoW using, let's say, 1GB, then how could that
single core do it 10x faster using 10GB? It would have to do 1/10th of the original
memory accesses to 10x as big a memory space. That makes no sense at all.

Quote
I think what you mean is that you shouldn't be able to simulate a very large amount of memory by paging data in and out of physical memory. If so, I entirely agree.

Paging is horribly slow, especially when doing random memory accesses,
so we can completely ignore that.

Quote
And of course instant memory less verification...
Not quite sure what you mean by this, could you explain in a bit more detail?

Only mining, the search for proofs, should be memory bound.

Verification of proofs, that needs to be done on phones and other limited devices,
should use minimal resources.
themattenthehat (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
August 14, 2015, 09:16:55 PM
 #5

I am imagining instead an algorithm that uses all available memory, and performance scales with the size of that memory space. This might be achievable by running as many instances of a mining algorithm as will fit in available memory

I think that's the only feasible way to utilize large amounts of memory.

If a single core can solve the PoW using, let's say, 1GB, then how could that
single core do it 10x faster using 10GB? It would have to do 1/10th of the original
memory accesses to 10x as big a memory space. That makes no sense at all.
I agree, I can't see any other way of doing it.

Quote
I think what you mean is that you shouldn't be able to simulate a very large amount of memory by paging data in and out of physical memory. If so, I entirely agree.

Paging is horribly slow, especially when doing random memory accesses,
so we can completely ignore that.
Agreed, as long as memory access truly random across the entire range. If, for example, the algorithm did a bunch of random accesses within a 1GB block, followed by a bunch of random accesses from a different 1GB block, these blocks could (maybe) be paged in and out fast enough from some kind of very fast ssd RAID array (or future, faster memory like the new 3D Xpoint or something).

Quote
And of course instant memory less verification...
Not quite sure what you mean by this, could you explain in a bit more detail?

Only mining, the search for proofs, should be memory bound.

Verification of proofs, that needs to be done on phones and other limited devices,
should use minimal resources.
Ah yes absolutely.
themattenthehat (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
August 14, 2015, 09:45:50 PM
 #6

Seems like it would be one really cool coin, we would have a coin for pretty much each piece of the pc: CPU (done), Hard drive (done), Graphic card (done), and now Ram.

I'm not aware of the hard drive dependent coin (like i mentioned in OP I've been away from crypto for a while). Could you possibly link it, or just provide the name if its easy to find? If i see a lot of interest in this I may look into actually implementing it (particularly if I could find someone with some experience to help), and it seems like this could possibly provide some inspiration. Thanks!
themattenthehat (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
August 14, 2015, 10:37:43 PM
 #7

Seems like it would be one really cool coin, we would have a coin for pretty much each piece of the pc: CPU (done), Hard drive (done), Graphic card (done), and now Ram.

I'm not aware of the hard drive dependent coin (like i mentioned in OP I've been away from crypto for a while). Could you possibly link it, or just provide the name if its easy to find? If i see a lot of interest in this I may look into actually implementing it (particularly if I could find someone with some experience to help), and it seems like this could possibly provide some inspiration. Thanks!
I am pretty sure there are a couple if you want to look into it search the term "burst mining" this should give you a heads up on all you want to know.
Very interesting, thanks! From a quick look it seems like this could plausibly be translated to RAM usage instead of drive usage if it had the requirement of higher speed (speeds unobtainable with hard drives).
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!