tx · CQ624XhFv88hV4RQHSUWcoFa3Np6mbgkZNVwn7txiLRS

3NADYuG3G91PrmsrRqQfyeDCf2Pi53UV5id:  -0.01000000 Waves

2022.01.06 15:24 [1867036] smart account 3NADYuG3G91PrmsrRqQfyeDCf2Pi53UV5id > SELF 0.00000000 Waves

{ "type": 13, "id": "CQ624XhFv88hV4RQHSUWcoFa3Np6mbgkZNVwn7txiLRS", "fee": 1000000, "feeAssetId": null, "timestamp": 1641471868058, "version": 2, "chainId": 84, "sender": "3NADYuG3G91PrmsrRqQfyeDCf2Pi53UV5id", "senderPublicKey": "8agr5kfwDL7NLuMetvciXCcd9TcDKZhRwYZPPTAShaCC", "proofs": [ "2btAjLx62ippKS7JqLgAfKqXUGt2arm1MDqD2viHeVEF1faEXTwkR6oMTuAEJFcxofoxgx7SbpNEkFqVSdgRy8JN" ], "script": "base64:AAIFAAAAAAAAABgIAhIFCgMICAgSABIAEgASABIFCgMICAgAAAAMAAAAAA5rZXlCdXlVTFVTUmF0ZQIAAAANYnV5X1VMVVNfcmF0ZQAAAAAca2V5QnV5VUxVU1JhdGVTY2FsZURlbGltaXRlcgIAAAAdYnV5X1VMVVNfcmF0ZV9zY2FsZV9kZWxpbWl0ZXIAAAAAD2tleVNlbGxVTFVTUmF0ZQIAAAAOc2VsbF9VTFVTX3JhdGUAAAAAHWtleVNlbGxVTFVTUmF0ZVNjYWxlRGVsaW1pdGVyAgAAAB5zZWxsX1VMVVNfcmF0ZV9zY2FsZV9kZWxpbWl0ZXIAAAAADWtleU1ha2VORlRGZWUCAAAAEGtleV9tYWtlX05GVF9mZWUAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAABFVTRE4BAAAAIOSwcsQaO/7w9gk22WMNYWxRgCp4LSxG18pSVz66uVShAAAAAARVTFVTAQAAACBcOT9fCNS+BgDGXve/DAHyIfgTONksYUCiHdU9D7LcXQAAAAAHYXNzZXRJZAUAAAAEVVNETgAAAAARY29tbWlzc2lvbkFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVdWfLrG/nFshKp/IvKAqBI71yil2yvGbaUAAAAADWJhY2tlbmRQdWJLZXkBAAAAIEU+KIojenKPtvJwoE3bNs1j1h0IxSf3lVllkJaNLm5PAAAABgAAAAFpAQAAAAdtYWtlTkZUAAAAAwAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAACXByb2R1Y3RJZAQAAAALJHQwMTA4NjExNjEJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDAxMDg2MTE2MQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDEwODYxMTYxAAAAAl8yBAAAAAptYWtlTkZUZmVlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA1rZXlNYWtlTkZURmVlAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAHYXNzZXRJZAkAAAIAAAABAgAAABdBc3NldCBtdXN0IGJlIFVTRE4gb25seQMJAABmAAAAAgUAAAAKbWFrZU5GVGZlZQUAAAAJcG10QW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAaRmVlIGZvciBtYWtlIE5GVCB0b2tlbiBpcyAJAAGkAAAAAQUAAAAKbWFrZU5GVGZlZQMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAACXByb2R1Y3RJZAkAAAIAAAABAgAAAClORlQgZm9yIHRoaXMgcHJvZHVjdElkIGlzIGFscmVhZHkgaXNzdWVkLgQAAAAIbmV3QXNzZXQJAARDAAAABwUAAAAEbmFtZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAVsFAAAACXByb2R1Y3RJZAIAAAABXQAAAAAAAAAAAQAAAAAAAAAAAAcFAAAABHVuaXQAAAAAAAAAAAAEAAAACm5ld0Fzc2V0SWQJAAQ4AAAAAQUAAAAIbmV3QXNzZXQJAARMAAAAAgUAAAAIbmV3QXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJcHJvZHVjdElkCQACWAAAAAEFAAAACm5ld0Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARY29tbWlzc2lvbkFkZHJlc3MFAAAACXBtdEFtb3VudAUAAAAKcG10QXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACXNldFBhcmFtcwAAAAADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5QnV5VUxVU1JhdGUAAAAAAAACSfAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAHGtleUJ1eVVMVVNSYXRlU2NhbGVEZWxpbWl0ZXIAAAAAAAAAA+gJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tleVNlbGxVTFVTUmF0ZQAAAAAAAAGGoAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAda2V5U2VsbFVMVVNSYXRlU2NhbGVEZWxpbWl0ZXIAAAAAAAAAA+gJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24AAAAAAAAAdTAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgAAAAAAAA9CQAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5TWFrZU5GVEZlZQAAAAAAAA9CQAUAAAADbmlsAAAAAWkBAAAADmNsZWFyT2xkUGFyYW1zAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACtPbmx5IHRoZSBEQXBwIGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAAAABBrZXlCdXlVV09STERSYXRlAgAAAA9idXlfVVdPUkxEX3JhdGUEAAAAHmtleUJ1eVVXT1JMRFJhdGVTY2FsZURlbGltaXRlcgIAAAAfYnV5X1VXT1JMRF9yYXRlX3NjYWxlX2RlbGltaXRlcgQAAAARa2V5U2VsbFVXT1JMRFJhdGUCAAAAEHNlbGxfVVdPUkxEX3JhdGUEAAAAH2tleVNlbGxVV09STERSYXRlU2NhbGVEZWxpbWl0ZXICAAAAIHNlbGxfVVdPUkxEX3JhdGVfc2NhbGVfZGVsaW1pdGVyCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAEGtleUJ1eVVXT1JMRFJhdGUJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAea2V5QnV5VVdPUkxEUmF0ZVNjYWxlRGVsaW1pdGVyCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAEWtleVNlbGxVV09STERSYXRlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAH2tleVNlbGxVV09STERSYXRlU2NhbGVEZWxpbWl0ZXIFAAAAA25pbAAAAAFpAQAAAAdidXlVTFVTAAAAAAQAAAALJHQwMzE3NjMyNTEJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDAzMTc2MzI1MQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDMxNzYzMjUxAAAAAl8yAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAHYXNzZXRJZAkAAAIAAAABAgAAABdBc3NldCBtdXN0IGJlIFVTRE4gb25seQQAAAAMZXhjaGFuZ2VSYXRlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA5rZXlCdXlVTFVTUmF0ZQQAAAAaZXhjaGFuZ2VSYXRlU2NhbGVEZWxpbWl0ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAHGtleUJ1eVVMVVNSYXRlU2NhbGVEZWxpbWl0ZXIEAAAAC2Ftb3VudFRvUGF5CQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAaZXhjaGFuZ2VSYXRlU2NhbGVEZWxpbWl0ZXIFAAAADGV4Y2hhbmdlUmF0ZQQAAAAXYW1vdW50V2l0aG91dENvbW1pc3Npb24FAAAAC2Ftb3VudFRvUGF5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAXYW1vdW50V2l0aG91dENvbW1pc3Npb24FAAAABFVMVVMFAAAAA25pbAAAAAFpAQAAAAhzZWxsVUxVUwAAAAAEAAAACyR0MDM5MDUzOTgwCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwMzkwNTM5ODAAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDAzOTA1Mzk4MAAAAAJfMgMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFVMVVMJAAACAAAAAQIAAAAXQXNzZXQgbXVzdCBiZSBVTFVTIG9ubHkEAAAADGV4Y2hhbmdlUmF0ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPa2V5U2VsbFVMVVNSYXRlBAAAABpleGNoYW5nZVJhdGVTY2FsZURlbGltaXRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAda2V5U2VsbFVMVVNSYXRlU2NhbGVEZWxpbWl0ZXIEAAAAC2Ftb3VudFRvUGF5CQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAMZXhjaGFuZ2VSYXRlBQAAABpleGNoYW5nZVJhdGVTY2FsZURlbGltaXRlcgQAAAAXYW1vdW50V2l0aG91dENvbW1pc3Npb24FAAAAC2Ftb3VudFRvUGF5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAXYW1vdW50V2l0aG91dENvbW1pc3Npb24FAAAABFVTRE4FAAAAA25pbAAAAAFpAQAAAAttYWtlUGF5bWVudAAAAAMAAAAJcmVjaXBpZW50AAAACXByb2R1Y3RJZAAAABBiYWNrZW5kU2lnbmF0dXJlBAAAABByZWNpcGllbnRBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAlyZWNpcGllbnQEAAAACyR0MDQ3Njc0ODQyCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwNDc2NzQ4NDIAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDA0NzY3NDg0MgAAAAJfMgQAAAAMYmFja2VuZFByb29mCQAEuQAAAAIJAARMAAAAAgkABCUAAAABBQAAAAR0aGlzCQAETAAAAAIJAAGkAAAAAQUAAAAJcG10QW1vdW50BQAAAANuaWwCAAAAATsDCQEAAAABIQAAAAEJAAnEAAAAAwkAAZsAAAABBQAAAAxiYWNrZW5kUHJvb2YJAAJZAAAAAQUAAAAQYmFja2VuZFNpZ25hdHVyZQUAAAANYmFja2VuZFB1YktleQkAAAIAAAABAgAAABpJbnZhbGlkIHByb29mIGZyb20gYmFja2VuZAMDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAARVU0ROCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAARVTFVTBwkAAAIAAAABAgAAAB9Bc3NldCBtdXN0IGJlIG9ubHkgVVNETiBvciBVTFVTBAAAAApjb21taXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA1rZXlDb21taXNzaW9uBAAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQYW1vdW50Q29tbWlzc2lvbgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAXYW1vdW50V2l0aG91dENvbW1pc3Npb24JAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABBhbW91bnRDb21taXNzaW9uBAAAAAxhc3NldERpdmlkZXIDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFVTRE4AAAAAAAAPQkAAAAAAAAAAA+gEAAAADmFtb3VudENhc2hiYWNrCQAAawAAAAMFAAAACXBtdEFtb3VudAAAAAAAAAAAZAUAAAAMYXNzZXREaXZpZGVyAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAJcHJvZHVjdElkBAAAAApORlRhc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAACXByb2R1Y3RJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABByZWNpcGllbnRBZGRyZXNzBQAAABdhbW91bnRXaXRob3V0Q29tbWlzc2lvbgUAAAAKcG10QXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFjb21taXNzaW9uQWRkcmVzcwUAAAAQYW1vdW50Q29tbWlzc2lvbgUAAAAKcG10QXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADmFtb3VudENhc2hiYWNrBQAAAARVTFVTCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAKTkZUYXNzZXRJZAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEHJlY2lwaWVudEFkZHJlc3MFAAAAF2Ftb3VudFdpdGhvdXRDb21taXNzaW9uBQAAAApwbXRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEWNvbW1pc3Npb25BZGRyZXNzBQAAABBhbW91bnRDb21taXNzaW9uBQAAAApwbXRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOYW1vdW50Q2FzaGJhY2sFAAAABFVMVVMFAAAAA25pbAAAAAD+0qZq", "height": 1867036, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F1FsW4rDkF41sWwBUBtAE8vYPgjugEzp8W8YJVDGAPMd Next: CKng7NpEX9NphT1zT6CV3dH66qQsPUf74TxaGBq4mqX6 Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "buy_ULUS_rate"
2323
2424 let k = Address(base58'3P9pCG7EBbhAkTxJQkwp6oTyc12zghXGUBW')
2525
26-@Callable(l)
27-func makeNFT (m,n,o) = {
28- let p = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
29- let q = p._1
30- let r = p._2
31- let s = getIntegerValue(this, e)
32- if ((r != j))
26+let l = base58'5fJ73uaebbc12bwCegVoRZgNKfn4BqpH8NB8Rs2NpBmg'
27+
28+@Callable(m)
29+func makeNFT (n,o,p) = {
30+ let q = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
31+ let r = q._1
32+ let s = q._2
33+ let t = getIntegerValue(this, e)
34+ if ((s != j))
3335 then throw("Asset must be USDN only")
34- else if ((s > q))
35- then throw(("Fee for make NFT token is " + toString(s)))
36- else if (isDefined(getString(this, o)))
36+ else if ((t > r))
37+ then throw(("Fee for make NFT token is " + toString(t)))
38+ else if (isDefined(getString(this, p)))
3739 then throw("NFT for this productId is already issued.")
3840 else {
39- let t = Issue(m, (((n + "[") + o) + "]"), 1, 0, false, unit, 0)
40- let u = calculateAssetId(t)
41-[t, StringEntry(o, toBase58String(u)), ScriptTransfer(k, q, r)]
41+ let u = Issue(n, (((o + "[") + p) + "]"), 1, 0, false, unit, 0)
42+ let v = calculateAssetId(u)
43+[u, StringEntry(p, toBase58String(v)), ScriptTransfer(k, r, s)]
4244 }
4345 }
4446
4547
4648
47-@Callable(l)
48-func setParams () = if ((l.caller != this))
49+@Callable(m)
50+func setParams () = if ((m.caller != this))
4951 then throw("Only the DApp itself can call this function")
5052 else [IntegerEntry(a, 150000), IntegerEntry(b, 1000), IntegerEntry(c, 100000), IntegerEntry(d, 1000), IntegerEntry(f, 30000), IntegerEntry(g, 1000000), IntegerEntry(e, 1000000)]
5153
5254
5355
54-@Callable(l)
55-func clearOldParams () = if ((l.caller != this))
56+@Callable(m)
57+func clearOldParams () = if ((m.caller != this))
5658 then throw("Only the DApp itself can call this function")
5759 else {
58- let v = "buy_UWORLD_rate"
59- let w = "buy_UWORLD_rate_scale_delimiter"
60- let x = "sell_UWORLD_rate"
61- let y = "sell_UWORLD_rate_scale_delimiter"
62-[DeleteEntry(v), DeleteEntry(w), DeleteEntry(x), DeleteEntry(y)]
60+ let w = "buy_UWORLD_rate"
61+ let x = "buy_UWORLD_rate_scale_delimiter"
62+ let y = "sell_UWORLD_rate"
63+ let z = "sell_UWORLD_rate_scale_delimiter"
64+[DeleteEntry(w), DeleteEntry(x), DeleteEntry(y), DeleteEntry(z)]
6365 }
6466
6567
6668
67-@Callable(l)
69+@Callable(m)
6870 func buyULUS () = {
69- let z = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
70- let q = z._1
71- let r = z._2
72- if ((r != j))
71+ let A = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
72+ let r = A._1
73+ let s = A._2
74+ if ((s != j))
7375 then throw("Asset must be USDN only")
7476 else {
75- let A = getIntegerValue(this, a)
76- let B = getIntegerValue(this, b)
77- let C = fraction(q, B, A)
78- let D = C
79-[ScriptTransfer(l.caller, D, i)]
77+ let B = getIntegerValue(this, a)
78+ let C = getIntegerValue(this, b)
79+ let D = fraction(r, C, B)
80+ let E = D
81+[ScriptTransfer(m.caller, E, i)]
8082 }
8183 }
8284
8385
8486
85-@Callable(l)
87+@Callable(m)
8688 func sellULUS () = {
87- let E = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
88- let q = E._1
89- let r = E._2
90- if ((r != i))
89+ let F = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
90+ let r = F._1
91+ let s = F._2
92+ if ((s != i))
9193 then throw("Asset must be ULUS only")
9294 else {
93- let A = getIntegerValue(this, c)
94- let B = getIntegerValue(this, d)
95- let C = fraction(q, A, B)
96- let D = C
97-[ScriptTransfer(l.caller, D, h)]
95+ let B = getIntegerValue(this, c)
96+ let C = getIntegerValue(this, d)
97+ let D = fraction(r, B, C)
98+ let E = D
99+[ScriptTransfer(m.caller, E, h)]
98100 }
99101 }
100102
101103
102104
103-@Callable(l)
104-func makePayment (F,o,G) = {
105- let H = addressFromStringValue(F)
106- let I = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
107- let q = I._1
108- let r = I._2
109- if (if ((r != h))
110- then (r != i)
111- else false)
112- then throw("Asset must be only USDN or ULUS")
113- else {
114- let J = getIntegerValue(this, f)
115- let K = getIntegerValue(this, g)
116- let L = fraction(q, J, K)
117- let D = (q - L)
118- let M = if ((r == h))
119- then 1000000
120- else 1000
121- let N = fraction(q, 100, M)
122- if (isDefined(getString(this, o)))
123- then {
124- let O = fromBase58String(getStringValue(this, o))
125-[ScriptTransfer(H, D, r), ScriptTransfer(k, L, r), ScriptTransfer(l.caller, N, i), ScriptTransfer(l.caller, 1, O)]
126- }
127- else [ScriptTransfer(H, D, r), ScriptTransfer(k, L, r), ScriptTransfer(l.caller, N, i)]
128- }
105+@Callable(m)
106+func makePayment (G,p,H) = {
107+ let I = addressFromStringValue(G)
108+ let J = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
109+ let r = J._1
110+ let s = J._2
111+ let K = makeString([toString(this), toString(r)], ";")
112+ if (!(sigVerify_8Kb(toBytes(K), fromBase58String(H), l)))
113+ then throw("Invalid proof from backend")
114+ else if (if ((s != h))
115+ then (s != i)
116+ else false)
117+ then throw("Asset must be only USDN or ULUS")
118+ else {
119+ let L = getIntegerValue(this, f)
120+ let M = getIntegerValue(this, g)
121+ let N = fraction(r, L, M)
122+ let E = (r - N)
123+ let O = if ((s == h))
124+ then 1000000
125+ else 1000
126+ let P = fraction(r, 100, O)
127+ if (isDefined(getString(this, p)))
128+ then {
129+ let Q = fromBase58String(getStringValue(this, p))
130+[ScriptTransfer(I, E, s), ScriptTransfer(k, N, s), ScriptTransfer(m.caller, P, i), ScriptTransfer(m.caller, 1, Q)]
131+ }
132+ else [ScriptTransfer(I, E, s), ScriptTransfer(k, N, s), ScriptTransfer(m.caller, P, i)]
133+ }
129134 }
130135
131136
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "buy_ULUS_rate"
55
66 let b = "buy_ULUS_rate_scale_delimiter"
77
88 let c = "sell_ULUS_rate"
99
1010 let d = "sell_ULUS_rate_scale_delimiter"
1111
1212 let e = "key_make_NFT_fee"
1313
1414 let f = "commission"
1515
1616 let g = "commission_scale_delimiter"
1717
1818 let h = base58'GPi1Q6QVgUmuomtThbim81hBYBEUWyf5BVmE4Tnd3sNg'
1919
2020 let i = base58'7D191wpwpSs4WanizHWgiRhAYhCGkmpop4h3NzUQreig'
2121
2222 let j = h
2323
2424 let k = Address(base58'3P9pCG7EBbhAkTxJQkwp6oTyc12zghXGUBW')
2525
26-@Callable(l)
27-func makeNFT (m,n,o) = {
28- let p = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
29- let q = p._1
30- let r = p._2
31- let s = getIntegerValue(this, e)
32- if ((r != j))
26+let l = base58'5fJ73uaebbc12bwCegVoRZgNKfn4BqpH8NB8Rs2NpBmg'
27+
28+@Callable(m)
29+func makeNFT (n,o,p) = {
30+ let q = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
31+ let r = q._1
32+ let s = q._2
33+ let t = getIntegerValue(this, e)
34+ if ((s != j))
3335 then throw("Asset must be USDN only")
34- else if ((s > q))
35- then throw(("Fee for make NFT token is " + toString(s)))
36- else if (isDefined(getString(this, o)))
36+ else if ((t > r))
37+ then throw(("Fee for make NFT token is " + toString(t)))
38+ else if (isDefined(getString(this, p)))
3739 then throw("NFT for this productId is already issued.")
3840 else {
39- let t = Issue(m, (((n + "[") + o) + "]"), 1, 0, false, unit, 0)
40- let u = calculateAssetId(t)
41-[t, StringEntry(o, toBase58String(u)), ScriptTransfer(k, q, r)]
41+ let u = Issue(n, (((o + "[") + p) + "]"), 1, 0, false, unit, 0)
42+ let v = calculateAssetId(u)
43+[u, StringEntry(p, toBase58String(v)), ScriptTransfer(k, r, s)]
4244 }
4345 }
4446
4547
4648
47-@Callable(l)
48-func setParams () = if ((l.caller != this))
49+@Callable(m)
50+func setParams () = if ((m.caller != this))
4951 then throw("Only the DApp itself can call this function")
5052 else [IntegerEntry(a, 150000), IntegerEntry(b, 1000), IntegerEntry(c, 100000), IntegerEntry(d, 1000), IntegerEntry(f, 30000), IntegerEntry(g, 1000000), IntegerEntry(e, 1000000)]
5153
5254
5355
54-@Callable(l)
55-func clearOldParams () = if ((l.caller != this))
56+@Callable(m)
57+func clearOldParams () = if ((m.caller != this))
5658 then throw("Only the DApp itself can call this function")
5759 else {
58- let v = "buy_UWORLD_rate"
59- let w = "buy_UWORLD_rate_scale_delimiter"
60- let x = "sell_UWORLD_rate"
61- let y = "sell_UWORLD_rate_scale_delimiter"
62-[DeleteEntry(v), DeleteEntry(w), DeleteEntry(x), DeleteEntry(y)]
60+ let w = "buy_UWORLD_rate"
61+ let x = "buy_UWORLD_rate_scale_delimiter"
62+ let y = "sell_UWORLD_rate"
63+ let z = "sell_UWORLD_rate_scale_delimiter"
64+[DeleteEntry(w), DeleteEntry(x), DeleteEntry(y), DeleteEntry(z)]
6365 }
6466
6567
6668
67-@Callable(l)
69+@Callable(m)
6870 func buyULUS () = {
69- let z = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
70- let q = z._1
71- let r = z._2
72- if ((r != j))
71+ let A = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
72+ let r = A._1
73+ let s = A._2
74+ if ((s != j))
7375 then throw("Asset must be USDN only")
7476 else {
75- let A = getIntegerValue(this, a)
76- let B = getIntegerValue(this, b)
77- let C = fraction(q, B, A)
78- let D = C
79-[ScriptTransfer(l.caller, D, i)]
77+ let B = getIntegerValue(this, a)
78+ let C = getIntegerValue(this, b)
79+ let D = fraction(r, C, B)
80+ let E = D
81+[ScriptTransfer(m.caller, E, i)]
8082 }
8183 }
8284
8385
8486
85-@Callable(l)
87+@Callable(m)
8688 func sellULUS () = {
87- let E = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
88- let q = E._1
89- let r = E._2
90- if ((r != i))
89+ let F = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
90+ let r = F._1
91+ let s = F._2
92+ if ((s != i))
9193 then throw("Asset must be ULUS only")
9294 else {
93- let A = getIntegerValue(this, c)
94- let B = getIntegerValue(this, d)
95- let C = fraction(q, A, B)
96- let D = C
97-[ScriptTransfer(l.caller, D, h)]
95+ let B = getIntegerValue(this, c)
96+ let C = getIntegerValue(this, d)
97+ let D = fraction(r, B, C)
98+ let E = D
99+[ScriptTransfer(m.caller, E, h)]
98100 }
99101 }
100102
101103
102104
103-@Callable(l)
104-func makePayment (F,o,G) = {
105- let H = addressFromStringValue(F)
106- let I = $Tuple2(l.payments[0].amount, l.payments[0].assetId)
107- let q = I._1
108- let r = I._2
109- if (if ((r != h))
110- then (r != i)
111- else false)
112- then throw("Asset must be only USDN or ULUS")
113- else {
114- let J = getIntegerValue(this, f)
115- let K = getIntegerValue(this, g)
116- let L = fraction(q, J, K)
117- let D = (q - L)
118- let M = if ((r == h))
119- then 1000000
120- else 1000
121- let N = fraction(q, 100, M)
122- if (isDefined(getString(this, o)))
123- then {
124- let O = fromBase58String(getStringValue(this, o))
125-[ScriptTransfer(H, D, r), ScriptTransfer(k, L, r), ScriptTransfer(l.caller, N, i), ScriptTransfer(l.caller, 1, O)]
126- }
127- else [ScriptTransfer(H, D, r), ScriptTransfer(k, L, r), ScriptTransfer(l.caller, N, i)]
128- }
105+@Callable(m)
106+func makePayment (G,p,H) = {
107+ let I = addressFromStringValue(G)
108+ let J = $Tuple2(m.payments[0].amount, m.payments[0].assetId)
109+ let r = J._1
110+ let s = J._2
111+ let K = makeString([toString(this), toString(r)], ";")
112+ if (!(sigVerify_8Kb(toBytes(K), fromBase58String(H), l)))
113+ then throw("Invalid proof from backend")
114+ else if (if ((s != h))
115+ then (s != i)
116+ else false)
117+ then throw("Asset must be only USDN or ULUS")
118+ else {
119+ let L = getIntegerValue(this, f)
120+ let M = getIntegerValue(this, g)
121+ let N = fraction(r, L, M)
122+ let E = (r - N)
123+ let O = if ((s == h))
124+ then 1000000
125+ else 1000
126+ let P = fraction(r, 100, O)
127+ if (isDefined(getString(this, p)))
128+ then {
129+ let Q = fromBase58String(getStringValue(this, p))
130+[ScriptTransfer(I, E, s), ScriptTransfer(k, N, s), ScriptTransfer(m.caller, P, i), ScriptTransfer(m.caller, 1, Q)]
131+ }
132+ else [ScriptTransfer(I, E, s), ScriptTransfer(k, N, s), ScriptTransfer(m.caller, P, i)]
133+ }
129134 }
130135
131136

github/deemru/w8io/169f3d6 
67.06 ms