Author

Topic: Formação do bloco (Read 2980 times)

sr. member
Activity: 375
Merit: 254
March 12, 2014, 10:17:44 AM
#21
Agradeço muito vocês pela generosidade. Muitas duvidas foram sanadas... Qualquer duvida a mais eu volto a postar!!  Wink
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
March 12, 2014, 09:42:59 AM
#20
Correto, girino. Mas note que a merkle root sempre será diferente, pois cada pool ou minerador solo tem a sua própria transação coinbase (enviando as bitcoins recém-criadas e as das taxas para um endereço que ele próprio controla).

Assim, é certo que cada pool usa nonces de maneira completamente independente aos nonces dos outros pools. Mesmo que dois pools usem o mesmo conjunto de nonces, os dois conjuntos de hashes resultantes para o bloco serão totalmente diferentes entre si. É isso que garante que um minerador malicioso não consiga reutilizar o "nonce vencedor" encontrado por outro minerador, alegando que foi ele (o malicioso) quem minerou o último bloco. Ao mudar a transação coinbase para um endereço seu, é alterada a merkle root, e aquele mesmo nonce deixa de ser o vencedor, pois o hash do bloco deixará de ser menor do que o alvo.

Hum, não tinha me tocado deste detalhe. Obrigado pela correção!
newbie
Activity: 4
Merit: 0
March 12, 2014, 09:14:13 AM
#19
dá uma olhada em https://en.bitcoin.it/wiki/Protocol_specification#Block_Headers

a hash a ser gerada para criar um bloco é a hash dessa estrutura. Existem ali vários pontos de não determinismo:

- merkle_root - a hash das transações que você validará com esse bloco. Se o numero de transações pendentes for alto, esse campo pode variar bastante, basta escolher transações diferentes, ou ordená-las de forma diferente na hora de construir a merkle-tree
- timestamp - pode variar em alguns segundos de um pool pra outro, adicionando assim certo não determinismo
- nonce - que não precisa ser percorrida linearmente (um minerador pode começar de 0 e ir até 0xFFFFFFFF, enquanto o outro pode começar de 0xFFFFFFFF e voltar até zero, ou pode até usar valores aleatórios).

Com muitas transações na rede, basta a merkle-root pra deixar o bloco sendo procurado por um pool ser diferente do dos outros. Só isso já garante que encontrar um bloco é questão de pura sorte...

Correto, girino. Mas note que a merkle root sempre será diferente, pois cada pool ou minerador solo tem a sua própria transação coinbase (enviando as bitcoins recém-criadas e as das taxas para um endereço que ele próprio controla).

Assim, é certo que cada pool usa nonces de maneira completamente independente aos nonces dos outros pools. Mesmo que dois pools usem o mesmo conjunto de nonces, os dois conjuntos de hashes resultantes para o bloco serão totalmente diferentes entre si. É isso que garante que um minerador malicioso não consiga reutilizar o "nonce vencedor" encontrado por outro minerador, alegando que foi ele (o malicioso) quem minerou o último bloco. Ao mudar a transação coinbase para um endereço seu, é alterada a merkle root, e aquele mesmo nonce deixa de ser o vencedor, pois o hash do bloco deixará de ser menor do que o alvo.


legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
March 11, 2014, 10:06:10 AM
#18
dá uma olhada em https://en.bitcoin.it/wiki/Protocol_specification#Block_Headers

a hash a ser gerada para criar um bloco é a hash dessa estrutura. Existem ali vários pontos de não determinismo:

- merkle_root - a hash das transações que você validará com esse bloco. Se o numero de transações pendentes for alto, esse campo pode variar bastante, basta escolher transações diferentes, ou ordená-las de forma diferente na hora de construir a merkle-tree
- timestamp - pode variar em alguns segundos de um pool pra outro, adicionando assim certo não determinismo
- nonce - que não precisa ser percorrida linearmente (um minerador pode começar de 0 e ir até 0xFFFFFFFF, enquanto o outro pode começar de 0xFFFFFFFF e voltar até zero, ou pode até usar valores aleatórios).

Com muitas transações na rede, basta a merkle-root pra deixar o bloco sendo procurado por um pool ser diferente do dos outros. Só isso já garante que encontrar um bloco é questão de pura sorte...
legendary
Activity: 980
Merit: 1000
Premium
March 11, 2014, 09:13:44 AM
#17
Hoje senão me engano o BitCoin dá como recompensa por bloco minerado 25 BitCoins, porém esse não é o número correto de BitCoins recebido, pois o mineiro (ou a POOL) recebe as taxas por ter validado as transações daquele momento.

Sim, 1 bloco a cada (mais ou menos) 10 minutos.
Todas as POOL´s e mineiros SOLOS (se é que ainda existe para Bitcoin) estão competindo pelo Bloco.
newbie
Activity: 4
Merit: 0
March 11, 2014, 09:08:04 AM
#16
Então cada pool recebe um bloco diferente. Pensei que todas competissem minerando o mesmo bloco

Do artigo:

Os mineradores estão o tempo todo monitorando a rede Bitcoin, “ouvindo” as transações anunciadas por outros computadores e selecionando quais transações incluirão no bloco que estão tentando criar.

Ao mesmo tempo, os mineradores tentam encontrar a solução para um problema matemático, que depende dos dados das transações selecionadas por eles. Uma característica importante desse problema é que ele é muito difícil de resolver, mas é fácil conferir se uma resposta é correta ou não. Além disso, a dificuldade desse problema é automaticamente ajustada pela rede Bitcoin, de modo que a solução só seja encontrada por alguém, em média, a cada 10 minutos. Ou seja, quanto mais computadores passam a tentar resolver o problema, mais difícil ele fica.

Enquanto registram transações e tentam resolver o problema, os mineradores ainda não estão alterando o blockchain. É como se eles estivessem escrevendo páginas de rascunho do livro-caixa. Quando um minerador encontra a solução do problema, ele anuncia o novo bloco para toda a rede Bitcoin e todos os outros mineradores conferem se ele de fato acertou a resposta. Em caso positivo, o novo bloco se torna parte oficial do blockchain, e o processo se reinicia, com todos os mineradores tentando gerar o bloco seguinte.


Então todos os pools competem tentando minerar o mesmo bloco, sim. Quando um pool consegue, todos os pools enxergam esse novo bloco como parte do blockchain, e passam a competir pela mineração do bloco seguinte. Seu pool consegue minerar um bloco a cada 12 horas, mas reconhece a existência dos outros vários blocos minerados por outros pools durante esse tempo todo.

Então devo pausar meu trabalho pra ver se o nonce achado está certo e se uma das 10 transações que eu escolhi para minerar está nele. Se tiver, tenho que colocar outra.
Está certo esse meu pensamento?

Se alguma das 10 transações estiverem nele, você as retira do próximo bloco que tentará minerar, pois já estão no blockchain. Na prática, provavelmente todas elas já estarão no bloco minerado pelo outro pool, então você vai começar do zero, adicionando a esse seu novo "candidato a bloco" as novas transações que aparecerem na rede desde a criação do último bloco.

sr. member
Activity: 375
Merit: 254
March 11, 2014, 09:00:06 AM
#15
Eu sou programador. Quero entender a lógica
sr. member
Activity: 266
Merit: 250
day trader mode "on"
March 11, 2014, 08:54:25 AM
#14
gente para que tanta preocupação quanto a formação de blocos ? ela está fluindo normal poxa ...
sr. member
Activity: 375
Merit: 254
March 11, 2014, 08:51:57 AM
#13
Mas isso irá dizer o que já sei. Cada pool encontra blocos diferentes. É só ir no blockchain.info que diz quem achou cada bloco. Mas todas não mineram o mesmo?

Acabei de lembrar uma coisa:
Os mineiros que colocam as transações nos blocos. Então cada mineiro esta tentando achar um nonce de um determinado grupo de transações, que na teoria, e diferente de qualquer outra coisa que outro mineiro esteja fazendo. Esta certo?
Se tiver, tem outra questão:
Eu vou minerar um bloco... Pego umas 10 transações que estão pendentes, agrupo, e começo a tentar achar um nonce. Durante esse trabalho eu recebi a notícia que um novo bloco foi minerado com sucesso. Então devo pausar meu trabalho pra ver se o nonce achado está certo e se uma das 10 transações que eu escolhi para minerar está nele. Se tiver, tenho que colocar outra.
Está certo esse meu pensamento?
legendary
Activity: 980
Merit: 1000
Premium
March 11, 2014, 08:41:04 AM
#12
Se 24 poe 1 por hora, são 24 por dia. cada uma poe 1 por dia

Então cada pool recebe um bloco diferente. Pensei que todas competissem minerando o mesmo bloco

Tire a prova real, faça o cadastro em outra POOL e vá em BLOCOS (Blocks) e veja quais foram o blocos encontrados pela sua POOL e pela outra. Devem ser diferentes!
sr. member
Activity: 375
Merit: 254
March 11, 2014, 08:23:48 AM
#11
Se 24 poe 1 por hora, são 24 por dia. cada uma poe 1 por dia

Então cada pool recebe um bloco diferente. Pensei que todas competissem minerando o mesmo bloco
legendary
Activity: 980
Merit: 1000
Premium
March 11, 2014, 08:19:28 AM
#10
Cara é simples!

1 bloco é gerado a cada 10 minutos!
Porém é 1 bloco para a rede toda.
Se a rede toda fosse formada por 6 POOL´s e todas as redes contribuem com o mesmo poder de processamento, cada POOL recebe 1 bloco de hora em hora.

É mais ou menos isso.
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
March 11, 2014, 06:15:11 AM
#9
desculpa, não entendi

Um fazendeiro tem 24 galinhas. Todas juntas elas botam, em média, 1 ovo por hora. Quantos ovos cada galinha bota por dia?
sr. member
Activity: 375
Merit: 254
March 10, 2014, 11:19:33 PM
#8
desculpa, não entendi
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
March 10, 2014, 07:13:44 PM
#7
Nesse artigo diz que o bloco e minerado em 10 minutos. Porque então no pool em que participo os blocos demoram ate 12h para serem minerados? Qual o limite de transações em cada bloco?

A "Velocidade" de mineração do bloco é probabilistica, e é calculada para que "em média" um bloco surja a cada 10 minutos. NA REDE TODA, não em cada pool. Sua pool leva 12h porque ela representa + ou - 1.3% da rede como um todo (em poder de processamento). 1.3% = 1/(12h*60(min/h)/10min)).

A famosa "dificuldade" serve pra isso: ela ajusta a probabilidade de um bloco surgir a cada 10 minutos de acordo com a quantidade de gente (e o poder de processamento) da rede.
sr. member
Activity: 375
Merit: 254
March 10, 2014, 07:02:47 PM
#6
Nesse artigo diz que o bloco e minerado em 10 minutos. Porque então no pool em que participo os blocos demoram ate 12h para serem minerados? Qual o limite de transações em cada bloco?
newbie
Activity: 4
Merit: 0
March 10, 2014, 02:56:41 PM
#5
Fabio,

Para entender como funciona a criação de blocos, leia este artigo em português:
Mineração (nível básico)

Se estiver difícil de entender algo, interrompa a leitura e veja este outro antes:
Transações Bitcoin e o blockchain

Depois, se quiser aprofundar um pouco mais, leia este outro:
Mineração (nível intermediário)

Persistindo alguma dúvida, estamos aí.
sr. member
Activity: 375
Merit: 254
March 09, 2014, 08:20:59 PM
#4
O que eu sei (e o que eu imagino) ate agora...
- Quando quero fazer uma transação, eu digo o hash da transação que "contem o meu saldo" e digo a chave publica do destinatário.
- Não sei como ainda, essa transação tem que ser assinada pelo destinatário, com sua chave privada. (assinatura que pode ser validada com a chave publica)

Duvidas
- Eu li que os blocos são fechados a cada 10 minutos. Mas como pode ser isso se os blocos levam as vezes 24 horas pra serem minerados? Então tem uma fila de blocos não minerados? A confirmação não depende do bloco estar minerado?

vou escrever mais duvidas conforme essas forem sendo resolvidas...
legendary
Activity: 1697
Merit: 1074
March 08, 2014, 07:41:51 PM
#3
Os comentários desse artigo.... que loucura cara!

Infelizmente a maioria das documentações do bitcoin são todos em inglês e eu me perco muito lendo em inglês.
Eu já vi que as transações realizadas vão sendo colocadas num bloco...
Pergunta: Quando esse bloco é fechado para ser minerado?
Na verdade elas são confirmadas pela cadeia de blocos.... os blocos nada mais são que um log onde contem todas as trasações.... e elas podem ser visualizadas em dois serviços pelo que saiba:
https://blockexplorer.com/                 
https://blockchain.info/

Aqui tem links comunidade local que esclarece algumas dúvidas: https://bitcointalksearch.org/topic/info-orientacoes-aos-usuarios-mais-novos-220359
sr. member
Activity: 672
Merit: 251
Infleum
March 08, 2014, 12:59:31 AM
#2
sr. member
Activity: 375
Merit: 254
March 07, 2014, 11:04:36 PM
#1
Infelizmente a maioria das documentações do bitcoin são todos em inglês e eu me perco muito lendo em inglês.
Eu já vi que as transações realizadas vão sendo colocadas num bloco...
Pergunta: Quando esse bloco é fechado para ser minerado?
Jump to: