рдкрд░рдорд╛рдгреБ рд╕реНрд╡реИрдк рдХреНрдпреЛрдВ рдЦрд░рд╛рдм рд╣реИрдВ рдФрд░ рдЪреИрдирд▓ рдЙрдирдХреА рдорджрдж рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ, рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рдиреЛрдкрд▓ рд╣рд╛рд░реНрдб рдлреЛрд░реНрдХ рдореЗрдВ рдХреНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрдм рдЧреИрд╕ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдХрд┐рд╕реА рднреА рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░ рдХреА рдореБрдЦреНрдп рдкреНрд░реЗрд░рдгрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред
рдкреНрд░реЛрд╡рд┐рдбреЗрдВрд╕ рдЧрдВрднреАрд░ рдерд╛, рдореИрдВрдиреЗ ICO рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдкрд╣рд▓реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд▓реЗрдирджреЗрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдЬрд▓реНрдж рд╣реА рдЦреБрдж рдХреЛ рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреАрдЫреЗ рдкрд╛рдпрд╛ред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд▓реНрдХрд┐рд╢ рдХрд┐рдмрд▓рд┐рд╢ рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╕рднреА рдХреБрдВрдЬреА рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдЦреНрдд рдирдЬрд╝рд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡рд╛рд╕реНрддреБрдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░рд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдХреНрд░рд┐рдкреНрдЯреЛрдирд╛рд▓рд┐рд╕рд┐рд╕ рдХреЗ рд▓рд╛рд▓-рдЧрд░реНрдо рдбрдВрдХ рдХреЛ рдЙрди рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рддрддреНрд╡реЛрдВ рд╕реЗ рджреВрд░ рд░рдЦрдирд╛ рдерд╛ рдЬреЛ рдореБрдЭреЗ рдкреНрд░рд┐рдп рд╣реИрдВред
рдЖрдкрдХреА рдЪрд╛рдмреА рдирд╣реАрдВ, рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ
рд╣рдо рдПрдХ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рд╡рд┐рдирд┐рдордп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдШрд░ рдкрд░ рдЗрди рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рднрдВрдбрд╛рд░рдг рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд▓реЗрдирджреЗрди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЖрдк рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдиреНрдпрд╛рдпрд╛рдзреАрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЦрд░реАрджрд╛рд░, рд╡рд┐рдХреНрд░реЗрддрд╛ рдФрд░ рдПрд╕реНрдХреНрд░реЛ: рджреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдмрдЯреБрдП рдХреЗ рд╕рд╛рде рд▓реЗрдирджреЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдПрдХ рдкреНрд░рддрд┐рднрд╛рдЧреА рдПрдХ рдПрд╕реНрдХреНрд░реМ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдорд▓рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рджреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рдкрд░рдорд╛рдгреБ рд╕реНрд╡реИрдк рдПрдХ рд╡рд┐рдирд┐рдордп рдпреЛрдЬрдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдЧрд╛рд░рдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдИрдорд╛рдирджрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рднреЗрдбрд╝рд┐рдпрд╛ рдмрдХрд░реА рдФрд░ рдЧреЛрднреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкрд╣реЗрд▓реА рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдкреАрдЫреЗ рд╣рдЯрддреЗ рд╣реИрдВ рддреЛ рдиреБрдХрд╕рд╛рди рдЙрдард╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдХреЗрд╡рд▓ рдЖрд╡рд╛рд░рд╛ рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдЖрджреЗрд╢ рдПрдХ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯрдХрд░рд╛рд╡ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдХрджрдо: рдкрд╣реЗрд▓реА
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдРрд▓рд┐рд╕ рдПрдХ рдореБрдЯреНрдареА рднрд░ рд╕реБрдмрд╣ "рдмрд┐рдЯрдХреЙрдЗрди рдпреБрдЖрди" рдХреЗ рд▓рд┐рдП рдмреЙрдм рдХреЛ рдмрд┐рдЯрдХреЙрдЗрди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
- рд╡рд╣ рдХреБрдЫ рдмрдбрд╝рд╛ рд░рд╛рдЬрд╝ рдХрд░рддреА рд╣реИ
- рдЗрд╕рд╕реЗ рдПрдХ рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
- рдпрд╣ рдмрд┐рдЯрдХреЙрдЗрди рдХреЛ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдмреЙрдм рдПрдХ тАЛтАЛрдЧреБрдкреНрдд рдкреЗрд╢ рдХрд░рдХреЗ рдкреИрд╕реЗ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рд╕реЗ рд╣реИрд╢ рдЕрдиреБрдмрдВрдз рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)
- рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдмреЙрдм рд╢рд╛рдо рдХреЛ рдЕрдкрдиреЗ рдмрд┐рдЯрдХреЙрдЗрди рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдПрд▓рд┐рд╕ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдЕрдкрдиреЗ рдкрд╛рд╕ рд▓реЗ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЪрд░рдг рджреЛ: рдЪрд╛рд░рд╛
рдмреЙрдм рдиреЗ рдЦреЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдФрд░ "рдХреНрд░рд┐рдкреНрдЯреЛрдПрд░реЛ" рдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрдмрдВрдз рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
- рдРрд▓рд┐рд╕ рдПрдХ рдЧреБрдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдХреЗ "рдХреНрд░рд┐рдкреНрдЯреЛ-рд╕рд┐рдХреНрдХреЗ" рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ
- рд▓рдВрдЪ рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдмреЙрдм, рдЕрдЧрд░ рдПрд▓рд┐рд╕ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЬрдорд╛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЪрд░рдг рддреАрди: рдЪрд╛рд░рд╛ рдореЗрдВ рд╕рдорд╛рдзрд╛рди
рдРрд▓рд┐рд╕ рдЕрдкрдиреЗ рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИ рдФрд░ рдмреЙрдм рдХреЗ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рд╕реЗ рдкреИрд╕реЗ рд▓реЗрддреА рд╣реИ, рдЬрдмрдХрд┐ рдЙрд╕рдХрд╛ рд░рд╣рд╕реНрдп рдЙрдЬрд╛рдЧрд░ рдХрд░рддреА рд╣реИред
рдЕрдВрддрд┐рдо рдЪрд░рдг: рдкрд╣реЗрд▓реА рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ
рдмреЙрдм рд▓реЗрди-рджреЗрди рджреЗрдЦрддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдиреЗ рдЬрд▓реАрдп рдЯрдХрдЯрдХреА рдХреЗ рд╕рд╛рде рд╡рд╣ рдПрд▓рд┐рд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд░рд╣рд╕реНрдп рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдЕрдкрдиреЗ рдмрд┐рдЯрдХреЙрдЗрди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд░рд╣рд╕реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ
рдЕрдЧрд░ рдПрд▓рд┐рд╕ рдЕрдЪрд╛рдирдХ рдЕрдЪрд╛рдирдХ рдирд╢реНрд╡рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреЙрдм рдЕрдкрдиреЗ рдпреБрдЖрди рдХреЛ рджреЛрдкрд╣рд░ рдХреЗ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред
рдмрджрд▓реЗ рдореЗрдВ, рдРрд▓рд┐рд╕ рд╢рд╛рдо рдХреЛ рдмрд┐рдЯрдХреЙрдЗрди рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕рдШрд╛рддреА рдмреЙрдм рдкреИрд╕реЗ рдХреЛ рдмреЗрд╣рддрд░ рд╕рдордп рддрдХ рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкрд╛рда рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣реЛрдмреЗ рдкрд░
рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░рдорд╛рдгреБ рд╕реНрд╡реИрдк рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рд╕реНрдкрд╖реНрдЯ
рд╡рд┐рд╡рд░рдг рд╣реИ ред
рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╣рдореЗрдВ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрд▓рд┐рд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╣реА рдЖрдЦрд┐рд░реА рд╕рдордп рдореЗрдВ рдмреЙрдм рдХрд╛ рдкреИрд╕рд╛ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд╕рдордпрдмрд╛рд╣реНрдп рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдХрд╛рдВрдкрддреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдирджреЗрди рдореЗрдВ рд╣реЗрдХреНрд╕ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреИрд╕реЗ рдирд╣реАрдВ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрддрдо рдХреЛ рдзрдирд╡рд╛рдкрд╕реА рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдмреНрд▓реЙрдХрдЪреЗрди рд╕рдорд░реНрдердирдпрд╣ рдПрдХ рд╕рд░рд▓ рдпреЛрдЬрдирд╛ рд╣реИ рдЬреИрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдП рдЧрдП рдЬреВрддреЗ, рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рдВрдЧ рдмреНрд▓реЙрдХрдЪреЗрди рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП:
- рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
- рджреЛрдиреЛрдВ рдмреНрд▓реЙрдХрдЪреЗрди рдХреЛ рдПрдХ рд╣реА рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЧреБрдкреНрдд рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ)
- Taymlokiред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдХреЛрдИ рднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ "рдЕрд▓рд╡рд┐рджрд╛, рд╣рдорд╛рд░реА рдмреИрдардХ рдПрдХ рдЧрд▓рддреА рдереА", рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдерд╛ред
рдЕрдкрдиреА рд╕рднреА рдЦреВрдмрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рдорд╛рдгреБ рд╕реНрд╡реИрдк рд╕рдорд╛рдзрд╛рди рддрд░рд▓рддрд╛ рдХреЗ рд╕рд╛рде рд╣рдбрд╝рддрд╛рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХреНрдпреЛрдВрдХрд┐ рдмреАрдЯреАрд╕реА-рдпреВрдПрд╕рдбреА рдХреА рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬреЛрдбрд╝реА рдореЗрдВ, рдлрд┐рдПрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреЛрдХрди рдирд╣реАрдВ рдерд╛ред
рдпреВрдПрд╕рдбреАрдЯреА рдХреА рд╕рдлрд▓рддрд╛ рдиреЗ рд╣рд░ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдИрдЖрд░рд╕реА 20 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрд╕реНрдЯреЛрдбрд┐рдпрд▓ рдпреВрдПрд╕рдбреАрд╕реА рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдбреАрдПрдЖрдИ рдореЗрдВ рд╕реНрдерд┐рд░ рд╕рд┐рдХреНрдХреЛрдВ рдХреА рдПрдХ рд▓рд╣рд░ рдЙрддреНрдкрдиреНрди рдХреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрдЧреЗ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдПрд▓рд┐рд╕ рдмреЙрдм рдХреЛ рдХреБрдЫ рдИрдЖрд░рд╕реА 20 рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдмреЙрдмреЙрдХреНрд╕ рдмреЗрдЪрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╕реНрдЯреЗрдмрд▓рд╛рдЗрдЬрд░реНрд╕ рдХреА рд╕рдлрд▓рддрд╛ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХрдИ рддрдХрдиреАрдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред
рдЧрддрд┐
рдЕрдХреЗрд▓реЗ рдмрд┐рдЯрдХреЙрдЗрди рдФрд░ рдПрдереЗрд░рд┐рдпрдо рдмрд╣реБрдд рддреЗрдЬ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдореЗрдВ рд╕рднреА рдкреБрд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдорд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рджреВрд╕рд░рд╛ред
рдпрд╣ рд╕рдм рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬреЛ рдкреНрд░рддрд┐рднрд╛рдЧреА рд░рд╣рд╕реНрдп рдЬрд╛рдирддрд╛ рд╣реИ рд╡рд╣ рдкрд╣рд▓реЗ рдкреИрд╕рд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдлрд╛рдЗрдирд▓ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЕрдкрдирд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╛рдлреА рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдЧреЛрдкрдиреАрдпрддрд╛
рдХреЛрдИ рднреА рдПрдХреНрд╕рдЪреЗрдВрдЬ рджреЛрдиреЛрдВ рдмреНрд▓реЙрдХрдЪреЗрди рдкрд░ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЪреМрдХрд╕ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзреЛрдВ рдореЗрдВ рдЙрд╕реА рд╣реИрд╢ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕реМрджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдирд┐рдордп рджрд░ рд╕реЗ рдХрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЖрдкрдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ - рдпрд╣ рдмреЗрд╣рдж рдЕрдкреНрд░рд┐рдп рд╣реИ, рдЬрдм рд╣рд░ рдХреЛрдИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ - рдпрд╣ рджреЛрдЧреБрдирд╛ рдЕрдкреНрд░рд┐рдп рд╣реИред
рдкреНрд░рдпреЛрдЬреНрдп
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмреНрд▓реЙрдХрдЪреЗрди рдШреЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдИрдерд░ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рдХреНрд░реЗрддрд╛ рдФрд░ рдЦрд░реАрджрд╛рд░ рдХреЛ рдХрд┐рд╕ рдмреЙрдбреА рдореВрд╡ рдХреЛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИ: рдЖрдкрдХреЛ рдмрд╕ рдмрд┐рдЯрдХреЛрдЗрди рдХреЛ рдПрдХ p2sh рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдИрдерд░ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдкреЗрдЪреАрджрд╛ рд╣реИред
рдЕрдиреБрдмрдВрдзрдПрдХ рдЧрд┐рдЧрд╛рдм-рдФрд╕рдд рд╕реНрд╡реИрдк рдЕрдиреБрдмрдВрдз рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
contract iERC20 { function totalSupply() public view returns (uint256); function transfer(address receiver, uint numTokens) public returns (bool); function balanceOf(address tokenOwner) public view returns (uint); function approve(address delegate, uint numTokens) public returns (bool); function allowance(address owner, address delegate) public view returns (uint); function transferFrom(address owner, address buyer, uint numTokens) public returns (bool); } contract Swapper { struct Swap { iERC20 token; bytes32 hash; uint amount; uint refundTime; bytes32 secret; } mapping (address => mapping(address => Swap)) swaps; function create(iERC20 token, bytes32 hash, address receiver, uint amount, uint refundTime) public { require(swaps[msg.sender][receiver].amount == 0); // check is swap with given hash already exists require(token.transferFrom(msg.sender, address(this), amount)); // transfer locked tokens to swap contract swaps[msg.sender][receiver] = Swap(token, hash, amount, refundTime, 0x00); //create swap } function hashOf(bytes32 secret) public pure returns(bytes32) { return sha256(abi.encodePacked(secret)); } function withdraw(address owner, bytes32 secret) public { Swap memory swap = swaps[owner][msg.sender]; require(swap.secret == bytes32(0)); require(swap.hash == sha256(abi.encodePacked(secret))); // swap exists swaps[owner][msg.sender].secret = secret; swap.token.transfer(msg.sender, swap.amount); } function refund(address receiver) public { Swap memory swap = swaps[msg.sender][receiver]; require(now > swap.refundTime); delete swaps[msg.sender][receiver]; swap.token.transfer(msg.sender, swap.amount); } }
рдЪреЗрддрд╛рд╡рдиреА! рдЙрддреНрдкрд╛рджрди рдкрд░ рдПрдХ рд▓реЗрдЦ рд╕реЗ рдЗрд╕ рдФрд░ рдЕрдиреНрдп рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд╡реЗ рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
рдЦрд╛рд╕рдХрд░ рдпрд╣ рдПрдХ ред
- рдмреЙрдм рдХреЛ рдЯреЛрдХрди рдЕрдиреБрдмрдВрдз рдкрд░
approve
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЙрд╕рдХреЗ рдЯреЛрдХрди рдХреЛ рд╕реНрд╡реИрдк рдЕрдиреБрдмрдВрдз рдПрдХреНрд╕реЗрд╕ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛
- рдмреЙрдм рдПрдХ тАЛтАЛрд╕реНрд╡реИрдк рдмрдирд╛рддрд╛ рд╣реИ рдФрд░
transferFrom
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдиреБрдмрдВрдз рдкреНрд░реЗрд╖рдХ рдЯреЛрдХрди рдХреЛ рдЕрдкрдиреЗ рдкрддреЗ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ
- рдмрджрд▓реЗ рдореЗрдВ рдРрд▓рд┐рд╕ рдПрдХ рд░рд╣рд╕реНрдп рдФрд░ рдЕрдиреБрдмрдВрдз рдХреЙрд▓
transfer
рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддрд╛ рд╣реИ
рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░реНрд╕ рдФрд░
approve
рдЯреЛрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдПред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рдЕрдХреНрд╕рд░ рдЧрд▓рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдЕрдиреБрдмрдВрдз рдореЗрдВ рдЯреЛрдХрди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЯреЛрдХрди рдмрд╕ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрдерд░рд╕реНрдХреИрди рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╡реНрдпрд╛рдкрдХ рджреБрд╕реНрд╕рд╛рд╣рд╕ рд╕реЗ рднрд░реА рд╣реИрдВред
рдФрд░ рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдИрдЯреАрдПрдЪ рдореЗрдВ рдПрдХ рдХрдореАрд╢рди рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рд▓реЗрдирджреЗрди рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯреЙрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдХреБрдЫ рд▓реЛрдЧ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЧреИрд╕ рдзрд╛рд░рдХ
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдБ рднреА рд╕рдВрднрд╡ рд╣реЛ, рдкреНрд░реЗрд╖рдХ рдХреЗ рдЪреЗрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреИрд╕ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдмрдВрдз рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдЕрдкрдЧреНрд░реЗрдбреЗрдб рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ contract Swapper { struct Swap { iERC20 token; address receiver; uint amount; address refundAddress; uint refundTime; } mapping (bytes32 => Swap) swaps; function create(iERC20 token, bytes32 hash, address receiver, uint amount, address refundAddress, uint refundTime) public { require(swaps[hash].amount == 0); // use hash once require(token.transferFrom(msg.sender, address(this), amount)); swaps[hash] = Swap(token, receiver, amount, refundAddress, refundTime); } function withdraw(bytes memory secret) public { bytes32 hash = sha256(secret); Swap memory swap = swaps[hash]; require(swap.amount > 0); delete swaps[hash]; swap.token.transfer(swap.receiver, swap.amount); } function refund(bytes32 hash) public { Swap memory swap = swaps[hash]; require(now > swap.refundTime); delete swaps[hash]; swap.token.transfer(swap.refundAddress, swap.amount); } }
рдЕрдиреБрдмрдВрдз-рдХреБрдВрдЬреА рджреНрд╡реИрддрд╡рд╛рдж рдФрд░ EIP 712
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рд╡рд╛ рдкрд░ рдкрддрд╛ рдПрдХ рдЕрдиреБрдмрдВрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдПрдХ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдХреБрдВрдЬреАред
рдХреБрдВрдЬреА рдХрд╛ рдореБрдЦреНрдп рд╡реНрдпрд╡рд╕рд╛рдп рдХрд┐рд╕реА рднреА рд╕рдВрджреЗрд╢ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рд╣реИред
рдмреЙрдм рдЕрдиреБрдмрдВрдз рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдмреЙрдм рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдкреНрд░реЗрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкрд╛рд╕ рдмрдирд╛рддрд╛ рд╣реИред
рдЕрдм, рдХреЛрдИ рднреА рдХрд┐рд╕реА рд╕рджрд╕реНрдп рдХреЗ рдХрдореАрд╢рди рдХреЛ рдкреНрд░рд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд╣ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдЬреЛ рдХреБрдВрдЬреА рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред
рдмреЙрдм рдЕрдиреБрдмрдВрдз library EIP712ProxyLibrary { function hashCommand(address sender, iERC20 token, Swapper swapper, bytes32 hash, address receiver, uint amount, address refundAddress, uint refundTime) public view returns(bytes32); } contract ProxyBob { address owner; constructor(address _owner) public { owner = _owner; } function createSwap(Swapper swapper, iERC20 token, bytes32 hash, address receiver, uint amount, address refundAddress, uint refundTime, uint8 v, bytes32 r, bytes32 s) public { require(owner == ecrecover(EIP712ProxyLibrary.hashCommand(address(this), token, swapper, hash, receiver, amount, refundAddress, refundTime), v, r, s)); token.approve(address(swapper), amount); swapper.create(token, hash, receiver, amount, refundAddress, refundTime); } }
рдПрдереЗрд░рд┐рдпрдо рдореЗрдВ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
EIP 712 рдорд╛рдирдХ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдореЗрдЯрд╛рдорд╕реНрдХ рд╡реЙрд▓реЗрдЯ рдмреНрд▓реЙрдЧ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ
редрдлреВрдЯ рдбрд╛рд▓реЛ рдФрд░ рдЬреАрддреЛ
рдЕрдХреНрд╕рд░ рдПрдХ Ethereum рдЕрдиреБрдмрдВрдз рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- рдкреНрд░рддрд┐рднрд╛рдЧреА рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рдзрди рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИ
- рдлрд┐рд░ рдкреИрд╕реЗ рд▓реЗрддрд╛ рд╣реИ
- рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ
- рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдмрд╛рд░-рдмрд╛рд░ рдкреИрд╕реЗ рд▓реЗрддрд╛ рд╣реИ
рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдкрд╣реЗрд▓реА рдПрдХ рдЦрд╛рд▓реА рдмрд╛рдЗрдЯ рд╕реЗрдЯ рд╣реИред
рд▓рд╛рдЦ рдЪреЛрд░реА рдХреИрд╕реЗ рдХрд░реЗрдВрдПрдХ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡реИрдк рдмрдирд╛рдПрдВ 0x66687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925
рдпрд╣ 0x0000000000000000000000000000000000000000000000000000000000000000
рд╕реЗ sha256 рд╣реИ
рд╣рдо рдЧреБрдкреНрдд рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЯреЛрдХрди рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ
рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЬрдирдмрд┐рдпреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рд╕рднреА рдХреНрдпреЛрдВрдХрд┐ 0 = 0
рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдХрд░, рд╣рдо рдИрд╡реАрдПрдо рд╕реНрддрд░ рдкрд░ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ: рдЕрдм рд╣рд░ рд▓реЗрдирджреЗрди рдХрд╛ рдЕрдкрдирд╛ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЯреЛрдХрди рдХреЛ рдХрд┐рд╕реА рднреА рд╡реЙрд▓реЗрдЯ рдпрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреБрдмрдВрдзрд┐рдд рдФрд░ create2 рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛
рд▓реЗрдХрд┐рди рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЦрд░реАрджрд╛рд░ рдХреЛ рд╢реНрд░рдо "рдХреНрд░рд┐рдкреНрдЯреЛрдлрд╝реЗрдирд┐рдВрдЧ" рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ "рд╕реБрдмрд╣ рдЕрдиреБрдмрдВрдз, рд╢рд╛рдо рдХрд╛ рдкреИрд╕рд╛" рд╣рдореЗрд╢рд╛ рдПрдХ рдЦрддрд░рд╛ рд╣реИ рдХрд┐ рдЦрд░реАрджрд╛рд░ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдиреЗ рдкрд░ рдИрдерд░ рдкрд╣рд▓реЗ рд╣реА рдЦрд░реНрдЪ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рдХреНрдпрд╛ рд╕реБрдмрд╣ рдореЗрдВ рдкреИрд╕рд╛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рд╢рд╛рдо рдХреЛ рдмрд╛рдЗрдЯреНрд╕?
рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рдиреЛрдкрд▓ рд╣рд╛рд░реНрдб рдлреЛрд░реНрдХ рдореЗрдВ,
EIP 1014 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ create2 рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЬреЛрдбрд╝рд╛ рдЬреЛ рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рдкрддреЗ рдкрд░ рдПрдХ рдирдпрд╛ рдЕрдиреБрдмрдВрдз рдмрдирд╛рддрд╛ рд╣реИ
keccak256( 0xff ++ address ++ salt ++ keccak256(init_code))[12:]
рдЬрд╣рд╛рдБ
- рдкрддрд╛ - рдХрд╛рд░рдЦрд╛рдирд╛ рдЕрдиреБрдмрдВрдз рдкрддрд╛
- рдирдордХ - рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣рдо рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕реАрдЦреЗрдВрдЧреЗ
- init_code - рдмрд╛рдЗрдЯрдХреЛрдб рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрдмрдВрдзред
рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИрдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░рдЦрд╛рдирд╛ рдереЛрдбрд╝рд╛ рднрдпрднреАрдд рджрд┐рдЦрддрд╛ рд╣реИ:
contract Factory { event Deployed(address addr, uint256 salt); function create2(bytes memory code, uint256 salt) public { address addr; assembly { addr := create2(0, add(code, 0x20), mload(code), salt) } emit Deployed(addr, salt); } }
рдЖрдкрдХрд╛ рдЕрдиреБрдмрдВрдз рдХреЛрдб web3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const MyContract = new web3.eth.Contract(ABI, {}) const ode = MyContract.deploy({ data: BYTECODE, arguments: contructorArgs }).encodeABI(); const factory = new web3.eth.Contract(FACTORY_ABI, factoryAddress); tx = factory.methods.create2(ode, salt);
рдареЛрд╕рддрд╛ рдореЗрдВ рд╕реАрдорд┐рдд рд╕рдорд░реНрдерди рдХреЗ рдХрд╛рд░рдг, рдЕрдиреБрдмрдВрдз рдХреА рдЧреИрд╕ рдХреА рдЧрдгрдирд╛ рдИрдерд░ рдХреА рдХреБрдЫ рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЧреИрд╕ рдХреА рдХрдореА рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдиреБрдмрдВрдз рдПрдХ рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдпрд╣ рдмрддрд╛рдП рдмрд┐рдирд╛ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЧреИрд╕ рдирд╣реАрдВ рдереА, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдмрд┐рдирд╛ рдЕрдиреБрдмрдВрдзреЛрдВ рдореЗрдВ рдЯреЛрдХрди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рддрдХ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ, рдХреЛрдИ рднреА рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдПрдЧрд╛ рдХрд┐ рдЕрдиреБрдмрдВрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдХреМрдЖ рдХреМрдЖ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЭрд╛рдБрдХреЗрдЧрд╛
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдЪреНрдЪреЗ рдХреА рдЪрд╛рд▓реЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдирд╣реАрдВ рд░реЛрдХреЗрдВрдЧреА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд┐рд╕рдиреЗ рдзрди рд╢реЛрдзрди рдХреЗ
рджреБрд╢реНрдордиреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд┐рд╡реЗрд╢ рдкреНрд░рд╛рдкреНрдд
рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рд╡рд╣ рдПрдХ рд╣реИрд╢ рджреЗрдЦреЗрдВрдЧреЗред
рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣реИрд╢ рдкреНрд░рдХрд╛рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
рд╣рдо рд╕реНрд╡реИрдк рдХреЛ рд╕реНрд╡рдпрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдЕрдиреБрдмрдВрдз рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрджрдо рд╕реЗ рдХрджрдорджреЛ "рдорд▓реНрдЯреАрд╕рд┐рдЧ" рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдЖрдк рдРрд▓рд┐рд╕ рдФрд░ рдмреЙрдм рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдиреЗ рдкрд░ рдлрдВрдб рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдСрдлрд╝рд▓рд╛рдЗрди рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рддреНрд░рд╛рд╕рджреА рдирд╣реАрдВ рдмрди рдЧрдпрд╛, рд╣рдо рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рд╕рдордп рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдПрд▓рд┐рд╕ рдФрд░ рдмреЙрдм рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВ
- рдРрд▓рд┐рд╕ рдПрдХ рд░рд╣рд╕реНрдп рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдмреЙрдм рдХреЛ рдЧреБрдкреНрдд рдФрд░ рд▓реЗрди-рджреЗрди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рдЯрдХреЙрдЗрди рдХреЛ рд╕реНрд╡реИрдк рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рдмреЙрдм рдРрд▓рд┐рд╕ рдХреЛ рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡реИрдк рдЕрдиреБрдмрдВрдз рдкрд░ рдЯреЛрдХрди рдХреА рд╡рд╛рдкрд╕реА рдкрд░ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреЗрддрд╛ рд╣реИред
- рдПрд▓рд┐рд╕ рдмреЙрдм рдХреЛ рд░рд╛рдЬ рдмрддрд╛рддреА рд╣реИред
рдЗрд╕ рд╕рдордп, рд╕рджреНрднрд╛рд╡ рдмрдврд╝рддрд╛ рд╣реИ: рдПрд▓рд┐рд╕ рдФрд░ рдмреЙрдм рджреЛрдиреЛрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рд╕реМрджрд╛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдиреБрдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рд╡реЗ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рдкрддреЗ рдкрд░ рдкреИрд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдмрд╛рд╣рд░реА рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдзрди рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 2 рдХреЗ рдмрд╣реБ-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ 2 рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рдЧрдпрд╛ред
рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдпреЛрдЬрдирд╛ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдкреБрд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж рд░рд╣рд╕реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рд╕реНрддрд░ 2
рдЪреВрдБрдХрд┐ рд╣рдо рдПрдХ рдкрддреЗ рдкрд░ рдкреИрд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд▓реЗрдирджреЗрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рд╣рдореЗрдВ рдХрдИ рдкрддреЗ рдкрд░ рдкреИрд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рд▓реЗрдирджреЗрди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ рд╕реНрд╡реИрдк рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рддреЛ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдЕрдм рдРрд▓рд┐рд╕ рдФрд░ рдмреЙрдм рддрд╛рдХрдд рдФрд░ рдореБрдЦреНрдп рдХреЗ рд╕рд╛рде рдШреВрдордиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕рд╛рддреЛрд╢реА рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рдпрд╛ рд╕реАрдзреЗ рдмрд╛рдЬрд╛рд░ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рддрд░рд▓рддрд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рд╕реАрдзреЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
рдХрджрдо рд╕реЗ рдХрджрдо- рд╡рд┐рдХреНрд░реЗрддрд╛ рдПрдХ рд░рд╣рд╕реНрдп рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЦрд░реАрджрд╛рд░ рдХреЛ рдЧреБрдкреНрдд рдФрд░ рд▓реЗрди-рджреЗрди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдПрдХ рд╣реИрд╢ рджреЗрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдзрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ p2sh рд╕реНрд╡реИрдк рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдкрддреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ
- рдЦрд░реАрджрд╛рд░ рд╕реНрд╡реИрдк рдкрд░ рдЯреЛрдХрди рд╡рд╛рдкрд╕ рд▓реЗрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рдкрддреЗ рдкрд░ рд╡рд┐рддрд░рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рд╡рд┐рдХреНрд░реЗрддрд╛ рдПрдХ рд░рд╣рд╕реНрдп рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддрд╛ рд╣реИ
- рдХрд╣рд╛рдиреА рдХреЛ рдПрдХ рдирдП рд░рд╣рд╕реНрдп рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕реНрд╡реИрдк рдФрд░ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдореЗрдВ рдЦрд░реАрджрд╛рд░ рдХреЗ рдкрддреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдкрддреЗ рдкрд░ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдЪреНрдЪ рдЧрддрд┐ рдкреА 2 рдкреА рдЯреНрд░реЗрдбрд┐рдВрдЧ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдордп рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╕реМрджрд╛ рдмрдВрдж рдХрд░реЗрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдЪреИрдирд▓реЛрдВ рдХреЛ рдЕрдорд░рддрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред