Bitcoin Forum
May 21, 2019, 02:02:47 AM *
News: Latest Bitcoin Core release: 0.18.0 [Torrent] (New!)
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: PoW for delay tolerant networks on consumer devices  (Read 95 times)
jeansymolanza
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
June 01, 2018, 09:22:23 AM
 #1

1) Can the PoW algorithm be rewritten to be more egalitarian and "device-aware"? The system currently has it's weaknesses. One is rapid consolidation... as most mining power today is provided by “pools”, big groups of miners who combine their computing power to increase the chance of winning a reward. I was thinking that perhaps, maybe based on the device that the mining client is run on, the mining difficulty should be adjusted dynamically. This would effectively "decentralise" mining as every node could validate transactions.

2) Is PoW suitable for delay tolerant networks? For example, in a theoretical situation where node connectivity is limited, can a miner node collect pending transaction data, go offline, solve the associated mathematical puzzles, and then only go online to broadcast the solution to the network in order to preserve data usage. I presume that the issue here would be that an individual with “always on internet” might stand a better chance than someone with an intermittent connection of earning newly minted coins. But latching onto 1), I am thinking of a situation where a user has 3G/4G connectivity on a mobile for limited periods of time in a developing country.
New Generation Antminer S17 Mining Plan Available Now! Highly Reduced Electricity Fee $0.067/T/DAY! Register To Experience
Free Mining Plan!
GET STARTED!
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
ranochigo
Legendary
*
Offline Offline

Activity: 1666
Merit: 1132

Somewhat inactive.


View Profile WWW
June 01, 2018, 10:38:47 AM
 #2

1) Can the PoW algorithm be rewritten to be more egalitarian and "device-aware"? The system currently has it's weakne sses. One is rapid consolidation... as most mining power today is provided by “pools”, big groups of miners who combine their computing power to increase the chance of winning a reward. I was thinking that perhaps, maybe based on the device that the mining client is run on, the mining difficulty should be adjusted dynamically. This would effectively "decentralise" mining as every node could validate transactions.
Not possible. With decentralised systems, there is no way for the nodes to assign specific difficulty to each miner. Nodes do not see miners mining, they merely sees the blocks being relayed to them. Hence, all the nodes would have to have the same target (difficulty) to accept the same blocks. Would be pretty absurd for nodes to connect to every single miner in the world.

The current problem now lies with people who hold too much power. If everyone can mine at the same speed but someone has enough resources, then mining would still be centralised. Each nodes are in fact, already validating transactions, mining or not.
2) Is PoW suitable for delay tolerant networks? For example, in a theoretical situation where node connectivity is limited, can a miner node collect pending transaction data, go offline, solve the associated mathematical puzzles, and then only go online to broadcast the solution to the network in order to preserve data usage. I presume that the issue here would be that an individual with “always on internet” might stand a better chance than someone with an intermittent connection of earning newly minted coins. But latching onto 1), I am thinking of a situation where a user has 3G/4G connectivity on a mobile for limited periods of time in a developing country.
You can. However, there must not be a block that has been mined between the time you go offline and the time that you've solved a block and broadcasted it. Offline or online, the chances of you mining a block is the same. However, your block would be on a fork (effectively orphaned) if a block has been discovered and mined before you. You don't need a huge bandwidth to mine and most miners don't use data networks since they are incredibly expensive.

jeansymolanza
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
June 01, 2018, 10:58:28 AM
 #3

Quote
The current problem now lies with people who hold too much power. If everyone can mine at the same speed but someone has enough resources, then mining would still be centralised. Each nodes are in fact, already validating transactions, mining or not.

Thanks. So is there a way to make mining more decentralised/egalitarian, so that people in developing countries can have a chance? I ask because a lot of cryptocurrency projects champion the fact that they're attempting to get the unbanked online, but their protocols shy away from making the process of mining cryptocurrency a lot more fair for individuals in situations where electricity/internet connectivity is scarce.

Quote
You can. However, there must not be a block that has been mined between the time you go offline and the time that you've solved a block and broadcasted it. Offline or online, the chances of you mining a block is the same. However, your block would be on a fork (effectively orphaned) if a block has been discovered and mined before you. You don't need a huge bandwidth to mine and most miners don't use data networks since they are incredibly expensive.

Great thanks. That's good to hear. So effectively, if another node where to mine a block before you broadcast your own (ie come back online), then your own would be orphaned? Why does the protocol not just ignore it?
jeansymolanza
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
June 01, 2018, 11:09:23 AM
 #4

Another thought - Over time, as the mining difficulty increases, it be possible for a protocol to randomly select a group of nodes that are currently online... and pool together their resources to mine a block?
bob123
Hero Member
*****
Offline Offline

Activity: 896
Merit: 1014



View Profile WWW
June 01, 2018, 12:17:17 PM
 #5

So effectively, if another node where to mine a block before you broadcast your own (ie come back online), then your own would be orphaned?

Not necessarly.

This depends on the next block.
If this block is going to be built ontop of your block, the block from the 'other' node will get orphaned.
If the next block is going to be built ontop of the 'others' node block, yours will be orphaned.



Why does the protocol not just ignore it?

What should the protocol ignore?

The protocol is designed to follow the 'biggest' Proof-of-Work created.
This is necessary.

ranochigo
Legendary
*
Offline Offline

Activity: 1666
Merit: 1132

Somewhat inactive.


View Profile WWW
June 01, 2018, 12:24:13 PM
 #6

Thanks. So is there a way to make mining more decentralised/egalitarian, so that people in developing countries can have a chance?
Can't think of much. If you're in a developing country, you might have an edge if you hold sufficient resources (mining is significantly cheaper in those place). PoW (ASIC resistant algorithm) is possibly the only way that people can mine without huge amount of resources, PoW needs loads more resources.
Great thanks. That's good to hear. So effectively, if another node where to mine a block before you broadcast your own (ie come back online), then your own would be orphaned? Why does the protocol not just ignore it?
I think I can re-explain it.

The network doesn't know who is mining and who isn't. If someone is mining, they consolidate the transactions into a merkle root and tries to hash the block header such that it fits the target. Effectively, the only information you need is the hash of the last block and the transactions not yet in the blockchain (ie. unconfirmed). When someone mines a block and the whole network accepts it as valid, the miners on the network will start to mine on the new block, ignoring other blocks at the same height. Hence, if you broadcast the block a minute or two late, every node on the network will simply ignore your block because there is another block that extends the blockchain, such that its proof of work would be the same as your block.

Nodes do, in fact ignore any chain that has a lesser proof of work than the one that they have. If it's the same, they consider the blocks which is relayed to them first.

Obviously, if you can mine faster than all the others, you wouldn't need internet (other than at the start) and your chain would still be accepted. But I'm not talking about it due to obvious reasons.

monsterer2
Full Member
***
Offline Offline

Activity: 348
Merit: 115


View Profile
June 01, 2018, 03:42:48 PM
 #7

1) Can the PoW algorithm be rewritten to be more egalitarian and "device-aware"? The system currently has it's weaknesses. One is rapid consolidation... as most mining power today is provided by “pools”, big groups of miners who combine their computing power to increase the chance of winning a reward. I was thinking that perhaps, maybe based on the device that the mining client is run on, the mining difficulty should be adjusted dynamically. This would effectively "decentralise" mining as every node could validate transactions.

2) Is PoW suitable for delay tolerant networks? For example, in a theoretical situation where node connectivity is limited, can a miner node collect pending transaction data, go offline, solve the associated mathematical puzzles, and then only go online to broadcast the solution to the network in order to preserve data usage. I presume that the issue here would be that an individual with “always on internet” might stand a better chance than someone with an intermittent connection of earning newly minted coins. But latching onto 1), I am thinking of a situation where a user has 3G/4G connectivity on a mobile for limited periods of time in a developing country.

None of these questions make any sense once you realise that PoW is a for-profit enterprise. There is a competition to mine, so in order to win you have to be the fastest and best at solving PoW which is only possible outside the realm of low power, delay heavy networks.

HeRetiK
Legendary
*
Offline Offline

Activity: 1106
Merit: 1049


the forkings will continue until morale improves


View Profile
June 02, 2018, 06:58:14 AM
Merited by suchmoon (5)
 #8

Another thought - Over time, as the mining difficulty increases, it be possible for a protocol to randomly select a group of nodes that are currently online... and pool together their resources to mine a block?

You mean randomly assigned block rewards to full nodes that don't mine or mine very little? Possibly based on the IP address of said node?

Opens up the possibility of sybill attacks (ie. manipulating the "vote" for each valid block by pretending you are multiple nodes) and wouldn't give users from developing countries a better shot at it.

Merely running a node is comparably cheap. If a block reward were tied to the number of nodes you have online (ie. the more nodes you hold, the higher your chance to get randomly chosen), you'd simply have people spinning up thousands of virtual machines. Or worse, you'd have ISPs and state actors take over, as those have access to the largest pools of IP addresses.

ir.hn
Member
**
Offline Offline

Activity: 168
Merit: 21

Blockchain is a Digital Constitution


View Profile
June 03, 2018, 07:05:06 PM
 #9

Great ideas.

Some input:

1. Yes there is a way to make mining more fair.  It is called ASIC and GPU resistant algorithms.  A good example is yescryptR16 which I currently can mine pretty profitably on my cell phone that uses a crummy snapdragon 210 processor using AAMiner app on android.

2.  There is a project I read about that is working on sending bitcoin payments using a mesh network.  Local people can be on the mesh really cheap and only 1 cellular connection is needed for the whole network.  Presumably you can do the same thing with mining, albiet with some sort of disadvantage in terms of a higher risk blocks you mine will be orphaned.  Typically large miners will get a high speed fiber connection to their ISP so they can broadcast their block solutions to the entire network as fast as possible to prevent their mined blocks from being orphaned.

3. Great idea to decentralize pools!  I'm sure this can be done it will just require some very smart software engineers and programmers.  Ideally in the current status quo you can design the coin so that pools will be at a disadvantage or at least not gain an advantage. Pool resistant coins do exist, not sure how successful they are though.  Another thing is if the blocktime is reduced while block propogation time is also kept low, then more blocks will be mined and it is more reasonable for you to mine solo as you will get a block at least every week or so.

4.  I'm sure you can try to scale difficulty based on the processor speed or memory bandwith or something like that, but like anything it will have a high risk of being hacked.  Or people would just use lots of slow computers to game the system.  Making the PoW as "clean" as possible ultimately makes it better instead of muddying things with arbitrary speed bumps that inevitably people will find ways around.  One really clean asic, gpu, and botnet resistant pow I invented uses factorization of large numbers which is a very CPU slanted PoW for the forseeable future.

ir.hn
Member
**
Offline Offline

Activity: 168
Merit: 21

Blockchain is a Digital Constitution


View Profile
June 03, 2018, 07:20:19 PM
 #10

Obviously, if you can mine faster than all the others, you wouldn't need internet (other than at the start) and your chain would still be accepted. But I'm not talking about it due to obvious reasons.

The very definition of a 51% attack...

If I'm understanding him right, a user here named Still_Looking proposed that every coin have it's own blockchain.  This sort of proof of work may be better for small miners and offline mining where you constantly maintain a 51% attack on your own coin(s) that you are laying claim to.  I think it is an extremely interesting proposition... perhaps fungibility would suffer but as long as the genesis hash of the coin was valid by the initial rules I think it should be 100% fungible.

ranochigo
Legendary
*
Offline Offline

Activity: 1666
Merit: 1132

Somewhat inactive.


View Profile WWW
June 04, 2018, 04:20:22 PM
 #11

1. Yes there is a way to make mining more fair.  It is called ASIC and GPU resistant algorithms.  A good example is yescryptR16 which I currently can mine pretty profitably on my cell phone that uses a crummy snapdragon 210 processor using AAMiner app on android.
Most GPU/ASIC resistant algorithms aren't that resistant actually. Anyways, mining using CPUs on a device that is not designed to handle high loads seems to be pretty bad.
3. Great idea to decentralize pools!  I'm sure this can be done it will just require some very smart software engineers and programmers.  Ideally in the current status quo you can design the coin so that pools will be at a disadvantage or at least not gain an advantage. Pool resistant coins do exist, not sure how successful they are though.  Another thing is if the blocktime is reduced while block propogation time is also kept low, then more blocks will be mined and it is more reasonable for you to mine solo as you will get a block at least every week or so.
Could you link me to some of the pool resistant coins? I haven't found any on the internet.

If the block time is lowered, I would say that the price would be much lower too. The profits would likely remain somewhat the same but there's a feel good factor about mining a block. Any rational person would judge on their profitability solely on the numbers though.

One really clean asic, gpu, and botnet resistant pow I invented uses factorization of large numbers which is a very CPU slanted PoW for the forseeable future.
I doubt any coin could ever be truly botnet resistant. GPU and ASICs? Maybe but having botnet resistance is a stretch.

Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!