FabioCarpi (OP)
|
|
March 11, 2014, 12:43:10 PM |
|
Eu li que quando você faz uma transação, o programa envia a quantidade desejada para o destinatário e envia todo o resto do saldo para você mesmo. É assim mesmo? Então como a rede se entende lendo os blocos? No bloco 289876 ( http://blockexplorer.com/b/289876), vejo várias transações onde tem desde 1 destinatário à quase 200.
|
|
|
|
algorista
|
|
March 12, 2014, 05:14:06 AM |
|
Funciona assim:
1. um ou mais address da sua carteira recebe multiplas transacões, cada qual com valor diferenciado. 2. quando vc quer enviar valores, então uma transacao é criada para enviar saldo a outro address. 3. a carteira escolhe um conjunto de transacoes (dentre seus address) que melhor acomode o valor de saída. 4. se nao houver como acomodar um valor exato então é criado um destinatario adicional dentro da própria carteira de origem (change), que receberá a diferença.
É muito parecido com uma transação comum usando dinheiro de papel, vc tenta pagar um valor exato mas caso não consiga então paga um pouco a mais e recebe troco.
Detalhe: o que deve ser consumido por completo são as transações recebidas, e não o saldo.
Um envio é caracterizado por transações de origem e address de destino, e não address de origem e address de destino como se supõe normalmente.
|
+---------=====[ Rm 12:21 ]=====---------+
|
|
|
FabioCarpi (OP)
|
|
March 12, 2014, 07:12:00 PM |
|
Nao entendi muito bem.
|
|
|
|
DarkHyudrA
Legendary
Offline
Activity: 1386
Merit: 1000
English <-> Portuguese translations
|
|
March 13, 2014, 06:35:51 PM |
|
O negócio é o seguinte: O bitcoin, o protocolo em si, não trabalha com saldo, saldo é só um número bonitinho para sabermos o quanto ainda podemos gastar.
Digamos que você recebeu na sua carteira(indiferente de quais endereços), primeiro 10 BTC, depois 1 BTC, e depois 3 BTC. Temos um saldo 14(10+3+1).
Digamos que agora você vai mandar 2 BTC para um endereço. O bitcoin não consegue quebrar uma transação que você recebeu e manter o resto, isto é, ele não consegue usar a transação de 3 BTC e enviar 2 BTC e deixar os outros 1 BTC parado, ou usar a de 10 BTC e deixar 8 BTC parados. O que ele faz é que ele vai enviar 2 BTC para o endereço desejado, e 1 BTC para um change address, são endereços da tua carteira da bitcoin-qt que não estão visíveis, mas estão dentro do seu wallet.dat. Você nem sabe, mas conta 100 change address neste exato momento(se sua carteira é nova no caso, ele vai criando lotes de 100 em 100 a medida da necessidade). Agora digamos que depois de efetivado essa última transação você quer mandar 2 BTC, ele usaria as duas transações de 1 BTC que você tem(1 BTC inicial e outro 1 BTC por causa do "troco" da primeira vez que você enviou 2 BTC), lhe deixando somente com a transação de 10 BTC.*
*O bitcoin tem algumas verificações que me falham a memória se ele vai preferir usar as 2 entradas de 1 BTC, ou se ele vai preferir quebrar a entrada de 10 BTC.
|
English <-> Brazilian Portuguese translations
|
|
|
FabioCarpi (OP)
|
|
March 13, 2014, 07:43:53 PM |
|
nossa que estranho. sabe o motivo disso?
|
|
|
|
DarkHyudrA
Legendary
Offline
Activity: 1386
Merit: 1000
English <-> Portuguese translations
|
|
March 13, 2014, 08:37:40 PM |
|
nossa que estranho. sabe o motivo disso?
Por causa da natureza criptográfica do bitcoin. Todas as transações que ocorrem são ditas como usadas ou disponíveis, e as transações são confirmadas dentro dos blocos. Então, não tem como tu mudar a origem da transação(porque ela está fixa na blockchain), então a solução é criar novas entradas parciais(que é o que tentei te explicar no post anterior).
|
English <-> Brazilian Portuguese translations
|
|
|
algorista
|
|
March 13, 2014, 09:53:58 PM |
|
...
*O bitcoin tem algumas verificações que me falham a memória se ele vai preferir usar as 2 entradas de 1 BTC, ou se ele vai preferir quebrar a entrada de 10 BTC.
Perfeita explicação. A escolha das transações de origem leva em consideração o valor e a idade (confirmações) das transações. Ele vai tentar fazer uma transação com menor fee e maior chance de confirmação imediata. nossa que estranho. sabe o motivo disso?
Entenda cada transação como se fosse a emissão de uma cedula (igual dinheiro de papel), e da mesma forma, quando vc vai na padaria comprar algo, não é possivel gastar meia cedula, vc paga com uma cedula e receba outras cedulas ou moedinhas como troco.
|
+---------=====[ Rm 12:21 ]=====---------+
|
|
|
RCbit
Newbie
Offline
Activity: 1
Merit: 0
|
|
March 18, 2014, 07:27:35 PM |
|
Oi,
Tenho uma duvida com relacao as transacoes, Vamos supor que na minha carteira eu tenha as seguintes transacoes
Dia que eu recebi / Valor
01/05/2013 - 1 BTC 03/05/2013 - 0.5 BTC 06/05/2013 - 2 BTC 08/05/2013 - 1 BTC
Agora eu tenho que pagar uma conta de 0.63 BTC no dia 10/05/2013.
Pelo que eu entendi eu vou enviar o bitcoin que eu recebi no dia (01/05/2013) (por ser o mais antigo e o menor BTC que cobre o valor de 0.63 BTC) e vai voltar 0.37 BTC para o meu endereço change, minha carteira vai ficar:
03/05/2013 - 0.5 BTC 06/05/2013 - 2 BTC 08/05/2013 - 1 BTC 10/05/2013 - 0.37 BTC
Agora se eu precisar pagar outra conta no dia 15/05/2013 de 0.3 BTC.
Pelo que eu entendi ele usaria a do dia (03/05/2013 - 0.5 BTC) (por ser o mais antigo e o menor BTC que cobre o valor de 0.63 BTC) e o meu saldo ficará em:
06/05/2013 - 2 BTC 08/05/2013 - 1 BTC 10/05/2013 - 0.37 BTC 15/05/2013 - 0.2 BTC
Agora se eu precisar pagar uma conta no dia 20/05/2013 de 0.5 BTC
qual seria a transaçao que ele vai utilizar?
a do dia (06/05/2013 - 2 BTC) (por ser o mais antigo que cobre o valor de 0.5 BTC)
a do dia (08/05/2013 - 1 BTC) (por ser o mais antigo e o menor BTC que cobre o valor de 0.5 BTC)
ou vai usar as do dia (10/05/2013 - 0.37 BTC e 15/05/2013 - 0.2 BTC) e volta um troco de 0.7BTC?
Obrigado pela ajuda.
|
|
|
|
person
|
|
March 19, 2014, 02:12:37 AM |
|
Estou assumindo que voce está falando da carteira 'padrao': bitcoin-qt E não é tao simples assim... Para selecionar quais coins usar, o QT faz uma sequencia de tentativas filtrando primeiro apenas Outputs (moedas que voce recebeu) de transacoes com mais de 6 confirmacoes, se não tem saldo suficiente inclui transacoes com 1 confirmacao e se mesmo assim nao tem saldo, tenta com transacoes proprias (quando voce enviou e recebeu change) com 0 transacoes ainda. Para cada uma dessas 3 tentativas, o QT não se importa com a idade das coins, nem com a taxa que a transacao final vai ter. Ele tenta encontrar a melhor combinação de coins para reduzir o change. O que no seu caso pode inclusive ser combinar 0.37 e 0.2 para retornar apenas 0.07 de change. Se voce gosta de codigo, pode ver a logica completa procurando por SelectCoinsMinConf aqui: https://github.com/bitcoin/bitcoin/blob/master/src/wallet.cpp
|
|
|
|
FabioCarpi (OP)
|
|
March 19, 2014, 12:15:55 PM |
|
Eu gosto de programação, mas só sei php. Não existe uma documentação explicando cada função do código?
|
|
|
|
DarkHyudrA
Legendary
Offline
Activity: 1386
Merit: 1000
English <-> Portuguese translations
|
|
March 19, 2014, 02:51:44 PM |
|
Eu gosto de programação, mas só sei php. Não existe uma documentação explicando cada função do código?
No máximo a whitepaper do Bitcoin tem isso. Mas vale lembrar que isso é tudo em cima da carteira bitcoin-qt, outras carteiras podem tratar diferente, e umas até te permitem priorizar quais entradas usar.
|
English <-> Brazilian Portuguese translations
|
|
|
|