tx · BGB7PLb3ER7WNHsrj4QHnZrEXMDBEhRgiZ24uW5HXizg 3N1kVqVL4USL4Uoy2dEN6Rqk2pXhQgfsqUN: -0.01400000 Waves 2019.09.15 16:36 [677410] smart account 3N1kVqVL4USL4Uoy2dEN6Rqk2pXhQgfsqUN > SELF 0.00000000 Waves
{ "type": 13, "id": "BGB7PLb3ER7WNHsrj4QHnZrEXMDBEhRgiZ24uW5HXizg", "fee": 1400000, "feeAssetId": null, "timestamp": 1568554590039, "version": 1, "sender": "3N1kVqVL4USL4Uoy2dEN6Rqk2pXhQgfsqUN", "senderPublicKey": "6qNq3Wug6srPUuAQrggzvR3nvagzN3AzsR4fABCH1qMm", "proofs": [ "2nnB5eAko4T7GsZQS4LwEJvyZfJqB4sTK8TaVyHUPAZVcYKZJvwtc1s7ttvD6trGzruqo1v8ghvVdV9ScCmCvLU5" ], "script": "base64:AAIDAAAAAAAAAAAAAAAAAAAAAgAAAAFpAQAAAAZjcmVhdGUAAAABAAAAAnBrBAAAAAdwYXltZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIIBQAAAAFpAAAAB3BheW1lbnQCAAAAE1doZXJlIGlzIGEgcGF5bWVudD8DCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACRZb3UgY2FuIHVzZSBvbmx5IFdBVkVTIGF0IHRoZSBtb21lbnQEAAAACmNvZGVFeGlzdHMEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAJwawIAAAAFX3VzZWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAJAQAAAAEhAAAAAQUAAAABYgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAcJAQAAAAV0aHJvdwAAAAADBQAAAApjb2RlRXhpc3RzCQAAAgAAAAECAAAAD1RoZSBjb2RlIGV4aXN0cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAJwawIAAAAHX2Ftb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAAnBrAgAAAAVfdXNlZAcFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAACcGsAAAADc2lnBAAAAAhjb2RlVXNlZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGwAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAACcGsCAAAABV91c2VkAgAAABZUaGUgY29kZSBkb2Vzbid0IGV4aXN0AwUAAAAIY29kZVVzZWQJAAACAAAAAQIAAAAeVGhlIGNvZGUgaGFzIGFscmVhZHkgYmVlbiB1c2VkAwMJAABmAAAAAggFAAAAAWkAAAADZmVlAAAAAAAAB6EgBgkBAAAAAiE9AAAAAggFAAAAAWkAAAAKZmVlQXNzZXRJZAUAAAAEdW5pdAkAAAIAAAABAgAAAC1GZWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMC4wMDUgV0FWRVMEAAAABXZhbGlkCQAB9AAAAAMIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAlkAAAABBQAAAANzaWcJAAJZAAAAAQUAAAACcGsDCQEAAAABIQAAAAEFAAAABXZhbGlkCQAAAgAAAAECAAAADEludmFsaWQgY29kZQQAAAAGYW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAAnBrAgAAAAdfYW1vdW50CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAJwawIAAAAFX3VzZWQGBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAZAAAAAIFAAAABmFtb3VudAgFAAAAAWkAAAADZmVlBQAAAAR1bml0BQAAAANuaWwAAAAAR3Z8EQ==", "chainId": 84, "height": 677410, "spentComplexity": 0 } View: original | compacted Prev: G9s1UWtKRvZpv2H2KcB16kJbkeRZ2VQvMFUkxUU5txsp Next: 3FDc8DWkU3aGmDiMq5BjhMLCRYbeSN3w45vQ8bjGy6Go Diff:
Old | New | Differences | |
---|---|---|---|
36 | 36 | then throw("Fee must be less than or equal to 0.005 WAVES") | |
37 | 37 | else { | |
38 | 38 | let valid = sigVerify(i.callerPublicKey, fromBase58String(sig), fromBase58String(pk)) | |
39 | - | let amount = getIntegerValue(this, (pk + "_amount")) | |
40 | - | ScriptResult(WriteSet([DataEntry((pk + "_used"), true)]), TransferSet([ScriptTransfer(i.caller, (amount + i.fee), unit)])) | |
39 | + | if (!(valid)) | |
40 | + | then throw("Invalid code") | |
41 | + | else { | |
42 | + | let amount = getIntegerValue(this, (pk + "_amount")) | |
43 | + | ScriptResult(WriteSet([DataEntry((pk + "_used"), true)]), TransferSet([ScriptTransfer(i.caller, (amount + i.fee), unit)])) | |
44 | + | } | |
41 | 45 | } | |
42 | 46 | } | |
43 | 47 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | ||
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | 7 | func create (pk) = { | |
8 | 8 | let payment = valueOrErrorMessage(i.payment, "Where is a payment?") | |
9 | 9 | if (isDefined(payment.assetId)) | |
10 | 10 | then throw("You can use only WAVES at the moment") | |
11 | 11 | else { | |
12 | 12 | let codeExists = match getBoolean(this, (pk + "_used")) { | |
13 | 13 | case b: Boolean => | |
14 | 14 | !(b) | |
15 | 15 | case _: Unit => | |
16 | 16 | false | |
17 | 17 | case _ => | |
18 | 18 | throw() | |
19 | 19 | } | |
20 | 20 | if (codeExists) | |
21 | 21 | then throw("The code exists") | |
22 | 22 | else WriteSet([DataEntry((pk + "_amount"), payment.amount), DataEntry((pk + "_used"), false)]) | |
23 | 23 | } | |
24 | 24 | } | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | ||
28 | 28 | @Callable(i) | |
29 | 29 | func withdraw (pk,sig) = { | |
30 | 30 | let codeUsed = valueOrErrorMessage(getBoolean(this, (pk + "_used")), "The code doesn't exist") | |
31 | 31 | if (codeUsed) | |
32 | 32 | then throw("The code has already been used") | |
33 | 33 | else if (if ((i.fee > 500000)) | |
34 | 34 | then true | |
35 | 35 | else (i.feeAssetId != unit)) | |
36 | 36 | then throw("Fee must be less than or equal to 0.005 WAVES") | |
37 | 37 | else { | |
38 | 38 | let valid = sigVerify(i.callerPublicKey, fromBase58String(sig), fromBase58String(pk)) | |
39 | - | let amount = getIntegerValue(this, (pk + "_amount")) | |
40 | - | ScriptResult(WriteSet([DataEntry((pk + "_used"), true)]), TransferSet([ScriptTransfer(i.caller, (amount + i.fee), unit)])) | |
39 | + | if (!(valid)) | |
40 | + | then throw("Invalid code") | |
41 | + | else { | |
42 | + | let amount = getIntegerValue(this, (pk + "_amount")) | |
43 | + | ScriptResult(WriteSet([DataEntry((pk + "_used"), true)]), TransferSet([ScriptTransfer(i.caller, (amount + i.fee), unit)])) | |
44 | + | } | |
41 | 45 | } | |
42 | 46 | } | |
43 | 47 | ||
44 | 48 |
github/deemru/w8io/026f985 38.72 ms ◑