TON рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗ рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ
рдпреЛ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдорд╛ рд╣реЛ?
рдпрд╕ рд▓реЗрдЦрдорд╛, рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╕рд░реА (рджреБрдИ рдордзреНрдпреЗ) рдкрд╣рд┐рд▓реЛ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдмреНрд▓рдХрдЪреЗрди рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдорд╛ рднрд╛рдЧ рд▓рд┐рдПрдБ, рдкреБрд░рд╕реНрдХрд╛рд░ рдЬрд┐рддреНрди рд╕рдХрд┐рдирдБ, рд░ рдЕрдиреБрднрд╡рд▓рд╛рдИ рдПрдЙрдЯрд╛ рд▓реЗрдЦрдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ рддрд╛рдХрд┐ рдпреЛ рд╡рд┐рд╕реНрдореГрддрд┐рдорд╛ рдирдкреБрдЧреЛрд╕реН рд░ рд╕рд╛рдпрдж рдХрд╕реИрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реЛрд╕реН рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмрддрд╛рдЙрдиреЗрдЫреБред
рдо рдЕрдореВрд░реНрдд рдХреЛрдб рд▓реЗрдЦреНрди рдЪрд╛рд╣рдиреНрдирдереЗрдВ, рддрд░ рдХреЗрд╣реА рдХрд╛рдо рдЧрд░реНрдиреЗ рдмрдирд╛рдЙрди рдЪрд╛рд╣рдиреНрдереЗрдВ, рддреНрдпрд╕реИрд▓реЗ рд▓реЗрдЦрдХреЛ рд▓рд╛рдЧрд┐ рдореИрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рдЗрдиреНрд╕реНрдЯреНрдпрд╛рдиреНрдЯ рд▓рдЯрд░реА рд░ рдПрдЙрдЯрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд▓реЗрдЦреЗрдВ рдЬрд╕рд▓реЗ рдордзреНрдпрд╡рд░реНрддреА рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА TON рдмрд╛рдЯ рд╕рд┐рдзреИ рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рдбреЗрдЯрд╛ рджреЗрдЦрд╛рдЙрдБрдЫред
рдпреЛ рд▓реЗрдЦ TON рдорд╛ рдЖрдлреНрдиреЛ рдкрд╣рд┐рд▓реЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗ рддрд░ рдХрд╣рд╛рдБрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдерд╛рд╣рд╛ рдирднрдПрдХрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫред
рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рд▓рдЯрд░реАрдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ, рдо рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗрджреЗрдЦрд┐ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ, рддреНрдпрд╕рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ, рд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рд░ рдкреНрд░рдХрд╛рд╢рди рдЧрд░реНрдиреЗ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд▓реЗрдЦреНрдиреЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫреБред
рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдорд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛
рдЧрдд рдЕрдХреНрдЯреЛрдмрд░рдорд╛, рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдорд▓реЗ рдирдпрд╛рдБ рднрд╛рд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдмреНрд▓рдХрдЪреЗрди рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рдШреЛрд╖рдгрд╛ рдЧрд░реНтАНрдпреЛред Fift ╨╕ FunCред рдорд▓рд╛рдИ рдкрд╛рдБрдЪ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдЫрдиреМрдЯ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред рдореИрд▓реЗ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХреЗрд╣рд┐ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧрд░реНрдиреБ, рднрд╛рд╖рд╛ рд╕рд┐рдХреНрдиреБ, рд░ рдХреЗрд╣рд┐ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░ рд╣реБрдиреЗрдЫ, рднрд╡рд┐рд╖реНрдпрдорд╛ рдорд▓рд╛рдИ рдЕрд░реВ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдиреБ рдирдкрд░реЗ рдкрдирд┐ред рд╕рд╛рдереИ, рд╡рд┐рд╖рдп рд╕рдзреИрдВ рд╕рдмреИрдХреЛ рдУрдардорд╛ рд╣реБрдиреНрдЫред
рдпреЛ рднрдиреНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рдорд▓рд╛рдИ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдХреБрдиреИ рдЕрдиреБрднрд╡ рдерд┐рдПрдиред
рдореИрд▓реЗ рд╕рдХреБрдиреНрдЬреЗрд▓рд╕рдореНрдо рднрд╛рдЧ рд▓рд┐рдиреЗ рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ рд▓реЗрдЦреНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдХреЛ рдерд┐рдПрдБ, рддрд░ рдкрд╣рд┐рд▓реЛ рд▓реЗрдЦрдореИ рдо рдЕрд╕рдлрд▓ рднрдПрдБред рдмрд╣реБ-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрди рднрдПрдХреЛ FunC рд░ рдпрд╕рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХрд╛рдо рдЧрд░реНрдпреЛред рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд┐рдПрдБред .
рддреНрдпреЛ рдХреНрд╖рдгрдорд╛ рдореИрд▓реЗ рд╕реЛрдЪреЗрдБ рдХрд┐ рдпреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдХрдореНрддрд┐рдорд╛ рдХреЗрд╣реА рдкреБрд░рд╕реНрдХрд╛рд░ рд╕реНрдерд╛рди рд▓рд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдЫред рдЕрдиреНрддрдорд╛, ремреж рдордзреНрдпреЗ рекреж рдЬрдирд╛ рд╕рд╣рднрд╛рдЧреА рдкреБрд░рд╕реНрдХрд╛рд░ рд╡рд┐рдЬреЗрддрд╛ рдмрдиреЗ рд░ рдо рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдерд┐рдЗрдирдБред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╕рдорд╛ рдХреЗрд╣реА рдирд░рд╛рдореНрд░реЛ рдЫреИрди, рддрд░ рдПрдЙрдЯрд╛ рдХреБрд░рд╛рд▓реЗ рдорд▓рд╛рдИ рд╕рддрд╛рдПрдХреЛ рдерд┐рдпреЛред рдореЗрд░реЛ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдкрд░реАрдХреНрд╖рдг рдирднрдПрдХреЛ рд╕рдореАрдХреНрд╖рд╛рдХреЛ рдирддрд┐рдЬрд╛ рдШреЛрд╖рдгрд╛рдХреЛ рд╕рдордпрдорд╛, рдореИрд▓реЗ рдЪреНрдпрд╛рдЯрдорд╛ рд╕рд╣рднрд╛рдЧреАрд╣рд░реВрд▓рд╛рдИ рд╕реЛрдзреЗрдВ рдХрд┐ рдХреЗ рддреНрдпрд╣рд╛рдБ рдЕрд░реВ рдХреЛрд╣реА рдЫ рдЬрд╕рдХреЛ рдпреЛ рдЫреИрди, рддреНрдпрд╣рд╛рдБ рдХреЛрд╣реА рдерд┐рдПрдирдиреНред
рдореЗрд░реЛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рджреЗрдЦреЗрд░, рдиреНрдпрд╛рдпрд╛рдзреАрд╢рд╣рд░реВрд▓реЗ рджреБрдИ рджрд┐рди рдкрдЫрд┐ рдПрдЙрдЯрд╛ рдЯрд┐рдкреНрдкрдгреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реЗ рд░ рдорд▓рд╛рдИ рдЕрдЭреИ рдкрдирд┐ рдерд╛рд╣рд╛ рдЫреИрди рдХрд┐ рдЙрдиреАрд╣рд░реВрд▓реЗ рдирд┐рд░реНрдгрдпрдХреЛ рдХреНрд░рдордорд╛ рдЧрд▓реНрддрд┐рд▓реЗ рдореЗрд░реЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдЫреБрдЯрд╛рдП рд╡рд╛ рдпреЛ рдпрддрд┐ рдЦрд░рд╛рдм рдерд┐рдпреЛ рдХрд┐ рдпрд╕рд▓рд╛рдИ рдЯрд┐рдкреНрдкрдгреАрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрди рднрдиреНрдиреЗ рд╕реЛрдЪреЗрдХрд╛ рдерд┐рдПред рдореИрд▓реЗ рдкреГрд╖реНрдардорд╛ рдПрдЙрдЯрд╛ рдкреНрд░рд╢реНрди рд╕реЛрдзреЗрдВ рддрд░ рдЬрд╡рд╛рдл рдкрд╛рдЗрдиред рдпрджреНрдпрдкрд┐ рдпреЛ рдХрд╕рд▓реЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреЛ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдЧреЛрдкреНрдп рдЫреИрди, рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдпреЛ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд▓реЗрдЦреНрдиреБ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдерд┐рдпреЛред
рдмреБрдЭреНрди рдзреЗрд░реИ рд╕рдордп рд▓рд╛рдЧреНрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рд▓реЗрдЦ рд▓реЗрдЦреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░рд┐рдпреЛред рдЕрдЭреИ рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реА рдирднрдПрдХреЛрд▓реЗ, рд▓реЗрдЦрд▓реЗ рдЗрдЪреНрдЫреБрдХ рд╕рдмреИрдХреЛ рд╕рдордп рдмрдЪрдд рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред
TON рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛
рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдХреБрд░рд╛рд▓рд╛рдИ рдХреБрди рдкрдХреНрд╖рдмрд╛рдЯ рд╣реЗрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБ рдкрд░реНрдЫред рддреНрдпрд╕реИрд▓реЗ рдЕрдм рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдХреБрди рднрд╛рдЧрд╣рд░реВ рдЫрдиреН рднрдиреЗрд░ рдмрддрд╛рдЙрдиреЗрдЫреБред рдЕрдЭ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдХрдореНрддрд┐рдорд╛ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рдХрд╛рдо рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреБрди рднрд╛рдЧрд╣рд░реВ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрди рд░ рдХрд╛рдо рдЧрд░реНрдирдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВ TON Virtual Machine (TVM), Fift ╨╕ FunC, рддреНрдпрд╕реИрд▓реЗ рд▓реЗрдЦ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рд╡рд┐рдХрд╛рд╕рдХреЛ рд╡рд┐рд╡рд░рдг рдЬрд╕реНрддреИ рдЫред рд╣рд╛рдореА рдпрд╣рд╛рдБ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдЖрдлреИрдВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗ рдЫреИрдиреМрдВред
рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗрдорд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ TVM рд░ рднрд╛рд╖рд╛ Fift рд░рд╛рдореНрд░реЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЫрдиреНред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рд╕рдордпрдорд╛ рд░ рдЕрд╣рд┐рд▓реЗ рд╣рд╛рд▓рдХреЛ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрджрд╛, рдо рдкреНрд░рд╛рдпрдГ рдпрд╕рд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрдереЗрдВред
рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВ рд▓реЗрдЦрд┐рдиреЗ рдореБрдЦреНрдп рднрд╛рд╖рд╛ рд╣реЛ FunCред рд╣рд╛рд▓ рдпрд╕рдорд╛ рдХреБрдиреИ рдХрд╛рдЧрдЬрд╛рдд рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рддреНрдпрд╣рд╛рдБ рднрд╛рд╖рд╛рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд╕рд╛рдереИ рддрдкрд╛рдИрдВ рд╡рд┐рдЧрддрдХрд╛ рджреБрдИ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВред
рдорд╛рдиреМрдВ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдЙрдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦрд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ FunC, рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдХреЛрдбрд▓рд╛рдИ Fift рдПрд╕реЗрдореНрдмрд▓рд░рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдЫреМрдВред
рд╕рдВрдХрд▓рд┐рдд рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрди рдмрд╛рдБрдХреА рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдПрдЙрдЯрд╛ рдкреНрд░рдХрд╛рд░реНрдп рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ Fift, рдЬрд╕рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдб рд░ рдХреЗрд╣реА рдЕрдиреНрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрд▓рд╛рдИ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫ, рд░ рдЖрдЙрдЯрдкреБрдЯ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рднрдПрдХреЛ рдлрд╛рдЗрд▓ рд╣реБрдиреЗрдЫ .boc (рдЬрд╕рдХреЛ рдЕрд░реНрде "рдХреЛрд╖рд╣рд░реВрдХреЛ рдЭреЛрд▓рд╛" рд╣реЛ), рд░, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд▓реЗрдЦреНрдЫреМрдВ рднрдиреНрдиреЗ рдЖрдзрд╛рд░рдорд╛, рдПрдЙрдЯрд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдбрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рдареЗрдЧрд╛рдирд╛ред рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬреБрди рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдПрдХреЛ рдЫреИрдиред
рдкреНрд░рд╛рдкреНрдд TON рдорд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди .boc рдлрд╛рдЗрд▓рд▓рд╛рдИ рд▓рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмреНрд▓рдХрдЪреЗрдирдорд╛ рдкрдард╛рдЙрдиреБ рдкрд░реНрдиреЗрдЫ (рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рддрд▓ рдердк рдЬрд╛рдирдХрд╛рд░реА)ред рддрд░ рдкреНрд░рдХрд╛рд╢рди рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЙрддреНрдкрдиреНрди рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧреНрд░рд╛рдо рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЕрдиреНрдпрдерд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдиреЗрдЫреИрдиред рдкреНрд░рдХрд╛рд╢рди рдкрдЫрд┐, рддрдкрд╛рдИрдВ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рд▓рд╛рдИ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдПрд░ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд▓рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░) рд╡рд╛ рднрд┐рддреНрд░рдмрд╛рдЯ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдЙрдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдЕрд░реНрдХреЛрд▓рд╛рдИ TON рднрд┐рддреНрд░ рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдБрдЫ) рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдХреЛрдб рдХрд╕рд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдиреНрдЫ рднрдиреЗрд░ рдмреБрдЭреЗрдкрдЫрд┐, рдпреЛ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫред рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗ рд▓реЗрдЦреНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рд░ рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрдХреНрд░рдорд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рд▓рдЧрднрдЧ рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫред рд░ рд▓реЗрдЦреНрджрд╛, рд╣рд╛рдореА рдЕрд╡рд╕реНрдерд┐рдд рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВрдорд╛ рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдЫреМрдВ, рд╡рд╛ рд╣рд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рд╣реЗрд░реНрдЫреМрдВред Fift ╨╕ FunC рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛, рд╡рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред
рдзреЗрд░реИрдЬрд╕реЛ рдо рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреНрдпрд╛рдЯрдорд╛ рдХрд┐рд╡рд░реНрдбрд╣рд░реВ рдЦреЛрдЬреНрдереЗрдВ рдЬрд╣рд╛рдБ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХрд╛ рд╕рдмреИ рд╕рд╣рднрд╛рдЧреАрд╣рд░реВ рд░ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВ рднреЗрд▓рд╛ рд╣реБрдиреНрдереЗ, рдпрд╕реНрддреЛ рднрдпреЛ рдХрд┐ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рдХреНрд░рдордорд╛ рд╕рдмреИрдЬрдирд╛ рддреНрдпрд╣рд╛рдБ рднреЗрд▓рд╛ рднрдП рд░ рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд░рд╣реЗрдХреЛ рдлрд┐рдлреНрдЯ рд░ рдлрдирд╕реА рд▓рд┐рдЩреНрдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрди рдерд╛рд▓реЗред
рд╕рд┐рджреНрдзрд╛рдиреНрддрдмрд╛рдЯ рдЕрднреНрдпрд╛рд╕рдорд╛ рдЬрд╛рдиреЗ рд╕рдордп рдЖрдПрдХреЛ рдЫред
TON рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдЧрд░реНрджреИ
рдореИрд▓реЗ MacOS рдорд╛ рд▓реЗрдЦрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рдЧрд░реЗрдВ рд░ рдпрд╕рд▓рд╛рдИ рд╕рдлрд╛рд╕рдБрдЧ рджреЛрд╣реЛрд░реЛ рдЬрд╛рдБрдЪ рдЧрд░реЗрдВ Ubuntu рдбрдХрд░рдорд╛ резрео.режрек LTSред
рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рднрдиреЗрдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рд╣реЛ lite-client рдЬрд╕рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд▓реЗ TON рдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рднрдПрдХрд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд░рд╛рдореНрд░рд░реА рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫрдиреН, рдХреЗрд╣реА рд╡рд┐рд╡рд░рдгрд╣рд░реВ рд╣рдЯрд╛рдЙрдБрджреИред рдпрд╣рд╛рдБ рд╣рд╛рдореА рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдЫреМрдВ, рдмрд╛рдЯреЛрдорд╛ рдЫреБрдЯреЗрдХрд╛ рдХреБрдиреИ рдкрдирд┐ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИред рдореИрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдлреИрдВ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдирдБ рд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдВред Ubuntu (рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ MacOS рдорд╛ brew).
apt -y install git
apt -y install wget
apt -y install cmake
apt -y install g++
apt -y install zlib1g-dev
apt -y install libssl-dev рд╕рдмреИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрд┐рдд рднрдПрдкрдЫрд┐, рддрдкрд╛рдИрдВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ lite-client, Fift, FunC.
рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рд╣рд┐рдд TON рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реНрдЫреМрдВред рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдлреЛрд▓реНрдбрд░рдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред ~/TON.
cd ~/TON
git clone https://github.com/ton-blockchain/ton.git
cd ./ton
git submodule update --init --recursiveрднрдгреНрдбрд╛рд░рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рдкрдирд┐ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫред Fift ╨╕ FunC.
рдЕрдм рд╣рд╛рдореА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рддрдпрд╛рд░ рдЫреМрдВред рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЛрдб рдлреЛрд▓реНрдбрд░рдорд╛ рдХреНрд▓реЛрди рдЧрд░рд┐рдПрдХреЛ рдЫред ~/TON/tonред рдХреЛ ~/TON рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН build рд░ рд╣рд╛рдореА рдпрд╕рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреМрдВред
mkdir ~/TON/build
cd ~/TON/build
cmake ../tonрд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрди рдЧрдЗрд░рд╣реЗрдХрд╛рд▓реЗ, рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╡рд▓ lite-clientрддрд░ Fift ╤Б FunC, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рд╕рдмреИ рдХреБрд░рд╛ рд╕рдВрдХрд▓рди рдЧрд░реНрдЫреМрдВред рдпреЛ рдЫрд┐рдЯреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЗрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдкрд░реНрдЦрдиреНрдЫреМрдВред
cmake --build . --target lite-client
cmake --build . --target fift
cmake --build . --target funcрдЕрд░реНрдХреЛ, рд╣рд╛рдореА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдЫреМрдВ, рдЬрд╕рдорд╛ рдиреЛрдбрдХреЛ рдмрд╛рд░реЗрдорд╛ рдбреЗрдЯрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫ рдЬрд╕рдорд╛ lite-client рдЬрдбрд╛рди рд╣реБрдиреЗрдЫред
wget https://test.ton.org/ton-lite-client-test1.config.jsonTON рд▓рд╛рдИ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджреИ
рдЕрдм рд╕реБрд░реБ рдЧрд░реМрдВ 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 parameterslast ╨┐╨╛╨╗╤Г╤З╨░╨╡╤В ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╕╨╣ ╤Б╨╛╨╖╨┤╨░╨╜╨╜╤Л╨╣ ╨▒╨╗╨╛╨║ ╤Б ╤Б╨╡╤А╨▓╨╡╤А╨░.
sendfile <filename> ╨╛╤В╨┐╤А╨░╨▓╨╗╤П╨╡╤В ╨▓ TON ╤Д╨░╨╣╨╗ ╤Б ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╡╨╝, ╨╕╨╝╨╡╨╜╨╜╨╛ ╤Б ╨┐╨╛╨╝╨╛╤Й╤М╤О ╤Н╤В╨╛╨╣ ╨║╨╛╨╝╨░╨╜╨┤╤Л ╨┐╤Г╨▒╨╗╨╕╨║╤Г╨╡╤В╤Б╤П ╤Б╨╝╨░╤А╤В-╨║╨╛╨╜╤В╤А╨░╨║╤В ╨╕ ╨╖╨░╨┐╤А╤Б╨╛╤Б╤Л ╨║ ╨╜╨╡╨╝╤Г.
getaccount <addr> ╨╖╨░╨│╤А╤Г╨╢╨░╨╡╤В ╤В╨╡╨║╤Г╤Й╨╡╨╡ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╨╡ ╤Б╨╝╨░╤А╤В-╨║╨╛╨╜╤В╤А╨░╨║╤В╨░ ╤Б ╤Г╨║╨░╨╖╨░╨╜╨╜╤Л╨╝ ╨░╨┤╤А╨╡╤Б╨╛╨╝.
runmethod <addr> [<block-id-ext>] <method-id> <params> ╨╖╨░╨┐╤Г╤Б╨║╨░╨╡╤В get-╨╝╨╡╤В╨╛╨┤╤Л ╤Б╨╝╨░╤А╤В╨║╨╛╨╜╤В╤А╨░╨║╤В╨░. рдЕрдм рд╣рд╛рдореА рд╕рдореНрдЭреМрддрд╛ рдЖрдлреИрдВ рд▓реЗрдЦреНрди рддрдпрд╛рд░ рдЫреМрдВред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЖрдЗрдбрд┐рдпрд╛
рдореИрд▓реЗ рдорд╛рдерд┐ рд▓реЗрдЦреЗрдЭреИрдВ, рд╣рд╛рдореАрд▓реЗ рд▓реЗрдЦрд┐рд░рд╣реЗрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдЪрд┐рдареНрдард╛ рд╣реЛред
рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреЛ рддреНрдпрд╕реНрддреЛ рдЪрд┐рдареНрдард╛ рд╣реЛрдЗрди рдЬрд╕рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдЯрд┐рдХрдЯ рдХрд┐рдиреЗрд░ рдПрдХ рдШрдгреНрдЯрд╛, рдПрдХ рджрд┐рди рд╡рд╛ рдПрдХ рдорд╣рд┐рдирд╛ рдкрд░реНрдЦрдиреБ рдкрд░реНрдЫ, рддрд░ рдПрдЙрдЯрд╛ рддрддреНрдХрд╛рд▓ рдЪрд┐рдареНрдард╛ рд╣реЛ рдЬрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рд╕рдореНрдЭреМрддрд╛ рдареЗрдЧрд╛рдирд╛рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдЫред N рдЧреНрд░рд╛рдо, рд░ рддреБрд░реБрдиреНрддреИ рдлрд┐рд░реНрддрд╛ рдкрд╛рдЙрдБрдЫ 2 * N рдЧреНрд░рд╛рдо рд╡рд╛ рд╣рд╛рд░ред рд╣рд╛рдореА рдЬрд┐рддреНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рд▓рдЧрднрдЧ рекреж% рдмрдирд╛рдЙрдиреЗрдЫреМрдВред рдпрджрд┐ рднреБрдХреНрддрд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЧреНрд░рд╛рдо рдЫреИрди рднрдиреЗ, рд╣рд╛рдореА рд▓реЗрдирджреЗрдирд▓рд╛рдИ рдкреБрдирдГрдкреВрд░реНрддрд┐ рдорд╛рдиреНрдиреЗрдЫреМрдВред
рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдмреЗрдЯреНрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордпрдорд╛ рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдкрдорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рддрд╛рдХрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рддреБрд░реБрдиреНрддреИ рдмреБрдЭреНрди рд╕рдХреВрдиреН рдХрд┐ рдЙрд╕рд▓реЗ рдЬрд┐рддреЗрдХреЛ рдЫ рд╡рд╛ рд╣рд╛рд░реЗрдХреЛ рдЫред рддреНрдпрд╕реИрд▓реЗ, рдПрдЙрдЯрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рд▓реЗ рдмреЗрдЯреНрд╕ рд░ рдирддрд┐рдЬрд╛ рд╕рд┐рдзреИ TON рдмрд╛рдЯ рджреЗрдЦрд╛рдЙрдиреЗрдЫред
рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрджреИ
рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ FunC рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдмрдирд╛рдПрдХреЛ рдЫреБ, рдкреНрд▓рдЧрдЗрди рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛрдб рдЦреЛрдЬрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдпрджрд┐ рддрдкрд╛рдИрдВ рдЕрдЪрд╛рдирдХ рдХреЗрд╣рд┐ рдердкреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдореИрд▓реЗ рдкреНрд▓рдЧрдЗрдирд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрдирдорд╛ рдкреЛрд╕реНрдЯ рдЧрд░реЗрдВред рд╕рд╛рдереИ, рдХрд╕реИрд▓реЗ рдкрд╣рд┐рд▓реЗ Fift рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдПрдХреЛ рдерд┐рдпреЛ, рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ VSC рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдкрдирд┐ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рддреБрд░реБрдиреНрддреИ рдПрдЙрдЯрд╛ рднрдгреНрдбрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреЗрдЫреМрдВред
рд╣рд╛рдореНрд░реЛ рдЬреАрд╡рдирд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди, рд╣рд╛рдореА рдПрдЙрдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ рд░ рдпреЛ рддрдпрд╛рд░ рдирднрдПрд╕рдореНрдо рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗрдЫреМрдВред рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ TON рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВред
рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рджреБрдИ рдмрд╛рд╣реНрдп рд╡рд┐рдзрд┐рд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдкрд╣рд┐рд▓реЛ, recv_external() рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рддрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреНрдЫ рдЬрдм рд╕рдореНрдЭреМрддрд╛рдХреЛ рдЕрдиреБрд░реЛрдз рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рдЖрдЙрдБрдЫ, рдЕрд░реНрдерд╛рддреН, TON рдмрд╛рдЯ рд╣реЛрдЗрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрдм рд╣рд╛рдореА рдЖрдлреИрдВрд▓реЗ рд╕рдиреНрджреЗрд╢ рдмрдирд╛рдЙрдБрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ lite-client рдорд╛рд░реНрдлрдд рдкрдард╛рдЙрдБрдЫреМрдВред рджреЛрд╕реНрд░реЛ, 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, рдпрд╕реНрддреЛ рд╕реЗрд▓рд▓реЗ резрежреирей рдмрд┐рдЯрд╕рдореНрдо рдбреЗрдЯрд╛ рд░ рдЕрдиреНрдп рд╕реЗрд▓рд╣рд░реВрдорд╛ рек рд╡рдЯрд╛ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫред
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 рдорд╛рди реж рд░ -рез рднрдПрдХрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХрд╣рд░реВ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдХрд▓ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреЗрдЫрдиреНред
рдЕрдм рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЦрд╛рд▓реА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ рдкрд░реАрдХреНрд╖рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рддрдпрд╛рд░ рдЫреМрдВред рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯреИ рдлрд╛рдЗрд▓рдорд╛ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВред 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 рд▓рд╛рдИ рдорд╛рдиреНрдп рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдБрдЫреМрдВ, рд╣рд╛рдореА рдпреЛ рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рд╣реЛрд╕реН рднрдиреНрдиреЗ рдЪрд╛рд╣рдиреНрдЫреМрдВ, рд░ рдЬрдм рд╣рд╛рдореА рдлреЗрд░рд┐ рдЙрд╣реА рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдБрдЫреМрдВ, рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫред
рддреНрдпрд╕реИрд▓реЗ рд▓рдЧрднрдЧ рд╣рд░реЗрдХ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдпреА рджреБрдИ рдореБрджреНрджрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореНрд░реЛ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдмрд╛рд╣реНрдп рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ, рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╕рдХреЛ рдкрдирд┐ рдЦреНрдпрд╛рд▓ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫред
рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЙрд▓реНрдЯреЛ рдХреНрд░рдордорд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА рджреЛрд╣реЛрд░реНрдпрд╛рдПрд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗрдЫреМрдВ, рдпрджрд┐ рд╕рдореНрдЭреМрддрд╛рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕реНрддреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рд╕рдХреЗрдХреЛ рдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рд╕рдХреЗрдХреЛ рдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рджреЛрд╕реНрд░реЛ рдкрдЯрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджреИрдиред рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗрдЫреМрдВ рддрд╛рдХрд┐ рдорд╛рдирд┐рд╕рд╣рд░реВрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рд░реНрдХрд▓рд▓реЗ рдорд╛рддреНрд░ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреВрдиреНред
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреНред рд╣рд╛рдореА рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдиреЗрдЫреМрдВ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдпрд╣рд╛рдБ рдЫред рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛, рд╣рд╛рдореА рдкреНрд░рд╛рдкреНрдд рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░рд▓рд╛рдИ реж рдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдорд╛рдирдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВред рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджреЗрд╢рдорд╛, рд╣рд╛рдореА рд╣рд╛рд▓рдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ рдорд╛рди рдердкреНрдиреЗрдЫреМрдВред рдпрджрд┐ рд╕рдиреНрджреЗрд╢рдорд╛ рд░рд╣реЗрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ рдорд╛рди рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдорд╛рдирд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдБрджреИрди рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджреИрдиреМрдВ; рдпрджрд┐ рдпрд╕рд▓реЗ рдЧрд░реНрдЫ рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдЫреМрдВ рд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдХрд╛рдЙрдиреНрдЯрд░рд▓рд╛рдИ рез рд▓реЗ рдмрдврд╛рдЙрдБрдЫреМрдВред
рд╣рд╛рдореА рдлрд░реНрдХрджреИрдЫреМрдВ lottery-test-suite.fif рд░ рддреНрдпрд╕рдорд╛ рджреЛрд╕реНрд░реЛ рдкрд░реАрдХреНрд╖рдг рдердкреНрдиреБрд╣реЛрд╕реНред рдЕрдорд╛рдиреНрдп рдирдореНрдмрд░ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН, рдХреЛрдбрд▓реЗ рдЕрдкрд╡рд╛рдж рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╛рдиреМрдВ рдЕрдиреБрдмрдВрдз рдбреЗрдЯрд╛рд▓реЗ резремрем рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдЫ, рд░ рд╣рд╛рдореА резремрел рдкрдард╛рдЙрдБрдЫреМрдВред
<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) рдирдореНрдмрд░ резремрел, рейреи-рдмрд┐рдЯ рд▓реЛрдб рдЧрд░реНрдЫ unsigned int рдкреНрд░рд╕рд╛рд░рд┐рдд рд╕рдиреНрджреЗрд╢рдмрд╛рдЯред
рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬрдмрд╛рдЯ рейреи рдмрд┐рдЯ рд▓реЛрдб рдЧрд░реНрдЫреМрдВред рд╣рд╛рдореА рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдирдореНрдмрд░ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯреЗрдбрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ рдХрд┐ рдЦрд╛рдБрджреИрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ, рдпрджрд┐ рд╣реЛрдЗрди рднрдиреЗ, рд╣рд╛рдореА рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХреНрдЫреМрдВред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореА рдмреЗрдореЗрд▓ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рд╣реБрдирд╛рд▓реЗ, рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХреНрдиреБрдкрд░реНрдЫред
рдЕрдм рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реМрдВред
~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН lottery-test-suite.fif, рдЕрдиреНрддрд┐рдо рд▓рд╛рдЗрди рдмрджрд▓реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред
рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рднрдпреЛ рдХрд┐ рднрдПрди рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:
~/TON/build/crypto/fift -s lottery-test-suite.fifрддрдкрд╛рдИрдВрд▓реЗ рд╣рд╛рд▓рдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрдорд┐рдЯ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрд▓рд╛рдИ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рд╛рде рдлрд╛рдЗрд▓рдорд╛ рдирд┐рд░рдиреНрддрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдПрдЙрдЯрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ рдЬрд╕рд▓реЗ рдХреЛрдбрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд┐рд░рд╛рдВрдХрдорд╛ рд▓реЗрдЦреНрдиреЗрдЫ, рд░ рд╣рд╛рдореА рдХреЗрд╡рд▓ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреЗрдЫреМрдВред "include".
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛, рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН build.sh рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рд╕рд╣рд┐рддред
#!/bin/bash
~/TON/build/crypto/func -SPA -R -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fcрдпрд╕рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдмрдирд╛рдФрдВред
chmod +x ./build.shрдЕрдм, рд╕рдореНрдЭреМрддрд╛ рд╕рдВрдХрд▓рди рдЧрд░реНрди рд╣рд╛рдореНрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБ рдкрд░реНрдпрд╛рдкреНрдд рдЫред рддрд░ рдпрд╕рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд┐рд░рд╛рдВрдХрдорд╛ рд▓реЗрдЦреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ code. рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ lotter-compiled-for-test.fif, рдЬреБрди рд╣рд╛рдореА рдлрд╛рдЗрд▓рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗрдЫреМрдВ lottery-test-suite.fif.
sh рд╕реНрдХреНрд░рд┐рдкреНрдЯрдорд╛ рдХреЗрд╣реА рдХреЛрдб рдердкреМрдВ рдЬрд╕рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧрд░реНрдиреЗрдЫ lotter-compiled-for-test.fif рд░ рддреНрдпрд╕рдорд╛ рдЕрдиреНрддрд┐рдо рд▓рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
# copy and change for test
cp lottery-compiled.fif lottery-compiled-for-test.fif
sed '$d' lottery-compiled-for-test.fif > test.fif
rm lottery-compiled-for-test.fif
mv test.fif lottery-compiled-for-test.fif
echo -n "}END>s constant code" >> lottery-compiled-for-test.fifрдЕрдм, рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗрдЫред lottery-compiled-for-test.fif, рдЬреБрди рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ lottery-test-suite.fif
╨Т lottery-test-suite.fif рд╕рдореНрдЭреМрддрд╛ рдХреЛрдб рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдПрдЙрдЯрд╛ рд▓рд╛рдЗрди рдердкреНрдиреБрд╣реЛрд╕реНред "lottery-compiled-for-test.fif" include.
рд╣рд╛рдореА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдЫреМрдВ рдХрд┐ рд╣реБрдБрджреИрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВред
~/TON/build/crypto/fift -s lottery-test-suite.fifрд░рд╛рдореНрд░реЛ, рдЕрдм рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрди рд╣рд╛рдореА рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВред test.sh, рдЬрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗрдЫ build.sh, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
touch test.sh
chmod +x test.shрд╣рд╛рдореА рднрд┐рддреНрд░ рд▓реЗрдЦреНрдЫреМрдВред
./build.sh
echo "nCompilation completedn"
export FIFTPATH=~/TON/ton/crypto/fift/lib
~/TON/build/crypto/fift -s lottery-test-suite.fifрдЧрд░реМрдВред test.sh рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрд╛рдо рдЧрд░реНрдЫрдиреН рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
chmod +x ./test.sh
./test.shрд╣рд╛рдореА рд╕рдореНрдЭреМрддрд╛ рдХрдореНрдкрд╛рдЗрд▓ рднрдПрдХреЛ рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓реЗрдХреЛ рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВред
рд░рд╛рдореНрд░реЛ, рдЕрдм рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдорд╛ рдЫреБред test.sh рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдиреЗрдЫ рд░ рддреБрд░реБрдиреНрддреИ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░рд┐рдиреЗрдЫред рдпрд╣рд╛рдБ рд▓рд┐рдЩреНрдХ рдЫ .
рдареАрдХ рдЫ, рд╣рд╛рдореА рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдиреБ рдЕрдШрд┐, рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рдПрдЙрдЯрд╛ рдХрд╛рдо рдЧрд░реМрдВред
рдПрдЙрдЯрд╛ рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред build рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдмрдВрдз рд░ рдпрд╕рдХреЛ рдХреНрд▓реЛрди рд╕реНрдерд┐рд░рд╛рдВрдХрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗрдЫреМрдВред lottery-compiled.fif, lottery-compiled-for-test.fifрд╣рд╛рдореА рдПрдЙрдЯрд╛ рдлреЛрд▓реНрдбрд░ рдкрдирд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ test рдЬрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреЗрдЫред lottery-test-suite.fif рд░ рд╕рдореНрднрд╛рд╡рд┐рдд рд░реВрдкрдорд╛ рдЕрдиреНрдп рд╕рдорд░реНрдерди рдлрд╛рдЗрд▓рд╣рд░реВред .
рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рд╛рдЦреМрдВред
рддреНрдпрд╕рдкрдЫрд┐ рдПрдЙрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реБрдиреБрдкрд░реНрдЫ рдЬрд╕рд▓реЗ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ рдХрд┐ рднрдПрди рд░ рд╣рд╛рдореАрд▓реЗ рд╕рд╣реА рдирдореНрдмрд░ рдкрдард╛рдЙрдБрджрд╛ рд╕реНрдЯреЛрд░рдорд╛ рдХрд╛рдЙрдиреНрдЯрд░ рдЕрдкрдбреЗрдЯ рднрдпреЛ рдХрд┐ рднрдПрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫред рддрд░ рд╣рд╛рдореА рддреНрдпреЛ рдкрдЫрд┐ рдЧрд░реНрдиреЗрдЫреМрдВред
рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдХрд╕реНрддреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд░ рдХреБрди рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪреМрдВред
рд╣рд╛рдореАрд▓реЗ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреБред
`seqno` 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╤Б╤З╨╡╤В╤З╨╕╨║.
`pubkey` 256-╤В╨╕ ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╨┐╤Г╨▒╨╗╨╕╤З╨╜╤Л╨╣ ╨║╨╗╤О╤З, ╤Б ╨┐╨╛╨╝╨╛╤Й╤М╤О ╨║╨╛╤В╨╛╤А╨╛╨│╨╛, ╨╝╤Л ╨▒╤Г╨┤╨╡╨╝ ╨┐╤А╨╛╨▓╨╡╤А╤П╤В╤М ╨┐╨╛╨┤╨┐╨╕╤Б╤М ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╨╕╨╖╨▓╨╜╨╡ ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╤П, ╨╛ ╤З╨╡╨╝ ╨╜╨╕╨╢╨╡.
`order_seqno` 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╤Е╤А╨░╨╜╨╕╤В ╤Б╤З╨╡╤В╤З╨╕╨║ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨░ ╤Б╤В╨░╨▓╨╛╨║.
`number_of_wins` 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╤Е╤А╨░╨╜╨╕╤В ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨┐╨╛╨▒╨╡╨┤.
`incoming_amount` ╤В╨╕╨┐ ╨┤╨░╨╜╨╜╤Л╤Е Gram (╨┐╨╡╤А╨▓╤Л╨╡ 4 ╨▒╨╕╤В╨░ ╨╛╤В╨▓╨╡╤З╨░╨╡╤В ╨╖╨░ ╨┤╨╗╨╕╨╜╤Г), ╤Е╤А╨░╨╜╨╕╤В ╨╛╨▒╤Й╨╡╨╡ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨│╤А╨░╨╝╨╛╨▓, ╨║╨╛╤В╨╛╤А╤Л╨╡ ╨▒╤Л╨╗╨╕ ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╤Л ╨╜╨░ ╨║╨╛╨╜╤В╤А╤В╨░╨║╤В.
`outgoing_amount` ╨╛╨▒╤Й╨╡╨╡ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨│╤А╨░╨╝╨╛╨▓, ╨║╨╛╤В╨╛╤А╨╛╨╡ ╨▒╤Л╨╗╨╛ ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╨╛ ╨┐╨╛╨▒╨╡╨┤╨╕╤В╨╡╨╗╤П╨╝.
`owner_wc` ╨╜╨╛╨╝╨╡╤А ╨▓╨╛╤А╨║╤З╨╡╨╣╨╜╨░, 32-╤Е ╨▒╨╕╤В╨╜╨╛╨╡ (╨▓ ╨╜╨╡╨║╨╛╤В╨╛╤А╤Л╤Е ╨╝╨╡╤Б╤В╨░╤Е ╨╜╨░╨┐╨╕╤Б╨░╨╜╨╛, ╤З╤В╨╛ 8-╨╝╨╕ ╨▒╨╕╤В╨╜╨╛╨╡) ╤Ж╨╡╨╗╨╛╨╡ ╤З╨╕╤Б╨╗╨╛. ╨Т ╨┤╨░╨╜╨╜╤Л╨╣ ╨╝╨╛╨╝╨╡╨╜╤В ╨▓╤Б╨╡╨│╨╛ ╨┤╨▓╨░ -1 ╨╕ 0.
`owner_account_id` 256-╤В╨╕ ╨▒╨╕╤В╨╜╨╛╨╡ ╤Ж╨╡╨╗╨╛╨╡ ╨┐╨╛╨╗╨╛╨╢╨╕╤В╨╡╨╗╤М╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛, ╨░╨┤╤А╨╡╤Б ╨║╨╛╨╜╤В╤А╨░╨║╤В╨░ ╨▓ ╤В╨╡╨║╤Г╤Й╨╡╨╝ ╨▓╨╛╤А╨║╤З╨╡╨╣╨╜╨╡.
`orders` ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╨░╤П ╤В╨╕╨┐╨░ ╤Б╨╗╨╛╨▓╨░╤А╤М, ╤Е╤А╨░╨╜╨╕╤В ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╕╨╡ ╨┤╨▓╨░╨┤╤Ж╨░╤В╤М ╤Б╤В╨░╨▓╨╛╨║. рдЕрдм, рддрдкрд╛рдИрдВрд▓реЗ рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреНрдиреБ рдкрд░реНрдЫред рд╣рд╛рдореА рдкрд╣рд┐рд▓реЛрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреЗрдЫреМрдВред pack_state(), рдЬрд╕рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдорд╛ рдкрдЫрд┐рдХреЛ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рдкреНрдпрд╛рдХ рдЧрд░реНрдиреЗрдЫред рджреЛрд╕реНрд░реЛ, рд╣рд╛рдореА рдХрд▓ рдЧрд░реНрдиреЗрдЫреМрдВ unpack_state() рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбреЗрдЯрд╛ рдкрдвреНрдиреЗрдЫ рд░ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫред
_ pack_state(int seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) inline_ref {
return begin_cell()
.store_uint(seqno, 32)
.store_uint(pubkey, 256)
.store_uint(order_seqno, 32)
.store_uint(number_of_wins, 32)
.store_grams(incoming_amount)
.store_grams(outgoing_amount)
.store_int(owner_wc, 32)
.store_uint(owner_account_id, 256)
.store_dict(orders)
.end_cell();
}
_ unpack_state() inline_ref {
var ds = begin_parse(get_data());
var unpacked = (ds~load_uint(32), ds~load_uint(256), ds~load_uint(32), ds~load_uint(32), ds~load_grams(), ds~load_grams(), ds~load_int(32), ds~load_uint(256), ds~load_dict());
ds.end_parse();
return unpacked;
}рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рд╕реБрд░реБрдорд╛ рдпреА рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдердкреНрдЫреМрдВред рд╣рд╛рдореА рдкрд╛рдЙрдБрдЫреМрдВ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдоред
рдбреЗрдЯрд╛ рдмрдЪрдд рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред set_data() рд░ рдпрд╕рд▓реЗ рдбреЗрдЯрд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрдиреЗрдЫ pack_state() рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдорд╛ред
cell packed_state = pack_state(arg_1, .., arg_n);
set_data(packed_state);рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рдбреЗрдЯрд╛ рд▓реЗрдЦреНрди рд░ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЫрдиреН, рд╣рд╛рдореА рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рд╕рдХреНрдЫреМрдВред
рд╣рд╛рдореАрд▓реЗ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдЖрдЙрдиреЗ рд╕рдиреНрджреЗрд╢ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдорд╛рд▓рд┐рдХ (рд╡рд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрдорд╛ рдкрд╣реБрдБрдЪ рднрдПрдХреЛ рдЕрд░реНрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛) рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рдЬрдм рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рднрдгреНрдбрд╛рд░рдгрдорд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдбреЗрдЯрд╛рдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЬреБрди рднрд╡рд┐рд╖реНрдпрдорд╛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░рд┐рдиреЗрдЫред рд╣рд╛рдореА рддреНрдпрд╣рд╛рдБ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА рд▓реЗрдЦреНрдиреЗрдЫреМрдВ рддрд╛рдХрд┐ рд╣рд╛рдореА рдЖрдЧрдорди рд╕рдиреНрджреЗрд╢рдХреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрджреНрд╡рд╛рд░рд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛ рднрдиреА рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рд╕рдХреМрдВред
рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдиреБ рдЕрдШрд┐, рдПрдЙрдЯрд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд▓реЗрдЦреМрдВ test/keys/owner.pkрдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореЛрдбрдорд╛ Fift рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдЪрд╛рд░ рдЖрджреЗрд╢рд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗрдЫреМрдВред
`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рдпрд╕ рдЪрд░рдгрдорд╛ рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫред
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдЙрдЫреМрдВ рд░ рдпреЛ рдЕрд╕рдлрд▓ рд╣реБрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ рддрд╛рдХрд┐ рдпрд╕рд▓реЗ рдпрд╕ рдврд╛рдБрдЪрд╛рдХрд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреЛрд╕реН рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреЛрд╕реНред
рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА рд╕рдиреНрджреЗрд╢рдмрд╛рдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ релрезреи рдмрд┐рдЯ рдкрдвреНрдЫреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЪрд░рдорд╛ рд▓реЗрдЦреНрдЫреМрдВ, рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдХрд╛рдЙрдиреНрдЯрд░ рдЪрд░рдХреЛ рейреи рдмрд┐рдЯ рдкрдвреНрдЫреМрдВред
рд╣рд╛рдореАрд╕рдБрдЧ рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбреЗрдЯрд╛ рдкрдвреНрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп рднрдПрдХреЛрд▓реЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред
рддреНрдпрд╕рдкрдЫрд┐, рднрдгреНрдбрд╛рд░рдгрд╕рдБрдЧ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ рдХреЗрд╣рд┐ рдореЗрд▓ рдЦрд╛рдПрди рднрдиреЗ, рд╕рдореНрдмрдиреНрдзрд┐рдд рдХреЛрдбрдХреЛ рд╕рд╛рде рдЕрдкрд╡рд╛рдж рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред
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 рен-рдмрд┐рдЯ рдЧреИрд░-рдЛрдгрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ, рдпрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛, рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рд╕рдиреНрджреЗрд╢ рдХрд╕рд░реА рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЫрдиреМрдЯ рдЧрд░реНрдиреЗрдЫреМрдВред
<b 0 32 u, 1 @ 7 u, new_owner_wc @ 32 i, new_owner_account_id @ 256 u, b> message_to_sign !рдкрд░реАрдХреНрд╖рдгрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдгрдХреЛ рдбрд┐рд╕реЗрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╕рд░реА рд╣реБрдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред storage рдлрд┐рдлреНрдЯрдорд╛ред рдЪрд░рд╣рд░реВрдХреЛ рдбрд┐рд╕реЗрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдлрд┐рдлреНрдЯ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред
рдкреАрдареЛ рдердкреЗрд░ред
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдпреЛ рдХреНрд░реНрдпрд╛рд╕ рднрдПрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЕрдм рд▓рдЯрд░реА рдорд╛рд▓рд┐рдХрдХреЛ рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рддрд░реНрдХ рдердкреНрдиреБрд╣реЛрд╕реНред
рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рд╣рд╛рдореА рдкрд╛рд░реНрд╕ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ message, рд╣рд╛рдореА рдкрдвреНрдЫреМрдВ actionред рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрдирд╛ рдЧрд░рд╛рдЙрдБрдЫреМрдВ рдХрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рджреБрдИ рд╣реБрдиреЗрдЫрдиреН action: рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рд░ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреЗред
рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдареЗрдХреНрдХрд╛ рдорд╛рд▓рд┐рдХрдХреЛ рдирдпрд╛рдБ рдареЗрдЧрд╛рдирд╛ рдкрдвреНрдЫреМрдВ рд░ рднрдгреНрдбрд╛рд░рдгрдорд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдЫреМрдВред
рд╣рд╛рдореА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрдЫреМрдВ рд░ рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рддреЗрд╕реНрд░реЛ рдкрд░реАрдХреНрд╖рдг рдЕрд╕рдлрд▓ рднрдпреЛред рдпреЛ рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫ рдХрд┐рдирднрдиреЗ рдЕрдм рд╕рдореНрдЭреМрддрд╛рд▓реЗ рд╕рдиреНрджреЗрд╢рдмрд╛рдЯ рен рдмрд┐рдЯрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрджрдЫ, рдЬреБрди рдкрд░реАрдХреНрд╖рдгрдорд╛ рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рдЫред рдПрдЙрдЯрд╛ рдЕрд╡рд╕реНрдерд┐рдд рдирднрдПрдХреЛ рдердкреМрдВред 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().
рдЕрдм рдЖрдиреНрддрд░рд┐рдХ рд╕рдиреНрджреЗрд╢рдорд╛ рдЬрд╛рдФрдВред рд╡рд╛рд╕реНрддрд╡рдорд╛, рд╣рд╛рдореА рдЧреНрд░рд╛рдо рдорд╛рддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдЦреЗрд▓рд╛рдбреАрд▓реЗ рдЬрд┐рддреЗрдорд╛ рджреЛрдмреНрдмрд░ рд░рдХрдо рд░ рд╣рд╛рд░реНрдпреЛ рднрдиреЗ рдорд╛рд▓рд┐рдХрд▓рд╛рдИ рдПрдХ рддрд┐рд╣рд╛рдЗ рд░рдХрдо рдлрд┐рд░реНрддрд╛ рдкрдард╛рдЙрдБрдЫреМрдВред
рдкрд╣рд┐рд▓реЗ, рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦреМрдВред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓рд╛рдИ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдкрд░реАрдХреНрд╖рдг рдареЗрдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╕рдмрд╛рдЯ рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдорд╛ рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдБрдЫреМрдВред
рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рдареЗрдЧрд╛рдирд╛рдорд╛ рджреБрдИ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рд╡рд░реНрдХрдЪреЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рейреи-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рд░ рдпрд╕ рд╡рд░реНрдХрдЪреЗрдирдорд╛ реирелрем-рдмрд┐рдЯ рдЧреИрд░-рдЛрдгрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЦрд╛рддрд╛ рдирдореНрдмрд░ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, -рез рд░ резреирейрекрел, рдпреЛ рдареЗрдЧрд╛рдирд╛ рд░ рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдореИрд▓реЗ рдареЗрдЧрд╛рдирд╛ рдмрдЪрдд рдЧрд░реНрди рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрдВ .
// ( 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 рдкрд╣рд┐рд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╕реНрдЯреНрдпрд╛рдХрдорд╛ -рез, резреирейрекрел рд░ рднрд╡рд┐рд╖реНрдпрдХреЛ рдлрд╛рдЗрд▓ "sender.addr" рдХреЛ рдирд╛рдо рд░рд╛рдЦреНрдпреМрдВ:
-1 12345 "sender.addr" рдЕрд░реНрдХреЛ рдЪрд░рдг рднрдиреЗрдХреЛ рдкреНрд░рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБ рд╣реЛ -rot, рдЬрд╕рд▓реЗ рд╕реНрдЯреНрдпрд╛рдХрд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫ рддрд╛рдХрд┐ рдЕрджреНрд╡рд┐рддреАрдп рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдирдореНрдмрд░ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд╣реЛрд╕реН:
"sender.addr" -1 12345256 u>B реирелрем-рдмрд┐рдЯ рдЧреИрд░-рдЛрдгрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХрд▓рд╛рдИ рдмрд╛рдЗрдЯрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрджрдЫред
"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039swap рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рдорд╛рдерд┐рд▓реНрд▓реЛ рджреБрдИ рддрддреНрд╡рд╣рд░реВ рд╕реНрд╡реИрдк рдЧрд░реНрджрдЫред
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -132 i>B рейреи-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХрд▓рд╛рдИ рдмрд╛рдЗрдЯрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдЫред
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFFB+ рдмрд╛рдЗрдЯрдХрд╛ рджреБрдИ рдЕрдиреБрдХреНрд░рдорд╣рд░реВ рдЬреЛрдбреНрдЫред
"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.
рдЕрдм, рдЕрдиреНрддрдорд╛, рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рд╕рд╛рд░ред
рдкрд╣рд┐рд▓реЗ, рдпрджрд┐ рдЦреЗрд▓рд╛рдбреА рд╣рд╛рд░реЗ рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдмреЗрдЯрд┐рдВрдЧ рдЗрддрд┐рд╣рд╛рд╕рдорд╛ рдмрдЪрдд рдЧрд░реНрдЫреМрдВ рд░ рдпрджрд┐ рд░рдХрдо рей рдЧреНрд░рд╛рдо рднрдиреНрджрд╛ рдмрдвреА рдЫ рднрдиреЗ, рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рдорд╛рд▓рд┐рдХрд▓рд╛рдИ рез/рей рдкрдард╛рдЙрдБрдЫреМрдВред
рдпрджрд┐ рдЦреЗрд▓рд╛рдбреАрд▓реЗ рдЬрд┐рддреНрдпреЛ рднрдиреЗ, рд╣рд╛рдореА рджреЛрдмреНрдмрд░ рд░рдХрдо рдЦреЗрд▓рд╛рдбреАрдХреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдкрдард╛рдЙрдБрдЫреМрдВ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЗрддрд┐рд╣рд╛рд╕рдорд╛ рдмрд╛рдЬреА рдЬрд╛рдирдХрд╛рд░реА рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдЫреМрдВред
() 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));
}рддреНрдпреЛ рд╕рдмреИ рдЫред .
рдЕрдм рдпреЛ рд╕рд░рд▓ рдЫ: рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдпреЛрд╕реН рднрдиреЗрд░ рд╡рд┐рдзрд┐рд╣рд░реВ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН (рд╡рд╛рд╕реНрддрд╡рдорд╛, рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдбреЗрдЯрд╛ рдкрдвреНрдиреБрд╣реЛрд╕реН)ред
ред рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдХрд╕рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╣рд╛рдореА рддрд▓ рд▓реЗрдЦреНрдиреЗрдЫреМрдВред
рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдБрджрд╛ рд╣реБрдиреЗ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рд╕рдореНрд╣рд╛рд▓реНрдиреЗ рдХреЛрдб рдкрдирд┐ рдердкреНрди рдмрд┐рд░реНрд╕рд┐рдПрдБред ред рд░ рдЕрдзрд┐рдХ рдорд╛рд▓рд┐рдХрдХреЛ рдЦрд╛рддрд╛рдорд╛ рд░рдХрдордХреЛ рез/рей рднрд╛рдЧ рдкрдард╛рдЙрдиреЗ рд╕рдорд╕реНрдпрд╛ред
рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди рдорд╛рддреНрд░ рдмрд╛рдБрдХреА рдЫред рдПрдЙрдЯрд╛ рдлреЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред requests.
рдореИрд▓реЗ рдкреНрд░рдХрд╛рд╢рди рдХреЛрдбрд▓рд╛рдИ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд┐рдПрдБред рдЬреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ред
рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдХреБрд░рд╛ рдХреЗ рд╣реЛ? рд╣рд╛рдореА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░рдг рд░ рдЗрдирдкреБрдЯ рд╕рдиреНрджреЗрд╢ рдмрдирд╛рдЙрдБрдЫреМрдВред рддреНрдпрд╕ рдкрдЫрд┐, рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдареЗрдЧрд╛рдирд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ, рдЕрд░реНрдерд╛рддреН, 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 реи рдЧреНрд░рд╛рдо рд░ рдХреЗрд╣рд┐ рд╕реЗрдХреЗрдиреНрдб рдкрдЫрд┐ рдЙрд╣реА рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЧреНрд░рд╛рдо рдкрдард╛рдЙрди рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреБ , рд░ рддрдкрд╛рдИрдВрд▓реЗ рдЪреНрдпрд╛рдЯрдмрд╛рдЯ рдХрд╕реИрд╕рдБрдЧ рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рдо рдорд╛рдЧреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдо рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреБред
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KsydрдиреЗрдЯрд╡рд░реНрдХрдорд╛ рд╕реБрд░реБ рдирдЧрд░рд┐рдПрдХреЛ ( рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫstate:account_uninit) рдпрд╕реНрддреЛ рдареЗрдЧрд╛рдирд╛ рд░ рез,режрежреж,режрежреж,режрежреж рдиреНрдпрд╛рдиреЛрдЧреНрд░рд╛рдо рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рднрдПрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ред
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 рдвреБрд╡рд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ реи рд░ реп.рел рдЧреНрд░рд╛рдоред
<b 165 32 u, 2 7 u, 9500000000 Gram, b>рд╕рдиреНрджреЗрд╢рдорд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрд▓реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред lottery.pk, рдЬреБрди рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдкрд╣рд┐рд▓реЗ рдЙрддреНрдкрдиреНрди рднрдПрдХреЛ рдерд┐рдпреЛред .
рдЧреЗрдЯ рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ
рдЕрдм рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рдЧреЗрдЯ рд╡рд┐рдзрд┐рд╣рд░реВ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реМрдВред
рд▓рдиреНрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН lite-client рд░ рд╣рд╛рдореАрд▓реЗ рд▓реЗрдЦреЗрдХрд╛ get methods рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
$ ./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рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╕рд╛рдЗрдЯ рдбрдХрд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдЧреБрдЧрд▓ рдХреНрд▓рд╛рдЙрдбрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред .
рдХреЛрд╕рд┐рд╕ рдЧрд░реНрджреИ
рдЕрдм рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдкреБрдирдГрдкреВрд░реНрддрд┐ рдЧрд░реНрди рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ ред рд╣рд╛рдореА рекреж рдЧреНрд░рд╛рдо рдкрдард╛рдЙрдиреЗрдЫреМрдВред рд░ рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣реА рдмрд╛рдЬреА рд▓рдЧрд╛рдЙрдБрдЫреМрдВред рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рд╕рд╛рдЗрдЯрд▓реЗ рдмрд╛рдЬреА рдЗрддрд┐рд╣рд╛рд╕, рд╣рд╛рд▓рдХреЛ рдЬрд┐рддреНрдиреЗ рдкреНрд░рддрд┐рд╢рдд рд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрд╛рдЙрдБрдЫред
, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рдЬрд┐рддреНрдпреМрдВ рд░ рджреЛрд╕реНрд░реЛ рд╣рд╛рд░реНрдпреМрдВред
рдкрдЫрд┐рд╢рдмреНрдж
рд▓реЗрдЦ рдореИрд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реЗрдХреЛ рднрдиреНрджрд╛ рдзреЗрд░реИ рд▓рд╛рдореЛ рднрдпреЛ, рд╕рд╛рдпрдж рдпреЛ рдЫреЛрдЯреЛ рд╣реБрди рд╕рдХреНрдереНрдпреЛ, рд╡рд╛ рд╣реБрдирд╕рдХреНрдЫ рдпреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ рдЬрд╕рд▓рд╛рдИ TON рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рдерд╛рд╣рд╛ рдЫреИрди рд░ рдпрд╕рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рднрдПрдХреЛ рдзреЗрд░реИ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд▓реЗрдЦреНрди рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫред рд╕рд╛рдпрдж рдХреЗрд╣рд┐ рдХреБрд░рд╛рд╣рд░реВ рдЕрдЭ рд╕рд░рд▓ рд░реВрдкрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛред
рд╕рд╛рдпрдж рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд╛ рдХреЗрд╣реА рдкрдХреНрд╖рд╣рд░реВ рдЕрдЭ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░ рд╕реБрдиреНрджрд░ рдврдВрдЧрд▓реЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛ, рддрд░ рддреНрдпрд╕рдкрдЫрд┐ рд▓реЗрдЦ рддрдпрд╛рд░ рдЧрд░реНрди рдЕрдЭ рдмрдвреА рд╕рдордп рд▓рд╛рдЧреНрдиреЗ рдерд┐рдпреЛред рдпреЛ рдкрдирд┐ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдореИрд▓реЗ рдХрддреИ рдЧрд▓реНрддреА рдЧрд░реЗрдХреЛ рдЫреБ рд╡рд╛ рдХреЗрд╣рд┐ рдмреБрдЭреЗрдХреЛ рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рдпрджрд┐ рддрдкрд╛рдИрдВ рдХреЗрд╣рд┐ рдЧрдореНрднреАрд░ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рдд рд╡рд╛ TON рдХреЛрдб рднрдПрдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ рднрд░ рдкрд░реНрдиреБ рдкрд░реНрдЫред
рдпреЛ рдХреБрд░рд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ рдХрд┐ TON рдЖрдлреИрдВ рдЕрдЭреИ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдЪрд░рдгрдорд╛ рднрдПрдХреЛрд▓реЗ, рдпрд╕ рд▓реЗрдЦрдорд╛ рднрдПрдХрд╛ рдХреБрдиреИ рдкрдирд┐ рдЪрд░рдгрд╣рд░реВ рддреЛрдбреНрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН (рдЬреБрди рдо рд▓реЗрдЦреНрджреИ рдЧрд░реНрджрд╛ рднрдПрдХреЛ рдерд┐рдпреЛ, рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕рд▓рд╛рдИ рд╕рдЪреНрдпрд╛рдЗрд╕рдХреЗрдХреЛ рдЫреБ), рддрд░ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдХрдо рдЫред
рдо TON рдХреЛ рднрд╡рд┐рд╖реНрдпрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрдиреБрдорд╛рди рдЧрд░реНрджрд┐рдиред рд╕рд╛рдпрдж рдкреНрд▓реЗрдЯрдлрд░реНрдо рдХреЗрд╣реА рдареВрд▓реЛ рд╣реБрдиреЗрдЫ рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХреЛ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рд░ рд╣рд╛рдореНрд░рд╛ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрд╕рдБрдЧ рдЕрд╣рд┐рд▓реЗ рдиреИ рдПрдХ рд╕реНрдерд╛рди рдУрдЧрдЯреНрди рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдиреБрдкрд░реНрдЫред
рдлреЗрд╕рдмреБрдХрдмрд╛рдЯ рд▓рд┐рдмреНрд░рд╛ рдкрдирд┐ рдЫ, рдЬрд╕рдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рджрд░реНрд╢рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ TON рднрдиреНрджрд╛ рдмрдвреА рдЫред рдорд▓рд╛рдИ рд▓рд┐рдмреНрд░рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓рдЧрднрдЧ рдХреЗрд╣реА рдерд╛рд╣рд╛ рдЫреИрди, рдлреЛрд░рдордХреЛ рдЖрдзрд╛рд░рдорд╛ рд╣реЗрд░реНрджрд╛, рддреНрдпрд╣рд╛рдБ TON рд╕рдореБрджрд╛рдп рднрдиреНрджрд╛ рдзреЗрд░реИ рдЧрддрд┐рд╡рд┐рдзрд┐рд╣рд░реВ рдЫрдиреНред рдпрджреНрдпрдкрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рд░ TON рд╕рдореБрджрд╛рдп рднреВрдорд┐рдЧрдд рдЬрд╕реНрддреИ рдЫрдиреН, рдЬреБрди рдкрдирд┐ рд░рд╛рдореНрд░реЛ рдЫред
рд╕рдиреНрджрд░реНрдн
- рдЖрдзрд┐рдХрд╛рд░рд┐рдХ TON рдХрд╛рдЧрдЬрд╛рдд:
- рдЖрдзрд┐рдХрд╛рд░рд┐рдХ TON рднрдгреНрдбрд╛рд░:
- рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд╛рд▓реЗрдЯ:
- рдпрд╕ рд▓реЗрдЦрдмрд╛рдЯ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рднрдгреНрдбрд╛рд░:
- рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯрдХреЛ рд▓рд┐рдЩреНрдХ:
- FunC рдХреЛ рд▓рд╛рдЧрд┐ рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА:
- рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдордорд╛ TON рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛рдХрд╛рдиреА, рдЬрд╕рд▓реЗ рдорд▓рд╛рдИ рд╕реБрд░реБрд╡рд╛рддреА рдЪрд░рдгрдорд╛ рдпреЛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рд╛рдБрдЪреНрдЪреИ рдорджреНрджрдд рдЧрд░реНтАНрдпреЛред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ TON рдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдиреЗ рд╕рдмреИрдЬрдирд╛ рддреНрдпрд╣рд╛рдБ рдЫрдиреН рднрдиреЗрд░ рднрдиреНрдиреБ рдЧрд▓рдд рд╣реБрдиреЗрдЫреИрдиред рддрдкрд╛рдИрдВ рддреНрдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рдордХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рд╕реЛрдзреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
- TON рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрд░реНрдХреЛ рдХреБрд░рд╛рдХрд╛рдиреА рдЬрд╣рд╛рдБ рдореИрд▓реЗ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдПрдБ:
- рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рдкрд╣рд┐рд▓реЛ рдЪрд░рдг:
- рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдХреЛ рджреЛрд╕реНрд░реЛ рдЪрд░рдг:
рд╕реНрд░реЛрдд: www.habr.com
