tx · 21QQibrvM2z6PbisoX91yJDmyyzQsMLjJuSpwC5vZt9m

3N99n9UBxrDv77wH3W61SxaisLqwk541i6s:  -0.01000000 Waves

2019.12.05 16:13 [795474] smart account 3N99n9UBxrDv77wH3W61SxaisLqwk541i6s > SELF 0.00000000 Waves

{ "type": 13, "id": "21QQibrvM2z6PbisoX91yJDmyyzQsMLjJuSpwC5vZt9m", "fee": 1000000, "feeAssetId": null, "timestamp": 1575551635319, "version": 1, "sender": "3N99n9UBxrDv77wH3W61SxaisLqwk541i6s", "senderPublicKey": "ALzPn8bB3vgBmQH73R3CCtkQPZwkLf737e2PY1EnxQqM", "proofs": [ "2gDUKTDHdivgbAykCbGgvsNzZfufdGJk7y97cgrbVGpau6qrEYxJxtDKDPcMW1WyAKt9LedaPXLnwopVo1WKNYcw" ], "script": "base64:AAIDAAAAAAAAAA4IARIDCgEIEgMKAQgSAAAAAAYAAAAADG93bmVyQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVCKO49UfdVacf8Y0Qj59HGp7V9voyjFs/QAAAAAJdGlja2V0SHViCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUBsSN2A60pEr0L803rLgzH70HWvMWeUsrAAAAABNsb3R0ZXJ5QWRtaW5BZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUf94ftL4Vg1lJrIjOemFa/6T/nk84vWbZAAAAABFkQXBwUmFuZG9tQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVH/eH7S+FYNZSayIznphWv+k/55POL1m2QAAAAAOd2l0aGRyYXdQZXJpb2QAAAAAAAAAqMABAAAAEmV4dHJhY3RSYW5kb21WYWx1ZQAAAAAEAAAAE3JlcXVlc3RDb21taXRlZFR4SWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAAD3JhbmRvbVJlcXVlc3RUeAQAAAAOb3JhY2xlUmVzcG9uc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAEWRBcHBSYW5kb21BZGRyZXNzBQAAABNyZXF1ZXN0Q29tbWl0ZWRUeElkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAADHJhbmRvbVJlc3VsdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFzBQAAAAckbWF0Y2gwCQABpAAAAAEFAAAAAXMJAAGRAAAAAgkABLUAAAACBQAAAA5vcmFjbGVSZXNwb25zZQIAAAACLS0AAAAAAAAAAAEAAAADAAAACmNvbnRleHRPYmoBAAAAF3JlZ2lzdGVyUmFuZG9tUmVxdWVzdFR4AAAAAQAAAA9yYW5kb21SZXF1ZXN0VHgDCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzAgAAAA9yYW5kb21SZXF1ZXN0VHgJAAACAAAAAQIAAAAncmFuZG9tUmVxdWVzdFR4IGlzIGFscmVhZHkgaW4gdGhlIHN0YXRlAwkBAAAACWlzRGVmaW5lZAAAAAEJAAPpAAAAAQkAAlkAAAABBQAAAA9yYW5kb21SZXF1ZXN0VHgJAAACAAAAAQIAAAAyWW91IHRyeSByZWdpc3RlciB0eCB3aGljaCBpcyBhbHJlYWR5IGluIGJsb2NrY2hhaW4DCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAATbG90dGVyeUFkbWluQWRkcmVzcwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAPcmFuZG9tUmVxdWVzdFR4BQAAAA9yYW5kb21SZXF1ZXN0VHgJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAC3N0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAkAAAIAAAABAgAAACZvbmx5IGxvdGVyeU93bmVyIGNhbiBzdGFydCB0aGUgbG90dGVyeQAAAApjb250ZXh0T2JqAQAAAA9kZWZpbmVUaGVXaW5uZXIAAAABAAAAD3RpY2tldHNJbkh1YktleQQAAAAScmFuZG9tUmVzdWx0U3RyaW5nCQEAAAASZXh0cmFjdFJhbmRvbVZhbHVlAAAAAAQAAAAMcmFuZG9tUmVzdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAEnJhbmRvbVJlc3VsdFN0cmluZwMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMCAAAADHdpbm5lclRpY2tldAkAAAIAAAABAgAAABl3aW5uZXIgaXMgYWxyZWFkeSBkZWZpbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAJdGlja2V0SHViCQABLAAAAAICAAAADXdpbm5pbmdUaWNrZXQFAAAAEnJhbmRvbVJlc3VsdFN0cmluZwQAAAAMdGlja2V0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAl0aWNrZXRIdWICAAAAEXRpY2tldEFtb3VudFRvdGFsBAAAABJyYW5kb21SZXN1bHRVcGRhdGUDCQAAAAAAAAIFAAAADHJhbmRvbVJlc3VsdAUAAAAMdGlja2V0QW1vdW50AAAAAAAAAAABCQAAZAAAAAIFAAAADHJhbmRvbVJlc3VsdAAAAAAAAAAAAQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAMcmFuZG9tUmVzdWx0BQAAABJyYW5kb21SZXN1bHRVcGRhdGUFAAAAA25pbAQAAAAKdGlja2V0RnJvbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgkAAZEAAAACCQAEtQAAAAIFAAAAD3RpY2tldHNJbkh1YktleQIAAAACVG8AAAAAAAAAAAACAAAAC3RpY2tldHNGcm9tAAAAAAAAAAABBAAAAAh0aWNrZXRUbwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgUAAAAPdGlja2V0c0luSHViS2V5AgAAAAJUbwAAAAAAAAAAAQMDCQAAZwAAAAIFAAAADHJhbmRvbVJlc3VsdAUAAAAKdGlja2V0RnJvbQkAAGcAAAACBQAAAAh0aWNrZXRUbwUAAAAMcmFuZG9tUmVzdWx0BwQAAAANd2lubmVyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAJdGlja2V0SHViBQAAAA90aWNrZXRzSW5IdWJLZXkJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADHdpbm5lclRpY2tldAUAAAAMcmFuZG9tUmVzdWx0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAA13aW5uZXJBZGRyZXNzBQAAAA13aW5uZXJBZGRyZXNzBQAAAANuaWwJAAACAAAAAQIAAAAYdGhlc2UgdGlja2V0cyBkaWRuJ3Qgd2luAAAACmNvbnRleHRPYmoBAAAACHdpdGhkcmF3AAAAAAQAAAANd2lubmVyQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA13aW5uZXJBZGRyZXNzBAAAAAtzdGFydEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAALc3RhcnRIZWlnaHQEAAAABW1vbnRoBQAAAA53aXRoZHJhd1BlcmlvZAMDCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAANd2lubmVyQWRkcmVzcwkAAGcAAAACCQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAVtb250aAUAAAAGaGVpZ2h0BwkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA13aW5uZXJBZGRyZXNzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwUAAAAEdW5pdAUAAAADbmlsAwMDCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAATbG90dGVyeUFkbWluQWRkcmVzcwYJAAAAAAAAAggFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAAAxvd25lckFkZHJlc3MJAABmAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAVtb250aAcJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMb3duZXJBZGRyZXNzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwUAAAAEdW5pdAUAAAADbmlsCQAAAgAAAAECAAAAHHlvdSBjYW4ndCB3aXRoZHJhdyB0aGUgZnVuZHMAAAAAEq65xA==", "chainId": 84, "height": 795474, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let ownerAddress = Address(base58'3Ms4ovcT1Rtq2BExHqRbBMUeKCYmDSSGGV2')
5+
6+let ticketHub = Address(base58'3MpXsHtUSpsUJRsUdVfxpcfFQzeoQyP2GHg')
7+
8+let lotteryAdminAddress = Address(base58'3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS')
9+
10+let dAppRandomAddress = Address(base58'3N1aBgieFCpxDJorNX7i41KWaP974Ci9roS')
11+
12+let withdrawPeriod = 43200
13+
14+func extractRandomValue () = {
15+ let requestCommitedTxId = getStringValue(this, "randomRequestTx")
16+ let oracleResponse = getStringValue(dAppRandomAddress, requestCommitedTxId)
17+ match getInteger(this, "randomResult") {
18+ case s: Int =>
19+ toString(s)
20+ case _ =>
21+split(oracleResponse, "--")[1]
22+ }
23+ }
24+
25+
26+@Callable(contextObj)
27+func registerRandomRequestTx (randomRequestTx) = if (isDefined(getString(this, "randomRequestTx")))
28+ then throw("randomRequestTx is already in the state")
29+ else if (isDefined(transactionHeightById(fromBase58String(randomRequestTx))))
30+ then throw("You try register tx which is already in blockchain")
31+ else if ((contextObj.caller == lotteryAdminAddress))
32+ then WriteSet([DataEntry("randomRequestTx", randomRequestTx), DataEntry("startHeight", height)])
33+ else throw("only loteryOwner can start the lottery")
34+
35+
36+
37+@Callable(contextObj)
38+func defineTheWinner (ticketsInHubKey) = {
39+ let randomResultString = extractRandomValue()
40+ let randomResult = parseIntValue(randomResultString)
41+ if (isDefined(getInteger(this, "winnerTicket")))
42+ then throw("winner is already defined")
43+ else if (isDefined(getString(ticketHub, ("winningTicket" + randomResultString))))
44+ then {
45+ let ticketAmount = getIntegerValue(ticketHub, "ticketAmountTotal")
46+ let randomResultUpdate = if ((randomResult == ticketAmount))
47+ then 1
48+ else (randomResult + 1)
49+ WriteSet([DataEntry("randomResult", randomResultUpdate)])
50+ }
51+ else {
52+ let ticketFrom = parseIntValue(split(split(ticketsInHubKey, "To")[0], "ticketsFrom")[1])
53+ let ticketTo = parseIntValue(split(ticketsInHubKey, "To")[1])
54+ if (if ((randomResult >= ticketFrom))
55+ then (ticketTo >= randomResult)
56+ else false)
57+ then {
58+ let winnerAddress = getStringValue(ticketHub, ticketsInHubKey)
59+ WriteSet([DataEntry("winnerTicket", randomResult), DataEntry("winnerAddress", winnerAddress)])
60+ }
61+ else throw("these tickets didn't win")
62+ }
63+ }
64+
65+
66+
67+@Callable(contextObj)
68+func withdraw () = {
69+ let winnerAddress = addressFromStringValue(getStringValue(this, "winnerAddress"))
70+ let startHeight = getIntegerValue(this, "startHeight")
71+ let month = withdrawPeriod
72+ if (if ((contextObj.caller == winnerAddress))
73+ then ((startHeight + month) >= height)
74+ else false)
75+ then TransferSet([ScriptTransfer(winnerAddress, wavesBalance(this), unit)])
76+ else if (if (if ((contextObj.caller == lotteryAdminAddress))
77+ then true
78+ else (contextObj.caller == ownerAddress))
79+ then (height > (startHeight + month))
80+ else false)
81+ then TransferSet([ScriptTransfer(ownerAddress, wavesBalance(this), unit)])
82+ else throw("you can't withdraw the funds")
83+ }
84+
85+

github/deemru/w8io/026f985 
35.05 ms