tx · 9oiWzGwKxUiZajjpzdfMUexkdrGqHz4BRVywRBP7kBvF

3N5uzQBRwhLHDpXkQXKAKXLgsbfa9Sf2Hjf:  -0.01400000 Waves

2019.07.07 08:58 [574781] smart account 3N5uzQBRwhLHDpXkQXKAKXLgsbfa9Sf2Hjf > SELF 0.00000000 Waves

{ "type": 13, "id": "9oiWzGwKxUiZajjpzdfMUexkdrGqHz4BRVywRBP7kBvF", "fee": 1400000, "feeAssetId": null, "timestamp": 1562479091005, "version": 1, "sender": "3N5uzQBRwhLHDpXkQXKAKXLgsbfa9Sf2Hjf", "senderPublicKey": "35Xxuggtoeee4EV6BV6Y1s3pVar8eTJby7uFDU7i9tz6", "proofs": [ "eMQB3p6UusVhrS27jPhHPBQ2MU7A5BJ4GVsKgFKPy34YEcjxL8WmQsTPFufSRAZF6eEfEBfLZwwsEJKiybN4q4P" ], "script": "base64:AAIDAAAAAAAAAAAAAAAAAAAAAgAAAAFpAQAAAAdkZXBvc2l0AAAAAAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAIWNhbiBob2xkIHdhdmVzIG9ubHkgYXQgdGhlIG1vbWVudAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1jdXJyZW50QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAACmN1cnJlbnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAJbmV3QW1vdW50CQAAZAAAAAIFAAAADWN1cnJlbnRBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAApjdXJyZW50S2V5BQAAAAluZXdBbW91bnQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAEAAAAGYW1vdW50BAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADWN1cnJlbnRBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAAKY3VycmVudEtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAluZXdBbW91bnQJAABlAAAAAgUAAAANY3VycmVudEFtb3VudAUAAAAGYW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAAACAAAAAQIAAAAeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAluZXdBbW91bnQJAAACAAAAAQIAAAASTm90IGVub3VnaCBiYWxhbmNlCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAKY3VycmVudEtleQUAAAAJbmV3QW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5x8TPLg==", "chainId": 84, "height": 574781, "spentComplexity": 0 } View: original | compacted Prev: FbLfUuHxhBHJyyH9spkhGqtfp8TGDHhAHhYcFCX9LanU Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ServerPublicKey = base58'35Xxuggtoeee4EV6BV6Y1s3pVar8eTJby7uFDU7i9tz6'
5-
6-let RouletteSections = 21
7-
8-let DataGameIdKey = "APP_GAME_ID"
9-
10-let ErrorOnlyWavesAccepted = "error_only_waves_accepted"
11-
12-func NewGameId () = {
13- let gameNum = match getInteger(this, DataGameIdKey) {
14- case num: Int =>
15- num
16- case _ =>
17- 0
18- }
19- (gameNum + 1)
20- }
214
225
236 @Callable(i)
24-func GenerateRandInt (gameId,rsaSign) = {
25- let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), ServerPublicKey)
26- if (rsaSigValid)
27- then {
28- let rand = (toInt(sha256(toBytes(rsaSign))) % RouletteSections)
29- WriteSet([DataEntry("orig", toInt(sha256(toBytes(rsaSign)))), DataEntry("rand", rand)])
30- }
31- else throw("Invalid RSA signature")
32- }
33-
34-
35-
36-@Callable(i)
37-func bet (expectedResult) = {
38- let gameNumber = NewGameId()
39- let gameId = toBase58String(i.transactionId)
7+func deposit () = {
408 let pmt = extract(i.payment)
41- WriteSet([DataEntry("orig", ""), DataEntry("rand", "")])
42- }
43-
44-
45-
46-@Callable(i)
47-func bet111 (expectedResult) = {
48- let lastAuctionIdKey = "last_auction_id"
49- let lastAuctionId = match getInteger(this, lastAuctionIdKey) {
50- case a: Int =>
51- a
52- case _ =>
53- 0
54- }
55- let id = (lastAuctionId + 1)
56- let newAuctionId = toString(id)
57- let ownerWallet = toBase58String(i.caller.bytes)
58- let pmt = value(i.payment)
599 if (isDefined(pmt.assetId))
60- then throw(ErrorOnlyWavesAccepted)
10+ then throw("can hold waves only at the moment")
6111 else {
62- let assetId = toBase58String(value(pmt.assetId))
63- let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
64- let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
65- let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
66- let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
67- let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
68- let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
69- let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
70- let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
71- let userBalanceKey = ((("balance_" + ownerWallet) + "_") + assetId)
72- let currentAmount = match getInteger(this, userBalanceKey) {
12+ let currentKey = toBase58String(i.caller.bytes)
13+ let currentAmount = match getInteger(this, currentKey) {
7314 case a: Int =>
7415 a
7516 case _ =>
7617 0
7718 }
7819 let newAmount = (currentAmount + pmt.amount)
79- WriteSet([DataEntry(auctionLastBidKey, 0), DataEntry(auctionOwnerKey, ownerWallet), DataEntry(auctionAmountKey, pmt.amount), DataEntry(auctionAssetIdKey, assetId), DataEntry(userBalanceKey, newAmount), DataEntry(auctionIsActiveKey, true), DataEntry(auctionLastBidOwnerKey, ""), DataEntry(lastAuctionIdKey, id)])
20+ WriteSet([DataEntry(currentKey, newAmount)])
8021 }
8122 }
8223
8324
25+
26+@Callable(i)
27+func withdraw (amount) = {
28+ let currentKey = toBase58String(i.caller.bytes)
29+ let currentAmount = match getInteger(this, currentKey) {
30+ case a: Int =>
31+ a
32+ case _ =>
33+ 0
34+ }
35+ let newAmount = (currentAmount - amount)
36+ if ((0 > amount))
37+ then throw("Can't withdraw negative amount")
38+ else if ((0 > newAmount))
39+ then throw("Not enough balance")
40+ else ScriptResult(WriteSet([DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
41+ }
42+
43+
8444 @Verifier(tx)
85-func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
86- then match tx {
87- case stx: SetScriptTransaction =>
88- true
89- case _ =>
90- false
91- }
92- else false
45+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
9346

github/deemru/w8io/169f3d6 
21.00 ms