рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХ (TON) рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗ рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ рдмрд╛рд░реЗред

TON рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗ рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ

рдпреЛ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдорд╛ рдЫ?

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

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

рд▓реЗрдЦ TON рдорд╛ рдЖрдлреНрдиреЛ рдкрд╣рд┐рд▓реЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫ, рддрд░ рдХрд╣рд╛рдБ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдерд╛рд╣рд╛ рдЫреИрдиред

рд▓реЛрдЯрд░реАрд▓рд╛рдИ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ, рдо рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрдирд╛рджреЗрдЦрд┐ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ, рддреНрдпрд╕рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ, рд░ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рдкреНрд░рдХрд╛рд╢рди рдЧрд░реНрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рд▓реЗрдЦреНрдиреЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫреБред

рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдорд╛ рднрд╛рдЧ рд▓рд┐рдиреЗ рдмрд╛рд░реЗ

рдЧрдд рдЕрдХреНрдЯреЛрдмрд░рдорд╛, рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдорд▓реЗ рдирдпрд╛рдБ рднрд╛рд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдмреНрд▓рдХрдЪреЗрди рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рдХреЛ рдШреЛрд╖рдгрд╛ рдЧрд░реНтАНрдпреЛ Fift ╨╕ FunCред рдкрд╛рдБрдЪ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдХреБрдиреИ рдкрдирд┐ рд▓реЗрдЦреНрди рдЫрдиреМрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред рднрд╡рд┐рд╖реНрдпрдорд╛ рдЕрд░реБ рдХреЗрд╣реА рд▓реЗрдЦреНрдиреБ рдкрд░реНрджреИрди рднрдиреЗ рдкрдирд┐ рдХреЗрд╣реА рдлрд░рдХ рдЧрд░реНрди, рднрд╛рд╖рд╛ рд╕рд┐рдХреЗрд░ рдХреЗрд╣реА рдмрдирд╛рдЙрди рдкрд╛рдЙрдБрджрд╛ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫ рднрдиреНрдиреЗ рд▓рд╛рдЧреНрдпреЛ ред рд╕рд╛рдереИ, рд╡рд┐рд╖рдп рд▓рдЧрд╛рддрд╛рд░ рдУрда рдорд╛ рдЫред

рдпреЛ рднрдиреНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рдорд╕рдБрдЧ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдХреБрдиреИ рдЕрдиреБрднрд╡ рдерд┐рдПрдиред

рдореИрд▓реЗ рд╕рдХреЗрд╕рдореНрдо рдЕрдиреНрддреНрдпрд╕рдореНрдо рднрд╛рдЧ рд▓рд┐рдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдХреЛ рдерд┐рдПрдБ рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ рд▓реЗрдЦреНрди рдерд╛рд▓реЗрдБ, рддрд░ рдо рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдЕрд╕рдлрд▓ рднрдПрдБред рдо рд╡рд╛рд▓реЗрдЯ рд▓реЗрдЦреЗ рдмрд╣реБ-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ рд╕рд╛рде FunC рд░ рдпрд╕рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХрд╛рдо рдЧрд░реНрдпреЛред рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд┐рдПрдХреЛ рдЫреБ рдПрдХрддрд╛ рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз.

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

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

рдмреБрдЭреНрди рдзреЗрд░реИ рд╕рдордп рдЦрд░реНрдЪ рднрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдПрдХ рд▓реЗрдЦ рд▓реЗрдЦреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░рд┐рдпреЛред рдЕрдЭреИ рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реА рдирднрдПрдХреЛрд▓реЗ, рдпрд╕ рд▓реЗрдЦрд▓реЗ рд╕рдмреИрд▓рд╛рдИ рдЪрд╛рд╕реЛ рд░рд╛рдЦреНрдиреЗ рд╕рдордп рдмрдЪрдд рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред

TON рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛

рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдХреБрд░рд╛ рд▓реЗрдЦреНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдХреБрд░рд╛ рдХреБрди рдкрдХреНрд╖рдмрд╛рдЯ рд▓рд┐рдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдЕрдм рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рдкреНрд░рдгрд╛рд▓реА рдХреБрди рднрд╛рдЧрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдЕрдЭ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдХрдореНрддрд┐рдорд╛ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рдХрд╛рд░реНрдп рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдЗрдБ рдХреБрди рднрд╛рдЧрд╣рд░реВ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рд╣рд╛рдореА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд▓реЗрдЦреНрдиреЗ рд░ рдХрд╛рдо рдЧрд░реНрдирдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВ TON Virtual Machine (TVM), Fift ╨╕ FunC, рддреНрдпрд╕реИрд▓реЗ рд▓реЗрдЦ рдПрдХ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдПрдХ рд╡рд┐рд╡рд░рдг рдЬрд╕реНрддреИ рдЫред рд╣рд╛рдореА рдпрд╣рд╛рдБ рдкреНрд▓реЗрдЯрдлрд░реНрдорд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рдорд╛ рдзреНрдпрд╛рди рджрд┐рдиреЗ рдЫреИрдиреМрдВред

рд╕рд╛рдорд╛рдиреНрдп рдорд╛ рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ TVM рд░ рднрд╛рд╖рд╛ Fift рддреНрдпрд╣рд╛рдБ рд░рд╛рдореНрд░реЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рдд рдЫред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдорд╛ рднрд╛рдЧ рд▓рд┐рдБрджрд╛ рд░ рдЕрд╣рд┐рд▓реЗ рд╣рд╛рд▓рдХреЛ рдареЗрдХреНрдХрд╛ рд▓реЗрдЦреНрджреИ рдЧрд░реНрджрд╛ рдо рдкреНрд░рд╛рдпрдГ рдЙрдиреАрддрд┐рд░ рдлрд░реНрдХрд┐рдПрдБ ред

рдореБрдЦреНрдп рднрд╛рд╖рд╛ рдЬрд╕рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВ рд▓реЗрдЦрд┐рдиреНрдЫрдиреН FunCред рд╣рд╛рд▓ рдпрд╕рдорд╛ рдХреБрдиреИ рдХрд╛рдЧрдЬрд╛рдд рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рддреНрдпрд╣рд╛рдБ рднрд╛рд╖рд╛рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд╕рд╛рдереИ рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рдЧрддрдХрд╛ рджреБрдИрд╡рдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рд╣рд░реВред рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВред

рдорд╛рдиреМрдВ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд▓реЗрдЦреЗрдХрд╛ рдЫреМрдВ FunC, рддреНрдпрд╕ рдкрдЫрд┐ рд╣рд╛рдореА рдХреЛрдбрд▓рд╛рдИ рдлрд┐рдлреНрдЯ рдПрд╕реЗрдореНрдмрд▓рд░рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдЫреМрдВред

рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрди рдмрд╛рдБрдХреА рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрд▓реЗ рдПрдЙрдЯрд╛ рдкреНрд░рдХрд╛рд░реНрдп рд▓реЗрдЦреНрдиреБ рдкрд░реНрдЫ Fift, рдЬрд╕рд▓реЗ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдб рд░ рдХреЗрд╣реА рдЕрдиреНрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд▓рд┐рдиреЗрдЫ, рд░ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╕реНрддрд╛рд░рдХреЛ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╣реБрдиреЗрдЫред .boc (рдЬрд╕рдХреЛ рдЕрд░реНрде "рд╕реЗрд▓рд╣рд░реВрдХреЛ рдЭреЛрд▓рд╛" рд╣реЛ), рд░, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд▓реЗрдЦреНрдЫреМрдВ рднрдиреНрдиреЗ рдЖрдзрд╛рд░рдорд╛, рдПрдЙрдЯрд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд░ рдареЗрдЧрд╛рдирд╛, рдЬреБрди рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдбрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬреБрди рдЕрдЭреИ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред

рдкреНрд░рд╛рдкреНрдд TON рдорд╛ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди .boc рдлрд╛рдЗрд▓рд▓рд╛рдИ рд╣рд▓реНрдХрд╛ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмреНрд▓рдХрдЪреЗрдирдорд╛ рдкрдард╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рддрд▓рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк)ред рддрд░ рдкреНрд░рдХрд╛рд╢рди рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЧреНрд░рд╛рдорд╣рд░реВ рдЙрддреНрдкрдиреНрди рдареЗрдЧрд╛рдирд╛рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЕрдиреНрдпрдерд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдиреЗрдЫреИрдиред рдкреНрд░рдХрд╛рд╢рди рдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд▓рд╛рдИ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдПрд░ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд▓реНрдХрд╛ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░) рд╡рд╛ рднрд┐рддреНрд░рдмрд╛рдЯ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдЙрдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдЕрд░реНрдХреЛ TON рднрд┐рддреНрд░ рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдБрдЫ)ред

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

рдзреЗрд░реИ рдкрдЯрдХ рдореИрд▓реЗ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреНрдпрд╛рдЯрдорд╛ рдХреБрдЮреНрдЬреА рд╢рдмреНрджрд╣рд░реВ рдЦреЛрдЬреНрдереЗ рдЬрд╣рд╛рдБ рд╕рдмреИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рд╕рд╣рднрд╛рдЧреАрд╣рд░реВ рд░ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВ рднреЗрд▓рд╛ рд╣реБрдиреНрдЫрдиреН, рд░ рдпрд╕реНрддреЛ рднрдпреЛ рдХрд┐ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рдХреНрд░рдордорд╛ рд╕рдмреИрдЬрдирд╛ рддреНрдпрд╣рд╛рдБ рднреЗрд▓рд╛ рднрдП рд░ рдлрд┐рдлреНрдЯ рд░ рдлрдирд╕реА рдЫрд▓рдлрд▓ рдЧрд░реНрди рдерд╛рд▓реЗред рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд▓рд┐рдЩреНрдХред

рдпреЛ рд╕рд┐рджреНрдзрд╛рдиреНрддрдмрд╛рдЯ рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛ рдЬрд╛рдиреЗ рд╕рдордп рд╣реЛред

TON рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдЧрд░реНрджреИ

рдореИрд▓реЗ MacOS рдорд╛ рд▓реЗрдЦрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рдЧрд░реЗрдВ рд░ рдбрдХрд░рдорд╛ рд╕рдлрд╛ Ubuntu 18.04 LTS рдорд╛ рдбрдмрд▓-рдЪреЗрдХ рдЧрд░реЗрдВред

рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рд░ рд╕реНрдерд╛рдкрдирд╛ рд╣реЛ lite-client рдЬрд╕рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрд▓реЗ TON рдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ рд░ рдХреЗрд╣реА рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдЫреЛрдбреНрдЫред рдпрд╣рд╛рдБ рд╣рд╛рдореА рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдЫреМрдВ, рдмрд╛рдЯреЛрдорд╛ рдЫреБрдЯреЗрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИред рдореИрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдлреИрдВ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реЗрди рд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Ubuntu рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрди (рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ MacOS рдорд╛ brew).

apt -y install git 
apt -y install wget 
apt -y install cmake 
apt -y install g++ 
apt -y install zlib1g-dev 
apt -y install libssl-dev 

рдПрдХрдкрдЯрдХ рд╕рдмреИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рднрдПрдкрдЫрд┐ рддрдкрд╛рдЗрдБ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ lite-client, Fift, FunC.

рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА рдпрд╕рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рд╣рд┐рдд TON рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реНрдЫреМрдВред рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рд╕рдмреИ рдХреБрд░рд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдЧрд░реНрдиреЗрдЫреМрдВ ~/TON.

cd ~/TON
git clone https://github.com/ton-blockchain/ton.git
cd ./ton
git submodule update --init --recursive

рднрдгреНрдбрд╛рд░рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рдкрдирд┐ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫ Fift ╨╕ FunC.

рдЕрдм рд╣рд╛рдореА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрди рддрдпрд╛рд░ рдЫреМрдВред рднрдгреНрдбрд╛рд░ рдХреЛрдб рдлреЛрд▓реНрдбрд░рдорд╛ рдХреНрд▓реЛрди рдЧрд░рд┐рдПрдХреЛ рдЫ ~/TON/tonред рдХреЛ ~/TON рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН build рд░ рдпрд╕рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдХрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

mkdir ~/TON/build 
cd ~/TON/build
cmake ../ton

рд╣рд╛рдореА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд▓реЗрдЦреНрди рдЬрд╛рдБрджреИрдЫреМрдВ, рд╣рд╛рдореАрд▓рд╛рдИ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди lite-clientрддрд░ Fift ╤Б FunC, рддреНрдпрд╕реИрд▓реЗ рд╕рдмреИ рдХреБрд░рд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реМрдВред рдпреЛ рджреНрд░реБрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЗрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдкрд░реНрдЦрд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред

cmake --build . --target lite-client
cmake --build . --target fift
cmake --build . --target func

рдЕрд░реНрдХреЛ, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╕рдорд╛ рдиреЛрдбрдХреЛ рдмрд╛рд░реЗрдорд╛ рдбрд╛рдЯрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫ lite-client рдЬрдбрд╛рди рд╣реБрдиреЗрдЫред

wget https://test.ton.org/ton-lite-client-test1.config.json

TON рд▓рд╛рдИ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджреИ

рдЕрдм рд╕реБрд░реБ рдЧрд░реМрдВ lite-client.

cd ~/TON/build
./lite-client/lite-client -C ton-lite-client-test1.config.json

рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓ рднрдпреЛ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рд╕реБрд░реБрд╡рд╛рдд рдкрдЫрд┐ рддрдкрд╛рдИрд▓реЗ рдиреЛрдбрдорд╛ рд▓рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдиреНрдЯрдХреЛ рдЬрдбрд╛рдирдХреЛ рд▓рдЧ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред

[ 1][t 2][1582054822.963129282][lite-client.h:201][!testnode]   conn ready
[ 2][t 2][1582054823.085654020][lite-client.cpp:277][!testnode] server version is 1.1, capabilities 7
[ 3][t 2][1582054823.085725069][lite-client.cpp:286][!testnode] server time is 1582054823 (delta 0)
...

рддрдкрд╛рдИрдВ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ help рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдХреБрди рдЖрджреЗрд╢рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреНред

help

рд╣рд╛рдореА рдпрд╕ рд▓реЗрдЦрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЖрджреЗрд╢рд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реМрдВред

list of available commands:
last    Get last block and state info from server
sendfile <filename> Load a serialized message from <filename> and send it to server
getaccount <addr> [<block-id-ext>]  Loads the most recent state of specified account; <addr> is in [<workchain>:]<hex-or-base64-addr> format
runmethod <addr> [<block-id-ext>] <method-id> <params>...   Runs GET method <method-id> of account <addr> with specified parameters

last ╨┐╨╛╨╗╤Г╤З╨░╨╡╤В ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╕╨╣ ╤Б╨╛╨╖╨┤╨░╨╜╨╜╤Л╨╣ ╨▒╨╗╨╛╨║ ╤Б ╤Б╨╡╤А╨▓╨╡╤А╨░. 

sendfile <filename> ╨╛╤В╨┐╤А╨░╨▓╨╗╤П╨╡╤В ╨▓ TON ╤Д╨░╨╣╨╗ ╤Б ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╡╨╝, ╨╕╨╝╨╡╨╜╨╜╨╛ ╤Б ╨┐╨╛╨╝╨╛╤Й╤М╤О ╤Н╤В╨╛╨╣ ╨║╨╛╨╝╨░╨╜╨┤╤Л ╨┐╤Г╨▒╨╗╨╕╨║╤Г╨╡╤В╤Б╤П ╤Б╨╝╨░╤А╤В-╨║╨╛╨╜╤В╤А╨░╨║╤В ╨╕ ╨╖╨░╨┐╤А╤Б╨╛╤Б╤Л ╨║ ╨╜╨╡╨╝╤Г. 

getaccount <addr> ╨╖╨░╨│╤А╤Г╨╢╨░╨╡╤В ╤В╨╡╨║╤Г╤Й╨╡╨╡ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╨╡ ╤Б╨╝╨░╤А╤В-╨║╨╛╨╜╤В╤А╨░╨║╤В╨░ ╤Б ╤Г╨║╨░╨╖╨░╨╜╨╜╤Л╨╝ ╨░╨┤╤А╨╡╤Б╨╛╨╝. 

runmethod <addr> [<block-id-ext>] <method-id> <params>  ╨╖╨░╨┐╤Г╤Б╨║╨░╨╡╤В get-╨╝╨╡╤В╨╛╨┤╤Л ╤Б╨╝╨░╤А╤В╨║╨╛╨╜╤В╤А╨░╨║╤В╨░. 

рдЕрдм рд╣рд╛рдореА рд╕рдореНрдЭреМрддрд╛ рдЖрдлреИрдВ рд▓реЗрдЦреНрди рддрдпрд╛рд░ рдЫреМрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдЖрдЗрдбрд┐рдпрд╛

рдореИрд▓реЗ рдорд╛рдерд┐ рд▓реЗрдЦреЗрдЭреИрдВ, рд╣рд╛рдореАрд▓реЗ рд▓реЗрдЦреЗрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдПрдХ рдЪрд┐рдареНрдард╛ рд╣реЛред

рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреЛ рд▓рдЯрд░реА рд╣реЛрдЗрди рдЬрд╕рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдЯрд┐рдХрдЯ рдХрд┐рдиреНрдиреБ рдкрд░реНрдЫ рд░ рдПрдХ рдШрдгреНрдЯрд╛, рджрд┐рди рд╡рд╛ рдорд╣рд┐рдирд╛ рдкрд░реНрдЦрдиреБ рдкрд░реНрдЫ, рддрд░ рдПрдХ рддреБрд░реБрдиреНрдд рдЬрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рд╕рдореНрдЭреМрддрд╛ рдареЗрдЧрд╛рдирд╛рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрджрдЫред N рдЧреНрд░рд╛рдо, рд░ рддреБрд░реБрдиреНрддреИ рдлрд┐рд░реНрддрд╛ рдкрд╛рдЙрдБрдЫ 2 * N рдЧреНрд░рд╛рдо рд╡рд╛ рд╣рд░рд╛рдЙрдБрдЫред рд╣рд╛рдореА рд▓рдЧрднрдЧ 40% рдЬрд┐рддреНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдмрдирд╛рдЙрдиреЗрдЫреМрдВред рдпрджрд┐ рднреБрдХреНрддрд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЧреНрд░рд╛рдорд╣рд░реВ рдЫреИрдирдиреН рднрдиреЗ, рд╣рд╛рдореА рд▓реЗрдирджреЗрдирд▓рд╛рдИ рдЯрдк-рдЕрдкрдХреЛ рд░реВрдкрдорд╛ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреЗрдЫреМрдВред

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

рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд▓реЗрдЦреНрджреИ

рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ FunC рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реЗрдХреЛ рдЫреБ; рдкреНрд▓рдЧрдЗрди рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛрдб рдЦреЛрдЬрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ; рдпрджрд┐ рддрдкрд╛рдИрдВ рдЕрдЪрд╛рдирдХ рдХреЗрд╣рд┐ рдердкреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдореИрд▓реЗ рдкреНрд▓рдЧрдЗрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдПрдХреЛ рдЫреБред рд╕рд╛рдереИ, рдХрд╕реИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдлрд┐рдлреНрдЯрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдпреЛ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ VSC рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рддреБрд░реБрдиреНрддреИ рдПрдЙрдЯрд╛ рднрдгреНрдбрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреЗрдЫреМрдВред

рд╣рд╛рдореНрд░реЛ рдЬреАрд╡рдирд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ рд░ рдпреЛ рддрдпрд╛рд░ рдирднрдПрд╕рдореНрдо рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗрдЫреМрдВред рддреНрдпрд╕ рдкрдЫрд┐ рдорд╛рддреНрд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ TON рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВред

рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рджреБрдИрд╡рдЯрд╛ рдмрд╛рд╣реНрдп рд╡рд┐рдзрд┐рд╣рд░реВ рдЫрдиреНред рдкрд╣рд┐рд▓реЗ, recv_external() рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреНрдЫ рдЬрдм рдЕрдиреБрдмрдВрдзрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рдЖрдЙрдБрдЫ, рддреНрдпреЛ рд╣реЛ, TON рдмрд╛рдЯ рд╣реЛрдЗрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрдм рд╣рд╛рдореА рдЖрдлреИрд▓реЗ рд╕рдиреНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдЫреМрдВ рд░ рд▓рд╛рдЗрдЯ-рдХреНрд▓рд╛рдпрдиреНрдЯ рдорд╛рд░реНрдлрдд рдкрдард╛рдЙрдБрдЫреМрдВред рджреЛрд╕реНрд░реЛ, recv_internal() рдпреЛ рддрдм рд╣реБрдиреНрдЫ рдЬрдм, TON рднрд┐рддреНрд░, рдХреБрдиреИ рдкрдирд┐ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрджрдЫред рджреБрдмреИ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдЗрдБ рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

() recv_internal(slice in_msg) impure {
    ;; TODO: implementation 
}

() recv_external(slice in_msg) impure {
    ;; TODO: implementation  
}

рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдпреЛ рдХреЗ рд╣реЛ рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ sliceред TON Blockchain рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛ TVM cell рдпрд╛ рдмрд╕ cell, рдпрд╕реНрддреЛ рд╕реЗрд▓рдорд╛ рддрдкрд╛рдИрд▓реЗ 1023 рдмрд┐рдЯ рд╕рдореНрдо рдбрд╛рдЯрд╛ рд░ рдЕрдиреНрдп рд╕реЗрд▓рд╣рд░реВрдорд╛ 4 рд▓рд┐рдЩреНрдХ рд╕рдореНрдо рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

TVM cell slice рд╡рд╛ slice рдпреЛ рдЕрд╡рд╕реНрдерд┐рдд рдХреЛ рдПрдХ рднрд╛рдЧ рд╣реЛ cell рдпрд╕рд▓рд╛рдИ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдпреЛ рдкрдЫрд┐ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреЗрдЫред рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╣рд╛рдореА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ slice рд░ рд╕рдиреНрджреЗрд╢рдХреЛ рдкреНрд░рдХрд╛рд░рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ, рдбрд╛рдЯрд╛рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреБрд╣реЛрд╕реН recv_external() рд╡рд╛ recv_internal().

impure - рдПрдХ рдХреБрдЮреНрдЬреА рд╢рдмреНрдж рдЬрд╕рд▓реЗ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ рдХрд┐ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдбреЗрдЯрд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрджрдЫред

рд╕рдореНрдЭреМрддрд╛рдХреЛ рдХреЛрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реМрдВ lottery-code.fc рд░ рдХрдореНрдкрд╛рдЗрд▓ред

~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc 

рдЭрдгреНрдбрд╛рдХреЛ рдЕрд░реНрде рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЗрд░реНрди рд╕рдХрд┐рдиреНрдЫ

~/TON/build/crypto/func -help

рд╣рд╛рдореАрд▓реЗ рдлрд┐рдлреНрдЯ рдПрд╕реЗрдореНрдмрд▓рд░ рдХреЛрдб рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реЗрдХрд╛ рдЫреМрдВ lottery-compiled.fif:

// lottery-compiled.fif

"Asm.fif" include
// automatically generated from `/Users/rajymbekkapisev/TON/ton/crypto/smartcont/stdlib.fc` `./lottery-code.fc` 
PROGRAM{
  DECLPROC recv_internal
  DECLPROC recv_external
  recv_internal PROC:<{
    //  in_msg
    DROP    // 
  }>
  recv_external PROC:<{
    //  in_msg
    DROP    // 
  }>
}END>c

рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддреНрдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдЧрд░реНрдиреЗрдЫреМрдВред

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдкрд╣рд┐рд▓реЛ рд░реЗрдЦрд╛ рдЬрдбрд╛рди рд╣реБрдиреНрдЫ Asm.fif, рдпреЛ рдлрд┐рдлреНрдЯ рдПрд╕реЗрдореНрдмрд▓рд░рдХреЛ рд▓рд╛рдЧрд┐ рдлрд┐рдлреНрдЯрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдХреЛрдб рд╣реЛред

рд╣рд╛рдореА рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдЪрд▓рд╛рдЙрди рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рд╣рд╛рдореА рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ lottery-test-suite.fif рд░ рддреНрдпрд╣рд╛рдБ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдб рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рдорд╛ рдЕрдиреНрддрд┐рдо рд▓рд╛рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдбрд▓рд╛рдИ рд╕реНрдерд┐рд░рдорд╛ рд▓реЗрдЦреНрдЫред codeрддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди:

"TonUtil.fif" include
"Asm.fif" include

PROGRAM{
  DECLPROC recv_internal
  DECLPROC recv_external
  recv_internal PROC:<{
    //  in_msg
    DROP    // 
  }>
  recv_external PROC:<{
    //  in_msg
    DROP    // 
  }>
}END>s constant code

рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдпреЛ рд╕реНрдкрд╖реНрдЯ рджреЗрдЦрд┐рдиреНрдЫ, рдЕрдм рдПрдЙрдЯреИ рдлрд╛рдЗрд▓рдорд╛ рдХреЛрдб рдердкреМрдВ рдЬреБрди рд╣рд╛рдореАрд▓реЗ TVM рд╕реБрд░реВ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

0 tuple 0x076ef1ea , // magic
0 , 0 , // actions msg_sents
1570998536 , // unix_time
1 , 1 , 3 , // block_lt, trans_lt, rand_seed
0 tuple 100000000000000 , dictnew , , // remaining balance
0 , dictnew , // contract_address, global_config
1 tuple // wrap to another tuple
constant c7

0 constant recv_internal // to run recv_internal() 
-1 constant recv_external // to invoke recv_external()

╨Т c7 рд╣рд╛рдореА рд╕рдиреНрджрд░реНрдн рд░реЗрдХрд░реНрдб рдЧрд░реНрдЫреМрдВ, рддреНрдпреЛ рдбрд╛рдЯрд╛ рдЬрд╕рдХреЛ рд╕рд╛рде TVM (рд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрд╡рд╕реНрдерд╛) рд╕реБрд░реБ рд╣реБрдиреЗрдЫред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рдХреЛ рд╕рдордпрдорд╛ рдкрдирд┐, рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдХрд╕рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдП c7 рд░ рдореИрд▓реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрдВред рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореАрд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрди рд╕рдХреНрдЫ rand_seed рдХрд┐рдирдХрд┐ рдЕрдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛рдХреЛ рдЬреЗрдиреЗрд░реЗрд╕рди рдпрд╕рдорд╛ рдирд┐рд░реНрднрд░ рд╣реБрдиреНрдЫ рд░ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рдЙрд╣реА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдлрд░реНрдХрд╛рдЗрдиреЗрдЫред

recv_internal ╨╕ recv_external 0 рд░ -1 рдорд╛рдирд╣рд░реВ рднрдПрдХрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХрд╣рд░реВ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрд╛рд░реНрдпрд╣рд░реВ рдХрд▓ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреЗрдЫрдиреНред

рдЕрдм рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЦрд╛рд▓реА рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ рдкрд░реАрдХреНрд╖рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рддрдпрд╛рд░ рдЫреМрдВред рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдПрдЙрдЯреИ рдлрд╛рдЗрд▓рдорд╛ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВ lottery-test-suite.fif.

рдПрдЙрдЯрд╛ рдЪрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ storage рд░ рдпрд╕рдорд╛ рдПрдЙрдЯрд╛ рдЦрд╛рд▓реА рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН cell, рдпреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдг рд╣реБрдиреЗрдЫред

message рдпреЛ рд╕рдиреНрджреЗрд╢ рд╣реЛ рдХрд┐ рд╣рд╛рдореА рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдкрд░реНрдХрдорд╛ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрдиреЗрдЫреМрдВред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдЦрд╛рд▓реА рдкрдирд┐ рдмрдирд╛рдЙрдБрдЫреМрдВред

variable storage 
<b b> storage ! 

variable message 
<b b> message ! 

рд╣рд╛рдореАрд▓реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рд░ рдЪрд░рд╣рд░реВ рддрдпрд╛рд░ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рд╣рд╛рдореА рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ TVM рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ runvmctx рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрд▓рд╛рдИ рдЗрдирдкреБрдЯрдорд╛ рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx 

рдЕрдиреНрддрдорд╛ рд╣рд╛рдореА рд╕рдлрд▓ рд╣реБрдиреЗрдЫреМрдВ рдЬрд╕реНрддреЛ рдХреЛ рд▓рд╛рдЧрд┐ рдордзреНрдпрд╡рд░реНрддреА рдХреЛрдб Fift.

рдЕрдм рд╣рд╛рдореА рдкрд░рд┐рдгрд╛рдо рдХреЛрдб рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫреМрдВред

export FIFTPATH=~/TON/ton/crypto/fift/lib // ╨▓╤Л╨┐╨╛╨╗╨╜╤П╨╡╨╝ ╨╛╨┤╨╕╨╜ ╤А╨░╨╖ ╨┤╨╗╤П ╤Г╨┤╨╛╨▒╤Б╤В╨▓╨░ 
~/TON/build/crypto/fift -s lottery-test-suite.fif 

рдХрд╛рд░реНрдпрдХреНрд░рдо рддреНрд░реБрдЯрд┐ рдмрд┐рдирд╛ рдЪрд▓реНрдиреБ рдкрд░реНрдЫ рд░ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рд╣рд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рдЧ рджреЗрдЦреНрдиреЗрдЫреМрдВ:

execute SETCP 0
execute DICTPUSHCONST 19 (xC_,1)
execute DICTIGETJMPZ
execute DROP
execute implicit RET
[ 3][t 0][1582281699.325381279][vm.cpp:479]     steps: 5 gas: used=304, max=9223372036854775807, limit=9223372036854775807, credit=0

рд░рд╛рдореНрд░реЛ, рд╣рд╛рдореАрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдкрд╣рд┐рд▓реЛ рдХрд╛рд░реНрдп рд╕рдВрд╕реНрдХрд░рдг рд▓реЗрдЦреЗрдХрд╛ рдЫреМрдВред

рдЕрдм рд╣рд╛рдореА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдкрд╣рд┐рд▓реЗ рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рдЖрдЙрдиреЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реМрдВ recv_external()

рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЖрдлреИрд▓реЗ рд╕рдиреНрджреЗрд╢ рдврд╛рдБрдЪрд╛ рдЫрдиреЛрдЯ рдЧрд░реНрджрдЫ рдЬреБрди рд╕рдореНрдЭреМрддрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рддрд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛

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

рддреНрдпрд╕реЛрднрдП рд▓рдЧрднрдЧ рд╣рд░реЗрдХ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдпреА рджреБрдИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдмрдВрдзрд▓реЗ рдмрд╛рд╣реНрдп рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫ, рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╕рдХреЛ рдкрдирд┐ рдЦреНрдпрд╛рд▓ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЙрд▓реНрдЯреЛ рдХреНрд░рдордорд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рдкрд╣рд┐рд▓реЗ, рджреЛрд╣реЛрд░реНрдпрд╛рдПрд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реМрдВ; рдпрджрд┐ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕реНрддреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рд╕рдХреЗрдХреЛ рдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реЗрдХреЛ рдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рджреЛрд╕реНрд░реЛ рдкрдЯрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджреИрдиред рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗрдЫреМрдВ рддрд╛рдХрд┐ рдорд╛рдирд┐рд╕рд╣рд░реВрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рд░реНрдХрд▓рд▓реЗ рдорд╛рддреНрд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреНрдЫред

рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд╕рдБрдЧ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреНред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдЧрд░реНрдиреЗ рдпрд╣рд╛рдБ рдЫред рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдорд╛рди реж рдХреЛ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВред рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджреЗрд╢рдорд╛, рд╣рд╛рдореА рд╣рд╛рд▓рдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ рдорд╛рди рдердкреНрдиреЗрдЫреМрдВред рдпрджрд┐ рд╕рдиреНрджреЗрд╢рдорд╛ рд░рд╣реЗрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░рдХреЛ рдореВрд▓реНрдп рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдореВрд▓реНрдпрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдБрджреИрди рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджреИрдиреМрдВ; рдпрджрд┐ рдпрд╕рд▓реЗ рдЧрд░реНрдЫ рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдЫреМрдВ рд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдХрд╛рдЙрдиреНрдЯрд░рд▓рд╛рдИ 0 рд▓реЗ рдмрдврд╛рдЙрдБрдЫреМрдВред

рдорд╛ рдлрд░реНрдХреМрдВ lottery-test-suite.fif рд░ рдпрд╕рдорд╛ рджреЛрд╕реНрд░реЛ рдкрд░реАрдХреНрд╖рдг рдердкреНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЧрд▓рдд рдирдореНрдмрд░ рдкрдард╛рдпреМрдВ рднрдиреЗ, рдХреЛрдбрд▓реЗ рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХреНрдиреБрдкрд░реНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдореНрдЭреМрддрд╛ рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рджрд┐рдиреБрд╣реЛрд╕реН 166, рд░ рд╣рд╛рдореА 165 рдкрдард╛рдЙрдиреЗрдЫреМрдВред

<b 166 32 u, b> storage !
<b 165 32 u, b> message !

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx

drop 
exit_code ! 
."Exit code " exit_code @ . cr 
exit_code @ 33 - abort"Test #2 Not passed"

рд╕реБрд░реБ рдЧрд░реМрдВред

 ~/TON/build/crypto/fift -s lottery-test-suite.fif 

рд░ рд╣рд╛рдореА рджреЗрдЦреНрдиреЗрдЫреМрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рддреНрд░реБрдЯрд┐ рд╕рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрдПрдХреЛ рдЫред

[ 1][t 0][1582283084.210902214][words.cpp:3046] lottery-test-suite.fif:67: abort": Test #2 Not passed
[ 1][t 0][1582283084.210941076][fift-main.cpp:196]      Error interpreting file `lottery-test-suite.fif`: error interpreting included file `lottery-test-suite.fif` : lottery-test-suite.fif:67: abort": Test #2 Not passed

рдпреЛ рд╕рдордп рдорд╛ lottery-test-suite.fif рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫ рд▓рд┐рдЩреНрдХ.

рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдХрд╛рдЙрдиреНрдЯрд░ рддрд░реНрдХ рдердкреМрдВ lottery-code.fc.

() recv_internal(slice in_msg) impure {
    ;; TODO: implementation 
}

() recv_external(slice in_msg) impure {
    if (slice_empty?(in_msg)) {
        return (); 
    }
    int msg_seqno = in_msg~load_uint(32);
    var ds = begin_parse(get_data());
    int stored_seqno = ds~load_uint(32);
    throw_unless(33, msg_seqno == stored_seqno);
}

╨Т slice in_msg рд╣рд╛рдореАрд▓реЗ рдкрдард╛рдПрдХреЛ рд╕рдиреНрджреЗрд╢ рдЭреВрдЯреЛ рд╣реЛред

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

рдЕрд░реНрдХреЛ рд╣рд╛рдореА рд╕рдиреНрджреЗрд╢рд▓рд╛рдИ рдкрд╛рд░реНрд╕ рдЧрд░реНрдЫреМрдВред in_msg~load_uint(32) рдирдореНрдмрд░ 165, 32-рдмрд┐рдЯ рд▓реЛрдб рдЧрд░реНрджрдЫ unsigned int рдкреНрд░рд╕рд╛рд░рд┐рдд рд╕рдиреНрджреЗрд╢рдмрд╛рдЯред

рдЕрд░реНрдХреЛ рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ 32 рдмрд┐рдЯ рд▓реЛрдб рдЧрд░реНрдЫреМрдВред рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ рдХрд┐ рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдирдореНрдмрд░ рдкрд╛рд╕ рднрдПрдХреЛ рдирдореНрдмрд░рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ; рдпрджрд┐ рд╣реЛрдЗрди рднрдиреЗ, рд╣рд╛рдореА рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХреНрдЫреМрдВред рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛, рд╣рд╛рдореА рдПрдХ рдЧреИрд░-рдореНрдпрд╛рдЪ рдкрд╛рд╕ рдЧрд░реНрджреИрдЫреМрдВ, рдПрдХ рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХрд┐рдиреБ рдкрд░реНрдЫред

рдЕрдм рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реМрдВред

~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc 

рдирддрд┐рдЬрд╛ рдХреЛрдб рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН lottery-test-suite.fif, рдЕрдиреНрддрд┐рдо рд░реЗрдЦрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред

рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реБрдиреНрдЫ:

~/TON/build/crypto/fift -s lottery-test-suite.fif

рдареНрдпрд╛рдХреНрдХ рдпрд╣рд╛рдБ рддрдкрд╛рдИрд▓реЗ рд╣рд╛рд▓рдХреЛ рдирддрд┐рдЬрд╛ рд╕рдВрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрдорд┐рдЯ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрд▓рд╛рдИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рдлрд╛рдЗрд▓рдорд╛ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдПрдЙрдЯрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ рдЬрд╕рд▓реЗ рдХреЛрдбрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд┐рд░рдорд╛ рд▓реЗрдЦреНрдиреЗрдЫ, рд░ рд╣рд╛рдореА рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреЗрдЫреМрдВред "include".

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН build.sh рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧред

#!/bin/bash

~/TON/build/crypto/func -SPA -R -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc

рдпрд╕рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдмрдирд╛рдФрдВред

chmod +x ./build.sh

рдЕрдм, рд╕рдореНрдЭреМрддрд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рд╣рд╛рдореНрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред рддрд░ рдпрд╕ рдмрд╛рд╣реЗрдХ, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд┐рд░рдорд╛ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ codeред рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдирдпрд╛рдБ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ lotter-compiled-for-test.fif, рдЬреБрди рд╣рд╛рдореА рдлрд╛рдЗрд▓рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗрдЫреМрдВ lottery-test-suite.fif.

рд╕реНрдХрд┐рд░реНрдкреНрдЯ рдХреЛрдб sh рдорд╛ рдердкреМрдВ, рдЬрд╕рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧрд░реНрдиреЗрдЫ lotter-compiled-for-test.fif рд░ рдпрд╕рдорд╛ рдЕрдиреНрддрд┐рдо рд▓рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

# copy and change for test 
cp lottery-compiled.fif lottery-compiled-for-test.fif
sed '$d' lottery-compiled-for-test.fif > test.fif
rm lottery-compiled-for-test.fif
mv test.fif lottery-compiled-for-test.fif
echo -n "}END>s constant code" >> lottery-compiled-for-test.fif

рдЕрдм, рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдирддрд┐рдЬрд╛ рд▓рд┐рдкрд┐ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗрдЫ lottery-compiled-for-test.fif, рдЬреБрди рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗрдЫреМрдВ lottery-test-suite.fif

╨Т lottery-test-suite.fif рдЕрдиреБрдмрдВрдз рдХреЛрдб рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рд▓рд╛рдЗрди рдердкреНрдиреБрд╣реЛрд╕реН "lottery-compiled-for-test.fif" include.

рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВ рдЙрддреНрддреАрд░реНрдг рднрдПрдХреЛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрдЫреМрдВред

~/TON/build/crypto/fift -s lottery-test-suite.fif

рд░рд╛рдореНрд░реЛ, рдЕрдм рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕реБрд░реБрд╡рд╛рдд рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди, рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ test.sh, рдЬреБрди рдкрд╣рд┐рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреЗрдЫ build.sh, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред

touch test.sh
chmod +x test.sh

рд╣рд╛рдореА рднрд┐рддреНрд░ рд▓реЗрдЦреНрдЫреМрдВ

./build.sh 

echo "nCompilation completedn"

export FIFTPATH=~/TON/ton/crypto/fift/lib
~/TON/build/crypto/fift -s lottery-test-suite.fif

рддреНрдпрд╕реЛ рдЧрд░реМрдВ test.sh рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрд▓реЗ рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред

chmod +x ./test.sh
./test.sh

рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ рдХрд┐ рд╕рдореНрдЭреМрддрд╛ рдХрдореНрдкрд╛рдЗрд▓ рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдЫред

рд░рд╛рдореНрд░реЛ, рдЕрдм рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдорд╛ test.sh рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдВрдХрд▓рди рдЧрд░реА рддреБрд░реБрдиреНрддреИ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░рд┐рдиреЗрдЫред рдпрд╣рд╛рдБ рдХреЛ рд▓рд┐рдЩреНрдХ рдЫ рдкреНрд░рддрд┐рдмрджреНрдз.

рдареАрдХ рдЫ, рд╣рд╛рдореАрд▓реЗ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБ рдЕрдШрд┐, рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рдХреБрд░рд╛ рдЧрд░реМрдВред

рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ build рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдмрдВрдз рд░ рдпрд╕рдХреЛ рдХреНрд▓реЛрди рд╕реНрдерд┐рд░рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗрдЫреМрдВ lottery-compiled.fif, lottery-compiled-for-test.fifред рдлреЛрд▓реНрдбрд░ рдкрдирд┐ рдмрдирд╛рдФрдВ test рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓ рдХрд╣рд╛рдБ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреЗрдЫ? lottery-test-suite.fif рд░ рд╕рдореНрднрд╛рд╡рд┐рдд рдЕрдиреНрдп рд╕рдорд░реНрдерди рдлрд╛рдЗрд▓рд╣рд░реВред рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рд▓рд┐рдЩреНрдХ.

рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рд╛рдЦреМрдВред

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

рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдХреБрди рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд░ рдХреБрди рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреМрдВред

рдо рд╣рд╛рдореАрд▓реЗ рднрдгреНрдбрд╛рд░рдг рдЧрд░реЗрдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреБред

`seqno` 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╤Б╤З╨╡╤В╤З╨╕╨║. 

`pubkey` 256-╤В╨╕ ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╨┐╤Г╨▒╨╗╨╕╤З╨╜╤Л╨╣ ╨║╨╗╤О╤З, ╤Б ╨┐╨╛╨╝╨╛╤Й╤М╤О ╨║╨╛╤В╨╛╤А╨╛╨│╨╛, ╨╝╤Л ╨▒╤Г╨┤╨╡╨╝ ╨┐╤А╨╛╨▓╨╡╤А╤П╤В╤М ╨┐╨╛╨┤╨┐╨╕╤Б╤М ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╨╕╨╖╨▓╨╜╨╡ ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╤П, ╨╛ ╤З╨╡╨╝ ╨╜╨╕╨╢╨╡. 

`order_seqno` 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╤Е╤А╨░╨╜╨╕╤В ╤Б╤З╨╡╤В╤З╨╕╨║ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨░ ╤Б╤В╨░╨▓╨╛╨║. 

`number_of_wins` 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╤Е╤А╨░╨╜╨╕╤В  ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨┐╨╛╨▒╨╡╨┤. 

`incoming_amount` ╤В╨╕╨┐ ╨┤╨░╨╜╨╜╤Л╤Е Gram (╨┐╨╡╤А╨▓╤Л╨╡ 4 ╨▒╨╕╤В╨░ ╨╛╤В╨▓╨╡╤З╨░╨╡╤В ╨╖╨░ ╨┤╨╗╨╕╨╜╤Г), ╤Е╤А╨░╨╜╨╕╤В ╨╛╨▒╤Й╨╡╨╡ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨│╤А╨░╨╝╨╛╨▓, ╨║╨╛╤В╨╛╤А╤Л╨╡ ╨▒╤Л╨╗╨╕ ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╤Л ╨╜╨░ ╨║╨╛╨╜╤В╤А╤В╨░╨║╤В. 

`outgoing_amount` ╨╛╨▒╤Й╨╡╨╡ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨│╤А╨░╨╝╨╛╨▓, ╨║╨╛╤В╨╛╤А╨╛╨╡ ╨▒╤Л╨╗╨╛ ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╨╛ ╨┐╨╛╨▒╨╡╨┤╨╕╤В╨╡╨╗╤П╨╝. 

`owner_wc` ╨╜╨╛╨╝╨╡╤А ╨▓╨╛╤А╨║╤З╨╡╨╣╨╜╨░, 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ (╨▓ ╨╜╨╡╨║╨╛╤В╨╛╤А╤Л╤Е ╨╝╨╡╤Б╤В╨░╤Е ╨╜╨░╨┐╨╕╤Б╨░╨╜╨╛, ╤З╤В╨╛ 8-╨╝╨╕ ╨▒╨╕╤В╨╜╨╛╨╡) ╤Ж╨╡╨╗╨╛╨╡ ╤З╨╕╤Б╨╗╨╛. ╨Т ╨┤╨░╨╜╨╜╤Л╨╣ ╨╝╨╛╨╝╨╡╨╜╤В ╨▓╤Б╨╡╨│╨╛ ╨┤╨▓╨░ -1 ╨╕ 0. 

`owner_account_id` 256-╤В╨╕ ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛, ╨░╨┤╤А╨╡╤Б ╨║╨╛╨╜╤В╤А╨░╨║╤В╨░ ╨▓ ╤В╨╡╨║╤Г╤Й╨╡╨╝ ╨▓╨╛╤А╨║╤З╨╡╨╣╨╜╨╡. 

`orders` ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╨░╤П ╤В╨╕╨┐╨░ ╤Б╨╗╨╛╨▓╨░╤А╤М, ╤Е╤А╨░╨╜╨╕╤В ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╕╨╡ ╨┤╨▓╨░╨┤╤Ж╨░╤В╤М ╤Б╤В╨░╨▓╨╛╨║. 

рдЕрд░реНрдХреЛ рддрдкрд╛рдИрдВрд▓реЗ рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдкрд╣рд┐рд▓реЗ рдлреЛрди рдЧрд░реМрдВ pack_state(), рдЬрд╕рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдорд╛ рдкрдЫрд┐рдХреЛ рдмрдЪрддрдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рдкреНрдпрд╛рдХ рдЧрд░реНрдиреЗрдЫред рджреЛрд╕реНрд░реЛрд▓рд╛рдИ рдлреЛрди рдЧрд░реМрдВ unpack_state() рдкрдвреНрдиреЗ рд░ рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫред

_ pack_state(int seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) inline_ref {
    return begin_cell()
            .store_uint(seqno, 32)
            .store_uint(pubkey, 256)
            .store_uint(order_seqno, 32)
            .store_uint(number_of_wins, 32)
            .store_grams(incoming_amount)
            .store_grams(outgoing_amount)
            .store_int(owner_wc, 32)
            .store_uint(owner_account_id, 256)
            .store_dict(orders)
            .end_cell();
}

_ unpack_state() inline_ref {
    var ds = begin_parse(get_data());
    var unpacked = (ds~load_uint(32), ds~load_uint(256), ds~load_uint(32), ds~load_uint(32), ds~load_grams(), ds~load_grams(), ds~load_int(32), ds~load_uint(256), ds~load_dict());
    ds.end_parse();
    return unpacked;
}

рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рд╕реБрд░реБрдорд╛ рдпреА рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдердкреНрдЫреМрдВред рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ рдЬрд╕реНрддреЛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдоред

рдбрд╛рдЯрд╛ рдмрдЪрдд рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ set_data() рд░ рдпрд╕рд▓реЗ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдиреЗрдЫ pack_state() рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдорд╛ред

cell packed_state = pack_state(arg_1, .., arg_n); 
set_data(packed_state);

рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрди рд░ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЫрдиреН, рд╣рд╛рдореА рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рд╕рдХреНрдЫреМрдВред

рд╣рд╛рдореАрд▓реЗ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдЖрдЙрдБрджреИ рдЧрд░реЗрдХреЛ рд╕рдиреНрджреЗрд╢ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдорд╛рд▓рд┐рдХ (рд╡рд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрдорд╛ рдкрд╣реБрдБрдЪ рднрдПрдХреЛ рдЕрд░реНрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛) рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

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

рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБ рдЕрдШрд┐, рдПрдЙрдЯрд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд▓реЗрдЦреМрдВ test/keys/owner.pkред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореЛрдбрдорд╛ рдлрд┐рдлреНрдЯ рд╕реБрд░реВ рдЧрд░реМрдВ рд░ рдЪрд╛рд░ рдЖрджреЗрд╢рд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реМрдВред

`newkeypair` ╨│╨╡╨╜╨╡╤А╨░╤Ж╨╕╤П ╨┐╤Г╨▒╨╗╨╕╤З╨╜╨╛╨│╨╛ ╨╕ ╨┐╤А╨╕╨▓╨░╤В╨╜╨╛╨│╨╛ ╨║╨╗╤О╤З╨░ ╨╕ ╨╖╨░╨┐╨╕╤Б╤М ╨╕╤Е ╨▓ ╤Б╤В╨╡╨║. 

`drop` ╤Г╨┤╨░╨╗╨╡╨╜╨╕╤П ╨╕╨╖ ╤Б╤В╨╡╨║╨░ ╨▓╨╡╤А╤Е╨╜╨╡╨│╨╛ ╤Н╨╗╨╡╨╝╨╡╨╜╤В╨░ (╨▓ ╨┤╨░╨╜╨╜╨╛╨╝ ╤Б╨╗╤Г╤З╨░╨╡ ╨┐╤Г╨▒╨╗╨╕╤З╨╜╤Л╨╣ ╨║╨╗╤О╤З)  

`.s` ╨┐╤А╨╛╤Б╤В╨╛ ╨┐╨╛╤Б╨╝╨╛╤В╤А╨╡╤В╤М ╤З╤В╨╛ ╨╗╨╡╨╢╨╕╤В ╨▓ ╤Б╤В╨╡╨║╨╡ ╨▓ ╨┤╨░╨╜╨╜╤Л╨╣ ╨╝╨╛╨╝╨╡╨╜╤В 

`"owner.pk" B>file` ╨╖╨░╨┐╨╕╤Б╤М ╨┐╤А╨╕╨▓╨░╤В╨╜╨╛╨│╨╛ ╨║╨╗╤О╤З╨░ ╨▓ ╤Д╨░╨╣╨╗ ╤Б ╨╕╨╝╨╡╨╜╨╡╨╝ `owner.pk`. 

`bye` ╨╖╨░╨▓╨╡╤А╤И╨░╨╡╤В ╤А╨░╨▒╨╛╤В╤Г ╤Б Fift. 

рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ keys рдлреЛрд▓реНрдбрд░ рднрд┐рддреНрд░ test рд░ рддреНрдпрд╣рд╛рдБ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред

mkdir test/keys
cd test/keys
~/TON/build/crypto/fift -i 
newkeypair
 ok
.s 
BYTES:128DB222CEB6CF5722021C3F21D4DF391CE6D5F70C874097E28D06FCE9FD6917 BYTES:DD0A81AAF5C07AAAA0C7772BB274E494E93BB0123AA1B29ECE7D42AE45184128 
drop 
 ok
"owner.pk" B>file
 ok
bye

рд╣рд╛рдореА рд╣рд╛рд▓рдХреЛ рдлреЛрд▓реНрдбрд░рдорд╛ рдлрд╛рдЗрд▓ рджреЗрдЦреНрдЫреМрдВ owner.pk.

рд╣рд╛рдореА рд╕реНрдЯреНрдпрд╛рдХрдмрд╛рдЯ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА рд╣рдЯрд╛рдЙрдБрдЫреМрдВ рд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрд╛ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдирд┐рдЬреАрдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рдЕрдм рд╣рд╛рдореАрд▓реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реМрдВред рдкрд╣рд┐рд▓реЗ рд╣рд╛рдореА рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдлрд╛рдЗрд▓рдмрд╛рдЯ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рдкрдвреНрдЫреМрдВ file>B рд░ рдпрд╕рд▓рд╛рдИ рдЪрд░рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН owner_private_key, рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ priv>pub рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреАрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд░рд┐рдгрд╛рдо рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН owner_public_key.

variable owner_private_key
variable owner_public_key 

"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !

рд╣рд╛рдореАрд▓рд╛рдИ рджреБрд╡реИ рдХреБрдЮреНрдЬреАрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫред

рд╣рд╛рдореА рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдЬрд╕реНрддреИ рдХреНрд░рдорд╢рдГ рдордирдорд╛рдиреА рдбреЗрдЯрд╛рдХреЛ рд╕рд╛рде рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдг рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрдЫреМрдВ pack_state()рд░ рдпрд╕рд▓рд╛рдИ рдЪрд░рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН storage.

variable owner_private_key
variable owner_public_key 
variable orders
variable owner_wc
variable owner_account_id

"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !
dictnew orders !
0 owner_wc !
0 owner_account_id !

<b 0 32 u, owner_public_key @ B, 0 32 u, 0 32 u, 0 Gram, 0 Gram, owner_wc @ 32 i, owner_account_id @ 256 u,  orders @ dict, b> storage !

рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдиреНрджреЗрд╢ рд░рдЪрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ, рдпрд╕рд▓реЗ рдХреЗрд╡рд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд░ рдХрд╛рдЙрдиреНрдЯрд░ рдорд╛рди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред

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

variable message_to_sign
variable message_to_send
variable signature
<b 0 32 u, b> message_to_sign !
message_to_sign @ hashu owner_private_key @ ed25519_sign_uint signature !
<b signature @ B, 0 32 u, b> <s  message_to_send !  

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рдкрдард╛рдЙрдиреЗ рд╕рдиреНрджреЗрд╢ рдЪрд░рдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЫ message_to_send, рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ hashu, ed25519_sign_uint рддрдкрд╛рдИрдВ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдлрд┐рдлреНрдЯ рдХрд╛рдЧрдЬрд╛рддрдорд╛.

рд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдЙрди рд╣рд╛рдореА рдлреЗрд░рд┐ рдХрд▓ рдЧрд░реНрдЫреМрдВред

message_to_send @ 
recv_external 
code 
storage @
c7
runvmctx

рдпрд╣рд╛рдБ рдпрддрд┐ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рд╛рде рдлрд╛рдЗрд▓ рдпрд╕ рдЪрд░рдгрдорд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫред

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

рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА рд╕рдиреНрджреЗрд╢рдмрд╛рдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ 512 рдмрд┐рдЯрд╣рд░реВ рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдЪрд░рдорд╛ рд▓реЗрдЦреНрдЫреМрдВ, рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдХрд╛рдЙрдиреНрдЯрд░ рднреЗрд░рд┐рдПрдмрд▓рдХреЛ 32 рдмрд┐рдЯреНрд╕ рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВред

рд╣рд╛рдореАрд╕рдБрдЧ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдЫ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

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

var signature = in_msg~load_bits(512);
var message = in_msg;
int msg_seqno = message~load_uint(32);
(int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
throw_unless(33, msg_seqno == stored_seqno);
throw_unless(34, check_signature(slice_hash(in_msg), signature, pubkey));

рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдареАрдХ рдЫ.

рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рджреЛрд╕реНрд░реЛ рдкрд░реАрдХреНрд╖рдг рдЕрд╕рдлрд▓ рднрдпреЛред рджреБрдИ рдХрд╛рд░рдгрд▓реЗ, рд╕рдиреНрджреЗрд╢рдорд╛ рдкрд░реНрдпрд╛рдкреНрдд рдмрд┐рдЯрд╣рд░реВ рдЫреИрдирдиреН рд░ рднрдгреНрдбрд╛рд░рдгрдорд╛ рдкрд░реНрдпрд╛рдкреНрдд рдмрд┐рдЯрд╣рд░реВ рдЫреИрдирдиреН, рддреНрдпрд╕реИрд▓реЗ рдкрд╛рд░реНрд╕рд┐рдЩ рдЧрд░реНрджрд╛ рдХреЛрдб рдХреНрд░реНрдпрд╛рд╕ рд╣реБрдиреНрдЫред рд╣рд╛рдореАрд▓реЗ рдкрдард╛рдЙрдиреЗ рд╕рдиреНрджреЗрд╢рдорд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдердкреНрди рд░ рдЕрдиреНрддрд┐рдо рдкрд░реАрдХреНрд╖рдгрдмрд╛рдЯ рднрдгреНрдбрд╛рд░рдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рджреЛрд╕реНрд░реЛ рдкрд░реАрдХреНрд╖рдгрдорд╛, рд╣рд╛рдореА рд╕рдиреНрджреЗрд╢ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдердкреНрдиреЗрдЫреМрдВ рд░ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рднрдгреНрдбрд╛рд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗрдЫреМрдВред рдпрд╣рд╛рдБ рдпрддрд┐ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рд╛рде рдлрд╛рдЗрд▓ рдЕрд╣рд┐рд▓реЗ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред

рдЪреМрдереЛ рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦреМрдВ, рдЬрд╕рдорд╛ рд╣рд╛рдореА рдЕрд░реВ рдХрд╕реИрдХреЛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрд╕рдБрдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░рд┐рдПрдХреЛ рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдиреЗрдЫреМрдВред рдЕрд░реНрдХреЛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рд░ рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реМрдВ not-owner.pkред рд╣рд╛рдореА рдпреЛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрд▓реЗ рд╕рдиреНрджреЗрд╢рдорд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░реНрдиреЗрдЫреМрдВред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЙрддреНрддреАрд░реНрдг рд╣реБрдиреНрдЫрдиреНред рдкреНрд░рддрд┐рдмрджреНрдз рдпреЛ рдХреНрд╖рдг рдорд╛ред

рдЕрдм рд╣рд╛рдореА рдЕрдиреНрддрддрдГ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рддрд░реНрдХ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рд╕рдХреНрдЫреМрдВред
╨Т recv_external() рд╣рд╛рдореА рджреБрдИ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫреМрдВред

рд╣рд╛рдореНрд░реЛ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдЦреЗрд▓рд╛рдбреАрд╣рд░реВрдХреЛ рдШрд╛рдЯрд╛ рдЬрдореНрдорд╛ рдЧрд░реНрдиреЗ рднрдПрдХреЛрд▓реЗ, рдпреЛ рдкреИрд╕рд╛ рдЪрд┐рдареНрдард╛рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рд▓рд╛рдИ рд╣рд╕реНрддрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреБрдкрд░реНрдЫред рд▓рдЯрд░реА рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рдХреЛ рд╡рд╛рд▓реЗрдЯ рдареЗрдЧрд╛рдирд╛ рднрдгреНрдбрд╛рд░рдгрдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдиреНрдЫ рдЬрдм рд╕рдореНрдЭреМрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫред

рдХреЗрд╡рд▓ рдХреЗ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рд╣рд░рд╛рдЙрдиреЗрд╣рд░реВрдХреЛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдБрдЫреМрдВред рд╣рд╛рдореАрд▓реЗ рдЪрд┐рдареНрдард╛рдмрд╛рдЯ рдорд╛рд▓рд┐рдХрдХреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрди рдкрдирд┐ рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫред

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

<b 0 32 u, 1 @ 7 u, new_owner_wc @  32 i, new_owner_account_id @ 256 u, b> message_to_sign !

рдкрд░реАрдХреНрд╖рдгрдорд╛ рддрдкрд╛рдИрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рднрдгреНрдбрд╛рд░рдг рдХрд╕рд░реА рдбрд┐рд╕реЗрд░рд┐рдпрд▓рд╛рдЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ storage рдкрд╛рдБрдЪ рдорд╛ред рдЪрд░рд╣рд░реВрдХреЛ рдбрд┐рд╕реЗрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╕рди рдлрд┐рдлреНрдЯ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред

рдХрдорд┐рдЯ рд▓рд┐рдЩреНрдХ рдердкрд┐рдПрдХреЛ рдЖрдЯрд╛ рд╕рдВрдЧред

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдпреЛ рдЕрд╕рдлрд▓ рднрдПрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЕрдм рд▓рдЯрд░реА рдорд╛рд▓рд┐рдХрдХреЛ рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рддрд░реНрдХ рдердкреМрдВред

рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рд╣рд╛рдореА рдкрд╛рд░реНрд╕ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ message, рдорд╛ рдкрдвреНрдиреБрд╣реЛрд╕реН actionред рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрдиреЗ рдЧрд░реМрдВ рдХрд┐ рд╣рд╛рдореА рджреБрдИ рд╣реБрдиреЗрдЫреМрдВ action: рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреБрд╣реЛрд╕реНред

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

рдЕрдм рдкрд╣рд┐рд▓реЗ рд╕реЗрдн рдЧрд░рд┐рдПрдХреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧреНрд░рд╛рдордХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рддрд░реНрдХ рд▓реЗрдЦреМрдВред

рдкрд╣рд┐рд▓реЗ, рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦреМрдВред рд╣рд╛рдореА рджреБрдИрд╡рдЯрд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ, рдПрдЙрдЯрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдиреНрддреБрд▓рди рдирднрдПрдХреЛ рдмреЗрд▓рд╛, рджреЛрд╕реНрд░реЛ рдЬрдм рд╕рдмреИ рдХреБрд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд╕ рд╣реБрдиреБрдкрд░реНрдЫред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдпрд╕ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдорд╛.

рдЕрдм рдХреЛрдб рдердкреМрдВред рдкрд╣рд┐рд▓реЗ, рджреБрдИ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рд╣рд░реВ рд▓реЗрдЦреМрдВред рдкрд╣рд┐рд▓реЛ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рд╣рд╛рд▓рдХреЛ рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБ рд╣реЛред

int balance() inline_ref method_id {
    return get_balance().pair_first();
}

рд░ рджреЛрд╕реНрд░реЛ рдЕрд░реНрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛред рдореИрд▓реЗ рдЕрд░реНрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдмрд╛рдЯ рдпреЛ рд╡рд┐рдзрд┐ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрдВред

() send_grams(int wc, int addr, int grams) impure {
    ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
    cell msg = begin_cell()
    ;;  .store_uint(0, 1) ;; 0 <= format indicator int_msg_info$0 
    ;;  .store_uint(1, 1) ;; 1 <= ihr disabled
    ;;  .store_uint(1, 1) ;; 1 <= bounce = true
    ;;  .store_uint(0, 1) ;; 0 <= bounced = false
    ;;  .store_uint(4, 5)  ;; 00100 <= address flags, anycast = false, 8-bit workchain
        .store_uint (196, 9)
        .store_int(wc, 8)
        .store_uint(addr, 256)
        .store_grams(grams)
        .store_uint(0, 107) ;; 106 zeroes +  0 as an indicator that there is no cell with the data.
        .end_cell(); 
    send_raw_message(msg, 3); ;; mode, 2 for ignoring errors, 1 for sender pays fees, 64 for returning inbound message value
}

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

int amount_to_send = message~load_grams();
throw_if(36, amount_to_send + 500000000 > balance());
accept_message();
send_grams(owner_wc, owner_account_id, amount_to_send);
set_data(pack_state(stored_seqno + 1, pubkey, order_seqno, number_of_wins, incoming_amount, outgoing_amount, owner_wc, owner_account_id, orders));

рдпрд╣рд╛рдБ рдпрддрд┐ рдЕрд╣рд┐рд▓реЗрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рддрд┐рдиреАрд╣рд░реВ рдЙрддреНрддреАрд░реНрдг рднрдПрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдЕрдм рдЖрдиреНрддрд░рд┐рдХ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдорд╛ рдЬрд╛рдФрдВред рд╡рд╛рд╕реНрддрд╡рдорд╛, рд╣рд╛рдореАрд▓реЗ рдЧреНрд░рд╛рдо рдорд╛рддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдЦреЗрд▓рд╛рдбреАрд▓реЗ рдЬрд┐рддреНрдпреЛ рднрдиреЗ рджреЛрдмреНрдмрд░ рд░рдХрдо рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдорд╛рд▓рд┐рдХрд▓рд╛рдИ рд╣рд╛рд░реНрдпреЛ рднрдиреЗ рдПрдХ рддрд┐рд╣рд╛рдЗред

рдкрд╣рд┐рд▓реЗ, рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦреМрдВред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓рд╛рдИ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдкрд░реАрдХреНрд╖рдг рдареЗрдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╣рд╛рдБрдмрд╛рдЯ рд╣рд╛рдореАрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреЗ рдЫреМрдВред

рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдареЗрдЧрд╛рдирд╛рдорд╛ рджреБрдИ рдирдореНрдмрд░рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рд╡рд░реНрдХрдЪреЗрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рд░ рдпрд╕ рд╡рд░реНрдХрдЪреЗрдирдорд╛ 256-рдмрд┐рдЯ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЦрд╛рддрд╛ рдирдореНрдмрд░ред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, -1 рд░ 12345, рдпреЛ рдареЗрдЧрд╛рдирд╛ рд╣реЛ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реНрдиреЗрдЫреМрдВред

рдореИрд▓реЗ рдареЗрдЧрд╛рдирд╛ рдмрдЪрдд рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрдВ TonUtil.fif.

// ( wc addr fname -- )  Save address to file in 36-byte format
{ -rot 256 u>B swap 32 i>B B+ swap B>file } : save-address

рдлрдВрдХреНрд╢рдирд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рд╣реЗрд░реМрдВ, рдпрд╕рд▓реЗ рдлрд┐рдлреНрдЯрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдмреБрдЭрд╛рдЗ рджрд┐рдиреЗрдЫред рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореЛрдбрдорд╛ рдлрд┐рдлреНрдЯ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

~/TON/build/crypto/fift -i 

рдкрд╣рд┐рд▓реЗ рд╣рд╛рдореА рд╕реНрдЯреНрдпрд╛рдХрдорд╛ -1, 12345 рд░ рднрд╡рд┐рд╖реНрдпрдХреЛ рдлрд╛рдЗрд▓ "sender.addr" рдХреЛ рдирд╛рдо рдкреБрд╢ рдЧрд░реНрдЫреМрдВ:

-1 12345 "sender.addr" 

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

"sender.addr" -1 12345

256 u>B 256-рдмрд┐рдЯ рдЧреИрд░-рдЛрдгрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХрд▓рд╛рдИ рдмрд╛рдЗрдЯрд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрджрдЫред

"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039

swap рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рд╢реАрд░реНрд╖ рджреБрдИ рддрддреНрд╡рд╣рд░реВ рд╕реНрд╡реИрдк рдЧрд░реНрджрдЫред

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -1

32 i>B 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХрд▓рд╛рдИ рдмрд╛рдЗрдЯрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрджрдЫред

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFF

B+ рдмрд╛рдЗрдЯрдХреЛ рджреБрдИ рдЕрдиреБрдХреНрд░рдо рдЬреЛрдбреНрдЫред

 "sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF

рдлреЗрд░реА swap.

BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF "sender.addr" 

рд░ рдЕрдиреНрддрдорд╛ рдмрд╛рдЗрдЯрд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫрдиреН B>fileред рдпрд╕ рдкрдЫрд┐ рд╣рд╛рдореНрд░реЛ рд╕реНрдЯреНрдпрд╛рдХ рдЦрд╛рд▓реА рдЫред рд╣рд╛рдореА рд░реЛрдХреНрдЫреМрдВ Fiftред рд╣рд╛рд▓рдХреЛ рдлреЛрд▓реНрдбрд░рдорд╛ рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ sender.addrред рдлрд╛рдЗрд▓рд▓рд╛рдИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдлреЛрд▓реНрдбрд░рдорд╛ рд╕рд╛рд░реМрдВ test/addresses/.

рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦреМрдВ рдЬрд╕рд▓реЗ рдЧреНрд░рд╛рдорд▓рд╛рдИ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдкрдард╛рдЙрдиреЗрдЫред рдпрд╣рд╛рдБ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЫ.

рдЕрдм рд▓рдЯрд░реА рдХреЛ рддрд░реНрдХ рд╣реЗрд░реМрдВред

рд╣рд╛рдореАрд▓реЗ рдЧрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рд╕рдиреНрджреЗрд╢ рдЬрд╛рдБрдЪ рд╣реЛ bounced рд╡рд╛ рд╣реЛрдЗрди рднрдиреЗ bouncedрддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдЫреМрдВред bounced рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдпрджрд┐ рдХреЗрд╣рд┐ рддреНрд░реБрдЯрд┐ рднрдпреЛ рднрдиреЗ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдЧреНрд░рд╛рдо рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рдЕрдЪрд╛рдирдХ рддреНрд░реБрдЯрд┐ рднрдпреЛ рднрдиреЗ рд╣рд╛рдореА рдЧреНрд░рд╛рдо рдлрд┐рд░реНрддрд╛ рдЧрд░реНрджреИрдиреМрдВред

рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ, рдпрджрд┐ рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рдЖрдзрд╛ рдЧреНрд░рд╛рдо рднрдиреНрджрд╛ рдХрдо рдЫ рднрдиреЗ, рд╣рд╛рдореА рдХреЗрд╡рд▓ рд╕рдиреНрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдЫреМрдВред

рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдареЗрдЧрд╛рдирд╛ рдкрд╛рд░реНрд╕ рдЧрд░реНрдЫреМрдВ рдЬрд╕рдмрд╛рдЯ рд╕рдиреНрджреЗрд╢ рдЖрдпреЛред

рд╣рд╛рдореА рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкрдвреНрдЫреМрдВ рд░ рдпрджрд┐ рдмреАрд╕ рднрдиреНрджрд╛ рдмрдвреА рдЫрдиреН рднрдиреЗ рдЗрддрд┐рд╣рд╛рд╕рдмрд╛рдЯ рдкреБрд░рд╛рдиреЛ рд╢рд░реНрддрд╣рд░реВ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реНред рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рддреАрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреЗрдВ pack_order(), unpack_order(), remove_old_orders().

рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рд╣реЗрд░реНрдЫреМрдВ рдпрджрд┐ рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рднреБрдХреНрддрд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрди рднрдиреЗ, рд╣рд╛рдореА рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпреЛ рд╢рд░реНрдд рд╣реЛрдЗрди, рддрд░ рдкреБрди: рднрд░реНрдирд╛ рд╣реЛ рд░ рдкреБрдирдГрдкреВрд░реНрддрд┐ рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред orders.

рддреНрдпрд╕рдкрдЫрд┐ рдЕрдиреНрддрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рд╕рд╛рд░ред

рдкрд╣рд┐рд▓реЗ, рдпрджрд┐ рдЦреЗрд▓рд╛рдбреАрд▓реЗ рд╣рд╛рд░реНрдпреЛ рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕рдЯреНрдЯреЗрдмрд╛рдЬреА рдЗрддрд┐рд╣рд╛рд╕рдорд╛ рдмрдЪрдд рдЧрд░реНрдЫреМрдВ рд░ рдпрджрд┐ рд░рдХрдо 3 рдЧреНрд░рд╛рдо рднрдиреНрджрд╛ рдмрдвреА рдЫ рднрдиреЗ, рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдорд╛рд▓рд┐рдХрд▓рд╛рдИ 1/3 рдкрдард╛рдЙрдБрдЫреМрдВред

рдпрджрд┐ рдЦреЗрд▓рд╛рдбреАрд▓реЗ рдЬрд┐рддреНрдпреЛ рднрдиреЗ, рд╣рд╛рдореА рдЦреЗрд▓рд╛рдбреАрдХреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рджреЛрдмреНрдмрд░ рд░рдХрдо рдкрдард╛рдЙрдБрдЫреМрдВ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЗрддрд┐рд╣рд╛рд╕рдорд╛ рд╢рд░реНрдд рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рдмрдЪрдд рдЧрд░реНрдЫреМрдВред

() recv_internal(int order_amount, cell in_msg_cell, slice in_msg) impure {
    var cs = in_msg_cell.begin_parse();
    int flags = cs~load_uint(4);  ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
    if (flags & 1) { ;; ignore bounced
        return ();
    }
    if (order_amount < 500000000) { ;; just receive grams without changing state 
        return ();
    }
    slice src_addr_slice = cs~load_msg_addr();
    (int src_wc, int src_addr) = parse_std_addr(src_addr_slice);
    (int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
    orders = remove_old_orders(orders, order_seqno);
    if (balance() < 2 * order_amount + 500000000) { ;; not enough grams to pay the bet back, so this is re-fill
        builder order = pack_order(order_seqno, 1, now(), order_amount, src_wc, src_addr);
        orders~udict_set_builder(32, order_seqno, order);
        set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
        return ();
    }
    if (rand(10) >= 4) {
        builder order = pack_order(order_seqno, 3, now(), order_amount, src_wc, src_addr);
        orders~udict_set_builder(32, order_seqno, order);
        set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
        if (order_amount > 3000000000) {
            send_grams(owner_wc, owner_account_id, order_amount / 3);
        }
        return ();
    }
    send_grams(src_wc, src_addr, 2 * order_amount);
    builder order = pack_order(order_seqno, 2, now(), order_amount, src_wc, src_addr);
    orders~udict_set_builder(32, order_seqno, order);
    set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins + 1, incoming_amount, outgoing_amount + 2 * order_amount, owner_wc, owner_account_id, orders));
}

рддреНрдпреЛ рд╕рдмреИ рдЫред рдЕрдиреБрд░реВрдк рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛.

рдЕрдм рдмрд╛рдБрдХреА рд░рд╣реЗрдХреЛ рд╕рдмреИ рд╕рд░рд▓ рдЫ, рдЧреЗрдЯ-рд╡рд┐рдзрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рддрд╛рдХрд┐ рд╣рд╛рдореА рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ (рд╡рд╛рд╕реНрддрд╡рдорд╛, рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкрдвреНрдиреБрд╣реЛрд╕реН)ред

рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐рд╣рд░реВ рдердкреМрдВред рд╣рд╛рдореА рдХрд╕рд░реА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рддрд▓ рд▓реЗрдЦреНрдиреЗрдЫреМрдВред

рдореИрд▓реЗ рдХреЛрдб рдердкреНрди рдкрдирд┐ рдмрд┐рд░реНрд╕реЗрдВ рдЬрд╕рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрджрд╛ рд╣реБрдиреЗ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред рдЕрдиреБрд░реВрдк рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ред рд░ рдердк рд╕рдЪреНрдпрд╛рдЗрдПрдХреЛ рдорд╛рд▓рд┐рдХрдХреЛ рдЦрд╛рддрд╛рдорд╛ рд░рдХрдордХреЛ 1/3 рдкрдард╛рдЙрдБрджрд╛ рдмрдЧред

рдЕрд░реНрдХреЛ рдЪрд░рдг рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди рд╣реЛред рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ requests.

рдореИрд▓реЗ рдкреНрд░рдХрд╛рд╢рди рдХреЛрдбрд▓рд╛рдИ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд┐рдПрдБ simple-wallet-code.fc рдЬреЛ рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ред

рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдХреЗрд╣рд┐ред рд╣рд╛рдореА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдг рд░ рдПрдХ рдЗрдирдкреБрдЯ рд╕рдиреНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдЫреМрдВред рдпрд╕ рдкрдЫрд┐, рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдареЗрдЧрд╛рдирд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ, рдЕрд░реНрдерд╛рддреН, рдареЗрдЧрд╛рдирд╛ TON рдорд╛ рдкреНрд░рдХрд╛рд╢рди рд╣реБрдиреБ рдЕрдШрд┐ рдиреИ рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫред рдЕрд░реНрдХреЛ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рдареЗрдЧрд╛рдирд╛рдорд╛ рдзреЗрд░реИ рдЧреНрд░рд╛рдорд╣рд░реВ рдкрдард╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рддреНрдпрд╕ рдкрдЫрд┐ рдорд╛рддреНрд░ рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рд╕рд╛рде рдлрд╛рдЗрд▓ рдкрдард╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдХрд┐рдирдХрд┐ рдиреЗрдЯрд╡рд░реНрдХрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд░ рддреНрдпрд╕рдорд╛ рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдХрдорд┐рд╢рди рд▓рд┐рдиреНрдЫ (рд╕реНрдорд╛рд░реНрдЯ рднрдгреНрдбрд╛рд░рдг рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдорд╛рдиреНрдпрдХрд░реНрддрд╛рд╣рд░реВред рдЕрдиреБрдмрдВрдз)ред рдХреЛрдб рдпрд╣рд╛рдБ рд╣реЗрд░реНрди рд╕рдХрд┐рдиреНрдЫ.

рдЕрд░реНрдХреЛ рд╣рд╛рдореА рдкреНрд░рдХрд╛рд╢рди рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░ рдкреНрд░рд╛рдкреНрдд lottery-query.boc рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдлрд╛рдЗрд▓ рд░ рдареЗрдЧрд╛рдирд╛ред

~/TON/build/crypto/fift -s requests/new-lottery.fif 0

рдЙрддреНрдкрдиреНрди рдлрд╛рдЗрд▓рд╣рд░реВ рдмрдЪрдд рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН: lottery-query.boc, lottery.addr, lottery.pk.

рдЕрдиреНрдп рдЪреАрдЬрд╣рд░реВ рдордзреНрдпреЗ, рд╣рд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рдЧрд╣рд░реВрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдареЗрдЧрд╛рдирд╛ рджреЗрдЦреНрдиреЗрдЫреМрдВред

new wallet address = 0:044910149dbeaf8eadbb2b28722e7d6a2dc6e264ec2f1d9bebd6fb209079bc2a 
(Saving address to file lottery.addr)
Non-bounceable address (for init): 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
Bounceable address (for later access): kQAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KpFY

рдХреЗрд╡рд▓ рд░рдорд╛рдЗрд▓реЛрдХреЛ рд▓рд╛рдЧрд┐, TON рд▓рд╛рдИ рдЕрдиреБрд░реЛрдз рдЧрд░реМрдВ

$ ./lite-client/lite-client -C ton-lite-client-test1.config.json 
getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

рд░ рд╣рд╛рдореА рдпреЛ рдареЗрдЧрд╛рдирд╛ рднрдПрдХреЛ рдЦрд╛рддрд╛ рдЦрд╛рд▓реА рднрдПрдХреЛ рджреЗрдЦреНрдиреЗрдЫреМрдВред

account state is empty

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

> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

рд╕реБрд░реБ рдирдЧрд░рд┐рдПрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ (state:account_uninit) рдПрдЙрдЯреИ рдареЗрдЧрд╛рдирд╛ рд░ 1 рдиреНрдпрд╛рдиреЛрдЧреНрд░рд╛рдордХреЛ рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рднрдПрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ред

account state is (account
  addr:(addr_std
    anycast:nothing workchain_id:0 address:x044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A)
  storage_stat:(storage_info
    used:(storage_used
      cells:(var_uint len:1 value:1)
      bits:(var_uint len:1 value:103)
      public_cells:(var_uint len:0 value:0)) last_paid:1583257959
    due_payment:nothing)
  storage:(account_storage last_trans_lt:3825478000002
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:4 value:2000000000))
      other:(extra_currencies
        dict:hme_empty))
    state:account_uninit))
x{C00044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A20259C2F2F4CB3800000DEAC10776091DCD650004_}
last transaction lt = 3825478000001 hash = B043616AE016682699477FFF01E6E903878CDFD6846042BA1BFC64775E7AC6C4
account balance is 2000000000ng

рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реМрдВред рд▓рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реБрд░реБ рдЧрд░реМрдВ рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реМрдВред

> sendfile lottery-query.boc
[ 1][t 2][1583008371.631410122][lite-client.cpp:966][!testnode] sending query from file lottery-query.boc
[ 3][t 1][1583008371.828550100][lite-client.cpp:976][!query]    external message status is 1 

рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реМрдВред

> last
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

рдЕрдиреНрдп рдЪреАрдЬрд╣рд░реВ рдордзреНрдпреЗ рд╣рд╛рдореА рдкрд╛рдЙрдБрдЫреМрдВред

  storage:(account_storage last_trans_lt:3825499000002
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:4 value:1987150999))
      other:(extra_currencies
        dict:hme_empty))
    state:(account_active

рд╣рд╛рдореА рддреНрдпреЛ рджреЗрдЦреНрдЫреМрдВ account_active.

рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд╕рдБрдЧ рдЕрдиреБрд░реВрдк рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдареАрдХ рдЫ.

рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред

рдЕрдЭ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдкрд╣рд┐рд▓реЛрд▓рд╛рдИ рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд╡рддрдиреНрддреНрд░ рдХрд╛рдордХреЛ рд░реВрдкрдорд╛ рдЫреЛрдбреНрдиреЗрдЫреМрдВ, рд░ рд╣рд╛рдореА рдорд╛рд▓рд┐рдХрдХреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рджреЛрд╕реНрд░реЛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫреМрдВред рд╡рд╛рд╕реНрддрд╡рдорд╛, рд╣рд╛рдореАрд▓реЗ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реАрдХреНрд╖рдгрдорд╛ рдЬрд╕реНрддреИ рдХрд╛рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпреЛ рд╕рдиреНрджреЗрд╢ рд╣рд╛рдореАрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рдкрдард╛рдЙрдиреЗ рдЫреМрдБ, рдЬрд╣рд╛рдБ msg_seqno 165, action рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ 2 рд░ 9.5 рдЧреНрд░рд╛рдоред

<b 165 32 u, 2 7 u, 9500000000 Gram, b>

рдЖрдлреНрдиреЛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрд▓реЗ рд╕рдиреНрджреЗрд╢рдорд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН lottery.pk, рдЬреБрди рдкрд╣рд┐рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдЙрддреНрдкрдиреНрди рднрдПрдХреЛ рдерд┐рдпреЛред рдпрд╣рд╛рдБ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЫ.

рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ

рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐рд╣рд░реВ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реМрдВред

рд▓рдиреНрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН lite-client рд░ рд╣рд╛рдореАрд▓реЗ рд▓реЗрдЦреЗрдХрд╛ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред

$ ./lite-client/lite-client -C ton-lite-client-test1.config.json
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd balance
arguments:  [ 104128 ] 
result:  [ 64633878952 ] 
...

╨Т result рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдлрд░реНрдХрд╛рдЙрдиреЗ рдорд╛рди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ balance() рд╣рд╛рдореНрд░реЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдмрд╛рдЯред
рд╣рд╛рдореА рдзреЗрд░реИ рдЕрдиреНрдп рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рддреНрдпрд╕реНрддреИ рдЧрд░реНрдиреЗрдЫреМрдВред

> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_seqno
...
arguments:  [ 77871 ] 
result:  [ 1 ] 

рддрдкрд╛рдИрдВрдХреЛ рд╢рд░реНрдд рдЗрддрд┐рд╣рд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реЛрдзреМрдВред

> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_orders
...
arguments:  [ 67442 ] 
result:  [ ([0 1 1583258284 10000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [1 3 1583258347 4000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [2 1 1583259901 50000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308]) ] 

рд╣рд╛рдореА рд▓рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рд╕рд╛рдЗрдЯрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред

рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

рдореИрд▓реЗ рдкрд╛рдЗрдердирдорд╛ рдПрдХ рд╕рд░рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд▓реЗрдЦреЗрдХреЛ рдЫреБ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдмрд╛рдЯ рдбрд╛рдЯрд╛рд▓рд╛рдИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░рд┐рдХрд╛рдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиред рдпрд╣рд╛рдБ рдо рдпрд╕рдорд╛ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдмрд╕реНрдиреЗ рдЫреИрди рд░ рд╕рд╛рдЗрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗрдЫреБ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдорд╛.

TON рд▓рд╛рдИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдмрд╛рдЯ рдЧрд░рд┐рдиреНрдЫ Python рд╕рд╣рдпреЛрдЧрдХреЛ рд╕рд╛рде lite-clientред рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╕рд╛рдЗрдЯ рдбрдХрд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ Google рдХреНрд▓рд╛рдЙрдбрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рд▓рд┐рдЩреНрдХ.

рдХреЛрд╕рд┐рд╕ рдЧрд░реНрджреИ

рдЕрдм рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдкреБрдирдГрдкреВрд░реНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ рд╡рд╛рд▓реЗрдЯред рд╣рд╛рдореА 40 рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреЗрдЫреМрдВред рд░ рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣реА рд╢рд░реНрддрд╣рд░реВ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореАрд▓реЗ рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рд╕рд╛рдЗрдЯрд▓реЗ рдмреЗрдЯреНрд╕рдХреЛ рдЗрддрд┐рд╣рд╛рд╕, рд╣рд╛рд▓рдХреЛ рд╡рд┐рдЬрдпреА рдкреНрд░рддрд┐рд╢рдд рд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрд╛рдЙрдБрдЫред

рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВрдХрд┐ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рдЬрд┐рддреНрдпреМрдВ, рджреЛрд╕реНрд░реЛ рд╣рд╛рд░реНрдпреЛред

рдкрдЫрд┐рд╢рдмреНрдж

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

рд╕рд╛рдпрдж рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд╛ рдХреЗрд╣реА рдкрдХреНрд╖рд╣рд░реВ рдЕрдЭ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░ рд╕реБрдиреНрджрд░ рдврдВрдЧрд▓реЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛ, рддрд░ рд▓реЗрдЦ рддрдпрд╛рд░ рдЧрд░реНрди рдЕрдЭ рдмрдвреА рд╕рдордп рд▓рд╛рдЧреНрдиреЗ рдерд┐рдпреЛред рдпреЛ рдкрдирд┐ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдореИрд▓реЗ рдХрддреИ рдЧрд▓реНрддреА рдЧрд░реЗрдВ рд╡рд╛ рдХреЗрд╣рд┐ рдмреБрдЭрд┐рди, рддреНрдпрд╕реИрд▓реЗ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреЗрд╣рд┐ рдЧрдореНрднреАрд░ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рдд рд╡рд╛ TON рдХреЛрдбрдХреЛ рд╕рд╛рде рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ рднрд░реЛрд╕рд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпреЛ рдиреЛрдЯ рдЧрд░реНрдиреБрдкрд░реНрджрдЫ рдХрд┐ TON рдЖрдлреИрдВ рдЕрдЭреИ рдкрдирд┐ рд╡рд┐рдХрд╛рд╕рдХреЛ рд╕рдХреНрд░рд┐рдп рдЪрд░рдгрдорд╛ рдЫ, рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫ рдЬреБрди рдпрд╕ рд▓реЗрдЦрдХреЛ рдХреБрдиреИ рдкрдирд┐ рдЪрд░рдгрд╣рд░реВ рддреЛрдбреНрди рд╕рдХреНрдЫ (рдЬреБрди рдореИрд▓реЗ рд▓реЗрдЦрд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рднрдпреЛ, рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдЪреНрдпрд╛рдЗрд╕рдХреЗрдХреЛ рдЫ), рддрд░ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛред рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдЫреИрдиред

рдо TON рдХреЛ рднрд╡рд┐рд╖реНрдпрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджрд┐рдиред рд╕рд╛рдпрдж рдкреНрд▓реЗрдЯрдлрд░реНрдо рдХреЗрд╣рд┐ рдареВрд▓реЛ рдмрдиреНрдиреЗрдЫ рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рд╕рдордп рдмрд┐рддрд╛рдЙрдиреБ рдкрд░реНрдЫ рд░ рд╣рд╛рдореНрд░реЛ рдЙрддреНрдкрд╛рджрдирд╣рд░реБ рд╕рдВрдЧ рдПрдХ рдЖрд▓рд╛ рднрд░реНрдиреБ рдкрд░реНрдЫред

рддреНрдпрд╣рд╛рдБ рдлреЗрд╕рдмреБрдХрдмрд╛рдЯ рд▓рд┐рдмреНрд░рд╛ рдкрдирд┐ рдЫ, рдЬрд╕рдорд╛ TON рднрдиреНрджрд╛ рдареВрд▓реЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рджрд░реНрд╢рдХрд╣рд░реВ рдЫрдиреНред рдорд▓рд╛рдИ рддреБрд▓рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓рдЧрднрдЧ рдХреЗрд╣рд┐ рдерд╛рд╣рд╛ рдЫреИрди, рдлреЛрд░рдо рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп рдЧрд░реНрджрд╛ рддреНрдпрд╣рд╛рдБ TON рд╕рдореБрджрд╛рдп рднрдиреНрджрд╛ рдзреЗрд░реИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЫред рдпрджреНрдпрдкрд┐ TON рдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рд░ рд╕рдореБрджрд╛рдпрд╣рд░реВ рднреВрдорд┐рдЧрдд рдЬрд╕реНрддреИ рдЫрдиреН, рдЬреБрди рдкрдирд┐ рд░рд╛рдореНрд░реЛ рдЫред

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

  1. рдЖрдзрд┐рдХрд╛рд░рд┐рдХ TON рдХрд╛рдЧрдЬрд╛рдд: https://test.ton.org
  2. рдЖрдзрд┐рдХрд╛рд░рд┐рдХ TON рднрдгреНрдбрд╛рд░: https://github.com/ton-blockchain/ton
  3. рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд╛рд▓реЗрдЯ: https://wallet.ton.org
  4. рдпрд╕ рд▓реЗрдЦрдмрд╛рдЯ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░: https://github.com/raiym/astonished
  5. рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рд▓рд┐рдЩреНрдХ: https://ton-lottery.appspot.com
  6. FunC рдХреЛ рд▓рд╛рдЧрд┐ рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╕реНрддрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рднрдгреНрдбрд╛рд░: https://github.com/raiym/func-visual-studio-plugin
  7. рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдордорд╛ TON рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рд▓реЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЪрд░рдгрдорд╛ рдпреЛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдорджреНрджрдд рдЧрд░реНтАНрдпреЛред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдпреЛ рдЧрд▓реНрддреА рд╣реБрдиреЗрдЫреИрди рдпрджрд┐ рдореИрд▓реЗ TON рдХреЛ рд▓рд╛рдЧреА рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдиреЗ рд╕рдмреИ рддреНрдпрд╣рд╛рдБ рдЫрдиреНред рддрдкрд╛рдИрдВ рддреНрдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рдорд╣рд░реВ рдкрдирд┐ рд╕реЛрдзреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред https://t.me/tondev_ru
  8. TON рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрд░реНрдХреЛ рдЪреНрдпрд╛рдЯ рдЬрд╕рдорд╛ рдореИрд▓реЗ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдлреЗрд▓рд╛ рдкрд╛рд░реЗ: https://t.me/TONgramDev
  9. рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рдкрд╣рд┐рд▓реЛ рдЪрд░рдг: https://contest.com/blockchain
  10. рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рджреЛрд╕реНрд░реЛ рдЪрд░рдг: https://contest.com/blockchain-2

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди