Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

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

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

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

рд╕реБрд░реБрдорд╛, рд╣рд╛рдореАрд▓реЗ рдмреНрд▓рдХрдЪреЗрдирдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдирдореНрдмрд░ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдпреМрдВред рдпрджреНрдпрдкрд┐, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ: рд╕рдВрдЦреНрдпрд╛ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреБрдХреНрдд рдЫреИрдиред

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

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

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

рднрд░реНрдЦрд░реИ, Tradisys рдЯреЛрд▓реАрд▓реЗ Waves рдкреНрд░реЛрдЯреЛрдХрд▓рдорд╛ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдердкреНрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрдпреЛ rsaVerify()ред рдпрд╕рд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрдорд╛ рдЖрдзрд╛рд░рд┐рдд RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ рд╡реИрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫред рдлрд▓рд╕реНрд╡рд░реВрдк, рд╕реБрд╡рд┐рдзрд╛ рдердкрд┐рдпреЛред

рд╣рд╛рдореАрд▓реЗ рддреАрди рдЦреЗрд▓рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реЗрдХрд╛ рдЫреМрдВ: рдкрд╛рд╕рд╛ рд░реЛрд▓рд░, рд╕рд┐рдХреНрдХрд╛ рдлреНрд▓рд┐рдк ╨╕ рдЫрд╛рд▓рд╣рд░реВрдорд╛ рд╕рд╡рд╛рд░реА рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЕрдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реНред

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

Ride on Waves рдХреЛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╣реЗрд░реМрдВред рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ рдпрд╣рд╛рдБ.

рдЯреНрдпрд╛рдмрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд▓рд┐рдкрд┐ рд░ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд┐рдШрдЯрд┐рддред рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдб (рдЙрд░реНрдл рд▓рд┐рдкрд┐) рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЛрдбрд▓реЗ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред @Callable рдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрд░реВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЖрд╣реНрд╡рд╛рди рд▓реЗрдирджреЗрдиред рд╣рд╛рдореА рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдЫреМрдВ: рд╢рд░реНрдд ╨╕ рдирд┐рдХрд╛рд▓реНрдиреБ:

  • func рд╢рд░реНрдд (рдЦреЗрд▓рд╛рдбреА рдЫрдиреЛрдЯ)
  • func рдирд┐рдХрд╛рд╕реА (gameId,rsaSign)

1. рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдЦрдгреНрдбрдХреЛ рд▓рдореНрдмрд╛рдЗ рд░ рд╢рд░реНрдд рдЖрдХрд╛рд░ рдЪрдпрди рдЧрд░реНрджрдЫред

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

2. рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рдорд╛рдерд┐рдХреЛ рдЫрд╡рд┐рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рд╣реБрдиреЗрдЫ рд╢рд░реНрдд ("50").

3. рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдареЗрдЧрд╛рдирд╛ (рдкреНрд░рд╕рд╛рд░рдг InvocationTx) рдорд╛ рдПрдХ рдЖрд╣реНрд╡рд╛рди рд▓реЗрдирджреЗрди рдкрдард╛рдЙрдБрдЫред рд▓реЗрдирджреЗрдирд▓реЗ рдХрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд░реВрдкрдорд╛ рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░реНрдп рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдЖрд╣реНрд╡рд╛рди рд▓реЗрдирджреЗрдирд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░реНрдп (рдЫрдиреЛрдЯ: рд╕реНрдЯреНрд░рд┐рдЩ) рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдЯреНрд░рд┐рдЧрд░ рдЧрд░реНрджрдЫред

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

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)))
                    }
    }

рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрдХреЛ рд╕реНрдерд┐рддрд┐рдорд╛ рдирдпрд╛рдБ рдЦреЗрд▓ рд▓реЗрдЦреНрдЫред рдЕрд░реНрдерд╛рддреН:

  • рдирдпрд╛рдБ рдЦреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ (рдЦреЗрд▓ рдЖрдИрдбреА)
  • рдЦреЗрд▓ рдЕрд╡рд╕реНрдерд╛ = рдкреЗрд╕ рдЧрд░рд┐рдПрдХреЛ
  • рдЦреЗрд▓рд╛рдбреАрдХреЛ рдЫрдиреЛрдЯ (рдЦрдгреНрдб рд▓рдореНрдмрд╛рдЗ релреж)
  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА
  • рд╕рдореНрднрд╛рд╡рд┐рдд рдЬреАрдд (рдЦреЗрд▓рд╛рдбреАрдХреЛ рд╢рд░реНрддрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ)

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

рдпреЛ рдмреНрд▓рдХрдЪреЗрдирдорд╛ рдбрд╛рдЯрд╛ рд░реЗрдХрд░реНрдб рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ (рдХреБрдЮреНрдЬреА-рдорд╛рди):

{
    "type": "string",
    "value": "03WON_0283_448t8Jn9P3717UnXFEVD5VWjfeGE5gBNeWg58H2aJeQEgJ_06574069_09116020000_0229",
    "key": "2GKTX6NLTgUrE4iy9HtpSSHpZ3G8W4cMfdjyvvnc21dx"
  }

"рдХреБрдЮреНрдЬреА" (рдХреБрдЮреНрдЬреА) - рдЦреЗрд▓ рдЖрдИрдбреА рдирдпрд╛рдБ рдЦреЗрд▓ред рдмрд╛рдБрдХреА рдбрд╛рдЯрд╛ "рдорд╛рди" рдлрд┐рд▓реНрдбрдХреЛ рд▓рд╛рдЗрдирдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫред рдпреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рдЯреНрдпрд╛рдмрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рддрдереНрдпрд╛рдЩреНрдХ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛:

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

5. рд╕рд░реНрднрд░рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ "рд╣реЗрд░реНрдЫ" рд░ рдмреНрд▓рдХрдЪреЗрди рдПрдкрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрдард╛рдЗрдПрдХреЛ рд▓реЗрдирджреЗрди (рдирдпрд╛рдБ рдЦреЗрд▓) рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред рдирдпрд╛рдБ рдЧреЗрдордХреЛ рдЧреЗрдо рдЖрдИрдбреА рдкрд╣рд┐рд▓реЗ рдиреИ рдмреНрд▓рдХрдЪреЗрдирдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рдЕрдм рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрди рд╕рдХрд┐рдБрджреИрдиред

6. рд╕рд░реНрднрд░рд▓реЗ рд╣рдЯрд╛рдЙрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫ (gameId, rsaSign)ред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпреЛ рдЬрд╕реНрддреИ:

withdraw ("FwsuaaShC6DMWdSWQ5osGWtYkVbTEZrsnxqDbVx5oUpq", "base64:Gy69dKdmXUEsAmUrpoWxDLTQOGj5/qO8COA+QjyPVYTAjxXYvEESJbSiCSBRRCOAliqCWwaS161nWqoTL/TltiIvw3nKyd4RJIBNSIgEWGM1tEtNwwnRwSVHs7ToNfZ2Dvk/GgPUqLFDSjnRQpTHdHUPj9mQ8erWw0r6cJXrzfcagKg3yY/0wJ6AyIrflR35mUCK4cO7KumdvC9Mx0hr/ojlHhN732nuG8ps4CUlRw3CkNjNIajBUlyKQwpBKmmiy3yJa/QM5PLxqdppmfFS9y0sxgSlfLOgZ51xRDYuS8NViOA7c1JssH48ZtDbBT5yqzRJXs3RnmZcMDr/q0x6Bg==")

7. рд╕рд░реНрднрд░рд▓реЗ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз (рдкреНрд░рд╕рд╛рд░рдг InvocationTx) рдорд╛ рдПрдХ рдЖрд╣реНрд╡рд╛рди рд▓реЗрдирджреЗрди рдкрдард╛рдЙрдБрдЫред рд▓реЗрдирджреЗрдирд▓реЗ рдЧрдарди рдЧрд░рд┐рдПрдХреЛ рдирд┐рдХрд╛рд╕реА рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдХрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ (gameId, rsaSign):

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

рд╕рдорд╛рд░реЛрд╣ рд╕рдорд╛рд╡реЗрд╢ рдЫ рдЦреЗрд▓ рдЖрдИрдбреА рдирдпрд╛рдБ рдЦреЗрд▓ рд░ рдПрдХ рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рд╕рдВрдЧ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдкрд░рд┐рдгрд╛рдоред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫред

рдпрд╕рдХреЛ рдЕрд░реНрде рдХреЗ рд╣реЛ?

рд╣рд╛рдореА рд╕рдорд╛рди рдорд╛рди (рдЦреЗрд▓ рдЖрдИрдбреА) рд▓рд┐рдиреНрдЫреМрдВ рд░ рдпрд╕рдорд╛ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрдЫреМрдВред рд╣рд╛рдореА рд╕рдзреИрдВ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред рдпреЛ рдХрд╕рд░реА RSA рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдЧрд░реНрджрдЫред рдЕрдиреНрддрд┐рдо рдирдореНрдмрд░ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рдХрд┐рдирдХрд┐ рдЦреЗрд▓ рдЖрдИрдбреА рд░ RSA рд▓рд╛рдЧреВ рдЧрд░реЗрдХреЛ рдкрд░рд┐рдгрд╛рдо рдерд╛рд╣рд╛ рдЫреИрдиред рдирдореНрдмрд░ рдЫрдиреЛрдЯ рдЧрд░реНрдиреБ рдкрдирд┐ рд╡реНрдпрд░реНрде рдЫред

8. рдмреНрд▓рдХрдЪреЗрди рд▓реЗрдирджреЗрди рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫред рдпрд╕рд▓реЗ рд╣рдЯрд╛рдЙрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп рдЪрд▓рд╛рдЙрдБрдЫ (gameId, rsaSign)

9. рд╣рдЯрд╛рдЙрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп рднрд┐рддреНрд░, рдирд┐рдХрд╛рд╕реА рд╣реБрдиреНрдЫ рд░реЗрдиреНрдбрдЗрдиреНрдЯ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реН (gameId, rsaSign)ред рдпреЛ рдЕрдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рд╣реЛ

# @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")
    }

рд░реЗрдгреНрдб - рд░ рддреНрдпрд╣рд╛рдБ рдЕрдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЫред

рдкрд╣рд┐рд▓реЗ, рд╕реНрдЯреНрд░рд┐рдЩ рд▓рд┐рдЗрдиреНрдЫ, рдЬреБрди RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рдЦреЗрд▓ рдЖрдИрдбреА рдирд┐рдЬреА рдХреБрдЮреНрдЬреА (rsaSign)ред рддреНрдпрд╕рдкрдЫрд┐ SHA-256 рд╕рдБрдЧ рд╣реНрдпрд╛рд╕ рдЧрд░рд┐рдпреЛ (sha256(rsaSign)).

рд╣рд╛рдореА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд░ рддреНрдпрд╕рдкрдЫрд┐рдХреЛ рд╣реНрдпрд╛рд╕рд┐рдЩрдХреЛ рдирддрд┐рдЬрд╛рдХреЛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред рддреНрдпрд╕рдХрд╛рд░рдг, рдЕрдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛рдХреЛ рдЙрддреНрдкрд╛рджрдирд▓рд╛рдИ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрди рдЕрд╕рдореНрднрд╡ рдЫред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд╛рдпрд░рд╛рдорд╛ рдирдореНрдмрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, 1 рджреЗрдЦрд┐ 100 рд╕рдореНрдо), toInt рд░реВрдкрд╛рдиреНрддрд░рдг рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ % 100 (рд╕рдорд╛рди рд╡рд┐рд░реБрджреНрдз).

рд▓реЗрдЦрдХреЛ рд╕реБрд░реБрдорд╛ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдХрд╛рд░реНрдп рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрдпреМрдВ rsaVerify(), рдЬрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдХ рд╡рд┐рд░реБрджреНрдз рдирд┐рдЬреА рдХреБрдЮреНрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ рд╡реИрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╣рд╛рдБ GenerateRandInt(gameId,rsaSign) рднрд╛рдЧ рдЫ:

rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА RSAPUBLIC рд░ rsaSign рд╕реНрдЯреНрд░рд┐рдЩ рдЗрдирдкреБрдЯрдорд╛ рдкрдард╛рдЗрдиреНрдЫред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡реИрдзрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рдБрдЪ рдЧрд░рд┐рдПрдХреЛ рдЫред рдЪреЗрдХ рд╕рдлрд▓ рднрдПрдорд╛ рдирдореНрдмрд░ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫред рдЕрдиреНрдпрдерд╛, рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдорд╛рдиреНрдп рдЫреИрди рднрдиреЗрд░ рдорд╛рдиреНрджрдЫ (рдЕрдорд╛рдиреНрдп RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░)ред

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

Blockchain рдорд╛ RSA рдЕрдирд┐рдпрдорд┐рдд

рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЦреЗрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рдкрд╛рд╕рд╛ рд░реЛрд▓рд░ред рдореИрд▓реЗ рдХреНрдпреВрдмрдХреЛ 2 рддрд░реНрдлрдмрд╛рдЯ 6 рдЫрдиреЛрдЯ рдЧрд░реЗрдВ, рд╢рд░реНрдд 14 рд▓рд╣рд░рд╣рд░реВ рд╣реЛред рдпрджрд┐ рд╕рд░реНрднрд░рд▓реЗ рддреЛрдХрд┐рдПрдХреЛ рд╕рдордп (2880 рдмреНрд▓рдХ) рднрд┐рддреНрд░ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рдорд╛ рдорд╛рдиреНрдп RSA рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрдард╛рдЙрдБрджреИрди рднрдиреЗ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ 34.44 WAVES рд▓рд┐рдиреЗрдЫред

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди