tx · 23uNSTdLVq9AJYdPTqaUC1sWqEtuiRFqzz63v1XtuaHh

3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT:  -0.01400000 Waves

2019.06.23 14:06 [554604] smart account 3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT > SELF 0.00000000 Waves

{ "type": 13, "id": "23uNSTdLVq9AJYdPTqaUC1sWqEtuiRFqzz63v1XtuaHh", "fee": 1400000, "feeAssetId": null, "timestamp": 1561288059932, "version": 1, "sender": "3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT", "senderPublicKey": "Bhyvkx4xdbEi4KPJNZSzx9gZgzgyLEsavuj2kYSt7SST", "proofs": [ "38LE3WA8oW37AQ53t59atfDdBFvMogEK1Ec69bp4CQmAQ9BQySGnNFphmky24oAKCQTDEpiBV7XMLPyP7Lk8Be8R" ], "script": "base64:AAIDAAAAAAAAAAAAAAADAAAAABZFcnJvck9ubHlXYXZlc0FjY2VwdGVkAgAAABllcnJvcl9vbmx5X3dhdmVzX2FjY2VwdGVkAAAAAA9TZXJ2ZXJQdWJsaWNLZXkBAAAAGgFUyizbHfX10DqIle41wD/n3rZAR7k35/dEAAAAABBSb3VsZXR0ZVNlY3Rpb25zAAAAAAAAAAAVAAAAAgAAAAFpAQAAAA9HZW5lcmF0ZVJhbmRJbnQAAAACAAAABmdhbWVJZAAAAAdyc2FTaWduBAAAAAtyc2FTaWdWYWxpZAkAAfQAAAADCQACWQAAAAEFAAAABmdhbWVJZAkAAlkAAAABBQAAAAdyc2FTaWduBQAAAA9TZXJ2ZXJQdWJsaWNLZXkDBQAAAAtyc2FTaWdWYWxpZAQAAAAEcmFuZAkAAGoAAAACCQAEsQAAAAEJAAH3AAAAAQkAAZsAAAABBQAAAAdyc2FTaWduBQAAABBSb3VsZXR0ZVNlY3Rpb25zCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAARvcmlnCQAEsQAAAAEJAAH3AAAAAQkAAZsAAAABBQAAAAdyc2FTaWduCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAARyYW5kBQAAAARyYW5kBQAAAANuaWwJAAACAAAAAQIAAAAVSW52YWxpZCBSU0Egc2lnbmF0dXJlAAAAAWkBAAAAA2JldAAAAAEAAAAOZXhwZWN0ZWRSZXN1bHQEAAAAEGxhc3RBdWN0aW9uSWRLZXkCAAAAD2xhc3RfYXVjdGlvbl9pZAQAAAANbGFzdEF1Y3Rpb25JZAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAABBsYXN0QXVjdGlvbklkS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAAmlkCQAAZAAAAAIFAAAADWxhc3RBdWN0aW9uSWQAAAAAAAAAAAEEAAAADG5ld0F1Y3Rpb25JZAkAAaQAAAABBQAAAAJpZAQAAAALb3duZXJXYWxsZXQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10CQEAAAAFdmFsdWUAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABBQAAABZFcnJvck9ubHlXYXZlc0FjY2VwdGVkBAAAAAdhc3NldElkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAASYXVjdGlvbkR1cmF0aW9uS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAJX2R1cmF0aW9uBAAAABBhdWN0aW9uTWluQmlkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAIX21pbl9iaWQEAAAAEWF1Y3Rpb25MYXN0QmlkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAJX2xhc3RfYmlkBAAAABZhdWN0aW9uTGFzdEJpZE93bmVyS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAPX2xhc3RfYmlkX293bmVyBAAAAA9hdWN0aW9uT3duZXJLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAZfb3duZXIEAAAAEGF1Y3Rpb25BbW91bnRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAdfYW1vdW50BAAAABFhdWN0aW9uQXNzZXRJZEtleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAACV9hc3NldF9pZAQAAAASYXVjdGlvbklzQWN0aXZlS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAKX2lzX2FjdGl2ZQQAAAAOdXNlckJhbGFuY2VLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGJhbGFuY2VfBQAAAAtvd25lcldhbGxldAIAAAABXwUAAAAHYXNzZXRJZAQAAAANY3VycmVudEFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAA51c2VyQmFsYW5jZUtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAluZXdBbW91bnQJAABkAAAAAgUAAAANY3VycmVudEFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEWF1Y3Rpb25MYXN0QmlkS2V5AAAAAAAAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9hdWN0aW9uT3duZXJLZXkFAAAAC293bmVyV2FsbGV0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABBhdWN0aW9uQW1vdW50S2V5CAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARYXVjdGlvbkFzc2V0SWRLZXkFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADnVzZXJCYWxhbmNlS2V5BQAAAAluZXdBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEmF1Y3Rpb25Jc0FjdGl2ZUtleQYJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFmF1Y3Rpb25MYXN0QmlkT3duZXJLZXkCAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAQbGFzdEF1Y3Rpb25JZEtleQUAAAACaWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAkAAGcAAAACCQAAZQAAAAIJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzCAUAAAADdHR4AAAABmFtb3VudAAAAAAAAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAA3N0eAUAAAAHJG1hdGNoMAYHBxmnuTI=", "chainId": 84, "height": 554604, "spentComplexity": 0 } View: original | compacted Prev: 31GxSwSmiVzH3wLTdCjjLf2WZjKuRhXvejftbzSt2Dqb Next: 469nR6kLbqvmHhEbJJUes3SiKNzuykLrQXUuhqW9G8Dx Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let ErrorOnlyWavesAccepted = "error_only_waves_accepted"
55
6-let publicKey = base58'3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT'
6+let ServerPublicKey = base58'3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT'
7+
8+let RouletteSections = 21
79
810 @Callable(i)
911 func GenerateRandInt (gameId,rsaSign) = {
10- let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), i.callerPublicKey)
12+ let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), ServerPublicKey)
1113 if (rsaSigValid)
1214 then {
13- let rand = (toInt(sha256(toBytes(rsaSign))) % 6)
15+ let rand = (toInt(sha256(toBytes(rsaSign))) % RouletteSections)
1416 WriteSet([DataEntry("orig", toInt(sha256(toBytes(rsaSign)))), DataEntry("rand", rand)])
1517 }
1618 else throw("Invalid RSA signature")
1719 }
18-
19-
20-
21-@Callable(i)
22-func SetData (k,v) = if ((k == "hello"))
23- then throw("NONONON!!")
24- else WriteSet([DataEntry(k, v)])
2520
2621
2722
6358 }
6459
6560
61+@Verifier(tx)
62+func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
63+ then match tx {
64+ case ttx: TransferTransaction =>
65+ ((wavesBalance(this) - ttx.amount) >= 0)
66+ case stx: SetScriptTransaction =>
67+ true
68+ case _ =>
69+ false
70+ }
71+ else false
72+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ErrorOnlyWavesAccepted = "error_only_waves_accepted"
55
6-let publicKey = base58'3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT'
6+let ServerPublicKey = base58'3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT'
7+
8+let RouletteSections = 21
79
810 @Callable(i)
911 func GenerateRandInt (gameId,rsaSign) = {
10- let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), i.callerPublicKey)
12+ let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), ServerPublicKey)
1113 if (rsaSigValid)
1214 then {
13- let rand = (toInt(sha256(toBytes(rsaSign))) % 6)
15+ let rand = (toInt(sha256(toBytes(rsaSign))) % RouletteSections)
1416 WriteSet([DataEntry("orig", toInt(sha256(toBytes(rsaSign)))), DataEntry("rand", rand)])
1517 }
1618 else throw("Invalid RSA signature")
1719 }
18-
19-
20-
21-@Callable(i)
22-func SetData (k,v) = if ((k == "hello"))
23- then throw("NONONON!!")
24- else WriteSet([DataEntry(k, v)])
2520
2621
2722
2823 @Callable(i)
2924 func bet (expectedResult) = {
3025 let lastAuctionIdKey = "last_auction_id"
3126 let lastAuctionId = match getInteger(this, lastAuctionIdKey) {
3227 case a: Int =>
3328 a
3429 case _ =>
3530 0
3631 }
3732 let id = (lastAuctionId + 1)
3833 let newAuctionId = toString(id)
3934 let ownerWallet = toBase58String(i.caller.bytes)
4035 let pmt = value(i.payment)
4136 if (isDefined(pmt.assetId))
4237 then throw(ErrorOnlyWavesAccepted)
4338 else {
4439 let assetId = toBase58String(value(pmt.assetId))
4540 let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
4641 let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
4742 let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
4843 let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
4944 let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
5045 let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
5146 let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
5247 let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
5348 let userBalanceKey = ((("balance_" + ownerWallet) + "_") + assetId)
5449 let currentAmount = match getInteger(this, userBalanceKey) {
5550 case a: Int =>
5651 a
5752 case _ =>
5853 0
5954 }
6055 let newAmount = (currentAmount + pmt.amount)
6156 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)])
6257 }
6358 }
6459
6560
61+@Verifier(tx)
62+func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
63+ then match tx {
64+ case ttx: TransferTransaction =>
65+ ((wavesBalance(this) - ttx.amount) >= 0)
66+ case stx: SetScriptTransaction =>
67+ true
68+ case _ =>
69+ false
70+ }
71+ else false
72+

github/deemru/w8io/6500d08 
42.05 ms