Skip to content

Instantly share code, notes, and snippets.

@SmaugPool
Created November 22, 2020 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SmaugPool/11bb9053cd2320d4af9fe4a0a3f1192b to your computer and use it in GitHub Desktop.
Save SmaugPool/11bb9053cd2320d4af9fe4a0a3f1192b to your computer and use it in GitHub Desktop.
1PCT - Re: Questions about your FAQ
for <smaug@pool.pm>; Sun, 22 Nov 2020 20:27:20 +0000 (UTC)

Hi,

As a pool operator concerned by the effectiveness of the Sybil attack you started testing during ITN and the similar strategy you use on mainnet, I have the following questions:

Hi Smaug,

Thanks for reaching out! I’m always happy to answer questions.

First of all, I love what you’ve done with pool.pm. It’s a fantastic piece of software, and it’s entertaining to follow the real-time changes going on.

Your first question is about Sybil attacks. Let’s start by investigating the definition of a Sybil attack, as that will be very helpful in answering your question. If we go by Wikipedia, a Sybil attack is defined as follows:

In a Sybil attack, the attacker subverts the reputation system of a network service by creating a large number of pseudonymous identities and uses them to gain a disproportionately large influence.

As per Wikipedia, a Sybil attack in Cardano would be a single entity creating a large number of different identities, without disclosing them being related, and attracting a large amount of stake, hence gaining a large influence. The important thing to notice here, is the lack of disclosing the relationship. If you look at the YUTA pools (ZZZ, JP, KTN, POP, AAV, HOLD and more) this could have been a Sybil attack, if they had not disclosed the relationship between them. As per this definition, I do not consider 1PCT nor YUTA Sybil attackers.

Another definition of a Sybil attacker, that is often thrown around, is someone who’s simply running multiple pools. In my view, this is not a Sybil attack - this is simply a large operation.

Now on to your first question:

  1. As far as I know, a sybil attack refers to the influence gained, not the intention, so what changed to make what you called "acted like any smart Sybil attacker would do" or "the Sybil experiment" during ITN become "an active protector of the protocol" while using almost the same strategy, without being limited in the pool number now? Do you consider that it is not a sybil attack because you are not (yet) creating hundreds or thousands of pools?

This is actually a great question. Now that I think more deeply about it, what I did on the ITN was not a regular Sybil attack. It was rather testing a superior strategy for attracting stake. Since going with 1% margin and showing an early superior performance, the 1PCT brand was recognised as a professional actor, giving its delegators a very high level of rewards.

Since I saw a possible exploit, I wanted to make sure that it was not actively exploited to hurt the protocol. The only way I could make sure of this, was to fill this hole in the market my self. The only actor I can truly trust to act honestly, and according to the rules of the protocol, is my self. By launching 1 Percent Pool, I made it much harder for bad actors to gain a large amount of stake by following the same strategy. Other actors did try to copy the strategy, with varying degrees of luck, and some coming close to the same amount of stake that 1 Percent Pool has. This just shows that the hole needed to be plugged to prevent attacks.

What I mean by being an active protector of the protocol is, that I can ensure that at least 5% of the blocks are currently being produced by a good actor with good intentions. Whether you trust this or not, that is up to you.

About creating hundreds or thousands of pools, that will not happen, and for multiple reasons. You have to match your number of pools with the amount of stake that people are willing to delegate to you. If you look at the last many epochs, the stake held by 1 Percent Pool is stagnated around 1,1-1,2bn ADA, and slowly decreasing. The pools are marketed towards a certain segment of people whom appreciate a secure, professional operation with a high level of rewards, along with a guaranteed maximum margin. This is obviously appealing to many people.

Let’s look at the current power that 1 Percent Pool holds. At the time of writing, 1PCT has the ability to forge about 5,6% of the total amount of blocks in an epoch. In order to either censor transactions or rearrange the chain, more than 50% of the blocks are needed. There is a very long way to 50% from where we are now, with no signs of the power changing much.

That being said, I do recognise that having few very large actors is not the preferred state. Currently 62,5% of all ADA in the system is actively being staked, and once the protocol matures more, and that number increases to 80%, 1PCT would only forge around 4,5% of the total blocks each epoch. I would personally not consider that a risk for the protocol, as long as it doesn’t grow too much over time. If that number increased to 8-10%, it would start to look like a risk. I will happily vow right here and now, to never open enough pools to become saturated above that level.

Another important point to have in mind is, that the current pool ecosystem will change a whole lot over the years to come. We will see a lot more people starting to run their own pools rather than delegating their stake, since it will become plug-and-play easy, and probably also more beneficial to do so. Once we arrive at that point, we will be far past the current ecosystem with many larger operators. I consider 1 Percent Pool a trustful protector of the ecosystem until we get to this point. Consider it training wheels, if you will. I will however keep running the pools, as long as there is a demand for them, and of course with the above promise of maximum size in mind.

Now on to your second question:

  1. You say on your website "I'm actively working with IOG/IOHK on this issue and sharing ideas, in order to further harden the resistance of such attacks.". This is quite a bold claim as it implies an active collaboration with IOG, so do you have some public reference demonstrating this collaboration or more information? Note that I have asked the same question to IOG, and the first representative was not aware of such collaboration and has reported the issue internally. I am waiting for more information.

Let me be very specific here, to best answer your question. On the 17th of August 2020, I wrote both Chief Scientist Aggelos Kiayias and Education Director Lars Brünjes an email with exploits I had identified in the current system, along with suggestions on how they could be solved. On the 18th of August, Aggelos Kiayias responded and thanked me for the feedback and suggestions, and told me they would get back to me soon. Since then, I’ve noted additional things that could be improved to further prevent Sybil attacks and bad behaviour, and your inquiry today (22nd of November) nudged me to send these suggestions along as well, this time with Charles Hoskinson CC.

Since only Aggelos and Lars had received my ideas for improvement at the time of writing, it’s natural that no one else at IOG knew about the correspondence.

First of all, I do understand how some people could get triggered by such a statement. It is fully correct though that I do work with IOG by sharing ideas for improving the Sybil resistance, along with general bad acting (eg. the few pools hiking their margin to 100%). It is not a partnership, I am not employed by IOG, it is not several hours a week being put into this. It is exactly what I say it is, sharing ideas for improvements.

It should also be noted, that this information is well hidden in the lower part of the FAQ on the website. This is the only place it is mentioned. It is not a marketing thing, there are no mentions of it on the top of the website or the About section, there are no logos that could indicate a close collaboration. That would be wrong.

Since you might be interested in the specifics on my improvement proposals, I will include the main contents of my email to Aggelos and Charles here:

A. Maximum acceptable parameter change per epoch This is partly in line with the original suggestion. A pool should only be allowed to change the parameters by a certain amount per epoch, as to avoid sudden big changes (eg. 0 pledge or 100% margin). It could be around 20% pledge decrease per epoch, until a minimum of 100K is reached, and a maximum margin increase of 2% points per epoch. A larger change should still be accepted by the protocol, but such a change should nullify all current delegations to the pool.

B. Ignoring blocks from pools that do not honour their pledge As stated in the first email, blocks from pools that do not honour their pledge should be ignored. This would prevent attackers from removing their pledge in the beginning of an epoch, and still have power within the protocol for two more epochs, without anything at stake.

C. Ability to lock pledge for an amount of time We should introduce the functionality of a time lock for the pledge, up to eg. 6 months, which should have an impact on the amount of rewards a pool can earn, just like we have a0 for pledge size today. Having a high pledge shows some amount of skin in the game, but locking it up for longer time is much more powerful. It shows a real dedication and acceptance of risk, which you would only have if you actually care about the protocol. It would make it much harder for exchanges to exploit the current a0, as they can instantly move their clients’ funds away, and it would be harder to get whales to supply pledge to your pool, since they would risk a lot more from doing so. This would actively make the operator of the pool have more skin in the game, and hence better incentives for not attacking the protocol.

Thank you for your answers. Note that I will likely publish them (uncut). I also think it would be interesting to add details about these points on your website.

Smaug, I appreciate your questions and your friendly inquiry. Feel free to publish this email uncut, in any way you feel like, and do ask follow-up questions in case there is anything else you are curious about. I will think about how to properly rewrite the part of the FAQ about Sybil attacks, as I do recognise that the current phrasings are somewhat ambiguous and unclear.

Have a great Sunday!

Best, 1PercentPool

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment