tx · DRjeegUvhhr5Yr38iKtoEf3NmwMJxRD2WyuJYUkHFCDJ

3Mt71RiSbWYENDmeyndvwjoJZwUsXfUkR6b:  -0.01400000 Waves

2021.02.08 16:34 [1389293] smart account 3Mt71RiSbWYENDmeyndvwjoJZwUsXfUkR6b > SELF 0.00000000 Waves

{ "type": 13, "id": "DRjeegUvhhr5Yr38iKtoEf3NmwMJxRD2WyuJYUkHFCDJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1612791376148, "version": 2, "chainId": 84, "sender": "3Mt71RiSbWYENDmeyndvwjoJZwUsXfUkR6b", "senderPublicKey": "3BKFQLeo5ExZ5Y1pt9Ftzsno7aRwzD96zoYVHP3tcLgV", "proofs": [ "5NtaC1e6J7xkPyqkTBx6b5133WXRjYc6JL73xErachJTUi32PRMS9apbH5ByNJVV4PTGCcui4MVMUnsZcfG7YL6Z" ], "script": "base64:AAIDAAAAAAAAAAwIARIGCgQBAQEBEgAAAAAPAAAAAA1sb3R0ZXJ5YW1vdW50AgAAAAdfYW1vdW50AAAAABJsb3R0ZXJ5cHJvYmFiaWxpdHkCAAAADF9wcm9iYWJpbGl0eQAAAAAZbG90dGVyeXByb2JhYmlsaXR5ZGVjaW1hbAIAAAAUX3Byb2JhYmlsaXR5X2RlY2ltYWwAAAAADGxvdHRlcnlQcmljZQIAAAAGX3ByaWNlAAAAAA1sb3R0ZXJ5UHJpY2VzAgAAAA9fbG90dGVyeV9wcmljZXMAAAAADmxvdHRlcnlBc3NldElkAgAAABFfbG90dGVyeV9hc3NldF9pZAAAAAANY291bnRPZlByaWNlcwIAAAANX2NvdW50X3ByaWNlcwAAAAAUbGFzdEhhc2hSYW5kb21OdW1iZXICAAAAFWxhc3Rfc3Bpbl9yYW5kb21faGFzaAAAAAATbGFzdFRva2VuUmFuZG9tSGFzaAIAAAAWbGFzdF90b2tlbl9yYW5kb21faGFzaAEAAAAKcmFuZG9taXplcgAAAAEAAAADaW52BAAAAAhsYXN0UGxheQQAAAAHJG1hdGNoMAkABBwAAAACBQAAAAR0aGlzBQAAABRsYXN0SGFzaFJhbmRvbU51bWJlcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAEAAAAMV2F2ZXNMb3R0b1YyCQAAAgAAAAECAAAAC01hdGNoIGVycm9yBAAAAARyYW5kCQAAywAAAAIJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgUAAAAIbGFzdFBsYXkIBQAAAANpbnYAAAANdHJhbnNhY3Rpb25JZAgFAAAAA2ludgAAAA9jYWxsZXJQdWJsaWNLZXkIBQAAAAlsYXN0QmxvY2sAAAATZ2VuZXJhdGlvblNpZ25hdHVyZQkAAZoAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAZoAAAABCAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAkAAfcAAAABBQAAAARyYW5kAQAAABNnZW5lcmF0b3JSYW5kb21IYXNoAAAAAQAAAANpbnYEAAAAEGxhc3RIYXNoRm9yVG9rZW4EAAAAByRtYXRjaDAJAAQcAAAAAgUAAAAEdGhpcwUAAAATbGFzdFRva2VuUmFuZG9tSGFzaAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAEAAAASV2F2ZXNMb345TGHY76R0b1YyCQAAAgAAAAECAAAAC01hdGNoIGVycm9yBAAAAARyYW5kCQAAywAAAAIJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgUAAAAQbGFzdEhhc2hGb3JUb2tlbggFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkCAUAAAADaW52AAAAD2NhbGxlclB1YmxpY0tleQgFAAAACWxhc3RCbG9jawAAABNnZW5lcmF0aW9uU2lnbmF0dXJlCQABmgAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQABmgAAAAEIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0CQAB9wAAAAEFAAAABHJhbmQBAAAAEWdldFNpemVQcmljZUFycmF5AAAAAAQAAAAKdGVtcFByaWNlcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAANbG90dGVyeVByaWNlcwQAAAAKdHJpbVByaWNlcwkAAS8AAAACBQAAAAp0ZW1wUHJpY2VzCQAAZQAAAAIJAAExAAAAAQUAAAAKdGVtcFByaWNlcwAAAAAAAAAAAQQAAAALcHJpY2VzQXJyYXkJAAS1AAAAAgUAAAAKdHJpbVByaWNlcwIAAAABLAQAAAAIbGlzdFNpemUJAAGQAAAAAQUAAAALcHJpY2VzQXJyYXkFAAAACGxpc3RTaXplAQAAAA1nZXRQcmljZUFycmF5AAAAAAQAAAAKdGVtcFByaWNlcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAANbG90dGVyeVByaWNlcwQAAAAKdHJpbVByaWNlcwkAAS8AAAACBQAAAAp0ZW1wUHJpY2VzCQAAZQAAAAIJAAExAAAAAQUAAAAKdGVtcFByaWNlcwAAAAAAAAAAAQQAAAAIbmV3QXJyYXkJAAS1AAAAAgUAAAAKdHJpbVByaWNlcwIAAAABLAUAAAAIbmV3QXJyYXkBAAAAFmdldEFtb3VudENsYWltRm9yVG9rZW4AAAACAAAABXRva2VuAAAABnVwZGF0ZQQAAAANY3VycmVudEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAV0b2tlbgUAAAANbG90dGVyeWFtb3VudAMJAAAAAAAAAgUAAAANY3VycmVudEFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAAA9BbW91bnQgZXhjZWVkZWQDCQAAAAAAAAIFAAAABnVwZGF0ZQYDCQAAAAAAAAIFAAAADWN1cnJlbnRBbW91bnQA//////////8FAAAADWN1cnJlbnRBbW91bnQEAAAAC3JldHVyblZhbHVlCQAAZQAAAAIFAAAADWN1cnJlbnRBbW91bnQAAAAAAAAAAAEFAAAAC3JldHVyblZhbHVlBQAAAA1jdXJyZW50QW1vdW50AQAAAA1wcm9jZWRMb3R0ZXJ5AAAAAgAAAAtyYW5kb21WYWx1ZQAAAAV0b2tlbgQAAAAKdG9rZW5QcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAV0b2tlbgUAAAAMbG90dGVyeVByaWNlBAAAABB0b2tlblByb2JhYmlsaXR5CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABXRva2VuBQAAABJsb3R0ZXJ5cHJvYmFiaWxpdHkEAAAADHRva2VuQXNzZXRJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAV0b2tlbgUAAAAObG90dGVyeUFzc2V0SWQEAAAAF3Rva2VuUHJvYmFiaWxpdHlEZWNpbWFsCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABXRva2VuBQAAABlsb3R0ZXJ5cHJvYmFiaWxpdHlkZWNpbWFsBAAAABBwcm9iYWJpbGl0eVZhbHVlCQAAaAAAAAIFAAAAF3Rva2VuUHJvYmFiaWxpdHlEZWNpbWFsAAAAAAAAAAPoBAAAAARoYXNoCQAAagAAAAIFAAAAC3JhbmRvbVZhbHVlBQAAABBwcm9iYWJpbGl0eVZhbHVlAwkAAGYAAAACBQAAABBwcm9iYWJpbGl0eVZhbHVlBQAAAARoYXNoAAAAAAAAAAABAAAAAAAAAAABAAAAAgAAAAFpAQAAABF1cGRhdGVwcm9iYWJpbGl0eQAAAAQAAAALcHJvYmFiaWxpdHkAAAAGYW1vdW50AAAACXBvb2xwcmljZQAAAAtwcm9iRGVjaW1hbAQAAAAFdG9rZW4JAAJaAAAAAQkBAAAAE2dlbmVyYXRvclJhbmRvbUhhc2gAAAABBQAAAAFpBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAE3RvdGFsUmVxdWlyZWRBbW91bnQJAABoAAAAAgUAAAAGYW1vdW50BQAAAAlwb29scHJpY2UDCQAAZgAAAAIFAAAAE3RvdGFsUmVxdWlyZWRBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAkAAAIAAAABAgAAABpQYXltZW50IGlzIG5vdCBlcXVhbCBwcmljZQQAAAAJdGVtcFZhbHVlBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAADWxvdHRlcnlQcmljZXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAABAAAAApjb250YWluS2V5CQAEswAAAAIFAAAACXRlbXBWYWx1ZQUAAAAFdG9rZW4EAAAAEnN0b3JlZFRva2Vuc1ZhbHVlcwQAAAAHJG1hdGNoMAUAAAAKY29udGFpbktleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAkAASwAAAACCQABLAAAAAIFAAAACXRlbXBWYWx1ZQUAAAAFdG9rZW4CAAAAASwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMAkAAAIAAAABAgAAABNUb2tlbiBpcyBkdXBsaWNhdGVkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yBAAAAAtjb3VudFRva2VucwkBAAAAEWdldFNpemVQcmljZUFycmF5AAAAAAQAAAARdXBkYXRlTG90dGVyeVBvb2wJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAADWxvdHRlcnlhbW91bnQFAAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAASbG90dGVyeXByb2JhYmlsaXR5BQAAAAtwcm9iYWJpbGl0eQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAAMbG90dGVyeVByaWNlBQAAAAlwb29scHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAADWxvdHRlcnlQcmljZXMFAAAAEnN0b3JlZFRva2Vuc1ZhbHVlcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAANY291bnRPZlByaWNlcwUAAAALY291bnRUb2tlbnMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAAGWxvdHRlcnlwcm9iYWJpbGl0eWRlY2ltYWwFAAAAC3Byb2JEZWNpbWFsCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABXRva2VuBQAAABNsYXN0VG9rZW5SYW5kb21IYXNoBQAAAAV0b2tlbgUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAARdXBkYXRlTG90dGVyeVBvb2wJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAAA25pbAAAAAFpAQAAAApzdGFydGxvdHRvAAAAAAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAhyYW5kaGFzaAkBAAAACnJhbmRvbWl6ZXIAAAABBQAAAAFpBAAAAA1zaXplVGVtcFByaWNlCQEAAAARZ2V0U2l6ZVByaWNlQXJyYXkAAAAABAAAAAlwcmljZUxpc3QJAQAAAA1nZXRQcmljZUFycmF5AAAAAAQAAAAMZGVmYXVsdFZhbHVlAAAAAAAAAAPoBAAAAApyYW5kTnVtYmVyCQAEsQAAAAEFAAAACHJhbmRoYXNoBAAAAAx3aW5uaW5nVG9rZW4EAAAADSRsaXN0NDgwMTQ4NDYFAAAACXByaWNlTGlzdAQAAAANJHNpemU0ODAxNDg0NgkAAZAAAAABBQAAAA0kbGlzdDQ4MDE0ODQ2BAAAAA0kYWNjMDQ4MDE0ODQ2BQAAAApyYW5kTnVtYmVyAwkAAAAAAAACBQAAAA0kc2l6ZTQ4MDE0ODQ2AAAAAAAAAAAABQAAAA0kYWNjMDQ4MDE0ODQ2BAAAAA0kYWNjMTQ4MDE0ODQ2CQEAAAANcHJvY2VkTG90dGVyeQAAAAIFAAAADSRhY2MwNDgwMTQ4NDYJAAGRAAAAAgUAAAANJGxpc3Q0ODAxNDg0NgAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU0ODAxNDg0NgAAAAAAAAAAAQUAAAANJGFjYzE0ODAxNDg0NgQAAAANJGFjYzI0ODAxNDg0NgkBAAAADXByb2NlZExvdHRlcnkAAAACBQAAAA0kYWNjMTQ4MDE0ODQ2CQABkQAAAAIFAAAADSRsaXN0NDgwMTQ4NDYAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplNDgwMTQ4NDYAAAAAAAAAAAIFAAAADSRhY2MyNDgwMTQ4NDYEAAAADSRhY2MzNDgwMTQ4NDYJAQAAAA1wcm9jZWRMb3R0ZXJ5AAAAAgUAAAANJGFjYzI0ODAxNDg0NgkAAZEAAAACBQAAAA0kbGlzdDQ4MDE0ODQ2AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTQ4MDE0ODQ2AAAAAAAAAAADBQAAAA0kYWNjMzQ4MDE0ODQ2BAAAAA0kYWNjNDQ4MDE0ODQ2CQEAAAANcHJvY2VkTG90dGVyeQAAAAIFAAAADSRhY2MzNDgwMTQ4NDYJAAGRAAAAAgUAAAANJGxpc3Q0ODAxNDg0NgAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU0ODAxNDg0NgAAAAAAAAAABAUAAAANJGFjYzQ0ODAxNDg0NgQAAAANJGFjYzU0ODAxNDg0NgkBAAAADXByb2NlZExvdHRlcnkAAAACBQAAAA0kYWNjNDQ4MDE0ODQ2CQABkQAAAAIFAAAADSRsaXN0NDgwMTQ4NDYAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplNDgwMTQ4NDYAAAAAAAAAAAUFAAAADSRhY2M1NDgwMTQ4NDYEAAAADSRhY2M2NDgwMTQ4NDYJAQAAAA1wcm9jZWRMb3R0ZXJ5AAAAAgUAAAANJGFjYzU0ODAxNDg0NgkAAZEAAAACBQAAAA0kbGlzdDQ4MDE0ODQ2AAAAAAAAAAAFCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNQQAAAAJd3JpdGVTZXRzCQEAAAAIV3JpdGVTZXQAAAABBQAAAANuaWwJAQAAAAxTY3JpcHRSZXN1bHQAAAACBQAAAAl3cml0ZVNldHMJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24GAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5yGGQdw==", "height": 1389293, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2sqahnFFFVH3pA87oLuxyvgnGjV4w3tgTQKwci8k2FWa Next: J5vauBFarKrNb9bGH138BkaH3n3GJYc2cvDqMFVsMJL4 Diff:
OldNewDifferences
55
66 let lotteryprobability = "_probability"
77
8-let lotteryprobabilitydecimal = "_probability_decimal_"
8+let lotteryprobabilitydecimal = "_probability_decimal"
99
1010 let lotteryPrice = "_price"
1111
12-let lotteryPrices = "_lottery_prices_"
12+let lotteryPrices = "_lottery_prices"
13+
14+let lotteryAssetId = "_lottery_asset_id"
1315
1416 let countOfPrices = "_count_prices"
1517
1618 let lastHashRandomNumber = "last_spin_random_hash"
1719
18-let lastTokenRandomHash = "_last_token_random_hash"
20+let lastTokenRandomHash = "last_token_random_hash"
1921
2022 func randomizer (inv) = {
2123 let lastPlay = match getBinary(this, lastHashRandomNumber) {
7779 }
7880
7981
80-func procedLottery (temp,val) = if ((temp == 0))
81- then (temp + 1)
82- else (temp + 1)
82+func procedLottery (randomValue,token) = {
83+ let tokenPrice = getIntegerValue(this, (token + lotteryPrice))
84+ let tokenProbability = getIntegerValue(this, (token + lotteryprobability))
85+ let tokenAssetId = getStringValue(this, (token + lotteryAssetId))
86+ let tokenProbabilityDecimal = getIntegerValue(this, (token + lotteryprobabilitydecimal))
87+ let probabilityValue = (tokenProbabilityDecimal * 1000)
88+ let hash = (randomValue % probabilityValue)
89+ if ((probabilityValue > hash))
90+ then 1
91+ else 1
92+ }
8393
8494
8595 @Callable(i)
120130 let sizeTempPrice = getSizePriceArray()
121131 let priceList = getPriceArray()
122132 let defaultValue = 1000
123- let randNumber = (toInt(randhash) % (1 * 1000))
124- let listF = ["priceList", "fsdfd"]
125- let tempPrices = getStringValue(this, lotteryPrices)
126- let trimPrices = take(tempPrices, (size(tempPrices) - 1))
127- let pricesArray = split(trimPrices, ",")
128- let listSize = size(pricesArray)
129- let amountS = {
130- let $list45854621 = priceList
131- let $size45854621 = size($list45854621)
132- let $acc045854621 = 0
133- if (($size45854621 == 0))
134- then $acc045854621
133+ let randNumber = toInt(randhash)
134+ let winningToken = {
135+ let $list48014846 = priceList
136+ let $size48014846 = size($list48014846)
137+ let $acc048014846 = randNumber
138+ if (($size48014846 == 0))
139+ then $acc048014846
135140 else {
136- let $acc145854621 = procedLottery($acc045854621, $list45854621[0])
137- if (($size45854621 == 1))
138- then $acc145854621
141+ let $acc148014846 = procedLottery($acc048014846, $list48014846[0])
142+ if (($size48014846 == 1))
143+ then $acc148014846
139144 else {
140- let $acc245854621 = procedLottery($acc145854621, $list45854621[1])
141- if (($size45854621 == 2))
142- then $acc245854621
145+ let $acc248014846 = procedLottery($acc148014846, $list48014846[1])
146+ if (($size48014846 == 2))
147+ then $acc248014846
143148 else {
144- let $acc345854621 = procedLottery($acc245854621, $list45854621[2])
145- if (($size45854621 == 3))
146- then $acc345854621
149+ let $acc348014846 = procedLottery($acc248014846, $list48014846[2])
150+ if (($size48014846 == 3))
151+ then $acc348014846
147152 else {
148- let $acc445854621 = procedLottery($acc345854621, $list45854621[3])
149- if (($size45854621 == 4))
150- then $acc445854621
153+ let $acc448014846 = procedLottery($acc348014846, $list48014846[3])
154+ if (($size48014846 == 4))
155+ then $acc448014846
151156 else {
152- let $acc545854621 = procedLottery($acc445854621, $list45854621[4])
153- if (($size45854621 == 5))
154- then $acc545854621
157+ let $acc548014846 = procedLottery($acc448014846, $list48014846[4])
158+ if (($size48014846 == 5))
159+ then $acc548014846
155160 else {
156- let $acc645854621 = procedLottery($acc545854621, $list45854621[5])
161+ let $acc648014846 = procedLottery($acc548014846, $list48014846[5])
157162 throw("List size exceed 5")
158163 }
159164 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let lotteryamount = "_amount"
55
66 let lotteryprobability = "_probability"
77
8-let lotteryprobabilitydecimal = "_probability_decimal_"
8+let lotteryprobabilitydecimal = "_probability_decimal"
99
1010 let lotteryPrice = "_price"
1111
12-let lotteryPrices = "_lottery_prices_"
12+let lotteryPrices = "_lottery_prices"
13+
14+let lotteryAssetId = "_lottery_asset_id"
1315
1416 let countOfPrices = "_count_prices"
1517
1618 let lastHashRandomNumber = "last_spin_random_hash"
1719
18-let lastTokenRandomHash = "_last_token_random_hash"
20+let lastTokenRandomHash = "last_token_random_hash"
1921
2022 func randomizer (inv) = {
2123 let lastPlay = match getBinary(this, lastHashRandomNumber) {
2224 case s: ByteVector =>
2325 s
2426 case _: Unit =>
2527 base58'2ee4oFDYriWJ9EMeR'
2628 case _ =>
2729 throw("Match error")
2830 }
2931 let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
3032 sha256(rand)
3133 }
3234
3335
3436 func generatorRandomHash (inv) = {
3537 let lastHashForToken = match getBinary(this, lastTokenRandomHash) {
3638 case s: ByteVector =>
3739 s
3840 case _: Unit =>
3941 base58'4dD7osCQzvuXJdTiGfKvTwnKT'
4042 case _ =>
4143 throw("Match error")
4244 }
4345 let rand = (((((lastHashForToken + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
4446 sha256(rand)
4547 }
4648
4749
4850 func getSizePriceArray () = {
4951 let tempPrices = getStringValue(this, lotteryPrices)
5052 let trimPrices = take(tempPrices, (size(tempPrices) - 1))
5153 let pricesArray = split(trimPrices, ",")
5254 let listSize = size(pricesArray)
5355 listSize
5456 }
5557
5658
5759 func getPriceArray () = {
5860 let tempPrices = getStringValue(this, lotteryPrices)
5961 let trimPrices = take(tempPrices, (size(tempPrices) - 1))
6062 let newArray = split(trimPrices, ",")
6163 newArray
6264 }
6365
6466
6567 func getAmountClaimForToken (token,update) = {
6668 let currentAmount = getIntegerValue(this, (token + lotteryamount))
6769 if ((currentAmount == 0))
6870 then throw("Amount exceeded")
6971 else if ((update == true))
7072 then if ((currentAmount == -1))
7173 then currentAmount
7274 else {
7375 let returnValue = (currentAmount - 1)
7476 returnValue
7577 }
7678 else currentAmount
7779 }
7880
7981
80-func procedLottery (temp,val) = if ((temp == 0))
81- then (temp + 1)
82- else (temp + 1)
82+func procedLottery (randomValue,token) = {
83+ let tokenPrice = getIntegerValue(this, (token + lotteryPrice))
84+ let tokenProbability = getIntegerValue(this, (token + lotteryprobability))
85+ let tokenAssetId = getStringValue(this, (token + lotteryAssetId))
86+ let tokenProbabilityDecimal = getIntegerValue(this, (token + lotteryprobabilitydecimal))
87+ let probabilityValue = (tokenProbabilityDecimal * 1000)
88+ let hash = (randomValue % probabilityValue)
89+ if ((probabilityValue > hash))
90+ then 1
91+ else 1
92+ }
8393
8494
8595 @Callable(i)
8696 func updateprobability (probability,amount,poolprice,probDecimal) = {
8797 let token = toBase64String(generatorRandomHash(i))
8898 let payment = extract(i.payment)
8999 let totalRequiredAmount = (amount * poolprice)
90100 if ((totalRequiredAmount > payment.amount))
91101 then throw("Payment is not equal price")
92102 else {
93103 let tempValue = match getString(this, lotteryPrices) {
94104 case a: String =>
95105 a
96106 case _ =>
97107 ""
98108 }
99109 let containKey = indexOf(tempValue, token)
100110 let storedTokensValues = match containKey {
101111 case _: Unit =>
102112 ((tempValue + token) + ",")
103113 case x: Int =>
104114 throw("Token is duplicated")
105115 case _ =>
106116 throw("Match error")
107117 }
108118 let countTokens = getSizePriceArray()
109119 let updateLotteryPool = WriteSet([DataEntry((token + lotteryamount), amount), DataEntry((token + lotteryprobability), probability), DataEntry((token + lotteryPrice), poolprice), DataEntry((token + lotteryPrices), storedTokensValues), DataEntry((token + countOfPrices), countTokens), DataEntry((token + lotteryprobabilitydecimal), probDecimal), DataEntry((token + lastTokenRandomHash), token)])
110120 ScriptResult(updateLotteryPool, TransferSet(nil))
111121 }
112122 }
113123
114124
115125
116126 @Callable(i)
117127 func startlotto () = {
118128 let currentKey = toBase58String(i.caller.bytes)
119129 let randhash = randomizer(i)
120130 let sizeTempPrice = getSizePriceArray()
121131 let priceList = getPriceArray()
122132 let defaultValue = 1000
123- let randNumber = (toInt(randhash) % (1 * 1000))
124- let listF = ["priceList", "fsdfd"]
125- let tempPrices = getStringValue(this, lotteryPrices)
126- let trimPrices = take(tempPrices, (size(tempPrices) - 1))
127- let pricesArray = split(trimPrices, ",")
128- let listSize = size(pricesArray)
129- let amountS = {
130- let $list45854621 = priceList
131- let $size45854621 = size($list45854621)
132- let $acc045854621 = 0
133- if (($size45854621 == 0))
134- then $acc045854621
133+ let randNumber = toInt(randhash)
134+ let winningToken = {
135+ let $list48014846 = priceList
136+ let $size48014846 = size($list48014846)
137+ let $acc048014846 = randNumber
138+ if (($size48014846 == 0))
139+ then $acc048014846
135140 else {
136- let $acc145854621 = procedLottery($acc045854621, $list45854621[0])
137- if (($size45854621 == 1))
138- then $acc145854621
141+ let $acc148014846 = procedLottery($acc048014846, $list48014846[0])
142+ if (($size48014846 == 1))
143+ then $acc148014846
139144 else {
140- let $acc245854621 = procedLottery($acc145854621, $list45854621[1])
141- if (($size45854621 == 2))
142- then $acc245854621
145+ let $acc248014846 = procedLottery($acc148014846, $list48014846[1])
146+ if (($size48014846 == 2))
147+ then $acc248014846
143148 else {
144- let $acc345854621 = procedLottery($acc245854621, $list45854621[2])
145- if (($size45854621 == 3))
146- then $acc345854621
149+ let $acc348014846 = procedLottery($acc248014846, $list48014846[2])
150+ if (($size48014846 == 3))
151+ then $acc348014846
147152 else {
148- let $acc445854621 = procedLottery($acc345854621, $list45854621[3])
149- if (($size45854621 == 4))
150- then $acc445854621
153+ let $acc448014846 = procedLottery($acc348014846, $list48014846[3])
154+ if (($size48014846 == 4))
155+ then $acc448014846
151156 else {
152- let $acc545854621 = procedLottery($acc445854621, $list45854621[4])
153- if (($size45854621 == 5))
154- then $acc545854621
157+ let $acc548014846 = procedLottery($acc448014846, $list48014846[4])
158+ if (($size48014846 == 5))
159+ then $acc548014846
155160 else {
156- let $acc645854621 = procedLottery($acc545854621, $list45854621[5])
161+ let $acc648014846 = procedLottery($acc548014846, $list48014846[5])
157162 throw("List size exceed 5")
158163 }
159164 }
160165 }
161166 }
162167 }
163168 }
164169 }
165170 let writeSets = WriteSet(nil)
166171 ScriptResult(writeSets, TransferSet(nil))
167172 }
168173
169174
170175 @Verifier(tx)
171176 func verify () = match tx {
172177 case _: DataTransaction =>
173178 true
174179 case _: SetScriptTransaction =>
175180 true
176181 case _ =>
177182 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
178183 }
179184

github/deemru/w8io/873ac7e 
104.36 ms