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

TON рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ?

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

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

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

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

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

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

рдпрд╣ рдХрд╣рдиреЗ рд▓рд╛рдпрдХ рдмрд╛рдд рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛ред

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

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

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

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

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

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

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

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ TVM рдФрд░ рднрд╛рд╖рд╛ Fift рдЕрдЪреНрдЫрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ. рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдЕрдм рд╡рд░реНрддрдорд╛рди рдЕрдиреБрдмрдВрдз рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВ рдЕрдХреНрд╕рд░ рдЙрд╕рдХреА рдУрд░ рдореБрдбрд╝рддрд╛ рдерд╛ред

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

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

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

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

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

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

рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЕрднреНрдпрд╛рд╕ рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

TON рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рдирд╛

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

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИ lite-client рдЬрд┐рд╕рд╕реЗ рдЖрдк TON рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдХрд╛рдлреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд▓рд╛рдкрддрд╛ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдмрдВрдЯреВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдореИрдХрдУрдПрд╕ рдкрд░ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛) рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ 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 рд╕реЗ рджрд╛рдВрд╡ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПрдЧреАред

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

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

рдЖрдЗрдП рддреБрд░рдВрдд рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рд╣рдо рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рджреЗрдВрдЧреЗред

рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рддрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдЗрд╕реЗ 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 рдмреНрд▓реЙрдХрдЪреЗрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рдбреЗрдЯрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ 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

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

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 рд╣рдо рд╕рдВрджрд░реНрдн рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛рдиреА рд╡рд╣ рдбреЗрдЯрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЯреАрд╡реАрдПрдо (рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рддрд┐) рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рджреМрд░рд╛рди рднреА, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП 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 ! 

рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдЪрд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреАрд╡реАрдПрдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ 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 рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ, рд╣рдо рд╡рд░реНрддрдорд╛рди рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд▓реНрдпреВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдпрджрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдореЗрдВ рдореВрд▓реНрдп рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ 1 рд╕реЗ рдмрдврд╝рд╛ рджреЗрддреЗ рд╣реИрдВред

рдЪрд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ 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

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭ рдЖрдПрдЧрд╛ рдХрд┐ Fift рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ рдлрд╛рдЗрд╡ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред

~/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));
}

рдмрд╕. рд╕рдВрдЧрдд рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛.

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

рдЖрдЗрдП get рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ. рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдиреАрдЪреЗ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдореИрдВ рд╡рд╣ рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рднреА рднреВрд▓ рдЧрдпрд╛ рдЬреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред рд╕рдВрдЧрдд рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛. рдФрд░ рдЖрдЧреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕реНрд╡рд╛рдореА рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рд░рд╛рд╢рд┐ рдХрд╛ 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. рдлрд╝рдирд╕реА рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА: 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