Pages:
Author

Topic: [TUTORIAL] Tudo sobre a Segwit - page 2. (Read 492 times)

sr. member
Activity: 476
Merit: 314
March 31, 2018, 06:28:25 PM
#1
Esse tutorial tem o intuito de dar desde as informações mais básicas até algumas mais técnicas.




O que é a Segwit ?

     Explicação simples: É uma "atualização" que teve na rede do bitcoin, abrindo portas para transações mais leves, rápidas e baratas e também possibilitando a implementação de protocolos como a lightning network.
     Explicação mais técnica: É um soft-fork que muda o conceito de tamanho dos blocos, colocando o conceito de 'weight unit' (explicado depois). Possibilitando uma solução temporária para o problema de escalabilidade e o problema da maleabilidade nas transações (explicado depois).



Transações mais rápidas e baratas ?
     A resposta para isso é depende, a criação de transações mais "baratas" só é possível com os novos tipos de endereço (veja abaixo), e mesmo assim, a velocidade para que a sua transação seja confirmada depende de outros fatores, como os mineradores e a mempool (basicamente as transações dos outros que não foram confirmadas).



Novos formatos de endereços

     Atualmente existem 3 formatos:

          Legacy (P2PKH): São os formatos antigos, elas começam com o dígito '1' e se você usar eles você continua como antes, pagando como antes, nada muda pra você (tirando o fato de você estar ultrapassado - então por favor use os novos formatos).
          ex de endereço: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2

          P2SH (nested Segwit): São os melhores para o momento, começam com o digito '3' (lembram as carteiras multisig), com elas você tem a mesma compatibilidade das Legacy, mas com a vantagem de criar transações witness. A economia de taxa gira por volta de 27%. Para usar esse formato nas carteiras, saiba que a maioria já adotou este como padrão - tirando a carteira Electrum, mas para isso existe esse ótimo tutorial em português ensinando.
          ex de endereço: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

           Bech32: Teoricamente são muito melhores que os dois mencionados acima, ela começa com "bc1", os endereços delas tem a vantagem de serem bem legíveis ao ser humano (só tem letra minúscula), o que evita erros de digitação e também permitem o autocompletar das carteiras e um QRcode menor para endereços desse tipo. E o principal: fazem transações witness com uma economia nas taxas bem maior, por volta de 38%. O problema ? quase nenhum software/serviço reconhece isso como um endereço bitcoin, o que traz um grave problema de compatibilidade. (se você deseja usar esse tipo, a carteira Electrum já oferece isso).
          ex de endereço: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq



Por que incentivar o uso ?
     Se você já estiver usando um endereço segwit (P2SH ou bech32), e e você estiver enviando um dinheiro que você recebeu de um outro endereço segwit (segwit->você->outro), então voce terá uma taxa de transação menor do que alguém que está usando um endereço segwit gastando um dinheiro que veio de um endereço legacy (legacy->você->outro). Novamente, se você estiver usando um endereço legacy nada vai mudar, mas se todo mundo usar apenas segwit, as vantagens vão ser maiores.
     Para ver a adoção da segwit na rede do bitcoin existem diversos sites como este, que possui gráficos para ajudar na visualização.



Se você leu até aqui você já tem todas as informações essenciais sobre Segwit, continue a ler somente se você tem curiosidades técnicas sobre como a segwit realmente funciona



O que sao "weight units" ?
     Com a ativação da Segwit, a antiga unidade de medida bytes ficou obsoleta, e foi introduzida as unidades vbytes e weight units, a relação entre elas é de 1 weight unit = 4 vbytes, e em os novos tamanhos dos blocos ficou como 4 milhões de weight units por bloco.



O tamanho do bloco não aumentou ? isso não seria um hard-fork ?
     Não, porque a partir dessa mudança nos blocos, a forma de medir o tamanho das transações também mudou, e nas transações legacy (antigas) o que valia de byte também passou a valer em vbytes, ou seja, uma transação de 300 bytes vale agora 300 vbytes, que na verdade equivale a 300*4=1200 weight units, o que ocupa a mesma porcentagem de espaço nos blocos que antes (na prática, se você entendeu até aqui, 1 byte = 1 vbyte = 4 weight units, mas parece que o pessoal nao gosta de usar essa relação com os bytes). Agora, nas transações criadas usando a Segwit o negocio muda totalmente.



As transações "witness"
     Basicamente, quando voce cria uma transação usando a segwit, o tamanho da transação diminui, mas se você está pensando que é porque elas são totalmente medidas em weight units, você também está errado, o que esses novos endereços conseguem fazer é escrever algumas partes (especificamente relacionadas à assinatura) que normalmente seriam escritos em uma escala de vbytes em weight units, ou seja, partes da transação ficam 4x menor ! e é por isso que geralmente só vemos transações com uma economia de taxas não maior que 50%, mostrando também que é impossível vermos blocos com 4x mais transações (há referencias de que o ganho de capacidade dos blocos chega efetivamente somente aos +60% até +100%).

Nota: Para que o bloco aguente 4x o numero de transações, realmente teria que ser aplicado um hard-fork.



-uma transação legacy em vbytes e em weight units-


-uma transação com segwit em vbytes e em weight units, repare que as partes azuis sao as partes assinatura mencionadas acima-

O problema da maleabilidade das transações
     O problema da maleabilidade nas transações foi um problema que afetou a Mt.Gox em 2013, basicamente era possível alterar a txid de uma transação mesmo sem alterar os seus valores (origem, destinatario, valor) e mesmo assim tornar ela válida. Qual o problema disso ? a exchange criava uma transação com uma txid e o atacante adultera essa transação com um outro txid e também transmite ela, no fim se apenas a transação do atacante se confirmasse, a exchange acabava não descontando o saldo do atacante por olhar apenas a txid gerada por eles. Com a segwit isso acabou.



Parte mais técnica ainda
     Deixar as transações "mais leves" foi justamente o que desencadeou a solução da maleabilidade - para ser mais específico: tudo que a segwit faz é basicamente tirar a parte do ScriptSig (a parte que deixava maleavel, é possivel adicionar coisa inutil lá dentro) da parte principal da transação ( a parte que interfere no hash/txid) , e coloca numa região chamada "witness data", que é mais leve (por isso a economia de espaço mencionada acima), e isso acaba com o problema da maleabilidade etemporariamente do espaço. genial.


-antes e depois da segwit-



Lightning Network
     Com a solução do problema da maleabilidade, já que na lightning network você precisa gerar transações novas com base em transações antigas que não foram transimidas na blockchain, e se houvesse o problema de "dois txid iguais para mesma transação", isso não seria possível (parece que existia até uma solução sem a necessidade da segwit, mas isso tornava tudo muito mais complicado).
      Nota: Só vai ser possivel tirar proveito da LN no futuro quem estiver usando a segwit, endereços legacy simplesmente não funcionarão.



Schnorr Signatures
     Não vou entrar em muitos detalhes, mas ele é uma proposta que pode ser implementada assim como a segwit (mas depende dela), que diminuiria ainda mais o tamanho das transações (principalmente as multisig), além de oferecer mais segurança e privacidade aos usuários.
      Extra: A schnorr signature aperfeiçoa e muito o sistema chamado CoinJoin - e tem um experimento aqui no forum local (administrado por um moderador daqui) para todo mundo que quiser tentar.



Resumindo...
     O uso da segwit reduz drasticamente as taxas de transação, mas mesmo assim precisamos de soluções que resolvam de vez o problema da escalabilidade como a Lightning Network, enquanto devemos usar apenas os recursos que temos, e isso já ajuda a rede como um todo. Seria legal se vocês postarem todas os erros do artigo ou as duvidas sobre segwit nos comentários.


Fontes:
https://en.bitcoin.it/wiki/Segregated_Witness
https://en.bitcoin.it/wiki/Weight_units
https://bitcoincore.org/en/2016/01/26/segwit-benefits/
https://bitcointalksearch.org/topic/types-of-different-bitcoin-transaction-and-their-sizes-2643561
https://en.bitcoin.it/wiki/Address
https://medium.com/@x0100/bitcoin-transactions-malleability-segwit-and-scaling-258af8ed9cbf

Ótimos artigos em português relacionados:
https://bitcointalksearch.org/topic/duvidas-sobre-os-novos-formatos-de-privkeys-em-segwit-do-bitcoin-core-e-electrum-3163161
https://bitcointalksearch.org/topic/como-calcular-a-fee-de-mineracao-manualmente-e-carteiras-que-tem-custom-fees-2474775
https://bitcointalksearch.org/topic/proteja-sua-privacidade-na-rede-3211168
https://bitcointalksearch.org/topic/como-fazer-uma-carteira-segwit-p2sh-na-electrum-3014767
https://bitcointalksearch.org/topic/curiosidades-sobre-a-bip0039-esquema-de-geracao-de-codigos-mnemonicos-3168390
https://bitcointalksearch.org/topic/tutorial-como-criptografar-o-backup-da-sua-carteira-com-bip39-3213889
Pages:
Jump to: