RSA random ntawm blockchain

Muaj ib qho teeb meem - nws yog ib qho nyuaj rau tsim ib tug random tooj nyob rau hauv ib tug decentralized network. Yuav luag tag nrho cov blockchains twb tau ntsib qhov no. Tseeb, nyob rau hauv tes hauj lwm uas tsis muaj kev ntseeg siab ntawm cov neeg siv, tsim ib tug undeniable random tooj daws teeb meem ntau.

Hauv tsab xov xwm no peb qhia koj seb peb tau tswj hwm li cas los daws qhov teeb meem siv kev ua si ua piv txwv. Thawj ntawm lawv yog Waves Xmas Tsob Ntoo. Rau txoj kev loj hlob, peb xav tau ib tug random tooj generator.

RSA random ntawm blockchain

Thaum pib, peb tau npaj los tsim ib tus lej raws li cov ntaub ntawv los ntawm blockchain. Txawm li cas los xij, tom qab ntawd nws tau pom meej: tus lej tuaj yeem hloov kho, uas txhais tau tias kev daws tsis haum.

Peb tuaj nrog ib qho kev daws teeb meem: siv qhov kev cog lus-expand scheme. Tus neeg rau zaub mov twv tus lej ntawm 1 txog 5, ntxiv ntsev rau nws, thiab tom qab ntawd hashed qhov tshwm sim siv Keccak ua haujlwm. Tus neeg rau zaub mov xa daim ntawv cog lus ntse nrog tus lej uas twb tau khaws tseg ua ntej. Nws hloov tawm tias qhov kev ua si boils mus rau tus neeg siv twv tus lej zais los ntawm hash.

Tus neeg uas ua ntawv tso tus thawj koom ruam, thiab tus neeg rau zaub mov xa tus lej zais thiab "ntsev" rau daim ntawv cog lus ntse. Hauv cov ntsiab lus yooj yim, nws tau nthuav tawm daim npav. Tom qab ntawd, tus neeg rau zaub mov tau tshuaj xyuas cov lej thiab txiav txim siab seb tus neeg siv yeej lossis poob.

Yog tias tus neeg rau zaub mov tsis xa tus lej lossis "ntsev" rau kev txheeb xyuas, tus neeg siv yeej. Nyob rau hauv rooj plaub no, rau txhua qhov kev ua si nws yog ib qho tsim nyog yuav tsum xa daim ntawv cog lus ntse ua ntej thiab suav nrog qhov muaj peev xwm yeej hauv nws. Nws tau dhau los ua qhov tsis yooj yim, siv sijhawm thiab kim. Thaum ntawd tsis muaj lwm txoj kev daws teeb meem.

Tsis ntev los no, pab pawg Tradisys tau thov ntxiv qhov ua haujlwm rau Waves raws tu qauv rsaVerify(). Nws kuaj xyuas qhov siv tau ntawm RSA kos npe raws li pej xeem thiab tus yuam sij ntiag tug. Yog li ntawd, lub feature tau ntxiv.

Peb tau tsim peb qhov kev ua si: Dice Roller, Npog Ntxeev ΠΈ Caij Nyoog. Txhua tus siv random tooj technology. Cia peb kawm seb nws ua haujlwm li cas.

RSA random ntawm blockchain

Cia peb saib ntawm kev tsim tus lej random siv Ride on Waves ua piv txwv. Daim ntawv cog lus ntse tuaj yeem pom no.

Mus rau hauv lub tab Tsab ntawv thiab xaiv Decompiled. Koj yuav pom cov ntawv cog lus ntse (aka tsab ntawv).

RSA random ntawm blockchain

Daim ntawv cog lus ntse code muaj cov txheej txheem ua haujlwm. Cov cim ua @Callable tuaj yeem pib siv Invocation muas. Peb txaus siab rau ob txoj haujlwm: thawj koom ruam ΠΈ rho:

  • func thawj koom ruam (playerChoice)
  • func thim (gameId, rsaSign)

1. Tus neeg siv xaiv qhov ntev ntawm ntu thiab qhov loj ntawm thawj koom ruam.

RSA random ntawm blockchain

2. Tus neeg siv khoom tsim kev ua thawj koom ruam. Rau daim duab saum toj no nws yuav yog bet ("50").

3. Tus neeg siv khoom xa daim ntawv thov mus rau qhov chaw nyob daim ntawv cog lus ntse (tshaj tawm InvocationTx). Qhov kev sib pauv muaj qhov ua haujlwm thawj koom ruam raws li kev hu xov tooj. Qhov no txhais tau hais tias Invocation pauv ua rau kev ua tiav ntawm qhov kev ua thawj koom ruam (xaiv: Txoj hlua) ntawm daim ntawv cog lus ntse.

RSA random ntawm blockchain

4. Xav txog qhov ua haujlwm thawj koom ruam:

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

Lub luag haujlwm sau qhov kev ua si tshiab rau lub xeev ntawm daim ntawv cog lus ntse. Xws li:

  • Cov cim cim tshwj xeeb rau kev ua si tshiab (id game)
  • Game state = SUBMITTED
  • Player qhov kev xaiv (seem ntev 50)
  • Public key
  • Muaj peev xwm yeej tau (nyob ntawm tus neeg ua si thawj koom ruam)

RSA random ntawm blockchain

Qhov no yog dab tsi cov ntaub ntawv sau tseg hauv blockchain zoo li (tus nqi tseem ceeb):

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

"Key" (tus yuam sij) - game id kev ua si tshiab. Cov ntaub ntawv ntxiv yog muaj nyob rau hauv kab ntawm "tus nqi" teb. Cov ntawv no tau muab khaws cia rau hauv tab Cov ntaub ntawv ntse daim ntawv cog lus:

RSA random ntawm blockchain

RSA random ntawm blockchain

5. Tus neeg rau zaub mov "saib" ntawm daim ntawv cog lus ntse thiab pom cov kev xa tawm (kev ua si tshiab) siv blockchain Api. Game id ntawm qhov kev ua si tshiab twb tau sau tseg hauv blockchain, uas txhais tau tias nws tsis tuaj yeem hloov pauv lossis cuam tshuam.

6. Tus neeg rau zaub mov tsim tawm muaj nuj nqi (gameId, rsaSign). Piv txwv li, zoo li no:

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

7. Tus neeg rau zaub mov xa ib qho Invocation pauv mus rau daim ntawv cog lus ntse (tshaj tawm InvocationTx). Kev lag luam muaj kev hu mus rau qhov tsim tawm muaj nuj nqi (gameId, rsaSign):

RSA random ntawm blockchain

Cov haujlwm muaj game id kev ua si tshiab thiab qhov tshwm sim ntawm RSA kos npe ntawm tus cim tshwj xeeb nrog tus yuam sij ntiag tug. Cov txiaj ntsig kos npe tsis hloov pauv.

Qhov no txhais li cas?

Peb coj tus nqi tib yam (kev ua si id) thiab siv txoj kev kos npe RSA rau nws. Peb yeej yuav tau txais cov txiaj ntsig zoo ib yam. Qhov no yog li cas RSA algorithm ua haujlwm. Tus lej kawg tsis tuaj yeem siv tau, vim qhov kev ua si id thiab qhov tshwm sim ntawm kev thov RSA tsis paub. Kev xaiv tus lej kuj tsis muaj txiaj ntsig.

8. Blockchain lees txais kev hloov pauv. Nws khiav cov haujlwm rho tawm (gameId, rsaSign)

9. Nyob rau hauv qhov kev tshem tawm muaj nuj nqi, tshem tawm tshwm sim GenerateRandInt muaj nuj nqi (gameId, rsaSign). Qhov no yog random tooj generator

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

rand - thiab muaj tus lej random.

Ua ntej, txoj hlua raug coj mus, uas yog qhov tshwm sim ntawm RSA kos npe game id tus yuam sij ntiag tug (rsaSign). Tom qab ntawd hash nrog SHA-256 (sha256 (rsaSign)).

Peb tsis tuaj yeem kwv yees qhov tshwm sim ntawm qhov kos npe thiab tom qab hashing. Yog li ntawd, nws yog tsis yooj yim sua los cuam tshuam lub tiam ntawm ib tug random tooj. Txhawm rau kom tau txais tus lej hauv qee qhov ntau (piv txwv li, los ntawm 1 txog 100), siv qhov hloov pauv mus rau Int thiab % 100 (zoo ib yam li tiv thaiv).

Thaum pib ntawm tsab xov xwm peb tau hais txog lub luag haujlwm rsaVerify(), uas tso cai rau koj los txheeb xyuas qhov siv tau ntawm RSA kos npe nrog tus yuam sij ntiag tug tawm tsam pej xeem. Nov yog qhov GenerateRandInt(gameId,rsaSign) ib feem:

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

Tus yuam sij rau pej xeem RSAPUBLIC thiab rsaSign txoj hlua raug xa mus rau cov tswv yim. Daim ntawv kos npe raug kuaj xyuas kom siv tau. Tus lej raug tsim yog tias daim tshev ua tiav. Txwv tsis pub, lub kaw lus txiav txim siab tias kos npe tsis raug (Invalid RSA kos npe).

Tus neeg rau zaub mov yuav tsum kos npe rau tus lej game nrog tus yuam sij ntiag tug thiab xa Rsa kos npe siv tau hauv 2880 blocks. Lub parameter yog configured thaum deploying daim ntawv cog lus ntse. Yog tias tsis muaj dab tsi tshwm sim nyob rau hauv lub sijhawm faib, tus neeg siv yeej. Hauv qhov no, qhov khoom plig yuav tsum raug xa mus rau koj qhov chaw nyob koj tus kheej. Nws hloov tawm hais tias nws yog "tsis muaj txiaj ntsig rau cov neeg rau zaub mov kom dag", vim qhov no ua rau poob. Hauv qab no yog ib qho piv txwv.

RSA random ntawm blockchain

Tus neeg siv ua si Dice Roller. Kuv xaiv 2 ntawm 6 sab ntawm lub voos xwmfab, thawj koom ruam yog 14 WAVES. Yog tias tus neeg rau zaub mov tsis xa RSA kos npe siv tau rau daim ntawv cog lus ntse hauv lub sijhawm teev tseg (2880 blocks), tus neeg siv yuav siv 34.44 WAVES.

Txhawm rau tsim cov lej hauv kev ua si, peb siv lub oracle - sab nraud, tsis yog blockchain system. Tus neeg rau zaub mov ua RSA kos npe ntawm tus lej game. Daim ntawv cog lus ntse xyuas qhov siv tau ntawm kos npe thiab txiav txim siab tus yeej. Yog hais tias tus neeg rau zaub mov tsis xa dab tsi, ces tus neeg siv yeej yeej.

Qhov no yog ib tug ncaj ncees tiam txoj kev, vim hais tias manipulation yog technically tsis yooj yim sua. Txhua qhov kev ua si Tradisys ua haujlwm raws li piav qhia algorithm. Qhov no yog li cas blockchain games ua haujlwm. Txhua yam yog pob tshab thiab muaj tseeb. Tsis muaj analogues ntawm xws li ib tug system nyob rau hauv lwm yam blockchain. Qhov no yog kev ncaj ncees random.

Tau qhov twg los: www.hab.com

Ntxiv ib saib