tx · HbiHUske5tU1k2Lvr3hBomZ8JYodoipHFJEb42EN2j9G 3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh: -0.01400000 Waves 2021.05.06 13:04 [2578327] smart account 3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh > SELF 0.00000000 Waves
{ "type": 13, "id": "HbiHUske5tU1k2Lvr3hBomZ8JYodoipHFJEb42EN2j9G", "fee": 1400000, "feeAssetId": null, "timestamp": 1620295519943, "version": 2, "chainId": 87, "sender": "3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh", "senderPublicKey": "2y6AczxE1vbz7NGP9N4eeTMDqhDgXT8Tc3xhM792K3GP", "proofs": [ "48xgfSHprBj3fNHwcp3qyJfBmKykEyBLEA8QWj3afBVMdUU3oLXYZakTHUWoU4Etwt3pGd8wxZDQEBbAPPQJ91L" ], "script": "base64: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RW50cnkAAAACCQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9ySGF0Y2hpbmcFAAAAA25pbAAAAAFpAQAAABJmaW5pc2hEdWNrSGF0Y2hpbmcAAAABAAAAB3R4SWRTdHIEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAlkdWNrSWRLZXkJAQAAAAxnZXREdWNrSWRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAQaGF0Y2hpbmdUeFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAARaGF0Y2hpbmdTdGF0dXNLZXkEAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9maW5pc2hIZWlnaHRLZXkDCQAAAAAAAAIFAAAAEGhhdGNoaW5nVHhTdGF0dXMFAAAAEEhhdGNoaW5nRmluaXNoZWQEAAAABmR1Y2tJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAADGdldER1Y2tJZEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkCQAAAgAAAAEJAAEsAAAAAgIAAABAVGhlIGR1Y2sgd2FzIGhhdGNoZWQgYW5kIGNsYWltZWQgYWxyZWFkeSwgaGVyZSBpcyB0aGUgZm9sb3dpbmc6IAUAAAAGZHVja0lkAwkAAGYAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdSGF0Y2hpbmcgaXMgbm90IGZpbmlzaGVkIHlldCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAACcgYmxvY2tzIHJlbWFpbmluZywgaXQgd2lsbCB0YWtlIGFyb3VuZCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAAAggbWludXRlcwQAAAAIZHVja05hbWUJAQAAAA1nZXRSYW5kb21OYW1lAAAAAgUAAAAEdHhJZAUAAAAUaGF0Y2hpbmdGaW5pc2hIZWlnaHQEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAACGR1Y2tOYW1lAgAAABkiLCAiY3Jvc3NicmVlZGluZyI6IHRydWV9BAAAAAVhc3NldAkABEMAAAAHBQAAAAhkdWNrTmFtZQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVhc3NldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlkdWNrSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACWR1Y2tJZEtleQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5msYoSw==", "height": 2578327, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HLr2MQEaKAgAagddwYBWcqsLWCtmodNjzp2Yum6LYaRS Next: 9VnH59yztc9D9enk7TvrXiggNHhBkk65FtzoJ2XL8FNh Diff:
Old | New | Differences | |
---|---|---|---|
55 | 55 | ||
56 | 56 | ||
57 | 57 | @Callable(s) | |
58 | - | func finishDuckHatching (h) = { | |
59 | - | let u = f(toString(s.caller), h) | |
60 | - | let v = i(toString(s.caller), h) | |
61 | - | let w = j(toString(s.caller), h) | |
62 | - | let x = getStringValue(this, u) | |
63 | - | let m = getIntegerValue(this, v) | |
64 | - | if ((x == e)) | |
58 | + | func finishDuckHatching (u) = { | |
59 | + | let h = fromBase58String(u) | |
60 | + | let v = f(toString(s.caller), h) | |
61 | + | let w = i(toString(s.caller), h) | |
62 | + | let x = j(toString(s.caller), h) | |
63 | + | let y = getStringValue(this, v) | |
64 | + | let m = getIntegerValue(this, w) | |
65 | + | if ((y == e)) | |
65 | 66 | then { | |
66 | - | let | |
67 | - | throw(("The duck was hatched and claimed already, here is the folowing: " + | |
67 | + | let z = getStringValue(this, j(toString(s.caller), h)) | |
68 | + | throw(("The duck was hatched and claimed already, here is the folowing: " + z)) | |
68 | 69 | } | |
69 | 70 | else if ((m > height)) | |
70 | 71 | then throw((((("Hatching is not finished yet " + toString((m - height))) + " blocks remaining, it will take around ") + toString((m - height))) + " minutes")) | |
71 | 72 | else { | |
72 | - | let | |
73 | - | let | |
74 | - | let | |
75 | - | let | |
76 | - | [StringEntry( | |
73 | + | let A = o(h, m) | |
74 | + | let B = (("{\"genotype\": \"" + A) + "\", \"crossbreeding\": true}") | |
75 | + | let C = Issue(A, B, 1, 0, false, unit, m) | |
76 | + | let D = calculateAssetId(C) | |
77 | + | [StringEntry(v, e), StringEntry(x, toBase58String(D)), StringEntry(toBase58String(D), x), ScriptTransfer(s.caller, 1, D)] | |
77 | 78 | } | |
78 | 79 | } | |
79 | 80 | ||
80 | 81 | ||
81 | - | @Verifier( | |
82 | - | func | |
82 | + | @Verifier(E) | |
83 | + | func F () = sigVerify(E.bodyBytes, E.proofs[0], E.senderPublicKey) | |
83 | 84 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = base58'53bLXGQhnMxAoiWnza2SJQRp7hNQZVHnyrRziLmwdVjb' | |
5 | 5 | ||
6 | 6 | let b = 1000 | |
7 | 7 | ||
8 | 8 | let c = 0 | |
9 | 9 | ||
10 | 10 | let d = "HATCHING_STARTED" | |
11 | 11 | ||
12 | 12 | let e = "HATCHING_FINISHED" | |
13 | 13 | ||
14 | 14 | func f (g,h) = (((g + "_") + toBase58String(h)) + "_status") | |
15 | 15 | ||
16 | 16 | ||
17 | 17 | func i (g,h) = (((g + "_") + toBase58String(h)) + "_fh") | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | func j (g,h) = (((g + "_") + toBase58String(h)) + "_di") | |
21 | 21 | ||
22 | 22 | ||
23 | 23 | func k (l,h,m) = { | |
24 | 24 | let n = value(blockInfoByHeight(m)) | |
25 | 25 | (toInt((value(n.vrf) + h), 10) % l) | |
26 | 26 | } | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | func o (h,m) = { | |
30 | 30 | let p = k(2, h, m) | |
31 | 31 | let q = k(4, h, m) | |
32 | 32 | let r = if ((q == 0)) | |
33 | 33 | then "Y" | |
34 | 34 | else if ((q == 1)) | |
35 | 35 | then "G" | |
36 | 36 | else if ((q == 2)) | |
37 | 37 | then "B" | |
38 | 38 | else "R" | |
39 | 39 | if ((p == 0)) | |
40 | 40 | then ("DUCK-AAAAAAAA-G" + r) | |
41 | 41 | else ("DUCK-BBBBBBBB-G" + r) | |
42 | 42 | } | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | @Callable(s) | |
46 | 46 | func startDuckHatching () = { | |
47 | 47 | let t = value(s.payments[0]) | |
48 | 48 | if ((t.assetId != a)) | |
49 | 49 | then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a))) | |
50 | 50 | else if ((t.amount != b)) | |
51 | 51 | then throw("You can attach only EXACTLY 10 EGG tokens ") | |
52 | 52 | else [StringEntry(f(toString(s.caller), s.transactionId), d), IntegerEntry(i(toString(s.caller), s.transactionId), (height + c))] | |
53 | 53 | } | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | ||
57 | 57 | @Callable(s) | |
58 | - | func finishDuckHatching (h) = { | |
59 | - | let u = f(toString(s.caller), h) | |
60 | - | let v = i(toString(s.caller), h) | |
61 | - | let w = j(toString(s.caller), h) | |
62 | - | let x = getStringValue(this, u) | |
63 | - | let m = getIntegerValue(this, v) | |
64 | - | if ((x == e)) | |
58 | + | func finishDuckHatching (u) = { | |
59 | + | let h = fromBase58String(u) | |
60 | + | let v = f(toString(s.caller), h) | |
61 | + | let w = i(toString(s.caller), h) | |
62 | + | let x = j(toString(s.caller), h) | |
63 | + | let y = getStringValue(this, v) | |
64 | + | let m = getIntegerValue(this, w) | |
65 | + | if ((y == e)) | |
65 | 66 | then { | |
66 | - | let | |
67 | - | throw(("The duck was hatched and claimed already, here is the folowing: " + | |
67 | + | let z = getStringValue(this, j(toString(s.caller), h)) | |
68 | + | throw(("The duck was hatched and claimed already, here is the folowing: " + z)) | |
68 | 69 | } | |
69 | 70 | else if ((m > height)) | |
70 | 71 | then throw((((("Hatching is not finished yet " + toString((m - height))) + " blocks remaining, it will take around ") + toString((m - height))) + " minutes")) | |
71 | 72 | else { | |
72 | - | let | |
73 | - | let | |
74 | - | let | |
75 | - | let | |
76 | - | [StringEntry( | |
73 | + | let A = o(h, m) | |
74 | + | let B = (("{\"genotype\": \"" + A) + "\", \"crossbreeding\": true}") | |
75 | + | let C = Issue(A, B, 1, 0, false, unit, m) | |
76 | + | let D = calculateAssetId(C) | |
77 | + | [StringEntry(v, e), StringEntry(x, toBase58String(D)), StringEntry(toBase58String(D), x), ScriptTransfer(s.caller, 1, D)] | |
77 | 78 | } | |
78 | 79 | } | |
79 | 80 | ||
80 | 81 | ||
81 | - | @Verifier( | |
82 | - | func | |
82 | + | @Verifier(E) | |
83 | + | func F () = sigVerify(E.bodyBytes, E.proofs[0], E.senderPublicKey) | |
83 | 84 |
github/deemru/w8io/873ac7e 50.07 ms ◑![]()