BIP – Bitcoin Improvement Proposal

BIP – Bitcoin Improvement Proposal

Introdução

Em algumas respostas que eu postei por aqui tentando esclarecer dúvidas me lembro de ter citado que o Bitcoin é um projeto aberto. Um aspecto deste projeto que muitas pessoas ressaltam é a possibilidade que o Bitcoin disponibiliza para qualquer interessado propor inovações, melhorias ou correções no projeto. O principal mecanismo disponibilizado para os interessados apresentarem suas propostas de forma técnica e estruturada é chamado de Bitcoin Improvement Proposal (BIP), em tradução livre: Proposta de Melhoria no Bitcoin [1].

A proposta deve ser apresentada com as especificações técnicas da inovação, da melhoria ou da correção e deve vir acompanhada da(s) justificativa(s). É no próprio BIP que a comunidade se manifesta opinando e até mesmo propondo ajustes que eventualmente julgarem necessários para aperfeiçoar a proposta. Também é neste documento que o design da inovação, melhoria ou correção deve ser apresentado inicialmente e onde ficará documentado a sua versão final que será implementada após debate dos interessados, se e quando o consenso for alcançado. Cabe ao autor da proposta (BIP) conduzir o processo dentro da comunidade na busca pelo consenso registrando as divergências e propostas de ajustes que forem recebidos ao longo do processo de discussão. Todos as propostas são mantidas em um repositório onde são registradas eventuais revisões sofridas pela proposta inicial [2].

Obs.: as propostas têm que ser enviadas em inglês.

Fluxo

A primeira coisa que o interessado em apresentar alguma proposta deve fazer é pesquisar para saber se a proposta dele já foi apresentada e debatida anteriormente. Além disso é interessante submeter a ideia em diversos fóruns da comunidade para avaliar a receptividade da proposta. Uma simples pesquisa no Google não elimina esta questão da eventual duplicidade ou repetição de ideias. Entre outras vantagens o fato de submeter a proposta para debate prévio evita que o autor perca tempo desenvolvendo em detalhes uma ideia que já foi apresentada antes. Nem sempre uma ideia que achamos brilhante, inovadora ou cabível é percebida pelos demais membros da comunidade com o mesmo grau de relevância.

Depois de fazer essa primeira pesquisa dentro da comunidade e recebendo sinais de que a ideia pode vir a ser aceita o interessado deve fazer um esboço ou rascunho já no formato específico de um BIP, incluindo mais detalhes sobre a sua ideia e aguardar a receptividade dentro da comunidade. Se houver sinalização favorável nesta segunda etapa de pesquisa onde se apresenta a ideia com mais detalhes, já formatado para melhor análise, cabe ao autor enviar o BIP para o repositório de BIP’s para que ele entre na fila. Ao enviar o BIP para a fila o autor deve usar um pseudônimo, ou seja, não deve se identificar até que um dos editores responsáveis pelo repositório atribuía um número ao BIP. Não cabe ao autor da ideia numerar o seu BIP. De acordo com o BIP 002 atualmente temos dois editores.

O(s) autor(es) do BIP são(erão) o(s) único(s) responsável(is) pelo andamento do processo desde a sua fase inicial até a obtenção do consenso sobre a necessidade de implementação do que está sendo proposto no BIP. Desde a fase mais embrionária do processo cabe ao(s) proponente(s) guardar/documentar as opiniões/sugestões recebidas. Recomenda-se que esta etapa não seja muito demorada e que os principais colaboradores interessados em contribuir com sugestões e/ou opiniões sejam incluídos numa lista privada de discussões. Esta etapa pode ser feita num grupo ou lista de e-mails, numa página da internet com acesso controlado etc. Se a proposta ficar aberta para uma discussão ampla e por muito tempo dentro da comunidade corre-se o risco dela se tornar interminável.

O(s) autor(es) do BIP pode(m) atualizar o rascunho (que estão classificados no estágio draft sempre que julgarem necessário acessando o BIP no repositório.

Os estágios ou status de um BIP são: replaced (substituído), active (ativo), draft (rascunho), final (final ou implantado), withdrawn (retirado), deferred (adiado), proposed (proposto), obsolet (obsoleto), number allocated (número alocado) e rejected (rejeitado). Obs.: tradução livre entre parêntese.

Tipos

Se o(s) autor(es) tem várias propostas para apresentar o ideal é que sejam feitas BIP’s separados. Quanto mais objetivo/específico for um BIP maiores serão as chances de avançar em busca da aprovação ou da recusa. Quando o rascunho do BIP estiver maduro (depois de ter sido colocado na fila do repositório) um editor dará um número para o BIP que receberá uma espécie de “rótulo” ou “classificação” definindo o tipo de implementação que está sendo proposto: standard or standard track, informational and process. Em tradução livre: rastreamento de padrões, informativos ou processos.

Alterações no protocolo da rede, na validação dos blocos ou das transações, por exemplo, são classificados como standard. São os mais técnicos e os mais debatidos porque podem introduzir mudanças significativas e até mesmo gerar uma divisão dentro da rede (hard fork). O BIP-141 que implementou o SegWit é um exemplo deste tipo de proposta [3]. A maioria dos BIP’s é classificada dentro deste grupo.

Alterações fora do protocolo da rede são classificadas como process. Também são propostas que sugerem alterações ou melhorias em diversas áreas do protocolo. O BIP-01 [4] chamado de Purpose and Guidelines (em tradução livre: Propósito e Guia de Orientação, para elaboração de propostas) é do tipo process e tem o status de replaced (foi substituído pelo BIP-02 [5] que tem o status de active) no repositório. Existem poucos BIP’s classificados neste grupo.

Os BIP’s que não propõem novos recursos e não exigem consenso da comunidade, por exemplo, mudança apenas no design sem interferir no protocolo são classificados como informational. Não existem muitos BIP’s classificados nesta categoria. O BIP-32 Hierarchical Deterministic Wallets, por exemplo, como o título já adianta, está relacionado a wallets (carteiras) [6]. A classificação de informativo tem a ver com o fato deste tipo de BIP receber esta classificação porque identifica ou descreve algum problema ligado ao Bitcoin e apenas sugere ou apresenta uma solução para o problema descrito.

Rejeição

Quem inclui uma proposta de BIP na fila do repositório é conhecido como editor, que é uma pessoa diferente do proponente. Nenhum editor pode rejeitar um BIP sem justificativa. Alguns motivos que podem gerar rejeição de um BIP: duplicidade, fora da formatação, falta de foco ou objetividade, muito genérico, incorreção técnica, não apresentar justificativas ou necessidade do que está sendo proposto, ir contra a filosofia do Bitcoin ou ser incompatível com o protocolo ou com o aspecto técnico que se pretende melhorar ou mudar. Uma das principais questões que um interessado em apresentar um BIP deve considerar é o resultado da sua implementação e o quanto isso representa de melhoria para o Bitcoin. Propostas inaplicáveis ou que geram complicações indevidas tem chance zero de sucesso.

Estrutura

O BIP indica como requisitos mínimos os seguintes tópicos: Prêambulo, Direito Autoral, Especificação, Motivação, Justificativa, Compatibilidade com Versões Anteriores e Implementação de Referência.

Pegando como exemplo a estrutura do BIP 141 podemos ver que ele tem vários tópicos e subtópicos:

Imagem retirada de: bips/bip-0141.mediawiki at master · bitcoin/bips · GitHub

Esta postagem é apenas um breve resumo sem maiores detalhes sobre o assunto. Tentarei fazer um texto mais detalhado sobre a elaboração de um BIP, se ficar minimamente razoável aparecerá nos próximos dias por aqui, caso contrário acredito que já deu para ter uma boa noção sobre o processo.

[1] – O que é um BIP - Proposta de Melhoria de Bitcoin?

[2] – GitHub - bitcoin/bips: Bitcoin Improvement Proposals

[3] - bips/bip-0141.mediawiki at master · bitcoin/bips · GitHub

[4] - bips/bip-0001.mediawiki at master · bitcoin/bips · GitHub

[5] – bips/bip-0002.mediawiki at master · bitcoin/bips · GitHub

[6] - bips/bip-0032.mediawiki at master · bitcoin/bips · GitHub

2 curtidas

Conteúdo de alto padrão, Cecilio :clap: :clap: :clap: :clap:

2 curtidas

O BIP 002 que serviu como fonte principal desta postagem é de 2016, me parece que sendo uma parte importante do sistema Bitcoin deve estar atualizado. Destaco alguns pontos que chamaram a minha atenção:

  • O próprio BIP 002 segue a formatação que ele mesmo está propondo naquilo se aplica ao tipo de BIP;

  • Existem diferentes tipos de licença e a palavra livre não é exatamente a melhor forma de nos referirmos ao conjunto de códigos que fazem o Bitcoin funcionar;

  • Meus conhecimentos sobre o campo da economia são bem rasos. Talvez por causa disso eu nunca tenha me deparado de forma tão objetiva e clara com uma separação que é explicada neste BIP sobre a economia do Bitcoin. No tópico Justificativa que é feito no formato de perguntas e respostas temos uma pergunta que é a seguinte: “Why aren’t (ver print abaixo) included in the economy?” em tradução livre “Porque (ver print abaixo) não são considerados agentes econômicos?”. Os agentes econômicos que estariam fora de acordo com o campo justificativa do BIP 002 são os desenvolvedores, as corretoras e para a minha surpresa os mineradores. Não consegui descobrir o que significa (ver print abaixo) mas dou um “chute” lá no tópico;
    Código que a pág não aceita

  • O autor de um BIP deve ter consciência sobre a possibilidade do resultado ser bem diferente daquele que ele havia pensado inicialmente. Existe até a possibilidade do Autor ser substituído por outra pessoa que passará a conduzir o processo como proprietário do BIP.;

  • Uma questão que eventualmente pode ser novidade para alguns é o conceito de consensus layer (estrutura de camada de consenso ou consenso em camadas). Um Blockchain pode e é ou deve ser estruturado em camadas tais como: camada de aplicativos descentralizados conectados à rede P2P, camada do consenso (PoW - Proof of Work), camada da rede (P2P), camada de dados (Hash e transações) e uma camada de infraestrutura (máquinas virtuais, containers e serviços).

RESUMO

O BIP (Proposta de Melhoria do Bitcoin) é o documento que fornece informações sobre recursos, processos ou sobre o ambiente do Bitcoin para a comunidade. O BIP deve conter especificações técnicas concisas do tema acompanhado da sua justificativa. O objeto do BIP é que ele seja o principal mecanismo para propor novos recursos, coletar informações da comunidade sobre algum problema e documentar as decisões quanto as alterações propostas. O autor é o responsável pela busca do consenso dentro da comunidade e pela documentação das opiniões contrárias. Os BIP’s são mantidos como arquivos de texto em um repositório com a sua versão, o histórico de revisão e o registro do histórico da proposta. O BIP 002 substitui o BIP 001.

DIREITO AUTORAL (COPYRIGHT)

A licença deste documento é do tipo BSD – Berkeley Software Distribution de 2 cláusulas [7] e OPL – Open Publication License (Licença de Publicação Aberta) [8].

FLUXO (WORKFLOW)

Um BIP deve ser criado com base em uma nova ideia para o Bitcoin. Deve ter alguém que se encarregue de colocar essa ideia no papel seguindo o formato descrito neste documento, deve conduzir as discussões nos fóruns apropriados e buscar o consenso da comunidade em torno da ideia. O autor do BIP deve avaliar inicialmente se realmente é necessário elaborar um BIP considerando que pequenos ajustes ou patches (correções) em determinados softwares geralmente não exigem padronização entre vários projetos e, portanto, não demandam a elaboração de um BIP. Muitos BIP’s foram rejeitados por diversos motivos. Ainda dentro do processo de avaliação inicial um dos primeiros passos é pesquisar discussões anteriores para ver se a ideia foi avaliada anteriormente. Se já foi discutida anteriormente o autor deve avaliar quais foram as questões que surgiram no processo anterior e postar no grupo de desenvolvedores onde se discute questões relacionadas a novos desenvolvimentos do Bitcoin (Bitcoin development mailing list) [9].

Essa pesquisa prévia tem como objetivo economizar tempo do autor e da comunidade evitando que se abra um novo BIP para propor alguma ideia que já foi debatida e rejeitada anteriormente. Essa avaliação prévia também evita que sejam propostas ideias que favorecem apenas o autor da ideia não sendo aplicável para o resto da comunidade. Todo autor de uma ideia acha que ela é boa, mas ela deve ser aplicável, de preferência, em todas as demais áreas do Bitcoin.

Se a ideia passar por este crivo inicial e a comunidade sinalizar que existe a possibilidade de aceitação o autor deve elaborar um rascunho do BIP e apresentá-la para o grupo de desenvolvedores (Bitcoin development mailing list). Após a submeter o rascunho ao grupo de desenvolvedores que ajudarão a formatá-lo adequadamente incluindo questões adicionais e dando uma cara mais detalhada ao documento a proposta deve ser submetida para o repositório GIT de BIP’s [10] como uma pull request (mecanismo pelo qual um desenvolvedor gera uma notificação oficial direcionada a um grupo de pessoas envolvidas num projeto e que sinaliza a apresentação de uma funcionalidade ou recurso que resolve algum problema ou melhora algo que já existe (geralmente são chamados de features) [10]. Nesta fase inicial o autor real do BIP é identificado com uma espécie de pseudônimo padrão “bip-johndoe-infinitebitcoins” ficando assim até que um dos editores atribua um número ao BIP sendo que os próprios autores não podem atribuir um número para o BIP que apresentaram.

Grande parte da responsabilidade pelo andamento de um BIP cabe ao próprio autor e por consequência da eventual implementação da sua ideia. Recomenda-se que listas abertas que geram discussões longas devem ser evitadas sendo mais efetivo abrir uma lista de discussão separada, aceitando e avaliando as opiniões e comentários na fase inicial de andamento (exemplos: abrir uma página wiki ou em um repositório à parte no github). A escolha é do(s) autor(es).

Quanto mais focado for um BIP mais chances de sucesso ele terá. Na dúvida recomenda-se que ele seja dividido e apresentado em partes.

Quando o rascunho (draft) estiver pronto um dos editores atribuirá um número ao BIP e o classificará como Standards Track, Informational ou Process e incluirá a proposta no repositório github dos BIPs que passará a ser identificado com o nome do autor.

Cabeçalho BIP
Imagem printada no dia 09/02/22 de: bips/bip-0386.mediawiki at master · bitcoin/bips · GitHub

Uma vez apresentado um BIP (depois de ter sido avaliado previamente dentro da comunidade) os editores não rejeitarão um BIP sem justificativa. Entre os motivos que podem gerar a rejeição de um BIP temos duplicidade, fora do formato, falta de foco ou foco muito amplo, erro técnico, embasamento dos motivos, abordar questões desatualizadas ou baseadas em versões anteriores ou não estar de acordo com a filosofia do Bitcoin. Entre outras coisas o BIP deve trazer uma descrição clara e completa do aprimoramento que está sendo proposto e o resultado deve entregar melhoria para o sistema, ou seja, não deve ser uma proposta que não traga benefícios para o Bitcoin. Além disso a implementação da proposta não deve gerar complicações indevidas ao protocolo do Bitcoin. Os BIP’s que estão na fase de rascunho podem ser atualizados sempre que o autor tiver necessidade e/ou interesse e devem ser enviados pelo autor como pull requests.

Transferência de Autoria e/ou Propriedade de um BIP

Existem situações em que um BIP pode trocar de autor (a quem cabe o esforço para conduzir o andamento do BIP). Em alguns casos, se tiver interesse, o autor pode permanecer como coautor. Algumas situações em que surge a necessidade de trocar o autor de um BIP são: falta de tempo ou interesse em atualizar e/ou seguir com o processo, ficou sem acesso à internet e não responde mensagens ou e-mail. Uma solução drástica pode ocorrer pela transferência forçada que ocorre quando o autor não concorda com a direção que o seu BIP está tomando por força da maioria da comunidade que está criando consenso em torno do BIP que é diferente daquela que o autor original imaginou.

Qualquer pessoa que estiver interessada em tomar a frente na condução de uma BIP no lugar do autor original pode enviar uma solicitação ao autor original e aos editores. Se o autor do BIP não se manifestar os editores poderão tomar uma decisão unilateral transferindo o BIP.

Editores do BIP

Luke Dashjr (luke_bipeditor@dashjr.org)

Kalle Alm (karljohan-alm@garage.co.jp)

Obs.: Luke é um dos principais desenvolvedores do Bitcoin (Bitcoin Core developer) [11].

Atribuições do Editor e Fluxo do Processo

O editor deve estar inscrito na lista de discussão dos desenvolvedores do Bitcoin (Bitcoin development mailing list). Se o autor trocar mensagens fora da lista de discussão deve enviar cópia aos editores.

O editor deve seguir uma espécie de roteiro:

  • Ler o BIP para verificar se está pronto verificando entre outras questões se faz sentido do ponto de vista técnico mesmo que a princípio não sejam promissoras ou passíveis de aceitação;
  • O título deve descrever o conteúdo com precisão;
  • O rascunho já deverá ter sido enviado e discutido previamente na lista de discussão dos desenvolvedores do Bitcoin;
  • Avaliar se contém os motivos e se tem compatibilidade com versões anteriores (quando aplicável);
  • O cabeçalho deve estar definido corretamente e de acordo com as especificações;
  • Os termos de licenciamento devem se enquadrar no padrão dos BIP’s (ver o tópico direito autoral em caso de dúvida);
  • Se o BIP não estiver pronto será devolvido ao autor para que faça as devidas correções e/ou ajustes com instruções específicas;
  • Quando o BIP estiver pronto para entrar no repositório o autor deverá enviá-lo como uma pull request github dos BIP’s e acompanhar os feedbacks a partir daí.

Além disso cabe ao editor:

  • Atribuir numeração aos BIPs;
  • Incluir o pedido quando estiver pronto;
  • Listar o BIP em: README.mediawiki.

Os editores têm responsabilidades administrativas e editoriais monitorando as alterações e atualizando o cabeçalho sempre que for necessário.

FORMATO E ESTRUTURA DE UM BIP

Especificação

Os BIP’s devem ser elaborados no formato mediawiki [12].

Cada BIP deve ter as seguintes partes:

Preamble (Prêambulo): Cabeçalho contendo metadados sobre o BIP (ver detalhes abaixo).

Abstract (Resumo): Uma descrição simples com cerca de 200 palavras do problema técnico que está sendo abordado.

Copyright (Direito Autoral): O BIP deve ser elaborado explicitamente sob os termos de direitos autorais dos BIPs {atualmente são: BSD-2-clause e GNU-All-Permissive sendo classificadas basicamente como livres, quase de domínio público, com pequenas restrições como por exemplo o reconhecimento do(s) autor(es)}

Specification (Especificação): A especificação técnica deve descrever a sintaxe (forma) e a semântica (conteúdo) de qualquer novo recurso. A especificação deve ser detalhada o suficiente para permitir implementações concorrentes e interoperáveis para qualquer uma das plataformas Bitcoin existentes quando forem implementadas.

Motivation (Motivação): É a parte fundamental de um BIP que pretende incluir algum tipo de mudança no protocolo do Bitcoin. É aqui que o autor demonstra com clareza que a solução apresentada resolve algum problema que o protocolo atual está atendendo de forma inadequada.

Rationale (Justificativa): Nesta parte o autor vai detalhar o seu projeto descrevendo os motivos de forma específica descrevendo em detalhes a sua proposta. Se já foram apresentados outros projetos que foram considerados pelo autor tais projetos alternativos devem ser citados e descritos. Nesta etapa o autor deve demonstrar com evidências que a sua proposta alcançou consenso prévio dentro da comunidade. Finalmente, como acontece em qualquer discussão, o autor deve abordar e discutir as objeções e preocupações/questões que surgiram durante a fase anterior.

Backwards Compatibility (Compatibilidade com Versões Anteriores): Todos os BIPs que introduzem incompatibilidade com versões anteriores devem incluir uma seção descrevendo essas incompatibilidades, a gravidade destas incompatibilidades e a forma como vai lidar com essas incompatibilidades.

Reference Implementation (Implementação de Referência): É nesta etapa que o autor deve incluir a codificação (de teste) junto com a documentação apropriada com o protocolo do Bitcoin.

Preâmbulo do Cabeçalho

O BIP deve começar com um cabeçalho estilo RFC 822 [13]. É um formato de mensagem eletrônica basicamente composto pelos campos: Remetente, Destinatário e Assunto. Os campos identificados com (*) são opcionais conforme modelo abaixo com fundo preto e mais abaixo com fundo branco temos o cabeçalho do BIP 342 que já entrou na fila:


Imagens printadas em 09/02/2022 de: GitHub - bitcoin/bips: Bitcoin Improvement Proposals

Continua…

Se o BIP tiver vários autores cada um deles deve estar numa linha separada seguindo a convenção de continuação de linhas do RFC2822 [14]. Na fase inicial onde a proposta ainda está sendo rascunhada o cabeçalho poderá ter um campo chamado de Discussão-Para que indicará um endereço URI (Uniform Resource Identifier é quase uma URL com algumas diferenças) ou o nome de uma lista de discussão privada onde a proposta está sendo discutida. Esta fase já é posterior a fase de discussão preliminar. O campo data se refere ao momento em que o BIP recebeu um número. As opções para o campo tipo de BIP são: Standards Track, Informational e Process. O campo Post-history (complemento do histórico) permite a inclusão de um link para algum tópico específico ou para algum arquivo de uma lista de discussão. O campo Requires indica o número de outro(s) bip(s) dos quais o BIP apresentado pelo autor depende. Se algum BIP tiver o campo Superseded-By significa que ele se tornou obsoleto/ultrapassado e foi substituído por outro BIP apresentado posteriormente. Neste caso o BIP indica qual é o número do BIP que entrou no seu lugar. O novo BIP também deve indicar no cabeçalho o campo Replace indicando qual é o número do BIP que se tornou obsoleto.

Arquivos Auxiliares

Os BIPs podem ter arquivos auxiliares tais como diagramas. Os arquivos auxiliares devem ser incluídos em um subdiretório para esse BIP ou devem ser nomeados como BIP-XXXX-Y.ext, onde “XXXX” é o número do BIP, “Y” é um número de série (começando em 1) e “ext” é substituído pela extensão real do arquivo (por exemplo, “png”).

Tipos de BIP

Stardards Tracks: Este tipo de BIP é aquele que introduz alterações que afetam a maioria ou todas as implementações do Bitcoin. São os casos de alterações no protocolo do Bitcoin, nas regras de validação de blocos ou transações ou qualquer alteração ou inclusão que afete a interoperabilidade de aplicativos que usam Bitcoin. Existem duas partes essenciais que compõe um BIP deste tipo, uma é a apresentação do projeto (design) e a outra parte é a implementação de referência (codificação de teste).

Informational: São BIP’s que descrevem problemas no projeto do Bitcoin, fornecem diretrizes ou informações gerais para a comunidade sem propor novos recursos. Não representam nem exigem consenso ou recomendação obrigatória e podem ser ignorados.

Process: São BIP’s que propõem mudanças em algum processo em outras áreas do protocolo do Bitcoin. As alterações que pretendem fazer alterações no código do Bitcoin são classificadas como Standards Tracks e os BIP’s que não se enquadram nesta categoria entram na categoria de Process. Não é obrigatório, mas pode ser necessário alcançar o consenso da comunidade e ao contrário do BIP Informational geralmente não devem ser ignorados. Um exemplo desse tipo de BIP pode ser uma proposta para mudança no ambiente usado no desenvolvimento do Bitcoin ou em alguma ferramenta que está sendo usada.

CAMPO STATUS

Especificação

A sequência típica de status que um BIP poderá ser enquadrado são os seguintes:


Imagem printada em 09/02/2022 com palavras substituídas para português de: bips/bip-0002.mediawiki at master · bitcoin/bips · GitHub

O autor da proposta pode alterar o status do seu BIP entre os seguintes estágios: Rascunho, Adiado ou Retirado. Se o editor perceber que algum BIP não está tendo nenhum progresso poderá alterar o status para Adiado.

Um BIP avançará para o status de Proposta somente quando o autor considerar que ele está pronto, tem uma implementação em funcionamento (quando for aplicável) e a comunidade demonstrou interesse em avançar com a implementação do que está sendo proposto naquele BIP.

Qualquer pessoa pode solicitar a alteração do status de um BIP classificado como Rascunho ou Proposta para a situação de Rejeitado se constatar que determinado BIP não teve nenhum progresso nos últimos três anos. Um BIP que tenha sido movido para o status de Rejeitado poderá voltar para a situação de Rascunho se alguém apresentar uma defesa consistente contra as críticas que foram feitas à proposta e até mesmo ter seu status alterado para Proposta se esta defesa atender aos critérios exigidos para o andamento de um BIP.

Um BIP atingirá o status Final (finalizado) apenas quando critérios específicos que demonstrem a viabilidade da sua adoção no mundo real (em produção). A mudança que será introduzida pela finalização de um BIP deverá ser objetivamente verificável e/ou discutida previamente na lista de desenvolvedores do Bitcoin.

Podem ocorrer situações em que um BIP finalizado perca relevância. Neste caso seu status poderá ser alterado para Substituído ou Obsoleto (equivale a ser Substituído). Esse processo também deve ser objetivamente verificável e/ou discutido. (obs: quem já lidou com projetos que me perdoe pela simplificação. OVI - Indicador objetivamente verificável significa que os dados ou indicadores apresentados na proposta são mensuráveis. Pessoas diferentes que tenham acesso aos indicadores deverão chegar às mesmas conclusões sobre a viabilidade do projeto).

No caso exclusivamente de BIP’s do tipo Process existe a possibilidade de um status ser alterado de Rascunho diretamente para Final quando ele atinge consenso numa lista de discussão. É o que pode acontecer se uma proposta (BIP) estiver disponível para discussão na lista de desenvolvedores por um prazo mínimo de um mês e neste prazo não surgir nenhuma objeção fundamentada. Se forem apresentadas objeções de natureza obstrutiva ou sem correlação com a proposta elas poderão ser ignoradas/anuladas desde que estas circunstâncias sejam devidamente claras através de um acordo geral, uma espécie de consenso sobre a questão.

Progressão para o status Final

Todo BIP que resulta num soft-fork [15] dependerá de uma votação (consenso) da maioria dos mineradores. Esta sinalização favorável deverá ser registrada num bloco minerado (por exemplo usando o BIP 009 que implementou novas regras de consenso para cada soft-fork). Além disso poderão ser estabelecidos requisitos adicionais para a implementação de um BIP que resulta num sof-fork. Devido a possibilidade deste tipo de implementação afetar a rotina dos mineradores recomenda-se expressamente que no próprio BIP se estabeleça que cerca de 95% dos mineradores sejam favoráveis, a não ser que seja apresentada uma justificativa para a definição de um parâmetro abaixo desse limite. Se a mudança indicar que há possibilidade de ocorrência de um hard-fork por causa da adoção de um BIP que por exemplo muda o algoritmo da prova de trabalho o BIP que implementa um sof-fork não se tornará Final enquanto este hard-fork tiver apoio majoritário dos mineradores (se os mineradores não gostarem de uma implementação e decidirem não adotar a implementação esta decisão pode gerar uma divisão na rede, uma funcionando com a nova implementação e a outra corrente funcionando sem a nova implementação, ou ficará pendente durante três meses).

Nota .: no BIP 002 (no original) consta o seguinte trecho neste tópico: “… especially in light of delegated voting (mining pools)”. Delegação de voto indica que um grupo entrega para um representante a condição de votar em nome do grupo. Pool de mineração aparece entre parêntese e com base nisso deduzo que os votos dos mineradores que aderem a um pool de mineração que teoricamente também teriam o direito de votar são delegados ao minerador líder. No caso em que os mineradores devem sinalizar a sua adesão ou não a um BIP que requer a manifestação deles num bloco minerado deduzo que todos os mineradores de um pool incluem o voto (decisão do pool) no bloco que estão minerando durante o período de votação. Esta é a forma que se usa para registrar de forma definitiva a adesão (voto) dos mineradores quando esta manifestação é necessária, como no caso dos BIPs que geram soft-forks. Também deduzo que a decisão quanto a direção do voto (adesão ou não) é feita previamente entre os mineradores do pool e teoricamente todos os mineradores do pool devem seguir a escolha da maioria. Os que não concordarem podem se desligar do pool. Em todo caso o minerador líder de um pool tem muita influência e costuma exercer a sua liderança levando o pool na direção que ele quer.

Um BIP que gera um hard-fork vai requerer a adesão de todo a economia envolvido com Bitcoin, principalmente dos agentes que vendem bens e serviços em troca de pagamentos com bitcoins. E por consequência também vai requerer a adesão dos detentores de bitcoins que eventualmente tenham intenção de gastar/consumir ou usar/trocar por outros moedas considerando que esse gasto ou uso será diferente no caso de um hard-fork. O hard-fork não poderá ser implementado com base numa grande ou supermaioria a não ser que ocorra literalmente a imposição do hard-fork obrigando a “aceitação” por parte da minoria que discorda (a viabilidade ou não desse tipo de iniciativa não faz parte do escopo do BIP 002).

Os BIP’s que tratam de questões ou serviços relacionadas a rede P2P devem ser avaliados e adotados por pelo menos 1% dos NÓS da rede Bitcoin pelo prazo mínimo de um mês.

Os BIP’s que envolvem uso da arquitetura RPC/API [16] e demais aplicativos devem ser implementados por pelo menos dois aplicativos de software independentes e compatíveis.

Os desenvolvedores de softwares estão convidados a publicar resumos sobre os BIP’s que seu programa suporta para auxiliar na verificação de alterações de status. Na época em que o BIP foi feito o autor incluiu dois links a título de exemplo (obs.: tem o link no texto original caso queira checar) [5].

Os critérios expostos neste documento são considerados como formas objetivas de observar a adoção de fato de um BIP. Se um BIP vier a ser implementado mesmo que não atenda a um ou mais critérios descritos neste BIP seu status deverá ser atualizado para Final/Ativo. O descumprimento de um ou mais critérios deste BIP não deve ser usado como argumento para se opor ou rejeitar um BIP.

JUSTIFICATIVA

Esta etapa é feita sob o formato ou no estilo de perguntas e respostas (FAQ). As respostas abaixo são baseadas na motivação que existiu para a elaboração do BIP 002 em substituição ao BIP 001. No caso de outras propostas as respostas devem se ater ao conteúdo ou objetivo proposto pelo autor. No original as perguntas não estão numeradas, mas vou enumerar por aqui:

1 - Porque esta implementação/atualização/correção é necessária?

  • O BIP 001 definiu critérios ambíguos para o campo status dos BIPs gerando confusão. Muitos BIPs que eram importantes para o dia a dia foram mantidos no status de Rascunho ou Proposto por mais tempo do que deveriam ter sido deixados. Ao propor o uso de critérios objetivos para avaliar a progressão dos BIP’s esta proposta tem o objetivo de fazer com que o status dos BIPs seja mantido atualizado e de forma mais precisa ou exata/justa.

2 - Como toda a economia do Bitcoin é definido/visto por pessoas que vendem bens e serviços e por seus detentores/possuidores?

  • Para que o bitcoin funcione como moeda ele deve ser aceito como um meio de pagamento. Bitcoins não terão valor se você não puder adquirir nada em troca deles. Todos aqueles que aceitam pagamentos em bitcoins exigem que exista um conjunto específico de regras de consenso e os bitcoins funcionam de fato sob um conjunto de regras, essa é situação atual. Se essas regras de consenso forem alteradas/ampliadas (como na ocorrência de um hard-fork) os comerciantes e prestadores de serviço terão que aceitar pagamentos em bitcoins feitos sob o novo conjunto de regras ou acabarão rejeitando os bitcoins como um meio válido de pagamento. Os portadores de bitcoins são importantes na medida em que são eles que escolhem os comerciantes e prestadores de serviços onde irão gastar seus bitcoins. Se esses detentores decidirem vender seus bitcoins sob determinada regra de consenso ou sob uma nova regra de consenso inundarão o mercado com seus bitcoins e o preço cairá.

3 - Porque (ver print abaixo) não são considerados agentes econômicos?

  • Algumas entidades podem, até certo ponto estarem envolvidas na oferta de bens e/ou serviços recebendo bitcoins em troca, mas não a ponto de estarem envolvidas efetivamente no sistema econômico do Bitcoin (não estão envolvidos na capacidade de (ver print abaixo).
  • Os mineradores não estão incluídos no sistema econômico do Bitcoin porque eles dependem apenas da atuação dos outros usuários comprando ou vendendo produtos e o resultado do seu trabalho de mineração (bloco) não tem valor econômico. Portanto cabe a eles aceitarem a direção escolhida por todos os demais agentes econômicos do Bitcoin sobre as regras de consenso. Transcrevo este trecho no original: “Therefore, they must accept everyone else’s direction in deciding the consensus rules.”
  • As corretoras não estão incluídos no sistema econômico do Bitcoin porque eles apenas fornecem serviços de conexão entre os comerciantes e prestadores de serviços e os respectivos usuários que fazem transações. Mesmo que todas as corretoras deixassem de existir ou intermediar bitcoins os comerciantes e prestadores de serviços poderiam negociar diretamente ou criando novas corretoras.
  • Os desenvolvedores não estão incluídos no sistema econômico do Bitcoin porque cabe a eles apenas escreverem os códigos que poderão ser aceitos/usados ou não pelos outros.
    Código que a pág não aceita

*(Obs.: deduzo que o código (ver o print acima) tem a ver com (ou faz algum tipo de referência) a algum tipo de tag ou comando usado em programação.

4 - Mas, eles (mineradores, corretoras e desenvolvedores) tem um papel importante e investiram muito nas suas atribuições relacionadas ao Bitcoin! Eles não deveriam ser incluídos num processo de tomada de decisão tão importante?

  • Este BIP não tem intenção de estabelecer como deve ser o processo de tomada de decisão. Aceitar essa condição, de alguma forma, seria uma forma de forçar os outros a usá-lo. O sistema de recebimento, discussão e deliberação de propostas batizado de BIP não pretende ser uma espécie de “governança” forçada do Bitcoin. Seu objetivo é meramente de fornecer um repositório colaborativo onde é possível propor e incluir informações sobre padrões/processos que as pessoas poderão adotar voluntariamente ou não. Este BIP (n.º 002) apenas pretende alcançar a melhor forma de refletir da forma mais precisa possível a situação do campo “status” se esforçando para refletir a realidade “como as coisas realmente são”, em vez de tentar mostrar “como deveriam ser”.

5 - E se um único comerciante (possuidor/investidor) tentar bloquear um hard-fork?

  • Este BIP aborda apenas a progressão do campo status do BIP, não tem efeitos sobre a implantação de um hard-fork (ou de qualquer outra alteração) em si.
  • Independente disso, um lojista ou prestador de serviços não poderá operar no vácuo, se ele começar a agir isoladamente logo terá que deixar de vender ou prestar serviços em troca de pagamentos em bitcoins porque ficará cada vez mais difícil encontrar pessoas dispostas a fazer transações que sejam processadas e incluídas na corrente anterior/antiga do Blockchain. (obs.: na prática essa situação pode acontecer pelo menos a curto prazo, como no caso do Ethereum que já teve duas correntes operando após um hard-fork e do próprio Bitcoin que já sofreu algumas bifurcações gerando novas correntes que operam até hoje). Se estes comerciantes ou prestadores de serviços deixarem de aceitar bitcoins da nova corrente de blocos (Blockchain) que nasceu a partir de um hard-fork decidido pela maioria deixará de atender aos critérios estabelecidos neste BIP que permitem a sua participação no processo tornando seu veto sem valor.

6 - E no caso de um pequeno número de comerciantes e/ou prestadores de serviços (talvez apenas dois) que negociam produtos entre eles?

  • Tudo indica que neste cenário o hard-fork falhou e o Bitcoin anterior (corrente de blocos antiga) se mantém vivo e operando.

7 - Como um acordo comercial (no original é acordo econômico) pode vetar um soft-fork?

  • Os mineradores devem seguir as regras de consenso DMMS (dynamic membership multi-party signature) para criar o cabeçalho de cada bloco (blockheader) que no caso do Bitcoin é baseado no algoritmo de prova de trabalho (PoW - Proof of Work) que pode vir a ser modificado por meio de um hard-fork. Se um grupo de mineradores optar por um soft-fork (porque não concordam como hard-fork) essa decisão não terá importância porque o sistema econômico do Bitcoin poderá substituí-los por outro grupo de possíveis mineradores que são contrários ao soft-fork.

8 - O que acontece se o sistema econômico do Bitcoin não aderir a um soft-fork controverso por mais de três meses?

  • Neste caso o soft-fork controverso mudará seu status de Final (pronto para implementação) para Substituído para refletir a natureza do hard-fork no lugar do soft-fork anterior. (obs.: sobre esta questão ver o primeiro parágrafo do item Progressão Para o Status Final que trata desta questão sobre um soft-fork acabar gerando um hard-fork).

9 - Qual é a porcentagem ideal de NÓS que devem ser ouvidos quando um BIP propõe alterações na rede P2P?

  • Neste momento (2016) não existe um percentual fixado que acaba sendo definido de forma bastante arbitrária. Numa varredura aleatória feita entre outros pares da rede procurando pela existência de pelo menos um (outro) par da rede operando com a nova implementação seria necessário encontrar pelo menos 13% adotando a nova extensão e quanto mais prolongado for a busca maiores serão as chances de sucesso. Na realização desta busca por outros pares da rede que já adotaram a nova extensão pode ser usado o recurso service bits. (obs.: o service bits é uma espécie de identificação auxiliar de um NÓ da rede. No caso da implementação do BIP 141 – SegWit - Segregated Witness os NÓS que tinham adotado essa implementação se identificavam na rede como NODE_SEGWIT indicando que estes NÓS poderiam receber blocos e transações SegWit e os NÓS que não tinham essa identificação indicavam que não estavam aptos a receber e/ou propagar transações e blocos SegWit).

10 - Porque é necessário que pelos menos dois projetos de software adotem ou atualizem seus aplicativos e/ou a arquitetura API/RPC antes de serem classificados para o status Final?

  • Se ocorrer apenas uma implementação de uma nova especificação/alteração implementada por um BIP não haverá outro programa/aplicativo fazendo interface com essa implementação, tornando seu uso desnecessário. Se pelo menos duas implementações forem realizadas com base nas alterações introduzidas pelo BIP já será possível avaliar a padronização entre eles e uma eventual coordenação.

11 - E se for proposto um BIP que só faça sentido para um único projeto específico?

  • O sistema de implementação através de BIP existe para padronização de projetos independentes. Se algo afeta apenas um projeto a alteração deve ser feita no próprio projeto afetado e nunca deve ser feito via proposta de um BIP.

COMENTÁRIOS

Especificação

Cada BIP deve conter no seu preâmbulo um link direcionando para o site público wiki do github com um resumo dos comentários. Os revisores do BIP que se considerarem qualificados devem postar seus próprios comentários neste. O conteúdo da página deve ser de natureza final e o comentário deve se ater aos BIPs que já tenham sido concluídos. Se o BIP ainda não foi concluído e o revisor tem algo a dizer deve enviá-lo para o tópico relativo à questão que está sendo tratado no BIP para a lista de discussão dos desenvolvedores. Isso vai permitir que o(s) autor(es) possam avaliar e resolver quaisquer preocupações ou problemas apontados pelo revisor.


Imagem printada em 16/02/2022 com partes destacadas pelo autor e retirado de: Home · bitcoin/bips Wiki · GitHub

A exposição ou divulgação de um BIP fora da comunidade de desenvolvedores durante o fluxo percorrido por cada BIP não é igual. Uns podem se destacar mais e outros podem ficar esquecidos e pendentes sem conclusão. No caso de revisões críticas e para evitar que este tipo de problema passe despercebido durante o período em que um BIP está em trâmite os revisores podem, a seu critério, postar sua revisão diretamente no site de comentários desde que este comentário já tenha sido publicado anteriormente na lista de discussão dos desenvolvedores. Além disso o revisor deve ter em mente que seu comentário deverá ser removido no final do processo ou revisado para adequá-lo ou ajustá-lo, se for o caso. Os ajustes devem ser feitos diretamente no próprio comentário com a consequente atualização da data/hora. Após o tramite final do processo de um BIP as revisões críticas que tenham sido publicadas antes desta etapa podem ser removidas se não forem aplicáveis e/ou não foram atualizadas em tempo hábil (por exemplo, no prazo de um mês).

O nome da página deve ter o número completo do BIP (exemplo: BIP 0001) e ter a palavra Comentário. Exemplo para incluir um comentário para o BIP 001: Comentário:BIP 0001 (que deverá ser em inglês)

As postagens feitas nesta página exclusiva para comentários devem ter o seguinte formato:

<Sua opinião> –, <Data da postagem, as AAAA-MM-DD>


Imagem printada em 16/02/2022 com partes destacadas pelo autor e retirado de: Comments:BIP 0038 · bitcoin/bips Wiki · GitHub

Além da página pública wiki o autor de um BIP pode optar pela criação de um segundo fórum para discussão/comentários relativos ao BIP. Neste caso o segundo link deve ser postado após o link da página principal de comentários.

Após algum tempo o próprio BIP poderá ser atualizado com um resumo dos comentários. O formato deste resumo deve ser bem sintético e poderá ser escolhido entre os exemplos abaixo, mas este BIP não tem intenção de listar todas as possíveis maneiras de sintetizar ou resumir um comentário podendo ser usado outras frases conforme o caso:

  • Nenhum comentário ainda;
  • Implementação recomendada por unanimidade;
  • Implementação desencorajada por unanimidade;
  • Implementação bastante recomendada e com algumas objeções;
  • Implementação com muitas objeções e com algumas recomendações.

Por exemplo:

Comentários-Resumo: Nenhum comentário ainda.
Comentários – URI: Home · bitcoin/bips Wiki · GitHub
https://some-other-wiki.org/BIP_1_Comments

Esses campos devem ter o cabeçalho “Discussão-Para” conforme definido no BIP (se esse cabeçalho não estiver presente, ele deve ser incluído logo após a posição em que deveria estar presente que geralmente é logo acima do cabeçalho Status).

Para evitar dúvidas: comentários e status são métricas que não tem conexão entre si e não devem servir de parâmetro para julgar um BIP e um não deve influenciar diretamente o outro.

Continua…

1 curtida

JUSTIFICATIVA

Qual é o objetivo do comentário num BIP?

Vários BIP’s foram processados (alcançaram os critérios requeridos para chegar ao status de Final) apesar de serem considerados inoportunos. Alguns chegam a considerar os BIPs como “boas ideias” apenas porque ganharam um número. Devido à baixa barreira de entrada para apresentação de novos BIPs parece aconselhável que os revisores expressem suas opiniões sobre eles (BIPs) de uma forma que seja consumível pelo público em geral sem a necessidade de revisar toda a discussão durante o desenvolvimento.

Os comentários de um BIP serão censurados ou limitado a participantes “especialistas” específicos?

Os participantes devem abster-se livremente de comentar fora da sua área de conhecimento ou de especialização. No entanto, os comentários não devem ser censurados e a participação deve ser aberta ao público.

DIREITOS AUTORAIS (LICENÇA) DOS BIP’S

Especificação

Novos BIP’s devem ser elaborados de acordo com alguns tipos específicos de licença. Cada novo BIP deve indicar pelo menos uma licença aceita (para o contexto dos BIPs) em seu preâmbulo. O cabeçalho Licença no preâmbulo deve ser colocado após o campo Criado (Created) do cabeçalho. Cada licença deve ser referenciada por sua respectiva abreviatura conforme segue abaixo.

Por exemplo, um preâmbulo pode ter o seguinte cabeçalho no campo Licença:

License: BSD-2-Clause
GNU-All-Permissive

Cabeçalho BIP 002
Print retirado em 16/02/2022 de: bips/bip-0002.mediawiki at master · bitcoin/bips · GitHub

No exemplo acima o texto do BIP é totalmente licenciado sob a licença BSD de 2 cláusulas aprovado pela OSI – Open Source Iniciative bem como a licença BGU All-Permissive. Textos sob este tipo de licença podem ser modificados e redistribuídos por qualquer pessoa desde que cumpram os termos de cada licença. Em outras palavras, a lista de licenças de um BIP é do tipo “OU” e não do tipo “E” (obs. Caso tenha ficado alguma dúvida sobre a questão do “OU” e do “E”, considerando que geralmente são usadas duas licenças basta respeitar uma delas não sendo necessário respeitar as duas).

No caso específico do código fonte é possível incluir uma licença específica no texto do BIP. Essa licença deve ser incluída logo após o cabeçalho da licença padrão. Cada licença deve ser referenciada por sua respectiva abreviação.

Por exemplo, um preâmbulo especificando o cabeçalho opcional Licença do Código pode ter a seguinte configuração:

License: BSD-2-Clause
GNU-All-Permissive
License-Code: GPL-2.0+

Neste caso a parte relativa à codificação incluída no BIP não estará disponível sob as licenças BSD ou All Permissive, mas apenas sob os termos da licença GNU General Public License (GPL) versão 2 ou mais recente. O símbolo “+” indica que a licença se refere a versão indicada pelo número ou posterior indicada pelo símbolo “+”. Se a intenção do autor da codificação é licenciar a codificação apenas na versão indicada da licença deve excluir o símbolo “+”. Para enquadrar a codificação em versões posteriores o autor também pode alterar o número (exemplo GPL – 2.0 para GPL – 3.0) removendo o símbolo “+” substituindo por “ou posterior”, se for o caso, pode especificar que aceita apena aquela versão e não aceita outras versões posteriores da licença.

  • License-Code: GPL-2.0 # This refers to GPL v2.0 only, no later license versions are acceptable.
  • License-Code: GPL-2.0+ # This refers to GPL v2.0 or later.
  • License-Code: GPL-3.0 # This refers to GPL v3.0 only, no later license versions are acceptable.
  • License-Code: GPL-3.0+ # This refers to GPL v3.0 or later.

Nos casos em que a indicação da licença do texto ou do código seja muito complicado para ser expresso numa simples lista de alternativas (obs.: relembrando a questão dos “OU” e “E” citados mais acima) a lista pode ser substituída pela palavra Complexo, todavia os detalhes dos termos de licenciamento devem ser fornecidos na seção Direitos Autorais do BIP.

Os BIPs não precisam ser licenciados “exclusivamente” sob as condições recomendadas podendo ser licenciados sob licenças não recomendadas desde que tenham pelo menos uma licença aprovada (obs.: relembrando a questão dos “OU” e “E” citados mais acima). Neste caso, apenas a(s) licença(s) recomendada(s) deve(m) ser listada(s) no(s) cabeçalho(s) Licença e Licença do Código.

Licenças Recomendadas:

  • BSD-2-Clause: OSI-approved BSD 2-clause license
  • BSD-3-Clause: OSI-approved BSD 3-clause license
  • CC0-1.0: Creative Commons CC0 1.0 Universal
  • GNU-All-Permissive: GNU All-Permissive License

Além disso, recomenda-se que o trecho exato do código incluído no BIP seja licenciado duplamente sob os mesmos termos de licença do projeto original que ele pretende modificar (e que já tem alguma licença definida na implementação). Por exemplo, o ideal seria que um código que vai alterar o Bitcoin Core seja licenciado sob os termos da licença do MIT (equivalente a BSD e que também é conhecida como licença X ou Licença X11), e o restante do BIP seja licenciado sob uma das licenças recomendadas acima.

Licenças que não são recomendadas, mas são aceitáveis:

  • Apache-2.0: Apache License, version 2.0
  • BSL-1.0: Boost Software License, version 1.0
  • CC-BY-4.0: Creative Commons Attribution 4.0 International
  • CC-BY-SA-4.0: Creative Commons Attribution-ShareAlike 4.0 International
  • MIT: Expat/MIT/X11 license
  • AGPL-3.0+: GNU Affero General Public License (AGPL), version 3 or newer
  • FDL-1.3: GNU Free Documentation License, version 1.3
  • GPL-2.0+: GNU General Public License (GPL), version 2 or newer
  • LGPL-2.1+: GNU Lesser General Public License (LGPL), version 2.1 or newer

Licenças que NÃO SÃO aceitas (obs.: maiúscula e negrito do autor)

Todas as licenças que não foram citadas explicitamente nas listas acima não são aceitáveis para a apresentação de uma Proposta de Melhoria no Bitcoin (BIP), a não ser que um BIP posterior adicione alguma licença que não consta nas listas acima. Os BIP’s emitidos antes da finalização deste BIP poderão continuar seu processo de avaliação sob outros termos de licença, respeitando o estilo de abreviação abaixo recomendado se não houver outros tipos de licença para serem mencionados.

  • OPL: Open Publication License, version 1.0
  • PD: Released into the public domain

JUSTIFICATIVA

O BIP 1 adotou a OPL – Open Publication License ou liberado para domínio público, isso não foi suficiente?

  • A licença do tipo OPL é considerado obsoleto não sendo considerado um tipo de licença adequado para novas publicações.
  • Muitas pessoas não estão familiarizadas com os termos da licença OPL e podem ter preferência pela “licença” de domínio público em vez de usar licenças com condições que não conhece bem.
  • Os termos de licença OPL permitem que o autor impeça a publicação e a realização de trabalhos derivados, fato que foi considerado bastante inadequado para os padrões do Bitcoin.
  • O domínio público não é universalmente reconhecido como uma ação legítima, por isso é desaconselhável.

Por que é preciso incluir licenças de software?

  • Alguns BIPs, especialmente aqueles relacionados com a camada de consenso [18] (obs.: no caso do Blockchain do Bitcoin esta camada é representada pelo processo de prova de trabalho (PoW – Proof of Work. Camadas de um Blockchain: camada de rede, camada de dados, camada de consenso, camada de infraestrutura e camada de aplicativos). Neste caso o código incluído no BIP pode ter sido desenvolvido sob licença que não integra a lista de licenças recomendadas.

Camadas de um Blockchain
Imagem que não faz parte do BIP 002 e que foi retirada em 09/02/2022 de: A beginner's guide to understanding the layers of blockchain technology


Imagem que não faz parte do BIP 002 e que foi retirada em 16/02/2002 de: bips/bip-0342.mediawiki at master · bitcoin/bips · GitHub

  • Mesmo assim nem todas as licenças de software são aceitáveis para conteúdos incluídos num BIP.

Por que a licença de Domínio Público não é mais aceitável para novos BIP’s?

Em algumas jurisdições a licença de domínio público não é reconhecida como um tipo legal de licença. Essa situação pode simplesmente colocar um BIP sob proteção de direitos autorais locais impedindo a redistribuição ou modificação.

ALTERAÇÕES EM RELAÇÃO AO BIP 001

  • A lista com os tipos de licença aceitáveis foi totalmente refeita incluindo uma ampla variedade de licenças do tipo “abertas” e ao mesmo tempo vedou a escolha de outros tipos de licença problemáticas mais antigas.
  • O status Aceito foi renomeado para Proposto.
  • Uma implementação (de referência) agora é necessária (quando aplicável) antes que um BIP possa prosseguir para o status Proposto.
  • Foi criado um espaço para recebimento de comentários.
  • Foram adicionados no preâmbulo do cabeçalho campos para inclusão do tipo de licença.
  • No BIP 123 foi incluído um cabeçalho de camada [18].
  • Arquivos auxiliares sem conter imagem são permitidos no subdiretório bip-XXXX.
  • É obrigatório incluir o e-mail do(s) autor(es).
  • No cabeçalho o campo histórico de postagens pode ser fornecido como um link que substituirá as datas.
  • O formato markdown não será mais permitido para emissão de BIP’s.
  • O cabeçalho Resolução foi descartado porque não é aplicável a um sistema descentralizado onde não existe uma autoridade para tomar decisões finais.

Veja também

BIP 1: BIP Purpose and Guidelines (Objetivos e Diretrizes/Regras)

BIP 123: BIP Classification (Classificação)

RFC 7282: On Consensus and Humming in the IETF (Sobre Consenso e Ruídos no IETF) [18].

REFERÊNCIAS, FONTES BÁSICAS E COMPLEMENTARES:

[1] – O que é um BIP - Proposta de Melhoria de Bitcoin?

[2] – GitHub - bitcoin/bips: Bitcoin Improvement Proposals

[3] - bips/bip-0141.mediawiki at master · bitcoin/bips · GitHub

[4] - bips/bip-0001.mediawiki at master · bitcoin/bips · GitHub

[5] – bips/bip-0002.mediawiki at master · bitcoin/bips · GitHub

[6] - bips/bip-0032.mediawiki at master · bitcoin/bips · GitHub

[7] - Licenças BSD e GPL – Wikipédia, a enciclopédia livre

[8] - Open Publication License - Wikipedia

[9] - bitcoin-dev Info Page

[10] - GitHub - bitcoin/bips: Bitcoin Improvement Proposals

[11] - Luke Dashjr – Medium

[12] - Manual:O que é o MediaWiki? - MediaWiki

[13] - RFC 822 Message Format | Microsoft Docs

[14] - RFC 2822 - Internet Message Format

[15] - Guia Sobre Hard Forks e Soft Forks | Binance Academy

[16] - E agora, API? REST ou RPC?. Uma tentativa de entender cada… | by Walter Gandarella | Blog do LFDev | Medium

[17] - Licença MIT – Wikipédia, a enciclopédia livre

[18] – https://cointelegraph.com/blockchain-for-beginners/a-beginners-guide-to-understanding-the-layers-of-blockchain-technology

[19] - https://www.ietf.org/

Fim.