рддреИрдирд╛рддреА рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ рдкрддреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ: рдХреНрд░рд┐рдкреНрдЯреЛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП CREATE2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдмреНрд▓реЙрдХрдЪреЗрди рдХрд╛ рд╡рд┐рд╖рдп рди рдХреЗрд╡рд▓ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдЪрд╛рд░ рдХрд╛ рдПрдХ рд╕реНрд░реЛрдд рд╣реИ, рдмрд▓реНрдХрд┐ рдРрд╕реЗ рд╡рд┐рдЪрд╛рд░ рднреА рд╣реИрдВ рдЬреЛ рддрдХрдиреАрдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╡рд╣ рд╕рдиреА рд╢рд╣рд░ рдХреЗ рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреА рдереАред рд▓реЛрдЧ рдмреНрд▓реЙрдХрдЪреИрди рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕реВрдЪрдирд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рддрдХ, рдмрд╕ рдПрдХ рдмрд┐рдВрджреБ: рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо-рд╕реЛрд▓рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдмреНрд▓реЙрдХрдЪреИрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдФрд░ рд░рд╛рд╕реНрддреЗ рдореЗрдВ, рдмреНрд▓реЙрдХрдЪреИрди рд╕рдореБрджрд╛рдп рдХреА рд▓рд╛рдЧреВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЗрди рдЬреАрд╡рди рд╣реИрдХ рдореЗрдВ рд╕реЗ рдПрдХ - CREATE2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП - рдЖрдЬ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдХрдЯ рдХреЗ рддрд╣рдд рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЫрд╡рд┐
CREATE2 opcode рдХреЛ рдЗрд╕ рд╕рд╛рд▓ 28 рдлрд░рд╡рд░реА рдХреЛ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рдиреЛрдкрд▓ рдХреА рд╣рд╛рд░реНрдб рдлреЛрд░реНрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдИрдЖрдИрдкреА рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдУрдкрдХреЛрдб рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд░рд╛рдЬреНрдп рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред

рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ Ethereum рдкрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рднреА рдЯреЛрдХрди рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдирдХрд╛ рдЦрд╛рддрд╛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪрд▓реЛ рдЗрди рдкрддреЛрдВ рдХреЛ "рдмрдЯреБрдП" рдХрд╣рддреЗ рд╣реИрдВред рдЬрдм рдЯреЛрдХрди рдЬреЗрдм рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рд╡реЙрд▓реЗрдЯ (рд╣реЙрдЯрд╡рд╛рд▓реЗрдЯ) рдкрд░ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ, рдореИрдВ CREATE2 рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ "рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдереЗрд░рдо рд╕рдВрдмреЛрдзрди


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

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдпрджреЗ рд╣реИрдВ:

  • рдпрд╣ рдмрд╕ рд╣реИ
  • рдмрдЯреБрдП рд╕реЗ рд╣реЙрдЯрд╡реЙрд▓реЗрдЯ рдореЗрдВ рдЯреЛрдХрди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рд╣рд╕реНрддрд╛рдВрддрд░рдг () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреАрдордд рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ

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

рдЫрд╡рд┐

рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдПрдБ


рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдирд┐рдпреБрдХреНрдд рдХрд░рдиреЗ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рдЬреА рд╡реЙрд▓реЗрдЯ рдХреБрдВрдЬреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЗрд╕ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЛ рд╣реЙрдЯрд▓рд╛рдЗрди рдкрд░ рдЯреЛрдХрди рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛ред

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

Opcode CREATE2


рдкрд┐рдЫрд▓реА рдкрджреНрдзрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ CREATE2 opcode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред CREATE2 рдЖрдкрдХреЛ рдЙрд╕ рдкрддреЗ рдХреЛ рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдореНрди рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддрд╛ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ:

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:] 

рдХрд╣рд╛рдВ:
  • рдкрддрд╛ - рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╛ рдкрддрд╛ рдЬреЛ рдХреНрд░реЗрдЯ 2 рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛
  • рдирдордХ - рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдп
  • init_code - рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдмрд╛рдпрдЯреЗрдХреЛрдб

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

  • рд╕реВрддреНрд░ рдореЗрдВ рдкрддрд╛ рд╕реНрдерд┐рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд╡реЙрд▓реЗрдЯ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдкрддрд╛ рд╣реИ
  • рдирдордХ - user_id рдХрд╛ рд╣реИрд╢
  • init_code рд▓рдЧрд╛рддрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рд╣реА рд╡реЙрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдЕрдзрд┐рдХ рд╕реБрдзрд╛рд░


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

рдЖрдо рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдк рдПрдХ рд╣реА рдЕрдиреБрдмрдВрдз рдкрд░ рдХрдИ рдмрд╛рд░ CREATE2 opcode рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ CREATE2 рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЧрдВрддрд╡реНрдп рдкрддреЗ рдХрд╛ рдиреЙрди рдЬреАрд░реЛ рд╣реИ (рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ "1" рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, selfdestruct () рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдЧреИрд░ рдкрддреЗ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдЙрд╕реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ CREATE2 рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдиреЙрди рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди Ethereum рдкрддрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред рд╡реЙрд▓реЗрдЯ рд╕реЗ рд╣реЙрдЯрд╡рд╛рд▓реЗрдЯ рдореЗрдВ рдкреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рд▓рдЧрднрдЧ рдЯреНрд░рд╛рдВрд╕рдлрд░ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп


рдЫрд╡рд┐

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░:

  • user_id рджреНрд╡рд╛рд░рд╛ рдирдордХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп
  • рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдЬреЛ рдЙрдкрдпреБрдХреНрдд рдирдордХ (рдпрд╛рдиреА рдмрдЯреБрдЖ рдХрд╛рд░рдЦрд╛рдиреЗ) рдХреЗ рд╕рд╛рде CREATE2 opcode рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛
  • рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрдмрдВрдз рдХреЗ рдЕрдиреБрд░реВрдк рд╡реЙрд▓реЗрдЯ рдмрд╛рдЗрдЯ рдХреЛрдб:

 constructor () { address hotWallet = 0xтАж; address token = 0xтАж; token.transfer (hotWallet, token.balanceOf (address (this))); selfdestruct (address (0)); } 

рдкреНрд░рддреНрдпреЗрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧрдгрдирд╛ рдХрд░рдХреЗ рдЙрд╕рдХрд╛ / рдЙрд╕рдХрд╛ рдмрдЯреБрдЖ рдкрддрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ

 keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:] 

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

рдЬрдм рдмрдЯреБрдП рдХреЗ рдкрддреЗ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯреЛрдХрди рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╣реЙрдЯрд╡рд╛рд▓реЗрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреИрдХрдПрдВрдб рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдлреИрдХреНрдЯреНрд░реА рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддрд╛ рд╣реИ:

 function deployWallet ( uint256) { bytes memory walletBytecode =тАж; // invoke CREATE2 with wallet bytecode and salt } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдорд╛рд░реНрдЯ рд╡реЙрд▓реЗрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреЗ рд╕рднреА рдЯреЛрдХрди рдХреЛ рд╣реЙрдЯрд╡реЙрд▓реЗрдЯ рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрддреНрдо-рд╡рд┐рдирд╛рд╢ рдХрд░рддрд╛ рд╣реИред

рдкреВрд░реНрдг рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░рд╛ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдмрдЯреБрдП рдХреЗ рдмрд╛рдпреЛрдЯреЗрдХ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдСрдкрдХреЛрдб рдореЗрдВ рд▓рд┐рдЦрд╛ред

Pavel Kondratenkov, Ethereum рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

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


All Articles