A Bitcoin é um projecto open source. Ser um projecto deste tipo tem um significado mais profundo do que simplesmente ser gratuito. Significa que este projecto é desenvolvido por uma comunidade aberta de voluntários. O código original, que está sob uma licença livre, pode ser baixado por qualquer pessoa interessada em fazer parte da comunidade Bitcoin.
No início esta comunidade era apenas Satoshi Nakamoto, mas o número de interessados e contribuidores foi crescendo. Em 2016, o código fonte tinha mais de 400 contribuidores, com cerca de uma dúzia de programadores a trabalhar em full-time, e muitos mais em part-time. Quando Satoshi criou a Bitcoin, o software estava completo e a funcionar antes de ter escrito o paper onde a divulgava. Ele queria ter a certeza que a sua ideia funcionava antes de a publicar.
Essa primeira versão do código, então chamada apenas Bitcoin ou Satoshi Client já sofreu muitas alterações e melhorias. Evoluiu até se tornar no Bitcoin Core que hoje em dia é reconhecido como a implementação de referência do sistema bitcoin. Ou seja, é a referência autoritária de como se deve implementar cada peça da tecnologia. Neste código fonte estão descritas e implementadas todos os componentes da Bitcoin, incluindo as carteiras, as transacções, o motor de validação de blocos e, ainda, um nó completo da rede peer-to-peer da Bitcoin.
A rede peer-to-peer da Bitcoin é composta por nós, mantidos maioritariamente por voluntários e algumas empresas que constroem aplicações para a Bitcoin. Ao manter e operar um nó, o utilizador tem uma visão directa e autoritária sobre a blockchain da Bitcoin e uma cópia local de todas as transacções validadas independentemente pelo seu próprio sistema. Ao manter um nó, o utilizador fica não só independente de quaisquer fontes de terceiros para validar uma transacção como está a contribuir para tornar a rede da Bitcoin mais robusta. Torna-se mais um dos pontos descentralizados da rede e aumenta a dificuldade em derrubar a Bitcoin.
No entanto, são necessários alguns recursos, principalmente, computacionais. Terá que ter um sistema permanentemente ligado e conectado à internet, com 2GB de RAM e, actualmente, mais de 200GB de memória no disco. Com o passar do tempo a memória dedicada à blockchain da Bitcoin irá aumentar proporcionalmente ao número de transacções que terão que ser guardadas. Também a ligação à internet será afectada, pois será consumida alguma largura de banda para transmitir e receber transacções e blocos da Bitcoin.
Apesar de ter que investir todos estes recursos existem milhares de voluntários que mantém os seus nós da rede. Porquê?
Algumas das razões mais comuns para que alguém queira manter um nó são:
- Programadores/empresas que estão a desenvolver aplicações que precisam de confiar num nó para terem acesso à rede e à blockchain. Ter o próprio nó faz com que não tenha que depender de ninguém.
- Programadores/empresas que estão a construir aplicações que necessitam validar transacções, de acordo, com as regras de consenso da rede. Com um nó próprio conseguem eles mesmos validar as transacções.
- Pessoas que queiram apoiar a Bitcoin. Ter um nó torna a rede mais robusta e permite à rede servir mais utilizadores e fazer mais transacções por unidade de tempo.
- Pessoas que não queiram depender de terceiros para processar ou validar transacções. Como referido, com o seu nó ficam independentes para fazer as validar as suas transacções.
No momento em que escrevo este artigo existem cerca de 11 mil nós na rede Bitcoin. Podemos consultar o número de nós no momento, bem como a sua distribuição no globo, através do website Bitnodes.

Na imagem acima, pode ver-se uma representação do que contém o Bitcoin Core e como se relaciona com a rede peer-to-peer (P2P) da Bitcoin e as aplicações que vão funcionar na rede.
Um nó com a implementação completa recebe da rede P2P as transacções que foram efectuadas por outros nós da rede e valida-as independentemente. Receberá também os blocos que tenham sido adicionados durante um período de tempo no qual esteja desligado da rede de forma a ficar actualizado e acompanhar a partir daí a blockchain. Para isso utiliza os procedimentos de descoberta de peers e, posteriormente armazena-os para que possa confiar neles e ligar-se a eles para manter a rede viva e sincronizada. As aplicações externas acedem a nós que contém estas implementações para obter informações sobre transacções e blocos. A caixa RPC representa os procedimentos utilizados pelas aplicações para aceder às informações pretendidas dentro do nó completo.
Dentro do Bitcoin Core, na imagem acima, podemos também ver que estão incluídos todas as transacções e blocos que são validadas pelo nó e posteriormente armazenadas através do motor de armazenamento no local respectivo. A caixa Mempool identifica os dados de transacções que já foram verificadas por nós da rede mas que ainda não foram confirmados. Ou seja, ainda não foram adicionados a um bloco na blockchain. Os headers (cabeçalhos) dos blocos são armazenados como uma forma mais fácil e rápida de aceder ao blocos que estão armazenados na blockchain. A caixa Minerador representa a parte de mineração incluída na implementação completa que valida os blocos e, caso ganhe a recompensa, armazena as moedas, bitcoins, no sítio indicado. Também uma carteira completa está incluída neste código, ainda que não seja o formato mais ágil a utilizar.