Qortal Project

The future of blockchain platforms

User Tools

Site Tools


future_modifications

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
future_modifications [12/02/2021 17:55] gfactorfuture_modifications [12/05/2021 08:29] (current) – [Additional Info] gfactor
Line 7: Line 7:
  
 Qortal's sponsorship and minting system is our attempt to solve the issue we see in the blockchain space with PoW and PoS where money buys power over the network. We are not claiming that our system is perfect, but the beauty is that we can modify the system as needed. Currently any account that is level 5 or higher (including founder accounts) is able to sponsor up to 5 accounts at one time. There is no limitation to the total number of accounts each level 5+ can sponsor. It takes a sponsee 7200 blocks to reach level 1 at which time they can create their own minting key. The problem we have run into with the sponsorship system, is that some level 5+ accounts are here for personal gain, and not the common good of the project. We have seen a few bad apples create multiple accounts for their own gain that they self sponsor, and either keep for minting themselves, or are selling to the public (primarily in the Chinese community on WeChat app). The next issue is with the minting system itself. Currently we are able to assign multiple accounts to each node. Although we would like to see one account per node, there is nothing securing this ideology in code at the moment. So essentially these self sponsored accounts are able to make more accounts, mint off the same device, and 'game' the current system. Qortal's sponsorship and minting system is our attempt to solve the issue we see in the blockchain space with PoW and PoS where money buys power over the network. We are not claiming that our system is perfect, but the beauty is that we can modify the system as needed. Currently any account that is level 5 or higher (including founder accounts) is able to sponsor up to 5 accounts at one time. There is no limitation to the total number of accounts each level 5+ can sponsor. It takes a sponsee 7200 blocks to reach level 1 at which time they can create their own minting key. The problem we have run into with the sponsorship system, is that some level 5+ accounts are here for personal gain, and not the common good of the project. We have seen a few bad apples create multiple accounts for their own gain that they self sponsor, and either keep for minting themselves, or are selling to the public (primarily in the Chinese community on WeChat app). The next issue is with the minting system itself. Currently we are able to assign multiple accounts to each node. Although we would like to see one account per node, there is nothing securing this ideology in code at the moment. So essentially these self sponsored accounts are able to make more accounts, mint off the same device, and 'game' the current system.
 +
 +Don't forget we are dealing with open source software. It’s not as simple as you might think. We can modify the logic but anyone can just change it back by building a custom JAR. For it to be foolproof, the limit has to be **validated** by every single node on the network. In other words, every one of the nodes on the network has to be able to determine if any other nodes have multiple minting keys attached to them, so that they can collectively disallow those minting keys. In practice, this is very difficult, if not impossible.
 +
 +Proof of work is a viable solution, because each minting account has to include proof that it has used a certain amount of hardware resources to be eligible to be included in a block's reward. The idea here is that it's not possible for multiple minting accounts to coexist as there won't be enough "hardware time" for them all to generate the required proof. Every node on the network can validate this proof very easily, in the same way Bitcoin nodes form a consensus on the next block signer. FYI: we would not be using a PoW that leads to expensive hardware nor changing the block rewards system as we know it. Nor would it affect transactions per second and shouldn't really affect scalability. Nodes can verify these proofs almost instantly.
  
 ===== Solution ===== ===== Solution =====
Line 16: Line 20:
 This it the current (and only real tangible) solution: to use proof of work to limit the number of accounts per node hardware (not IP). In the future we may be able to find a way to limit by IP but that's not included in the proposed solution we have right now. This means that sponsorship acts as the first barrier to stop multiple accounts, and the node hardware itself acts as the second barrier, preventing people running lots of minting accounts on a single machine like they do right now. Qortal's proof of work algorithm is limited by the throughput on device's RAM, so buying faster or even specialized hardware doesn't generally increase the number of accounts that can exist concurrently on that hardware. Limiting by hardware like this is good for the network as it means that people gaming the system will be forced to run an equivalent number of nodes, which strengthens the network. Right now there is no limit, but there could be very soon if we choose to go with this approach. The main reason we might not want to implement this is that the proof of work calculations will slow down the node and computer it is running on. We need to decide if the impact is too large. This it the current (and only real tangible) solution: to use proof of work to limit the number of accounts per node hardware (not IP). In the future we may be able to find a way to limit by IP but that's not included in the proposed solution we have right now. This means that sponsorship acts as the first barrier to stop multiple accounts, and the node hardware itself acts as the second barrier, preventing people running lots of minting accounts on a single machine like they do right now. Qortal's proof of work algorithm is limited by the throughput on device's RAM, so buying faster or even specialized hardware doesn't generally increase the number of accounts that can exist concurrently on that hardware. Limiting by hardware like this is good for the network as it means that people gaming the system will be forced to run an equivalent number of nodes, which strengthens the network. Right now there is no limit, but there could be very soon if we choose to go with this approach. The main reason we might not want to implement this is that the proof of work calculations will slow down the node and computer it is running on. We need to decide if the impact is too large.
  
-You can run this custom JAR I made to simulate the additional system load that would exist if we were to switch to such an approach: http://qortal.uk:8080/builds/qortal-2.1.0-PoW.0.jar+This algo is GPU and ASIC resistant. It shouldn’t really be possible to game it because it’s limited by the speed of writing to/from RAM. So it’s the throughput rather than the amount of RAM. 
 + 
 +You can run this custom JAR I made to simulate the additional system load that would exist if we were to switch to such an approach:  
 + 
 +http://qortal.uk:8080/builds/qortal-2.1.0-PoW.0.jar 
 + 
 +Here's an https version: https://cloud.qortal.org/s/G8GL3WYNiW2dBS2/download/qortal-2.1.0-PoW.0.jar
  
 We are looking to get some  We are looking to get some 
Line 25: Line 35:
 This measures how long it took to compute a nonce at difficulty level 15. If those numbers are consistently higher than one or two minutes, it could be a problem (because it could mean that the node's online accounts would miss out on being included in some blocks, due to taking a long time to compute the proof of work). We’ll need to arrive at the correct difficulty and time limits to use.  This measures how long it took to compute a nonce at difficulty level 15. If those numbers are consistently higher than one or two minutes, it could be a problem (because it could mean that the node's online accounts would miss out on being included in some blocks, due to taking a long time to compute the proof of work). We’ll need to arrive at the correct difficulty and time limits to use. 
  
-Useful info like ‘computed nonce 112021 time taken 433918’ is helpful. Cal can work out the hash rate from that alone. But if you could send over some more readings (or the whole log file if easier) that would be good too. Please also include the spec of your machine. Then he can start collating data. +Useful info like ‘computed nonce 112021 time taken 433918’ is helpful. Cal can work out the hash rate from that alone. But if you could send over some more readings (or the whole log file if easier) that would be good too. Please also include the specs of your machine. Then he can start collating data.  
 + 
 +We have a Telegram channel https://t.me/qortallogs and Discord channel #mempow-testing 
 + 
 +===== Additional Info ===== 
 + 
 +The JAR makes no difference right now to any consensus or rewards if you run it. All the JAR is doing is some additional proof of work in the background (essentially wasted computations) in order to a) simulate the system load of this approach, and b) log info about the speed at which it is calculating. 
 + 
 +If we were to switch to this approach in the future, these computations would become compulsory in order to mint. They would prevent gamers from being able to run too many minting keys on a single node. But it comes with the trade-off of a lot of extra system load, which you can simulate using the PoW JAR. 
 + 
 +Once it's been running for at least a few hours, would be great if you could share your log file (or at least the lines that start with "Computed nonce").  
 + 
 +Log file is in ``%localappdata%/Qortal/log.txt.*`` 
  
-We have a Telegram channel @qortallogs and Discord channel #mempow-testing+You can type `%localappdata%/Qortal` into the top bar in the file explorer, push enter, and it should take you to the folder that contains the logs.
  
 +How many CPU cores would this PoW require? In theory it shouldn't need more than 1, because the RAM throughput caps the amount of CPU that can be used. But we'll know more soon. It's really too early in the process for me to be able to know the answer for minimum RAM. The only way to know for sure is to run the PoW test JAR on a machine with those specs, and then post your log file in Telegram channel https://t.me/qortallogs or Discord channel #mempow-testing
  
 +FYI: This JAR runs proof of work in the background regardless of how many minting accounts there are on the node. So it will run the same with zero accounts as it would with 10 accounts, as it's just a simulation of what happens when proof of work is being done 24/7.
future_modifications.1638485736.txt.gz · Last modified: 12/02/2021 17:55 by gfactor