Commissione di transazione Bitcoin e calcolo delle dimensioni

Bitcoin Transaction Fee



Costo della transazione

La maggior parte delle transazioni include commissioni di transazione (commissioni sui minatori), che è una forma di compensazione per i minatori di bitcoin per garantire la sicurezza della rete. La tariffa stessa funge anche da meccanismo di sicurezza, rendendo economicamente svantaggioso per gli aggressori il sovraccarico della rete attraverso le transazioni. Estrazione, commissioni e premi ricevuti dai minatori saranno discussi in modo più dettagliato nel capitolo sull'estrazione.

Questa sezione spiega come le commissioni di transazione sono incluse in una transazione tipica. La maggior parte dei portafogli calcola e include automaticamente le commissioni di transazione. Tuttavia, se si creano transazioni a livello di codice o si utilizza un'interfaccia della riga di comando, è necessario calcolare e contabilizzare manualmente queste commissioni.



La commissione di transazione serve come incentivo per il miner a impacchettare (mining) una transazione nel blocco successivo allo stesso tempo come fattore restrittivo, previene l'abuso del sistema addebitando una piccola commissione per ogni transazione. I minatori che scavano con successo in un blocco riceveranno la commissione del minatore inclusa nella zona e aggiungeranno il blocco alla blockchain.



La commissione di transazione viene calcolata in base alla dimensione kilobyte della transazione, non al valore della transazione Bitcoin. In generale, le commissioni di transazione sono determinate in base alle forze di mercato nella rete Bitcoin. I sindacati minerari danno la priorità alle transazioni in base a molti criteri diversi, comprese le commissioni, e possono persino elaborare le transazioni gratuitamente in determinate circostanze. Ma nella maggior parte dei casi, le commissioni di transazione influenzano la priorità di elaborazione, il che significa che le transazioni con commissioni sufficienti avranno maggiori probabilità di essere impacchettate nel blocco successivo estratto altrimenti, le transazioni con commissioni di transazione insufficienti o assenti potrebbero subire ritardi, in base al miglior sforzo principio, viene elaborato dopo pochi blocchi e potrebbe non essere nemmeno elaborato. Le commissioni di transazione non sono obbligatorie e le transazioni senza commissioni di transazione potrebbero eventualmente essere elaborate, ma le commissioni di transazione aumenteranno la priorità di elaborazione.



Nel tempo, il calcolo delle commissioni di transazione e l'impatto sulle priorità di elaborazione delle transazioni sono cambiati. In un primo momento, la commissione di transazione era fissa, una costante fissa nella rete A poco a poco, poiché la capacità della rete e il volume delle transazioni continuano a cambiare e possono essere influenzati dalle forze di mercato, la struttura delle commissioni inizia ad allentarsi. Almeno dall'inizio del 2016, le restrizioni alla capacità della rete bitcoin hanno causato concorrenza tra le transazioni, portando a commissioni più elevate e le transazioni gratuite sono diventate completamente un ricordo del passato. Le transazioni con commissioni nulle o molto basse vengono elaborate raramente e talvolta non si diffondono nemmeno su Internet.

In Bitcoin Core, la politica di trasferimento delle commissioni è impostata dall'opzione minrelaytxfee. L'attuale minrelaytxfee predefinito è 0,00001 bitcoin per kilobyte o 1% di millibitcoin. Pertanto, le transazioni con commissioni inferiori a 0.0001 Bitcoin sono gratuite per impostazione predefinita, ma verranno inoltrate solo quando c'è spazio nel pool di memoria altrimenti verranno scartate. I nodi Bitcoin possono sostituire la strategia di trasmissione delle commissioni predefinita regolando il valore di minrelaytxfee.

Qualsiasi servizio Bitcoin che crea transazioni, inclusi portafogli, borse, applicazioni di vendita al dettaglio, ecc., Deve implementare la ricarica dinamica. È possibile ottenere costi dinamici tramite servizi di stima dei costi di terze parti o algoritmi di stima dei costi incorporati. Se non sei sicuro, inizia con un servizio di terze parti. Se desideri rimuovere le dipendenze di terze parti, dovresti avere esperienza nella progettazione e distribuzione dei tuoi algoritmi.



L'algoritmo di stima delle tariffe calcola le tariffe appropriate in base alle capacità della rete e alle tariffe fornite dalle transazioni 'competitive'. Questi algoritmi vanno da molto semplici (media o mediana nell'ultimo blocco) a molto complessi (analisi statistica). Stimano le commissioni necessarie (in byte), il che renderà la transazione molto probabile che venga selezionata e imballata in un certo numero di blocchi. La maggior parte dei servizi offre agli utenti una scelta di tariffe con priorità alta, media e bassa. Priorità alta significa che gli utenti pagano commissioni di transazione più elevate, ma le transazioni possono essere impacchettate nel blocco successivo. Priorità media e bassa significa che gli utenti pagano commissioni di transazione inferiori, ma la conferma delle transazioni potrebbe richiedere più tempo.

Molte applicazioni wallet utilizzano servizi di terze parti per il calcolo delle commissioni. Un servizio popolare è http://bitcoinfees.21.co, che fornisce un'API e un grafico visivo a satoshi Byte / byte mostra il costo di diverse priorità.

Suggerimenti: Le commissioni statiche non sono più possibili sulla rete Bitcoin. L'impostazione di un portafoglio con commissioni statiche si tradurrà in una scarsa esperienza utente, perché le transazioni sono spesso 'bloccate' e non confermate. Gli utenti che non capiscono le transazioni e le commissioni bitcoin sono frustrati dal fatto che la transazione sia 'bloccata' perché pensano di aver perso fondi.

Il grafico nel servizio di stima delle commissioni bitcoinfees.21.co di seguito mostra la stima in tempo reale delle commissioni in incrementi di 10 satoshi / byte e il tempo di conferma previsto (minuti e blocchi) delle transazioni delle commissioni per ciascun intervallo. Per ogni intervallo di addebito (ad esempio, 61-70 satoshi / byte), due barre orizzontali mostrano il numero di transazioni non confermate (1405) e il numero totale di transazioni nelle ultime 24 ore (102.975) e la commissione rientra in questo intervallo . Secondo il grafico, la tariffa ad alta priorità consigliata in questo momento è 80 satoshi / byte, il che potrebbe causare il mining della transazione nel blocco successivo (zero block delay). Secondo un ragionevole giudizio, la dimensione di una transazione regolare è di circa 226 byte, quindi la tariffa consigliata per una singola transazione è di 18.080 satoshi (0.00018080 BTC).

I dati di stima dei costi possono essere ottenuti tramite una semplice API REST HTTP ( https://bitcoinfees.21.co/api/v1/fees/recommended) per recuperare. Ad esempio, utilizza il comando curl sulla riga di comando:

API per la stima dei costi operativi

$ curl https://bitcoinfees.21.co/api/v1/fees/recommended {'fastestFee':80,'halfHourFee':80,'hourFee':60}

L'API restituisce un oggetto JSON sotto forma di satoshi per byte attraverso la stima dei costi, ottenendo così la 'conferma più rapida' (tariffa più rapida) e la conferma in tre blocchi (tariffa mezza ora) e sei blocchi (tariffa ora).

6-2bitcoinfees.21.co

La formula di calcolo delle dimensioni

1) Metodo 1

Nelle transazioni Bitcoin, se la commissione del minatore è troppo alta o troppo bassa, la transazione non può essere generata con successo, quindi dobbiamo anche calcolare la commissione del minatore nella transazione. Ecco una formula che può stimare approssimativamente la dimensione richiesta per la transazione, quindi moltiplicare la dimensione per Price per bit Puoi ottenere la commissione del minatore.

size = inputsNum * 148 + outputsNum * 34 + 10 (+/-) 40
  • inputNum si riferisce al numero di input nella transazione
  • outputNum si riferisce al numero di output nella transazione
  • L'ultima parte è il metodo più preciso di addizione e sottrazione 40


    Approccio più preciso

    Metodo 2) Tramite bitcoinjs
    // Usa test network #Remove testnet in un ambiente formale
    var testnet = bitcoin.networks.testnet

    // Recupera l'oggetto della transazione firmata

    var alice = bitcoin.ECPair.fromWIF
    ('cTRWz1dALytHZP3WVdGDjmi5Z9gijqPjmzTM6C2BwHQQ3EqNtNQW', testnet)

    // Recupera l'oggetto per creare la transazione

    const test_txb = nuovo bitcoin.TransactionBuilder (testnet)

    test_txb.setVersion (2)

    test_txb.addInput ('93dcd13d86e540dbb58f9d705ebc5dfe1ec6bfc1161b5f84d230cc6ad819e09a', 1)

    test_txb.addOutput ('2MwpK3YP1QpTB9WNSrixATRegwLPaGrZCRF', 9995788)

    test_txb.addOutput ('mqgEi75mTAJWbHABQ6PsbSfrXzUcZBeM4s', 200000000)

    // Firma la transazione

    test_txb.sign (0, alice)
    // Transazione esadecimale

    var rawtransaction = test_txb.build (). toHex ()
    // Ottieni la dimensione specifica

    var size = rawtransaction.length / 2

  • Indirizzo del browser del blocco Testnet:
    Hash della transazione: c376f70c3e77519841c7b3088ad19f9a22c56cc57410ff4ec3f84c737696a875
    https://test-insight.bitpay.com/tx/c376f70c3e77519841c7b3088ad19f9a22c56cc57410ff4ec3f84c737696a875