tx · FPC8z6UhfsTAfP28VJuvqjikNgwe99CUmfMA3AYn24Gx

3PGXaGa9wvzsDThMAxMvNaNMaY82vqdopTA:  -0.01000000 Waves

2019.12.18 15:37 [1844666] smart account 3PGXaGa9wvzsDThMAxMvNaNMaY82vqdopTA > SELF 0.00000000 Waves

{ "type": 13, "id": "FPC8z6UhfsTAfP28VJuvqjikNgwe99CUmfMA3AYn24Gx", "fee": 1000000, "feeAssetId": null, "timestamp": 1576672637244, "version": 1, "sender": "3PGXaGa9wvzsDThMAxMvNaNMaY82vqdopTA", "senderPublicKey": "WFwhx1iYWLqapmX7YQ589dop6aJSKoC9P14huQz1Us7", "proofs": [ "3WwaQ1epEdiKAKBGBCZxkae3R72Mq7FRDpnKnWKyJbCid5Nigs2gYrJo3sAeMgupk26WgUikg3uUY2WynTNcxEHi" ], "script": "base64:AAIDAAAAAAAAAA4IARIDCgEIEgMKAQgSAAAAAAYAAAAADG93bmVyQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV4lk9wobrlyDjutXUEDEyRAwk7XDwN8F2AAAAAAJdGlja2V0SHViCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFX45r11dEcX39TIWG4YmdwJYj/jkW3qndtAAAAABNsb3R0ZXJ5QWRtaW5BZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXDHlonbwz/gEDHbDbeoHGHXBrxaXGoKZtAAAAABFkQXBwUmFuZG9tQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV3+/s4EdBgCOdq2WJT/jYSMPDH9DFp3g7gAAAAAOd2l0aGRyYXdQZXJpb2QAAAAAAAAAqMABAAAAEmV4dHJhY3RSYW5kb21WYWx1ZQAAAAAEAAAAE3JlcXVlc3RDb21taXRlZFR4SWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAAD3JhbmRvbVJlcXVlc3RUeAQAAAAOb3JhY2xlUmVzcG9uc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAEWRBcHBSYW5kb21BZGRyZXNzBQAAABNyZXF1ZXN0Q29tbWl0ZWRUeElkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAADHJhbmRvbVJlc3VsdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFzBQAAAAckbWF0Y2gwCQABpAAAAAEFAAAAAXMJAAGRAAAAAgkABLUAAAACBQAAAA5vcmFjbGVSZXNwb25zZQIAAAACLS0AAAAAAAAAAAEAAAADAAAACmNvbnRleHRPYmoBAAAAF3JlZ2lzdGVyUmFuZG9tUmVxdWVzdFR4AAAAAQAAAA9yYW5kb21SZXF1ZXN0VHgDCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzAgAAAA9yYW5kb21SZXF1ZXN0VHgJAAACAAAAAQIAAAAncmFuZG9tUmVxdWVzdFR4IGlzIGFscmVhZHkgaW4gdGhlIHN0YXRlAwkBAAAACWlzRGVmaW5lZAAAAAEJAAPpAAAAAQkAAlkAAAABBQAAAA9yYW5kb21SZXF1ZXN0VHgJAAACAAAAAQIAAAAyWW91IHRyeSByZWdpc3RlciB0eCB3aGljaCBpcyBhbHJlYWR5IGluIGJsb2NrY2hhaW4DCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAATbG90dGVyeUFkbWluQWRkcmVzcwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAPcmFuZG9tUmVxdWVzdFR4BQAAAA9yYW5kb21SZXF1ZXN0VHgJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAC3N0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAkAAAIAAAABAgAAACZvbmx5IGxvdGVyeU93bmVyIGNhbiBzdGFydCB0aGUgbG90dGVyeQAAAApjb250ZXh0T2JqAQAAAA9kZWZpbmVUaGVXaW5uZXIAAAABAAAAD3RpY2tldHNJbkh1YktleQQAAAAScmFuZG9tUmVzdWx0U3RyaW5nCQEAAAASZXh0cmFjdFJhbmRvbVZhbHVlAAAAAAQAAAAMcmFuZG9tUmVzdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAEnJhbmRvbVJlc3VsdFN0cmluZwMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMCAAAADHdpbm5lclRpY2tldAkAAAIAAAABAgAAABl3aW5uZXIgaXMgYWxyZWFkeSBkZWZpbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAJdGlja2V0SHViCQABLAAAAAICAAAADXdpbm5pbmdUaWNrZXQFAAAAEnJhbmRvbVJlc3VsdFN0cmluZwQAAAAMdGlja2V0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAl0aWNrZXRIdWICAAAAEXRpY2tldEFtb3VudFRvdGFsBAAAABJyYW5kb21SZXN1bHRVcGRhdGUDCQAAAAAAAAIFAAAADHJhbmRvbVJlc3VsdAUAAAAMdGlja2V0QW1vdW50AAAAAAAAAAABCQAAZAAAAAIFAAAADHJhbmRvbVJlc3VsdAAAAAAAAAAAAQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAMcmFuZG9tUmVzdWx0BQAAABJyYW5kb21SZXN1bHRVcGRhdGUFAAAAA25pbAQAAAAKdGlja2V0RnJvbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgkAAZEAAAACCQAEtQAAAAIFAAAAD3RpY2tldHNJbkh1YktleQIAAAACVG8AAAAAAAAAAAACAAAAC3RpY2tldHNGcm9tAAAAAAAAAAABBAAAAAh0aWNrZXRUbwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgUAAAAPdGlja2V0c0luSHViS2V5AgAAAAJUbwAAAAAAAAAAAQMDCQAAZwAAAAIFAAAADHJhbmRvbVJlc3VsdAUAAAAKdGlja2V0RnJvbQkAAGcAAAACBQAAAAh0aWNrZXRUbwUAAAAMcmFuZG9tUmVzdWx0BwQAAAANd2lubmVyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAJdGlja2V0SHViBQAAAA90aWNrZXRzSW5IdWJLZXkJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADHdpbm5lclRpY2tldAUAAAAMcmFuZG9tUmVzdWx0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAA13aW5uZXJBZGRyZXNzBQAAAA13aW5uZXJBZGRyZXNzBQAAAANuaWwJAAACAAAAAQIAAAAYdGhlc2UgdGlja2V0cyBkaWRuJ3Qgd2luAAAACmNvbnRleHRPYmoBAAAACHdpdGhkcmF3AAAAAAQAAAANd2lubmVyQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA13aW5uZXJBZGRyZXNzBAAAAAtzdGFydEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAALc3RhcnRIZWlnaHQEAAAABW1vbnRoBQAAAA53aXRoZHJhd1BlcmlvZAMDCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAANd2lubmVyQWRkcmVzcwkAAGcAAAACCQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAVtb250aAUAAAAGaGVpZ2h0BwkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA13aW5uZXJBZGRyZXNzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwUAAAAEdW5pdAUAAAADbmlsAwMDCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAATbG90dGVyeUFkbWluQWRkcmVzcwYJAAAAAAAAAggFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAAAxvd25lckFkZHJlc3MJAABmAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAVtb250aAcJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMb3duZXJBZGRyZXNzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwUAAAAEdW5pdAUAAAADbmlsCQAAAgAAAAECAAAAHHlvdSBjYW4ndCB3aXRoZHJhdyB0aGUgZnVuZHMAAAAAkDNoAg==", "chainId": 87, "height": 1844666, "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'3PETNFhSiTMopMyM9fvXpKbApcPZec2jzzj')
5+
6+let ticketHub = Address(base58'3PNgMkd1vSjY2mWmEqYFHZEm1ppSyKHv9Kr')
7+
8+let lotteryAdminAddress = Address(base58'3P34rHAnu8wR1uz1DLuRM3S33gtXMer1FQG')
9+
10+let dAppRandomAddress = Address(base58'3PDaNCEvZvtdxB7jv2Cbkvj4KZp5usQ551F')
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/6500d08 
28.06 ms