tx · 9xqMvpw2F62r7ey6LgDzZTegdcHnvubgEFfX9teas8fK

3N7FoakvCMRj7Ff4QTAxrCRmvjz5N61mEVQ:  -0.01000000 Waves

2019.11.18 16:50 [770648] smart account 3N7FoakvCMRj7Ff4QTAxrCRmvjz5N61mEVQ > SELF 0.00000000 Waves

{ "type": 13, "id": "9xqMvpw2F62r7ey6LgDzZTegdcHnvubgEFfX9teas8fK", "fee": 1000000, "feeAssetId": null, "timestamp": 1574085029896, "version": 1, "sender": "3N7FoakvCMRj7Ff4QTAxrCRmvjz5N61mEVQ", "senderPublicKey": "5gNqzDoW6dWERUDYpXSuzM89NXbvTA64cLAk8d7dQj9r", "proofs": [ "T5XNkRFai5TgEYCWsbiBf1DKALUjV1yzv1iryDDDHNTsjmNjhByPQxm2qa48CoXsioaFH5Go3LRAwZkyybbHZvf" ], "script": "base64:AAIDAAAAAAAAAAsIARIDCgEIEgASAAAAAAQAAAAAE2xvdHRlcnlUaWNrZXRIb2xkZXIJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQ5TpPTNypsJwDExImSbL6iKZaTrlTmokIAAAAADGxvdHRlcnlPd25lcgIAAAAjM043Rm9ha3ZDTVJqN0ZmNFFUQXhyQ1Jtdmp6NU42MW1FVlEAAAAAC293bmVyUHViS2V5AQAAACBFhRlZjUMZ4d4P9HY8nsfuGBTlJYc98SJH3c6NUrTPAQAAAAARZEFwcFJhbmRvbUFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSkIPSYh6+VkgGca7wwmv6iWisonIgZmrsAAAADAAAACmNvbnRleHRPYmoBAAAAF3JlZ2lzdGVyUmFuZG9tUmVxdWVzdFR4AAAAAQAAAA9yYW5kb21SZXF1ZXN0VHgDCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzAgAAAA9yYW5kb21SZXF1ZXN0VHgJAAACAAAAAQIAAAAncmFuZG9tUmVxdWVzdFR4IGlzIGFscmVhZHkgaW4gdGhlIHN0YXRlAwkBAAAACWlzRGVmaW5lZAAAAAEJAAPpAAAAAQkAAlkAAAABBQAAAA9yYW5kb21SZXF1ZXN0VHgJAAACAAAAAQIAAAAyWW91IHRyeSByZWdpc3RlciB0eCB3aGljaCBpcyBhbHJlYWR5IGluIGJsb2NrY2hhaW4DCQAAAAAAAAIIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQUAAAAMbG90dGVyeU93bmVyCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAA9yYW5kb21SZXF1ZXN0VHgFAAAAD3JhbmRvbVJlcXVlc3RUeAUAAAADbmlsCQAAAgAAAAECAAAAIG9ubHkgb3duZXIgY2FuIHN0YXJ0IHRoZSBsb3R0ZXJ5AAAACmNvbnRleHRPYmoBAAAAC2NoZWNrUmFuZG9tAAAAAAQAAAAZcmFuZG9tUmVxdWVzdENvbW1pdGVkVHhJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwIAAAAPcmFuZG9tUmVxdWVzdFR4BAAAAA5yYW5kb21SZXNwb25zZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAARZEFwcFJhbmRvbUFkZHJlc3MFAAAAGXJhbmRvbVJlcXVlc3RDb21taXRlZFR4SWQEAAAABnN0YXR1cwkAAZEAAAACCQAEtQAAAAIFAAAADnJhbmRvbVJlc3BvbnNlAgAAAAFfAAAAAAAAAAAABAAAAAxyYW5kb21SZXN1bHQJAAGRAAAAAgkABLUAAAACBQAAAA5yYW5kb21SZXNwb25zZQIAAAACLS0AAAAAAAAAAAEDCQAAAAAAAAIFAAAABnN0YXR1cwIAAAAIRklOSVNIRUQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADHJhbmRvbVJlc3VsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABBQAAAAxyYW5kb21SZXN1bHQFAAAAA25pbAkAAAIAAAABAgAAABdJbmNvcnJlY3QgcmFuZG9tIHJlc3VsdAAAAApjb250ZXh0T2JqAQAAAA9kZWZpbmVUaGVXaW5uZXIAAAAABAAAAAxyYW5kb21SZXN1bHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADHJhbmRvbVJlc3VsdAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAAE2xvdHRlcnlUaWNrZXRIb2xkZXIJAAEsAAAAAgIAAAANd2lubmluZ1RpY2tldAkAAaQAAAABBQAAAAxyYW5kb21SZXN1bHQEAAAADHRpY2tldEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAATbG90dGVyeVRpY2tldEhvbGRlcgIAAAAMdGlja2V0QW1vdW50BAAAABJyYW5kb21SZXN1bHRVcGRhdGUDCQAAAAAAAAIFAAAADHJhbmRvbVJlc3VsdAUAAAAMdGlja2V0QW1vdW50AAAAAAAAAAABCQAAZAAAAAIFAAAADHJhbmRvbVJlc3VsdAAAAAAAAAAAAQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAMcmFuZG9tUmVzdWx0BQAAABJyYW5kb21SZXN1bHRVcGRhdGUFAAAAA25pbAQAAAANd2lubmVyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAATbG90dGVyeVRpY2tldEhvbGRlcgkAASwAAAACAgAAAAZ0aWNrZXQJAAGkAAAAAQUAAAAMcmFuZG9tUmVzdWx0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAx3aW5uZXJUaWNrZXQFAAAADHJhbmRvbVJlc3VsdAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAANd2lubmVyQWRkcmVzcwUAAAANd2lubmVyQWRkcmVzcwUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAQaGVpZ2h0U3RhcnRMZWFzZQAAAAAAAAAAAQQAAAAOaGVpZ2h0RW5kTGVhc2UAAAAA6NSlEAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABBMZWFzZVRyYW5zYWN0aW9uBAAAAAFsBQAAAAckbWF0Y2gwAwMDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAQaGVpZ2h0U3RhcnRMZWFzZQkAAGYAAAACBQAAAA5oZWlnaHRFbmRMZWFzZQUAAAAGaGVpZ2h0BwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwIAAAANd2lubmVyQWRkcmVzcwcJAAAAAAAAAggFAAAAAWwAAAAJcmVjaXBpZW50CQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA13aW5uZXJBZGRyZXNzBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAWTGVhc2VDYW5jZWxUcmFuc2FjdGlvbgQAAAACbGMFAAAAByRtYXRjaDADCQAAZgAAAAIFAAAABmhlaWdodAUAAAAQaGVpZ2h0U3RhcnRMZWFzZQkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAC293bmVyUHViS2V5BwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABBoZWlnaHRTdGFydExlYXNlCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAALb3duZXJQdWJLZXkHCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAALb3duZXJQdWJLZXk+yhqb", "chainId": 84, "height": 770648, "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 lotteryTicketHolder = Address(base58'3Mu96RWc3nT5wnJTqJfA2mpLmySLzCX7RZs')
5+
6+let lotteryOwner = "3N7FoakvCMRj7Ff4QTAxrCRmvjz5N61mEVQ"
7+
8+let ownerPubKey = base58'5gNqzDoW6dWERUDYpXSuzM89NXbvTA64cLAk8d7dQj9r'
9+
10+let dAppRandomAddress = Address(base58'3N4sv5AZhCTLydiGEF9FP4HwiSpg3RwqTAi')
11+
12+@Callable(contextObj)
13+func registerRandomRequestTx (randomRequestTx) = if (isDefined(getString(this, "randomRequestTx")))
14+ then throw("randomRequestTx is already in the state")
15+ else if (isDefined(transactionHeightById(fromBase58String(randomRequestTx))))
16+ then throw("You try register tx which is already in blockchain")
17+ else if ((contextObj.caller == addressFromString(lotteryOwner)))
18+ then WriteSet([DataEntry("randomRequestTx", randomRequestTx)])
19+ else throw("only owner can start the lottery")
20+
21+
22+
23+@Callable(contextObj)
24+func checkRandom () = {
25+ let randomRequestCommitedTxId = getStringValue(this, "randomRequestTx")
26+ let randomResponse = getStringValue(dAppRandomAddress, randomRequestCommitedTxId)
27+ let status = split(randomResponse, "_")[0]
28+ let randomResult = split(randomResponse, "--")[1]
29+ if ((status == "FINISHED"))
30+ then WriteSet([DataEntry("randomResult", parseIntValue(randomResult))])
31+ else throw("Incorrect random result")
32+ }
33+
34+
35+
36+@Callable(contextObj)
37+func defineTheWinner () = {
38+ let randomResult = getIntegerValue(this, "randomResult")
39+ if (isDefined(getInteger(lotteryTicketHolder, ("winningTicket" + toString(randomResult)))))
40+ then {
41+ let ticketAmount = getIntegerValue(lotteryTicketHolder, "ticketAmount")
42+ let randomResultUpdate = if ((randomResult == ticketAmount))
43+ then 1
44+ else (randomResult + 1)
45+ WriteSet([DataEntry("randomResult", randomResultUpdate)])
46+ }
47+ else {
48+ let winnerAddress = getStringValue(lotteryTicketHolder, ("ticket" + toString(randomResult)))
49+ WriteSet([DataEntry("winnerTicket", randomResult), DataEntry("winnerAddress", winnerAddress)])
50+ }
51+ }
52+
53+
54+@Verifier(tx)
55+func verify () = {
56+ let heightStartLease = 1
57+ let heightEndLease = 1000000000000
58+ match tx {
59+ case l: LeaseTransaction =>
60+ if (if (if ((height > heightStartLease))
61+ then (heightEndLease > height)
62+ else false)
63+ then isDefined(getString(this, "winnerAddress"))
64+ else false)
65+ then (l.recipient == addressFromString(getStringValue(this, "winnerAddress")))
66+ else false
67+ case lc: LeaseCancelTransaction =>
68+ if ((height > heightStartLease))
69+ then sigVerify(tx.bodyBytes, tx.proofs[0], ownerPubKey)
70+ else false
71+ case t: TransferTransaction =>
72+ if ((height > heightStartLease))
73+ then sigVerify(tx.bodyBytes, tx.proofs[0], ownerPubKey)
74+ else false
75+ case _ =>
76+ sigVerify(tx.bodyBytes, tx.proofs[0], ownerPubKey)
77+ }
78+ }
79+

github/deemru/w8io/169f3d6 
14.77 ms