# Testnet

A testnet é a blockchain alternativa do bitcoin. Um ambiente de teste global no qual os desenvolvedores podem obter e gastar satoshis que não têm valor real em uma rede que é muito semelhante à rede regular do bitcoin (também chamada de Mainnet). Isso permite que os desenvolvedores de aplicativos ou outros que queiram realizar testes no bitcoins, façam experiências sem ter que usar bitcoins reais ou se preocupar em quebrar a cadeia principal de bitcoins.
Embora similar, a testNet e a rede regular do bitcoin não são compatíveis, o que significa que você não pode usar bitcoins na testNet e não pode usar moedas da testNet na rede bitcoin. A testnet tem seu próprio conjunto de bitcoins, também conhecido como "testnet coins". Estas moedas não têm valor algum e não podem ser trocadas. No entanto, as moedas podem ser usadas para realizar transações de teste, garantindo que os testes estejam funcionando conforme o esperado.
A razão pela qual o testnet é importante é que os desenvolvedores e outros programadores experimentem novos códigos e soluções. Ao fazer isso, eles não estão “perturbando” a rede principal bitcoin, nem são forçados a usar bitcoins que realmente têm valor. Mais importante, se uma mudança de código proposta fosse dar errado, ela não teria impacto no ecossistema bitcoin principal. Sendo o cenário perfeito para analisar o funcionamento de novas melhorias na rede regular do bitcoin, já que é uma rede muito semelhante, com regras e maneira semelhante de operar. Antes de implantar uma alteração na versão do Mainet, ela é implementada nessa rede e o resultado é observado sem grandes consequências. E também para fazer testes em ferramentas que serão integradas ao bitcoin. Verificando se a ferramenta que irá usar bitcoin realizará as transações e terá capacidade de trabalhar com o código integrado, verificando se o código está totalmente funcional ao trabalhar com bitcoins reais.

## Diferenças entre bitcoin (mainnet) e testnet

* A testnet usa um valor diferente no parâmetro ADDRESSVERSION. Este parâmetro é o que acaba criando endereços diferentes e é por isso que nenhum endereço do testnet funciona no bitcoin. Enquanto bitcoin usa 0x00 na testnet, 0x6F é usado. É algo essencial para que eles possam ser identificados visualmente.
* A rede testnet usa um bloco Gênese diferente da rede bitcoin principal. O bloco Gênesis é o inicio do qual a blockchain começa a ser criada.
* A verificação IsStandard escrita no código bitcoin está desabilitada no testnet, que permite um cenário diferente para experimentar novas transações e novas idéias.
* No início da testnet, ela usa diferentes sementes de DNS.
* Endereços da testnet não começam com “1” ou “3” como no bitcoin, mas por “m” ou “2”.
* O cabeçalho das mensagens do protocolo é 0x0B110907 em vez de 0xF9BEB4D9 usado no bitcoin.
* O programa bitcoin é um nó de uma rede Peer-to-peer e necessita se comunicar com outros nós na rede. Por padrão utiliza a porta 8333 do computador, mas no modo testnet ele usa a porta 18333 para poder operar ambos os modos ao mesmo tempo no mesmo computador.
* A dificuldade mínima de 1.0 no testnet é igual à dificuldade de 0.5 na mainnet. Isto significa que o mainnet-equivalente de qualquer dificuldade testnet é metade da dificuldade na testnet. Além disso, se nenhum bloco for encontrado em 20 minutos, a dificuldade será redefinida automaticamente.
* O programa bitcoin também permite se comunicar com outros programas. Usando a porta para o protocolo RPC. O testnet por padrão usa o 18332, enquanto o bitcoin usa o 8332.

## Gerações da testnet

Atualmente a rede Testnet é a terceira “versão” da rede, que tambem é conhecida como Testnet3. Na primeiro Testnet, no início do bitcoin, algo não esperado aconteceu: suas moedas começaram a tomar valor e começaram a serem usadas para troca por dinheiro real e por bitcoins. Foi então quando se decidiu criar um novo bloco de gênese e nasceu o Testnet2, que tinha outro problema: ele começou a aumentar a complexidade da mineração para níveis que implicavam um custo de mineração. Assim nasceu o Testnet3, que opera desde 2012, que tem a capacidade de reiniciar automaticamente a complexidade da mineração, se necessário. Em 21 de dezembro de 2015, a SegNet foi implantado para testar a proposta de Pieter Wuille de Testemunha Segregada.

## Testnet coins

Apesar de ser uma criptomoeda quase idêntica à bitcoin, como mencionado no inicio, essa moeda não tem valor nenhum. Isto é porque esta moeda é muito fácil de obter. Ela foi criada para que os desenvolvedores tenham um ambiente onde possam realizar experimentos sem danos econômicos. Elas podem ser obtidas de graça por meio de faucets na testnet, que são endereços que fornecem moedas livremente para fins de testes. E podem ser também mineradas com baixo custo computacional. Com a diferença do bitcoin que foi adicionado no Testnet3, o Testnet é projetado de forma que quando um bloco não puder ser extraído devido à sua complexidade, ele vai automaticamente para níveis muito baixos tornando fácil a mineração. A Diferença de dificuldade computacional pode ser observada nos gráficos obtidos de um explorador tanto da Mainnet como da Testnet. Através dos gráficos é possível observar a discrepância do custo computacional entre as redes. Na Testnet o pico da dificuldade de mineração está na faixa dos 60 megabytes e periodicamente é posto para quase 0. Na Mainet da dificuldade de mineração está na faixa dos 5.5 terabytes e tende a aumentar.

## Bloco Gênesis

O Testnet usa um bloco gênesis diferente para a rede principal. A rede de testes Testnet3 foi redefinida com um novo bloco de gênese para a liberação de 0,7 bitcoin.

## Tamanho da blockchain

Como mencionado anteriormente, a testnet tem a blockchain distinta da Mainet. Mas esse registro não tem a atividade frenética do bitcoin. Enquanto o Blockchain do bitcoin já está perto de 182 GB, o testnet tem pouco mais de 19 GB. Como é mostrado no gráfico , o limite de 21 milhões está prestes a ser emitido na testnet, algo que o bitcoin espera para o ano 2140.
A razão para isso é devido à funcionalidade do testnet3 mencionada anteriormente: quando a complexidade aumenta, ela é reiniciada e permite que muitos blocos sejam extraídos em menos tempo, reduzindo muito o tempo médio por bloco. Ou seja, enquanto em bitcoin pode demorar cerca de 1000 minutos para extrair 100 blocos, o testnet leva muito menos, talvez entre 100 e 200 minutos (é apenas uma estimativa observando os gráficos).
E o que se espera quando os 21 milhões forem emitidos, possivelmente, um novo testnet. O testnet4, porque o objetivo é não ter valor para que eles estejam constantemente gerando moedas que permitam testar para melhorar o bitcoin e seu ecossistema.

## Faucets

Os faucets da testnet são diferentes do faucets da mainet. Na testnet os faucets disponibilizam moedas de teste deliberadamente. Uma vez que você tenha usado suas moedas de teste, é um bom gesto devolvê-las para os faucets que as forneceram, para que elas fiquem disponíveis para outros desenvolvedores. Segue alguns exemplos de falcets na testnet:
* UO1 Testnet Faucet
* TP's TestNet Faucet
* nkuttler's Bitcoin Testnet Faucet,
* Mycelium Testnet Wallet for Android with integrated Testnet "faucet" function (Local Trader)
* mempool.co testnet3 Faucet
* Bitcoin Testnet3 faucet
* Bitcoin Testnet Lightning Network Faucet

## RegTest

O software Bitcoin Core também possui em sua configuração padrão uma outra rede chamada RegTest (teste de regressão), que também pode ser iniciada com um parâmetro na linhas de comando > bitcoind -regtest -daemon Bitcoin server starting.
Ele foi adicionado ao Bitcoin Core versão 0.9.0, que foi lançado em março de 2014 e foi criado como um modo de teste alternativo.
Essa rede pode ser usada para criar blockchains com as mesmas características da Testnet, mas apenas entre nós que o usuário desejar. Ou seja, com este modo é possivel criar blockchains privadas que irao operar em um ambiente totalmente controlado.

## Bugs encontrados na testnet

Foi possível fazer uma uma transação na testnet onde o valor de 0,1 BTC é duplicado e gasto duas vezes. O valor de 0,1 BTC é duplicado para gastar 0,099 e pagar uma taxa de 0,101, transformando-o em 0,2 BTC.
Foi descoberto um bugs no software Bitcoin Core que davam aos mineiros a possibilidade de derrubar partes essenciais da infraestrutura do Bitcoin (nós) enviando um bloco 'ruim' para o blockchain.
A rede bitcoin viu a descoberta de um bug que teria permitido uma exploração que poderia ter inflado artificialmente a oferta de criptomoeda. O bug agora foi replicado na testet, mostrando que ele poderia ter sido explorado para mudar a política monetária do Bitcoin como um todo.