рдорд░реНрдХрд▓ рдЯреНрд░реА: рд░рд╕реНрдЯреА рдФрд░ рдлрд╛рд╕реНрдЯ

рдЫрд╡рд┐


рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдХреА рдЦреЛрдЬ рдХреАред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдЫрд╛рдкреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдерд╛ ред рдЕрдм рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реВрдЪреА рд╕реЗ рдХреБрдЫ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реА рдкрд╕рдВрдж рдорд░реНрдХрд▓реЗ рдХреЗ рдкреЗрдбрд╝ рдкрд░ рдкрдбрд╝реАред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ:


  • рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ
  • рджреЗрдЦреЛ рдХреНрдпрд╛ рдЬрдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ
  • рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВ
  • рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ

рдорд░реНрдХрд▓ рдЯреНрд░реА


рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рдкреЗрдбрд╝ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдЕрдзреВрд░рд╛ рд╣реЛрдЧрд╛ред


рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ


рдорд░реНрдХрд▓реЗ рдХреЗ рдкреЗрдбрд╝ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ 1979 рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдХрдЪреЗрди рдХреА рдмрджреМрд▓рдд рдЗрд╕рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдмрдврд╝реАред рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдмреНрд▓реЙрдХ рдЪреЗрди рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ (рдмрд┐рдЯрдХреЙрдЗрди рдХреЗ рд▓рд┐рдП рдпрд╣ 200 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ), рдФрд░ рд╕рднреА рдиреЛрдбреНрд╕ рдЗрд╕реЗ рдкрдВрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрд▓реАрдлреЛрди рдпрд╛ рдХреИрд╢ рд░рдЬрд┐рд╕реНрдЯрд░ред рдлрд┐рд░ рднреА, рдЙрдиреНрд╣реЗрдВ рдмреНрд▓реЙрдХ рдореЗрдВ рдЗрд╕ рдпрд╛ рдЙрд╕ рд▓реЗрдирджреЗрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдПрд╕рдкреАрд╡реА - рд╕рд░рд▓реАрдХреГрдд рднреБрдЧрддрд╛рди рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдПрдХ рдкреЗрдбрд╝ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдпрд╣ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╡реГрдХреНрд╖ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрддреНрддреЗ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рд╣реИрд╢ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрдбрд╝реЛрд╕реА рдкрддреНрддреЛрдВ рдХреЗ рд╣реИрд╢ рдХреЛ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдорд╡рд░реНрддреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдШрдирди рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╣реЗрдбрд░ рдореЗрдВ рдЪрд┐рддреНрд░ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕рднреА рдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╣реИрд╢ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЬрдбрд╝ рдмрджрд▓ рдЬрд╛рдПрдЧреАред


рдПрдХ рдкреЗрдбрд╝ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рдПрдХ рдорд░реНрдХрд▓ рдЯреНрд░реА рд╣реЛрдиреЗ рд╕реЗ, рдЖрдк рдХрд┐рд╕реА рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗрди-рджреЗрди рд╣реИрд╢ рд╕реЗ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдкреНрд░рдорд╛рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо Tx2 рдХреЗ рд▓реЗрди-рджреЗрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг (Hash3, Hash01) рд╣реЛрдЧрд╛ред рдПрд╕рдкреАрд╡реА рдореЗрдВ рднреА рдЗрд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рд╣реЗрдбрд░ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдмреНрдпрд╛рдЬ рдХрд╛ рд▓реЗрди-рджреЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╡рд╛рд▓реЗ рдиреЛрдб рд╕реЗ рдкреНрд░рдорд╛рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдПрдХ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, Tx2 рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реЛрдЧрд╛:


hash(Hash01, hash(Hash2, Hash3)) = Root Hash 

рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рдмреНрд▓реЙрдХ рд╣реЗрдбрд░ рдХреА рдЬрдбрд╝ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирдХрд▓реА рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЗрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЕрднрд┐рд╕рд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИрдВ


рдЬрдВрдЧ рдПрдХ рдпреБрд╡рд╛ рднрд╛рд╖рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд░реНрдХрд▓ рдкреЗрдбрд╝ рдХреЗ рдХрдИ рдЕрд╣рд╕рд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЧрд┐рддреБрдм рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛, рдлрд┐рд▓рд╣рд╛рд▓ 56, рдпрд╣ рд╕реА рдФрд░ рд╕реА + + рд╕рдВрдпреБрдХреНрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЧреЛ рдЙрдиреНрд╣реЗрдВ 80 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЦрдбрд╝рд╛ рдХрд░рддрд╛ рд╣реИред


SpinResearch / merkle.rs


рдореЗрд░реА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рд┐рддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ред


рдЗрд╕ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдл рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрдВрдЧ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЪреНрдЪреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдЕрднрд┐рднрд╛рд╡рдХреЛрдВ рддрдХ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдЪрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред


рд╕рд╛рдХреНрд╖реНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреЛрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╕рд╣реА рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реАрдЯ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрде рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред


рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ (n + 1) -рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдореЗрд░реЗ рд╡реЗрдХреНрдЯрд░-рдорд░реНрдХрд▓-рдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреАрдердм рдкрд░ рд╣реИред


рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг


рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рдкреЗрдбрд╝ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛: рдЕрдзрд┐рдХ рдХреИрд╢ рд╣рд┐рдЯ рдФрд░ рдмреЗрд╣рддрд░ рдкреНрд░реАрд▓реЛрдбред рд╕реНрдореГрддрд┐ рд╕реЗ рдмрд┐рдЦрд░реА рд╣реБрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдШреВрдордиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рд╣реИрд╢ рд╕рдорд╛рди рд▓рдВрдмрд╛рдИ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреАред рд╕рд░рдгреА рдореЗрдВ рдорд░реНрдХрд▓ рдЯреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
рдЫрд╡рд┐


рд╕рдмреВрдд


рдЬрдм рдЖрдк рдкреЗрдбрд╝ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рд▓реАрдл рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реИрд╢рдкреЙрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдХреЛрдИ рдкрддреНрддреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдЖрдк рддреБрд░рдВрдд рдЙрд╕ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрдбрд╝ рддрдХ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рдорд╛рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдореИрдВрдиреЗ HashMap рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛рдпрд╛ред


рдХреЙрдирдЯреИрд╢рди рдФрд░ рд╣реИрд╢рд┐рдВрдЧ


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕рдм рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рджреЛ рд╣реИрд╢ рд▓реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЧреЛрдВрдж рдХрд░реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЧреИрд░-рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣реИрд╢ (H0, H1) (рд╣реИрд╢ (H1, H0)ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╕рдмреВрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкрдбрд╝реЛрд╕реА рдиреЛрдб рдХрд┐рд╕ рддрд░рдл рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдмрд╕ рд╣реИрд╢рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдиреЛрдбреНрд╕ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Tx2 рджрд┐рдпрд╛, рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЪреЗрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


 hash(hash(Hash2, Hash3), Hash01) = Root Hash 

рдЬрдм рдЖрдкрдХреЛ рдСрд░реНрдбрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рд╕рд░рдгреА рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 pub fn validate(&self, proof: &Vec<&[u8]>) -> bool { proof[2..].iter() .fold( get_pair_hash(proof[0], proof[1], self.algo), |a, b| get_pair_hash(a.as_ref(), b, self.algo) ).as_ref() == self.get_root() } 

рд╢реВрдиреНрдп рддрддреНрд╡ рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рд╣реИрд╢ рд╣реИ, рдкрд╣рд▓рд╛ рдЗрд╕рдХрд╛ рдкрдбрд╝реЛрд╕реА рд╣реИред


рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!


рдХрд╣рд╛рдиреА рдПрдХ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛ рдХреЗ рдмрд┐рдирд╛ рдЕрдзреВрд░реА рд╣реЛрдЧреА, рдЬреЛ рдореБрдЭреЗ рдкреЗрдбрд╝ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдорд╛рдирджрдВрдб рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рд╕реНрд╡рдпрдВ рдпрд╣рд╛рдВ рд╣реИрдВ ред рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЯреНрд░реАрд╡реЙрдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВ , рдЬрд┐рд╕реЗ рджреЛрдиреЛрдВ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 pub trait TreeWrapper<V> { fn create(&self, c: &mut Criterion, counts: Vec<usize>, data: Vec<Vec<V>>, title: String); fn find(&self, c: &mut Criterion, counts: Vec<usize>, data: Vec<Vec<V>>, title: String); fn validate(&self, c: &mut Criterion, counts: Vec<usize>, data: Vec<Vec<V>>, title: String); } 

рджреЛрдиреЛрдВ рдкреЗрдбрд╝ рдПрдХ рд╣реА рд░рд┐рдВрдЧ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдЖрдо рд▓рд┐рдпрд╛ред


рд╣реИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЗрдбрд╝реЛрдВ рдХреА рддреБрд▓рдирд╛ рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ: (500, 1000, 1500, 2000, 2500 3000)ред 2500 - 3000 рдЗрд╕ рд╕рдордп рдмрд┐рдЯрдХреЙрдЗрди рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реИред


рд╕рднреА рд░реЗрдЦрд╛рдВрдХрди рдкрд░, рдПрдХреНрд╕ рдЕрдХреНрд╖ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдпрд╛ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдЬрд┐рддрдирд╛ рдмреБрд░рд╛ рд╣реЛрдЧрд╛ред


рд╡реГрдХреНрд╖ рдмрдирд╛рдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛


рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рдЯреНрд░реА рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдЧреНрд░рд╛рдл рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред 500 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП, 1.5 рдЧреБрдирд╛, рдФрд░ 3000 рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3.6 рдЧреБрдирд╛ред рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЕрд░реЗрдЦреАрдп рдкреНрд░рдХреГрддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддреБрд▓рдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ рд╡реЗрдХреНрдЯрд░ рдкреЗрдбрд╝ рдХреЗ рджреЛ рд╡реЗрд░рд┐рдПрдВрдЯ рдЬреЛрдбрд╝реЗ: рд╣рд╢рдк рдХреЗ рд╕рд╛рде рдФрд░ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ред рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рднрд░рдиреЗ рд╕реЗ рд▓рдЧрднрдЧ 20% рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдг рдмрдирд╛рддреЗ рд╕рдордп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЫрд╡рд┐


рднрд╡рди рдкреНрд░рдорд╛рдг


рдпрд╣рд╛рдВ рдЖрдк рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреЛрдЬ рдХреА рд╕реНрдкрд╖реНрдЯ рдЕрдХреНрд╖рдорддрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдирдкреБрдЯ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдпрд╣ рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЖрдк рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рд╢реАрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд▓реЙрдЧ (рдПрди) рдЬрдЯрд┐рд▓рддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛ рдкреВрд░реНрд╡-рд╣реИрд╢реЗрдб рд╣реИ, рддреЛ рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рдордп рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛, рдЬрдЯрд┐рд▓рддрд╛ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рддреА рд╣реИ рдФрд░ рдЬрд╛рдирд╡рд░ рдмрд▓ рдЦреЛрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред
рдЫрд╡рд┐


рдкреНрд░рдорд╛рдгреЛрдВ рдХреА рдорд╛рдиреНрдпрддрд╛


рдпрд╣ рдЖрдЦрд┐рд░реА рдСрдкрд░реЗрд╢рди рд╣реИред рдпрд╣ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рд╣реИрд╢ рдЧрдгрдирд╛ рд╣реИред
рдЫрд╡рд┐


рдкрд░рд┐рдгрд╛рдо


  • рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧрд╛ред рдХреЛрдб рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рднреА рдХрдо рд╣реЛ рдЧрдИ рд╣реИред
  • рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдиреЛрдбреНрд╕ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддреЗрдЬреА рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред

рдереЛрдбрд╝рд╛ рдЬрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


  • рдХрд╕реМрдЯреА рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд╕рд╛рде рд╕реБрд╕рдЬреНрдЬрд┐рдд рдФрд╕рдд рдореВрд▓реНрдпреЛрдВ рдФрд░ рд╡рд┐рдЪрд▓рди рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдПрдХ рд╣реА рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдоред
  • рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреА рдХрдореА рдЬреАрд╡рди рдореЗрдВ рдмрд╣реБрдд рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
  • рдореИрдХреНрд░реЛрдЬрд╝ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдВрддреНрд░ рд╣реИрдВред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреЗрдбрд╝ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЦреБрдж рдЦреБрд╢ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
  • рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рд╕рдВрдХрд▓рдХ рдЗрд╕рдХреА рдореЗрдореЛрд░реА рдЬрд╛рдВрдЪ рд╕реЗ рдКрдм рдЧрдпрд╛ рд╣реИред рдореЗрд░реА рдЖрд░рдВрднрд┐рдХ рдзрд╛рд░рдгрд╛ рдЬреЛ рд░рд╕реНрдЯ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рд╣реА рдерд╛ред
    рдЫрд╡рд┐

рд╕рдВрджрд░реНрдн


Source: https://habr.com/ru/post/hi455260/


All Articles