Dunque la transazione dall'indirizzo 1FWY5DxbgVSBbCwCDMwsgSPUCKQKWfjYWa invia:
0.01299300 btc a 1GQrjuC59UuDv3LqbhPHX5mREDY4521f12
0.00000000 btc indietro a 1FWY5DxbgVSBbCwCDMwsgSPUCKQKWfjYWa
0.00001000 btc di fee al miner
Qual è il problema della transazione, perchè non è stata accettata?
1) la fee di 1000 satoshi era sufficiente nel 2015
2) il fatto di rimandare il resto all'indirizzo di partenza è ovviamente una situazione standard
3) è il secondo output che vale 0 il problema? Sì
infatti -->
https://github.com/bitcoin/bitcoin/blob/0.10/src/primitives/transaction.h#L137 bool IsDust(CFeeRate minRelayTxFee) const
{
// "Dust" is defined in terms of CTransaction::minRelayTxFee,
// which has units satoshis-per-kilobyte.
// If you'd pay more than 1/3 in fees
// to spend something, then we consider it dust.
// A typical txout is 34 bytes big, and will
// need a CTxIn of at least 148 bytes to spend:
// so dust is a txout less than 546 satoshis
// with default minRelayTxFee.
size_t nSize = GetSerializeSize(SER_DISK,0)+148u;
return (nValue < 3*minRelayTxFee.GetFee(nSize));
}
Da notare che la funzione IsDust è un metodo della classe TxOut, cioè è riferito agli output.
(la sua introduzione è dovuta a Mike Hearn che la propose a fine 2013 ->
https://github.com/bitcoin/bitcoin/commit/6a4c196dd64da2fd33dc7ae77a8cdd3e4cf0eff1#diff-279f95e952b2c1cff13bdfbcd7bc36eeR151)
e quindi la tua tx fa parte delle cosiddette "transazioni non standard" -->
https://bitcoin.org/en/developer-guide#non-standard-transactionsThe transaction must not include any outputs which receive fewer than 1/3 as many satoshis as it would take to spend it in a typical input. That’s currently 546 satoshis for a P2PKH or P2SH output on a Bitcoin Core node with the default relay fee. Exception: standard null data outputs must receive zero satoshis.
Cosa vuol dire? La soglia sotto la quale il valore di un output è considerato "dust" è pari a 3 volte le fee in satoshi necessarie affinchè un nodo trasmetta la transazione (secondo la sua policy). Output che spendano valori inferiori a quella soglia faranno sì che la transazione non verrà inclusa in un blocco dai miner.
Ad esempio se il nodo trasmette transazioni che abbiano un minimo (minRelayTxFee) di 1000 satoshi per kilobyte (1 satoshi per byte), e un output standard è di 36 byte e necessita di un input standard di 148 byte per essere speso, la soglia minima di valore per l'output sarà : (1*36+1*148)*3=546 satoshi.
Se invece la minRelayTxFee è di 5000 satoshi per kilobyte (5 satoshi per byte), allora: (5*36+5*148)*3=2640 satoshi di valore minimo che deve avere un output.
In ogni caso quindi, qualsiasi sia il valore di minRelayTxFee (purchè maggiore di 0), la transazione di cui si parla in questo thread contiene un output "dust", quindi essa non viene inclusa in un blocco (tra l'altro in periodi di forti intasamento della rete come questo il parametro minrelaytxfee è uno dei primi su cui si agisce alzandone il valore per non intasare la mempool).
Per quanto riguarda come fare a sbloccare i btc (che sono ancora associati a un indirizzo di cui l'OP ha perso la chiave privata), se non si trova un miner disposto a non fare il controllo di cui si è detto sopra, non vedo proprio come si potrebbe fare.
Forse si potrebbe tentare con il nuovo servizio di viabtc, che permette di inviare 100 tx gratis entro un'ora
--> https://www.viabtc.com/tools/txaccelerator/ (anche se non ho capito se è free solo il servizio di "accelerazione" oppure se viene concesso proprio l'invio di tx senza fee, nel primo caso ovviamente non cambierebbe niente per il problema sollevato in questo thread).
EDIT: non accettano fee minori di 0,0001 btc, quindi non va bene.
Le soluzioni per tx bloccate di solito sono:
1) RBF (replace by fee), ovvero inviare una nuova transazione con maggiori fee (duoble spend), ma in questo caso non è possibile poichè non c'è più la chiave privata di partenza
2) Child-Pays-For-Parent (CPFP), ovvero creare una seconda transazione che spenda i bitcoin dell'indirizzo 1GQrjuC59UuDv3LqbhPHX5mREDY4521f12 ; se un miner usa questa patch, le fee della seconda transazione contano anche per la prima, e quindi verrebbe invogliato a introdurre entrambe nel blocco; il vantaggio è che non è necessario avere più la private key del primo indirizzo di partenza, dubito però che l'output della prima transazione venga per questo non considerato più "dust"
3) contattare direttamente un miner affinchè la propria tx venga inclusa in un blocco (questa tx a conti fatti non mi pare irregolare, anche se va a incrementare inutilmente il database degli UTXO). Non so come sia possibile contattarli,
qui si parla di casi recenti di transazioni a zero fee incluse in un blocco, testimoniando il fatto che i miner sono liberi di decidere quali tx includere e quali no.