Blockchain

Hard Forks, Soft Forks, Padrões e Coerção

Um dos argumentos importantes no espaço blockchain é se hard forks ou soft forks são o mecanismo preferido de atualização de protocolo. A diferença básica entre os dois é que os soft forks alteram as regras de um protocolo reduzindo estritamente o conjunto de transações que é válido, então os nós que seguem as regras antigas ainda entrarão na nova cadeia (desde que a maioria dos mineradores/validadores implemente o fork), enquanto os hard forks permitem que transações e blocos anteriormente inválidos se tornem válidos, então os clientes devem atualizar seus clientes para permanecer na cadeia bifurcada. Existem também dois subtipos de hard forks: estritamente em expansão hard forks, que expandem estritamente o conjunto de transações válidas e, portanto, efetivamente as regras antigas são um soft fork em relação às novas regras, e bilateral hard forks, onde os dois conjuntos de regras são incompatíveis nos dois sentidos.

Aqui está um diagrama de Venn para ilustrar os tipos de garfo:

Os benefícios comumente citados para os dois são os seguintes.
  • Hard forks permitem aos desenvolvedores muito mais flexibilidade na atualização do protocolo, pois eles não precisam se preocupar para garantir que as novas regras “se encaixem” nas regras antigas
  • Os soft forks são mais convenientes para os usuários, pois os usuários não precisam atualizar para permanecer na cadeia
  • Os garfos macios têm menos probabilidade de causar uma divisão da corrente
  • Os soft forks realmente exigem apenas o consentimento dos mineradores/validadores (mesmo que os usuários ainda usem as regras antigas, se os nós que fazem a cadeia usarem as novas regras, apenas coisas válidas sob as novas regras entrarão na cadeia em qualquer caso); garfos rígidos exigem Opt-in consentimento dos usuários

Além disso, uma crítica importante frequentemente feita aos hard forks é que os hard forks são “coercitivos”. O tipo de coerção implícito aqui não é a força física; em vez disso, é coerção através do efeito de rede. Ou seja, se a rede mudar as regras de A para B, mesmo que você pessoalmente goste de A, se a maioria dos outros usuários gostar de B e mudar para B, então você terá que mudar para B, apesar de sua desaprovação pessoal da mudança, para estar ligado. a mesma rede que todos os outros.

Os defensores dos hard forks são frequentemente ridicularizados por tentarem efetuar uma “tomada hostil” de uma rede e “forçar” os usuários a acompanhá-los. Além disso, o risco de divisão da cadeia é frequentemente usado para classificar os hard forks como “inseguros”.


Na minha opinião pessoal, estas críticas são erradas e, além disso, em muitos casos, completamente inversas. Este ponto de vista não é específico do Ethereum, ou Bitcoin, ou qualquer outro blockchain; surge das propriedades gerais desses sistemas e é aplicável a qualquer um deles. Além disso, os argumentos abaixo aplicam-se apenas a mudanças controversas, onde uma grande parte de pelo menos um eleitorado (mineiros/validadores e utilizadores) as desaprova; se uma alteração não for controversa, geralmente poderá ser feita com segurança, independentemente do formato da bifurcação.

Em primeiro lugar, discutamos a questão da coerção. Hard forks e soft forks alteram o protocolo de maneiras que alguns usuários podem não gostar; qualquer a mudança de protocolo fará isso se tiver menos de exatamente 100% de suporte. Além disso, é quase inevitável que pelo menos alguns dos dissidentes, em qualquer cenário, valorizam mais o efeito de rede de permanecer no grupo maior do que valorizam suas próprias preferências em relação às regras do protocolo. Conseqüentemente, ambos os tipos de fork são coercitivos, no sentido de efeito de rede da palavra.

No entanto, há uma diferença essencial entre hard forks e soft forks: hard forks são opcionais, enquanto soft forks não permitem que os usuários “optem” de forma alguma. Para que um usuário ingresse em uma cadeia de hard fork, ele deve instalar pessoalmente o pacote de software que implementa as regras de fork, e o conjunto de usuários que discorda de uma mudança de regra ainda mais fortemente do que valoriza os efeitos da rede pode, teoricamente, simplesmente permanecer no mesmo. rede antiga – e, na prática, tal evento já aconteceu.

Isso é verdade tanto no caso de hard forks de expansão estrita quanto de hard forks bilaterais. No caso de soft forks, no entanto, se a bifurcação for bem-sucedida, a cadeia não bifurcada não existe. Conseqüentemente, soft forks claramente favorecem institucionalmente a coerção em vez da secessão, enquanto hard forks têm o viés oposto. As minhas próprias opiniões morais levam-me a favorecer a secessão em vez da coerção, embora outras possam diferir (o argumento mais comum levantado é que os efeitos de rede são realmente muito importantes e é essencial que “uma moeda governa todos eles“, embora também existam versões mais moderadas disso).

Se eu tivesse que adivinhar por que, apesar desses argumentos, os soft forks são frequentemente considerados “menos coercitivos” do que os hard forks, eu diria que é porque parece que um hard fork “força” o usuário a instalar uma atualização de software, enquanto com um soft fork os usuários não “precisam” fazer nada. Contudo, esta intuição é equivocada: o que importa não é se os usuários individuais têm ou não que realizar a simples etapa burocrática de clicar em um botão de “download”, mas sim se o usuário está ou não coagido a aceitar uma mudança nas regras do protocolo que prefeririam não aceitar. E por essa métrica, como mencionado acima, ambos os tipos de forks são, em última análise, coercitivos, e são os hard forks que se revelam um pouco melhores na preservação da liberdade do usuário.

Agora, vamos dar uma olhada em forks altamente controversos, especialmente em forks onde as preferências do minerador/validador e as preferências do usuário entram em conflito. Existem três casos aqui: (i) hard forks bilaterais, (ii) hard forks de expansão estrita e (iii) os chamados “soft forks ativados pelo usuário” (UASF). Uma quarta categoria é onde os mineradores ativam um soft fork sem o consentimento do usuário; chegaremos a isso mais tarde.

Primeiro, hard forks bilaterais. Na melhor das hipóteses, a situação é simples. As duas moedas são negociadas no mercado e os comerciantes decidem o valor relativo das duas. No caso ETC/ETH, temos provas contundentes de que os mineiros são esmagadoramente propensos a simplesmente atribuir o seu hashrate às moedas com base no rácio dos preços, a fim de maximizar o seu lucro, independentemente das suas próprias opiniões ideológicas.

Mesmo que alguns mineiros professem preferências ideológicas para um lado ou outro, é extremamente provável que haja mineiros suficientes dispostos a arbitrar qualquer incompatibilidade entre a relação de preços e a relação de poder de hash, e a alinhar os dois. Se um cartel de mineradores tentar se formar para não minerar em uma cadeia, haverá incentivos esmagadores para desertar.

Existem dois casos extremos aqui. A primeira é a possibilidade de que, devido a um algoritmo de ajuste de dificuldade ineficiente, o valor da mineração da moeda caia porque o preço cai, mas a dificuldade não diminui para compensar, tornando a mineração muito pouco lucrativa, e não há mineradores dispostos a minerar a um preço baixo. perda para continuar empurrando a corrente para frente até que sua dificuldade volte ao equilíbrio. Este não foi o caso com Ethereum, mas pode muito bem ser o caso do Bitcoin. Portanto, a cadeia minoritária pode simplesmente nunca sair do papel e, portanto, morrerá. Observe que a questão normativa da se isso é bom ou não depende da sua opinião sobre coerção versus secessão; como você pode imaginar pelo que escrevi acima, eu pessoalmente acredito que esses algoritmos de ajuste de dificuldade hostis à cadeia minoritária são ruins.

O segundo caso extremo é que, se a disparidade for muito grande, a cadeia grande pode atacar 51% da cadeia menor. Mesmo no caso de uma divisão ETH/ETC com proporção de 10:1, isso não aconteceu; então certamente não é um dado adquirido. No entanto, é sempre uma possibilidade se os mineiros da cadeia dominante preferirem a coerção a permitir a secessão e agirem de acordo com estes valores.

A seguir, veremos a expansão estrita dos hard forks. Em um SEHF, existe a propriedade de que a cadeia não bifurcada é válida sob as regras bifurcadas e, portanto, se o fork tiver um preço inferior ao da cadeia não bifurcada, terá menos poder de hash do que a cadeia não bifurcada, e então a cadeia não bifurcada acabará sendo aceita como a cadeia mais longa pelas regras do cliente original e do cliente bifurcado – e assim a corrente bifurcada “será aniquilado".

Há um argumento de que existe, portanto, um forte preconceito inerente contra o sucesso de tal bifurcação, já que a possibilidade de a cadeia bifurcada ser aniquilada será incorporada ao preço, empurrando o preço para baixo, tornando ainda mais provável que a cadeia seja aniquilado… Este argumento parece-me forte, e por isso é uma boa razão para fazer qualquer hard fork controverso bilateral em vez de expansão estrita.

Os desenvolvedores do Bitcoin Unlimited sugerem lidar com esse problema tornando o hard fork bilateral manualmente depois de acontecer, mas uma escolha melhor seria incorporar a bilateralidade; por exemplo, no caso do bitcoin, pode-se adicionar uma regra para banir algum opcode não utilizado e, em seguida, fazer uma transação contendo esse opcode na cadeia não bifurcada, de modo que, sob as regras bifurcadas, a cadeia não bifurcada será a partir de então considerado para sempre inválido. No caso do Ethereum, devido a vários detalhes sobre como funciona o cálculo do estado, quase todos os hard forks são bilaterais quase automaticamente. Outras cadeias podem ter propriedades diferentes dependendo da sua arquitetura.

O último tipo de fork mencionado acima é o soft fork ativado pelo usuário. Em um UASF, os usuários ativam as regras do soft fork sem se preocupar em obter consenso dos mineradores; espera-se que os mineiros simplesmente se alinhem por interesse económico. Se muitos usuários não concordarem com o UASF, então haverá uma divisão da moeda, e isso levará a um cenário idêntico ao hard fork em expansão estrita, exceto – e esta é a parte realmente inteligente e tortuosa do conceito – a mesma pressão de “risco de aniquilação” que desfavorece fortemente a cadeia bifurcada em um hard fork estritamente em expansão, em vez disso, favorece fortemente a cadeia bifurcada em um UASF. Embora uma UASF seja opt-in, utiliza a assimetria económica para se inclinar para o sucesso (embora a tendência não seja absoluta; se uma UASF for decididamente impopular, então não terá sucesso e conduzirá simplesmente a uma divisão da cadeia).

No entanto, os UASFs são um jogo perigoso. Por exemplo, suponhamos que os desenvolvedores de um projeto queiram fazer um patch UASF que converta um opcode não utilizado que anteriormente aceitava todas as transações em um opcode que aceita apenas transações que cumpram as regras de algum novo recurso interessante, embora um que seja politicamente ou tecnicamente controverso e antipático aos mineiros. Os mineiros têm uma maneira inteligente e tortuosa de revidar: eles podem implementar unilateralmente um soft fork ativado pelo minerador que faz com que todas as transações que usam o recurso criado pelo soft fork sempre falhem.

Agora, temos três conjuntos de regras:

  1. As regras originais onde o opcode X é sempre válido.
  2. As regras onde o opcode X só é válido se o resto da transação estiver em conformidade com as novas regras
  3. As regras onde o opcode X é sempre inválido.

Observe que (2) é um soft-fork em relação a (1) e (3) é um soft-fork em relação a (2). Agora, há uma forte pressão económica a favor de (3), e assim o soft-fork não consegue cumprir o seu objectivo.

A conclusão é esta. Os soft forks são um jogo perigoso e tornam-se ainda mais perigosos se forem controversos e os mineiros começarem a reagir. Hard forks em expansão estrita também são um jogo perigoso. Soft forks ativados por mineradores são coercitivos; Os soft forks ativados pelo usuário são menos coercitivos, embora ainda bastante coercitivos devido à pressão econômica, e também têm seus perigos. Se você realmente deseja fazer uma mudança controversa e decidiu que os altos custos sociais de fazê-lo valem a pena, basta fazer um hard fork bilateral limpo, gastar algum tempo para adicionar alguma proteção de replay adequada e deixar o mercado resolver o problema. .

Fonte: https://vitalik.eth.limo/general/2017/03/14/forks_and_markets.html