bulletproofs are used in monero. they are a type of non-interactive zero-knowledge proof which allow transactions to be verified without knowledge of the sender, receiver or amount without the need for trusted setup. a secure method for verifying transactions is necessary to prevent senders sending currency they do not possess. bulletproofs replaced the previous method in october 2018, improving on them by requiring much less data for each transaction, particularly for transactions with multiple outputs (receivers).