Dust
比特幣粉塵限制是否也包括礦工費?
我讀過比特幣現金交易的粉塵限制是多少?少於 546 Satoshi 的小額交易被礦工拒絕,但我很困惑。
這是否僅限於輸入或輸出的總和(不包括礦工費)?
我正在嘗試在 JavaScript 上實現比特幣測試網錢包,
async function signTransaction(fromECPair, to, amountToSend) { const address = getP2pkhAddress(fromECPair); const balance = await getBalance(address); const utxo = await getUtxo(address); const tx = new Bitcoin.TransactionBuilder(BitcoinNetwork); for (let i = 0; i < utxo.length; i++) { tx.addInput(utxo[i].txid, utxo[i].vout); } let transactionFee = (148*utxo.length + 34*2 + 10) * price_per_byte; let amountToKeep = balance - amountToSend - transactionFee; tx.addOutput(to, amountToSend); tx.addOutput(address, amountToKeep); for (let i = 0; i < utxo.length; i++) { tx.sign(i, fromECPair); } }
我剛剛使用小於 546 satoshi 的輸出之一進行了交易,因此至少在測試網<https://chain.so/tx/BTCTEST/021c782fbb75dab2ca843d83a3709e0e846f0d3e99c14a5826f7e18cccfeab25>上絕對有可能在這樣的輸出中進行交易 所以攻擊者可能會向我的地址發送大量垃圾郵件很小的輸出和這種幼稚的錢包實現將不起作用(簽署這些 UTXO 的成本將高於它們所擁有的價值)。防止這種情況的正確方法是什麼?
為了使交易成為標準,每個輸出必須至少為 546 satoshis。(除了 OP_RETURN 輸出,它有一些額外的規則)。
測試網不強制執行標準規則。
您仍然可以在主網的區塊中包含非標準交易,但這些交易仍然不會被中繼。
“粉塵限制”是標準規則,而不是共識規則。礦工總是可以違反這些規則,因為他們只會通過網路實現交易中繼,而不是在違反這些規則時進行交易。