gbianchi (OP)
Legendary
Offline
Activity: 3290
Merit: 2928
|
|
September 14, 2018, 02:41:53 PM |
|
Come forse sapete, il famoso indirizzo bitcoin 1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxh corrisponde alla chiave privata 0. Il punto 0 NON e' considerato valido per le operazioni sulle curve ellittiche, quindi qualsiasi somma versata su quell'indirizzo non e' piu' prelevabile, ossia l'indirizzo 1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxh e' sempre stato giustamente considerato un "burning address". Con non poco stupore, oggi vedo questo https://www.blockchain.com/btc/address/1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxhsembra che verso maggio dello scorso anno, dall'indirizzo sia stato fatto un prelievo verso quest'altro indirizzo: 17pfufCkqYKiE4MLL22u6HtkGzqAirE29J che blockchain.info da' come non confermato. Nelle mie blockchain, tutte sincronizzate da zero con bitcoin core versione 0.14 oppure 0.15 la transazione e' presente, quindi i miei client l'hanno validata. inoltre dall'indirizzo 17pfufCkqYKiE4MLL22u6HtkGzqAirE29J questi bitcoin sono gia' stati prelevati, quindi con un'operazione IMPOSSIBILE sono stati prelevati dei bitcoin e a questo punto questi bitcoin "impossibili" stanno propagandosi verso altri indirizzi! Insomma, a una prima analisi la cosa mi puzza molto ma molto brutta. Spero che qualcuno mi trovi una spiagazione logica, che pero' non dovrebbe esistere....
|
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 14, 2018, 03:50:37 PM Last edit: September 14, 2018, 04:47:32 PM by arulbero |
|
Guardando alla transazione ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84 che spende i bitcoin da quell'indirizzo sembrerebbe che effettivamente abbiano usato la chiave pubblica "00" l'output di bitcoin-cli decoderawtransaction sul mio Bitcoin Core 0.16.1 : { "txid": "ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84", "hash": "ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84", "version": 1, "size": 4665, "vsize": 4665, "locktime": 0, "vin": [ { "txid": "c29b4529c43637c3c3cb86ff4d32980a055a8a58f8b0ff83abfac924bb7d5a53", "vout": 1, "scriptSig": { "asm": "3045022100d719a6b62c1069aca5889c071f6faf15e098a19da31ca0f91e53373da4e70b6102202081fbdf9d2bb46ea22368d51922fe0f5253094ae9bfa3d13eebd7ede366033c[ALL] 0", "hex": "483045022100d719a6b62c1069aca5889c071f6faf15e098a19da31ca0f91e53373da4e70b6102202081fbdf9d2bb46ea22368d51922fe0f5253094ae9bfa3d13eebd7ede366033c010100" }, "sequence": 4294967295 }, .........
Provando a decodificare lo scriptSig in formato hex byte per byte infatti ottengo: 483045022100d719a6b62c1069aca5889c071f6faf15e098a19da31ca0f91e53373da4e70b6102202081fbdf9d2bb46ea22368d51922fe0f5253094ae9bfa3d13eebd7ede366033c010100
48 --> pushdata 30 --> sequenza 45 --> lunghezza 02 --> intero 21 --> lunghezza 00 d7 19 a6 b6 2c 10 69 ac a5 88 9c 07 1f 6f af 15 e0 98 a1 9d a3 1c a0 f9 1e 53 37 3d a4 e7 0b 61 : r della firma in formato der 02 --> intero 20 --> lunghezza 20 81 fb df 9d 2b b4 6e a2 23 68 d5 19 22 fe 0f 52 53 09 4a e9 bf a3 d1 3e eb d7 ed e3 66 03 3c : s della firma in formato der 01 --> SIGHASH_ALL 01 --> spazio occupato dalla chiave pubblica 1 byte!!! 00 --> chiave pubblica
Da notare che di solito la parte finale dovrebbe essere ben più lunga, tipo 01 --> SIGHASH_ALL 21 --> lunghezza della chiave pubblica 02 --> tipo di chiave pubblica 32 byte -> X della chiave pubblica
inoltre dall'indirizzo 17pfufCkqYKiE4MLL22u6HtkGzqAirE29J questi bitcoin sono gia' stati prelevati, quindi con un'operazione IMPOSSIBILE sono stati prelevati dei bitcoin e a questo punto questi bitcoin "impossibili" stanno propagandosi verso altri indirizzi!
Mi pare però che tutti i bitcoin spesi da 1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxh sono stati bloccati però nel passaggio successivo: nell'indirizzo 17pfufCkqYKiE4MLL22u6HtkGzqAirE29 da lì infatti qualcuno ha tentato di spenderli ma senza successo --> link In questo blockexplorer i bitcoin risultano ancora nell'indirizzo 1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxh https://blockexplorer.com/address/1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxhLa mia conclusione: la transazione ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84 non è inclusa nella blockchain, qualcuno ha tentato di forzare il meccanismo ma la transazione di fatto non è mai avvenuta.
|
|
|
|
gbianchi (OP)
Legendary
Offline
Activity: 3290
Merit: 2928
|
|
September 14, 2018, 04:07:04 PM |
|
La mia conclusione: la transazione ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84 non è inclusa nella blockchain, qualcuno ha tentato di forzare il meccanismo ma la transazione di fatto non è mai avvenuta.
allora debbo capire perche' il mio blockparser che legge dalla mia copia della blockchain (gestita nello specifico da un bitcoin core 0.14.2) individua l'operazione come eseguita, quindi la transazione in qualche modo esiste sulla mia blockchain... faro' ulteriori indagini.
|
|
|
|
gbianchi (OP)
Legendary
Offline
Activity: 3290
Merit: 2928
|
|
September 14, 2018, 05:04:53 PM |
|
Non mi convince modo strano con cui presenta la cosa blockchain.info... la da come operazione non confermata, ma in realta' viene viene propagata anche su transazioni successive.
Una transazione non confermata dovrebbe essere ancora solo in mempool, invece blockchain.info la da non confermata dal maggio 2017...
mi sto facendo l'idea che acluni client hanno validato l'operazione ed alcuni no, probabilmente sfruttando qualche sorta di bug. (forse introdotto quando nel bitcoin core hanno cambiato la libreria crypto ?)
per ora sono supposizioni, spero di avere il tempo per fare ulteriori approfondimenti.
|
|
|
|
Piggy
|
|
September 14, 2018, 05:16:50 PM |
|
In effetti sembra essere abbastanza strana come cosa, la transazione non è mai confermata ma sti ~3.7 BTC hanno fatto il giro di parecchi indirizzi. Nessuna delle transazioni è però infatti confermata. Magri qualcuno ha cercato di sfruttare la cosa per qualche truffa? Ho trovato una spiegazione qui: https://bitcoin.stackexchange.com/questions/65969/invalid-public-key-was-spent-how-was-this-possibleThat address cannot be spent from and any such transaction that spends from it is invalid. However this does not prevent improperly written software from thinking its private key is a valid private and and performing the elliptic curve operations on it. So thus the address was created and a transaction was created that appears valid. But when validating the transaction with proper software, such software rejects it.
This transaction appears on blockchain.info likely because their software is either improperly implemented or simply not validating (or fully validating) transactions. This isn't the first time that's happened though.
|
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 14, 2018, 05:22:25 PM |
|
mi sto facendo l'idea che acluni client hanno validato l'operazione ed alcuni no, probabilmente sfruttando qualche sorta di bug. (forse introdotto quando nel bitcoin core hanno cambiato la libreria crypto ?)
per ora sono supposizioni, spero di avere il tempo per fare ulteriori approfondimenti.
Può essere, ma non sarebbe molto rassicurante, di sicuro nella mia blockchain non c'è quella tx, se ci fosse dovrebbe essere stata immessa intorno al blocco 467000 (lo deduco dalla data del 24/5/2017), ma io appunto non la trovo nella mia blockchain locale usando questo piccolo script: #! /bin/bash
################################################################################### # Usage: # ./trovatx.sh ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84 ###################################################################################
bitcoincli="/home/arulbero/bitcoin-0.16.1/src/bitcoin/src/bitcoin-cli"
txid=$1 let i=465000 #START BLOCK let lastblock=473000 #LAST BLOCK
while [ $i -le $lastblock ]; do hash=$($bitcoincli getblockhash $i) res=$($bitcoincli getblock $hash | grep $txid | sed 's/"//g' | tr -d '\n') if [ "$res" != "" ] then echo "Txid $txid found in block $i !!!" exit 1 fi let i=i+1 done echo "Txid $txid is not in the blockchain !!!"
Comunque anche se vai sul sito di blockchain.info https://www.blockchain.com/btc/tx/ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84 quella transazione è data come non confermata. Nello stesso momento se guardi è stata inviata anche la transazione successiva. In pratica si tratta di più transazioni spedite contemporaneamente che tentano di spendere ciascuno l'output della precedente, ma nessuna di queste è confermata.
|
|
|
|
JGreg96
|
|
September 14, 2018, 06:40:15 PM |
|
Ho controllato anche su questi 4 explorer e di quella transazione non c' è traccia, infatti non esiste proprio. Explorer1, Explorer2, Explorer3, Explorer4Inoltre proseguendo la catena delle tx ho notato che i resti andavano all' inizio ad un indirizzo "normale" con 1-, mentre il penultimo indirizzo ha un resto che va presumibilmente ad un address di "natura" diversa dai precedenti.
|
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 14, 2018, 06:48:43 PM |
|
allora debbo capire perche' il mio blockparser che legge dalla mia copia della blockchain (gestita nello specifico da un bitcoin core 0.14.2) individua l'operazione come eseguita, quindi la transazione in qualche modo esiste sulla mia blockchain...
faro' ulteriori indagini.
Pensandoci bene anche anche se alcuni client avessero erroneamente validato quella transazione, la blockchain è sempre una sola (quella è la sua funzione). Se un client avesse anche una sola transazione in più in un suo blocco, l'hash dell'header di quel blocco sarebbe diverso da quello degli altri client e quindi si troverebbe su un ramo completamente diverso rispetto al ramo principale (tutti i blocchi successivi avrebbero hash diversi). Quindi non è proprio possibile che nella tua blockchain ci sia quella transazione. La questione allora è: dove si trova questa tx nel tuo client, se non è in un blocco? Forse ha mantenuto nella mempool quella vecchia tx? Ma non lo hai mai riavviato dal 2017? Cosa ti dà questo comando? ~$ ./bitcoin-cli getmempoolentry ba8a7fb13a507a4987bfa267a6f12defc0d30216fdf6664cdc06cc4c8de71a84
error code: -5 error message: Transaction not in mempool
|
|
|
|
gbianchi (OP)
Legendary
Offline
Activity: 3290
Merit: 2928
|
|
September 14, 2018, 07:58:56 PM |
|
Pensandoci bene anche anche se alcuni client avessero erroneamente validato quella transazione, la blockchain è sempre una sola (quella è la sua funzione). Se un client avesse anche una sola transazione in più in un suo blocco, l'hash dell'header di quel blocco sarebbe diverso da quello degli altri client e quindi si troverebbe su un ramo completamente diverso rispetto al ramo principale (tutti i blocchi successivi avrebbero hash diversi).
Quindi non è proprio possibile che nella tua blockchain ci sia quella transazione. La questione allora è: dove si trova questa tx nel tuo client, se non è in un blocco? Forse ha mantenuto nella mempool quella vecchia tx? Ma non lo hai mai riavviato dal 2017?
Cosa ti dà questo comando?
il problema e' che faccio girare un blockparser che guarda SOLO la blockchain, non considera assolutamente la mempool, e alla fine il blockparser mi da il saldo dell'indirizzo incriminato come se la transazione fosse stata fatta. Quindi qualcosa di strano in blockchain c'e', ma devo individuarlo. Provo a fare una modifica al blockparser che mi evidenzi ogni transazione che conivolge quell'indirizzo. Ci metto un po' ma credo di arrivarci.
|
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 14, 2018, 09:19:35 PM |
|
il problema e' che faccio girare un blockparser che guarda SOLO la blockchain, non considera assolutamente la mempool, e alla fine il blockparser mi da il saldo dell'indirizzo incriminato come se la transazione fosse stata fatta.
Quindi qualcosa di strano in blockchain c'e', ma devo individuarlo.
Non è che legge magari in qualche altra struttura derivata dalla blockchain? La blockchain intesa come database dei blocchi non include per esempio il database degli utxo (chainstate), inoltre con l'opzione txindex si aggiungono ulteriori dati. Forse su questi dati derivati diversi client potrebbero essere in disaccordo...
|
|
|
|
gbianchi (OP)
Legendary
Offline
Activity: 3290
Merit: 2928
|
|
September 14, 2018, 09:30:58 PM |
|
Non è che legge magari in qualche altra struttura derivata dalla blockchain?
La blockchain intesa come database dei blocchi non include per esempio il database degli utxo (chainstate), inoltre con l'opzione txindex si aggiungono ulteriori dati. Forse su questi dati derivati diversi client potrebbero essere in disaccordo...
No no il parser legge solo le strutture dei blocchi i blk*.dat per intenderci, non legge nessuna struttura aggiuntiva (indici o robe strane) dammi un po' di tempo, faccio qualche indagine e cerco di darti dei dati oggettivi. Non voglio dirti cose a caso.
|
|
|
|
gbianchi (OP)
Legendary
Offline
Activity: 3290
Merit: 2928
|
|
September 14, 2018, 10:23:26 PM |
|
Ho trovato l'inghippo. Quando il mio parser trova il totale di un indirizzo, per fare un controllo incrociato fa anche una query a blockchain.info. Purtroppo per un errore nel MIO codice (...) nel caso di discrepanza non emette un messaggio di errore (come dovrebbe fare) ma utilizza il saldo indicato da blockchain.info (e non quello calcolato dalla mia blockchain) non mi ero mai accorto perche' e' la prima volta che mi capita, anzi mi ero addirittura dimenticato di questo controllo. Poi quando ho visto questo strano saldo, sono andato a vedere su blockchain ed ho visto che corrispondeva (per forza: era quello) mi sono preoccupato. scusate errore mio (e di blockchain.info) EDIT: sono molto piu' sollevato che sia un errore mio che qualche strano bug in bitcoin core EDIT2: non fidatevi troppo di blockchain.info.
|
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 15, 2018, 04:05:32 AM |
|
Quando il mio parser trova il totale di un indirizzo, per fare un controllo incrociato fa anche una query a blockchain.info.
Purtroppo per un errore nel MIO codice (...) nel caso di discrepanza non emette un messaggio di errore (come dovrebbe fare) ma utilizza il saldo indicato da blockchain.info (e non quello calcolato dalla mia blockchain) non mi ero mai accorto perche' e' la prima volta che mi capita, anzi mi ero addirittura dimenticato di questo controllo.
Poi quando ho visto questo strano saldo, sono andato a vedere su blockchain ed ho visto che corrispondeva (per forza: era quello) mi sono preoccupato.
Perfetto, quindi rimarrebbe solo da capire com'è che blockchain.info mostra ancora una tx non confermata di più di 1 anno fa. Per fortuna la blockchain invece è sempre corretta !
|
|
|
|
redsn0w
Legendary
Offline
Activity: 1778
Merit: 1043
#Free market
|
|
September 15, 2018, 10:43:42 AM |
|
Quando il mio parser trova il totale di un indirizzo, per fare un controllo incrociato fa anche una query a blockchain.info.
Purtroppo per un errore nel MIO codice (...) nel caso di discrepanza non emette un messaggio di errore (come dovrebbe fare) ma utilizza il saldo indicato da blockchain.info (e non quello calcolato dalla mia blockchain) non mi ero mai accorto perche' e' la prima volta che mi capita, anzi mi ero addirittura dimenticato di questo controllo.
Poi quando ho visto questo strano saldo, sono andato a vedere su blockchain ed ho visto che corrispondeva (per forza: era quello) mi sono preoccupato.
Perfetto, quindi rimarrebbe solo da capire com'è che blockchain.info mostra ancora una tx non confermata di più di 1 anno fa.
Per fortuna la blockchain invece è sempre corretta ! Perché è sempre stato poco serio come blockexplorer e anche come web-wallet (leggete qua https://bitcointalk.org/index.php?topic=581411.0).
|
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 15, 2018, 12:18:04 PM |
|
Sì, ma un conto è costruire un web wallet poco affidabile (che è grave, ma scriverne uno serio richiede una certa competenza), un conto è non riuscire neanche a leggere quali sono le transazioni presenti nei blocchi della blockchain. A dir la verità blockchain.info non afferma che quella tx sia presente in qualche blocco, ma continua a tenerla in memoria pur essendo una tx non valida e mai confermata, generando confusione.
|
|
|
|
jack0m
Legendary
Offline
Activity: 3836
Merit: 2050
|
|
September 15, 2018, 12:42:38 PM |
|
Nessun block explorer potrà mai mostrare quella transazione come confermata, semplicemente perché nessun miner l'ha mai ritenuta valida inserendola in un blocco. Mi aspetterei che un qualsiasi client si accorgesse che non è valida, quindi scartandola dalla mempool e non facendola neanche vedere. Evidentemente non è così per blockchain.info, ma dal punto di vista della rete è un problema che riguarda un singolo nodo, quindi non rappresenta minimamente un pericolo per la blockchain e la rete stessa.
|
Money is a hoax. Debt is slavery. Consumerism is toxic.
|
|
|
arulbero
Legendary
Offline
Activity: 1950
Merit: 2100
|
|
September 15, 2018, 01:07:15 PM |
|
Nessun block explorer potrà mai mostrare quella transazione come confermata, semplicemente perché nessun miner l'ha mai ritenuta valida inserendola in un blocco. Mi aspetterei che un qualsiasi client si accorgesse che non è valida, quindi scartandola dalla mempool e non facendola neanche vedere. Evidentemente non è così per blockchain.info, ma dal punto di vista della rete è un problema che riguarda un singolo nodo, quindi non rappresenta minimamente un pericolo per la blockchain e la rete stessa.
Sì, non rappresenta un pericolo per la blockchain. Dal punto di vista della rete dei full node è un problema che riguarda un singolo nodo, dal punto di vista di coloro che utilizzano blockchain.info per ricavare delle informazioni un po' di fastidio lo dà. Tra l'altro sarebbe utile capire perchè si comporta così: se per esempio tende a mantenere indefinitamente le tx in mempool finchè non sono confermate, potrebbe mantenere in memoria anche quelle transazioni formalmente corrette ma che per fee troppo basse non saranno mai confermate. Questo potrebbe forse creare problemi laddove colui che ha costruito la transazione (non usando il flag RBF) sta aspettando che i vari nodi la dimentichino per sostituirla con un'altra. O ci potrebbero essere situazioni di potenziali double-spending qualora un servizio accettasse transazioni non confermate (per piccole cifre) basandosi sempre su blockchain.info.
|
|
|
|
jack0m
Legendary
Offline
Activity: 3836
Merit: 2050
|
|
September 15, 2018, 02:09:25 PM |
|
Nessun block explorer potrà mai mostrare quella transazione come confermata, semplicemente perché nessun miner l'ha mai ritenuta valida inserendola in un blocco. Mi aspetterei che un qualsiasi client si accorgesse che non è valida, quindi scartandola dalla mempool e non facendola neanche vedere. Evidentemente non è così per blockchain.info, ma dal punto di vista della rete è un problema che riguarda un singolo nodo, quindi non rappresenta minimamente un pericolo per la blockchain e la rete stessa.
Sì, non rappresenta un pericolo per la blockchain. Dal punto di vista della rete dei full node è un problema che riguarda un singolo nodo, dal punto di vista di coloro che utilizzano blockchain.info per ricavare delle informazioni un po' di fastidio lo dà. Tra l'altro sarebbe utile capire perchè si comporta così: se per esempio tende a mantenere indefinitamente le tx in mempool finchè non sono confermate, potrebbe mantenere in memoria anche quelle transazioni formalmente corrette ma che per fee troppo basse non saranno mai confermate. Questo potrebbe forse creare problemi laddove colui che ha costruito la transazione (non usando il flag RBF) sta aspettando che i vari nodi la dimentichino per sostituirla con un'altra. O ci potrebbero essere situazioni di potenziali double-spending qualora un servizio accettasse transazioni non confermate (per piccole cifre) basandosi sempre su blockchain.info. sì capisco che qualcuno, conoscendo questo bug di blockchain.info, potrebbe aver cercato di sfruttarlo per commettere qualche scam, ma d'altra parte è risaputo che accettare una transazione che ha zero conferme rappresenta un rischio molto elevato: solo qualche newbie o qualcuno veramente incosciente potrebbe cascarci
|
Money is a hoax. Debt is slavery. Consumerism is toxic.
|
|
|
fillippone
Legendary
Online
Activity: 2380
Merit: 16992
Fully fledged Merit Cycler - Golden Feather 22-23
|
|
September 15, 2018, 03:29:31 PM Last edit: October 03, 2018, 08:57:59 PM by fillippone |
|
E niente, questo è il genere di thread che mi fa capire quanto ancora poco sappia di bitcoin. Conoscere nel dettaglio come è fatta una transazione bitcoin, avere un nodo bitcoin in casa, validarli le mie transazioni, etc. Bitcoin è molto più che prezzo, supporti resistenze e whales, è indipendenza monetaria individuale, che richiede profonda conoscenza. Tutto nella mia personalissima bucket list. F1
|
|
|
|
|