darkv0rt3x
|
|
December 13, 2023, 09:35:12 PM Last edit: December 13, 2023, 09:46:29 PM by darkv0rt3x |
|
Eu andei pesquisando e não achei uma resposta a essa questão. Existem muitas especulações nesse tópico, o melhor q eu achei : https://bitcoin.stackexchange.com/questions/8439/why-was-21-million-picked-as-the-number-of-bitcoins-to-be-createdEssa explica da onde vem o número 72 Here's a mathematical explanation: Calculate the number of blocks per 4 year cycle: 6 blocks per hour * 24 hours per day * 365 days per year * 4 years per cycle = 210,240 ~= 210,000 Sum all the block reward sizes: 50 + 25 + 12.5 + 6.25 + 3.125 + ... = 100 Multiply the two: 210,000 * 100 = 21 million. Por conta de um erro de arredondamento, a resposta correta seria a do Drawesome 20,999,999.9769 realmente
Mas nada disso responde, por que.? Achei essa especulação aqui: Wikipedia (Gold):
A total of 174,100 tonnes of gold have been mined in human history, according to GFMS as of 2012. This is roughly equivalent to 5.6 billion troy ounces or, in terms of volume, about 9261 m3, or a cube 21.0 m on a side.
http://en.wikipedia.org/wiki/GoldO total de ouro já minerado pela humanidade seria um cubo 21m de altura. Eu andei pesquisando e não achei uma resposta a essa questão. Existem muitas especulações nesse tópico, o melhor q eu achei : https://bitcoin.stackexchange.com/questions/8439/why-was-21-million-picked-as-the-number-of-bitcoins-to-be-createdEssa explica da onde vem o número 72 Here's a mathematical explanation: Calculate the number of blocks per 4 year cycle: 6 blocks per hour * 24 hours per day * 365 days per year * 4 years per cycle = 210,240 ~= 210,000 Sum all the block reward sizes: 50 + 25 + 12.5 + 6.25 + 3.125 + ... = 100 Multiply the two: 210,000 * 100 = 21 million. Por conta de um erro de arredondamento, a resposta correta seria a do Drawesome 20,999,999.9769 realmente
Mas nada disso responde, por que.? Achei essa especulação aqui: Wikipedia (Gold):
A total of 174,100 tonnes of gold have been mined in human history, according to GFMS as of 2012. This is roughly equivalent to 5.6 billion troy ounces or, in terms of volume, about 9261 m3, or a cube 21.0 m on a side.
http://en.wikipedia.org/wiki/GoldO total de ouro já minerado pela humanidade seria um cubo 21m de altura. Sim, esta explicação é das que reune mais consenso, no entanto, esta explicação deixa uma série de outras questões, na minha opinião. 1 - Porquê o primeiro block subsidy ser 50 Bitcoins? 2 - Porquê uma média de 10 mins por cada bloco? (sim, o parâmetro do ajuste de dificuldade assim o estipula, mas porquê este valor médio de 10 mins? Porque não 20 mins ou 3h) 3 - Porquê ser um "halving" e não um "thirding" (termo inventado agora) 4 - Porquê 210000 blocos? Circula também pela net uma fórmula que traduz o valor total de Bitcoins a serem minerados. No fundo, esta fórmula foi deduzida através do percurso dos blocos mineradoes e dos outros valores hard-coded no código do protocolo! Também há este post: https://medium.com/@k_schellinger/understanding-bitcoins-21-million-limit-310297a7d962
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
Fazu
Member
Offline
Activity: 81
Merit: 16
|
|
December 13, 2023, 11:21:09 PM |
|
Século 21
|
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6321
bitcoindata.science
|
|
December 14, 2023, 01:20:27 PM |
|
2 - Porquê uma média de 10 mins por cada bloco? (sim, o parâmetro do ajuste de dificuldade assim o estipula, mas porquê este valor médio de 10 mins? Porque não 20 mins ou 3h) Porque quando o tempo é muito alto, as transações demoram para ocorrer. Imagine esperar 3 horas numa transação. QUando o tempo é muito curto, tipo 10 segundos, a quantidade de blocos órfãos é muito grande. Blocos orfãos são um desperdício de energia. Eles ocorrem quando dois blocos são minerados ao mesmo tempo, e os nodes por algum motivo seguem um deles e não o outro. Como vale a chain maior, o outro vira orfão e aquele miner fica no prejuízo.
As demais perguntas são todas relativas ao mesma coisa. Ele provavelmente escolheu os 21milhões e depois precisou determinar o Halving, o subsídio por bloco, etc para chegar lá
|
|
|
|
Prancheiro
Member
Offline
Activity: 134
Merit: 89
|
|
December 14, 2023, 02:10:27 PM |
|
Essa dos 4 anos é uma boa pergunta.. será que tem algo relacionado a diversas eleições que ocorrem a cada 4 anos? afinal mudam os políticos, mas a política monetária é sempre a mesma.. pode ter sido uma crítica oculta. Ou será que Satoshi se inspirou em grandes eventos esportivos como a Copa do Mundo e as Olimpíadas? Quanto as outras perguntas, acredito que 1) porque 50 é metade de 100 (50+25+12,5+6,25+[...]=100) e 3) o valor foi arredondado na base do foda-se, respeitando a internet lenta da época.. podia ser 6, 7, 8, 9, 11, 12, 13 minutos.. Haha Excelentes respostas! Sempre pensei muito na questão de mandatos eleitorais. Mas dos eventos esportivos nunca tinha pensado! Porque quando o tempo é muito alto, as transações demoram para ocorrer. Imagine esperar 3 horas numa transação. QUando o tempo é muito curto, tipo 10 segundos, a quantidade de blocos órfãos é muito grande. Blocos orfãos são um desperdício de energia. Eles ocorrem quando dois blocos são minerados ao mesmo tempo, e os nodes por algum motivo seguem um deles e não o outro. Como vale a chain maior, o outro vira orfão e aquele miner fica no prejuízo. Esses 10min é um equilibrio entre tempo aguardando pra confirmar transação e frenquencia com que forks (blocos órfãos) seriam gerados na rede como o bitmover comentou. Mas os 10min especificamente e não 9 ou 11? Talvez por arredondamento e pra ficar mais fácil fazer conta mesmo!
|
|
|
|
darkv0rt3x
|
|
December 15, 2023, 04:08:53 PM Last edit: December 18, 2023, 10:44:24 AM by darkv0rt3x |
|
2 - Porquê uma média de 10 mins por cada bloco? (sim, o parâmetro do ajuste de dificuldade assim o estipula, mas porquê este valor médio de 10 mins? Porque não 20 mins ou 3h) Porque quando o tempo é muito alto, as transações demoram para ocorrer. Imagine esperar 3 horas numa transação. QUando o tempo é muito curto, tipo 10 segundos, a quantidade de blocos órfãos é muito grande. Blocos orfãos são um desperdício de energia. Eles ocorrem quando dois blocos são minerados ao mesmo tempo, e os nodes por algum motivo seguem um deles e não o outro. Como vale a chain maior, o outro vira orfão e aquele miner fica no prejuízo. Mas isso é o ajuste de dificuldade que tenta sempre apontar para esse valor médio de 10 mins. As acções que a rede toma são com o intuito de respeitar esses 10 mins. Ou seja este valor de 10 mins é um valor que faz com que a rede se auto-ajuste! Não sei como explicar o que me vai na cabeça! Quando a rede "vê" que estão a sair blocos muito depressa (<< 10 mins), a rede ajusta a dificuldade para um valor maior (que na verdade é um target menor). Quando os blocos estão a "sair" muito lentos (>> 10 mins), a rede ajusta o valor da dificuldade para um valor mais pequeno (um target maior). Mas se essa é realmente a razão, então a pergunta tem que tomar uma forma ligeiramente diferente que é: Como é que Satoshi chegou à conclusão que o valor para esse tal equilíbrio era de 10 minutos? Até porque se colocarmos causas financeiras em jogo, ainda menos certo é chegar a um valor! E o artigo da infopedia não me parece muito correcto. Por exemplo eles dizem: During the standard mining process, miners attempt to generate new blocks by solving the hash—the hexadecimal number that stores the block's information.
A hash do bloco não é um "número hexadecimal que guarda a informação do bloco". É um número hexadecimal que representa a informação do header do bloco. E esse header contém a seguinte informação: The block header is a 256-bit piece of data that contains the following information:
Version: The current version of the Bitcoin protocol. PrevBlockHash: The hash of the previous block in the blockchain. MerkleRoot: The root hash of the Merkle tree of all transactions in the block. Time: The timestamp of the block. Bits: A 32-bit number that represents the difficulty of mining the block. Nonce: A 32-bit number that is used to adjust the hash of the block until it meets the difficulty requirement.
Ainda sobre o target difficulty, há um detalhe que é contra-intuitivo. O target difficulty é apenas um número e os miners quando calculam a hash do header do bloco e ajustam essa hash com o nonce, até obterem um valor menor que este target difficulty. E este target difficulty é um número com uma determinada quantidade de zeros no início do número. E quanto mais zeros tiver este número, menor é este número e mais difícil é aos miners encontrarem uma hash + nonce a baixo deste número. Suponhamos que o target difficulty é 000009999900000. Se um miner calcular uma hash + nonce e obtiver um valor de 00001000000000, então este bloco não é válido porque o valor encontrado pelo miner é superior ao target difficulty. Quando o target difficulty é aumentado, significa baixar aquele número de 000009999900000 para por exemplo 000000999900000. Este número tem mais um zero no início, logo é mais pequeno que o outro que tem mais um zero no início. Isto só para dizer que aumentar a dificuldade significa diminuir o target difficulty! xD
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6321
bitcoindata.science
|
|
December 15, 2023, 05:52:15 PM |
|
2 - Porquê uma média de 10 mins por cada bloco? (sim, o parâmetro do ajuste de dificuldade assim o estipula, mas porquê este valor médio de 10 mins? Porque não 20 mins ou 3h) Porque quando o tempo é muito alto, as transações demoram para ocorrer. Imagine esperar 3 horas numa transação. QUando o tempo é muito curto, tipo 10 segundos, a quantidade de blocos órfãos é muito grande. Blocos orfãos são um desperdício de energia. Eles ocorrem quando dois blocos são minerados ao mesmo tempo, e os nodes por algum motivo seguem um deles e não o outro. Como vale a chain maior, o outro vira orfão e aquele miner fica no prejuízo. Mas isso é o ajuste de dificuldade que tenta sempre apontar para esse valor médio de 10 mins. As acções que a rede toma são com o intuito de respeitar esses 10 mins. Ou seja este valor de 10 mins é um valor que faz com que a rede se auto-ajuste! Não sei como explicar o que me vai na cabeça! Isso é outro assunto. Os demoram 10 minutos por conta do equilíbrio entre blocos órfãos e conveniência nas transações. O ajuste de dificuldade ocorre para manter esses 10 minutos médios entre blocos, não deixando esse tempo mudar de acordo com I hash rate da rede ... Isto só para dizer que aumentar a dificuldade significa diminuir o target difficulty! xD
Isso ocorre pq os mineradores precisam gerar um hash com os dados do bloco + nonce (variavel) que seja muito pequeno. Quanto menor mais difícil. Eles computam milhares de hash por segundo, grandes até acharem um pequeno o suficiente.
|
|
|
|
darkv0rt3x
|
|
December 18, 2023, 10:32:00 AM |
|
Isso é outro assunto.
Os demoram 10 minutos por conta do equilíbrio entre blocos órfãos e conveniência nas transações.
Mas esse equilíbrio tem que vir matematicamente de algum lado. O que estás a dizer é um sentimento. E sentimentos não podem ser programados como tal no protocolo. O ajuste de dificuldade ocorre para manter esses 10 minutos médios entre blocos, não deixando esse tempo mudar de acordo com I hash rate da rede ...
Estás a repetir o que eu disse. Isto só para dizer que aumentar a dificuldade significa diminuir o target difficulty! xD
Isso ocorre pq os mineradores precisam gerar um hash com os dados do bloco + nonce (variavel) que seja muito pequeno. Também disse precisamente o mesmo que estás a dizer! Quanto menor mais difícil. Eles computam milhares de hash por segundo, grandes até acharem um pequeno o suficiente.
Novamente a repetir o que eu disse no meu post! lol Mas nada disto explica a origem dos 10 minutos. Nem o que tu falas da conveniência das transacções e dos blocos orfãos!
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6321
bitcoindata.science
|
|
December 18, 2023, 02:02:54 PM |
|
Mas nada disto explica a origem dos 10 minutos. Nem o que tu falas da conveniência das transacções e dos blocos orfãos!
Bem, o que define é exatamente isso. Talvez você não tenha entendido a questão dos blocos orfãos. Se voce pesquisar, vai encontrar sempre essa resposta. https://bitcoin.stackexchange.com/questions/1863/why-was-the-target-block-time-chosen-to-be-10-minutes10 minute blocks is simply a compromise. Shorter block time: PRO - Faster 1 confirmation time (to protect from 0-confirm double spend) PRO - Less payout variance for miners (less reliance on large pools) CON - Requires increased bandwidth (inter node communication) CON - More forks, longer forks, and longer re-org time CON - A greater portion of the raw hashpower is wasted, resulting in lower effective security. With a longer block interval target of longer than 10 minutes, the pros and cons would be reversed.
|
|
|
|
joker_josue
Legendary
Offline
Activity: 1848
Merit: 5087
**In BTC since 2013**
|
|
December 18, 2023, 02:07:20 PM |
|
Isso é outro assunto.
Os demoram 10 minutos por conta do equilíbrio entre blocos órfãos e conveniência nas transações.
Mas esse equilíbrio tem que vir matematicamente de algum lado. O que estás a dizer é um sentimento. E sentimentos não podem ser programados como tal no protocolo. Bem, eu diria que isso é um calculo fácil de fazer, com base na velocidade da ligação a internet. A maioria dos blocos tem o tamanho 1.6~1.8MB. Se calcularmos a velocidade de ligação internet viável mais baixa, que é de 28,8 kbit/s (sim eu ainda usei a net nesta velocidade e ainda hoje é existe), vamos ver que demora +/- 7/8 minutos para fazer o download. Como a velocidade não é constante, uma margem de 2 minutos deve ser suficiente, para tudo se manter ao mesmo ritmo, sem afetar o registo do blockchain em todos os nodes. Além de que era mais fácil fazer contas com 10 minutos, do que com 8 minutos.
|
|
|
|
darkv0rt3x
|
|
December 18, 2023, 02:07:57 PM |
|
Mas nada disto explica a origem dos 10 minutos. Nem o que tu falas da conveniência das transacções e dos blocos orfãos!
Bem, o que define é exatamente isso. Talvez você não tenha entendido a questão dos blocos orfãos. Se voce pesquisar, vai encontrar sempre essa resposta. https://bitcoin.stackexchange.com/questions/1863/why-was-the-target-block-time-chosen-to-be-10-minutes10 minute blocks is simply a compromise. Shorter block time: PRO - Faster 1 confirmation time (to protect from 0-confirm double spend) PRO - Less payout variance for miners (less reliance on large pools) CON - Requires increased bandwidth (inter node communication) CON - More forks, longer forks, and longer re-org time CON - A greater portion of the raw hashpower is wasted, resulting in lower effective security. With a longer block interval target of longer than 10 minutes, the pros and cons would be reversed. Eu já percebi. Mas isso é uma explicação teórica e superficial... Se há um valor médio de 10 minutos, tem que haver linhas de código que executem acções que levem a rede a tentar cumprir com esses 10 minutos. E não são certamente essas explicações teóricas que estão programadas em linhas de código que definem esses 10 mins. O que eu gostava de ver / saber, são essas linhas de código que obrigam a rede a convergir para esses 10 mins. Essa era a explicação absoluta que podiam dar! Isso é outro assunto.
Os demoram 10 minutos por conta do equilíbrio entre blocos órfãos e conveniência nas transações.
Mas esse equilíbrio tem que vir matematicamente de algum lado. O que estás a dizer é um sentimento. E sentimentos não podem ser programados como tal no protocolo. Bem, eu diria que isso é um calculo fácil de fazer, com base na velocidade da ligação a internet. A maioria dos blocos tem o tamanho 1.6~1.8MB. Se calcularmos a velocidade de ligação internet viável mais baixa, que é de 28,8 kbit/s (sim eu ainda usei a net nesta velocidade e ainda hoje é existe), vamos ver que demora +/- 7/8 minutos para fazer o download. Como a velocidade não é constante, uma margem de 2 minutos deve ser suficiente, para tudo se manter ao mesmo ritmo, sem afetar o registo do blockchain em todos os nodes. Além de que era mais fácil fazer contas com 10 minutos, do que com 8 minutos. Daria mais crédito a uma explicação destas. Faz muito mais sentido ainda que já em 2009 essa ligação fosse obsoleta. E relativamente a contas, aí discordo. Porque as contas são feitas por um computador. E para ele, é igual fazer contas com 10 ou com 8 (tecnicamente pode ser mais complicado, sim, mas nem vou por aí).
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6321
bitcoindata.science
|
|
December 18, 2023, 02:33:13 PM |
|
Eu já percebi. Mas isso é uma explicação teórica e superficial... Se há um valor médio de 10 minutos, tem que haver linhas de código que executem acções que levem a rede a tentar cumprir com esses 10 minutos. E não são certamente essas explicações teóricas que estão programadas em linhas de código que definem esses 10 mins.
O que eu gostava de ver / saber, são essas linhas de código que obrigam a rede a convergir para esses 10 mins. Essa era a explicação absoluta que podiam dar!
Achei que voce queria saber o por que do motivo de escreverem essas linhas de codigo. O motivo de ser 10 minutos é pelo equilibrio entre blocos orfãos e velocidade de transação. Uma vez que isso foi definido, a pessoa vai lá e escreve o código (a parte mais simples do processo). As linhas de código são a parte mais simples, a implementação da ideia... O que obriga a rede a convergir para os 10min sao justamente os ajustes de dificuldade.
|
|
|
|
darkv0rt3x
|
|
December 18, 2023, 02:47:49 PM |
|
O que obriga a rede a convergir para os 10min sao justamente os ajustes de dificuldade.
E não foi precisamente isto que eu disse desde início? Acho que estamos a andar em círculos entre explicações teóricas e superficiais e explicações mais ou menos técnicas... Agora, a "ultimate explanation", a meu ver, teria que ser mais técnica ao ponto de se dizer algo deste génro: "As linhas de código de X a Y definem o valor A, que depois em conjunto com os valores B e C nas linhas de código de W a Z definem os tão falados 10 mins!"...
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6321
bitcoindata.science
|
|
December 18, 2023, 07:08:07 PM Merited by darkv0rt3x (2) |
|
O que obriga a rede a convergir para os 10min sao justamente os ajustes de dificuldade.
E não foi precisamente isto que eu disse desde início? Acho que estamos a andar em círculos entre explicações teóricas e superficiais e explicações mais ou menos técnicas... Agora, a "ultimate explanation", a meu ver, teria que ser mais técnica ao ponto de se dizer algo deste génro: "As linhas de código de X a Y definem o valor A, que depois em conjunto com os valores B e C nas linhas de código de W a Z definem os tão falados 10 mins!"... Olhei no mastering bitcoin e achei o código que define isso. Isso é definido no arquivo pow.cpp https://github.com/bitcoin/bitcoin/blob/master/src/pow.cppThe equation can be summarized as: New Target = Old Target * (Actual Time of Last 2016 Blocks / 20160 minutes)
Retargeting the Proof-of-Work—CalculateNextWorkRequired() in pow.cpp shows the code used in the Bitcoin Core client. Example 13. Retargeting the Proof-of-Work—CalculateNextWorkRequired() in pow.cpp // Limit adjustment step int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime; LogPrintf(" nActualTimespan = %d before bounds\n", nActualTimespan); if (nActualTimespan < params.nPowTargetTimespan/4) nActualTimespan = params.nPowTargetTimespan/4; if (nActualTimespan > params.nPowTargetTimespan*4) nActualTimespan = params.nPowTargetTimespan*4;
// Retarget const arith_uint256 bnPowLimit = UintToArith256(params.powLimit); arith_uint256 bnNew; arith_uint256 bnOld; bnNew.SetCompact(pindexLast->nBits); bnOld = bnNew; bnNew *= nActualTimespan; bnNew /= params.nPowTargetTimespan;
if (bnNew > bnPowLimit) bnNew = bnPowLimit; https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch10.asciidoc#retarget_code
|
|
|
|
joker_josue
Legendary
Offline
Activity: 1848
Merit: 5087
**In BTC since 2013**
|
|
December 18, 2023, 08:31:26 PM |
|
Daria mais crédito a uma explicação destas. Faz muito mais sentido ainda que já em 2009 essa ligação fosse obsoleta. E relativamente a contas, aí discordo. Porque as contas são feitas por um computador. E para ele, é igual fazer contas com 10 ou com 8 (tecnicamente pode ser mais complicado, sim, mas nem vou por aí).
Quando falei em contas, não foi o ato em si de somar/multiplicar/subtrair/dividir. Claro que para um computador isso é indiferente. Mas, no sentido global, valor total, ciclos de halving e coisas do gênero. No caso de em 2009 essa ligação ser obsoleta é muito subjetiva. Se a ideia é o Bitcoin ser o mais independente possível, então nada melhor de desenvolver algo que pode ser usado por qualquer pessoa no mundo, não importa o tipo de ligação a internet que tenha. Essa forma de ligação a internet existe até hoje, e pode ser utilizada. Só precisas de um PC com modem e uma linha telefônica convencional. Acredita, é mais fácil perderes a tua ligação fibra, do que perderes a comunicação via linha telefônica convencional. Por exemplo, se ocorrer um apagão no teu bairro, ficas sem comunicações fibra, mas se tiveres uma linha telefônica convencional, muito provavelmente ela continua a funcionar. Então, basta ligares o PC e usar o bitcoin.
|
|
|
|
darkv0rt3x
|
|
December 19, 2023, 10:23:26 AM |
|
Daria mais crédito a uma explicação destas. Faz muito mais sentido ainda que já em 2009 essa ligação fosse obsoleta. E relativamente a contas, aí discordo. Porque as contas são feitas por um computador. E para ele, é igual fazer contas com 10 ou com 8 (tecnicamente pode ser mais complicado, sim, mas nem vou por aí).
Quando falei em contas, não foi o ato em si de somar/multiplicar/subtrair/dividir. Claro que para um computador isso é indiferente. Mas, no sentido global, valor total, ciclos de halving e coisas do gênero. No caso de em 2009 essa ligação ser obsoleta é muito subjetiva. Se a ideia é o Bitcoin ser o mais independente possível, então nada melhor de desenvolver algo que pode ser usado por qualquer pessoa no mundo, não importa o tipo de ligação a internet que tenha. Essa forma de ligação a internet existe até hoje, e pode ser utilizada. Só precisas de um PC com modem e uma linha telefônica convencional. Acredita, é mais fácil perderes a tua ligação fibra, do que perderes a comunicação via linha telefônica convencional. Por exemplo, se ocorrer um apagão no teu bairro, ficas sem comunicações fibra, mas se tiveres uma linha telefônica convencional, muito provavelmente ela continua a funcionar. Então, basta ligares o PC e usar o bitcoin. Eu sie, eu percebi. O que quis dizer é que o motivo que deste, faria até mais sentido para mim como razão para os 10 mins em 2009. O facto de a internet ser muito mais lenta que hoje, obrigava a pensar nesse aspecto do download de dados. Eu recordo-me de quando comecei a fazer download de ficheiros MP3, que eram ficheiros com pouco mais de 3MB, e eu demorava seguramente 20 a 35 minutos a fazer o download e ainda por cima com limite de download por mês!
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
|