
рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рдмрд┐рдЯрдХреЙрдЗрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░, рд╕рднреА рдиреЛрдбреНрд╕ рдХрдИ UTXO рдкрд░ рдЖрдо рд╕рд╣рдорддрд┐ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ: рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд╕рд┐рдХреНрдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдХрд┐рд╕рдХреЛ, рдФрд░ рдХрд┐рди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рддред UTXOs рдХрд╛ рдПрдХ рд╕реЗрдЯ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдиреЛрдб рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдирджреЗрди рдХреА рд╡реИрдзрддрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпреБрдХреНрдд рдмреНрд▓реЙрдХ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░рдВрдЯреА рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рддрд░рд╣ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдЬрд┐рддрдиреА рдХрдо рд╣реЛрдЧреА, рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдиреЛрдб рдХреЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ, рдЬреЛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдиреЛрдб рдХреЛ рд╕рд╕реНрддреЗ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИ, рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдФрд░ рдЬрд┐рд╕рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рдиреЛрдЯ рдореЗрдВ, рд╣рдо рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдкреЗрдкрд░ рдХреЗ рд╕рд╣-рд▓реЗрдЦрдХ, рдереЗрдбрд┐рдпрд╕ рдбреНрд░реЗрдЬрд╛ - рдпреВрдЯреНрд░реАрдХреНрд╕реЛ: рдХреЗ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд░рд╕реНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗ , рдмрд┐рдЯрдХреЙрдЗрди UTXO рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╣реИрд╢-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдЪрд╛рдпрдХ , рдЬреЛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рдмрд┐рдЯрдХреЙрдЗрди рдХреА рд╢рд╛рд╢реНрд╡рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХреА рдорд╛рдкрдиреАрдпрддрд╛ рдереАред "рдПрдХ рдмреИрдВрдХ рдХреЗ рдорд╛рд▓рд┐рдХ" рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрд▓рдмреНрдз рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмрд┐рдЯрдХреЙрдЗрди рдореЗрдВ, рдЙрдкрд▓рдмреНрдз рдлрдВрдбреЛрдВ рдХреЛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - UTXO- рд╕реЗрдЯред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╣рдЬ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╛рдпрджреЗрдордВрдж рд╣реИ, рдПрдХ рдРрд╕реЗ рджреГрд╢реНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрдЯреБрдП рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ "рд╕рдВрддреБрд▓рди" рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЧреЛрдкрдиреАрдпрддрд╛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CoinJoin рдХрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ)ред
рд▓реЗрди-рджреЗрди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ (рдЬрд┐рд╕реЗ рдмреНрд▓реЙрдХрдЪреЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд┐рдЯрдХреЙрдЗрди рдХрд╛ рд▓реЗрди-рджреЗрди рдЗрддрд┐рд╣рд╛рд╕ рд▓рдЧрднрдЧ 200 рдЬреАрдмреА рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдкрд░ рд╣реИ, рдФрд░ рдмрдврд╝рддрд╛ рд░рд╣рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИ, рд▓рдЧрднрдЧ 4 рдЬреАрдмреА рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд┐рдХреНрдХреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рднреА рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдврд╝рддреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдо рджрд░ рдкрд░ рдФрд░ рдХрднреА-рдХрднреА рдШрдЯ рднреА рдЬрд╛рддреА рд╣реИ (рджреЗрдЦреЗрдВ KDPV)ред
рд▓рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ (рдПрд╕рдкреАрд╡реА) рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдиреНрдпреВрдирддрдо рд░рд╛рдЬреНрдп (рдпреВрдЯреАрдПрдХреНрд╕рдУ-рд╕реЗрдЯ) рдХреЛ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред
UTXO рдФрд░ UTXO- рд╕реЗрдЯ
UTXO (Unspent Transaction Output) - рдмрд┐рдирд╛ рд▓реЗрди-рджреЗрди рдХреЗ рдЙрддреНрдкрд╛рджрди, рд▓реЗрдирджреЗрди рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдкреНрд░рддреНрдпреЗрдХ рд╕рдЯреЛрд╢реА рдХреА рдпрд╛рддреНрд░рд╛ рдХрд╛ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБред рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдирдП рд▓реЗрдирджреЗрди рдХреЗ рдЗрдирдкреБрдЯ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╕рдордп рдЦрд░реНрдЪ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдпреВрдЯреАрдПрдХреНрд╕рдУ-рд╕реЗрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдирдП UTXO рд╣рдореЗрд╢рд╛ рд▓реЗрдирджреЗрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:
- рдмрд┐рдирд╛ рдЗрдирдкреБрдЯ рдХреЗ рдХреЙрдЗрдирдмреЗрд╕ рд▓реЗрдирджреЗрди: рдЦрдирд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдХреНрдХреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рджреМрд░рд╛рди рдирдП UTXO рдмрдирд╛рдПрдВ
- рдкрд╛рд░рдВрдкрд░рд┐рдХ рд▓реЗрдирджреЗрди: рдореМрдЬреВрджрд╛ UTXO рдХреЗ рдХреБрдЫ рд╕реЗрдЯ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реБрдП рдирдП UTXO рдмрдирд╛рдПрдВ
UTXO рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛:

рдмрдЯреБрдП рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрдЯреБрдП рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз UTXO рдХреА рд░рд╛рд╢рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЦрд░реНрдЪ (рд╢реЗрд╖) рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рд┐рдХреНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдиреЛрдб, рдбрдмрд▓ рдЦрд░реНрдЪ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рджреМрд░рд╛рди рд╕рднреА UTXOs рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдиреЛрдб рдореЗрдВ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- UTXO- рд╕реЗрдЯ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд
- UTXO- рд╕реЗрдЯ рд╡рд┐рд▓реЛрдкрди
- рд╕реЗрдЯ рдореЗрдВ рдПрдХрд▓ UTXO рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ
рд╕реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддреЗ рд╣реБрдП, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдмреИрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рд╕рд╛рдмрд┐рдд рдХрд░реЗрдВред
UTXO рдХреЗ рд▓рд┐рдП рдмреИрдЯрд░рд┐рдпреЛрдВ
рдХрдИ рдпреВрдЯреАрдПрдХреНрд╕рдУ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ ред
UTXO- рд╕реЗрдЯ рдХреЛ рдмреНрд▓реЙрдХ рдЪреЗрди (IBD, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреНрд▓реЙрдХ рдбрд╛рдЙрдирд▓реЛрдб) рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдлреНрд▓рд╛рдИ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдкреВрд░реНрдг рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рддреНрдпреЗрдХ рдирдП рдФрд░ рд╕рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдмреНрд▓реЙрдХ рд╕реЗ рд▓реЗрдирджреЗрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рдЧрднрдЧ 200 GB рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЦреЛрдВ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред IBD рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕реВрдЦреЗ рдЕрд╡рд╢реЗрд╖реЛрдВ рдореЗрдВ UTXO- рд╕реЗрдЯ рд▓рдЧрднрдЧ 4 GB рдХрд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреИрдЯрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдлрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдо рд╕рд╣рдорддрд┐ рдирд┐рдпрдо рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕рдмреВрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрд▓рдмреНрдз рдлрдВрдбреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХрд╛ рдмреЛрдЭ рдЗрди рдлрдВрдбреЛрдВ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХрд╛ рд╕рдмреВрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдмреИрдЯрд░реА рдХреЛ рд╕реЗрдЯ рдХрд╛ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣реАрдд рджреГрд╢реНрдп рдХрд╛ рдЖрдХрд╛рд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╛ рддреЛ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП , рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрддреНрд╡ рдХреЗ рд╕реЗрдЯ рдФрд░ рдЖрдХрд╛рд░ рдХреА рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрджрд╛рд╕реАрдирддрд╛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ n рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╕реЗрдЯ рдХреА рд╢рдХреНрддрд┐ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдЪрд╛рдпрдХ рдХреЛ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдорд╛рдг (рд╕рдорд╛рд╡реЗрд╢ рдкреНрд░рдорд╛рдг) рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдорд╛рдг рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдмреИрдЯрд░реА рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕реЗрдЯ рд╕реЗ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреА рдмреИрдЯрд░реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рд╕рдВрдмрд░ 2018 рдореЗрдВ рдмреЛрди, рдмрдВрдЬ, рдлрд┐рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд░рдПрд╕рдП рдмреИрдЯрд░реА рд╣реИ ред рдРрд╕реА рдмреИрдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЭрд╛ рд░рд╣рд╕реНрдп (рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реЗрдЯрдЕрдк) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрд┐рдЯрдХреЙрдЗрди рдЬреИрд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рдпрдХ рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рдирдХрд╛рд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЧреБрдкреНрдд рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рд░рд┐рд╕рд╛рд╡ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдВрдЪрд╛рдпрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ UTXO- рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдиреЛрдбреНрд╕ рдХреЛ рд╕реНрдкреВрдлрд╝ рдХрд░рдХреЗ UTXO рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдирдХрд▓реА рд╕рдмреВрдд рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред
Utreexo
Utreexo рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдерд╛рдбреЗрд╕ рдбреНрд░реЗрдЬрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп-рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдмреИрдЯрд░реА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
Utreexo рдЖрджрд░реНрд╢ рдмрд╛рдЗрдирд░реА рдорд░реНрдХрд▓ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рдЬрдВрдЧрд▓ рд╣реИ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдкрдХреНрдХреА рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрдпрдХреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИ, рдЬреЛ рд╕реЗрдЯ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдмреИрдЯрд░реА рдХреА рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрд░рдЪрдирд╛
рдмреИрдЯрд░реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝реЛрдВ рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЗрдбрд╝реЛрдВ рдХреЛ рдКрдВрдЪрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рд╕рдмрд╕реЗ рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЖрдкрдХреЛ рдмреИрдЯрд░реА рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╡рд┐рд▓рдп рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рд▓реЗрдЦрдХ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЬрдВрдЧрд▓ рдореЗрдВ рд╕рднреА рдкреЗрдбрд╝ рдкрд░рд┐рдкреВрд░реНрдг рд╣реИрдВ, рдЙрдирдХреА рдКрдВрдЪрд╛рдИ рджреЛ рдХреА рд╢рдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╢реАрдЯреНрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ рдХреЛ рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рдирдП рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреЗрдбрд╝реЛрдВ рдХреЗ рд░реВрдЯ рдиреЛрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, Utreexo рдмреИрдЯрд░реА рдХрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рджреГрд╢реНрдп рд░реВрдЯ рдиреЛрдбреНрд╕ (рдорд░реНрдХрд▓ рд░реВрдЯ) рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рди рдХрд┐ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдкреВрд░реЗ рдЬрдВрдЧрд▓ ред
рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреА рдХрд▓реНрдкрдирд╛ Vec<Option<Hash>>
ред рд╡реИрдХрд▓реНрдкрд┐рдХ Option<Hash>
рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рддрддреНрд╡ рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреЗрдбрд╝ рдХреЗ рдкрд╛рд╕ рдЙрдЪрд┐рдд рдКрдВрдЪрд╛рдИ рд╡рд╛рд▓рд╛ рдкреЗрдбрд╝ рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо 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,
рдмреИрдЯрд░реА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд░реВрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рдмрд╛рд╕реНрдХреЗрдЯ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВ
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); }
- рдкрд╣рд▓реА рдЯреЛрдХрд░реА
new_roots[0]
рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рддрддреНрд╡реЛрдВ ( insertions
рд╕рд░рдгреА) рдХреЛ рдЬреЛрдбрд╝реЗрдВ:

рдХреЛрдб new_roots[0].extend_from_slice(insertions);
- рдмрд╛рдХреА рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдЯреЛрдХрд░реА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЖрдЗрдЯрдореЛрдВ рдХреА "рд╕рд╣реВрд▓рд┐рдпрдд" рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдВ:
- рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд╡рд╛рд▓реЗ рд╕рднреА рдмрд╛рд╕реНрдХреЗрдЯ рдХреЗ рд▓рд┐рдП:
- рд╣рдо рдЯреЛрдХрд░реА рдХреЗ рдЕрдВрдд рд╕реЗ рджреЛ рддрддреНрд╡ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдореВрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ
- рдЧрдгрдирд╛ рдХреА рдЧрдИ рдкреИрд░реЗрдВрдЯ рдХреЛ рдЕрдЧрд▓реА рдЯреЛрдХрд░реА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рдХреЛрдб for i in 0..new_roots.len() { while new_roots[i].len() > 1 {
- рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмреИрдЯрд░реА рд╕рд░рдгреА рдореЗрдВ рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рдмрд╛рд╕реНрдХреЗрдЯ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рдХреЛрдб for (i, bucket) in new_roots.into_iter().enumerate() {
рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдХреНрд╖реНрдп рдмрдирд╛рдирд╛
рдмреИрдЯрд░реА рдореЗрдВ рддрддреНрд╡ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ Proof
( Proof
) рдорд░реНрдХрд▓ (рдорд░реНрдХрд▓ рдкрде) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ ProofStep
рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдЧрд░ рд░рд╛рд╕реНрддрд╛ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдмреВрдд рдЧрд▓рдд рд╣реИред
рддрддреНрд╡ ( 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 } }
рд╕рд╛рдХреНрд╖реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдХрд╛ рдкреНрд░рдорд╛рдг
рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдорд╛рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ (рд╕рдорд╛рд╡реЗрд╢рди рдкреНрд░рдорд╛рдг) рдорд░реНрдХрд▓реЗ рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ рдореВрд▓ рддрддреНрд╡ рдХреА рдУрд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ:
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, ¤t_parent) } else { parent(¤t_parent, &s.hash) }; } current_parent == expected } else { false } }
рдиреЗрддреНрд░рд╣реАрди:
рдП рдХреЗ рд▓рд┐рдП рд╕рд╛рдХреНрд╖реНрдп рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдЗрдЯрдо рд╣рдЯрд╛рдПрдВ
рдПрдХ рддрддреНрд╡ рдХреЛ рдмреИрдЯрд░реА рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реИрдз рдкреНрд░рдорд╛рдг рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рддрддреНрд╡ рд╣реИред рдкреНрд░рдорд╛рдг рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдмреИрдЯрд░реА рдХреЗ рдирдП рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рдорд╛рдг рдЕрдм рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЯреЛрдХрд░реА рдХреЗ рджреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрд░рд╛рдмрд░ рдКрдБрдЪрд╛рдИ рдХреЗ рд╕рд╛рде рдорд░реНрдХрд▓ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рдЯреЛрдХрд░рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЖрдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
- рдмрд╛рд╕реНрдХреЗрдЯ рдореЗрдВ рдорд░реНрдХрд▓ рдкрде рдХреЗ рдЪрд░рдгреЛрдВ рд╕реЗ рдЖрдЗрдЯрдо рдбрд╛рд▓реЗрдВ рдЯреЛрдХрд░реА рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ
- рд╣рдо рдореВрд▓ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдкреНрд░рдорд╛рдг рд╕реЗ рд░рд╛рд╕реНрддрд╛ рдирд┐рдХрд▓рддрд╛ рд╣реИред
- рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде, рд╣рдо рдирдП рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛрдбрд╝реЗ рдореЗрдВ рдмрд╛рд╕реНрдХреЗрдЯ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдШ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдЧрд▓реА рдЯреЛрдХрд░реА рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ
рдХреЛрдб 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 {
рдЖрдЗрдЯрдо "рдП" рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛:

рдореМрдЬреВрджрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдПрдХреАрдХрд░рдг
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдмреИрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдиреЛрдбреНрд╕ рд╕рднреА UTXO рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ UTXO- рд╕реЗрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмреВрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╣рдо рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдиреЛрдб рдХрд╣реЗрдВрдЧреЗ рдЬреЛ UTXO рдмреИрдЯрд░реА рдХреЙрдореНрдкреИрдХреНрдЯ (рдХреЙрдореНрдкреИрдХреНрдЯ-рд╕реНрдЯреЗрдЯ рдиреЛрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреИрдЯрд░реА рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ - рдкреВрд░реНрдг (рдкреВрд░реНрдг рдиреЛрдб)ред рдиреЛрдбреНрд╕ рдХреЗ рджреЛ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдЙрдиреНрд╣реЗрдВ рдПрдХрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рдХреЛ UTXO рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдкреНрд░рдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдг рдиреЛрдбреНрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдФрд░ рд╕рдордиреНрд╡рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ Utreexo рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рдкреАрдЫреЗ рд░рд╣ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдмрд┐рдЯрдХреЙрдЗрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЛрдбреНрд╕ - рдкреБрд▓реЛрдВ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЧ рдкреЗрд╢ рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред рдПрдХ рдкреБрд▓ рдиреЛрдб рдПрдХ рдкреВрд░реНрдг рдиреЛрдб рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреВрдЯреАрдПрдХреНрд╕рдУ рдмреИрдЯрд░реА рдФрд░ рдпреВрдЯреАрдПрдХреНрд╕рдУ-рд╕реЗрдЯ рд╕реЗ рд╕рднреА рдпреВрдЯреАрдПрдХреНрд╕рдУ рдХреЗ рд▓рд┐рдП рд╕рд╛рдХреНрд╖реНрдп рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдкреБрд▓ рдирдП рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмреИрдЯрд░реА рдФрд░ рд╕рд╛рдХреНрд╖реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирдП рдмреНрд▓реЙрдХ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред рдмреИрдЯрд░реА рдФрд░ рд╕рдмреВрддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдРрд╕реЗ рдиреЛрдбреНрд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рднрд╛рд░ рдирд╣реАрдВ рдбрд╛рд▓рддрд╛ рд╣реИред рдкреБрд▓ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрд▓рд┐рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ: рдХреНрд░рдо рдХреЛ рдХреНрд░рдо рдореЗрдВ рд░рдЦреЗрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реИрд╢ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИрд╢, рдЬрд╣рд╛рдБ n рд╕реЗрдЯ UTXO рдХреА рд╢рдХреНрддрд┐ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

рдкреБрд▓ рдореМрдЬреВрджрд╛ рдиреЛрдбреНрд╕ рдХреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдкреВрд░реНрдг рдиреЛрдбреНрд╕ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрд╕ рдореЗрдВ рд▓реЗрдирджреЗрди рдФрд░ рдмреНрд▓реЙрдХ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмреНрд░рд┐рдЬ рдиреЛрдбреНрд╕ рдкреВрд░реНрдг рдиреЛрдбреНрд╕ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпреВрдЯреНрд░реАрдХреНрд╕реЛ рдмреИрдЯрд░реА рдбреЗрдЯрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рднреА UTXO рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рдХреНрд╖реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдмреНрд░рд┐рдЬ рдиреЛрдб рдЦреБрдж рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдкреВрд░реНрдг рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдиреЛрдб рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдб рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреБрд▓ рджреЛрдиреЛрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдореМрдЬреВрджрд╛ рдкреВрд░реНрдг рдиреЛрдбреНрд╕ рд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рддрдХред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрди-рджреЗрди рдкреНрд░рд╛рд░реВрдк рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП UTXO рдХреЗ рд▓рд┐рдП рд╕рдмреВрддреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рдХреЙрдореНрдкреИрдХреНрдЯ рдиреЛрдб рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рд▓реЗрди-рджреЗрди рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкреБрд▓ рдиреЛрдбреНрд╕ рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ Utreexo рдмреИрдЯрд░реА рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдФрд░ Rust рдореЗрдВ рдЗрд╕рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬреЛ рдмреИрдЯрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдиреЛрдбреНрд╕ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░реЗрдЧрд╛ред рдХреЙрдореНрдкреИрдХреНрдЯ рдХреИрдЪ рдХрд╛ рд▓рд╛рдн рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ, рдЬреЛ рдХрдИ UTXO рдХреА рд╢рдХреНрддрд┐ рдкрд░ рд▓рдШреБрдЧрдгрдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░рддрд╛ рд╣реИред рдиреБрдХрд╕рд╛рди рд╕рдмреВрдд рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЛрдб рдЯреНрд░реИрдлрд╝рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдХреНрд╖реНрдп рдПрдХрддреНрд░реАрдХрд░рдг рддрдХрдиреАрдХ (рдЬрдм рдПрдХ рдкреНрд░рдорд╛рдг рдХрдИ рддрддреНрд╡реЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдХреИрд╢рд┐рдВрдЧ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн :