tx · 3T2LbSdMzfMKBjUfxnNod9JeCwsCS5VG2WknH2jnbs7v 3N2j6yXv5aLx1DTVGpwUmJHKZb5XwMfWZhk: -1.00500000 Waves 2022.07.14 10:50 [2139114] smart account 3N2j6yXv5aLx1DTVGpwUmJHKZb5XwMfWZhk > SELF 0.00000000 Waves
{ "type": 13, "id": "3T2LbSdMzfMKBjUfxnNod9JeCwsCS5VG2WknH2jnbs7v", "fee": 100500000, "feeAssetId": null, "timestamp": 1657785069019, "version": 2, "chainId": 84, "sender": "3N2j6yXv5aLx1DTVGpwUmJHKZb5XwMfWZhk", "senderPublicKey": "8ZzMCsQ15BKiHk944146A5WQ8eSFd8vaff4xaktCKSBK", "proofs": [ "4gQ7cCbEA98SStxgQUt7o7RHhFT9PXaSqqAgYQLe7HMBu2g7ai8GZU5G2Yj7PZD6EjyeKeS1skwvSUMTm2tW2fTp" ], "script": "base64:BgIRCAISAwoBCBIAEgASBAoCCAgRAAlzZXBhcmF0b3ICAV8BDWdldFBhaXJMZW5ndGgACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCCnBhaXJMZW5ndGgAAAENc2V0UGFpckxlbmdodAEJbmV3TGVuZ3RoCQEMSW50ZWdlckVudHJ5AgIKcGFpckxlbmd0aAUJbmV3TGVuZ3RoAQpnZXRQYWlyS2V5AgZ0b2tlbjAGdG9rZW4xBAh0b2tlbjBCVgkAsQkBCQDZBAEFBnRva2VuMAQIdG9rZW4xQlYJALEJAQkA2QQBBQZ0b2tlbjEDCQBmAgUIdG9rZW4xQlYFCHRva2VuMEJWCQC5CQIJAMwIAgUGdG9rZW4wCQDMCAIFBnRva2VuMQUDbmlsBQlzZXBhcmF0b3IJALkJAgkAzAgCBQZ0b2tlbjEJAMwIAgUGdG9rZW4wBQNuaWwFCXNlcGFyYXRvcgEOZ2V0UGFpclRva2VuSWQCBnRva2VuMAZ0b2tlbjEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQpnZXRQYWlyS2V5AgUGdG9rZW4wBQZ0b2tlbjEBDnNldFBhaXJUb2tlbklkAwZ0b2tlbjAGdG9rZW4xB2lzc3VlSWQJAQtTdHJpbmdFbnRyeQIJAQpnZXRQYWlyS2V5AgUGdG9rZW4wBQZ0b2tlbjEFB2lzc3VlSWQBDmpvaW5QYWlyU3RydWN0BAZ0b2tlbjAGdG9rZW4xCHJlc2VydmUwCHJlc2VydmUxCQC5CQIJAMwIAgUGdG9rZW4wCQDMCAIFBnRva2VuMQkAzAgCCQCkAwEFCHJlc2VydmUwCQDMCAIJAKQDAQUIcmVzZXJ2ZTEFA25pbAUJc2VwYXJhdG9yAQ5nZXRQYWlyRGV0YWlscwEJbHBUb2tlbklkBAdkZXRhaWxzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUJbHBUb2tlbklkAhVhc3NldElkMF9hc3NldElkMV8wXzAFCXNlcGFyYXRvcgkAlgoECQCRAwIFB2RldGFpbHMAAAkAkQMCBQdkZXRhaWxzAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkZXRhaWxzAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkZXRhaWxzAAMBDnNldFBhaXJEZXRhaWxzBQlscFRva2VuSWQGdG9rZW4wBnRva2VuMQhyZXNlcnZlMAhyZXNlcnZlMQkBC1N0cmluZ0VudHJ5AgUJbHBUb2tlbklkCQEOam9pblBhaXJTdHJ1Y3QEBQZ0b2tlbjAFBnRva2VuMQUIcmVzZXJ2ZTAFCHJlc2VydmUxARJnZXRQYWlyVG90YWxTdXBwbHkBCWxwVG9rZW5JZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgILdG90YWxTdXBwbHkFCXNlcGFyYXRvcgUJbHBUb2tlbklkAAABEnNldFBhaXJUb3RhbFN1cHBseQIJbHBUb2tlbklkDm5ld1RvdGFsU3VwcGx5CQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICC3RvdGFsU3VwcGx5BQlzZXBhcmF0b3IFCWxwVG9rZW5JZAUObmV3VG90YWxTdXBwbHkBCWlzTmV3UGFpcgIGdG9rZW4wBnRva2VuMQkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEKZ2V0UGFpcktleQIFBnRva2VuMAUGdG9rZW4xAQ1pc1Rva2VuRXhpc3RzAQd0b2tlbklkBgAEbWF4eACAwtcvAAh6ZXJvQWRkcgkBBXZhbHVlAQkApggBAiMzTTRxd0RvbVJhYkpLTFp4dVhod2ZxTEFwUWtVNTkybld4RgARTUlOSU1VTV9MSVFVSURJVFkAoI0GAQ1jYWxjQW1vdW50T3V0AwhhbW91bnRJbglyZXNlcnZlSW4KcmVzZXJ2ZU91dAQPYW1vdW50SW5XaXRoRmVlCQBoAgUIYW1vdW50SW4A5QcECW51bWVyYXRvcgkAaAIFD2Ftb3VudEluV2l0aEZlZQUKcmVzZXJ2ZU91dAQLZGVub21pbmF0b3IJAGQCCQBoAgUJcmVzZXJ2ZUluAOgHBQ9hbW91bnRJbldpdGhGZWUJAGkCBQludW1lcmF0b3IFC2Rlbm9taW5hdG9yBAFpAQRzd2FwAQh0b2tlbk91dAQIYW1vdW50SW4JAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAd0b2tlbkluCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQHbHBUb2tlbgkBDmdldFBhaXJUb2tlbklkAgUHdG9rZW5JbgUIdG9rZW5PdXQECyR0MDI1MjkyNjExCQEOZ2V0UGFpckRldGFpbHMBBQdscFRva2VuBApwYWlyVG9rZW4wCAULJHQwMjUyOTI2MTECXzEECnBhaXJUb2tlbjEIBQskdDAyNTI5MjYxMQJfMgQMcGFpclJlc2VydmUwCAULJHQwMjUyOTI2MTECXzMEDHBhaXJSZXNlcnZlMQgFCyR0MDI1MjkyNjExAl80BAlhbW91bnRPdXQJAQ1jYWxjQW1vdW50T3V0AwUIYW1vdW50SW4FDHBhaXJSZXNlcnZlMAUMcGFpclJlc2VydmUxCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJYW1vdW50T3V0CQDZBAEFCnBhaXJUb2tlbjEJAMwIAgkBDnNldFBhaXJEZXRhaWxzBQUHbHBUb2tlbgUHdG9rZW5JbgUIdG9rZW5PdXQJAGQCBQxwYWlyUmVzZXJ2ZTAFCGFtb3VudEluCQBlAgUMcGFpclJlc2VydmUxBQlhbW91bnRPdXQFA25pbAFpAQRtaW50AAQGdG9rZW4wCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQGdG9rZW4xCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAQHbHBUb2tlbgkBDmdldFBhaXJUb2tlbklkAgUGdG9rZW4wBQZ0b2tlbjEEB2Ftb3VudDAJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdhbW91bnQxCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAQLJHQwMzE1OTMyNDEJAQ5nZXRQYWlyRGV0YWlscwEFB2xwVG9rZW4ECnBhaXJUb2tlbjAIBQskdDAzMTU5MzI0MQJfMQQKcGFpclRva2VuMQgFCyR0MDMxNTkzMjQxAl8yBAxwYWlyUmVzZXJ2ZTAIBQskdDAzMTU5MzI0MQJfMwQMcGFpclJlc2VydmUxCAULJHQwMzE1OTMyNDECXzQEC3RvdGFsU3VwcGx5CQESZ2V0UGFpclRvdGFsU3VwcGx5AQUHbHBUb2tlbgMJAAACBQt0b3RhbFN1cHBseQAABAlsaXF1aWRpdHkJAGUCCQEEc3FydAQJAGgCBQdhbW91bnQwBQdhbW91bnQxAAAAAAUERE9XTgURTUlOSU1VTV9MSVFVSURJVFkJAMwIAgkBB1JlaXNzdWUDCQDZBAEFB2xwVG9rZW4JAGQCBQlsaXF1aWRpdHkFEU1JTklNVU1fTElRVUlESVRZBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh6ZXJvQWRkcgURTUlOSU1VTV9MSVFVSURJVFkJANkEAQUHbHBUb2tlbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWxpcXVpZGl0eQkA2QQBBQdscFRva2VuCQDMCAIJARJzZXRQYWlyVG90YWxTdXBwbHkCBQdscFRva2VuCQBkAgUJbGlxdWlkaXR5BRFNSU5JTVVNX0xJUVVJRElUWQkAzAgCCQEOc2V0UGFpckRldGFpbHMFBQdscFRva2VuBQZ0b2tlbjAFBnRva2VuMQkAZAIFDHBhaXJSZXNlcnZlMAUHYW1vdW50MAkAZAIFDHBhaXJSZXNlcnZlMQUHYW1vdW50MQUDbmlsBAlsaXF1aWRpdHkJAJcDAQkAzAgCCQBpAgkAaAIFB2Ftb3VudDAFC3RvdGFsU3VwcGx5BQxwYWlyUmVzZXJ2ZTAJAMwIAgkAaQIJAGgCBQdhbW91bnQxBQt0b3RhbFN1cHBseQUMcGFpclJlc2VydmUxBQNuaWwJAMwIAgkBB1JlaXNzdWUDCQDZBAEFB2xwVG9rZW4FCWxpcXVpZGl0eQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQlsaXF1aWRpdHkJANkEAQUHbHBUb2tlbgkAzAgCCQESc2V0UGFpclRvdGFsU3VwcGx5AgUHbHBUb2tlbgkAZAIFC3RvdGFsU3VwcGx5BQlsaXF1aWRpdHkJAMwIAgkBDnNldFBhaXJEZXRhaWxzBQUHbHBUb2tlbgUGdG9rZW4wBQZ0b2tlbjEJAGQCBQxwYWlyUmVzZXJ2ZTAFB2Ftb3VudDAJAGQCBQxwYWlyUmVzZXJ2ZTEFB2Ftb3VudDEFA25pbAFpAQRidXJuAAQIYW1vdW50bHAJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAlhc3NldElkTHAJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLJHQwNDM0ODQ0NDgJAQ5nZXRQYWlyRGV0YWlscwEJANgEAQUJYXNzZXRJZExwBApwYWlyVG9rZW4wCAULJHQwNDM0ODQ0NDgCXzEECnBhaXJUb2tlbjEIBQskdDA0MzQ4NDQ0OAJfMgQMcGFpclJlc2VydmUwCAULJHQwNDM0ODQ0NDgCXzMEDHBhaXJSZXNlcnZlMQgFCyR0MDQzNDg0NDQ4Al80BAdscFRva2VuCQEOZ2V0UGFpclRva2VuSWQCBQpwYWlyVG9rZW4wBQpwYWlyVG9rZW4xBAt0b3RhbFN1cHBseQkBEmdldFBhaXJUb3RhbFN1cHBseQEFB2xwVG9rZW4EBXNoYXJlCQBpAgkAaAIFCGFtb3VudGxwBQRtYXh4BQt0b3RhbFN1cHBseQQHYW1vdW50MAkAaQIJAGgCBQVzaGFyZQUMcGFpclJlc2VydmUwBQRtYXh4BAdhbW91bnQxCQBpAgkAaAIFBXNoYXJlBQxwYWlyUmVzZXJ2ZTEFBG1heHgJAMwIAgkBBEJ1cm4CCQDZBAEFB2xwVG9rZW4FCGFtb3VudGxwCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MAkA2QQBBQpwYWlyVG9rZW4wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MQkA2QQBBQpwYWlyVG9rZW4xCQDMCAIJARJzZXRQYWlyVG90YWxTdXBwbHkCBQdscFRva2VuCQBlAgULdG90YWxTdXBwbHkFCGFtb3VudGxwCQDMCAIJAQ5zZXRQYWlyRGV0YWlscwUFB2xwVG9rZW4FCnBhaXJUb2tlbjAFCnBhaXJUb2tlbjEJAGUCBQxwYWlyUmVzZXJ2ZTAFB2Ftb3VudDAJAGUCBQxwYWlyUmVzZXJ2ZTEFB2Ftb3VudDEFA25pbAFpARBhZGRMaXF1aWRpdHlQb29sAgZ0b2tlbjAGdG9rZW4xAwkBCWlzTmV3UGFpcgIFBnRva2VuMAUGdG9rZW4xAwkBAiE9AgUGdG9rZW4wBQZ0b2tlbjEDAwkBDWlzVG9rZW5FeGlzdHMBBQZ0b2tlbjAJAQ1pc1Rva2VuRXhpc3RzAQUGdG9rZW4xBwQIbmV3VG9rZW4JAMIIBQkA2AQBCQDJAQIIBQFpDXRyYW5zYWN0aW9uSWQACgIAAAAAAAYEB2lzc3VlSWQJANgEAQkAuAgBBQhuZXdUb2tlbgQQY3VycmVudFBhaXJJbmRleAkBDWdldFBhaXJMZW5ndGgACQDMCAIFCG5ld1Rva2VuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKQDAQUQY3VycmVudFBhaXJJbmRleAUHaXNzdWVJZAkAzAgCCQENc2V0UGFpckxlbmdodAEJAGQCBRBjdXJyZW50UGFpckluZGV4AAEJAMwIAgkBDnNldFBhaXJUb2tlbklkAwUGdG9rZW4wBQZ0b2tlbjEFB2lzc3VlSWQJAMwIAgkBDnNldFBhaXJEZXRhaWxzBQUHaXNzdWVJZAUGdG9rZW4wBQZ0b2tlbjEAAAAABQNuaWwJAAIBAgxXcm9uZyB0b2tlbnMJAAIBAgxFcXVhbCB0b2tlbnMJAAIBAhNQYWlyIGFscmVhZHkgZXhpc3RzABejtX0=", "height": 2139114, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6SXoeWqQf8bx81nzHafoynzZ9VGPorntBDAZ5HHNqUSq Next: none Diff:
Old | New | Differences | |
---|---|---|---|
45 | 45 | func w (f,g) = !(isDefined(getString(e(f, g)))) | |
46 | 46 | ||
47 | 47 | ||
48 | - | func x (y) = { | |
49 | - | let z = assetInfo(fromBase58String(y)) | |
50 | - | if ($isInstanceOf(z, "Asset")) | |
51 | - | then { | |
52 | - | let A = z | |
53 | - | true | |
54 | - | } | |
55 | - | else throw("Bad situation") | |
48 | + | func x (y) = true | |
49 | + | ||
50 | + | ||
51 | + | let z = 100000000 | |
52 | + | ||
53 | + | let A = value(addressFromString("3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF")) | |
54 | + | ||
55 | + | let B = 100000 | |
56 | + | ||
57 | + | func C (D,E,F) = { | |
58 | + | let G = (D * 997) | |
59 | + | let H = (G * F) | |
60 | + | let I = ((E * 1000) + G) | |
61 | + | (H / I) | |
56 | 62 | } | |
57 | 63 | ||
58 | 64 | ||
59 | - | let B = 100000000 | |
60 | - | ||
61 | - | let C = value(addressFromString("3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF")) | |
62 | - | ||
63 | - | let D = 100000 | |
64 | - | ||
65 | - | func E (F,G,H) = { | |
66 | - | let I = (F * 997) | |
67 | - | let J = (I * H) | |
68 | - | let K = ((G * 1000) + I) | |
69 | - | (J / K) | |
70 | - | } | |
71 | - | ||
72 | - | ||
73 | - | @Callable(L) | |
74 | - | func swap (M) = { | |
75 | - | let F = value(L.payments[0].amount) | |
76 | - | let N = toBase58String(value(L.payments[0].assetId)) | |
77 | - | let O = j(N, M) | |
78 | - | let P = p(O) | |
79 | - | let Q = P._1 | |
80 | - | let R = P._2 | |
81 | - | let S = P._3 | |
82 | - | let T = P._4 | |
83 | - | let U = E(F, S, T) | |
84 | - | [ScriptTransfer(L.caller, U, fromBase58String(R)), s(O, N, M, (S + F), (T - U))] | |
65 | + | @Callable(J) | |
66 | + | func swap (K) = { | |
67 | + | let D = value(J.payments[0].amount) | |
68 | + | let L = toBase58String(value(J.payments[0].assetId)) | |
69 | + | let M = j(L, K) | |
70 | + | let N = p(M) | |
71 | + | let O = N._1 | |
72 | + | let P = N._2 | |
73 | + | let Q = N._3 | |
74 | + | let R = N._4 | |
75 | + | let S = C(D, Q, R) | |
76 | + | [ScriptTransfer(J.caller, S, fromBase58String(P)), s(M, L, K, (Q + D), (R - S))] | |
85 | 77 | } | |
86 | 78 | ||
87 | 79 | ||
88 | 80 | ||
89 | - | @Callable( | |
81 | + | @Callable(J) | |
90 | 82 | func mint () = { | |
91 | - | let f = toBase58String(value( | |
92 | - | let g = toBase58String(value( | |
93 | - | let | |
94 | - | let | |
95 | - | let | |
96 | - | let | |
97 | - | let | |
98 | - | let | |
99 | - | let | |
100 | - | let | |
101 | - | let | |
102 | - | if (( | |
83 | + | let f = toBase58String(value(J.payments[0].assetId)) | |
84 | + | let g = toBase58String(value(J.payments[1].assetId)) | |
85 | + | let M = j(f, g) | |
86 | + | let T = value(J.payments[0].amount) | |
87 | + | let U = value(J.payments[1].amount) | |
88 | + | let V = p(M) | |
89 | + | let O = V._1 | |
90 | + | let P = V._2 | |
91 | + | let Q = V._3 | |
92 | + | let R = V._4 | |
93 | + | let W = t(M) | |
94 | + | if ((W == 0)) | |
103 | 95 | then { | |
104 | - | let | |
105 | - | [Reissue(fromBase58String( | |
96 | + | let X = (sqrt((T * U), 0, 0, DOWN) - B) | |
97 | + | [Reissue(fromBase58String(M), (X + B), true), ScriptTransfer(A, B, fromBase58String(M)), ScriptTransfer(J.caller, X, fromBase58String(M)), u(M, (X + B)), s(M, f, g, (Q + T), (R + U))] | |
106 | 98 | } | |
107 | 99 | else { | |
108 | - | let | |
109 | - | [Reissue(fromBase58String( | |
100 | + | let X = min([((T * W) / Q), ((U * W) / R)]) | |
101 | + | [Reissue(fromBase58String(M), X, true), ScriptTransfer(J.caller, X, fromBase58String(M)), u(M, (W + X)), s(M, f, g, (Q + T), (R + U))] | |
110 | 102 | } | |
111 | 103 | } | |
112 | 104 | ||
113 | 105 | ||
114 | 106 | ||
115 | - | @Callable( | |
107 | + | @Callable(J) | |
116 | 108 | func burn () = { | |
117 | - | let | |
118 | - | let | |
119 | - | let | |
120 | - | let | |
121 | - | let | |
122 | - | let | |
123 | - | let | |
124 | - | let | |
125 | - | let | |
126 | - | let | |
127 | - | let | |
128 | - | let | |
129 | - | [Burn(fromBase58String( | |
109 | + | let Y = value(J.payments[0].amount) | |
110 | + | let Z = value(J.payments[0].assetId) | |
111 | + | let aa = p(toBase58String(Z)) | |
112 | + | let O = aa._1 | |
113 | + | let P = aa._2 | |
114 | + | let Q = aa._3 | |
115 | + | let R = aa._4 | |
116 | + | let M = j(O, P) | |
117 | + | let W = t(M) | |
118 | + | let ab = ((Y * z) / W) | |
119 | + | let T = ((ab * Q) / z) | |
120 | + | let U = ((ab * R) / z) | |
121 | + | [Burn(fromBase58String(M), Y), ScriptTransfer(J.caller, T, fromBase58String(O)), ScriptTransfer(J.caller, U, fromBase58String(P)), u(M, (W - Y)), s(M, O, P, (Q - T), (R - U))] | |
130 | 122 | } | |
131 | 123 | ||
132 | 124 | ||
133 | 125 | ||
134 | - | @Callable( | |
126 | + | @Callable(J) | |
135 | 127 | func addLiquidityPool (f,g) = if (w(f, g)) | |
136 | 128 | then if ((f != g)) | |
137 | 129 | then if (if (x(f)) | |
138 | 130 | then x(g) | |
139 | 131 | else false) | |
140 | 132 | then { | |
141 | - | let | |
142 | - | let l = toBase58String(calculateAssetId( | |
143 | - | let | |
144 | - | [ | |
133 | + | let ac = Issue(toBase58String(take(J.transactionId, 10)), "", 0, 0, true) | |
134 | + | let l = toBase58String(calculateAssetId(ac)) | |
135 | + | let ad = b() | |
136 | + | [ac, StringEntry(toString(ad), l), c((ad + 1)), k(f, g, l), s(l, f, g, 0, 0)] | |
145 | 137 | } | |
146 | 138 | else throw("Wrong tokens") | |
147 | 139 | else throw("Equal tokens") |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "_" | |
5 | 5 | ||
6 | 6 | func b () = valueOrElse(getInteger(this, "pairLength"), 0) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func c (d) = IntegerEntry("pairLength", d) | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func e (f,g) = { | |
13 | 13 | let h = toInt(fromBase58String(f)) | |
14 | 14 | let i = toInt(fromBase58String(g)) | |
15 | 15 | if ((i > h)) | |
16 | 16 | then makeString([f, g], a) | |
17 | 17 | else makeString([g, f], a) | |
18 | 18 | } | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func j (f,g) = getStringValue(this, e(f, g)) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func k (f,g,l) = StringEntry(e(f, g), l) | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func m (f,g,n,o) = makeString([f, g, toString(n), toString(o)], a) | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func p (q) = { | |
31 | 31 | let r = split(valueOrElse(getString(this, q), "assetId0_assetId1_0_0"), a) | |
32 | 32 | $Tuple4(r[0], r[1], parseIntValue(r[2]), parseIntValue(r[3])) | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func s (q,f,g,n,o) = StringEntry(q, m(f, g, n, o)) | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func t (q) = valueOrElse(getInteger(this, (("totalSupply" + a) + q)), 0) | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func u (q,v) = IntegerEntry((("totalSupply" + a) + q), v) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func w (f,g) = !(isDefined(getString(e(f, g)))) | |
46 | 46 | ||
47 | 47 | ||
48 | - | func x (y) = { | |
49 | - | let z = assetInfo(fromBase58String(y)) | |
50 | - | if ($isInstanceOf(z, "Asset")) | |
51 | - | then { | |
52 | - | let A = z | |
53 | - | true | |
54 | - | } | |
55 | - | else throw("Bad situation") | |
48 | + | func x (y) = true | |
49 | + | ||
50 | + | ||
51 | + | let z = 100000000 | |
52 | + | ||
53 | + | let A = value(addressFromString("3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF")) | |
54 | + | ||
55 | + | let B = 100000 | |
56 | + | ||
57 | + | func C (D,E,F) = { | |
58 | + | let G = (D * 997) | |
59 | + | let H = (G * F) | |
60 | + | let I = ((E * 1000) + G) | |
61 | + | (H / I) | |
56 | 62 | } | |
57 | 63 | ||
58 | 64 | ||
59 | - | let B = 100000000 | |
60 | - | ||
61 | - | let C = value(addressFromString("3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF")) | |
62 | - | ||
63 | - | let D = 100000 | |
64 | - | ||
65 | - | func E (F,G,H) = { | |
66 | - | let I = (F * 997) | |
67 | - | let J = (I * H) | |
68 | - | let K = ((G * 1000) + I) | |
69 | - | (J / K) | |
70 | - | } | |
71 | - | ||
72 | - | ||
73 | - | @Callable(L) | |
74 | - | func swap (M) = { | |
75 | - | let F = value(L.payments[0].amount) | |
76 | - | let N = toBase58String(value(L.payments[0].assetId)) | |
77 | - | let O = j(N, M) | |
78 | - | let P = p(O) | |
79 | - | let Q = P._1 | |
80 | - | let R = P._2 | |
81 | - | let S = P._3 | |
82 | - | let T = P._4 | |
83 | - | let U = E(F, S, T) | |
84 | - | [ScriptTransfer(L.caller, U, fromBase58String(R)), s(O, N, M, (S + F), (T - U))] | |
65 | + | @Callable(J) | |
66 | + | func swap (K) = { | |
67 | + | let D = value(J.payments[0].amount) | |
68 | + | let L = toBase58String(value(J.payments[0].assetId)) | |
69 | + | let M = j(L, K) | |
70 | + | let N = p(M) | |
71 | + | let O = N._1 | |
72 | + | let P = N._2 | |
73 | + | let Q = N._3 | |
74 | + | let R = N._4 | |
75 | + | let S = C(D, Q, R) | |
76 | + | [ScriptTransfer(J.caller, S, fromBase58String(P)), s(M, L, K, (Q + D), (R - S))] | |
85 | 77 | } | |
86 | 78 | ||
87 | 79 | ||
88 | 80 | ||
89 | - | @Callable( | |
81 | + | @Callable(J) | |
90 | 82 | func mint () = { | |
91 | - | let f = toBase58String(value( | |
92 | - | let g = toBase58String(value( | |
93 | - | let | |
94 | - | let | |
95 | - | let | |
96 | - | let | |
97 | - | let | |
98 | - | let | |
99 | - | let | |
100 | - | let | |
101 | - | let | |
102 | - | if (( | |
83 | + | let f = toBase58String(value(J.payments[0].assetId)) | |
84 | + | let g = toBase58String(value(J.payments[1].assetId)) | |
85 | + | let M = j(f, g) | |
86 | + | let T = value(J.payments[0].amount) | |
87 | + | let U = value(J.payments[1].amount) | |
88 | + | let V = p(M) | |
89 | + | let O = V._1 | |
90 | + | let P = V._2 | |
91 | + | let Q = V._3 | |
92 | + | let R = V._4 | |
93 | + | let W = t(M) | |
94 | + | if ((W == 0)) | |
103 | 95 | then { | |
104 | - | let | |
105 | - | [Reissue(fromBase58String( | |
96 | + | let X = (sqrt((T * U), 0, 0, DOWN) - B) | |
97 | + | [Reissue(fromBase58String(M), (X + B), true), ScriptTransfer(A, B, fromBase58String(M)), ScriptTransfer(J.caller, X, fromBase58String(M)), u(M, (X + B)), s(M, f, g, (Q + T), (R + U))] | |
106 | 98 | } | |
107 | 99 | else { | |
108 | - | let | |
109 | - | [Reissue(fromBase58String( | |
100 | + | let X = min([((T * W) / Q), ((U * W) / R)]) | |
101 | + | [Reissue(fromBase58String(M), X, true), ScriptTransfer(J.caller, X, fromBase58String(M)), u(M, (W + X)), s(M, f, g, (Q + T), (R + U))] | |
110 | 102 | } | |
111 | 103 | } | |
112 | 104 | ||
113 | 105 | ||
114 | 106 | ||
115 | - | @Callable( | |
107 | + | @Callable(J) | |
116 | 108 | func burn () = { | |
117 | - | let | |
118 | - | let | |
119 | - | let | |
120 | - | let | |
121 | - | let | |
122 | - | let | |
123 | - | let | |
124 | - | let | |
125 | - | let | |
126 | - | let | |
127 | - | let | |
128 | - | let | |
129 | - | [Burn(fromBase58String( | |
109 | + | let Y = value(J.payments[0].amount) | |
110 | + | let Z = value(J.payments[0].assetId) | |
111 | + | let aa = p(toBase58String(Z)) | |
112 | + | let O = aa._1 | |
113 | + | let P = aa._2 | |
114 | + | let Q = aa._3 | |
115 | + | let R = aa._4 | |
116 | + | let M = j(O, P) | |
117 | + | let W = t(M) | |
118 | + | let ab = ((Y * z) / W) | |
119 | + | let T = ((ab * Q) / z) | |
120 | + | let U = ((ab * R) / z) | |
121 | + | [Burn(fromBase58String(M), Y), ScriptTransfer(J.caller, T, fromBase58String(O)), ScriptTransfer(J.caller, U, fromBase58String(P)), u(M, (W - Y)), s(M, O, P, (Q - T), (R - U))] | |
130 | 122 | } | |
131 | 123 | ||
132 | 124 | ||
133 | 125 | ||
134 | - | @Callable( | |
126 | + | @Callable(J) | |
135 | 127 | func addLiquidityPool (f,g) = if (w(f, g)) | |
136 | 128 | then if ((f != g)) | |
137 | 129 | then if (if (x(f)) | |
138 | 130 | then x(g) | |
139 | 131 | else false) | |
140 | 132 | then { | |
141 | - | let | |
142 | - | let l = toBase58String(calculateAssetId( | |
143 | - | let | |
144 | - | [ | |
133 | + | let ac = Issue(toBase58String(take(J.transactionId, 10)), "", 0, 0, true) | |
134 | + | let l = toBase58String(calculateAssetId(ac)) | |
135 | + | let ad = b() | |
136 | + | [ac, StringEntry(toString(ad), l), c((ad + 1)), k(f, g, l), s(l, f, g, 0, 0)] | |
145 | 137 | } | |
146 | 138 | else throw("Wrong tokens") | |
147 | 139 | else throw("Equal tokens") | |
148 | 140 | else throw("Pair already exists") | |
149 | 141 | ||
150 | 142 |
github/deemru/w8io/c3f4982 46.02 ms ◑