Estou usando bitcoinj (implementação java). Eu li muitas respostas aqui, mas nenhuma delas responde à minha pergunta. Como obter o endereço do remetente usando bitcoinj?
Eu tenho a variável de transação tx. Posso obter o hash dele, também usei: https://blockchain.info/tx/myTXhash e ele me mostrou as transações. O problema nem mesmo é que a web está me mostrando o remetente.
MAS: se eu usar isso arquivo .wallet gerado e abri-lo com multibit (carteira bitcoin) Eu posso ver lá, em transações, de quem foi o dinheiro enviado. Isso significa que há uma maneira de obter o endereço do remetente, mas COMO?
EDITAR: Eu me enganei, multibit não sabe de quem veio o dinheiro, só fiquei confuso porque me mostrou foi enviado para o endereço correto (mas foi configurado por mim em args).
Mas há alguma possibilidade de passar a mensagem de alguma forma do cliente para sabe se foi ele quem enviou o dinheiro?
Comentários
- Você quer dizer obter o Endereço Bitcoin que enviou o mon ey ou de alguma forma recebendo um nome?
- Sim, quero dizer o endereço Bitcoin que enviou o dinheiro. Ou alguma outra forma de verificar se o dinheiro veio dessa pessoa. Considere-a como uma carteira que está recebendo dinheiro constantemente, mas preciso verificar se é proveniente de quem deseja acessar pela web.
Resposta
Para referência futura: No bitcoinJ (versão java), os endereços de entrada / saída das transações estão localizados nos objetos TransactionInput e TransactionOutput.
Por exemplo: para Transaction tx :
List<TransactionInput> inputs = tx.getInputs(); List<TransactionOutput> outputs = tx.getOutputs(); for(TransactionOutput out : outputs){ System.out.println(out.getAddressFromP2PKHScript(params)); System.out.println(out.getAddressFromP2SH(params)); } for(TransactionInput in : inputs){ System.out.println(in.getFromAddress()); }
Lembre-se de que algumas transações podem não ter um endereço de entrada. Aqui está a descrição do github do método getFromAddress ():
Método de conveniência que retorna o endereço de origem desta entrada analisando o scriptSig. O conceito de “endereço de origem” não está bem definido no Bitcoin e você não deve assumir que os remetentes de uma transação podem realmente receber moedas no mesmo endereço que costumavam assinar (por exemplo, isso não é verdade para carteiras compartilhadas).
Resposta
Você pode ver os endereços que enviaram e receberam dinheiro ao olhar para um transação na maioria dos serviços. Por exemplo:
https://blockchain.info/tx/c6cb02e70442275ffb7b35cc8a9416323ff7e01b5378abc20ae7f5b6e7617884
A grande seta verde mostra a transferência de um endereço (1B898F2tcWHX1LZWWfD21FRzqWrtXLocXN) para os outros 2. Programaticamente, você pode usar uma API que retorna JSON com informações equivalentes:
No entanto, não é simples extrair essas informações ao olhar para uma transação bruta, pois os endereços estão embutidos no script.