Proof-of-Research

After some security problems with the original Gridcoin Client, which directly measured BOINC CPU utility, Rob Halford started designing a solution for this problem, which was then implemented step by step. He first mentioned a transition to a protocol similar to Primecoin in early February 2014. Anonerd started to refer to this protocol as “Proof-of-Research” in a post on cryptocointalk. After a series of Testnet trials between March and October 2014 and updating the source code to prepare it for its conversion, Proof-of-Research was finally released on October 11th, 2014.


Contents

Proof-of-Stake

Proof-of-Research (PoR) is an algorithm, which combines a scheme to reward Miners for their work with an extremely secure block finding mechanism. This mechanism uses Peercoin’s Proof of Stake in Novacoin’s and Blackcoin’s improvement of it. In Proof-of-Stake, currency is not mined, but minted as yearly compound interest. For this the Researcher needs a Wallet with Gridcoins already inside it. As a mint mechanism Proof-of-Stake uses the stake of the holder itself. The more stake he acquires the higher is the probability that he will mint a block to himself.

To calculate the interest reward coin-age is used. Coin-age is the stake of the investor times the days he held it for. If the investor Bob holds 50 Gridcoins for 3 days, he has acquired 150 coin-age. The higher the coin age, the larger will be the reward compared to the target reward. Once a block is found, the coin age is consumed and starts over again.

Novacoin enabled Proof-of-Work as a stand alone function next to Proof-of-Stake. This means work can be calculated separately from interest and allows for separate hash targets. Also scrypt hashing was enabled through the help of Novacoin. Novacoin was built with p2pool support, making it likely that a pool will be implemented for Gridcoin in future.

Blocks are generated to meet a certain set yearly hash target for the whole network, for example a 1% increase of total supply per year. This target is therefore adjusted continuously and not every 2 weeks like Bitcoin’s difficulty. In Gridcoin the rate listed in the APR schedule is annualized, the rate applied to the coin balance with an APR of 1% on coins held one day is therefore 1%/365.

Gridcoin has eliminated the possibility of a 51% attack, an attack on a standard Proof-of-Work coin, which involves a single entity owning a minimum of 51% of the total network hash rate. To attack Gridcoin in a similar way, the attacker would have to make a 51% buy-out, meaning he needs to own 51% of all the coins. Since interest is being payed to those who let their nodes run for the network, transaction fees are not needed in theory. However they are still enforced to prevent transaction spam on a single node.

These improvements were already made by Blackcoin, which Gridcoin, in an effort to keep up with current technology has implemented. Blackcoin also included the [Zerocash] protocol, a process that is now used in Gridcoin to guarantee that BOINC accounts cannot be tracked and as a result hijacked.

BOINC participation is not required to receive a PoS payment. A wallet that is not associated with a BOINC account is called an Investor.

Proof-of-BOINC

To prove his contribution of BOINC work a Researcher installs the BOINC software on his PC. He chooses a Project from the Current BOINC Whitelist. Only projects from the Current BOINC Whitelist will yield a reward. The whitelist is update regularly. The Researcher registers at the project with his email and is granted a CPID (cross project identifier), which keeps track of his unique credits. If the system is now conscious of the email, it automatically knows its pairing CPID. At the moment this is done through Netsoft-online, which will not remain a permanent solution. Netsoft also acts as a credit checking farm, next to BOINC stats, ensuring that the credits claimed by the owner of a CPID, have the same value as what is stored in the project and later the block chain. The Researcher then starts downloading his work from the server. When he is finished with computing this work container, he sends it back to the server together with a recommendation of credits to be granted for this workload. The server compares this recommendation with another one and then grants the lower credit to both Researchers.

After this process repeats itself a couple of times, the Researcher starts acquiring Recent Average Credit (RAC). RAC consists of a daily acquired credits average. If the Researcher has 100 Credits after day 1, and 250 credits after day 2, he will have a RAC of 100 after day 1 and a RAC of 150 after day 200. To ensure this average accurately describes the recently acquired credits, the average is halved every 2 weeks. With this RAC a recent savings account (RSA) is created. It keeps track of a potential overflow of reward. The reward is calculated with:

<code>RAC / Network RAC * 100 * Time since last payment in days * Magnitude Multiplier</code>

NRAC is the Average of RAC included in the blocks that have so far been mined with RAC from a single project. If no block has been found so far for this Project, a reward of 30 will be granted for every block. If the calculated reward is is greater than the current maximum block subsidy, the overflow is stored in the RSA. The payout is delivered as soon as a Proof-of-Stake Block has been found by a researcher. The factor 100 ensures that the Researcher’s RAC is greater than 100 before he receives any additional subsidy on top of his Proof of Stake interest for every found block. Gridcoin uses a lookback period of 14 days, to check if the credit has been gathered later than 14 days ago. Credit older than 14 days is therefore disregarded. A Block is only granted when an absolute minimum of 100 RAC is achieved. A single Researcher can accrue rewards in a Research Savings Account across multiple devices for up to 14 days. The payments are subject to caps in the Maximum Block Subsidy. The Maximum Block Subsidy is the maximum reward that can be accrued per block from the Research Savings Account. The Maximum Block Subsidy is also the reward available for payment in any single block cap. Payment is half of the reward available for payment.

Proof-of-Research

To tie these two systems together and create a protocol that is both Proof-of-Work and Proof-of-Stake, but not wasteful of its resources in doing so, values from both algorithms are stored in the block header to provide a point of reference and cryptographic proof. Next to the normal Proof hash of Blackcoin, Gridcoin introduces the hash of the BOINC email together with the distributed client public key, which is used to calculate the cpid. While the CPID is public, it cannot be used, or even stolen by another user, since he also needs the email for that, which only has its hashed value stored. Any invalid CPID is rejected, meaning that the CPID needs to be genuine, and the user has signed up with team gridcoin. The verification through Netsoft and other credit checking farms will only be done during the first 6 confirms of a block. Once it is verified, no further evidence is needed. Both rewards are calculated together. As shown in the above reward calculation coin-age is already a part of the function. If somebody with no BOINC work to account for, an investor, finds a block, the values are simply left blank.

Objections and Solutions

Many objections have been raised that payout could be given unfairly in certain scenarios, or that Gridcoin-Research would be easy to attack.

A scenario for unfair payout is “project hopping”, where “hunters” would always try to work with the best rewarding project. The problem with this is that the RAC of the previous project would not contribute to the RAC of the new project. It would take time to build the credits again, time that would be lost to other miners noticing the profitable potential of said project. It may bring some marginal profits, however these are risky and easy to be noticed by the rest of the community.

Another possibility is that of creating a large botnet, that would spread to work for multiple CPIDs, thus creating the potential for more payouts. The problem with this is that the spread of work would not meet the minimum requirement of RAC > 100. A Monte Carlo simulation has been run to test the fairness of the network, the output and the source code can be reviewed. There is also a google docs spreadsheet, to play around with the variables:

The email as a “private key” has some drawbacks, since a Researcher, or project could be hacked in order to give up this user information. However, projects are protected by strong encryption, Netsoft would any change of critical user information, a password is required, and 2 factor authentication can be set up, this vector poses no larger threat to Gridcoin-Research than to any of the current standard mining pools.

It has also been argued, that a CPID could potentially fake credits. However this would require collaboration between the Resaercher, the Project and credit checking farms of BOINC and Netsoft. Netsoft is said to be unbreachable. It is not quite clear how such an attack would be orchestrated, but even if such a malicious project was to come up, it would be noticed early, thus minimising the potential damage. The community would then simply decide to ban it off the Gridcoin whitelist. It is therfore questionable if this attack would be profitable.

Proof-of-Research Reward Schedule

Start Date End Date Max Block Subsidy Interest Rate Magnitude Multiplier
10/11/2014 10/30/2014 500 9 2
10/30/2014 11/30/2014 400 8 1.5
11/30/2014 12/30/2014 300 7 1
12/30/2014 1/30/2015 250 6 0.9
1/30/2015 2/28/2015 200 5 0.8
2/28/2015 3/30/2015 150 4 0.7
3/30/2015 4/30/2015 100 3 0.6
4/30/2015 5/30/2015 75 2.5 0.55
5/30/2015 1/1/2099 50 1.5 0.5


Magnitude = (SumOfAllOfYourProjectWeightedMagnitudes/WhiteListedProjectCount) * WhitelistedProjectsWithRACOver100

in RPC “listitem explainmagnitude” will show the magnitude calculation for the current CPID and BOINC email used in the wallet

Gridcoin-Research Reward Calculation Example

The date is October 30th, 2015. The Maximum Block Subsidy is 50 and the Researcher is producing research at a rate that achieves the maximum reward per day, or 50 coins. The Researchers wallet is not online for 3 days but they continue to contribute to BOINC at the same rate. After day 3 the Researcher’s Research Savings Account has a balance of 150 coins and he opens his wallet. Shortly after opening the wallet the Researcher begins finding blocks. Each block payment is a PoS payment + PoR payment if there is more than 10% of the Maximum Block Subsidy available in his Research Savings account. The Researchers PoR payments and balances would look like the following:

Mined Block Count Research Savings Account Subsidy Available Payment
1 150.0 50.0 25.0
2 125.0 50.0 25.0
3 100.0 50.0 25.0
4 75.0 50.0 25.0
5 50.0 50.0 25.0
6 25.0 25.0 12.5
7 12.5 12.5 6.25
8 6.25 6.25 3.125
9 3.125 3.125 0
10 3.125 3.125 0

When the Researcher found his 9th block the Research Savings Account balance was less than 10% of the Maximum Block Subsidy (5.0) which results in no PoR payment. The researcher does however keep that amount in his Research Savings account until he accrues enough to qualify for another payment and will continue to receive his PoS payments.

Gridcoin-Classic to Gridcoin-Research Conversion

The Gridcoin-Classic to Gridcoin-Research conversion began October 12th, 2014 and will continue until approximately April 20th, 2015, a 6 month window. The process involves destroying or “burning” coins to a designated Gridcoin-Research address that can not have a private key generated for it. To successfully burn Gridcoin-Classic coins and receive Gridcoin-Research coins the classic coins must originate from the latest build of Gridcoin-Classic, v2.1.7.7-g77-retirement. The conversion process takes place at: http://pool.gridcoin.us/CoinExchange.aspx .

Its initial phase started on October 12th, 2014. The first 2000 blocks were scrypt mined to guarantee a safe genesis. Afterwards the Proof-of-Research algo kicked in. At the same time the coin burn on the classic client commenced. Holders of Gridcoin-Classic are be able to send their coins to a burn address, which will destroy their coins on Gridcoin-Classic and instead render them 10 fold their stake on Gridcoin-Research. In case you held 10 Gridcoin in classic and burn them at the address, you are going to receive 100 Gridcoin in Gridcoin-Reserch.

Further instruction is listed on the conversion website.

There won’t be any exchanges to buy or sell Gridcoin-Research until October 20th, 2014. Gridcoin-Classic will be traded until October 20th. On this day Gridcoin-Classic will stop trading on the exchanges and Gridcoin-Research will begin trading. Following October 20th if you buy Gridcoin, the coins you receive will be a Gridcoin-Research coins that have already been converted from Classic or were created on the new chain.

During the 6 month conversion window the Gridcoin-Classic continues in an end-lifetime mode running with a scrypt only hashing algorithm and fixed 10 coins reward for 5 months, followed by a 0.1 coin reward for 1 month. Coins generated on the Gridcoin-Classic block chain during this period will need to be converted to Gridcoin-Research before the chain is retired April 2015 or will be un-recoverable. To prevent 51% attacks with fraudulent clients during this phase, coin burn exchange will be on the lookout for blocks greater than 10 and automatically reject any such malicious attempts.

As an added security measure against double spending, there are more confirmations required for large conversion transactions. Following is the Confirm Required Schedule by amount of Classic coins burned:

Classic Amount Confirms Required
0-100 10
101-500 50
501-1000 75
1001-5000 100
5001-10000 200
10000+ 300

Bonus Benefit with PoR

Under Proof-of-Research you do not actually lose coins from orphaned blocks like you would in Classic if you found blocks on a fork. There is a 14 day lookback and as long as you find your blocks in that time you will get credit for the research you have done.

Source

http://coin.wiki/

See Also on BitcoinWiki