tx · FFfGvxM1taiRhZrVSyuWPdVmP3nuuBRmvBXsmBg6VZk2 3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb: -0.01000000 Waves 2022.05.12 12:01 [2048255] smart account 3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb > SELF 0.00000000 Waves
{ "type": 13, "id": "FFfGvxM1taiRhZrVSyuWPdVmP3nuuBRmvBXsmBg6VZk2", "fee": 1000000, "feeAssetId": null, "timestamp": 1652346134451, "version": 2, "chainId": 84, "sender": "3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb", "senderPublicKey": "FWSsBbeCwLVkekWhvNKtX6JkrZiruRybKKVuiS3F4bqN", "proofs": [ "5MWn8UwJfwvLcNYzuk6pqGP3ZSjD684zwHFsZA2QLJvzfVLq3dWZ6ywMRuwgxztiU7QRgLahU8sxQ5hCr3aaHZnY" ], "script": "base64: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AAIFAAAACWFzc2V0VHlwZQIAAAABXwkAAlgAAAABBQAAAAR0eElkAQAAABBnZXRBc3NldE93bmVyS2V5AAAAAgAAAAR0eElkAAAACWFzc2V0VHlwZQkAASwAAAACCQEAAAANZ2V0QXNzZXRJZEtleQAAAAIFAAAABHR4SWQFAAAACWFzc2V0VHlwZQIAAAAGX093bmVyAQAAABZnZXRBc3NldE93bmVyS2V5U3RyaW5nAAAAAQAAAAdhc3NldElkCQABLAAAAAIFAAAAB2Fzc2V0SWQCAAAABl9Pd25lcgEAAAAaZ2V0QnVpbGRpbmdGaW5pc2hIZWlnaHRLZXkAAAADAAAAB2FkZHJlc3MAAAAEdHhJZAAAAAlhc3NldFR5cGUJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAAAV8JAQAAAA1nZXRBc3NldElkS2V5AAAAAgUAAAAEdHhJZAUAAAAJYXNzZXRUeXBlAgAAAANfZmgBAAAAFGdldEJ1aWxkaW5nU3RhdHVzS2V5AAAAAwAAAAdhZGRyZXNzAAAABHR4SWQAAAAJYXNzZXRUeXBlCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAAFfCQEAAAANZ2V0QXNzZXRJZEtleQAAAAIFAAAABHR4SWQFAAAACWFzc2V0VHlwZQIAAAAHX3N0YXR1cwEAAAAOZ2V0VHJlYXN1cnlLZXkAAAABAAAACG5hdGlvbmlkCQABLAAAAAIFAAAACG5hdGlvbmlkAgAAAAlfVHJlYXN1cnkBAAAACmNoZWNrQWRtaW4AAAABAAAABmNhbGxlcgMDAwMJAAAAAAAAAgUAAAAGY2FsbGVyBQAAAAxhZG1pbkFkZHJlc3MGCQAAAAAAAAIFAAAABmNhbGxlcgUAAAAEdGhpcwYJAAAAAAAAAggFAAAABmNhbGxlcgAAAAVieXRlcwUAAAAObmF0aW9uc0FkZHJlc3MGCQAAAAAAAAIIBQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAAD3RyZWFzdXJ5QWRkcmVzcwYJAAAAAAAAAggFAAAABmNhbGxlcgAAAAVieXRlcwUAAAASbWFya2V0cGxhY2VBZGRyZXNzAQAAABNpbnRlcm5hbEZpbmlzaEJ1aWxkAAAABQAAAAZjYWxsZXIAAAAIYXNzZXRTdHIAAAAIYXNzZXRLZXkAAAARQnVpbGRpbmdTdGF0dXNLZXkAAAAPZmluaXNoSGVpZ2h0S2V5BAAAABRidWlsZGluZ0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPZmluaXNoSGVpZ2h0S2V5AwkAAGYAAAACBQAAABRidWlsZGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdQnVpbGRpbmcgaXMgbm90IGZpbmlzaGVkIHlldCAJAAGkAAAAAQkAAGUAAAACBQAAABRidWlsZGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAACcgYmxvY2tzIHJlbWFpbmluZywgaXQgd2lsbCB0YWtlIGFyb3VuZCAJAAGkAAAAAQkAAGUAAAACBQAAABRidWlsZGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAAAggbWludXRlcwQAAAADaWR4CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAABkFzc2V0cwUAAAAIYXNzZXRTdHIEAAAACmFzc2V0UG93ZXIJAAGRAAAAAgUAAAALYXNzZXRzUG93ZXIFAAAAA2lkeAQAAAAKYXNzZXRDb2lucwkAAZEAAAACBQAAAAphc3NldHNDb3N0BQAAAANpZHgEAAAAB3JlZkNhbGwJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAAA90cmVhc3VyeUFkZHJlc3MCAAAAA1BheQkABEwAAAACBQAAAAZjYWxsZXIJAARMAAAAAgUAAAAKYXNzZXRDb2lucwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB3JlZkNhbGwFAAAAB3JlZkNhbGwDCQAAZgAAAAIFAAAACmFzc2V0UG93ZXIAAAAAAAAAAAAEAAAADGN1cnJlbnRQb3dlcgkBAAAAFG5hdGlvbnNUcnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAZjYWxsZXICAAAABl9Qb3dlcgQAAAACcHcJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAAA5uYXRpb25zQWRkcmVzcwIAAAAMc2V0VXNlclBvd2VyCQAETAAAAAIFAAAABmNhbGxlcgkABEwAAAACCQAAZAAAAAIFAAAADGN1cnJlbnRQb3dlcgUAAAAKYXNzZXRQb3dlcgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAnB3BQAAAAJwdwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAIYXNzZXRLZXkFAAAACmFzc2V0Q29pbnMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAARQnVpbGRpbmdTdGF0dXNLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAPZmluaXNoSGVpZ2h0S2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAhhc3NldEtleQUAAAAKYXNzZXRDb2lucwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAABFCdWlsZGluZ1N0YXR1c0tleQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAA9maW5pc2hIZWlnaHRLZXkFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAAD2NoZWNrQXNzZXRPd25lcgAAAAIAAAAGY2FsbGVyAAAACGFzc2V0S2V5BAAAAAphc3NldE93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACBQAAAAhhc3NldEtleQIAAAAGX093bmVyCQAAAAAAAAIFAAAACmFzc2V0T3duZXIFAAAABmNhbGxlcgEAAAAVaXNOYXRpb25SZXNlcnZlZEFzc2V0AAAAAQAAAAxzdHJBc3NldFR5cGUDCQAAAAAAAAIFAAAADHN0ckFzc2V0VHlwZQIAAAAHU2V0dGxlcgYJAAAAAAAAAgUAAAAMc3RyQXNzZXRUeXBlAgAAAAhFeHBsb3JlcgEAAAAZaW50ZXJuYWxUcmFzbmZlck93bmVyc2hpcAAAAAIAAAAHYXNzZXRJZAAAAAhuZXdPd25lcgQAAAAMc3RyQXNzZXRUeXBlCQABkQAA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c2V0T3duZXJLZXkAAAACCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAxzdHJBc3NldFR5cGUJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0QnVpbGRpbmdGaW5pc2hIZWlnaHRLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAMc3RyQXNzZXRUeXBlCQAAZAAAAAIFAAAABmhlaWdodAUAAAAQZGVsYXlGb3JCdWlsZGluZwUAAAADbmlsCQAAAgAAAAECAAAAF0luY29ycmVjdCBpbnZva2UgcmVzdWx0AAAAAWkBAAAAC0ZpbmlzaEJ1aWxkAAAAAwAAAAd0eElkU3RyAAAACGFzc2V0U3RyAAAACU5hdGlvbktleQQAAAAEdHhJZAkAAlkAAAABBQAAAAd0eElkU3RyBAAAABFCdWlsZGluZ1N0YXR1c0tleQkBAAAAFGdldEJ1aWxkaW5nU3RhdHVzS2V5AAAAAwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQFAAAACGFzc2V0U3RyBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRCdWlsZGluZ0ZpbmlzaEhlaWdodEtleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBQAAAAhhc3NldFN0cgQAAAAIYXNzZXRLZXkJAQAAAA1nZXRBc3NldElkS2V5AAAAAgUAAAAEdHhJZAUAAAAIYXNzZXRTdHIEAAAACmFzc2V0T3duZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAQZ2V0QXNzZXRPd25lcktleQAAAAIFAAAABHR4SWQFAAAACGFzc2V0U3RyAwkBAAAAFWlzTmF0aW9uUmVzZXJ2ZWRBc3NldAAAAAEFAAAACGFzc2V0U3RyAwMJAQAAAAEhAAAAAQkBAAAAD2NoZWNrQXNzZXRPd25lcgAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAlOYXRpb25LZXkJAQAAAAEhAAAAAQkBAAAACmNoZWNrQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIHCQAAAgAAAAECAAAAMFlvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbgkBAAAAE2ludGVybmFsRmluaXNoQnVpbGQAAAAFBQAAAAlOYXRpb25LZXkFAAAACGFzc2V0U3RyBQAAAAhhc3NldEtleQUAAAARQnVpbGRpbmdTdGF0dXNLZXkFAAAAD2ZpbmlzaEhlaWdodEtleQMJAQAAAAIhPQAAAAIFAAAACmFzc2V0T3duZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAEJAAEsAAAAAgIAAAAhWW91IGNhbm5vdCBjbGFpbSBvdGhlcidzIHBsYXllcnMgBQAAAAhhc3NldFN0cgQAAAAQYnVpbGRpbmdUeFN0YXR1cwkBAAAADHRyeUdldFN0cmluZwAAAAEFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5AwkAAAAAAAACBQAAABBidWlsZGluZ1R4U3RhdHVzAgAAAAAJAAACAAAAAQIAAAAkTm8gcGVuZGluZyBvcGVyYXRpb25zIGZvciB0aGlzIGFzc2V0CQEAAAATaW50ZXJuYWxGaW5pc2hCdWlsZAAAAAUJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAhhc3NldFN0cgUAAAAIYXNzZXRLZXkFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5BQAAAA9maW5pc2hIZWlnaHRLZXkAAAABaQEAAAARdHJhbnNmZXJPd25lcnNoaXAAAAACAAAAB2Fzc2V0SWQAAAAIbmV3T3duZXIEAAAADHN0ckFzc2V0VHlwZQkAAZEAAAACCQAEtQAAAAIFAAAAB2Fzc2V0SWQCAAAAAV8AAAAAAAAAAAADCQEAAAABIQAAAAEJAQAAAApjaGVja0FkbWluAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAKU9ubHkgdGhlIGFkbWluIGNhbiBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uCQAFFAAAAAIJAQAAABlpbnRlcm5hbFRyYXNuZmVyT3duZXJzaGlwAAAAAgUAAAAHYXNzZXRJZAUAAAAIbmV3T3duZXIFAAAACG5ld093bmVyAAAAAWkBAAAAF2Rlc3Ryb3lBc3NldEFu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A0ludAQAAAABYgUAAAAHJG1hdGNoMAkABE0AAAACCQEAAAAZaW50ZXJuYWxUcmFzbmZlck93bmVyc2hpcAAAAAIFAAAAB2Fzc2V0SWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEFAAAAD3RyZWFzdXJ5QWRkcmVzcwUAAAAIYW1vdW50SW4FAAAACnNoaW55d2dnaWQJAAACAAAAAQIAAAApRXJyb3IgdHJhbnNmZXJyaW5nIFNIRUcgdG8gbmF0aW9ucyB3YWxsZXQAAAABaQEAAAAWQWRkQXNzZXRGcm9tTWFya2VwbGFjZQAAAAMAAAAHYXNzZXRJZAAAAAhvbGRPd25lcgAAAAlhc3NldFNoZWcDCQEAAAABIQAAAAEJAQAAAApjaGVja0FkbWluAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAALVlvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbgkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZnZXRBc3NldE93bmVyS2V5U3RyaW5nAAAAAQUAAAAHYXNzZXRJZAUAAAAIb2xkT3duZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAB2Fzc2V0SWQFAAAACWFzc2V0U2hlZwUAAAADbmlsBQAAAAhvbGRPd25lcgAAAAFpAQAAABpUcmFuc2ZlckFzc2V0VG9NYXJrZXRwbGFjZQAAAAIAAAAHYXNzZXRJZAAAAAlzZWxscHJpY2UDCQEAAAABIQAAAAEJAQAAAA9jaGVja0Fzc2V0T3duZXIAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAHYXNzZXRJZAkAAAIAAAABAgAAACNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBhc3NldAQAAAAJYXNzZXRTaGVnCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAB2Fzc2V0SWQEAAAAAnRyCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAASbWFya2V0cGxhY2VBZGRyZXNzAgAAAAlwdXRPblNhbGUJAARMAAAAAgUAAAAHYXNzZXRJZAkABEwAAAACBQAAAAlhc3NldFNoZWcJAARMAAAAAgUAAAAJc2VsbHByaWNlBQAAAANuaWwFAAAAA25pbAQAAAAHJG1hdGNoMAUAAAACdHIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABdAUAAAAHJG1hdGNoMAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAWZ2V0QXNzZXRPd25lcktleVN0cmluZwAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAKUVycm9yIHB1dHRpbmcgdGhlIGl0ZW0gb24gdGhlIG1hcmtldHBsYWNlAAAAACgSt74=", "height": 2048255, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8BLVNGb9tCwPSVzen7iYcEumv3AdciiG5kMJfCMwBQYG Next: 37Q5ohmsCNj5zC74uLjtP2xJMoKVkrazLY8zBidUcmoz Diff:
Old | New | Differences | |
---|---|---|---|
7 | 7 | ||
8 | 8 | let c = base58'3MvyzDtzWWV5MZ1GP8JfQhhQqiGU4Nbifdy' | |
9 | 9 | ||
10 | - | let d = | |
10 | + | let d = base58'3Mra7mjPipcQd5sJaRmXK8xgS4scb8gPF4A' | |
11 | 11 | ||
12 | - | let e = " | |
12 | + | let e = addressFromStringValue("3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9") | |
13 | 13 | ||
14 | - | let f = "BUILD_ | |
14 | + | let f = "BUILD_STARTED" | |
15 | 15 | ||
16 | - | let g = | |
16 | + | let g = "BUILD_FINISHED" | |
17 | 17 | ||
18 | - | let h = [ | |
18 | + | let h = ["Nation", "City", "Barrack", "Barn", "Warrior", "Settler", "Explorer"] | |
19 | 19 | ||
20 | - | let i = [0, | |
20 | + | let i = [0, 1000000000, 5000000000, 5000000000, 500000000, 10000000000, 100000000] | |
21 | 21 | ||
22 | - | let j = [0, | |
22 | + | let j = [0, 0, 0, 0, 0, 10000000000, 100000000] | |
23 | 23 | ||
24 | - | let k = [0, | |
24 | + | let k = [0, 4, 4, 4, 2, 2, 2] | |
25 | 25 | ||
26 | - | func l (m) = { | |
27 | - | let n = getInteger(Address(b), m) | |
28 | - | if ($isInstanceOf(n, "Int")) | |
26 | + | let l = [0, 1000, 500, 500, 0, 0, 0] | |
27 | + | ||
28 | + | func m (n) = { | |
29 | + | let o = getInteger(Address(b), n) | |
30 | + | if ($isInstanceOf(o, "Int")) | |
29 | 31 | then { | |
30 | - | let | |
31 | - | | |
32 | + | let p = o | |
33 | + | p | |
32 | 34 | } | |
33 | 35 | else 0 | |
34 | 36 | } | |
35 | 37 | ||
36 | 38 | ||
37 | - | func | |
38 | - | let | |
39 | - | if ($isInstanceOf( | |
39 | + | func q (n) = { | |
40 | + | let o = getInteger(Address(c), n) | |
41 | + | if ($isInstanceOf(o, "Int")) | |
40 | 42 | then { | |
41 | - | let | |
42 | - | | |
43 | + | let p = o | |
44 | + | p | |
43 | 45 | } | |
44 | 46 | else 0 | |
45 | 47 | } | |
46 | 48 | ||
47 | 49 | ||
48 | - | func | |
49 | - | let | |
50 | - | if ($isInstanceOf( | |
50 | + | func r (n) = { | |
51 | + | let o = getString(this, n) | |
52 | + | if ($isInstanceOf(o, "String")) | |
51 | 53 | then { | |
52 | - | let | |
53 | - | | |
54 | + | let p = o | |
55 | + | p | |
54 | 56 | } | |
55 | 57 | else "" | |
56 | 58 | } | |
57 | 59 | ||
58 | 60 | ||
59 | - | func | |
60 | - | let | |
61 | - | if ($isInstanceOf( | |
61 | + | func s (n) = { | |
62 | + | let o = getInteger(this, n) | |
63 | + | if ($isInstanceOf(o, "Int")) | |
62 | 64 | then { | |
63 | - | let | |
64 | - | | |
65 | + | let p = o | |
66 | + | p | |
65 | 67 | } | |
66 | 68 | else 0 | |
67 | 69 | } | |
68 | 70 | ||
69 | 71 | ||
70 | - | func | |
72 | + | func t (u,v) = ((v + "_") + toBase58String(u)) | |
71 | 73 | ||
72 | 74 | ||
73 | - | func | |
75 | + | func w (u,v) = (t(u, v) + "_Owner") | |
74 | 76 | ||
75 | 77 | ||
76 | - | func | |
78 | + | func x (y) = (y + "_Owner") | |
77 | 79 | ||
78 | 80 | ||
79 | - | func | |
81 | + | func z (A,u,v) = (((A + "_") + t(u, v)) + "_fh") | |
80 | 82 | ||
81 | 83 | ||
82 | - | func | |
84 | + | func B (A,u,v) = (((A + "_") + t(u, v)) + "_status") | |
83 | 85 | ||
84 | 86 | ||
85 | - | func B (C) = if (if (if ((C == d)) | |
86 | - | then true | |
87 | - | else (C == this)) | |
88 | - | then true | |
89 | - | else (C.bytes == c)) | |
90 | - | then true | |
91 | - | else (C.bytes == b) | |
87 | + | func C (D) = (D + "_Treasury") | |
92 | 88 | ||
93 | 89 | ||
94 | - | func D (C,E,F,G,H) = { | |
95 | - | let I = getIntegerValue(this, H) | |
96 | - | if ((I > height)) | |
97 | - | then throw((((("Building is not finished yet " + toString((I - height))) + " blocks remaining, it will take around ") + toString((I - height))) + " minutes")) | |
90 | + | func E (F) = if (if (if (if ((F == e)) | |
91 | + | then true | |
92 | + | else (F == this)) | |
93 | + | then true | |
94 | + | else (F.bytes == c)) | |
95 | + | then true | |
96 | + | else (F.bytes == b)) | |
97 | + | then true | |
98 | + | else (F.bytes == d) | |
99 | + | ||
100 | + | ||
101 | + | func G (F,H,I,J,K) = { | |
102 | + | let L = getIntegerValue(this, K) | |
103 | + | if ((L > height)) | |
104 | + | then throw((((("Building is not finished yet " + toString((L - height))) + " blocks remaining, it will take around ") + toString((L - height))) + " minutes")) | |
98 | 105 | else { | |
99 | - | let | |
100 | - | let | |
101 | - | let | |
102 | - | let | |
103 | - | if (( | |
104 | - | then if (( | |
106 | + | let M = value(indexOf(h, H)) | |
107 | + | let N = l[M] | |
108 | + | let O = i[M] | |
109 | + | let P = invoke(Address(b), "Pay", [F, O], nil) | |
110 | + | if ((P == P)) | |
111 | + | then if ((N > 0)) | |
105 | 112 | then { | |
106 | - | let | |
107 | - | let | |
108 | - | if (( | |
109 | - | then [IntegerEntry( | |
113 | + | let Q = q((F + "_Power")) | |
114 | + | let R = invoke(Address(c), "setUserPower", [F, (Q + N)], nil) | |
115 | + | if ((R == R)) | |
116 | + | then [IntegerEntry(I, O), DeleteEntry(J), DeleteEntry(K)] | |
110 | 117 | else throw("Strict value is not equal to itself.") | |
111 | 118 | } | |
112 | - | else [IntegerEntry( | |
119 | + | else [IntegerEntry(I, O), DeleteEntry(J), DeleteEntry(K)] | |
113 | 120 | else throw("Strict value is not equal to itself.") | |
114 | 121 | } | |
115 | 122 | } | |
116 | 123 | ||
117 | 124 | ||
118 | - | func | |
119 | - | let | |
120 | - | ( | |
125 | + | func S (F,I) = { | |
126 | + | let T = r((I + "_Owner")) | |
127 | + | (T == F) | |
121 | 128 | } | |
122 | 129 | ||
123 | 130 | ||
124 | - | func | |
131 | + | func U (V) = if ((V == "Settler")) | |
125 | 132 | then true | |
126 | - | else ( | |
133 | + | else (V == "Explorer") | |
127 | 134 | ||
128 | 135 | ||
129 | - | @Callable(T) | |
130 | - | func StartBuild (S,U) = if (!(containsElement(g, S))) | |
136 | + | func W (y,X) = { | |
137 | + | let V = split(y, "_")[0] | |
138 | + | let Y = r(x(y)) | |
139 | + | let N = l[value(indexOf(h, V))] | |
140 | + | if ((N > 0)) | |
141 | + | then { | |
142 | + | let Q = q((Y + "_Power")) | |
143 | + | let R = invoke(Address(c), "setUserPower", [Y, (Q - N)], nil) | |
144 | + | if ((R == R)) | |
145 | + | then if ((R != (Q - N))) | |
146 | + | then throw("Incorrect invoke result") | |
147 | + | else { | |
148 | + | let Z = q((X + "_Power")) | |
149 | + | let aa = invoke(Address(c), "setUserPower", [X, (Z + N)], nil) | |
150 | + | if ((aa == aa)) | |
151 | + | then { | |
152 | + | let o = aa | |
153 | + | if ($isInstanceOf(o, "Int")) | |
154 | + | then { | |
155 | + | let ab = o | |
156 | + | [StringEntry(x(y), X)] | |
157 | + | } | |
158 | + | else throw("Incorrect invoke result") | |
159 | + | } | |
160 | + | else throw("Strict value is not equal to itself.") | |
161 | + | } | |
162 | + | else throw("Strict value is not equal to itself.") | |
163 | + | } | |
164 | + | else [StringEntry(x(y), X)] | |
165 | + | } | |
166 | + | ||
167 | + | ||
168 | + | @Callable(ac) | |
169 | + | func StartBuild (V,ad) = if (!(containsElement(h, V))) | |
131 | 170 | then throw("This asset is not amanged by the system") | |
132 | 171 | else { | |
133 | - | let | |
134 | - | let | |
135 | - | let | |
136 | - | if ( | |
137 | - | then if (if (!( | |
138 | - | then !( | |
172 | + | let ae = value(indexOf(h, V)) | |
173 | + | let af = k[ae] | |
174 | + | let ag = i[ae] | |
175 | + | if (U(V)) | |
176 | + | then if (if (!(S(toString(ac.caller), ad))) | |
177 | + | then !(E(ac.caller)) | |
139 | 178 | else false) | |
140 | 179 | then throw("You are not authorized to perform this operation") | |
141 | 180 | else { | |
142 | - | let | |
143 | - | if (( | |
181 | + | let ah = m(C(ad)) | |
182 | + | if ((ag > ah)) | |
144 | 183 | then throw("The nation hasn't enough funds") | |
145 | 184 | else { | |
146 | - | let | |
147 | - | let | |
148 | - | if ($isInstanceOf( | |
185 | + | let ai = invoke(Address(b), "decreaseNationWallet", [ad, ag], nil) | |
186 | + | let o = ai | |
187 | + | if ($isInstanceOf(o, "Int")) | |
149 | 188 | then { | |
150 | - | let | |
151 | - | let | |
152 | - | let | |
153 | - | if ($isInstanceOf( | |
189 | + | let ab = o | |
190 | + | let R = invoke(Address(b), "arbitraryAddCoins", [ad, ag], nil) | |
191 | + | let aj = R | |
192 | + | if ($isInstanceOf(aj, "Int")) | |
154 | 193 | then { | |
155 | - | let | |
156 | - | [StringEntry( | |
194 | + | let p = aj | |
195 | + | [StringEntry(B(toString(ac.originCaller), ac.transactionId, V), f), StringEntry(w(ac.transactionId, V), ad), IntegerEntry(z(toString(ac.originCaller), ac.transactionId, V), (height + af))] | |
157 | 196 | } | |
158 | 197 | else throw("Error Depositing nation funds") | |
159 | 198 | } | |
161 | 200 | } | |
162 | 201 | } | |
163 | 202 | else { | |
164 | - | let | |
165 | - | if (( | |
166 | - | then throw(("You provided less $heg than the needed cost for building this " + | |
167 | - | else if (( | |
203 | + | let ak = value(ac.payments[0].amount) | |
204 | + | if ((ag > ak)) | |
205 | + | then throw(("You provided less $heg than the needed cost for building this " + V)) | |
206 | + | else if ((ac.payments[0].assetId != a)) | |
168 | 207 | then throw("Only $HEG payments allowed") | |
169 | 208 | else { | |
170 | - | let | |
171 | - | let | |
172 | - | if ($isInstanceOf( | |
209 | + | let R = invoke(Address(b), "Deposit", nil, ac.payments) | |
210 | + | let o = R | |
211 | + | if ($isInstanceOf(o, "Int")) | |
173 | 212 | then { | |
174 | - | let | |
175 | - | [StringEntry( | |
213 | + | let ab = o | |
214 | + | [StringEntry(B(toString(ac.originCaller), ac.transactionId, V), f), StringEntry(w(ac.transactionId, V), toString(ac.originCaller)), IntegerEntry(z(toString(ac.originCaller), ac.transactionId, V), (height + af))] | |
176 | 215 | } | |
177 | 216 | else throw("Incorrect invoke result") | |
178 | 217 | } | |
181 | 220 | ||
182 | 221 | ||
183 | 222 | ||
184 | - | @Callable( | |
185 | - | func FinishBuild (ad | |
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | if ( | |
192 | - | then if (if (!( | |
193 | - | then !( | |
223 | + | @Callable(ac) | |
224 | + | func FinishBuild (al,H,ad) = { | |
225 | + | let u = fromBase58String(al) | |
226 | + | let J = B(toString(ac.caller), u, H) | |
227 | + | let K = z(toString(ac.caller), u, H) | |
228 | + | let I = t(u, H) | |
229 | + | let T = r(w(u, H)) | |
230 | + | if (U(H)) | |
231 | + | then if (if (!(S(toString(ac.caller), ad))) | |
232 | + | then !(E(ac.caller)) | |
194 | 233 | else false) | |
195 | 234 | then throw("You are not authorized to perform this operation") | |
196 | - | else | |
197 | - | else if (( | |
198 | - | then throw(("You cannot claim other's players " + | |
235 | + | else G(ad, H, I, J, K) | |
236 | + | else if ((T != toString(ac.caller))) | |
237 | + | then throw(("You cannot claim other's players " + H)) | |
199 | 238 | else { | |
200 | - | let | |
201 | - | if (( | |
239 | + | let am = r(J) | |
240 | + | if ((am == "")) | |
202 | 241 | then throw("No pending operations for this asset") | |
203 | - | else | |
242 | + | else G(toString(ac.caller), H, I, J, K) | |
204 | 243 | } | |
205 | 244 | } | |
206 | 245 | ||
207 | 246 | ||
208 | 247 | ||
209 | - | @Callable( | |
210 | - | func transferOwnership ( | |
211 | - | let | |
212 | - | if (!( | |
248 | + | @Callable(ac) | |
249 | + | func transferOwnership (y,X) = { | |
250 | + | let V = split(y, "_")[0] | |
251 | + | if (!(E(ac.caller))) | |
213 | 252 | then throw("Only the admin can perform this operation") | |
214 | - | else { | |
215 | - | let ah = q((af + "_Owner")) | |
216 | - | let K = k[value(indexOf(g, S))] | |
217 | - | if ((K > 0)) | |
218 | - | then { | |
219 | - | let N = p((ah + "_Power")) | |
220 | - | let O = invoke(Address(c), "setUserPower", [ah, (N - K)], nil) | |
221 | - | if ((O == O)) | |
222 | - | then if ((O != (N - K))) | |
223 | - | then throw("Incorrect invoke result") | |
224 | - | else { | |
225 | - | let ai = p((ag + "_Power")) | |
226 | - | let aj = invoke(Address(c), "setUserPower", [ag, (ai + K)], nil) | |
227 | - | if ((aj == aj)) | |
228 | - | then { | |
229 | - | let n = aj | |
230 | - | if ($isInstanceOf(n, "Int")) | |
231 | - | then { | |
232 | - | let aa = n | |
233 | - | $Tuple2([StringEntry((af + "_Owner"), ag)], ag) | |
234 | - | } | |
235 | - | else throw("Incorrect invoke result") | |
236 | - | } | |
237 | - | else throw("Strict value is not equal to itself.") | |
238 | - | } | |
239 | - | else throw("Strict value is not equal to itself.") | |
240 | - | } | |
241 | - | else $Tuple2([StringEntry((af + "_Owner"), ag)], ag) | |
242 | - | } | |
253 | + | else $Tuple2(W(y, X), X) | |
243 | 254 | } | |
244 | 255 | ||
245 | 256 | ||
246 | 257 | ||
247 | - | @Callable( | |
248 | - | func destroyAssetAndTransfer ( | |
249 | - | let | |
250 | - | if (!( | |
258 | + | @Callable(ac) | |
259 | + | func destroyAssetAndTransfer (y,an) = { | |
260 | + | let V = split(y, "_")[0] | |
261 | + | if (!(E(ac.caller))) | |
251 | 262 | then throw("Only the admin can perform this operation") | |
252 | 263 | else { | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | if (( | |
264 | + | let Y = r(x(y)) | |
265 | + | let O = s(y) | |
266 | + | let P = invoke(Address(b), "arbitraryAddCoins", [an, O], nil) | |
267 | + | if ((P == P)) | |
257 | 268 | then { | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | if (( | |
269 | + | let Q = q((Y + "_Power")) | |
270 | + | let N = l[value(indexOf(h, V))] | |
271 | + | let R = invoke(Address(c), "setUserPower", [toString(ac.caller), (Q - N)], nil) | |
272 | + | if ((R == R)) | |
262 | 273 | then { | |
263 | - | let | |
264 | - | if ($isInstanceOf( | |
274 | + | let o = R | |
275 | + | if ($isInstanceOf(o, "Int")) | |
265 | 276 | then { | |
266 | - | let | |
267 | - | [DeleteEntry( | |
277 | + | let ab = o | |
278 | + | [DeleteEntry(y)] | |
268 | 279 | } | |
269 | 280 | else throw("Incorrect invoke result") | |
270 | 281 | } | |
276 | 287 | ||
277 | 288 | ||
278 | 289 | ||
279 | - | @Callable( | |
280 | - | func destroyAssetFromUser ( | |
281 | - | let | |
282 | - | if (!( | |
290 | + | @Callable(ac) | |
291 | + | func destroyAssetFromUser (y) = { | |
292 | + | let V = split(y, "_")[0] | |
293 | + | if (!(S(toString(ac.caller), y))) | |
283 | 294 | then throw("You don't own this asset") | |
284 | 295 | else { | |
285 | - | let | |
286 | - | let | |
287 | - | let | |
288 | - | let | |
289 | - | if (( | |
296 | + | let O = s(y) | |
297 | + | let Q = q((toString(ac.caller) + "_Power")) | |
298 | + | let N = l[value(indexOf(h, V))] | |
299 | + | let R = invoke(Address(c), "setUserPower", [toString(ac.caller), (Q - N)], nil) | |
300 | + | if ((R == R)) | |
290 | 301 | then { | |
291 | - | let | |
292 | - | if ($isInstanceOf( | |
302 | + | let o = R | |
303 | + | if ($isInstanceOf(o, "Int")) | |
293 | 304 | then { | |
294 | - | let | |
295 | - | [DeleteEntry( | |
305 | + | let ab = o | |
306 | + | [DeleteEntry(y), ScriptTransfer(ac.caller, O, a)] | |
296 | 307 | } | |
297 | 308 | else throw("Incorrect invoke result") | |
298 | 309 | } | |
302 | 313 | ||
303 | 314 | ||
304 | 315 | ||
305 | - | @Callable( | |
306 | - | func setNationOwner ( | |
307 | - | then $Tuple2([StringEntry(( | |
316 | + | @Callable(ac) | |
317 | + | func setNationOwner (ao,X) = if (E(ac.caller)) | |
318 | + | then $Tuple2([StringEntry((ao + "_Owner"), X)], true) | |
308 | 319 | else { | |
309 | - | let | |
310 | - | if (( | |
320 | + | let ap = r((ao + "_Owner")) | |
321 | + | if ((ap != toString(ac.caller))) | |
311 | 322 | then throw("You are not the nation owner") | |
312 | - | else [StringEntry(( | |
323 | + | else [StringEntry((ao + "_Owner"), X)] | |
313 | 324 | } | |
314 | 325 | ||
315 | 326 | ||
316 | 327 | ||
317 | - | @Callable( | |
318 | - | func buyNationItem ( | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | if (( | |
328 | + | @Callable(ac) | |
329 | + | func buyNationItem (y,ad) = { | |
330 | + | let V = split(y, "_")[0] | |
331 | + | let aq = q(toString(ac.caller)) | |
332 | + | let ar = q(ad) | |
333 | + | if ((aq != ar)) | |
323 | 334 | then throw("you can buy assets only from your nation") | |
324 | - | else if (!( | |
335 | + | else if (!(S(ad, y))) | |
325 | 336 | then throw("The asset does not belong to the nation") | |
326 | - | else if (!( | |
337 | + | else if (!(U(V))) | |
327 | 338 | then throw("this asset cannot be sold by the nation") | |
328 | 339 | else { | |
329 | - | let | |
330 | - | let | |
331 | - | let | |
332 | - | if (( | |
333 | - | then throw(("You provided less $heg than the needed cost for buying this " + | |
334 | - | else if (( | |
340 | + | let ae = value(indexOf(h, V)) | |
341 | + | let as = j[ae] | |
342 | + | let ak = value(ac.payments[0].amount) | |
343 | + | if ((as > ak)) | |
344 | + | then throw(("You provided less $heg than the needed cost for buying this " + V)) | |
345 | + | else if ((ac.payments[0].assetId != a)) | |
335 | 346 | then throw("Only $HEG payments allowed") | |
336 | 347 | else { | |
337 | - | let | |
338 | - | let | |
339 | - | if ($isInstanceOf( | |
348 | + | let at = invoke(Address(b), "increaseNationWallet", [ad, ak], nil) | |
349 | + | let o = at | |
350 | + | if ($isInstanceOf(o, "Int")) | |
340 | 351 | then { | |
341 | - | let o = n | |
342 | - | let ar = invoke(this, "transferOwnership", [af, toString(T.caller)], nil) | |
343 | - | let ab = ar | |
344 | - | if ($isInstanceOf(ab, "String")) | |
345 | - | then { | |
346 | - | let as = ab | |
347 | - | [ScriptTransfer(Address(b), ac, a)] | |
348 | - | } | |
349 | - | else throw("Error transferring Ownership") | |
352 | + | let p = o | |
353 | + | (W(y, toString(ac.caller)) :+ ScriptTransfer(Address(b), ak, a)) | |
350 | 354 | } | |
351 | 355 | else throw("Error transferring SHEG to nations wallet") | |
352 | 356 | } | |
354 | 358 | } | |
355 | 359 | ||
356 | 360 | ||
361 | + | ||
362 | + | @Callable(ac) | |
363 | + | func AddAssetFromMarkeplace (y,Y,au) = if (!(E(ac.caller))) | |
364 | + | then throw("You are not allowed to perform this operation") | |
365 | + | else $Tuple2([StringEntry(x(y), Y), IntegerEntry(y, au)], Y) | |
366 | + | ||
367 | + | ||
368 | + | ||
369 | + | @Callable(ac) | |
370 | + | func TransferAssetToMarketplace (y,av) = if (!(S(toString(ac.caller), y))) | |
371 | + | then throw("You are not the owner of this asset") | |
372 | + | else { | |
373 | + | let au = s(y) | |
374 | + | let aw = invoke(Address(d), "putOnSale", [y, au, av], nil) | |
375 | + | let o = aw | |
376 | + | if ($isInstanceOf(o, "Int")) | |
377 | + | then { | |
378 | + | let ax = o | |
379 | + | [DeleteEntry(x(y)), DeleteEntry(y)] | |
380 | + | } | |
381 | + | else throw("Error putting the item on the marketplace") | |
382 | + | } | |
383 | + | ||
384 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf' | |
5 | 5 | ||
6 | 6 | let b = base58'3MyDGEoKp1gF4LSRknk9vSuDEyrwuYXcQEQ' | |
7 | 7 | ||
8 | 8 | let c = base58'3MvyzDtzWWV5MZ1GP8JfQhhQqiGU4Nbifdy' | |
9 | 9 | ||
10 | - | let d = | |
10 | + | let d = base58'3Mra7mjPipcQd5sJaRmXK8xgS4scb8gPF4A' | |
11 | 11 | ||
12 | - | let e = " | |
12 | + | let e = addressFromStringValue("3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9") | |
13 | 13 | ||
14 | - | let f = "BUILD_ | |
14 | + | let f = "BUILD_STARTED" | |
15 | 15 | ||
16 | - | let g = | |
16 | + | let g = "BUILD_FINISHED" | |
17 | 17 | ||
18 | - | let h = [ | |
18 | + | let h = ["Nation", "City", "Barrack", "Barn", "Warrior", "Settler", "Explorer"] | |
19 | 19 | ||
20 | - | let i = [0, | |
20 | + | let i = [0, 1000000000, 5000000000, 5000000000, 500000000, 10000000000, 100000000] | |
21 | 21 | ||
22 | - | let j = [0, | |
22 | + | let j = [0, 0, 0, 0, 0, 10000000000, 100000000] | |
23 | 23 | ||
24 | - | let k = [0, | |
24 | + | let k = [0, 4, 4, 4, 2, 2, 2] | |
25 | 25 | ||
26 | - | func l (m) = { | |
27 | - | let n = getInteger(Address(b), m) | |
28 | - | if ($isInstanceOf(n, "Int")) | |
26 | + | let l = [0, 1000, 500, 500, 0, 0, 0] | |
27 | + | ||
28 | + | func m (n) = { | |
29 | + | let o = getInteger(Address(b), n) | |
30 | + | if ($isInstanceOf(o, "Int")) | |
29 | 31 | then { | |
30 | - | let | |
31 | - | | |
32 | + | let p = o | |
33 | + | p | |
32 | 34 | } | |
33 | 35 | else 0 | |
34 | 36 | } | |
35 | 37 | ||
36 | 38 | ||
37 | - | func | |
38 | - | let | |
39 | - | if ($isInstanceOf( | |
39 | + | func q (n) = { | |
40 | + | let o = getInteger(Address(c), n) | |
41 | + | if ($isInstanceOf(o, "Int")) | |
40 | 42 | then { | |
41 | - | let | |
42 | - | | |
43 | + | let p = o | |
44 | + | p | |
43 | 45 | } | |
44 | 46 | else 0 | |
45 | 47 | } | |
46 | 48 | ||
47 | 49 | ||
48 | - | func | |
49 | - | let | |
50 | - | if ($isInstanceOf( | |
50 | + | func r (n) = { | |
51 | + | let o = getString(this, n) | |
52 | + | if ($isInstanceOf(o, "String")) | |
51 | 53 | then { | |
52 | - | let | |
53 | - | | |
54 | + | let p = o | |
55 | + | p | |
54 | 56 | } | |
55 | 57 | else "" | |
56 | 58 | } | |
57 | 59 | ||
58 | 60 | ||
59 | - | func | |
60 | - | let | |
61 | - | if ($isInstanceOf( | |
61 | + | func s (n) = { | |
62 | + | let o = getInteger(this, n) | |
63 | + | if ($isInstanceOf(o, "Int")) | |
62 | 64 | then { | |
63 | - | let | |
64 | - | | |
65 | + | let p = o | |
66 | + | p | |
65 | 67 | } | |
66 | 68 | else 0 | |
67 | 69 | } | |
68 | 70 | ||
69 | 71 | ||
70 | - | func | |
72 | + | func t (u,v) = ((v + "_") + toBase58String(u)) | |
71 | 73 | ||
72 | 74 | ||
73 | - | func | |
75 | + | func w (u,v) = (t(u, v) + "_Owner") | |
74 | 76 | ||
75 | 77 | ||
76 | - | func | |
78 | + | func x (y) = (y + "_Owner") | |
77 | 79 | ||
78 | 80 | ||
79 | - | func | |
81 | + | func z (A,u,v) = (((A + "_") + t(u, v)) + "_fh") | |
80 | 82 | ||
81 | 83 | ||
82 | - | func | |
84 | + | func B (A,u,v) = (((A + "_") + t(u, v)) + "_status") | |
83 | 85 | ||
84 | 86 | ||
85 | - | func B (C) = if (if (if ((C == d)) | |
86 | - | then true | |
87 | - | else (C == this)) | |
88 | - | then true | |
89 | - | else (C.bytes == c)) | |
90 | - | then true | |
91 | - | else (C.bytes == b) | |
87 | + | func C (D) = (D + "_Treasury") | |
92 | 88 | ||
93 | 89 | ||
94 | - | func D (C,E,F,G,H) = { | |
95 | - | let I = getIntegerValue(this, H) | |
96 | - | if ((I > height)) | |
97 | - | then throw((((("Building is not finished yet " + toString((I - height))) + " blocks remaining, it will take around ") + toString((I - height))) + " minutes")) | |
90 | + | func E (F) = if (if (if (if ((F == e)) | |
91 | + | then true | |
92 | + | else (F == this)) | |
93 | + | then true | |
94 | + | else (F.bytes == c)) | |
95 | + | then true | |
96 | + | else (F.bytes == b)) | |
97 | + | then true | |
98 | + | else (F.bytes == d) | |
99 | + | ||
100 | + | ||
101 | + | func G (F,H,I,J,K) = { | |
102 | + | let L = getIntegerValue(this, K) | |
103 | + | if ((L > height)) | |
104 | + | then throw((((("Building is not finished yet " + toString((L - height))) + " blocks remaining, it will take around ") + toString((L - height))) + " minutes")) | |
98 | 105 | else { | |
99 | - | let | |
100 | - | let | |
101 | - | let | |
102 | - | let | |
103 | - | if (( | |
104 | - | then if (( | |
106 | + | let M = value(indexOf(h, H)) | |
107 | + | let N = l[M] | |
108 | + | let O = i[M] | |
109 | + | let P = invoke(Address(b), "Pay", [F, O], nil) | |
110 | + | if ((P == P)) | |
111 | + | then if ((N > 0)) | |
105 | 112 | then { | |
106 | - | let | |
107 | - | let | |
108 | - | if (( | |
109 | - | then [IntegerEntry( | |
113 | + | let Q = q((F + "_Power")) | |
114 | + | let R = invoke(Address(c), "setUserPower", [F, (Q + N)], nil) | |
115 | + | if ((R == R)) | |
116 | + | then [IntegerEntry(I, O), DeleteEntry(J), DeleteEntry(K)] | |
110 | 117 | else throw("Strict value is not equal to itself.") | |
111 | 118 | } | |
112 | - | else [IntegerEntry( | |
119 | + | else [IntegerEntry(I, O), DeleteEntry(J), DeleteEntry(K)] | |
113 | 120 | else throw("Strict value is not equal to itself.") | |
114 | 121 | } | |
115 | 122 | } | |
116 | 123 | ||
117 | 124 | ||
118 | - | func | |
119 | - | let | |
120 | - | ( | |
125 | + | func S (F,I) = { | |
126 | + | let T = r((I + "_Owner")) | |
127 | + | (T == F) | |
121 | 128 | } | |
122 | 129 | ||
123 | 130 | ||
124 | - | func | |
131 | + | func U (V) = if ((V == "Settler")) | |
125 | 132 | then true | |
126 | - | else ( | |
133 | + | else (V == "Explorer") | |
127 | 134 | ||
128 | 135 | ||
129 | - | @Callable(T) | |
130 | - | func StartBuild (S,U) = if (!(containsElement(g, S))) | |
136 | + | func W (y,X) = { | |
137 | + | let V = split(y, "_")[0] | |
138 | + | let Y = r(x(y)) | |
139 | + | let N = l[value(indexOf(h, V))] | |
140 | + | if ((N > 0)) | |
141 | + | then { | |
142 | + | let Q = q((Y + "_Power")) | |
143 | + | let R = invoke(Address(c), "setUserPower", [Y, (Q - N)], nil) | |
144 | + | if ((R == R)) | |
145 | + | then if ((R != (Q - N))) | |
146 | + | then throw("Incorrect invoke result") | |
147 | + | else { | |
148 | + | let Z = q((X + "_Power")) | |
149 | + | let aa = invoke(Address(c), "setUserPower", [X, (Z + N)], nil) | |
150 | + | if ((aa == aa)) | |
151 | + | then { | |
152 | + | let o = aa | |
153 | + | if ($isInstanceOf(o, "Int")) | |
154 | + | then { | |
155 | + | let ab = o | |
156 | + | [StringEntry(x(y), X)] | |
157 | + | } | |
158 | + | else throw("Incorrect invoke result") | |
159 | + | } | |
160 | + | else throw("Strict value is not equal to itself.") | |
161 | + | } | |
162 | + | else throw("Strict value is not equal to itself.") | |
163 | + | } | |
164 | + | else [StringEntry(x(y), X)] | |
165 | + | } | |
166 | + | ||
167 | + | ||
168 | + | @Callable(ac) | |
169 | + | func StartBuild (V,ad) = if (!(containsElement(h, V))) | |
131 | 170 | then throw("This asset is not amanged by the system") | |
132 | 171 | else { | |
133 | - | let | |
134 | - | let | |
135 | - | let | |
136 | - | if ( | |
137 | - | then if (if (!( | |
138 | - | then !( | |
172 | + | let ae = value(indexOf(h, V)) | |
173 | + | let af = k[ae] | |
174 | + | let ag = i[ae] | |
175 | + | if (U(V)) | |
176 | + | then if (if (!(S(toString(ac.caller), ad))) | |
177 | + | then !(E(ac.caller)) | |
139 | 178 | else false) | |
140 | 179 | then throw("You are not authorized to perform this operation") | |
141 | 180 | else { | |
142 | - | let | |
143 | - | if (( | |
181 | + | let ah = m(C(ad)) | |
182 | + | if ((ag > ah)) | |
144 | 183 | then throw("The nation hasn't enough funds") | |
145 | 184 | else { | |
146 | - | let | |
147 | - | let | |
148 | - | if ($isInstanceOf( | |
185 | + | let ai = invoke(Address(b), "decreaseNationWallet", [ad, ag], nil) | |
186 | + | let o = ai | |
187 | + | if ($isInstanceOf(o, "Int")) | |
149 | 188 | then { | |
150 | - | let | |
151 | - | let | |
152 | - | let | |
153 | - | if ($isInstanceOf( | |
189 | + | let ab = o | |
190 | + | let R = invoke(Address(b), "arbitraryAddCoins", [ad, ag], nil) | |
191 | + | let aj = R | |
192 | + | if ($isInstanceOf(aj, "Int")) | |
154 | 193 | then { | |
155 | - | let | |
156 | - | [StringEntry( | |
194 | + | let p = aj | |
195 | + | [StringEntry(B(toString(ac.originCaller), ac.transactionId, V), f), StringEntry(w(ac.transactionId, V), ad), IntegerEntry(z(toString(ac.originCaller), ac.transactionId, V), (height + af))] | |
157 | 196 | } | |
158 | 197 | else throw("Error Depositing nation funds") | |
159 | 198 | } | |
160 | 199 | else throw("Error Depositing nation funds") | |
161 | 200 | } | |
162 | 201 | } | |
163 | 202 | else { | |
164 | - | let | |
165 | - | if (( | |
166 | - | then throw(("You provided less $heg than the needed cost for building this " + | |
167 | - | else if (( | |
203 | + | let ak = value(ac.payments[0].amount) | |
204 | + | if ((ag > ak)) | |
205 | + | then throw(("You provided less $heg than the needed cost for building this " + V)) | |
206 | + | else if ((ac.payments[0].assetId != a)) | |
168 | 207 | then throw("Only $HEG payments allowed") | |
169 | 208 | else { | |
170 | - | let | |
171 | - | let | |
172 | - | if ($isInstanceOf( | |
209 | + | let R = invoke(Address(b), "Deposit", nil, ac.payments) | |
210 | + | let o = R | |
211 | + | if ($isInstanceOf(o, "Int")) | |
173 | 212 | then { | |
174 | - | let | |
175 | - | [StringEntry( | |
213 | + | let ab = o | |
214 | + | [StringEntry(B(toString(ac.originCaller), ac.transactionId, V), f), StringEntry(w(ac.transactionId, V), toString(ac.originCaller)), IntegerEntry(z(toString(ac.originCaller), ac.transactionId, V), (height + af))] | |
176 | 215 | } | |
177 | 216 | else throw("Incorrect invoke result") | |
178 | 217 | } | |
179 | 218 | } | |
180 | 219 | } | |
181 | 220 | ||
182 | 221 | ||
183 | 222 | ||
184 | - | @Callable( | |
185 | - | func FinishBuild (ad | |
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | if ( | |
192 | - | then if (if (!( | |
193 | - | then !( | |
223 | + | @Callable(ac) | |
224 | + | func FinishBuild (al,H,ad) = { | |
225 | + | let u = fromBase58String(al) | |
226 | + | let J = B(toString(ac.caller), u, H) | |
227 | + | let K = z(toString(ac.caller), u, H) | |
228 | + | let I = t(u, H) | |
229 | + | let T = r(w(u, H)) | |
230 | + | if (U(H)) | |
231 | + | then if (if (!(S(toString(ac.caller), ad))) | |
232 | + | then !(E(ac.caller)) | |
194 | 233 | else false) | |
195 | 234 | then throw("You are not authorized to perform this operation") | |
196 | - | else | |
197 | - | else if (( | |
198 | - | then throw(("You cannot claim other's players " + | |
235 | + | else G(ad, H, I, J, K) | |
236 | + | else if ((T != toString(ac.caller))) | |
237 | + | then throw(("You cannot claim other's players " + H)) | |
199 | 238 | else { | |
200 | - | let | |
201 | - | if (( | |
239 | + | let am = r(J) | |
240 | + | if ((am == "")) | |
202 | 241 | then throw("No pending operations for this asset") | |
203 | - | else | |
242 | + | else G(toString(ac.caller), H, I, J, K) | |
204 | 243 | } | |
205 | 244 | } | |
206 | 245 | ||
207 | 246 | ||
208 | 247 | ||
209 | - | @Callable( | |
210 | - | func transferOwnership ( | |
211 | - | let | |
212 | - | if (!( | |
248 | + | @Callable(ac) | |
249 | + | func transferOwnership (y,X) = { | |
250 | + | let V = split(y, "_")[0] | |
251 | + | if (!(E(ac.caller))) | |
213 | 252 | then throw("Only the admin can perform this operation") | |
214 | - | else { | |
215 | - | let ah = q((af + "_Owner")) | |
216 | - | let K = k[value(indexOf(g, S))] | |
217 | - | if ((K > 0)) | |
218 | - | then { | |
219 | - | let N = p((ah + "_Power")) | |
220 | - | let O = invoke(Address(c), "setUserPower", [ah, (N - K)], nil) | |
221 | - | if ((O == O)) | |
222 | - | then if ((O != (N - K))) | |
223 | - | then throw("Incorrect invoke result") | |
224 | - | else { | |
225 | - | let ai = p((ag + "_Power")) | |
226 | - | let aj = invoke(Address(c), "setUserPower", [ag, (ai + K)], nil) | |
227 | - | if ((aj == aj)) | |
228 | - | then { | |
229 | - | let n = aj | |
230 | - | if ($isInstanceOf(n, "Int")) | |
231 | - | then { | |
232 | - | let aa = n | |
233 | - | $Tuple2([StringEntry((af + "_Owner"), ag)], ag) | |
234 | - | } | |
235 | - | else throw("Incorrect invoke result") | |
236 | - | } | |
237 | - | else throw("Strict value is not equal to itself.") | |
238 | - | } | |
239 | - | else throw("Strict value is not equal to itself.") | |
240 | - | } | |
241 | - | else $Tuple2([StringEntry((af + "_Owner"), ag)], ag) | |
242 | - | } | |
253 | + | else $Tuple2(W(y, X), X) | |
243 | 254 | } | |
244 | 255 | ||
245 | 256 | ||
246 | 257 | ||
247 | - | @Callable( | |
248 | - | func destroyAssetAndTransfer ( | |
249 | - | let | |
250 | - | if (!( | |
258 | + | @Callable(ac) | |
259 | + | func destroyAssetAndTransfer (y,an) = { | |
260 | + | let V = split(y, "_")[0] | |
261 | + | if (!(E(ac.caller))) | |
251 | 262 | then throw("Only the admin can perform this operation") | |
252 | 263 | else { | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | if (( | |
264 | + | let Y = r(x(y)) | |
265 | + | let O = s(y) | |
266 | + | let P = invoke(Address(b), "arbitraryAddCoins", [an, O], nil) | |
267 | + | if ((P == P)) | |
257 | 268 | then { | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | if (( | |
269 | + | let Q = q((Y + "_Power")) | |
270 | + | let N = l[value(indexOf(h, V))] | |
271 | + | let R = invoke(Address(c), "setUserPower", [toString(ac.caller), (Q - N)], nil) | |
272 | + | if ((R == R)) | |
262 | 273 | then { | |
263 | - | let | |
264 | - | if ($isInstanceOf( | |
274 | + | let o = R | |
275 | + | if ($isInstanceOf(o, "Int")) | |
265 | 276 | then { | |
266 | - | let | |
267 | - | [DeleteEntry( | |
277 | + | let ab = o | |
278 | + | [DeleteEntry(y)] | |
268 | 279 | } | |
269 | 280 | else throw("Incorrect invoke result") | |
270 | 281 | } | |
271 | 282 | else throw("Strict value is not equal to itself.") | |
272 | 283 | } | |
273 | 284 | else throw("Strict value is not equal to itself.") | |
274 | 285 | } | |
275 | 286 | } | |
276 | 287 | ||
277 | 288 | ||
278 | 289 | ||
279 | - | @Callable( | |
280 | - | func destroyAssetFromUser ( | |
281 | - | let | |
282 | - | if (!( | |
290 | + | @Callable(ac) | |
291 | + | func destroyAssetFromUser (y) = { | |
292 | + | let V = split(y, "_")[0] | |
293 | + | if (!(S(toString(ac.caller), y))) | |
283 | 294 | then throw("You don't own this asset") | |
284 | 295 | else { | |
285 | - | let | |
286 | - | let | |
287 | - | let | |
288 | - | let | |
289 | - | if (( | |
296 | + | let O = s(y) | |
297 | + | let Q = q((toString(ac.caller) + "_Power")) | |
298 | + | let N = l[value(indexOf(h, V))] | |
299 | + | let R = invoke(Address(c), "setUserPower", [toString(ac.caller), (Q - N)], nil) | |
300 | + | if ((R == R)) | |
290 | 301 | then { | |
291 | - | let | |
292 | - | if ($isInstanceOf( | |
302 | + | let o = R | |
303 | + | if ($isInstanceOf(o, "Int")) | |
293 | 304 | then { | |
294 | - | let | |
295 | - | [DeleteEntry( | |
305 | + | let ab = o | |
306 | + | [DeleteEntry(y), ScriptTransfer(ac.caller, O, a)] | |
296 | 307 | } | |
297 | 308 | else throw("Incorrect invoke result") | |
298 | 309 | } | |
299 | 310 | else throw("Strict value is not equal to itself.") | |
300 | 311 | } | |
301 | 312 | } | |
302 | 313 | ||
303 | 314 | ||
304 | 315 | ||
305 | - | @Callable( | |
306 | - | func setNationOwner ( | |
307 | - | then $Tuple2([StringEntry(( | |
316 | + | @Callable(ac) | |
317 | + | func setNationOwner (ao,X) = if (E(ac.caller)) | |
318 | + | then $Tuple2([StringEntry((ao + "_Owner"), X)], true) | |
308 | 319 | else { | |
309 | - | let | |
310 | - | if (( | |
320 | + | let ap = r((ao + "_Owner")) | |
321 | + | if ((ap != toString(ac.caller))) | |
311 | 322 | then throw("You are not the nation owner") | |
312 | - | else [StringEntry(( | |
323 | + | else [StringEntry((ao + "_Owner"), X)] | |
313 | 324 | } | |
314 | 325 | ||
315 | 326 | ||
316 | 327 | ||
317 | - | @Callable( | |
318 | - | func buyNationItem ( | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | if (( | |
328 | + | @Callable(ac) | |
329 | + | func buyNationItem (y,ad) = { | |
330 | + | let V = split(y, "_")[0] | |
331 | + | let aq = q(toString(ac.caller)) | |
332 | + | let ar = q(ad) | |
333 | + | if ((aq != ar)) | |
323 | 334 | then throw("you can buy assets only from your nation") | |
324 | - | else if (!( | |
335 | + | else if (!(S(ad, y))) | |
325 | 336 | then throw("The asset does not belong to the nation") | |
326 | - | else if (!( | |
337 | + | else if (!(U(V))) | |
327 | 338 | then throw("this asset cannot be sold by the nation") | |
328 | 339 | else { | |
329 | - | let | |
330 | - | let | |
331 | - | let | |
332 | - | if (( | |
333 | - | then throw(("You provided less $heg than the needed cost for buying this " + | |
334 | - | else if (( | |
340 | + | let ae = value(indexOf(h, V)) | |
341 | + | let as = j[ae] | |
342 | + | let ak = value(ac.payments[0].amount) | |
343 | + | if ((as > ak)) | |
344 | + | then throw(("You provided less $heg than the needed cost for buying this " + V)) | |
345 | + | else if ((ac.payments[0].assetId != a)) | |
335 | 346 | then throw("Only $HEG payments allowed") | |
336 | 347 | else { | |
337 | - | let | |
338 | - | let | |
339 | - | if ($isInstanceOf( | |
348 | + | let at = invoke(Address(b), "increaseNationWallet", [ad, ak], nil) | |
349 | + | let o = at | |
350 | + | if ($isInstanceOf(o, "Int")) | |
340 | 351 | then { | |
341 | - | let o = n | |
342 | - | let ar = invoke(this, "transferOwnership", [af, toString(T.caller)], nil) | |
343 | - | let ab = ar | |
344 | - | if ($isInstanceOf(ab, "String")) | |
345 | - | then { | |
346 | - | let as = ab | |
347 | - | [ScriptTransfer(Address(b), ac, a)] | |
348 | - | } | |
349 | - | else throw("Error transferring Ownership") | |
352 | + | let p = o | |
353 | + | (W(y, toString(ac.caller)) :+ ScriptTransfer(Address(b), ak, a)) | |
350 | 354 | } | |
351 | 355 | else throw("Error transferring SHEG to nations wallet") | |
352 | 356 | } | |
353 | 357 | } | |
354 | 358 | } | |
355 | 359 | ||
356 | 360 | ||
361 | + | ||
362 | + | @Callable(ac) | |
363 | + | func AddAssetFromMarkeplace (y,Y,au) = if (!(E(ac.caller))) | |
364 | + | then throw("You are not allowed to perform this operation") | |
365 | + | else $Tuple2([StringEntry(x(y), Y), IntegerEntry(y, au)], Y) | |
366 | + | ||
367 | + | ||
368 | + | ||
369 | + | @Callable(ac) | |
370 | + | func TransferAssetToMarketplace (y,av) = if (!(S(toString(ac.caller), y))) | |
371 | + | then throw("You are not the owner of this asset") | |
372 | + | else { | |
373 | + | let au = s(y) | |
374 | + | let aw = invoke(Address(d), "putOnSale", [y, au, av], nil) | |
375 | + | let o = aw | |
376 | + | if ($isInstanceOf(o, "Int")) | |
377 | + | then { | |
378 | + | let ax = o | |
379 | + | [DeleteEntry(x(y)), DeleteEntry(y)] | |
380 | + | } | |
381 | + | else throw("Error putting the item on the marketplace") | |
382 | + | } | |
383 | + | ||
384 | + |
github/deemru/w8io/169f3d6 146.88 ms ◑![]()