Zero Confirmation Transaction has been the focus of discussion in the BCH community, and a very important direction. Zero Confirmation Transaction is the idea that the seller of a Transaction does not have to wait for the Transaction to be confirmed by the node of the blockchain network, that is, to deliver something for sale, in order to achieve the purpose of immediate Transaction. Currently, transactions on the BCH chain generally take about 10 minutes to package the block and verify the transaction, which means that normally the transaction needs to wait 10 minutes to complete, which is obviously unacceptable for retailers. In order to solve this problem, 0 confirmation transaction should be carried out, 0 confirmation transaction greatly improves the transaction speed. But similarly, the 0 confirmation transaction completes the transaction before it is fully written to the block, which naturally brings the risk of double-spend transactions. The user may use the risk of 0 confirmation to spend the same amount of money twice (fraud), causing losses for the merchant.
In general, zero-confirmation transactions are considered low risk, and face-to-face transactions have very low risk control because face-to-face transactions mean security can be ensured by means other than blockchain technology. At present, the probability of zero confirmed transaction double spending is always below 1%, which is completely acceptable for retailers with small transactions. But zero confirmations of less than 1% are particularly expensive for large transactions, and there are growing calls for a technical solution to the problem. Various solutions have been proposed by the community, pre-consensus, weak blocks, etc., but progress has been extremely slow for a variety of reasons.
Awemany’s proposed solution is to use penalty measures to reduce fraud by users, using the usual zero-confirmation payment method but adding a special penalty feature to transactions where fraudsters who attempt to launch a double take will be punished. By the time OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY come online in two months, these fines can be automated, a program the authors named Zero Confirmation Forfeits, or ZCF.
A double-flower transaction costs one of its inputs repeatedly, and double-spending one of its inputs means creating two different signatures that are valid for the same public key. So if the merchant wishes to use ZCF, the merchant will require the user to conduct transactions with this structure:
Inputs: [P2PKH Inputs 1]… [P2PKH input I]
Output: [any-type-output 1]… [any-type-output O] [Forfeit Output]
[Forfeit Output] is the key requirement, and it’s also important to have all inputs of the P2PKH type and from different addresses (otherwise, the customer will lose it by default), to be able to Forfeit a 0 confirmation transaction through Zero Conf Forfeit (ZCF). [Forfeit Output] is a P2SH script to Output, pay specially prepared fines. This forfeit script will allow the use of scriptSig with just to consume Output, forfeit Output fines when miners find users trying to forfeit transactions. For miners, this is also a way to encourage miners to find two-flower transactions throughout the network. For users, Double flower transaction needs to pay double cost, double flower transaction is expensive, naturally reduce fraud, so as to effectively improve the security of 0 confirmation transaction.
For BCH network, 0 confirmation of transaction timeliness is an important way to improve its transactivity. ZCF proposed an innovative solution, which may not be the optimal solution, but also provides an innovative idea, and the community welcomes other better solutions.