Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจนเฉ‡ เจนเจฌเจฐ!

เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉˆเจŸเจตเจฐเจ• เจตเจฟเฉฑเจš, เจธเจพเจฐเฉ‡ เจจเฉ‹เจก, เจธเจนเจฟเจฎเจคเฉ€ เจฆเฉเจ†เจฐเจพ, UTXOs เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน 'เจคเฉ‡ เจธเจนเจฟเจฎเจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจ: เจ–เจฐเจš เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเฉฐเจจเฉ‡ เจธเจฟเฉฑเจ•เฉ‡ เจ‰เจชเจฒเจฌเจง เจนเจจ, เจ•เจฟเจธ เจจเฉ‚เฉฐ เจฌเจฟเจฒเจ•เฉเจฒ, เจ…เจคเฉ‡ เจ•เจฟเจจเฉเจนเจพเจ‚ เจธเจผเจฐเจคเจพเจ‚ เจ…เจงเฉ€เจจเฅค UTXO เจธเฉˆเฉฑเจŸ เจ‡เฉฑเจ• เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‹เจก เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉˆเฉฑเจŸ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจจเฉ‹เจก เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€ เจตเฉˆเจงเจคเจพ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ‡เจธ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจš, เจธเฉเจฐเฉฑเจ–เจฟเจ† เจ—เจพเจฐเฉฐเจŸเฉ€ เจจเฉ‚เฉฐ เจ—เฉเจ†เจ เจฌเจฟเจจเจพเจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจ‡เจธ เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ เจนเจฐ เจธเฉฐเจญเจต เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพ เจฐเจนเฉ€เจ†เจ‚ เจนเจจเฅค เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจœเจฟเฉฐเจจเฉ€ เจ˜เฉฑเจŸ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‹เจก เจฆเฉ€เจ†เจ‚ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฒเฉ‹เฉœเจพเจ‚ เจœเจฟเฉฐเจจเฉ€เจ†เจ‚ เจ˜เฉฑเจŸ เจนเจจ, เจœเฉ‹ เจ•เจฟ เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‹เจก เจจเฉ‚เฉฐ เจธเจธเจคเฉ‡ เจตเจฟเฉฑเจš เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเจพ เจตเจฟเจธเจคเจพเจฐ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเฉ€ เจธเจฅเจฟเจฐเจคเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจนเจฟ-เจฒเฉ‡เจ–เจ• เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจคเจพเจœเจผเจพ เจชเฉเจฐเจธเจคเจพเจต เจฆเจพ เจ‡เฉฑเจ• เจœเฉฐเจ—เจพเจฒ เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจชเฉ‹เจธเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจฒเจพเจˆเจŸเจจเจฟเฉฐเจ— เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจชเฉ‡เจชเจฐ, เจฅเฉˆเจกเฉ€เจ…เจธ เจกเฉเจฐเจพเจ‡เจœเจพ - Utreexo: เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ UTXO เจธเฉˆเฉฑเจŸ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ‡เฉฑเจ• เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจนเฉˆเจธเจผ-เจ…เจงเจพเจฐเจฟเจค เจธเฉฐเจšเจตเจ•, เจœเฉ‹ เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจธเจฎเฉฑเจธเจฟเจ† เจ•เฉ€ เจนเฉˆ?

เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจฆเฉ€เจ†เจ‚ เจธเจฆเฉ€เจตเฉ€ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจ‡เจธเจฆเฉ€ เจฎเจพเจชเจฏเฉ‹เจ—เจคเจพ เจนเฉˆเฅค "เจคเฉเจนเจพเจกเฉ‡ เจ†เจชเจฃเฉ‡ เจฌเฉˆเจ‚เจ•" เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจฒเจˆ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจญเจพเจ—เฉ€เจฆเจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจธเจพเจฐเฉ‡ เจซเฉฐเจกเจพเจ‚ เจฆเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจตเจฟเฉฑเจš, เจ‰เจชเจฒเจฌเจง เจซเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจฐเจš เจจเจพ เจ•เฉ€เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ - เจ‡เฉฑเจ• UTXO-เจธเฉˆเฉฑเจŸเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจจเฉเจญเจตเฉ€ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจน เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจฒเจพเจ—เฉ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• "เจตเจพเจฒเจฟเจŸ" เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจเจ‚เจŸเจฐเฉ€ เจตเจœเฉ‹เจ‚ "เจฌเฉˆเจฒเฉˆเจ‚เจธ" เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ—เฉ‹เจชเจจเฉ€เจฏเจคเจพ เจตเฉ€ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ (เจ‰เจฆเจพ. CoinJoin).

เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ‡เจคเจฟเจนเจพเจธ (เจœเจฟเจธ เจจเฉ‚เฉฐ เจฌเจฒเจพเจ•เจšเฉˆเจจ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ) เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจตเจฟเจšเจ•เจพเจฐ เจซเจฐเจ• เจ•เจฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆเฅค เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ‡เจคเจฟเจนเจพเจธ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจฒเจ—เจญเจ— 200 GB เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจตเจงเจฆเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ 4 GB เจฆเฉ‡ เจ†เจฐเจกเจฐ 'เจคเฉ‡ เจฌเจนเฉเจค เจ›เฉ‹เจŸเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจ‡เจธ เจคเฉฑเจฅ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจ•เฉ‹เจฒ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจธเจฟเฉฑเจ•เฉ‡ เจนเจจ. เจ‡เจธ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจตเฉ€ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเจงเจฆเฉ€ เจนเฉˆ, เจชเจฐ เจฌเจนเฉเจค เจนเฉŒเจฒเฉ€ เจฆเจฐ เจจเจพเจฒ เจ…เจคเฉ‡ เจ•เจˆ เจตเจพเจฐ เจ˜เฉฑเจŸ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจฆเฉ‡เจ–เฉ‹ CDPV)เฅค

เจฒเจพเจˆเจŸ เจ•เจฒเจพเจ‡เฉฐเจŸเจธ (SPVs) เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เฉ‹เจˆ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเจฅเจฟเจคเฉ€ (UTXO-เจธเฉˆเฉฑเจŸ) เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจฒเจˆ เจตเจชเจพเจฐเจ• เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค

UTXO เจ…เจคเฉ‡ UTXO- เจธเฉˆเฉฑเจŸ

UTXO (เจ…เจจ-เจธเจชเฉˆเจ‚เจก เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ) เจ‡เฉฑเจ• เจ–เจฐเจš เจจเจพ เจ•เฉ€เจคเจพ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจนเฉˆ, เจนเจฐเฉ‡เจ• เจธเจคเฉ‹เจธเจผเฉ€ เจฆเฉ€ เจฏเจพเจคเจฐเจพ เจฆเจพ เจ…เฉฐเจค เจฌเจฟเฉฐเจฆเฉ‚ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ–เจฐเจš เจจเจพ เจ•เฉ€เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเจตเฉ‡เจ‚ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ‡ เจ‡เจจเจชเฉเฉฑเจŸ เจฌเจฃ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ–เจฐเจš เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ (เจ–เจฐเจš) เจ…เจคเฉ‡ UTXO-เจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจจเจตเฉ‡เจ‚ UTXO เจนเจฎเฉ‡เจธเจผเจพ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ:

  • เจ‡เจจเจชเฉเจŸเจธ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเจฟเฉฑเจ•เจพเจฌเฉ‡เจธ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ: เจœเจฆเฉ‹เจ‚ เจฎเจพเจˆเจจเจฐ เจธเจฟเฉฑเจ•เฉ‡ เจœเจพเจฐเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจจ เจคเจพเจ‚ เจจเจตเฉ‡เจ‚ UTXOs เจฌเจฃเจพเจ“
  • เจจเจฟเจฏเจฎเจค เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ: เจฎเฉŒเจœเฉ‚เจฆเจพ UTXOs เจฆเฉ‡ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจ–เจฐเจš เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจจเจตเฉ‡เจ‚ UTXOs เจฌเจฃเจพเจ“

UTXO เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†:
Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจตเจพเจฒเจฟเจŸ เจ–เจฐเจš เจ•เจฐเจจ เจฒเจˆ เจ‰เจชเจฒเจฌเจง UTXO เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจ–เจฐเจš (เจธเฉฐเจคเฉเจฒเจจ) เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจธเจฟเฉฑเจ•เจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ—เจฟเจฃเจฆเฉ‡ เจนเจจเฅค

เจนเจฐเฉ‡เจ• เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‹เจก, เจฆเฉ‹เจนเจฐเฉ‡ เจ–เจฐเจšเฉ‡ เจฆเฉ€เจ†เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฒเจˆ, เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ ะฒัะตั… เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ UTXO เจนเจฐ เจ‡เจ• เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจนเจฐ เจ‡เจ• เจฌเจฒเจพเจ•.

เจจเฉ‹เจก เจตเจฟเฉฑเจš เจคเจฐเจ• เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

  • UTXO-เจธเฉˆเฉฑเจŸ เจตเจฟเฉฑเจš เจœเฉ‹เฉœ
  • UTXO-เจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจฎเจฟเจŸเจพเจ‰เจฃเจพ
  • เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ UTXO เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฌเจพเจฐเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเจˆ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจคเฉฑเจค เจœเฉ‹เฉœเจจ เจ…เจคเฉ‡ เจนเจŸเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจ•เจพเจ‡เจฎ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ, เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉฑเจค เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ…เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจฟเจ• เจธเฉฐเจšเจตเจ•.

UTXO เจฒเจˆ เจฌเฉˆเจŸเจฐเฉ€เจ†เจ‚

เจฎเจฒเจŸเฉ€เจชเจฒ UTXO เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจฌเฉˆเจŸเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจตเจฟเจšเจพเจฐ เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ เจชเจนเจฟเจฒเจพเจ‚.

UTXO-เจธเฉˆเฉฑเจŸ เจซเจฒเจพเจˆ 'เจคเฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจฌเจฒเจพเจ• เจกเจพเจ‰เจจเจฒเฉ‹เจก (IBD) เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจชเฉ‚เจฐเฉ‡ เจ…เจคเฉ‡ เจธเจฅเจพเจˆ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจจเฉˆเจŸเจตเจฐเจ• เจฆเฉ‡ เจนเจฐเฉ‡เจ• เจจเจตเฉ‡เจ‚ เจ…เจคเฉ‡ เจธเจนเฉ€ เจฌเจฒเจพเจ• เจคเฉ‹เจ‚ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจธเจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฌเจฆเจฒ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเจˆ เจฒเจ—เจญเจ— 200 GB เจฌเจฒเจพเจ• เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจ…เจคเฉ‡ เจฒเฉฑเจ–เจพเจ‚ เจกเจฟเจœเฉ€เจŸเจฒ เจฆเจธเจคเจ–เจคเจพเจ‚ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค IBD เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจชเฉ‚เจฐเฉ€ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเจฒ เจฒเจพเจˆเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ UTXO- เจธเฉˆเฉฑเจŸ เจฒเจ—เจญเจ— 4 GB เจ‰เฉฑเจคเฉ‡ เจ•เจฌเจœเจผเจพ เจ•เจฐเฉ‡เจ—เจพเฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจ•เฉฑเจคเจฐ เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจซเฉฐเจกเจพเจ‚ เจฒเจˆ เจธเจนเจฟเจฎเจคเฉ€ เจฆเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจฟเจ• เจธเจฌเฉ‚เจคเจพเจ‚ เจฆเฉ€ เจคเจธเจฆเฉ€เจ• เจ…เจคเฉ‡ เจ‰เจคเจชเฉฐเจจ เจ•เจฐเจจ เจฒเจˆ เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจซเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจ เจฆเจพ เจฌเฉ‹เจ เจ‰เจนเจจเจพเจ‚ เจซเฉฐเจกเจพเจ‚ เจฆเฉ‡ เจฎเจพเจฒเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจคเจฌเจฆเฉ€เจฒ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจ…เจคเฉ‡ เจฎเจพเจฒเจ•เฉ€ เจฆเจพ เจธเจฌเฉ‚เจค เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจธเฉฐเจšเจตเจ• เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจธเฉฐเจ–เฉ‡เจช เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจ•เจฟเจนเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจฆเจพ เจ†เจ•เจพเจฐ เจœเจพเจ‚ เจคเจพเจ‚ เจธเจฅเจฟเจฐ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ, เจœเจพเจ‚ เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจฎเฉเฉฑเจ–เจคเจพ เจ…เจคเฉ‡ เจคเฉฑเจค เจฆเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจš เจธเจฌเจฒเฉ€เจจเฉ€เจ…เจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจงเจพเจ“, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ, เจœเจฟเฉฑเจฅเฉ‡ n เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจฎเฉเฉฑเจ–เจคเจพ เจนเฉˆเฅค

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจธเฉฐเจšเจตเจ• เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉฑเจค เจฆเฉ‡ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฆเจพ เจธเจฌเฉ‚เจค (เจธเจผเจพเจฎเจฒ เจ•เจฐเจจ เจฆเจพ เจธเจฌเฉ‚เจค) เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจธเจฌเฉ‚เจค เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจฌเฉˆเจŸเจฐเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจคเฉฑเจค เจœเฉ‹เฉœเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจคเฉฑเจค เจนเจŸเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ…เจœเจฟเจนเฉ€ เจฌเฉˆเจŸเจฐเฉ€ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจฆเจธเฉฐเจฌเจฐ 2018 เจตเจฟเฉฑเจš Boneh, Bunz, Fisch เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค RSA เจธเฉฐเจšเจตเจ•. เจ…เจœเจฟเจนเฉ‡ เจธเฉฐเจšเจตเจ• เจ•เฉ‹เจฒ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจฆเจพ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจ†เจ•เจพเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ—เฉเจชเจค เจธเจพเจ‚เจเจพ เจ•เฉ€เจคเจพ (เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจธเฉˆเฉฑเจŸเจ…เฉฑเจช)เฅค เจ‡เจน เจฒเฉ‹เฉœ เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจตเจฐเจ—เฉ‡ เจญเจฐเฉ‹เจธเฉ‡เจฎเฉฐเจฆ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจพเจ‚ เจฒเจˆ เจ…เจœเจฟเจนเฉ‡ เจธเฉฐเจšเจตเจ• เจฆเฉ€ เจฒเจพเจ—เฉ‚ เจนเฉ‹เจฃ เจจเฉ‚เฉฐ เจจเจ•เจพเจฐเจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ—เฉเจชเจค เจ‰เจคเจชเจพเจฆเจจ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจกเจพเจŸเจพ เจฒเฉ€เจ• เจนเฉ‹เจฃ เจจเจพเจฒ เจนเจฎเจฒเจพเจตเจฐเจพเจ‚ เจจเฉ‚เฉฐ UTXO เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเจพ เจเฉ‚เจ เจพ เจธเจฌเฉ‚เจค เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ…เจœเจฟเจนเฉ‡ เจธเฉฐเจšเจตเจ• เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ UTXO-เจธเฉˆเฉฑเจŸ เจจเจพเจฒ เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจงเฉ‹เจ–เจพ เจฆเฉ‡ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‰เจคเจฐเฉ‡เจ•เจธเฉ‹

เจฅเฉˆเจกเฉ€เจ…เจธ เจกเฉเจฐเจพเจˆเจœเจพ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจฏเฉ‚เจŸเจฐเฉ€เจเจ•เจธเฉ‹ เจกเจฟเจœเจผเจพเจˆเจจ เจ‡เจธ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจฌเฉˆเจŸเจฐเฉ€ เจฌเจฟเจจเจพ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจธเฉˆเฉฑเจŸเจ…เฉฑเจช.

Utreexo เจธเฉฐเจชเฉ‚เจฐเจฃ เจฌเจพเจˆเจจเจฐเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจœเฉฐเจ—เจฒ เจนเฉˆ เจฎเจฐเจ•เจฒ เจฆเฉ‡ เจฐเฉเฉฑเจ– เจ…เจคเฉ‡ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ‡ เจตเจฟเจšเจพเจฐเจพเจ‚ เจฆเจพ เจตเจฟเจ•เจพเจธ เจนเฉˆ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจŸเจก pki เจฒเจˆ เจ•เฉเจธเจผเจฒ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจเจ•เจฎเฉเจฒเฉ‡เจŸเจฐ, เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจเจพเฅค

เจฌเฉˆเจŸเจฐเฉ€ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจขเจพเจ‚เจšเจพ

เจฌเฉˆเจŸเจฐเฉ€ เจธเฉˆเฉฑเจฒ เจ†เจฆเจฐเจธเจผ เจฌเจพเจˆเจจเจฐเฉ€ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเฉ‡ เจœเฉฐเจ—เจฒ เจตเจฟเฉฑเจš เจตเจฟเจตเจธเจฅเจฟเจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค เจฐเฉเฉฑเจ– เจ‰เจšเจพเจˆ เจฆเฉเจ†เจฐเจพ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ. เจ‡เจน เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจธเจญ เจคเฉ‹เจ‚ เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจตเจœเฉ‹เจ‚ เจšเฉเจฃเฉ€ เจ—เจˆ เจธเฉ€ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเฉˆเจŸเจฐเฉ€ 'เจคเฉ‡ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฆเฉŒเจฐเจพเจจ เจฆเจฐเจ–เจคเจพเจ‚ เจฆเฉ‡ เจตเจฟเจฒเฉ€เจจ เจนเฉ‹เจฃ เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจฒเฉ‡เจ–เจ• เจจเฉ‹เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเฉฐเจ—เจฒ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจฐเฉเฉฑเจ– เจ†เจฆเจฐเจธเจผ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ‰เจšเจพเจˆ เจจเฉ‚เฉฐ เจฆเฉ‹ เจฆเฉ€ เจธเจผเจ•เจคเฉ€ เจตเจœเฉ‹เจ‚ เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เฉเจฆเจฐเจคเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฆเฉ‹ เจฆเฉ€เจ†เจ‚ เจธเจผเจ•เจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจœเฉ‹เฉœ เจตเจœเฉ‹เจ‚ เจฆเจฐเจธเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ, เจชเฉฑเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจฌเจพเจˆเจจเจฐเฉ€ เจฐเฉเฉฑเจ–เจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจคเฉฑเจค เจœเฉ‹เฉœเจจ เจฒเจˆ เจ—เจฟเจ†เจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจธเจฟเจฐเจซเจผ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจŸ เจจเฉ‹เจกเจพเจ‚ เจฌเจพเจฐเฉ‡.

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจฏเฉ‚เจŸเจฐเฉ€เจเจ•เจธเฉ‹ เจธเฉฐเจšเจตเจ• เจฆเฉ€ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจฐเฉ‚เจŸ เจจเฉ‹เจกเจพเจ‚ (เจฎเจฐเจ•เจฒ เจฐเฉ‚เจŸ) เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเจพ เจธเจพเจฐเจพ เจœเฉฐเจ—เจฒ เจจเจนเฉ€เจ‚.

เจ†เจ‰ เจฐเฉ‚เจŸ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ Vec<Option<Hash>>. เจตเจฟเจ•เจฒเจชเจฟเจ• เจ•เจฟเจธเจฎ Option<Hash> เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจฐเฉ‚เจŸ เจคเฉฑเจค เจ—เฉเฉฐเจฎ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจธเฉฐเจšเจตเจ• เจตเจฟเฉฑเจš เจขเฉเจ•เจตเฉ€เจ‚ เจ‰เจšเจพเจˆ เจตเจพเจฒเจพ เจ•เฉ‹เจˆ เจฐเฉเฉฑเจ– เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

/// SHA-256 ั…ะตัˆ
#[derive(Copy, Clone, Hash, Eq, PartialEq)]
pub struct Hash(pub [u8; 32]);

#[derive(Debug, Clone)]
pub struct Utreexo {
    pub roots: Vec<Option<Hash>>,
}

impl Utreexo {
    pub fn new(capacity: usize) -> Self {
        Utreexo {
            roots: vec![None; capacity],
        }
    }
}

เจคเฉฑเจค เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจซเฉฐเจ•เจธเจผเจจ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเฉ€เจ parent(), เจœเฉ‹ เจฆเฉ‹ เจฆเจฟเฉฑเจคเฉ‡ เจคเฉฑเจคเจพเจ‚ เจฒเจˆ เจฎเฉ‚เจฒ เจจเฉ‹เจก เจจเฉ‚เฉฐ เจชเจ›เจพเจฃเจฆเจพ เจนเฉˆเฅค

parent() เจซเฉฐเจ•เจธเจผเจจ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฎเจฐเจ•เจฒ เจฆเฉ‡ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚, เจฆเฉ‹ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจฆเจพ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจ‡เฉฑเจ• เจจเฉ‹เจก เจนเฉˆ เจœเฉ‹ เจšเจพเจˆเจฒเจก เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจนเฉˆเจธเจผเจพเจ‚ เจฆเฉ‡ เจœเฉ‹เฉœเจจ เจฆเฉ‡ เจนเฉˆเจธเจผ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ:

fn hash(bytes: &[u8]) -> Hash {
    let mut sha = Sha256::new();
    sha.input(bytes);
    let res = sha.result();
    let mut res_bytes = [0u8; 32];
    res_bytes.copy_from_slice(res.as_slice());

    Hash(res_bytes)
}

fn parent(left: &Hash, right: &Hash) -> Hash {
    let concat = left
        .0
        .into_iter()
        .chain(right.0.into_iter())
        .map(|b| *b)
        .collect::<Vec<_>>();

    hash(&concat[..])
}

เจฒเฉ‡เจ–เจ• เจจเฉ‹เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจšเจพเจฐเจฒเจธ เจฌเฉŒเจ‡เจฒเจพเจ—เฉเจเจŸ, เจชเฉ€เจ…เจฐเฉ‡-เจเจฒเฉ‡เจจ เจซเฉŒเจ•, เจ…เจฆเฉ€ เจธเจผเจฎเฉ€เจฐ เจ…เจคเฉ‡ เจธเฉ‡เจฌเฉ‡เจธเจŸเฉ€เจ…เจจ เจœเจผเจฟเจฎเจฐ เจฆเฉเจ†เจฐเจพ เจตเจฐเจฃเจฟเจค เจนเจฎเจฒเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฒเจˆ
เจกเจฟเจฅเจฐเจก เจนเฉˆเจธเจผ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจฆเฉ‚เจœเจพ เจชเฉเจฐเฉ€เจฎเฉ‡เจœ เจนเจฎเจฒเฉ‡, เจฆเฉ‹ เจนเฉˆเจธเจผเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฐเฉเฉฑเจ– เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฆเฉ€ เจ‰เจšเจพเจˆ เจจเฉ‚เฉฐ เจตเฉ€ เจœเฉ‹เฉœเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจเจ•เจฏเฉ‚เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจคเฉฑเจค เจœเฉ‹เฉœเจฆเฉ‡ เจนเฉ‹, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจŸเจฐเฉˆเจ• เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เจฟเจนเฉœเฉ‡ เจฐเฉ‚เจŸ เจคเฉฑเจค เจฌเจฆเจฒเฉ‡ เจ—เจ เจนเจจเฅค เจคเฉเจนเจพเจกเฉ‡ เจฆเฉเจ†เจฐเจพ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจฐเฉ‡เจ• เจคเฉฑเจค เจฒเจˆ เจฐเฉ‚เจŸ เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ‡ เจฎเจพเจฐเจ— เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจ•เฉ‡, เจคเฉเจธเฉ€เจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‡เจนเจจเจพเจ‚ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเจพ เจธเจฌเฉ‚เจค เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเฉˆเจ• เจ•เจฐเฉ‹ เจœเจฟเจตเฉ‡เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเฉ‡ เจนเฉ‹

เจ•เฉ€เจคเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจ เจฒเจˆ, เจ†เจ“ เจฌเจฃเจคเจฐ เจฆเจพ เจเจฒเจพเจจ เจ•เจฐเฉ€เจ Update, เจœเฉ‹ เจจเฉ‹เจก เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐ เจ•เจฐเฉ‡เจ—เจพเฅค

#[derive(Debug)]
pub struct Update<'a> {
    pub utreexo: &'a mut Utreexo,
    // ProofStep ั…ั€ะฐะฝะธั‚ "ัะพัะตะดะฐ" ัะปะตะผะตะฝั‚ะฐ ะธ ะตะณะพ ะฟะพะปะพะถะตะฝะธะต
    pub updated: HashMap<Hash, ProofStep>,
}

เจฌเฉˆเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉฑเจค เจœเฉ‹เฉœเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉˆ:

  • เจฐเฉ‚เจŸ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจŸเฉ‹เจ•เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจเจฐเฉ‡ เจฌเจฃเจพเจ“ new_roots เจ…เจคเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฐเฉ‚เจŸ เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจฐเฉฑเจ–เฉ‹, เจนเจฐเฉ‡เจ• เจฌเจพเจฒเจŸเฉ€ เจฒเจˆ เจ‡เฉฑเจ•:

เจ•เฉ‹เจก

let mut new_roots = Vec::new();

for root in self.roots.iter() {
    let mut vec = Vec::<Hash>::new();
    if let Some(hash) = root {
        vec.push(*hash);
    }

    new_roots.push(vec);
}

  • เจœเฉ‹เฉœเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเฉ‹ (เจเจฐเฉ‡ insertions) เจชเจนเจฟเจฒเฉ€ เจ•เจพเจฐเจŸ เจฒเจˆ new_roots[0]:

Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจ•เฉ‹เจก

new_roots[0].extend_from_slice(insertions);

  • เจชเจนเจฟเจฒเฉ€ เจŸเฉ‹เจ•เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ†เจˆเจŸเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจ•เฉ€ เจฆเฉ‡ เจจเจพเจฒ เจœเฉ‹เฉœเฉ‹:
    • เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจ†เจˆเจŸเจฎเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เฉฑเจกเฉ€เจ†เจ‚ เจฒเจˆ:
      1. เจŸเฉ‹เจ•เจฐเฉ€ เจฆเฉ‡ เจธเจฟเจฐเฉ‡ เจคเฉ‹เจ‚ เจฆเฉ‹ เจคเฉฑเจค เจฒเจ“, เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเฉ‹, เจฆเฉ‹เจตเฉ‡เจ‚ เจคเฉฑเจค เจนเจŸเจพเจ“
      2. เจ—เจฃเจจเจพ เจ•เฉ€เจคเฉ‡ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจจเฉ‚เฉฐ เจ…เจ—เจฒเฉ‡ เจ•เจพเจฐเจŸ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจ•เฉ‹เจก

for i in 0..new_roots.len() {
    while new_roots[i].len() > 1 {
        // ะžะฑัŠะตะดะธะฝัะตะผ ะดะฒะฐ ัะปะตะผะตะฝั‚ะฐ ะฒ ะพะดะธะฝ ะธ ัƒะดะฐะปัะตะผ ะธั…
        let a = new_roots[i][new_roots[i].len() - 2];
        let b = new_roots[i][new_roots[i].len() - 1];
        new_roots[i].pop();
        new_roots[i].pop();
        let hash = self.parent(&a, &b);

        // ะะฐั€ะฐั‰ะธะฒะฐะตะผ ะบะพะปะธั‡ะตัั‚ะฒะพ ะบะพั€ะทะธะฝ ะตัะปะธ ั‚ั€ะตะฑัƒะตั‚ัั
        if new_roots.len() <= i + 1 {
            new_roots.push(vec![]);
        }

        // ะŸะพะผะตั‰ะฐะตะผ ัะปะตะผะตะฝั‚ ะฒ ัะปะตะดัƒัŽั‰ัƒัŽ ะบะพั€ะทะธะฝัƒ
        new_roots[i + 1].push(hash);

        // ะะต ะทะฐะฑั‹ะฒะฐะตะผ ะพั‚ัะปะตะถะธะฒะฐั‚ัŒ ะธะทะผะตะฝะตะฝะธั;
        // ัั‚ะพ ะฟั€ะธะณะพะดะธั‚ัั ะดะปั ะณะตะฝะตั€ะฐั†ะธะธ ะดะพะบะฐะทะฐั‚ะตะปัŒัั‚ะฒะฐ ะดะพะฑะฐะฒะปะตะฝะธั ัะปะตะผะตะฝั‚ะพะฒ
        updated.insert(a, ProofStep { hash: b, is_left: false });
        updated.insert(b, ProofStep {hash: a, is_left: true });
    }
}

  • เจฐเฉ‚เจŸ เจเจฒเฉ€เจฎเฉˆเจ‚เจŸเจธ เจจเฉ‚เฉฐ เจฌเจฟเจจ เจคเฉ‹เจ‚ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจธเฉฐเจšเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจเจฐเฉ‡ เจตเจฟเฉฑเจš เจฒเฉˆ เจœเจพเจ“

เจ•เฉ‹เจก

for (i, bucket) in new_roots.into_iter().enumerate() {
    // ะะฐั€ะฐั‰ะธะฒะฐะตะผ ะฐะบะบัƒะผัƒะปัั‚ะพั€ ะตัะปะธ ั‚ั€ะตะฑัƒะตั‚ัั
    if self.roots.len() <= i {
        self.roots.push(None);
    }

    if bucket.is_empty() {
        self.roots[i] = None;
    } else {
        self.roots[i] = Some(bucket[0]);
    }
}

เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจคเฉฑเจคเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฌเฉ‚เจค เจฌเจฃเจพเจ‰เจฃเจพ

เจฌเฉˆเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจฒ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเจจ เจฆเจพ เจธเจฌเฉ‚เจค (Proof) เจฎเจฐเจ•เจฒ เจชเจพเจฅ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจšเฉ‡เจจ เจธเจผเจพเจฎเจฒ เจนเฉˆ ProofStep. เจœเฉ‡เจ•เจฐ เจฐเจธเจคเจพ เจ•เจฟเจคเฉ‡ เจตเฉ€ เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ, เจคเจพเจ‚ เจธเจฌเฉ‚เจค เจ—เจฒเจค เจนเฉˆเฅค

/// ะ•ะดะธะฝะธั‡ะฝั‹ะน ัˆะฐะณ ะฝะฐ ะฟัƒั‚ะธ ะบ ัะปะตะผะตะฝั‚ัƒ ะฒ ะดะตั€ะตะฒะต ะœะตั€ะบะปะฐ.
#[derive(Debug, Copy, Clone)]
pub struct ProofStep {
    pub hash: Hash,
    pub is_left: bool,
}

/// ะ”ะพะบะฐะทะฐั‚ะตะปัŒัั‚ะฒะพ ะฒะบะปัŽั‡ะตะฝะธั ัะปะตะผะตะฝั‚ะฐ. ะกะพะดะตั€ะถะธั‚ ัะฐะผ ัะปะตะผะตะฝั‚ ะธ ะฟัƒั‚ัŒ ะบ ะฝะตะผัƒ.
#[derive(Debug, Clone)]
pub struct Proof {
    pub steps: Vec<ProofStep>,
    pub leaf: Hash,
}

เจ‡เฉฑเจ• เจคเฉฑเจค (เจขเจพเจ‚เจšเจพ) เจœเฉ‹เฉœเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ Update), เจคเฉเจธเฉ€เจ‚ เจธเจฌเฉ‚เจค เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจฌเฉˆเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉฑเจค เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจนเจฐ เจ‡เฉฑเจ• เจ•เจฆเจฎ เจจเฉ‚เฉฐ เจฎเจฐเจ•เจฒ เจฆเฉ‡ เจฎเจพเจฐเจ— เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚, เจœเฉ‹ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจธเจฌเฉ‚เจค เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพ:

เจ•เฉ‹เจก

impl<'a> Update<'a> {
    pub fn prove(&self, leaf: &Hash) -> Proof {
        let mut proof = Proof {
            steps: vec![],
            leaf: *leaf,
        };

        let mut item = *leaf;
        while let Some(s) = self.updated.get(&item) {
            proof.steps.push(*s);
            item = parent(&item, &s);
        }

        proof
    }
}

เจธเจฌเฉ‚เจค เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†

Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจ•เจฟเจธเฉ‡ เจคเฉฑเจค เจฒเจˆ เจธเจฌเฉ‚เจค เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

เจ•เจฟเจธเฉ‡ เจคเฉฑเจค เจฆเฉ‡ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฆเฉ‡ เจธเจฌเฉ‚เจค เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจฎเจพเจฐเจ•เจฒ เจฎเจพเจฐเจ— เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจ เจฒเจˆ เจ‰เจฌเจพเจฒเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ‡เจน เจฎเฉŒเจœเฉ‚เจฆเจพ เจฐเฉ‚เจŸ เจคเฉฑเจค เจตเฉฑเจฒ เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ:

pub fn verify(&self, proof: &Proof) -> bool {
    let n = proof.steps.len();
    if n >= self.roots.len() {
        return false;
    }

    let expected = self.roots[n];
    if let Some(expected) = expected {
        let mut current_parent = proof.leaf;
        for s in proof.steps.iter() {
            current_parent = if s.is_left {
                parent(&s.hash, &current_parent)
            } else {
                parent(&current_parent, &s.hash)
            };
        }

        current_parent == expected
    } else {
        false
    }
}

เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ—เจค:

เจ เจฒเจˆ เจธเจฌเฉ‚เจค เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†

Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจ†เจˆเจŸเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‡เจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เฉฑเจ• เจฌเฉˆเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจฒ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจธเจฌเฉ‚เจค เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเฉˆเฉฑเจฒ เจ‰เฉฑเจฅเฉ‡ เจนเฉˆเฅค เจธเจฌเฉ‚เจค เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจธเฉฐเจšเจคเจ•เจฐเจคเจพ เจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจฎเฉ‚เจฒ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจฆเจฟเฉฑเจคเจพ เจชเฉเจฐเจฎเจพเจฃ เจนเฉเจฃ เจธเฉฑเจš เจจเจนเฉ€เจ‚ เจฐเจนเฉ‡เจ—เจพเฅค

เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจนเฉˆ:

  1. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจธเฉ€เจ‚ เจŸเฉ‹เจ•เจฐเฉ€ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจคเฉ‹เจ‚ เจฆเฉ‹ เจฆเฉ€ เจธเจผเจ•เจคเฉ€ เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจ‰เจšเจพเจˆ เจฆเฉ‡ เจจเจพเจฒ เจฎเจฐเจ•เจฒ เจฆเฉ‡ เจฆเจฐเฉฑเจ–เจคเจพเจ‚ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ–เจพเจฒเฉ€ เจŸเฉ‹เจ•เจฐเฉ€เจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค
  2. เจ…เจธเฉ€เจ‚ เจŸเฉ‹เจ•เจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฎเจพเจฐเจ•เจฒ เจฎเจพเจฐเจ— เจฆเฉ‡ เจ•เจฆเจฎเจพเจ‚ เจคเฉ‹เจ‚ เจคเฉฑเจค เจชเจพ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚; เจŸเฉ‹เจ•เจฐเฉ€ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเฉœเจพเจ… เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจนเฉˆ
  3. เจ…เจธเฉ€เจ‚ เจฐเฉ‚เจŸ เจคเฉฑเจค เจจเฉ‚เฉฐ เจนเจŸเจพ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเจธ เจตเฉฑเจฒ เจธเจฌเฉ‚เจค เจคเฉ‹เจ‚ เจฎเจพเจฐเจ— เจœเจพเจ‚เจฆเจพ เจนเฉˆ
  4. เจœเฉ‹เฉœเจจ เจฆเฉ‡ เจจเจพเจฒ, เจ…เจธเฉ€เจ‚ เจŸเฉ‹เจ•เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจพเจ‚ เจตเจฟเฉฑเจš เจœเฉ‹เฉœ เจ•เฉ‡ เจ…เจคเฉ‡ เจฏเฉ‚เจจเฉ€เจ…เจจ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจ…เจ—เจฒเฉ€ เจŸเฉ‹เจ•เจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉˆ เจ•เฉ‡ เจจเจตเฉ‡เจ‚ เจฎเฉ‚เจฒ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ•เฉ‹เจก

fn delete(&self, proof: &Proof, new_roots: &mut Vec<Vec<Hash>>) -> Result<(), ()> {
    if self.roots.len() < proof.steps.len() || self.roots.get(proof.steps.len()).is_none() {
        return Err(());
    }

    let mut height = 0;
    let mut hash = proof.leaf;
    let mut s;

    loop {
        if height < new_roots.len() {
            let (index, ok) = self.find_root(&hash, &new_roots[height]);
            if ok {
                // Remove hash from new_roots
                new_roots[height].remove(index);

                loop {
                    if height >= proof.steps.len() {
                        if !self.roots[height]
                            .and_then(|h| Some(h == hash))
                            .unwrap_or(false)
                        {
                            return Err(());
                        }

                        return Ok(());
                    }

                    s = proof.steps[height];
                    hash = self.parent(&hash, &s);
                    height += 1;
                }
            }
        }

        if height >= proof.steps.len() {
            return Err(());
        }

        while height > new_roots.len() {
            new_roots.push(vec![]);
        }

        s = proof.steps[height];
        new_roots[height].push(s.hash);
        hash = self.parent(&hash, &s);
        height += 1;
    }
}

เจคเฉฑเจค "เจ" เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†:
Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจ‡เฉฑเจ• เจฎเฉŒเจœเฉ‚เจฆเจพ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจตเจฟเฉฑเจš เจเจ•เฉ€เจ•เจฐเจฃ

เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจธเฉฐเจšเจตเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจจเฉ‹เจกเจธ เจธเจพเจฐเฉ‡ UTXO เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• DB เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจš เจธเจ•เจฆเฉ‡ เจนเจจ เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ…เจœเฉ‡ เจตเฉ€ UTXO- เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจฌเฉ‚เจค เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจชเฉˆเจฆเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ.

เจšเจฒเฉ‹ เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‹เจก เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเฉ€เจ เจœเฉ‹ UTXO เจธเฉฐเจšเจตเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจธเฉฐเจ–เฉ‡เจช (เจ•เฉฐเจชเฉˆเจ•เจŸ-เจธเจŸเฉ‡เจŸ เจจเฉ‹เจก), เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉฐเจšเจคเจ•เจฐเจคเจพ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจชเฉเจฐเจฎเจพเจฃเจ• เจนเฉˆ เจชเฉ‚เจฐเจพ (เจชเฉ‚เจฐเจพ เจจเฉ‹เจก). เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจฆเฉ‹ เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจ†เจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจจเฉˆเจŸเจตเจฐเจ• เจตเจฟเฉฑเจš เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจชเฉˆเจฆเจพ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ UTXOs เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉ‡ เจธเจฌเฉ‚เจค เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจตเจฟเฉฑเจš เจ–เจฐเจšเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจชเฉ‚เจฐเฉ‡ เจจเฉ‹เจก เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ‡เฅค เจœเฉ‡เจ•เจฐ เจธเจพเจฐเฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจจเฉ‹เจก เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจคเจพเจฒเจฎเฉ‡เจฒ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ Utreexo เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจธเจตเจฟเจš เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจก เจชเจฟเฉฑเจ›เฉ‡ เจฐเจนเจฟ เจœเจพเจฃเจ—เฉ‡ เจ…เจคเฉ‡ เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจ—เฉ‡เฅค

เจจเฉˆเจŸเจตเจฐเจ• เจตเจฟเฉฑเจš เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจชเฉ‡เจธเจผ เจ•เจฐเจจ เจฆเจพ เจชเฉเจฐเจธเจคเจพเจต เจนเฉˆ - เจชเฉเจฒ. เจ‡เฉฑเจ• เจฌเฉเจฐเจฟเจœ เจจเฉ‹เจก เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจจเฉ‹เจก เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ Utreexo เจฌเฉˆเจŸเจฐเฉ€ เจ…เจคเฉ‡ เจชเจพเจตเจฐ-เจ†เจจ เจชเจฐเฉ‚เจซ เจจเฉ‚เฉฐ เจตเฉ€ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ ะฒัะตั… UTXO-set เจคเฉ‹เจ‚ UTXOเฅค เจฌเฉเจฐเจฟเจœ เจจเจตเฉ‡เจ‚ เจนเฉˆเจธเจผเจพเจ‚ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ‡ เจ†เจ‰เจฃ 'เจคเฉ‡ เจ‡เจ•เฉ‚เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจ…เจคเฉ‡ เจธเจฌเฉ‚เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจธเฉฐเจ—เฉเจฐเจนเจฟเจ• เจ…เจคเฉ‡ เจธเจฌเฉ‚เจคเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃเจพ เจ…เจคเฉ‡ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ เจ…เจœเจฟเจนเฉ‡ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจตเจพเจงเฉ‚ เจ•เฉฐเจชเจฟเจŠเจŸเฉ‡เจธเจผเจจเจฒ เจฒเฉ‹เจก เจจเจนเฉ€เจ‚ เจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจฌเฉเจฐเจฟเจœ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฆเฉ€ เจ•เฉเจฐเจฌเจพเจจเฉ€ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ: เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเจธเจผ, เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจนเฉˆเจธเจผ, เจœเจฟเฉฑเจฅเฉ‡ n UTXO เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจชเจพเจตเจฐ เจนเฉˆเฅค

เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ

Utreexo: เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ UTXO เจฌเจฟเจŸเจ•เฉ‹เจ‡เจจ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจเจพ

เจฌเฉเจฐเจฟเจœ เจฎเฉŒเจœเฉ‚เจฆเจพ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‡ เจฌเจฟเจจเจพเจ‚ เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€ เจจเฉˆเจŸเจตเจฐเจ• เจตเจฟเฉฑเจš เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจชเฉ‚เจฐเฉ‡ เจจเฉ‹เจก เจชเจนเจฟเจฒเจพเจ‚ เจตเจพเจ‚เจ— เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ†เจชเจธ เจตเจฟเฉฑเจš เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ…เจคเฉ‡ เจฌเจฒเจพเจ• เจตเฉฐเจกเจฆเฉ‡ เจนเจจเฅค เจฌเฉเจฐเจฟเจœ เจจเฉ‹เจก เจชเฉ‚เจฐเฉ‡ เจจเฉ‹เจก เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ Utreexo เจฌเฉˆเจŸเจฐเฉ€ เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจธเฉฐเจฎเจฟเจฒเจจ เจธเจฌเฉ‚เจคเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเจจ ะฒัะตั… เจนเฉเจฃ เจฒเจˆ UTXO. เจฌเฉเจฐเจฟเจœ เจจเฉ‹เจก เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจพ เจ‡เจธเจผเจคเจฟเจนเจพเจฐ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ, เจธเจพเจฐเฉ‡ เจชเฉ‚เจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจจเฉ‹เจก เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจธเฉฐเจ–เฉ‡เจชเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจก เจนเฉ‹เจฃ เจฆเจพ เจฆเจฟเจ–เจพเจตเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ เจชเฉเจฒ เจฆเฉ‹เจตเจพเจ‚ เจจเฉˆเจŸเจตเจฐเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เฉ‡ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ: เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเฉ‚เจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจคเฉ‹เจ‚ เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจกเจพเจ‚ เจคเฉฑเจ•เฅค เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจซเจพเจฐเจฎเฉˆเจŸ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจคเฉ‡ เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ UTXO เจชเฉเจฐเจฎเจพเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉฑเจฆ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ•เฉ‹เจˆ เจตเฉ€ เจธเฉฐเจ–เฉ‡เจช เจจเฉ‹เจก เจฌเฉเจฐเจฟเจœ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจญเจพเจ—เฉ€เจฆเจพเจฐเฉ€ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเจพเจฐเฉ‡ เจจเฉˆเจŸเจตเจฐเจ• เจชเฉเจฐเจคเฉ€เจญเจพเจ—เฉ€เจ†เจ‚ เจฒเจˆ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจธเจฟเฉฑเจŸเจพ

เจ…เจธเฉ€เจ‚ Utreexo เจฌเฉˆเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ† เจ…เจคเฉ‡ เจ‡เจธ เจฆเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจจเฉ‚เฉฐ Rust เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพเฅค เจ…เจธเฉ€เจ‚ เจจเฉˆเจŸเจตเจฐเจ• เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ† เจœเฉ‹ เจฌเฉˆเจŸเจฐเฉ€-เจ…เจงเจพเจฐเจฟเจค เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจเจ•เฉ€เจ•เจฐเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡เจตเฉ‡เจ—เจพ. เจธเฉฐเจ–เฉ‡เจช เจ•เฉˆเจšเจพเจ‚ เจฆเจพ เจซเจพเจ‡เจฆเจพ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจ†เจ•เจพเจฐ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ UTXOs เจฆเฉ‡ เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจธเจผเจ•เจคเฉ€ 'เจคเฉ‡ เจฒเจ˜เฉ‚เจ—เจฃเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ…เจœเจฟเจนเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจ…เจคเฉ‡ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจˆ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจจเฉเจ•เจธเจพเจจ เจธเจฌเฉ‚เจคเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจพเจงเฉ‚ เจจเฉ‹เจก เจŸเฉเจฐเฉˆเจซเจฟเจ• เจนเฉˆ, เจชเจฐ เจธเจฌเฉ‚เจค เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจคเจ•เจจเฉ€เจ•เจพเจ‚ (เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเจฌเฉ‚เจค เจ•เจˆ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจจเฉ‚เฉฐ เจธเจพเจฌเจค เจ•เจฐเจฆเจพ เจนเฉˆ) เจ…เจคเฉ‡ เจ•เฉˆเจšเจฟเฉฐเจ— เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจธเฉ€เจฎเจพเจตเจพเจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฐเฉฑเจ–เจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจนเจตเจพเจฒเฉ‡:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹