tx · EfWQ7CUKSC7EEC7YT23JzPyqyJyBNPkzTj1EEnJmjp1B
3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe: -0.01400000 Waves
2020.11.17 05:08 [1268742] smart account 3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe > SELF 0.00000000 Waves
{
"type": 13,
"id": "EfWQ7CUKSC7EEC7YT23JzPyqyJyBNPkzTj1EEnJmjp1B",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1605578898599,
"version": 2,
"chainId": 84,
"sender": "3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe",
"senderPublicKey": "9GE2xN4fms9YNDxR1hGg52RynqDd8125TA42g4X29ZV7",
"proofs": [
"QSHMDskxJqX5z2Ng4R647YRn1btdCncNiqfF77ro9WYPPJFhV3dacCN75iC1Mor5yMoouZUsiB44GcHLLuYcvBZ"
],
"script": "base64:AAIEAAAAAAAAABsIAhIFCgMIAQgSBQoDCAEIEgQKAggIEgMKAQgAAAAEAAAAAAJjZgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABAgAAACxKN3Z5b1VBOEdkNVFNcTRZVnRlZHB2MTlkd0NZcm9aRVlyTjhiS2dMenFWOAAAAAAEb3BicgEAAAAg8w+nJ903R+IZ8oK5CbdbBTqw7e4xxmj9cHNLUMCmE7gBAAAAEGdldEFsbG93ZWRUb2tlbnMAAAABAAAAB3Rva2VuSWQEAAAABWFsbG93BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAB3Rva2VuSWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQcFAAAABWFsbG93AQAAAAx2ZXJpZmljYXRpb24AAAACAAAAAW0AAAABcwQAAAAGZ2V0TXNnCQABmwAAAAEJAAJYAAAAAQkAAfUAAAABCQAB9gAAAAEJAAGbAAAAAQUAAAABbQkAAfQAAAADBQAAAAZnZXRNc2cJAAJZAAAAAQUAAAABcwEAAAAgpWuYTJkQ0dRWNcb7bjGZbZVFC3YZaB6XaXmfzBC8wysAAAAEAAAAAWkBAAAACG9wYnJUZXN0AAAAAwAAAAd0b2tlbklkAAAAA3F0ZAAAAANzaWcEAAAAA3BtdAgFAAAAAWkAAAAIcGF5bWVudHMDCQAAAAAAAAIFAAAAB3Rva2VuSWQCAAAACWtqZmxrZHNqZgkAAAIAAAABAgAAAARuYWRhCQAAAgAAAAEJAAEsAAAAAgUAAAAHdG9rZW5JZAkAAaQAAAABCQAAZAAAAAIFAAAAA3F0ZAgJAAGRAAAAAgUAAAADcG10AAAAAAAAAAAAAAAABmFtb3VudAAAAAFpAQAAAAdvcGJyQnV5AAAAAwAAAAd0b2tlbklkAAAAA3F0ZAAAAANzaWcEAAAACWJ1eWVyQWRkcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQIBQAAAAFpAAAACHBheW1lbnRzBAAAAAdhbGxvd2VkCQEAAAAQZ2V0QWxsb3dlZFRva2VucwAAAAEFAAAAB3Rva2VuSWQDCQAAAAAAAAIJAAGQAAAAAQUAAAADcG10AAAAAAAAAAAACQAAAgAAAAECAAAAIVBheW1lbnQgZm9yIGV4Y2hhbmdlIGlzIG1hbmRhdG9yeQMJAAAAAAAAAgkAAZAAAAABBQAAAANwbXQAAAAAAAAAAAIJAAACAAAAAQIAAAArT25seSBvbmUgcGF5bWVudCBwZXIgdHJhbnNhY3Rpb24gaXMgYWxsb3dlZAMJAQAAAAEhAAAAAQkBAAAADHZlcmlmaWNhdGlvbgAAAAIJAAEsAAAAAgUAAAAHdG9rZW5JZAkAAaQAAAABCQAAZAAAAAIFAAAAA3F0ZAgJAAGRAAAAAgUAAAADcG10AAAAAAAAAAAAAAAABmFtb3VudAUAAAADc2lnCQAAAgAAAAECAAAAEFN0b3AgaGFja2luZyBtZSEDAwkBAAAACWlzRGVmaW5lZAAAAAEICQABkQAAAAIFAAAAA3BtdAAAAAAAAAAAAAAAAAdhc3NldElkCQAAAAAAAAIFAAAAB2FsbG93ZWQHBwkAAAIAAAABAgAAAB5UaGUgdXNlZCB0b2tlbiBpcyBub3QgYWNjZXB0ZWQDAwkBAAAACWlzRGVmaW5lZAAAAAEICQABkQAAAAIFAAAAA3BtdAAAAAAAAAAAAAAAAAdhc3NldElkCQEAAAACIT0AAAACCQACWQAAAAEFAAAAB3Rva2VuSWQICQABkQAAAAIFAAAAA3BtdAAAAAAAAAAAAAAAAAdhc3NldElkBwkAAAIAAAABAgAAADBkZWNsYXJlZCB0b2tlbiBpcyBkaWZmZXJlbnQgZnJvbSBzdWJtaXR0ZWQgdG9rZW4EAAAAAWMJAABrAAAAAwAAAAAAAAAAAQgJAAGRAAAAAgUAAAADcG10AAAAAAAAAAAAAAAABmFtb3VudAAAAAAAAAAAZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAA3F0ZAUAAAAEb3BicgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAJjZgUAAAABYwgJAAGRAAAAAgUAAAADcG10AAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAl0b2tlbkxpc3QAAAACAAAAB3Rva2VuSWQAAAAGdGlja2VyBAAAAARBZGRyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDAwkBAAAAAiE9AAAAAgUAAAAEQWRkcgkABCUAAAABBQAAAAR0aGlzCQEAAAACIT0AAAACBQAAAARBZGRyCQAEJQAAAAEFAAAAAmNmBwkAAAIAAAABAgAAACxUaGUgYWRkcmVzcyBpcyBub3QgYXV0aG9yaXplZCB0byBsaXN0IHRva2VucwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAd0b2tlbklkBQAAAAZ0aWNrZXIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAACY2YAAAAAAAAPQkAFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAt0b2tlbkRlbGlzdAAAAAEAAAAHdG9rZW5JZAQAAAAEQWRkcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwMJAQAAAAIhPQAAAAIFAAAABEFkZHIJAAQlAAAAAQUAAAAEdGhpcwkBAAAAAiE9AAAAAgUAAAAEQWRkcgkABCUAAAABBQAAAAJjZgcJAAACAAAAAQIAAAAuVGhlIGFkZHJlc3MgaXMgbm90IGF1dGhvcml6ZWQgdG8gZGVsaXN0IHRva2VucwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAd0b2tlbklkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAAmNmAAAAAAAAmJaABQAAAAR1bml0BQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tlea/4Das=",
"height": 1268742,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: xZLTLdg6yRMZ6osQ2mRkCHnjPpXnFNztw3JyhcN3jjC
Next: 4qV9EVJ5ZQ2mwaVux3ysFBJV5aJUu8Mo82tqbkPRN1Mt
Diff:
Old | New | | Differences |
---|
26 | 26 | | |
---|
27 | 27 | | |
---|
28 | 28 | | @Callable(l) |
---|
| 29 | + | func opbrTest (d,m,n) = { |
---|
| 30 | + | let o = l.payments |
---|
| 31 | + | if ((d == "kjflkdsjf")) |
---|
| 32 | + | then throw("nada") |
---|
| 33 | + | else throw((d + toString((m + o[0].amount)))) |
---|
| 34 | + | } |
---|
| 35 | + | |
---|
| 36 | + | |
---|
| 37 | + | |
---|
| 38 | + | @Callable(l) |
---|
29 | 39 | | func opbrBuy (d,m,n) = { |
---|
30 | | - | let o = toBase58String(l.caller.bytes) |
---|
31 | | - | let p = l.payments |
---|
| 40 | + | let p = toBase58String(l.caller.bytes) |
---|
| 41 | + | let o = l.payments |
---|
32 | 42 | | let q = c(d) |
---|
33 | | - | if ((size(p) == 0)) |
---|
| 43 | + | if ((size(o) == 0)) |
---|
34 | 44 | | then throw("Payment for exchange is mandatory") |
---|
35 | | - | else if ((size(p) == 2)) |
---|
| 45 | + | else if ((size(o) == 2)) |
---|
36 | 46 | | then throw("Only one payment per transaction is allowed") |
---|
37 | | - | else if (!(h((d + toString((m + p[0].amount))), n))) |
---|
| 47 | + | else if (!(h((d + toString((m + o[0].amount))), n))) |
---|
38 | 48 | | then throw("Stop hacking me!") |
---|
39 | | - | else if (if (isDefined(p[0].assetId)) |
---|
| 49 | + | else if (if (isDefined(o[0].assetId)) |
---|
40 | 50 | | then (q == false) |
---|
41 | 51 | | else false) |
---|
42 | 52 | | then throw("The used token is not accepted") |
---|
43 | | - | else if (if (isDefined(p[0].assetId)) |
---|
44 | | - | then (fromBase58String(d) != p[0].assetId) |
---|
| 53 | + | else if (if (isDefined(o[0].assetId)) |
---|
| 54 | + | then (fromBase58String(d) != o[0].assetId) |
---|
45 | 55 | | else false) |
---|
46 | 56 | | then throw("declared token is different from submitted token") |
---|
47 | 57 | | else { |
---|
48 | | - | let r = fraction(1, p[0].amount, 100) |
---|
49 | | - | [ScriptTransfer(l.caller, m, b), ScriptTransfer(a, r, p[0].assetId)] |
---|
| 58 | + | let r = fraction(1, o[0].amount, 100) |
---|
| 59 | + | [ScriptTransfer(l.caller, m, b), ScriptTransfer(a, r, o[0].assetId)] |
---|
50 | 60 | | } |
---|
51 | 61 | | } |
---|
52 | 62 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 4 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = addressFromPublicKey(fromBase58String("J7vyoUA8Gd5QMq4YVtedpv19dwCYroZEYrN8bKgLzqV8")) |
---|
5 | 5 | | |
---|
6 | 6 | | let b = base58'HMov2457acf5MEJr85fvXYL3vrTEevFpsEQkHh1yfdUT' |
---|
7 | 7 | | |
---|
8 | 8 | | func c (d) = { |
---|
9 | 9 | | let e = { |
---|
10 | 10 | | let f = getString(this, d) |
---|
11 | 11 | | if ($isInstanceOf(f, "String")) |
---|
12 | 12 | | then { |
---|
13 | 13 | | let g = f |
---|
14 | 14 | | g |
---|
15 | 15 | | } |
---|
16 | 16 | | else false |
---|
17 | 17 | | } |
---|
18 | 18 | | e |
---|
19 | 19 | | } |
---|
20 | 20 | | |
---|
21 | 21 | | |
---|
22 | 22 | | func h (i,j) = { |
---|
23 | 23 | | let k = toBytes(toBase58String(keccak256(blake2b256(toBytes(i))))) |
---|
24 | 24 | | sigVerify(k, fromBase58String(j), base58'C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS') |
---|
25 | 25 | | } |
---|
26 | 26 | | |
---|
27 | 27 | | |
---|
28 | 28 | | @Callable(l) |
---|
| 29 | + | func opbrTest (d,m,n) = { |
---|
| 30 | + | let o = l.payments |
---|
| 31 | + | if ((d == "kjflkdsjf")) |
---|
| 32 | + | then throw("nada") |
---|
| 33 | + | else throw((d + toString((m + o[0].amount)))) |
---|
| 34 | + | } |
---|
| 35 | + | |
---|
| 36 | + | |
---|
| 37 | + | |
---|
| 38 | + | @Callable(l) |
---|
29 | 39 | | func opbrBuy (d,m,n) = { |
---|
30 | | - | let o = toBase58String(l.caller.bytes) |
---|
31 | | - | let p = l.payments |
---|
| 40 | + | let p = toBase58String(l.caller.bytes) |
---|
| 41 | + | let o = l.payments |
---|
32 | 42 | | let q = c(d) |
---|
33 | | - | if ((size(p) == 0)) |
---|
| 43 | + | if ((size(o) == 0)) |
---|
34 | 44 | | then throw("Payment for exchange is mandatory") |
---|
35 | | - | else if ((size(p) == 2)) |
---|
| 45 | + | else if ((size(o) == 2)) |
---|
36 | 46 | | then throw("Only one payment per transaction is allowed") |
---|
37 | | - | else if (!(h((d + toString((m + p[0].amount))), n))) |
---|
| 47 | + | else if (!(h((d + toString((m + o[0].amount))), n))) |
---|
38 | 48 | | then throw("Stop hacking me!") |
---|
39 | | - | else if (if (isDefined(p[0].assetId)) |
---|
| 49 | + | else if (if (isDefined(o[0].assetId)) |
---|
40 | 50 | | then (q == false) |
---|
41 | 51 | | else false) |
---|
42 | 52 | | then throw("The used token is not accepted") |
---|
43 | | - | else if (if (isDefined(p[0].assetId)) |
---|
44 | | - | then (fromBase58String(d) != p[0].assetId) |
---|
| 53 | + | else if (if (isDefined(o[0].assetId)) |
---|
| 54 | + | then (fromBase58String(d) != o[0].assetId) |
---|
45 | 55 | | else false) |
---|
46 | 56 | | then throw("declared token is different from submitted token") |
---|
47 | 57 | | else { |
---|
48 | | - | let r = fraction(1, p[0].amount, 100) |
---|
49 | | - | [ScriptTransfer(l.caller, m, b), ScriptTransfer(a, r, p[0].assetId)] |
---|
| 58 | + | let r = fraction(1, o[0].amount, 100) |
---|
| 59 | + | [ScriptTransfer(l.caller, m, b), ScriptTransfer(a, r, o[0].assetId)] |
---|
50 | 60 | | } |
---|
51 | 61 | | } |
---|
52 | 62 | | |
---|
53 | 63 | | |
---|
54 | 64 | | |
---|
55 | 65 | | @Callable(l) |
---|
56 | 66 | | func tokenList (d,s) = { |
---|
57 | 67 | | let t = toBase58String(l.caller.bytes) |
---|
58 | 68 | | if (if ((t != toString(this))) |
---|
59 | 69 | | then (t != toString(a)) |
---|
60 | 70 | | else false) |
---|
61 | 71 | | then throw("The address is not authorized to list tokens") |
---|
62 | 72 | | else [StringEntry(d, s), ScriptTransfer(a, 1000000, unit)] |
---|
63 | 73 | | } |
---|
64 | 74 | | |
---|
65 | 75 | | |
---|
66 | 76 | | |
---|
67 | 77 | | @Callable(l) |
---|
68 | 78 | | func tokenDelist (d) = { |
---|
69 | 79 | | let t = toBase58String(l.caller.bytes) |
---|
70 | 80 | | if (if ((t != toString(this))) |
---|
71 | 81 | | then (t != toString(a)) |
---|
72 | 82 | | else false) |
---|
73 | 83 | | then throw("The address is not authorized to delist tokens") |
---|
74 | 84 | | else [DeleteEntry(d), ScriptTransfer(a, 10000000, unit)] |
---|
75 | 85 | | } |
---|
76 | 86 | | |
---|
77 | 87 | | |
---|
78 | 88 | | @Verifier(u) |
---|
79 | 89 | | func v () = sigVerify(u.bodyBytes, u.proofs[0], u.senderPublicKey) |
---|
80 | 90 | | |
---|