рдбреЗрд╡рд▓рдкрд░ рдХреНрд░рд┐рд╕реНрдЯреЛрдл рд╡реЗрд░рдбреЙрдЯ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдо
'рдорд╛рд╕реНрдЯреЗрд░рд┐рдВрдЧ рд╡реЗрдм 3.0 рд╡рд┐рде рд╡реЗрд╡реНрд╕' рд▓реЗрдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рд╣реИред
рдЖрдкрдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреНрдпрд╛ рд╣реИ? рдЖрдкрдиреЗ рдХреЛрд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛?рдореИрдВ рд▓рдЧрднрдЧ 15 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХ рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред
рдЙрднрд░рддреЗ рджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдпреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛, рдПрдХ рдмреИрдВрдХ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддреНрддрдкреЛрд╖рд┐рдд, рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдмреНрд▓реЙрдХрдЪреИрди рдкреНрд░рдорд╛рдгрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рд╕рдордп, рдореБрдЭреЗ рдмреНрд▓реЙрдХрдЪреЗрди рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА, рдЬрдмрдХрд┐ рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░рдВрд╕реА рдореЗрдВ рдерд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдирд┐рд╡реЗрд╢рдХ рдХреА рддрд░рдл рд╕реЗред
рд╣рдордиреЗ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрд░ рдирд╣реАрдВ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд┐ рд╕рдВрд╕реНрдерд╛рдиреЛрдВ рдФрд░ рдмреИрдВрдХреЛрдВ рдиреЗ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдРрд╕реА рддрдХрдиреАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдЕрдзреНрдпрдпрди рдФрд░ рд╢реЛрдз рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдлрд┐рд░
рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢реБрд░реВ рд╣реБрдИред рдкрд░рд┐рдпреЛрдЬрдирд╛ред
рдореИрдВрдиреЗ рдПрдХ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрдирдиреЗрдЯ рдкрд░ рд▓рд╛рдЗрд╡ рд╣реИред рдЙрд╕ рд╕рдордп [рд╡реЗрд╡реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ] рд░рд╛рдЗрдб рдЕрднреА рддрдХ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реБрдИ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдЕрдЯреИрдЪ рдЬреЗрдиреНрд╕рди рдХреЗ рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рдлрд░ рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╣рдореЗрд╢рд╛ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкрд╛рдареНрдпрдХреНрд░рдо рд▓реЗрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдпреЛрдЬрдирд╛рдмрджреНрдз рдХрджрдо рдЗрд╕реЗ рд╡рд┐рдХреЗрдВрджреНрд░реАрдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ (рдбреАрдПрдкреА) рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред
рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдХрд┐рди рдкрд╣рд▓реБрдУрдВ рд╕реЗ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕рдмрд╕реЗ рдХрдард┐рди рд▓рдЧрд╛?рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдкрд╣рд▓реВ рдпрд╣ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдерд╛, рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╣реЛрдиреЗ рдХреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рд░реНрдл рд╕реАрдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ред рдпрд╣ рднреА рд╕рд░рд▓, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред
рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕реЛрдЪрдиреЗ рдФрд░ рдХрднреА-рдХрднреА рдХреБрдЫ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ рдПрдХ рд╕рдмрдХ рд╕реЗ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред
рдХрдИ рдмрд╛рд░, рдореБрдЭреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рднрд╛рдЧ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рдирд╣реАрдВ рдереА, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдФрд░ рдЪреБрдиреМрддреА рд╕реЗ рдирд╣реАрдВ рдЧреБрдЬрд░рд╛ред рдХрд┐рд╕реА рднреА 'рдХреЙрдкреА / рдкреЗрд╕реНрдЯ' рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдереА, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рд╕рднреА рдЪреБрдиреМрддреА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рд╕рдордЭ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдерд╛ред
рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рдерд╛ рдХрд┐ рдХрднреА-рдХрднреА рдЪреБрдиреМрддреА рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрд╣реБрд╡рд┐рдХрд▓реНрдкреАрдп рдкреНрд░рд╢реНрди рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рдереЗред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдореЗрд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рдЙрддреНрдХреГрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рд╢реНрди рдПрдХ рдЧреИрд░-рджреЗрд╢реА рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рдХреНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рдЗрд╕рд▓рд┐рдП рдХрднреА-рдХрднреА рд╕рдордЭрдиреЗ рдореЗрдВ рдПрдХ рдЕрдВрддрд░ рдерд╛ред
рд╢рд╛рдпрдж, рдореБрдЭреЗ рдУрд░реЗрдХрд▓ рдФрд░ рдПрдирдПрдлрдЯреА рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕реАрдЦрдирд╛ рдкрд╕рдВрдж рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдХреЛрд░реНрд╕ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╣реБрдХ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд░ рдкрд╣рд▓реВ рдФрд░ рд╡рд┐рд╡рд░рдг рдХреА рдкреВрд░реА рд╕рдордЭ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗред
рдХреНрдпрд╛ рдЖрдк рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - 'рдХреВрдкрди рдмрд╛рдЬрд╝рд╛рд░'? рдХреНрдпрд╛ рдЖрдк рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рднреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?рд╣рдордиреЗ worked рдХреВрдкрди рдмрд╛рдЬрд╝рд╛рд░ тАЩрдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рдЬрд╝рд╛рд░ рд╣реИ рдЬрд╣рд╛рдБ рд▓реЛрдЧ рд╕рд╛рдорд╛рди рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯ рдХреВрдкрди рдХрдо рдХреАрдордд рдкрд░ рдЦрд░реАрджрддреЗ рдФрд░ рдмреЗрдЪрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреВрдкрди рдХреЛ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╡рд┐рд╢реЗрд╖ рдЫреВрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рдерд╛ред

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

рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдВ рднреА рд╢рд╛рдорд┐рд▓ рдХреА рдЧрдИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡реЛрдЯрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╣рдо рдкрд╣рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдПрд╕реЗрдЯреНрд╕, рд╕реНрдорд╛рд░реНрдЯ рдЕрдХрд╛рдЙрдВрдЯреНрд╕ рдФрд░ рдбреАрдПрдкреА рдЦрд╛рддреЛрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╕реЗ рдЧреБрдЬрд░реЗред рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛рд░реНрдп рдХрд┐рд╕реА рдЦрд╛рддреЗ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ рд▓реЗрдирджреЗрди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рдЖрдкрдХреЛ рдПрдХ рдФрд░ 'рдирд┐рдпрдо' рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
{-# STDLIB_VERSION 3 #-} {-# CONTENT_TYPE DAPP #-} {-# SCRIPT_TYPE ACCOUNT #-} letownerPublicKey = base58'H8ndsHjBha6oJBQQx33zqbP5wi8sQP7hwgjzWUv3q95M' @Verifier(tx) funcverify() = { matchtx { cases: SetScriptTransaction=>sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublicKey) cased: DataTransaction=>true case_ =>false } }
рдлрд┐рд░ рд╣рдордиреЗ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдбреАрдПрдкреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдмреНрд▓реЙрдХрдЪреИрди рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ, рдбреЗрдЯрд╛ рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдирдП рд▓реЗрдирджреЗрди, рдЗрдирд╡реЛрдХрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдПрдХ рдбреАрдПрдкреА рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд▓реЗрди-рджреЗрди рдЬреЛ рд╣рдо рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдХрд░рддреЗ рдереЗ, рд╡рд╣ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛:
letdatajson = { "title": "t-shirt with , vote 1", "coupon_price": 10000000, "old_price": 1000000000, "new_price": 100000000, "address": "Universe", "description": "I want you to make love, not war, i know you've heard it before", "image": "https://bit.ly/2EXTghg" } it('add item', asyncfunction(){ letts = invokeScript({ dApp: dappAddress, call:{ function:"addItem", args:[ { type:"string", value: datajson.title }, { type:"integer", value: datajson.coupon_price }, { type:"string", value: JSON.stringify(datajson) } ]}, payment: [] }, accountSupplierSeed) lettx = awaitbroadcast(ts) awaitwaitForTx(tx.id) })
AddItem рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕ рдбреЗрдЯрд╛ рд▓реЗрдирджреЗрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд╛рдж рдореЗрдВ рдПрдХ рдЦрд░реАрдж рдФрд░ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдП, рдмрд╛рд╣рд░ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдоред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдзрди рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╢реБрд░реВ рдХрд░рдирд╛, рдбреАрдПрдкреА рдХреЗ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдирд╛ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рдЖрджрд┐ред
рдпрд╣рд╛рдВ рдПрдХ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ addItem рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
@Callable(i) funcaddItem(title: String, price: Int, data: String) = { letsupplierAddress = toBase58String(i.caller.bytes) letitem = getKeyItem(supplierAddress, title) if( price <= 0) thenthrow("purchase amount cannot be less than item price") elseif( getValueItemSupplier(item) !=NONE ) thenthrow("an item is already exist") else{ WriteSet([ DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data) ]) } }
рд╣рдордиреЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдЫ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдкреНрд░рдЪрд╛рд░ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорддрджрд╛рди рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдорддрджрд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдиреЗ 'рдХрдорд┐рдЯ-рд░рд┐рд╡реАрд▓' рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдкреНрд░рддрд┐рдмрджреНрдз рдХрджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдирдордХ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡реЛрдЯреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреНрд░рдХрдЯ рдХрджрдо рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рд╡реЛрдЯреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
@Callable(i) funcvoteCommit(item: String, hash: String) = { letuser = toBase58String(i.caller.bytes) letcommits = getValueCommitsCount(item) letstatus = getValueItemStatus(item) if( commits >=VOTERS) thenthrow("reached max num of voters") elseif(getValueCommit(item, user) !=NONE) thenthrow("user has already participated") elseif(getKeyItemSupplier(item) ==NONE) thenthrow("item does not exist") elseif(status !=NONE && status !=VOTING) thenthrow("voting is not possible") else{ WriteSet([ DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), commits +1), DataEntry(getKeyItemStatus(item),if(commits ==VOTERS) thenREVEAL elseVOTING) ]) } }
рдЖрдкрдиреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдФрд░ рдХреНрдпрд╛ рд╕реАрдЦрд╛?рдкрд╛рдареНрдпрдХреНрд░рдо рдиреЗ рдЯреЛрдХрди рдФрд░ рдЧреИрд░-рдХрд╡рдХ рдЯреЛрдХрди (рдПрдирдПрдлрдЯреА) рдкрд░ рднреА рдЫреБрдЖ - рдЯреЛрдХрди рдЬреЛ рдХреБрдЫ рдЕрджреНрд╡рд┐рддреАрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рдирд┐рдореЗрдп рдирд╣реАрдВ рд╣реИрдВред
рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рдиреЗ oracles рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ред рдЪреВрдБрдХрд┐ рдПрдХ рдмреНрд▓реЙрдХрдЪреЗрди рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рдмреНрд▓реЙрдХрдЪреЗрди рдореЗрдВ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ oracles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рд╣рдордиреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд░реЗрдХрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдХреЛ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрдЪреЗ рдЧрдП рдХреВрдкрди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдпрд╣рд╛рдБ рдПрдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╣реИ:
funcgetExtValueItemWhiteListStatus(item:String) = { item +"_verifier_status" } letverifier = "3Mx9qgMyMhHt7WUZr6PsaXNfmydxMG7YMxv" letVERIFIED = "verified" letBLACKLISTED = "blacklist" @Callable(i) funcsetstatus(supplier: String, status: String) = { letaccount = toBase58String(i.caller.bytes) if( account !=verifier ) thenthrow("only oracle verifier are able to manage whitelist") elseif( status !=VERIFIED && status !=BLACKLISTED) thenthrow("wrong status") else{ WriteSet([ DataEntry(getExtValueItemWhiteListStatus(supplier), status) ]) } }
рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рдХреМрди рд╕рд╛ рднрд╛рдЧ (рднрд╛рдЧ) рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд▓рдЧрд╛?рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣рд┐рд╕реНрд╕рд╛ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рдирдП-рдкреНрд░рд╛рдкреНрдд рдЬреНрдЮрд╛рди рдХреЛ рдареЛрд╕ рдХрд┐рдпрд╛ред
рдЖрдИрдбреАрдИ ,
рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдФрд░
oracles рдХреЗ рд╕рд╛рде рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдерд╛ред
рдЖрдкрдиреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдЬреЛ рд╕реАрдЦрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрдкрдХреА рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИ?рд╢реБрд░реБрдЖрдд рд╕реЗ, рдпрд╣ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рддреЛ, рдЕрдм рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд░рд╛рдЗрдб рдкрд░
рд╕рд╛рдЗрди-web.app рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ред рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдорд╛рдгрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рд╡рд╛рд░реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдИрдореЗрд▓ рдкреНрд░рдорд╛рдгрди, рдмрд╣реБ-рдкрдХреНрд╖реАрдп рд╕рдордЭреМрддрд╛, рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдкрд╛рдареНрдпрдХреНрд░рдо рднреА рдмрд╣реБрдд рджрд┐рдорд╛рдЧ рдЦреЛрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рдФрд░ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХрдИ рд╡рд┐рдЪрд╛рд░ рдЖрдиреЗ рд▓рдЧреЗред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдордиреЗ рдЖрдПрдЧреАред