рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХ (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 рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░рдгреЗ

рдореА MacOS рд╡рд░реАрд▓ рд▓реЗрдЦрд╛рдд рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреА рдХреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдбреЙрдХрд░рд╡рд░реАрд▓ рд╕реНрд╡рдЪреНрдЫ рдЙрдмрдВрдЯреВ 18.04 LTS рдордзреНрдпреЗ рддреЗ рджреЛрдирджрд╛ рддрдкрд╛рд╕рд▓реЗ.

рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рдердо рдЧреЛрд╖реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреЗ рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ lite-client рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рддреБрдореНрд╣реА TON рд▓рд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡реВ рд╢рдХрддрд╛.

рдЕрдзрд┐рдХреГрдд рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░реАрд▓ рд╕реВрдЪрдирд╛рдВрдордзреНрдпреЗ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рд╣реА рддрдкрд╢реАрд▓ рд╡рдЧрд│рд▓реЗ рдЖрд╣реЗрдд. рдпреЗрдереЗ рдЖрдореНрд╣реА рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЛ, рд╡рд╛рдЯреЗрдд рдЧрд╣рд╛рд│ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЛ. рдореА рд╕реНрд╡рддрдГ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд▓реНрдк рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓рд╛ рдирд╛рд╣реА рдЖрдгрд┐ рдЕрдзрд┐рдХреГрдд рдЙрдмрдВрдЯреВ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓рд╛ (рдореА рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ MacOS рд╡рд░ brew).

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

рдПрдХрджрд╛ рд╕рд░реНрд╡ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдХреА рдЖрдкрдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛ lite-client, Fift, FunC.

рдкреНрд░рдердо, рдЖрдореНрд╣реА TON рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдВрд╕рд╣ рдХреНрд▓реЛрди рдХрд░рддреЛ. рд╕реЛрдпреАрд╕рд╛рдареА, рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдХрд░реВ ~/TON.

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

рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рджреЗрдЦреАрд▓ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ Fift ╨╕ FunC.

рдЖрддрд╛ рдЖрдореНрд╣реА рдкреНрд░рдХрд▓реНрдк рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЛрдд. рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреЛрдб рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдХреНрд▓реЛрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ ~/TON/ton. рдж ~/TON рдПрдХ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░рд╛ build рдЖрдгрд┐ рддреНрдпрд╛рдд рдкреНрд░рдХрд▓реНрдк рдЧреЛрд│рд╛ рдХрд░рд╛.

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

рдЖрдореНрд╣реА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рд▓рд┐рд╣рд┐рдгрд╛рд░ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЧрд░рдЬ рдирд╛рд╣реА lite-clientрдкрдг Fift ╤Б FunC, рддрд░ рдЪрд▓рд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕рдВрдХрд▓рд┐рдд рдХрд░реВрдпрд╛. рд╣реА рджреНрд░реБрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЛрдд.

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

рдкреБрдвреЗ, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ рдиреЛрдбрдЪрд╛ рдбреЗрдЯрд╛ рдЖрд╣реЗ lite-client рдХрдиреЗрдХреНрдЯ рд╣реЛрдИрд▓.

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

TON рд▓рд╛ рдкреНрд░рдердо рд╡рд┐рдирдВрддреНрдпрд╛ рдХрд░рдд рдЖрд╣реЗ

рдЖрддрд╛ рд▓рд╛рдБрдЪ рдХрд░реВрдпрд╛ lite-client.

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

рдЬрд░ рдмрд┐рд▓реНрдб рдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЗ рдЕрд╕реЗрд▓, рддрд░ рд▓реЙрдиреНрдЪ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЛрдбрд╢реА рд▓рд╛рдИрдЯ рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рдХрдиреЗрдХреНрд╢рдирдЪрд╛ рд▓реЙрдЧ рджрд┐рд╕реЗрд▓.

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

рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛ help рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛ рдХрдорд╛рдВрдб рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд рддреЗ рдкрд╣рд╛.

help

рдпрд╛ рд▓реЗрдЦрд╛рдд рдЖрдкрдг рд╡рд╛рдкрд░рдгрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЖрдЬреНрдЮрд╛рдВрдЪреА рдпрд╛рджреА рдХрд░реВрдпрд╛.

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

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

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

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

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

рдЖрддрд╛ рдЖрдореНрд╣реА рдХрд░рд╛рд░ рд╕реНрд╡рддрдГ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЛрдд.

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

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

рдореА рд╡рд░ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдЖрдореНрд╣реА рд▓рд┐рд╣рд┐рдд рдЕрд╕рд▓реЗрд▓рд╛ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рд╣реА рд▓реЙрдЯрд░реА рдЖрд╣реЗ.

рд╢рд┐рд╡рд╛рдп, рд╣реА рд▓реЙрдЯрд░реА рдирд╛рд╣реА рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддрд┐рдХреАрдЯ рдЦрд░реЗрджреА рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рдПрдХ рддрд╛рд╕, рджрд┐рд╡рд╕ рдХрд┐рдВрд╡рд╛ рдорд╣рд┐рдирд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓, рдкрд░рдВрддреБ рдПрдХ рдЭрдЯрдкрдЯ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХрд░рд╛рд░рд╛рдЪреНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ. N рдЧреНрд░реЕрдо, рдЖрдгрд┐ рддреНрд╡рд░рд┐рдд рдкрд░рдд рдорд┐рд│рддреЗ 2 * N рдЧреНрд░реЕрдо рдХрд┐рдВрд╡рд╛ рддреЛрдЯрд╛. рдЖрдореНрд╣реА рд╕реБрдорд╛рд░реЗ 40% рдЬрд┐рдВрдХрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрд░реВ. рдкреЗрдореЗрдВрдЯрд╕рд╛рдареА рдкреБрд░реЗрд╕реЗ рдЧреНрд░реЕрдо рдирд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪрд╛ рдЯреЙрдк-рдЕрдк рдореНрд╣рдгреВрди рд╡рд┐рдЪрд╛рд░ рдХрд░реВ.

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

рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рд▓рд┐рд╣рд┐рдд рдЖрд╣реЗ

рд╕реЛрдпреАрд╕рд╛рдареА, рдореА FunC рд╕рд╛рдареА рдХреЛрдб рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХреЗрд▓рд╛ рдЖрд╣реЗ; рдкреНрд▓рдЧрдЗрди рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУ рдХреЛрдб рд╢реЛрдз рдордзреНрдпреЗ рд╢реЛрдзрд▓реЗ рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ; рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдЪрд╛рдирдХ рдХрд╛рд╣реАрддрд░реА рдЬреЛрдбрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдореА рдкреНрд▓рдЧрдЗрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХрд░рд┐рддреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рдХреЗрд▓реЗ рдЖрд╣реЗ. рддрд╕реЗрдЪ, рдХреЛрдгреАрддрд░реА рдкреВрд░реНрд╡реА рдлрд┐рдлреНрдЯрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди рдмрдирд╡рд▓реЗ рдЖрд╣реЗ, рдЖрдкрдг рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╡реНрд╣реАрдПрд╕рд╕реАрдордзреНрдпреЗ рд╢реЛрдзреВ рд╢рдХрддрд╛.

рдЪрд▓рд╛ рддрд╛рдмрдбрддреЛрдм рдПрдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рддрдпрд╛рд░ рдХрд░реВрдпрд╛ рдЬрд┐рдереЗ рдЖрдореНрд╣реА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдирд┐рдХрд╛рд▓ рджреЗрдК.

рдЖрдордЪреЗ рдЬреАрд╡рди рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рд▓рд┐рд╣реВ рдЖрдгрд┐ рддреЗ рддрдпрд╛рд░ рд╣реЛрдИрдкрд░реНрдпрдВрдд рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рддреНрдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░реВ. рддреНрдпрд╛рдирдВрддрд░рдЪ рдЖрдореНрд╣реА рддреЗ TON рдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВ.

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

рдЪрд▓рд╛ рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВ рдЬреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рддрд░ рдЪрд╛рд▓реЗрд▓, рдкрд░рдВрддреБ рддреНрдпрд╛рдд рдХреЛрдгрддреЗрд╣реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд░ рдирд╛рд╣реА.

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

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

рдпреЗрдереЗ рдЖрдкрдг рддреЗ рдХрд╛рдп рдЖрд╣реЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ slice. TON Blockchain рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдЖрд╣реЗ TVM cell рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд cell, рдЕрд╢рд╛ рд╕реЗрд▓рдордзреНрдпреЗ рддреБрдореНрд╣реА 1023 рдмрд┐рдЯреНрд╕ рдкрд░реНрдпрдВрдд рдбреЗрдЯрд╛ рдЖрдгрд┐ рдЗрддрд░ рд╕реЗрд▓рдЪреНрдпрд╛ 4 рд▓рд┐рдВрдХ рдкрд░реНрдпрдВрдд рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реВ рд╢рдХрддрд╛.

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

impure тАФ рдПрдХ рдХреАрд╡рд░реНрдб рдЬреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЛ рдХреА рдлрдВрдХреНрд╢рди рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдбреЗрдЯрд╛рдордзреНрдпреЗ рдмрджрд▓ рдХрд░рддреЗ.

рдордзреНрдпреЗ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдХреЛрдб рд╕реЗрд╡реНрд╣ рдХрд░реВрдпрд╛ lottery-code.fc рдЖрдгрд┐ рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛.

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

рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рдзреНрд╡рдЬрд╛рдВрдЪрд╛ рдЕрд░реНрде рдкрд╛рд╣рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ

~/TON/build/crypto/func -help

рдЖрдореНрд╣реА рдордзреНрдпреЗ рдлрд┐рдлреНрдЯ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ lottery-compiled.fif:

// lottery-compiled.fif

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

рд╣реЗ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рддреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░реВ.

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдкрд╣рд┐рд▓реА рдУрд│ рдЬреЛрдбрддреЗ Asm.fif, рд╣рд╛ рдлрд┐рдлреНрдЯ рдЕрд╕реЗрдВрдмрд▓рд░рд╕рд╛рдареА рдлрд┐рдлреНрдЯрдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдХреЛрдб рдЖрд╣реЗ.

рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдХрд░рд╛рдпрдЪреА рдЕрд╕рд▓реНрдпрд╛рдиреЗ рдЖрдореНрд╣реА рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реВ lottery-test-suite.fif рдЖрдгрд┐ рддреЗрдереЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб рдХреЙрдкреА рдХрд░рд╛, рддреНрдпрд╛рддреАрд▓ рд╢реЗрд╡рдЯрдЪреА рдУрд│ рдмрджрд▓реВрди, рдЬреЛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдХреЛрдб рд╕реНрдерд┐рд░рд╛рдВрдХрд╛рд╡рд░ рд▓рд┐рд╣рд┐рддреЛ codeрдирдВрддрд░ рддреЗ рдЖрднрд╛рд╕реА рдорд╢реАрдирд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА:

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

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

рдЖрддрд╛рдкрд░реНрдпрдВрдд рд╣реЗ рд╕реНрдкрд╖реНрдЯ рджрд┐рд╕рдд рдЖрд╣реЗ, рдЖрддрд╛ рддреНрдпрд╛рдЪ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдЖрдкрдг TVM рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдгрд╛рд░ рдЕрд╕рд▓реЗрд▓рд╛ рдХреЛрдб рдЬреЛрдбреВ рдпрд╛.

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

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

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

recv_internal ╨╕ recv_external 0 рдЖрдгрд┐ -1 рдореВрд▓реНрдпрд╛рдВрд╕рд╣ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреАрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЗ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рддреАрд▓.

рдЖрддрд╛ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд░рд┐рдХрд╛рдореНрдпрд╛ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рд╕рд╛рдареА рдкрд╣рд┐рд▓реА рдЪрд╛рдЪрдгреА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЛрдд. рд╕реНрдкрд╖реНрдЯрддреЗрд╕рд╛рдареА, рдЖрддреНрддрд╛ рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдЪрд╛рдЪрдгреНрдпрд╛ рдПрдХрд╛рдЪ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдЬреЛрдбреВ lottery-test-suite.fif.

рдЪрд▓рд╛ рдПрдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдмрдирд╡реВ storage рдЖрдгрд┐ рддреНрдпрд╛рдд рдПрдХ рд░рд┐рдХрд╛рдорд╛ рд▓рд┐рд╣рд╛ cell, рд╣реЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдЕрд╕реЗрд▓.

message рд╣рд╛ рд╕рдВрджреЗрд╢ рдЖрдореНрд╣реА рдмрд╛рд╣реЗрд░реВрди рд╕реНрдорд╛рд░реНрдЯ рд╕рдВрдкрд░реНрдХрд╛рдд рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реВ. рдЖрдореНрд╣реА рддреЗ рдЖрддрд╛рд╕рд╛рдареА рд░рд┐рдХрд╛рдореЗ рджреЗрдЦреАрд▓ рдХрд░реВ.

variable storage 
<b b> storage ! 

variable message 
<b b> message ! 

рдЖрдореНрд╣реА рд╕реНрдерд┐рд░рд╛рдВрдХ рдЖрдгрд┐ рдЪрд▓ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди TVM рд▓рд╛рдБрдЪ рдХрд░рддреЛ runvmctx рдЖрдгрд┐ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЗрдирдкреБрдЯрдордзреНрдпреЗ рдкрд╛рд╕ рдХрд░рд╛.

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx 

рд╢реЗрд╡рдЯреА рдЖрдкрдг рдпрд╢рд╕реНрд╡реА рд╣реЛрдК рддреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╕рд╛рдареА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдб Fift.

рдЖрддрд╛ рдЖрдкрдг рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдЪрд╛рд▓рд╡реВ рд╢рдХрддреЛ.

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

рдкреНрд░реЛрдЧреНрд░рд╛рдо рддреНрд░реБрдЯреАрдВрд╢рд┐рд╡рд╛рдп рдЪрд╛рд▓рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯрдордзреНрдпреЗ рдЖрдореНрд╣реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд▓реЙрдЧ рдкрд╛рд╣реВ:

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

рдЫрд╛рди, рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪреА рдкрд╣рд┐рд▓реА рдХрд╛рд░реНрдпрд░рдд рдЖрд╡реГрддреНрддреА рд▓рд┐рд╣рд┐рд▓реА рдЖрд╣реЗ.

рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдкреНрд░рдердо рдмрд╛рд╣реЗрд░реАрд▓ рдЬрдЧрд╛рдХрдбреВрди рдЖрд▓реЗрд▓реНрдпрд╛ рд╕рдВрджреЗрд╢рд╛рдВрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░реВрдпрд╛ recv_external()

рдХрд░рд╛рд░ рд╕реНрд╡реАрдХрд╛рд░реВ рд╢рдХреЗрд▓ рдЕрд╕рд╛ рд╕рдВрджреЗрд╢ рд╕реНрд╡рд░реВрдк рд╡рд┐рдХрд╕рдХ рд╕реНрд╡рддрдГ рдирд┐рд╡рдбрддреЛ.

рдкрдг рд╕рд╣рд╕рд╛

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

рддреНрдпрд╛рдореБрд│реЗ рдЬрд╡рд│рдЬрд╡рд│ рдкреНрд░рддреНрдпреЗрдХ рдХрд░рд╛рд░ рдпрд╛ рджреЛрди рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЛ, рдХрд╛рд░рдг рдЖрдордЪрд╛ рдХрд░рд╛рд░ рдмрд╛рд╣реНрдп рд╕рдВрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдЪреА рджреЗрдЦреАрд▓ рдХрд╛рд│рдЬреА рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЖрдореНрд╣реА рддреЗ рдЙрд▓рдЯ рдХреНрд░рдорд╛рдиреЗ рдХрд░реВ. рдкреНрд░рдердо, рдкреБрдирд░рд╛рд╡реГрддреНрддреАрд╕рд╣ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реВрдпрд╛; рдЬрд░ рдХрд░рд╛рд░рд╛рдиреЗ рдЖрдзреАрдЪ рдЕрд╕рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЕрд╕реЗрд▓, рддрд░ рддреА рджреБрд╕рд▒реНрдпрд╛рдВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгрд╛рд░ рдирд╛рд╣реА. рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣реА рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реВ рдЬреЗрдгреЗрдХрд░реБрди рдХреЗрд╡рд│ рд▓реЛрдХрд╛рдВрдЪреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдордВрдбрд│ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрд╡рд░ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡реВ рд╢рдХреЗрд▓.

рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдВрджреЗрд╢рд╛рдВрд╕рд╣ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рдЪреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реЗ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рдЖрдореНрд╣реА рддреЗ рдХрд╕реЗ рдХрд░реВ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ. рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ, рдЖрдореНрд╣реА рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рд╕рдВрджреЗрд╢рд╛рдВрдЪреЗ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп 0 рд╕рд╣ рдЖрд░рдВрдн рдХрд░рддреЛ. рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢рд╛рдордзреНрдпреЗ, рдЖрдореНрд╣реА рд╡рд░реНрддрдорд╛рди рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп рдЬреЛрдбреВ. рдЬрд░ рд╕рдВрджреЗрд╢рд╛рддреАрд▓ рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рддреАрд▓ рдореВрд▓реНрдпрд╛рд╢реА рдЬреБрд│рдд рдирд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рддреНрдпрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдд рдирд╛рд╣реА; рддрд╕реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рддреНрдпрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЛ рдЖрдгрд┐ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рддреАрд▓ рдХрд╛рдЙрдВрдЯрд░ 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.

рдЪрд▓рд╛ skrpt рдХреЛрдб 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 рдкрд╛рдЪ рдордзреНрдпреЗ. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдлрд┐рдлреНрдЯ рдбреЙрдХреНрдпреБрдореЗрдВрдЯреЗрд╢рдирдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ.

рд▓рд┐рдВрдХ рдХрдорд┐рдЯ рдХрд░рд╛ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ dough рд╕рд╣.

рдЪрд▓рд╛ рдЪрд╛рдЪрдгреА рдЪрд╛рд▓рд╡реВ рдЖрдгрд┐ рддреЗ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛. рдЖрддрд╛ рд▓реЙрдЯрд░реА рдорд╛рд▓рдХрд╛рдЪрд╛ рдкрддреНрддрд╛ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рддрд░реНрдХ рдЬреЛрдбреВрдпрд╛.

рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рдЖрдореНрд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЛ message, рдордзреНрдпреЗ рд╡рд╛рдЪрд╛ action. рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ рдХреА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рджреЛрди рдЕрд╕рддреАрд▓ action: рдкрддреНрддрд╛ рдмрджрд▓рд╛ рдЖрдгрд┐ рдЧреНрд░рд╛рдо рдкрд╛рдард╡рд╛.

рдордЧ рдЖрдореНрд╣реА рдХрд░рд╛рд░рд╛рдЪреНрдпрд╛ рдорд╛рд▓рдХрд╛рдЪрд╛ рдирд╡реАрди рдкрддреНрддрд╛ рд╡рд╛рдЪрддреЛ рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рдЬрддрди рдХрд░рддреЛ.
рдЖрдореНрд╣реА рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рддреЛ рдЖрдгрд┐ рдкрд╛рд╣рддреЛ рдХреА рддрд┐рд╕рд░реА рдЪрд╛рдЪрдгреА рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реА. рддреЗ рдХреНрд░реЕрд╢ рдЭрд╛рд▓реЗ рдЖрд╣реЗ рдХрд╛рд░рдг рдХрд░рд╛рд░ рдЖрддрд╛ рдореЗрд╕реЗрдЬрдордзреАрд▓ 7 рдмрд┐рдЯреНрд╕ рджреЗрдЦреАрд▓ рдкрд╛рд░реНрд╕ рдХрд░рддреЛ, рдЬреЗ рдЪрд╛рдЪрдгреАрдордзреНрдпреЗ рдЧрд╣рд╛рд│ рдЖрд╣реЗрдд. рд╕рдВрджреЗрд╢рд╛рдордзреНрдпреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕рд▓реЗрд▓рд╛ рдЬреЛрдбрд╛ action. рдЪрд▓рд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡реВ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдЙрддреНрддреАрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдЪреЗ рдкрд╣рд╛. рдпреЗрдереЗ рдмрджрд▓рд╛рдВрд╕рд╛рдареА рд╡рдЪрдирдмрджреНрдз. рдорд╕реНрдд.

рдЖрддрд╛ рдЖрдзреА рд╕реЗрд╡реНрд╣ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреНрд░рд╛рдо рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдард╡рдгреНрдпрд╛рдЪреЗ рддрд░реНрдХ рд▓рд┐рд╣реВ.

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

рдЖрддрд╛ рдХреЛрдб рдЯрд╛рдХреВ. рдкреНрд░рдердо, рджреЛрди рд╕рд╣рд╛рдпреНрдпрдХ рдкрджреНрдзрддреА рд▓рд┐рд╣реВ. рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪреА рд╕рдзреНрдпрд╛рдЪреА рд╢рд┐рд▓реНрд▓рдХ рд╢реЛрдзрдгреЗ рд╣реА рдкрд╣рд┐рд▓реА рдЧреЗрдЯ рдкрджреНрдзрдд рдЖрд╣реЗ.

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

рдЖрдгрд┐ рджреБрд╕рд░рд╛ рджреБрд╕рд░рд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрд╡рд░ рдЧреНрд░реЕрдо рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ. рдореА рджреБрд╕рд░реНтАНрдпрд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреВрди рд╣реА рдкрджреНрдзрдд рдкреВрд░реНрдгрдкрдгреЗ рдХреЙрдкреА рдХреЗрд▓реА.

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

рдЪрд▓рд╛ рдпрд╛ рджреЛрди рдкрджреНрдзрддреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рдЬреЛрдбреВ рдЖрдгрд┐ рддрд░реНрдХ рд▓рд┐рд╣реВ. рдкреНрд░рдердо, рдЖрдореНрд╣реА рд╕рдВрджреЗрд╢рд╛рддреАрд▓ рдЧреНрд░рд╛рдо рд╕рдВрдЦреНрдпреЗрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЛ. рдкреБрдвреЗ рдЖрдореНрд╣реА рд╢рд┐рд▓реНрд▓рдХ рддрдкрд╛рд╕рддреЛ, рдЬрд░ рддреЗ рдкреБрд░реЗрд╕реЗ рдирд╕реЗрд▓ рддрд░ рдЖрдореНрд╣реА рдЕрдкрд╡рд╛рдж рдЯрд╛рдХрддреЛ. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рдЬрддрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдЧреНрд░реЕрдо рдкрд╛рдард╡рддреЛ рдЖрдгрд┐ рдХрд╛рдЙрдВрдЯрд░ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЛ.

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

рдпрд╛рдкреНрд░рдорд╛рдгреЗ рдпрд╛ рдХреНрд╖рдгреА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рджрд┐рд╕рдд рдЖрд╣реЗ. рдЪрд▓рд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡реВ рдЖрдгрд┐ рддреНрдпрд╛ рдЙрддреНрддреАрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.

рддрд╕реЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрджреЗрд╢рд╛рд╕рд╛рдареА рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рддреВрди рдХрдорд┐рд╢рди рдХрд╛рдкрд▓реЗ рдЬрд╛рддреЗ. рд╡рд┐рдирдВрддреА рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдореЗрд╕реЗрдЬрд╕рд╛рдареА, рдореВрд▓рднреВрдд рддрдкрд╛рд╕рдгреАрдирдВрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЙрд▓ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ accept_message().

рдЖрддрд╛ рдЕрдВрддрд░реНрдЧрдд рд╕рдВрджреЗрд╢рд╛рдВрдХрдбреЗ рд╡рд│реВрдпрд╛. рдЦрд░реЗрддрд░, рдЖрдореНрд╣реА рдлрдХреНрдд рдЧреНрд░реЕрдо рд╕реНрд╡реАрдХрд╛рд░реВ рдЖрдгрд┐ рдЦреЗрд│рд╛рдбреВ рдЬрд┐рдВрдХрд▓реНрдпрд╛рд╕ рддреНрдпрд╛рдЪреНрдпрд╛ рджреБрдкреНрдкрдЯ рд░рдХреНрдХрдо рдкрд░рдд рдкрд╛рдард╡реВ рдЖрдгрд┐ рдЬрд░ рддреЛ рд╣рд░рд▓рд╛ рддрд░ рдорд╛рд▓рдХрд╛рд▓рд╛ рдПрдХ рддреГрддреАрдпрд╛рдВрд╢ рд░рдХреНрдХрдо рдкрд░рдд рдкрд╛рдард╡реВ.

рдкреНрд░рдердо, рдПрдХ рд╕рд╛рдзреА рдЪрд╛рдЪрдгреА рд▓рд┐рд╣реВрдпрд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪрд╛ рдПрдХ рдЪрд╛рдЪрдгреА рдкрддреНрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреНрдпрд╛рд╡рд░реВрди рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рдЧреНрд░рд╛рдо рдкрд╛рдард╡рддреЛ.

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

рдкрддреНрддрд╛ рд╕реЗрд╡реНрд╣ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореА рдлрдВрдХреНрд╢рди рдХреЙрдкреА рдХреЗрд▓реЗ TonUtil.fif.

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

рдлрдВрдХреНрд╢рди рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╛рд╣реВ рдпрд╛, рдпрд╛рд╡рд░реВрди рдлрд┐рдлреНрдЯ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рд╕рдордЬреЗрд▓. рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдореЛрдбрдордзреНрдпреЗ рдлрд┐рдлреНрдЯ рд▓рд╛рдБрдЪ рдХрд░рд╛.

~/TON/build/crypto/fift -i 

рдкреНрд░рдердо рдЖрдкрдг -1, 12345 рдЖрдгрд┐ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдлрд╛рдЗрд▓рдЪреЗ рдирд╛рд╡ "sender.addr" рд╕реНрдЯреЕрдХрд╡рд░ рдврдХрд▓рддреЛ:

-1 12345 "sender.addr" 

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

"sender.addr" -1 12345

256 u>B 256-рдмрд┐рдЯ рдиреЙрди-рдЛрдгрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдмрд╛рдЗрдЯреНрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ.

"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039

swap рд╕реНрдЯреЕрдХрдЪреЗ рд╢реАрд░реНрд╖ рджреЛрди рдШрдЯрдХ рд╕реНрд╡реЕрдк рдХрд░рддреЗ.

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -1

32 i>B 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдмрд╛рдЗрдЯреНрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ.

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFF

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

 "sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF

рдкреБрдиреНрд╣рд╛ swap.

BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF "sender.addr" 

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдлрд╛рдЗрд▓рд╡рд░ рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддрд╛рдд B>file. рдпрд╛рдирдВрддрд░ рдЖрдордЪрд╛ рд╕реНрдЯреЕрдХ рд░рд┐рдХрд╛рдорд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдерд╛рдВрдмрддреЛ Fift. рд╡рд░реНрддрдорд╛рди рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдПрдХ рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ sender.addr. рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╣рд▓рд╡реВ test/addresses/.

рдЪрд▓рд╛ рдПрдХ рд╕реЛрдкреА рдЪрд╛рдЪрдгреА рд▓рд┐рд╣реВрдпрд╛ рдЬреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рдЧреНрд░реЕрдо рдкрд╛рдард╡реЗрд▓. рдпреЗрдереЗ рд╡рдЪрдирдмрджреНрдз рдЖрд╣реЗ.

рдЖрддрд╛ рд▓реЙрдЯрд░реАрдЪреЗ рддрд░реНрдХ рдкрд╛рд╣реВ.

рд╕рд░реНрд╡рдкреНрд░рдердо рдЖрдкрдг рд╕рдВрджреЗрд╢ рддрдкрд╛рд╕рддреЛ bounced рдХрд┐рдВрд╡рд╛ рдирд╛рд╣реА рддрд░ bounced, рдордЧ рдЖрдкрдг рддреНрдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЛ. bounced рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдХрд╛рд╣реА рддреНрд░реБрдЯреА рдЖрдврд│рд▓реНрдпрд╛рд╕ рдХрд░рд╛рд░ рдЧреНрд░рд╛рдо рдкрд░рдд рдХрд░реЗрд▓. рдПрдЦрд╛рджреА рддреНрд░реБрдЯреА рдЕрдЪрд╛рдирдХ рдЙрджреНрднрд╡рд▓реНрдпрд╛рд╕ рдЖрдореНрд╣реА рдЧреНрд░реЕрдо рдкрд░рдд рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

рдЖрдореНрд╣реА рддрдкрд╛рд╕рддреЛ, рдЬрд░ рд╢рд┐рд▓реНрд▓рдХ рдЕрд░реНрдзреНрдпрд╛ рдЧреНрд░реЕрдордкреЗрдХреНрд╖рд╛ рдХрдореА рдЕрд╕реЗрд▓ рддрд░ рдЖрдореНрд╣реА рдлрдХреНрдд рд╕рдВрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЛ.

рдкреБрдвреЗ, рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪрд╛ рдкрддреНрддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рддреЛ рдЬреНрдпрд╛рд╡рд░реВрди рд╕рдВрджреЗрд╢ рдЖрд▓рд╛ рд╣реЛрддрд╛.

рдЖрдореНрд╣реА рд╕реНрдЯреЛрд░реЗрдЬрдордзреАрд▓ рдбреЗрдЯрд╛ рд╡рд╛рдЪрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░ рд╡реАрд╕рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рд╕ рдЗрддрд┐рд╣рд╛рд╕рд╛рддреВрди рдЬреБрдиреЗ рдмреЗрдЯ рд╣рдЯрд╡рддреЛ. рд╕реЛрдпреАрд╕рд╛рдареА, рдореА рддреАрди рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЗ рд▓рд┐рд╣рд┐рд▓реА pack_order(), unpack_order(), remove_old_orders().

рдкреБрдвреЗ, рдЖрдореНрд╣реА рдкрд╛рд╣рддреЛ рдХреА рдкреЗрдореЗрдВрдЯрд╕рд╛рдареА рд╢рд┐рд▓реНрд▓рдХ рдкреБрд░реЗрд╢реА рдирд╛рд╣реА, рддрд░ рдЖрдореНрд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЛ рдХреА рд╣реА рдкреИрдЬ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдкреБрдиреНрд╣рд╛ рднрд░рдкрд╛рдИ рдЖрд╣реЗ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рднрд░рдкрд╛рдИ рд╡рд╛рдЪрд╡рддреЛ. orders.

рдордЧ рд╢реЗрд╡рдЯреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪреЗ рд╕рд╛рд░.

рдкреНрд░рдердо, рдЬрд░ рдЦреЗрд│рд╛рдбреВ рд╣рд░рд▓рд╛, рддрд░ рдЖрдореНрд╣реА рддреЗ рд╕рдЯреНрдЯреЗрдмрд╛рдЬреАрдЪреНрдпрд╛ рдЗрддрд┐рд╣рд╛рд╕рд╛рдд рдЬрддрди рдХрд░рддреЛ рдЖрдгрд┐ рдЬрд░ рд░рдХреНрдХрдо 3 рдЧреНрд░реЕрдордкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪреНрдпрд╛ рдорд╛рд▓рдХрд╛рд▓рд╛ 1/3 рдкрд╛рдард╡рддреЛ.

рдЬрд░ рдЦреЗрд│рд╛рдбреВ рдЬрд┐рдВрдХрд▓рд╛, рддрд░ рдЖрдореНрд╣реА рдЦреЗрд│рд╛рдбреВрдЪреНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рджреБрдкреНрдкрдЯ рд░рдХреНрдХрдо рдкрд╛рдард╡рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рд╕рдЯреНрдЯреЗрдЪреА рдорд╛рд╣рд┐рддреА рдЗрддрд┐рд╣рд╛рд╕рд╛рдд рдЬрддрди рдХрд░рддреЛ.

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

рддреЗ рд╕рд░реНрд╡ рдЖрд╣реЗ. рд╕рдВрдмрдВрдзрд┐рдд рд╡рдЪрдирдмрджреНрдз.

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

рдЪрд▓рд╛ рдорд┐рд│рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЬреЛрдбреВрдпрд╛. рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдХрд╢реА рдорд┐рд│рд╡рд╛рдпрдЪреА рдпрд╛рдмрджреНрджрд▓ рдЖрдореНрд╣реА рдЦрд╛рд▓реА рд▓рд┐рд╣реВ.

рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛рдирд╛ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд┐рдирдВрддреАрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгрд╛рд░рд╛ рдХреЛрдб рдЬреЛрдбрдгреНрдпрд╛рд╕ рджреЗрдЦреАрд▓ рдореА рд╡рд┐рд╕рд░рд▓реЛ. рд╕рдВрдмрдВрдзрд┐рдд рд╡рдЪрдирдмрджреНрдз. рдЖрдгрд┐ рдкреБрдвреЗ рджреБрд░реБрд╕реНрдд рдХреЗрд▓реЗ рдорд╛рд▓рдХрд╛рдЪреНрдпрд╛ рдЦрд╛рддреНрдпрд╛рдд 1/3 рд░рдХреНрдХрдо рдкрд╛рдард╡рддрд╛рдирд╛ рдмрдЧ.

рдкреБрдвреАрд▓ рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ. рдЪрд▓рд╛ рдПрдХ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░реВ requests.

рдореА рдЖрдзрд╛рд░ рдореНрд╣рдгреВрди рдкреНрд░рдХрд╛рд╢рди рдХреЛрдб рдШреЗрддрд▓рд╛ simple-wallet-code.fc рдЬреЗ рд╢реЛрдзреВ рд╢рдХрддреЛ рдЕрдзрд┐рдХреГрдд рднрд╛рдВрдбрд╛рд░рд╛рдд.

рд▓рдХреНрд╖ рджреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА. рдЖрдореНрд╣реА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдгрд┐ рдПрдХ рдЗрдирдкреБрдЯ рд╕рдВрджреЗрд╢ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЛ. рдпрд╛рдирдВрддрд░, рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪрд╛ рдкрддреНрддрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдореНрд╣рдгрдЬреЗрдЪ, рдкрддреНрддрд╛ TON рдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдгреНрдпрд╛рдкреВрд░реНрд╡реАрдЪ рдУрд│рдЦрд▓рд╛ рдЬрд╛рддреЛ. рдордЧ рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдЕрдиреЗрдХ рдЧреНрд░реЕрдо рдкрд╛рдард╡рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрд╕рд╣ рдлрд╛рдЗрд▓ рдкрд╛рдард╡рд╛рд╡реА рд▓рд╛рдЧреЗрд▓, рдХрд╛рд░рдг рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЖрдгрд┐ рдСрдкрд░реЗрд╢рдиреНрд╕ рд╕реНрдЯреЛрдЕрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд┐рд╢рди рдШреЗрддреЗ (рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯреНрд╕ рд╕реНрдЯреЛрдЕрд░ рдЖрдгрд┐ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгрд╛рд░реЗ рдкреНрд░рдорд╛рдгрдХ ). рдХреЛрдб рдпреЗрдереЗ рдкрд╛рд╣рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдкреБрдвреЗ рдЖрдореНрд╣реА рдкреНрд░рдХрд╛рд╢рди рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рдорд┐рд│рд╡рддреЛ lottery-query.boc рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдлрд╛рдЗрд▓ рдЖрдгрд┐ рдкрддреНрддрд╛.

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

рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрд╛рдпрд▓реА рдЬрддрди рдХрд░рдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░реВ рдирдХрд╛: lottery-query.boc, lottery.addr, lottery.pk.

рдЗрддрд░ рдЧреЛрд╖реНрдЯреАрдВрдмрд░реЛрдмрд░рдЪ, рдЖрдореНрд╣реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд▓реЙрдЧрдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪрд╛ рдкрддреНрддрд╛ рдкрд╛рд╣реВ.

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

рдлрдХреНрдд рдордиреЛрд░рдВрдЬрдирд╛рд╕рд╛рдареА, TON рд▓рд╛ рд╡рд┐рдирдВрддреА рдХрд░реВрдпрд╛

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

рдЖрдгрд┐ рдпрд╛ рдкрддреНрддреНрдпрд╛рдЪреЗ рдЦрд╛рддреЗ рд░рд┐рдХрд╛рдореЗ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдЖрдкрдг рдкрд╛рд╣реВ.

account state is empty

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

> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

рдПрдХ рд╕реБрд░реВ рди рдХреЗрд▓реЗрд▓реЗ рджрд┐рд╕рддреЗ (state:account_uninit) рд╕рдорд╛рди рдкрддреНрддреНрдпрд╛рд╕рд╣ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдЖрдгрд┐ 1 рдиреЕрдиреЛрдЧреНрд░рд╛рдо рд╢рд┐рд▓реНрд▓рдХ.

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

рдЖрддрд╛ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдпрд╛. рдЪрд▓рд╛ рд▓рд╛рдЗрдЯ-рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдБрдЪ рдХрд░реВ рдЖрдгрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реВ.

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

рдХрд░рд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓рд╛ рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕реВрдпрд╛.

> last
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

рдЗрддрд░ рдЧреЛрд╖реНрдЯреАрдВрдмрд░реЛрдмрд░рдЪ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдорд┐рд│рддреЗ.

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

рдЖрдореНрд╣реА рддреЗ рдкрд╛рд╣рддреЛ account_active.

рдмрджрд▓рд╛рдВрд╕рд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╡рдЪрдирдмрджреНрдз рдпреЗрдереЗ.

рдЖрддрд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рдирдВрддреНрдпрд╛ рддрдпрд╛рд░ рдХрд░реВрдпрд╛.

рдЕрдзрд┐рдХ рддрдВрддреЛрддрдВрдд, рдЖрдореНрд╣реА рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рдо рдореНрд╣рдгреВрди рдкрддреНрддрд╛ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╣рд┐рд▓рд╛ рд╕реЛрдбреВ рдЖрдгрд┐ рдорд╛рд▓рдХрд╛рдЪреНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдЧреНрд░рд╛рдо рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рджреБрд╕рд░рд╛ рдХрд░реВ. рдЦрд░рдВ рддрд░, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЧреНрд░рд╛рдо рдкрд╛рдард╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдЪрд╛рдЪрдгреАрдкреНрд░рдорд╛рдгреЗрдЪ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рд╣рд╛ рд╕рдВрджреЗрд╢ рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рд╡рд░ рдкрд╛рдард╡реВ, рдХреБрдареЗ msg_seqno 165, action рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА 2 рдЖрдгрд┐ 9.5 рдЧреНрд░реЕрдо.

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

рддреБрдордЪреНрдпрд╛ рдЦрд╛рдЬрдЧреА рдХреАрд╕рд╣ рд╕рдВрджреЗрд╢рд╛рд╡рд░ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХрд░рдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░реВ рдирдХрд╛ lottery.pk, рдЬреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рдЖрдзреА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗ рд╣реЛрддреЗ. рдпреЗрдереЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд┐рдЯ рдЖрд╣реЗ.

рдЧреЗрдЯ рдкрджреНрдзрддреА рд╡рд╛рдкрд░реВрди рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреВрди рдорд╛рд╣рд┐рддреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ

рдЖрддрд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЧреЗрдЯ рдкрджреНрдзрддреА рдХрд╢рд╛ рдЪрд╛рд▓рд╡рд╛рдпрдЪреНрдпрд╛ рддреЗ рдкрд╛рд╣реВ.

рд▓рд╛рдБрдЪ рдХрд░рд╛ lite-client рдЖрдгрд┐ рдЖрдореНрд╣реА рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ get рдкрджреНрдзрддреА рдЪрд╛рд▓рд╡рд╛.

$ ./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 рдЪреНрдпрд╛ рднрд╡рд┐рд╖реНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рдгрд╛рд░ рдирд╛рд╣реА. рдХрджрд╛рдЪрд┐рдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдХрд╛рд╣реАрддрд░реА рдореЛрдареЗ рд╣реЛрдИрд▓ рдЖрдгрд┐ рдЖрдкрдг рддреНрдпрд╛рдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ рдЖрдгрд┐ рдЖрддрд╛ рдЖрдордЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рдВрдиреА рдЬрд╛рдЧрд╛ рднрд░рд▓реА рдкрд╛рд╣рд┐рдЬреЗ.

Facebook рд╡рд░реВрди рд▓рд┐рдмреНрд░рд╛ рджреЗрдЦреАрд▓ рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪреЗ рд╕рдВрднрд╛рд╡реНрдп рдкреНрд░реЗрдХреНрд╖рдХ TON рдкреЗрдХреНрд╖рд╛ рдореЛрдареЗ рдЖрд╣реЗрдд. рдорд▓рд╛ рддреВрд│ рд░рд╛рд╢реАрдмрджреНрджрд▓ рдЬрд╡рд│рдЬрд╡рд│ рдХрд╛рд╣реАрд╣реА рдорд╛рд╣рд┐рдд рдирд╛рд╣реА, рдлреЛрд░рдордЪреНрдпрд╛ рдорддреЗ, рддреЗрдереЗ TON рд╕рдореБрджрд╛рдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк рдЖрд╣реЗрдд. рдЬрд░реА TON рдЪреЗ рд╡рд┐рдХрд╛рд╕рдХ рдЖрдгрд┐ рд╕рдореБрджрд╛рдп рдЕрдзрд┐рдХ рднреВрдорд┐рдЧрдд рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗрдд, рдЬреЗ рджреЗрдЦреАрд▓ рдЫрд╛рди рдЖрд╣реЗ.

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛