tx · FH7DAX3Yi4omp6HVqWUg6bFyopx4sFDWkTYeTtNZcdZR

3N4pubZFGseJTMYjftka76HoXPwujuAHH4w:  -0.00600000 Waves

2024.06.04 00:04 [3135018] smart account 3N4pubZFGseJTMYjftka76HoXPwujuAHH4w > SELF 0.00000000 Waves

{ "type": 13, "id": "FH7DAX3Yi4omp6HVqWUg6bFyopx4sFDWkTYeTtNZcdZR", "fee": 600000, "feeAssetId": null, "timestamp": 1717448665888, "version": 2, "chainId": 84, "sender": "3N4pubZFGseJTMYjftka76HoXPwujuAHH4w", "senderPublicKey": "7uPyxpXPRfdSCW8p2poiaH6iv3ygZhjtBEcgZwV19Qym", "proofs": [ "5Ewinx6Dx4oUmFRPd7tMRHNmqSkQtaN3QT8tM6mL3vDijQb6k2GqPAXbSuLJJVXR4TR9ARFy1ERd7dxf48C2mF15" ], "script": "base64:BgIVCAISBgoEAQECAhIECgIBAhIDCgEBDwADU0VQAgJfXwEEam9pbgEFYXJyYXkJALkJAgUFYXJyYXkFA1NFUAEIc2VwYXJhdGUBBnN0cmluZwkAtQkCBQZzdHJpbmcFA1NFUAEPbG90dGVyeUNvdW50S2V5AAkBBGpvaW4BCQDMCAICAiVzCQDMCAICDGxvdHRlcnlDb3VudAUDbmlsARhsb3R0ZXJ5RW5kQmxvY2tIZWlnaHRLZXkBCWxvdHRlcnlJZAkBBGpvaW4BCQDMCAICAiVzCQDMCAICFWxvdHRlcnlFbmRCbG9ja0hlaWdodAkAzAgCCQCkAwEFCWxvdHRlcnlJZAUDbmlsARJsb3R0ZXJ5QmV0UHJpY2VLZXkBCWxvdHRlcnlJZAkBBGpvaW4BCQDMCAICAiVzCQDMCAICD2xvdHRlcnlCZXRQcmljZQkAzAgCCQCkAwEFCWxvdHRlcnlJZAUDbmlsARJsb3R0ZXJ5QmV0QXNzZXRLZXkBCWxvdHRlcnlJZAkBBGpvaW4BCQDMCAICAiVzCQDMCAICD2xvdHRlcnlCZXRUb2tlbgkAzAgCCQCkAwEFCWxvdHRlcnlJZAUDbmlsARhsb3R0ZXJ5V2lubmVyVGlja2V0SWRLZXkBCWxvdHRlcnlJZAkBBGpvaW4BCQDMCAICAiVzCQDMCAICFWxvdHRlcnlXaW5uZXJUaWNrZXRJZAkAzAgCCQCkAwEFCWxvdHRlcnlJZAUDbmlsARZsb3R0ZXJ5Q291bnRUaWNrZXRzS2V5AQlsb3R0ZXJ5SWQJAQRqb2luAQkAzAgCAgIlcwkAzAgCAhZsb3R0ZXJ5Q291bnRUaWNrZXRzS2V5CQDMCAIJAKQDAQUJbG90dGVyeUlkBQNuaWwBEmxvdHRlcnlSZWZmZXJlcktleQEJbG90dGVyeUlkCQEEam9pbgEJAMwIAgICJXMJAMwIAgISbG90dGVyeVJlZmZlcmVyS2V5CQDMCAIJAKQDAQUJbG90dGVyeUlkBQNuaWwBFWxvdHRlcnlUaWNrZXRPd25lcktleQIJbG90dGVyeUlkCHRpY2tldElkCQEEam9pbgEJAMwIAgICJXMJAMwIAgISbG90dGVyeVRpY2tldE93bmVyCQDMCAIJAKQDAQUJbG90dGVyeUlkCQDMCAIJAKQDAQUIdGlja2V0SWQFA25pbAAScGllY2VPZlNoaXRBcnJheTkwCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUCQDMCAIAFQkAzAgCABYJAMwIAgAXCQDMCAIAGAkAzAgCABkJAMwIAgAaCQDMCAIAGwkAzAgCABwJAMwIAgAdCQDMCAIAHgkAzAgCAB8JAMwIAgAgCQDMCAIAIQkAzAgCACIJAMwIAgAjCQDMCAIAJAkAzAgCACUJAMwIAgAmCQDMCAIAJwkAzAgCACgJAMwIAgApCQDMCAIAKgkAzAgCACsJAMwIAgAsCQDMCAIALQkAzAgCAC4JAMwIAgAvCQDMCAIAMAkAzAgCADEJAMwIAgAyCQDMCAIAMwkAzAgCADQJAMwIAgA1CQDMCAIANgkAzAgCADcJAMwIAgA4CQDMCAIAOQkAzAgCADoJAMwIAgA7CQDMCAIAPAkAzAgCAD0JAMwIAgA+CQDMCAIAPwkAzAgCAEAJAMwIAgBBCQDMCAIAQgkAzAgCAEMJAMwIAgBECQDMCAIARQkAzAgCAEYJAMwIAgBHCQDMCAIASAkAzAgCAEkJAMwIAgBKCQDMCAIASwkAzAgCAEwJAMwIAgBNCQDMCAIATgkAzAgCAE8JAMwIAgBQCQDMCAIAUQkAzAgCAFIJAMwIAgBTCQDMCAIAVAkAzAgCAFUJAMwIAgBWCQDMCAIAVwkAzAgCAFgJAMwIAgBZBQNuaWwBC3BheU9uZUFzc2V0AgFpBWFzc2V0AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBWFzc2V0CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAAgECC3dyb25nIGFzc2V0CQACAQIOb25seSAxIHBheW1lbnQBCnJhbmRvbWl6ZXIBC2Jsb2NrSGVpZ2h0BAVibG9jawkA7QcBBQtibG9ja0hlaWdodAMJAAACBQVibG9jawUEdW5pdAkAAgECD2Jsb2NrIG5vdCBtaW5lZAQEcmFuZAkAywECCQDLAQIIBQlsYXN0QmxvY2sTZ2VuZXJhdGlvblNpZ25hdHVyZQkAmgMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAmgMBCAUJbGFzdEJsb2NrBmhlaWdodAkA9wMBBQRyYW5kAQlnZXRXaW5uZXIBCWxvdHRlcnlJZAQLYmxvY2tIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARhsb3R0ZXJ5RW5kQmxvY2tIZWlnaHRLZXkBBQlsb3R0ZXJ5SWQEDGNvdW50VGlja2V0cwkBEUBleHRyTmF0aXZlKDEwNTUpAQkBFmxvdHRlcnlDb3VudFRpY2tldHNLZXkBBQlsb3R0ZXJ5SWQEBHJhbmQJAQpyYW5kb21pemVyAQULYmxvY2tIZWlnaHQECXdpbk51bWJlcgkAagIJALEJAQUEcmFuZAUMY291bnRUaWNrZXRzCQERQGV4dHJOYXRpdmUoMTA1NykBCQEVbG90dGVyeVRpY2tldE93bmVyS2V5AgUJbG90dGVyeUlkBQl3aW5OdW1iZXIDAWkBBmNyZWF0ZQQOZW5kQmxvY2tIZWlnaHQIYmV0UHJpY2UIYmV0VG9rZW4IcmVmZmVyZXIDCQBnAggFCWxhc3RCbG9jawZoZWlnaHQFDmVuZEJsb2NrSGVpZ2h0CQACAQIYaW5jb3JyZWN0IGVuZEJsb2NrSGVpZ2h0BAVjb3VudAQHJG1hdGNoMAkAnwgBCQEPbG90dGVyeUNvdW50S2V5AAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2xvdHRlcnlDb3VudEtleQAJAGQCBQVjb3VudAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYbG90dGVyeUVuZEJsb2NrSGVpZ2h0S2V5AQUFY291bnQFDmVuZEJsb2NrSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESbG90dGVyeUJldFByaWNlS2V5AQUFY291bnQFCGJldFByaWNlCQDMCAIJAQtCaW5hcnlFbnRyeQIJARJsb3R0ZXJ5QmV0QXNzZXRLZXkBBQVjb3VudAUIYmV0VG9rZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJARZsb3R0ZXJ5Q291bnRUaWNrZXRzS2V5AQUFY291bnQAAAkAzAgCCQELQmluYXJ5RW50cnkCCQESbG90dGVyeVJlZmZlcmVyS2V5AQUFY291bnQFCHJlZmZlcmVyBQNuaWwBaQEDYnV5Aglsb3R0ZXJ5SWQIcmVmZXJyZXIECGJldEFzc2V0CQERQGV4dHJOYXRpdmUoMTA1NykBCQESbG90dGVyeUJldEFzc2V0S2V5AQUJbG90dGVyeUlkBAhiZXRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEmxvdHRlcnlCZXRQcmljZUtleQEFCWxvdHRlcnlJZAQRdG90YWxDb3VudFRpY2tldHMJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARZsb3R0ZXJ5Q291bnRUaWNrZXRzS2V5AQUJbG90dGVyeUlkBA5lbmRCbG9ja0hlaWdodAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBGGxvdHRlcnlFbmRCbG9ja0hlaWdodEtleQEFCWxvdHRlcnlJZAMJAGcCCAUJbGFzdEJsb2NrBmhlaWdodAUOZW5kQmxvY2tIZWlnaHQJAAIBAhdsb3R0ZXJ5IGFscmVkeSBmaW5pc2hlZAQGYW1vdW50CQELcGF5T25lQXNzZXQCBQFpBQhiZXRBc3NldAQQcHVyY2hhc2VkVGlja2V0cwkAaQIFBmFtb3VudAUIYmV0UHJpY2UKAQFmAgVhY2N1bQRuZXh0AwkAZgIFEHB1cmNoYXNlZFRpY2tldHMFBG5leHQJAM0IAgUFYWNjdW0JAQtCaW5hcnlFbnRyeQIJARVsb3R0ZXJ5VGlja2V0T3duZXJLZXkCBQlsb3R0ZXJ5SWQJAGQCBRF0b3RhbENvdW50VGlja2V0cwUEbmV4dAgFAWkPY2FsbGVyUHVibGljS2V5BQVhY2N1bQkAzggCCgACJGwFEnBpZWNlT2ZTaGl0QXJyYXk5MAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEBZgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgOTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoJAMwIAgkBDEludGVnZXJFbnRyeQIJARZsb3R0ZXJ5Q291bnRUaWNrZXRzS2V5AQUJbG90dGVyeUlkCQBkAgURdG90YWxDb3VudFRpY2tldHMFEHB1cmNoYXNlZFRpY2tldHMFA25pbAFpAQVjbGFpbQEJbG90dGVyeUlkBAZ3aW5uZXIJAQlnZXRXaW5uZXIBBQlsb3R0ZXJ5SWQDCQECIT0CBQZ3aW5uZXIIBQFpD2NhbGxlclB1YmxpY0tleQkAAgECB25vdCB3aW4ECGJldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1NSkBCQESbG90dGVyeUJldFByaWNlS2V5AQUJbG90dGVyeUlkBBF0b3RhbENvdW50VGlja2V0cwkBEUBleHRyTmF0aXZlKDEwNTUpAQkBFmxvdHRlcnlDb3VudFRpY2tldHNLZXkBBQlsb3R0ZXJ5SWQECGJldFRva2VuCQERQGV4dHJOYXRpdmUoMTA1NykBCQESbG90dGVyeUJldEFzc2V0S2V5AQUJbG90dGVyeUlkBAhyZWZmZXJlcgkBEUBleHRyTmF0aXZlKDEwNTcpAQkBEmxvdHRlcnlSZWZmZXJlcktleQEFCWxvdHRlcnlJZAQDY2FwCQBoAgUIYmV0UHJpY2UFEXRvdGFsQ291bnRUaWNrZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAawMFA2NhcAAHAAoFCGJldFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUIcmVmZmVyZXIJAGsDBQNjYXAAAQAKBQhiZXRUb2tlbgUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleb3Wdbk=", "height": 3135018, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let SEP = "__"
5+
6+func join (array) = makeString(array, SEP)
7+
8+
9+func separate (string) = split(string, SEP)
10+
11+
12+func lotteryCountKey () = join(["%s", "lotteryCount"])
13+
14+
15+func lotteryEndBlockHeightKey (lotteryId) = join(["%s", "lotteryEndBlockHeight", toString(lotteryId)])
16+
17+
18+func lotteryBetPriceKey (lotteryId) = join(["%s", "lotteryBetPrice", toString(lotteryId)])
19+
20+
21+func lotteryBetAssetKey (lotteryId) = join(["%s", "lotteryBetToken", toString(lotteryId)])
22+
23+
24+func lotteryWinnerTicketIdKey (lotteryId) = join(["%s", "lotteryWinnerTicketId", toString(lotteryId)])
25+
26+
27+func lotteryCountTicketsKey (lotteryId) = join(["%s", "lotteryCountTicketsKey", toString(lotteryId)])
28+
29+
30+func lotteryReffererKey (lotteryId) = join(["%s", "lotteryReffererKey", toString(lotteryId)])
31+
32+
33+func lotteryTicketOwnerKey (lotteryId,ticketId) = join(["%s", "lotteryTicketOwner", toString(lotteryId), toString(ticketId)])
34+
35+
36+let pieceOfShitArray90 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
37+
38+func payOneAsset (i,asset) = if ((size(i.payments) == 1))
39+ then if ((value(i.payments[0].assetId) == asset))
40+ then i.payments[0].amount
41+ else throw("wrong asset")
42+ else throw("only 1 payment")
43+
44+
45+func randomizer (blockHeight) = {
46+ let block = blockInfoByHeight(blockHeight)
47+ if ((block == unit))
48+ then throw("block not mined")
49+ else {
50+ let rand = ((lastBlock.generationSignature + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
51+ sha256(rand)
52+ }
53+ }
54+
55+
56+func getWinner (lotteryId) = {
57+ let blockHeight = getIntegerValue(lotteryEndBlockHeightKey(lotteryId))
58+ let countTickets = getIntegerValue(lotteryCountTicketsKey(lotteryId))
59+ let rand = randomizer(blockHeight)
60+ let winNumber = (toInt(rand) % countTickets)
61+ getBinaryValue(lotteryTicketOwnerKey(lotteryId, winNumber))
62+ }
63+
64+
65+@Callable(i)
66+func create (endBlockHeight,betPrice,betToken,refferer) = if ((lastBlock.height >= endBlockHeight))
67+ then throw("incorrect endBlockHeight")
68+ else {
69+ let count = match getInteger(lotteryCountKey()) {
70+ case a: Int =>
71+ a
72+ case _ =>
73+ 0
74+ }
75+[IntegerEntry(lotteryCountKey(), (count + 1)), IntegerEntry(lotteryEndBlockHeightKey(count), endBlockHeight), IntegerEntry(lotteryBetPriceKey(count), betPrice), BinaryEntry(lotteryBetAssetKey(count), betToken), IntegerEntry(lotteryCountTicketsKey(count), 0), BinaryEntry(lotteryReffererKey(count), refferer)]
76+ }
77+
78+
79+
80+@Callable(i)
81+func buy (lotteryId,referrer) = {
82+ let betAsset = getBinaryValue(lotteryBetAssetKey(lotteryId))
83+ let betPrice = getIntegerValue(lotteryBetPriceKey(lotteryId))
84+ let totalCountTickets = getIntegerValue(lotteryCountTicketsKey(lotteryId))
85+ let endBlockHeight = getIntegerValue(lotteryEndBlockHeightKey(lotteryId))
86+ if ((lastBlock.height >= endBlockHeight))
87+ then throw("lottery alredy finished")
88+ else {
89+ let amount = payOneAsset(i, betAsset)
90+ let purchasedTickets = (amount / betPrice)
91+ func f (accum,next) = if ((purchasedTickets > next))
92+ then (accum :+ BinaryEntry(lotteryTicketOwnerKey(lotteryId, (totalCountTickets + next)), i.callerPublicKey))
93+ else accum
94+
95+ ({
96+ let $l = pieceOfShitArray90
97+ let $s = size($l)
98+ let $acc0 = nil
99+ func $f0_1 ($a,$i) = if (($i >= $s))
100+ then $a
101+ else f($a, $l[$i])
102+
103+ func $f0_2 ($a,$i) = if (($i >= $s))
104+ then $a
105+ else throw("List size exceeds 90")
106+
107+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
108+ } ++ [IntegerEntry(lotteryCountTicketsKey(lotteryId), (totalCountTickets + purchasedTickets))])
109+ }
110+ }
111+
112+
113+
114+@Callable(i)
115+func claim (lotteryId) = {
116+ let winner = getWinner(lotteryId)
117+ if ((winner != i.callerPublicKey))
118+ then throw("not win")
119+ else {
120+ let betPrice = getIntegerValue(lotteryBetPriceKey(lotteryId))
121+ let totalCountTickets = getIntegerValue(lotteryCountTicketsKey(lotteryId))
122+ let betToken = getBinaryValue(lotteryBetAssetKey(lotteryId))
123+ let refferer = getBinaryValue(lotteryReffererKey(lotteryId))
124+ let cap = (betPrice * totalCountTickets)
125+[ScriptTransfer(i.caller, fraction(cap, 7, 10), betToken), ScriptTransfer(Address(refferer), fraction(cap, 1, 10), betToken)]
126+ }
127+ }
128+
129+
130+@Verifier(tx)
131+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
132+

github/deemru/w8io/c3f4982 
19.81 ms