tx · EE1SfaBvxDo873ZXoaNSzJ3XFpNyTv9m3sB55pNBzoPz

3Mt71RiSbWYENDmeyndvwjoJZwUsXfUkR6b:  -0.01400000 Waves

2021.02.06 09:12 [1385953] smart account 3Mt71RiSbWYENDmeyndvwjoJZwUsXfUkR6b > SELF 0.00000000 Waves

{ "type": 13, "id": "EE1SfaBvxDo873ZXoaNSzJ3XFpNyTv9m3sB55pNBzoPz", "fee": 1400000, "feeAssetId": null, "timestamp": 1612591990499, "version": 2, "chainId": 84, "sender": "3Mt71RiSbWYENDmeyndvwjoJZwUsXfUkR6b", "senderPublicKey": "3BKFQLeo5ExZ5Y1pt9Ftzsno7aRwzD96zoYVHP3tcLgV", "proofs": [ "mkQtyLVMK8RLa4Fz6KZSwm3zJfXuLPsVSeQQjc9cf9gi7Zu4PVMq4RuNEy2kqCuEseWCPN2jLpWJzBoqkrhf3Qv" ], "script": "base64:AAIDAAAAAAAAAA8IARIGCgQBAQEIEgMKAQgAAAAJAAAAABFsb3R0ZXJ5cG9vbGFtb3VudAIAAAAQX2xvdHRlcnlfYW1vdW50XwAAAAAWbG90dGVyeXBvb2xwcm9iYWJpbGl0eQIAAAAOX2xvdHRlcnlfcHJvYl8AAAAAEGxvdHRlcnlwb29scHJpY2UCAAAAD19sb3R0ZXJ5X3ByaWNlXwAAAAANbG90dGVyeXByaWNlcwIAAAAQX2xvdHRlcnlfcHJpY2VzXwAAAAAMbGFzdEhhc2hSYW5kAgAAABFfaGFzaF9sYXN0X3JvdW5kXwEAAAAKcmFuZG9taXplcgAAAAEAAAADaW52BAAAAARyYW5kCQAAywAAAAIJAADLAAAAAgkAAMsAAAACCQAAywAAAAIIBQAAAANpbnYAAAANdHJhbnNhY3Rpb25JZAgFAAAAA2ludgAAAA9jYWxsZXJQdWJsaWNLZXkIBQAAAAlsYXN0QmxvY2sAAAATZ2VuZXJhdGlvblNpZ25hdHVyZQkAAZoAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAZoAAAABCAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAkAAfcAAAABBQAAAARyYW5kAQAAABFnZXRTaXplUHJpY2VBcnJheQAAAAAEAAAACnRlbXBQcmljZXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAADWxvdHRlcnlwcmljZXMEAAAACnRyaW1QcmljZXMJAAEvAAAAAgUAAAAKdGVtcFByaWNlcwkAAGUAAAACCQABMQAAAAEFAAAACnRlbXBQcmljZXMAAAAAAAAAAAEEAAAAC3ByaWNlc0FycmF5CQAEtQAAAAIFAAAACnRyaW1QcmljZXMCAAAAASwJAAGQAAAAAQUAAAALcHJpY2VzQXJyYXkBAAAADWdldFByaWNlQXJyYXkAAAAABAAAAAp0ZW1wUHJpY2VzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAA1sb3R0ZXJ5cHJpY2VzBAAAAAp0cmltUHJpY2VzCQABLwAAAAIFAAAACnRlbXBQcmljZXMJAABlAAAAAgkAATEAAAABBQAAAAp0ZW1wUHJpY2VzAAAAAAAAAAABCQAEtQAAAAIFAAAACnRyaW1QcmljZXMCAAAAASwBAAAAFmdldEFtb3VudENsYWltRm9yVG9rZW4AAAACAAAABXRva2VuAAAABnVwZGF0ZQQAAAANY3VycmVudEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAABFsb3R0ZXJ5cG9vbGFtb3VudAUAAAAFdG9rZW4DCQAAAAAAAAIFAAAADWN1cnJlbnRBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAPQW1vdW50IGV4Y2VlZGVkAwkAAAAAAAACBQAAAAZ1cGRhdGUGBAAAAAtyZXR1cm5WYWx1ZQkAAGUAAAACBQAAAA1jdXJyZW50QW1vdW50AAAAAAAAAAABBQAAAAtyZXR1cm5WYWx1ZQUAAAANY3VycmVudEFtb3VudAAAAAIAAAABaQEAAAARdXBkYXRlcHJvYmFiaWxpdHkAAAAEAAAAC3Byb2JhYmlsaXR5AAAABmFtb3VudAAAAAlwb29scHJpY2UAAAAFdG9rZW4EAAAACXRlbXBWYWx1ZQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAA1sb3R0ZXJ5cHJpY2VzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAQAAAAKY29udGFpbktleQkABLMAAAACBQAAAAl0ZW1wVmFsdWUFAAAABXRva2VuBAAAAApmaW5hbFZhbHVlBAAAAAckbWF0Y2gwBQAAAApjb250YWluS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CQABLAAAAAIJAAEsAAAAAgUAAAAJdGVtcFZhbHVlBQAAAAV0b2tlbgIAAAABLAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAF4BQAAAAckbWF0Y2gwBQAAAAl0ZW1wVmFsdWUJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IEAAAAEXVwZGF0ZUxvdHRlcnlQb29sCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAEWxvdHRlcnlwb29sYW1vdW50BQAAAAV0b2tlbgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAFmxvdHRlcnlwb29scHJvYmFiaWxpdHkFAAAABXRva2VuBQAAAAtwcm9iYWJpbGl0eQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAABBsb3R0ZXJ5cG9vbHByaWNlBQAAAAV0b2tlbgUAAAAJcG9vbHByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1sb3R0ZXJ5cHJpY2VzBQAAAApmaW5hbFZhbHVlBQAAAANuaWwJAQAAAAxTY3JpcHRSZXN1bHQAAAACBQAAABF1cGRhdGVMb3R0ZXJ5UG9vbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAADbmlsAAAAAWkBAAAACnN0YXJ0bG90dG8AAAABAAAABXRva2VuBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAC3N0b3JlZFRva2VuCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAEWxvdHRlcnlwb29sYW1vdW50BQAAAAV0b2tlbgQAAAAEcHJvYgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAABZsb3R0ZXJ5cG9vbHByb2JhYmlsaXR5BQAAAAV0b2tlbgQAAAAFcHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAQbG90dGVyeXBvb2xwcmljZQUAAAAFdG9rZW4EAAAACHJhbmRoYXNoCQEAAAAKcmFuZG9taXplcgAAAAEFAAAAAWkEAAAADXNpemVUZW1wUHJpY2UJAQAAABFnZXRTaXplUHJpY2VBcnJheQAAAAAEAAAACXByaWNlTGlzdAkBAAAADWdldFByaWNlQXJyYXkAAAAABAAAABFkYXRTaXplUHJpY2VFbnRyeQkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQIAAAAQX3dpbnByaWNlc19zaXplXwUAAAANc2l6ZVRlbXBQcmljZQQAAAAKcmFuZE51bWJlcgkAAGoAAAACCQAEsQAAAAEFAAAACHJhbmRoYXNoAAAAAAAAAAPoAwkAAGYAAAACBQAAAARwcm9iBQAAAApyYW5kTnVtYmVyBAAAAAt3aW5UcmFuc2ZlcgkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABXByaWNlBQAAAAR1bml0BQAAAANuaWwEAAAACW5ld0Ftb3VudAkBAAAAFmdldEFtb3VudENsYWltRm9yVG9rZW4AAAACBQAAAAV0b2tlbgYEAAAACXdyaXRlU2V0cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAApjdXJyZW50S2V5AgAAABBfd2lubmluZ190aWNrZXRfBQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAApjdXJyZW50S2V5AgAAABNfd2luaW5uaW5nX2FkZHJlc3NfBQAAAApjdXJyZW50S2V5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAEWxvdHRlcnlwb29sYW1vdW50BQAAAAV0b2tlbgUAAAAJbmV3QW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAxsYXN0SGFzaFJhbmQFAAAACnJhbmROdW1iZXIJAARMAAAAAgUAAAARZGF0U2l6ZVByaWNlRW50cnkFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIFAAAACXdyaXRlU2V0cwUAAAALd2luVHJhbnNmZXIEAAAACW5ld0Ftb3VudAkBAAAAFmdldEFtb3VudENsYWltRm9yVG9rZW4AAAACBQAAAAV0b2tlbgYEAAAACXdyaXRlU2V0cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAApjdXJyZW50S2V5AgAAABBfd2lubmluZ190aWNrZXRfAgAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQIAAAATX3dpbmlubmluZ19hZGRyZXNzXwIAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAEWxvdHRlcnlwb29sYW1vdW50BQAAAAV0b2tlbgUAAAAJbmV3QW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAxsYXN0SGFzaFJhbmQFAAAACnJhbmROdW1iZXIJAARMAAAAAgUAAAARZGF0U2l6ZVByaWNlRW50cnkFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIFAAAACXdyaXRlU2V0cwkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkAyNKA", "height": 1385953, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: jD43ZpiPDjQ9vnd62cd5vMUJpxJc4MeCRzxCUg3yt5j Next: 6Q9GeDjrq4x38He3oYWa2D9NNR67aMcwHZzx1PRFxse5 Diff:
OldNewDifferences
88 let lotterypoolprice = "_lottery_price_"
99
1010 let lotteryprices = "_lottery_prices_"
11+
12+let lastHashRand = "_hash_last_round_"
1113
1214 func randomizer (inv) = {
1315 let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
8183 then {
8284 let winTransfer = TransferSet([ScriptTransfer(i.caller, price, unit)])
8385 let newAmount = getAmountClaimForToken(token, true)
84- let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), price), DataEntry((currentKey + "_wininning_address_"), currentKey), DataEntry((lotterypoolamount + token), newAmount), datSizePriceEntry])
86+ let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), price), DataEntry((currentKey + "_wininning_address_"), currentKey), DataEntry((lotterypoolamount + token), newAmount), DataEntry(lastHashRand, randNumber), datSizePriceEntry])
8587 ScriptResult(writeSets, winTransfer)
8688 }
8789 else {
8890 let newAmount = getAmountClaimForToken(token, true)
89- let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), ""), DataEntry((currentKey + "_wininning_address_"), ""), DataEntry((lotterypoolamount + token), newAmount), datSizePriceEntry])
91+ let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), ""), DataEntry((currentKey + "_wininning_address_"), ""), DataEntry((lotterypoolamount + token), newAmount), DataEntry(lastHashRand, randNumber), datSizePriceEntry])
9092 ScriptResult(writeSets, TransferSet(nil))
9193 }
9294 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let lotterypoolamount = "_lottery_amount_"
55
66 let lotterypoolprobability = "_lottery_prob_"
77
88 let lotterypoolprice = "_lottery_price_"
99
1010 let lotteryprices = "_lottery_prices_"
11+
12+let lastHashRand = "_hash_last_round_"
1113
1214 func randomizer (inv) = {
1315 let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
1416 sha256(rand)
1517 }
1618
1719
1820 func getSizePriceArray () = {
1921 let tempPrices = getStringValue(this, lotteryprices)
2022 let trimPrices = take(tempPrices, (size(tempPrices) - 1))
2123 let pricesArray = split(trimPrices, ",")
2224 size(pricesArray)
2325 }
2426
2527
2628 func getPriceArray () = {
2729 let tempPrices = getStringValue(this, lotteryprices)
2830 let trimPrices = take(tempPrices, (size(tempPrices) - 1))
2931 split(trimPrices, ",")
3032 }
3133
3234
3335 func getAmountClaimForToken (token,update) = {
3436 let currentAmount = getIntegerValue(this, (lotterypoolamount + token))
3537 if ((currentAmount == 0))
3638 then throw("Amount exceeded")
3739 else if ((update == true))
3840 then {
3941 let returnValue = (currentAmount - 1)
4042 returnValue
4143 }
4244 else currentAmount
4345 }
4446
4547
4648 @Callable(i)
4749 func updateprobability (probability,amount,poolprice,token) = {
4850 let tempValue = match getString(this, lotteryprices) {
4951 case a: String =>
5052 a
5153 case _ =>
5254 ""
5355 }
5456 let containKey = indexOf(tempValue, token)
5557 let finalValue = match containKey {
5658 case _: Unit =>
5759 ((tempValue + token) + ",")
5860 case x: Int =>
5961 tempValue
6062 case _ =>
6163 throw("Match error")
6264 }
6365 let updateLotteryPool = WriteSet([DataEntry((lotterypoolamount + token), amount), DataEntry((lotterypoolprobability + token), probability), DataEntry((lotterypoolprice + token), poolprice), DataEntry(lotteryprices, finalValue)])
6466 ScriptResult(updateLotteryPool, TransferSet(nil))
6567 }
6668
6769
6870
6971 @Callable(i)
7072 func startlotto (token) = {
7173 let currentKey = toBase58String(i.caller.bytes)
7274 let storedToken = getIntegerValue(this, (lotterypoolamount + token))
7375 let prob = getIntegerValue(this, (lotterypoolprobability + token))
7476 let price = getIntegerValue(this, (lotterypoolprice + token))
7577 let randhash = randomizer(i)
7678 let sizeTempPrice = getSizePriceArray()
7779 let priceList = getPriceArray()
7880 let datSizePriceEntry = DataEntry((currentKey + "_winprices_size_"), sizeTempPrice)
7981 let randNumber = (toInt(randhash) % 1000)
8082 if ((prob > randNumber))
8183 then {
8284 let winTransfer = TransferSet([ScriptTransfer(i.caller, price, unit)])
8385 let newAmount = getAmountClaimForToken(token, true)
84- let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), price), DataEntry((currentKey + "_wininning_address_"), currentKey), DataEntry((lotterypoolamount + token), newAmount), datSizePriceEntry])
86+ let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), price), DataEntry((currentKey + "_wininning_address_"), currentKey), DataEntry((lotterypoolamount + token), newAmount), DataEntry(lastHashRand, randNumber), datSizePriceEntry])
8587 ScriptResult(writeSets, winTransfer)
8688 }
8789 else {
8890 let newAmount = getAmountClaimForToken(token, true)
89- let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), ""), DataEntry((currentKey + "_wininning_address_"), ""), DataEntry((lotterypoolamount + token), newAmount), datSizePriceEntry])
91+ let writeSets = WriteSet([DataEntry((currentKey + "_winning_ticket_"), ""), DataEntry((currentKey + "_wininning_address_"), ""), DataEntry((lotterypoolamount + token), newAmount), DataEntry(lastHashRand, randNumber), datSizePriceEntry])
9092 ScriptResult(writeSets, TransferSet(nil))
9193 }
9294 }
9395
9496
9597 @Verifier(tx)
9698 func verify () = match tx {
9799 case _: DataTransaction =>
98100 true
99101 case _: SetScriptTransaction =>
100102 true
101103 case _ =>
102104 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
103105 }
104106

github/deemru/w8io/169f3d6 
32.84 ms