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

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдордиреЗ рдмреНрд▓реЙрдХрдЪреЗрди рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдкрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдирдВрдмрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рддреНрдпрд╛рдЧрдирд╛ рдкрдбрд╝рд╛ред
рд╣рдо 'рдХрдорд┐рдЯ-рдЦреБрд▓рд╛рд╕рд╛' рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЖрдПред рд╕рд░реНрд╡рд░ рдиреЗ 1 рд╕реЗ 5 рддрдХ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА, рдЗрд╕рдореЗрдВ 'рдирдордХ' рдорд┐рд▓рд╛рдпрд╛ рдФрд░
рдХреЗрдХреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ
рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ ред рд╕рд░реНрд╡рд░ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛ рдкреВрд░реНрд╡-рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдирддреАрдЬрд╛ рдпрд╣ рд╣реБрдЖ рдХрд┐ рдЧреЗрдо рдХреЛ рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдЫрд┐рдкрд╛рдП рдЧрдП рдирдВрдмрд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХрдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдЦрд┐рд▓рд╛рдбрд╝реА рдиреЗ рдЕрдкрдиреА рд╢рд░реНрдд рд░рдЦреА рдФрд░ рд╕рд░реНрд╡рд░ рдиреЗ рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рдирдВрдмрд░ рдФрд░ 'рдирдордХ' рдХреЛ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкрд░ рднреЗрдЬ рджрд┐рдпрд╛ред рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдб рдкреНрд░рдХрдЯ рдХрд┐рдП рдЧрдП рдереЗред рдмрд╛рдж рдореЗрдВ, рд╕рд░реНрд╡рд░ рдиреЗ рдирдВрдмрд░реЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдФрд░ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреАрдд рдЧрдпрд╛ рдпрд╛ рд╣рд╛рд░ рдЧрдпрд╛ред
рдпрджрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ рдФрд░ 'рдирдордХ' рдирд╣реАрдВ рднреЗрдЬрд╛, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреАрдд рдЧрдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдЬреАрдд рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдорд╣рдВрдЧрд╛ рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдЙрд╕ рд╕рдордп, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рдЕрдиреНрдп рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдерд╛ред
рдХреБрдЫ рд╕рдордп рдмрд╛рдж, Tradisys рдЯреАрдо рдиреЗ
рд▓рд╣рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ
rsaVerify () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ред рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдордиреЗ рддреАрди рдирдП рдЧреЗрдо рдмрдирд╛рдП:
рдбрд╛рдЗрд╕ рд░реЛрд▓рд░ ,
рдХреЙрдЗрди рдлреНрд▓рд┐рдк рдФрд░
рд░рд╛рдЗрдб рдСрди рд╡реЗрд╡реНрд╕ ред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ, рдирдИ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрдП рдкрд╣рд▓реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреАрдврд╝реА рдХреЛ рджреЗрдЦреЗрдВред рдЖрдк
рдпрд╣рд╛рдВ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░
Decompiled рдЪреБрдиреЗрдВред рдЖрдкрдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╛ рдХреЛрдб (рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реВрдЪреА рд╣реЛрддреА рд╣реИред @Callable рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ
рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
рджрд╛рдВрд╡ рдФрд░
рд╡рд╛рдкрд╕реА :
- func bet (рдЦрд┐рд▓рд╛рдбрд╝реА рдЦреБрд╢)
- func рдирд┐рдХрд╛рд╕реА (gameId, rsaSign)
1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдорд╛ рдФрд░ рд╢рд░реНрдд рдЖрдХрд╛рд░ рдЪреБрдирддрд╛ рд╣реИред

2. рдХреНрд▓рд╛рдЗрдВрдЯ рдмреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдпрд╣
рд╢рд░реНрдд рд╣реЛрдЧреА
("50")3. рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдПрдбреНрд░реЗрд╕ (рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрдЯреИрдХреНрд╕рдПрдХреНрд╕ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдордВрддреНрд░рдг рд▓реЗрдирджреЗрди рднреЗрдЬрддрд╛ рд╣реИред рдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдирджреЗрди рдореЗрдВ рдмреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрдиреНрд╡реЛрдХреЗрд╢рди рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ (рдкрд╕рдВрдж: рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдкрд░ рд╢рд░реНрдд рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

4. рдЖрдЗрдП рдмреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ:
@Callable(i) func bet (playerChoice) = { let newGameNum = IncrementGameNum() let gameId = toBase58String(i.transactionId) let pmt = extract(i.payment) let betNotInWaves = isDefined(pmt.assetId) let feeNotInWaves = isDefined(pmt.assetId) let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice) let txIdUsed = isDefined(getString(this, gameId)) if (betNotInWaves) then throw ("Bet amount must be in Waves") else if (feeNotInWaves) then throw ("Transaction's fee must be in Waves") else if (txIdUsed) then throw ("Passed txId had been used before. Game aborted.") else { let playerPubKey58 = toBase58String(i.callerPublicKey) let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "") ScriptResult(WriteSet(cons(DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), cons(DataEntry(GAMESCOUNTERKEY, newGameNum), cons(DataEntry(gameId, gameDataStr), nil)))), TransferSet(cons(ScriptTransfer(SERVER, COMMISSION, unit), nil))) } }
рд╕рдорд╛рд░реЛрд╣ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рдирдпрд╛ рдЦреЗрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ:
- рдЕрдиреЛрдЦрд╛ рдирдпрд╛ рдЧреЗрдо рдЖрдИрдбреА (рдЧреЗрдо рдЖрдИрдбреА)
- рдЦреЗрд▓ рд░рд╛рдЬреНрдп = рдЙрдкрдХреГрдд
- рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдкрд╕рдВрдж (рд░реЗрдВрдЬ 50 рд╣реИ)
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА
- рд╕рдВрднрд╛рд╡рд┐рдд рдЗрдирд╛рдо (рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджрд╛рдВрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)

рдмреНрд▓реЙрдХрдЪреЗрди рдкрд░ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
{ "type": "string", "value": "03WON_0283_448t8Jn9P3717UnXFEVD5VWjfeGE5gBNeWg58H2aJeQEgJ_06574069_09116020000_0229", "key": "2GKTX6NLTgUrE4iy9HtpSSHpZ3G8W4cMfdjyvvnc21dx" }
'рдХреА' рдПрдХ рдирдП рдЧреЗрдо рдХреЗ рд▓рд┐рдП
рдЧреЗрдо рдЖрдИрдбреА рд╣реИ ред рд╢реЗрд╖ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ 'рдореВрд▓реНрдп' рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ
рдбреЗрдЯрд╛ рдЯреИрдм рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


5. рд╕рд░реНрд╡рд░ рдмреНрд▓реЙрдХрдЪреИрди рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗ рдЧрдП рд▓реЗрдирджреЗрди (рдирдпрд╛ рдЧреЗрдо) рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИред рдЧреЗрдо рдЖрдИрдбреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд▓реЙрдХрдЪреЗрди рдореЗрдВ рджрд░реНрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдпрд╛ рд╣рдЯрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
6. рд╕рд░реНрд╡рд░ рдПрдХ рд╡рд╛рдкрд╕реА рд╕рдорд╛рд░реЛрд╣ (gameId, rsaSign) рдмрдирд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ:
рд╡рд╛рдкрд╕ рд▓реЗрдиреЗ ( ┬лFwsuaaShC6DMWdSWQ5osGWtYkVbTEZrsnxqDbVx5oUpq┬╗, ┬лрдмреЗрд╕ 64: Gy69dKdmXUEsAmUrpoWxDLTQOGj5 / qO8COA + QjyPVYTAjxXYvEESJbSiCSBRRCOAliqCWwaS161nWqoTL / TltiIvw3nKyd4RJIBNSIgEWGM1tEtNwwnRwSVHs7ToNfZ2Dvk / GgPUqLFDSjnRQpTHdHUPj9mQ8erWw0r6cJXrzfcagKg3yY / 0wJ6AyIrflR35mUCK4cO7KumdvC9Mx0hr / ojlHhN732nuG8ps4CUlRw3CkNjNIajBUlyKQwpBKmmiy3yJa / QM5PLxqdppmfFS9y0sxgSlfLOgZ51xRDYuS8NViOA7c1JssH48ZtDbBT5yqzRJXs3RnmZcMDr тАЛтАЛ/ q0x6Bg ==┬╗)
7. рд╕рд░реНрд╡рд░ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдкрд░ рдПрдХ рдордВрдЧрд▓рд╛рдЪрд░рдг рднреЗрдЬрддрд╛ рд╣реИ (InvocationTx рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ)ред рд▓реЗрди-рджреЗрди рдореЗрдВ рдЙрддреНрдкрдиреНрди рдЖрд╣рд░рдг рдлрд╝рдВрдХреНрд╢рди (gameId, rsaSign) рдореЗрдВ рдПрдХ рдХреЙрд▓ рд╣реЛрддреА рд╣реИ:

рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
рдЧреЗрдо рдЖрдИрдбреА рдФрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдХрд╛ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИред
рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
рд╣рдо рд╕рдорд╛рди рдореВрд▓реНрдп (рдЧреЗрдо рдЖрдИрдбреА) рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдЖрд░рдПрд╕рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ RSA рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЧреЗрдо рд╕рдВрдЦреНрдпрд╛ рдФрд░ RSA рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЕрдЬреНрдЮрд╛рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЕрдВрддрд┐рдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рднреА рд╡реНрдпрд░реНрде рд╣реИред
8. рдмреНрд▓реЙрдХрдЪреЗрди рдПрдХ рд▓реЗрдирджреЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдХрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди (gameId, rsaSign) рдЪрд▓рд╛рддрд╛ рд╣реИред
9. рд╡рд╛рдкрд╕ рд▓реЗрдиреЗ рдХреЗ рдлрд╝рдВрдХреНрд╢рди (gameId, rsaSign) рдХреЗ рдЕрдВрджрд░ GenerateRandIn рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реИред рдпрд╣ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рд╣реИред
# @return 1 ... 100 func GenerateRandInt (gameId,rsaSign) = { # verify RSA signature to proof random let rsaSigValid = rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC) if (rsaSigValid) then { let rand = (toInt(sha256(rsaSign)) % 100) if ((0 > rand)) then ((-1 * rand) + 1) else (rand + 1) } else throw ("Invalid RSA signature") }
рд░реИрдВрдб рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрд░рдПрд╕рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реА рдЬрд╛рддреА рд╣реИред рдлрд┐рд░, рдЗрд╕реЗ SHA-256
(sha256 (rsaSign) ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рд╣реИрд╢реЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рд╣рдо рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдмрд╛рдж рдореЗрдВ рд╣реИрд╢рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕рдХреА рдкреАрдврд╝реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реНрд░реЗрдгреА (рдЬреИрд╕реЗ 1 рд╕реЗ 100 рддрдХ) рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд╛рд▓реВ рдФрд░ 100% (
рдореЙрдб рдПрдирд╛рд▓реЙрдЧ) рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдордиреЗ
rsaVerify () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ GenerateRandInt (gameId, rsaSign) рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ:
rsaVerify (SHA256, toBytes (gameId), rsaSign, RSAPUBLIC)
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, RSAPUBLIC рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдФрд░ rsaSign рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЪреЗрдХ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирдВрдмрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕рд┐рд╕реНрдЯрдо рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡реИрдз рдирд╣реАрдВ рд╣реИ (рдЕрдорд╛рдиреНрдп рдЖрд░рдПрд╕рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░)ред
рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЗрдо рдЖрдИрдбреА рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ 2,880 рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рднреАрддрд░ рдПрдХ рд╡реИрдз рдЖрд░рдПрд╕рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреА рддреИрдирд╛рддреА рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреАрдд рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЗрдирд╛рдо рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдзреЛрдЦрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рднрд╣реАрди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдбрд╛рдЗрд╕ рд░реЛрд▓рд░ рдирд┐рднрд╛рддрд╛ рд╣реИред рд╡рд╣ 14 рдШрди рдХреЗ рджрд╛рдВрд╡ рдХреЗ рд╕рд╛рде 6 рдШрди рдЪреЗрд╣рд░реЛрдВ рдореЗрдВ рд╕реЗ 2 рдХреЛ рдЪреБрдирддрд╛ рд╣реИред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп (2,880 рдмреНрд▓реЙрдХ) рдХреЗ рднреАрддрд░ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдз рдЖрд░рдПрд╕рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ 34.44 WAVES рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдмреНрд▓реЙрдХрдЪреИрди рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдУрд░реЗрдХрд▓, рдПрдХ рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдЧреЗрдо рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдЬреЗрддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреАрдд рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рд╡рд┐рдзрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣реЗрд░рдлреЗрд░ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕рднреА рдкрд░рдВрдкрд░рд╛рдПрдВ рдЦреЗрд▓ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ - рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдирд┐рд╖реНрдкрдХреНрд╖ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрдВред рдИрдорд╛рдирджрд╛рд░реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдСрдбрд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред