Poplatok za transakciu bitcoinu a výpočet veľkosti

Bitcoin Transaction Fee



poplatok za transakciu

Väčšina transakcií zahŕňa transakčné poplatky (poplatky za ťažbu), čo je forma kompenzácie pre ťažiarov bitcoinov na zaistenie bezpečnosti siete. Samotný poplatok slúži tiež ako bezpečnostný mechanizmus, vďaka čomu je pre útočníkov ekonomicky nevýhodné preťažovať sieť transakciami. Ťažbe, poplatkom a odmenám, ktoré dostávajú baníci, sa budeme podrobnejšie venovať v kapitole o ťažbe.

Táto časť vysvetľuje, ako sú transakčné poplatky zahrnuté v typickej transakcii. Väčšina peňaženiek automaticky počíta a zahŕňa transakčné poplatky. Ak však transakcie zostavujete programovo alebo používate rozhranie príkazového riadku, musíte tieto poplatky vypočítať a zaúčtovať ručne.



Poplatok za transakciu slúži ako stimul pre minerov, aby zabalili (vyťažili) transakciu do nasledujúceho bloku súčasne ako obmedzujúci faktor, zabraňujúcemu zneužívaniu systému a účtujú malý poplatok za každú transakciu. Baníci, ktorí úspešne kopú do bloku, dostanú poplatok za ťažbu v zóne a pridajú blok do blockchainu.



Poplatok za transakciu sa počíta na základe veľkosti transakcie v kilobajtoch, nie na hodnote bitcoinovej transakcie. Všeobecne sa transakčné poplatky určujú na základe trhových síl v bitcoinovej sieti. Ťažobné zväzy uprednostňujú transakcie na základe mnohých rôznych kritérií vrátane poplatkov. Za určitých okolností môžu transakcie dokonca spracovávať zadarmo. Vo väčšine prípadov však transakčné poplatky ovplyvňujú prioritu spracovania, čo znamená, že transakcie s dostatočnými poplatkami sa s najväčšou pravdepodobnosťou zabalia do nasledujúceho vyťaženého bloku, inak sa môžu transakcie s nedostatočnými alebo žiadnymi transakčnými poplatkami oneskoriť. Na základe maximálneho úsilia sa v zásade spracováva po niekoľkých blokoch a nemusí sa spracovať vôbec. Transakčné poplatky nie sú povinné a transakcie bez transakčných poplatkov môžu byť nakoniec spracované, ale transakčné poplatky zvýšia prioritu spracovania.



Postupom času sa zmenil výpočet transakčných poplatkov a vplyv na priority spracovania transakcií. Spočiatku bol poplatok za transakciu pevne stanovený, konštantná konštanta v sieti Postupne, ako sa kapacita siete a objem transakcií neustále menia a môžu byť ovplyvnené trhovými silami, štruktúra poplatkov sa začína uvoľňovať. Minimálne od začiatku roka 2016 spôsobili obmedzenia kapacity bitcoinovej siete konkurenciu medzi transakciami, čo viedlo k vyšším poplatkom a bezplatné transakcie sa stali úplne minulosťou. Transakcie s nulovými alebo veľmi nízkymi poplatkami sa spracúvajú zriedka a niekedy sa nerozšíria ani po internete.

V Bitcoin Core sú pravidlá prevodu poplatkov stanovené voľbou minrelaytxfee. Aktuálna predvolená hodnota minrelaytxfee je 0,00001 bitcoinu na kilobajt alebo 1% milibitcoinu. Preto sú transakcie s poplatkami nižšími ako 0,0001 bitcoinu štandardne bezplatné, ale preposielajú sa, až keď bude v pamäťovej oblasti miesto, inak budú zahodené. Bitcoinové uzly môžu prepísať predvolenú stratégiu prenosu poplatkov úpravou hodnoty minrelaytxfee.

Akákoľvek bitcoinová služba, ktorá vytvára transakcie, vrátane peňaženiek, búrz, maloobchodných aplikácií atď., Musí implementovať dynamické účtovanie. Dynamické náklady je možné dosiahnuť prostredníctvom služieb odhadu nákladov tretích strán alebo zabudovaných algoritmov odhadu nákladov. Ak si nie ste istí, začnite so službou tretej strany. Ak chcete odstrániť závislosti tretích strán, mali by ste mať skúsenosti s navrhovaním a nasadením vlastných algoritmov.



Algoritmus odhadu poplatkov počíta príslušné poplatky na základe schopností siete a poplatkov poskytovaných „konkurenčnými“ transakciami. Tieto algoritmy sa pohybujú od veľmi jednoduchých (priemer alebo stredná hodnota v poslednom bloku) až po veľmi zložité (štatistická analýza). Odhadujú potrebné poplatky (v bajtoch), vďaka ktorým bude transakcia s vysokou pravdepodobnosťou vybraná a zabalená do určitého počtu blokov. Väčšina služieb poskytuje používateľom výber poplatkov s vysokou, strednou a nízkou prioritou. Vysoká priorita znamená, že používatelia platia vyššie transakčné poplatky, ale transakcie sa môžu zbaliť do nasledujúceho bloku. Stredná a nízka priorita znamená, že používatelia platia nižšie transakčné poplatky, ale potvrdenie transakcie môže trvať dlhšie.

Mnoho aplikácií peňaženky využíva na výpočet poplatkov služby tretích strán. Populárna služba je http://bitcoinfees.21.co, ktorá poskytuje API a vizuálny graf pre satoshi Bajt / bajt zobrazuje náklady na rôzne priority.

Tipy: V bitcoinovej sieti už nie sú možné statické poplatky. Nastavenie peňaženky so statickými poplatkami bude mať za následok zlý používateľský dojem, pretože transakcie sú často „zaseknuté“ a nepotvrdené. Používatelia, ktorí nerozumejú bitcoinovým transakciám a poplatkom, sú frustrovaní z toho, že sa transakcia „zasekla“, pretože si myslia, že prišli o finančné prostriedky.

Graf v službe odhadu poplatkov bitcoinfees.21.co nižšie zobrazuje odhad poplatkov v reálnom čase v krokoch po 10 satoshi / bajtoch a očakávaný čas potvrdenia (minúty a bloky) transakcií poplatkov pre každý rozsah. Pre každý rozsah poplatkov (napríklad 61 - 70 satoshi / bajt) dva vodorovné pruhy zobrazujú počet nepotvrdených transakcií (1405) a celkový počet transakcií za posledných 24 hodín (102 975) a poplatok je v tomto rozmedzí. . Podľa grafu je v súčasnosti odporúčaný poplatok s vysokou prioritou 80 satoshi / bajt, čo môže spôsobiť vyťaženie transakcie v nasledujúcom bloku (oneskorenie nulového bloku). Podľa rozumného úsudku je veľkosť bežnej transakcie približne 226 bajtov, takže odporúčaný poplatok za jednu transakciu je 18 080 satoshi (0,00018080 BTC).

Údaje o odhade nákladov je možné získať pomocou jednoduchého rozhrania HTTP REST API ( https://bitcoinfees.21.co/api/v1/fees/recommended) na získanie. Napríklad použite príkaz curl na príkazovom riadku:

API na odhad prevádzkových nákladov

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

Rozhranie API vracia objekt JSON vo forme satoshi na bajt prostredníctvom odhadu nákladov, čím dosahuje „najrýchlejšie potvrdenie“ (najrýchlejší poplatok) a potvrdenie v troch blokoch (halfHourFee) a šiestich blokoch (hourFee).

6-2bitcoinfee.21.co

Výpočtový vzorec veľkosti

1) Metóda 1

Ak je v bitcoinových transakciách nastavený príliš vysoký alebo príliš nízky poplatok za ťažbu, transakciu nie je možné úspešne vygenerovať, takže v transakcii musíme vypočítať aj poplatok za ťažbu. Tu je vzorec, ktorý dokáže zhruba odhadnúť veľkosť požadovanú pre transakciu, a potom Vynásobiť veľkosť pomocou Price per bit Môžete získať poplatok za ťažbu.

size = inputsNum * 148 + outputsNum * 34 + 10 (+/-) 40
  • inputNum sa týka počtu vstupov v transakcii
  • outputNum sa týka počtu výstupov v transakcii
  • Posledná časť je presnejšia metóda sčítania a odčítania 40


    Presnejší prístup

    Metóda 2) Cez bitcoinjs
    // Použite testovaciu sieť # Odstrániť testnet vo formálnom prostredí
    var testnet = bitcoin.networks.testnet

    // Získajte objekt podpísanej transakcie

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

    // Získajte objekt na vytvorenie transakcie

    const test_txb = nový bitcoin.TransactionBuilder (testnet)

    test_txb.setVersion (2)

    test_txb.addInput ('93dcd13d86e540dbb58f9d705ebc5dfe1ec6bfc1161b5f84d230cc6ad819e09a', 1)

    test_txb.addOutput ('2MwpK3YP1QpTB9WNSrixATRegwLPaGrZCRF', 9995788)

    test_txb.addOutput ('mqgEi75mTAJWbHABQ6PsbSfrXzUcZBeM4s', 200000000)

    // Podpíšte transakciu

    test_txb.sign (0, alice)
    // Transakčný hex

    var rawtransaction = test_txb.build (). toHex ()
    // Získajte konkrétnu veľkosť

    var veľkosť = rawtransaction.length / 2

  • Testnet blokovať adresu prehliadača:
    Tento hash transakcie: c376f70c3e77519841c7b3088ad19f9a22c56cc57410ff4ec3f84c737696a875
    https://test-insight.bitpay.com/tx/c376f70c3e77519841c7b3088ad19f9a22c56cc57410ff4ec3f84c737696a875