tx · 5yB2ERAoPXaKNDyvFfJxodAAxVE3upvyPvqMkEsGm9QL

3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy:  -0.01000000 Waves

2023.01.17 05:33 [3473817] smart account 3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy > SELF 0.00000000 Waves

{ "type": 13, "id": "5yB2ERAoPXaKNDyvFfJxodAAxVE3upvyPvqMkEsGm9QL", "fee": 1000000, "feeAssetId": null, "timestamp": 1673922811595, "version": 2, "chainId": 87, "sender": "3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy", "senderPublicKey": "9KXfR1iJDN9MLTf7rgrygpRA3HG53KCgWyxzqk4m25Qd", "proofs": [ "3SALGMSS6wbP2iv74NJH2sqgUojasKrtpuHdFpAVYtiunAyZ3EM3ob53Vdko42yE5Db3rgF5nYRZ7KrJhCp7SoF4" ], "script": "base64:BgINCAISAwoBARIECgIIAQ0AGVdYX0xQX1dBVkVTX1VTRE5fQVNTRVRfSUQBIF3nbW5Gpsc5sbSuIUNTamiXqpkPn1sV+rxqUQ0cSRkgABdXWF9QT09MX1dBVkVTX1VTRE5fREFQUAkBB0FkZHJlc3MBARoBV+1Hn81CPJO+SyHN+wJ+H8gt+5aAesOvfQAbTkVVVFJJTk9fUkVTVF9SRUFET05MWV9EQVBQCQEHQWRkcmVzcwEBGgFXNpjMBVfHrm4Dx/V/JlVDiE2uH9ead1JRABVORVVUUklOT19NRVRSSUNTX0RBUFAJAQdBZGRyZXNzAQEaAVc45KaO+mF7CT0iLN90W7PgiLKdFQ86FLYADU5FVVRSSU5PX01BSU4JAQdBZGRyZXNzAQEaAVdwBGKmR5vprVZolMvvhYwwgiAomggUlrIAD05FVVRSSU5PX09SQUNMRQkBB0FkZHJlc3MBARoBVyOzrRJck6TK7Dn+T0bWzVZNLfsQ+2OYegAQTkVVVFJJTk9fRkFDVE9SWQkBB0FkZHJlc3MBARoBV3hb3oq+USquizHqbxOQJb70qbiiuwkCQQANVVNETl9BU1NFVF9JRAEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAgQjZXJyAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAgQjZXJyAQVhc1N0cgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAgQjZXJyARNmaW5hbGl6ZVdhdmVzVG9Vc2RuAwFpBHR4aWQFSW5kZXgDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgtOb3QgYWxsb3dlZAQDd2JiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQMJAAACBQN3YmIFA3diYgQEZGF0YQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQCsAgICBXN3YXBfBQR0eGlkAghfUEVORElORwQMc3dhcEZpbmFsaXplCQD8BwQFDU5FVVRSSU5PX01BSU4CCHdpdGhkcmF3CQDMCAIJAKUIAQUEdGhpcwkAzAgCBQVJbmRleAkAzAgCBQR0eGlkBQNuaWwFA25pbAMJAAACBQxzd2FwRmluYWxpemUFDHN3YXBGaW5hbGl6ZQQDd2JhCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQMJAAACBQN3YmEFA3diYQQGYW1vdW50CQBlAgUDd2JhBQN3YmIDCQBnAgAABQZhbW91bnQJAAIBAg9Ob3RoaW5nIHRvIHN3YXAEBWNhbGwxCQD8BwQFF1dYX1BPT0xfV0FWRVNfVVNETl9EQVBQAglwdXRPbmVUa24JAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFBmFtb3VudAUDbmlsAwkAAAIFBWNhbGwxBQVjYWxsMQQObHBUb2tlbkJhbGFuY2UJAPAHAgUEdGhpcwUZV1hfTFBfV0FWRVNfVVNETl9BU1NFVF9JRAQFY2FsbDIJAPwHBAUXV1hfUE9PTF9XQVZFU19VU0ROX0RBUFACCWdldE9uZVRrbgkAzAgCCQDYBAEFDVVTRE5fQVNTRVRfSUQJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFGVdYX0xQX1dBVkVTX1VTRE5fQVNTRVRfSUQFDmxwVG9rZW5CYWxhbmNlBQNuaWwDCQAAAgUFY2FsbDIFBWNhbGwyCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgVzd2FwXwUEdHhpZAIIX1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBXN3YXBfBQR0eGlkAglfRklOSVNIRUQFBGRhdGEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERZmluYWxpemVXYXZlc09ubHkDAWkEdHhpZAVJbmRleAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECC05vdCBhbGxvd2VkBARkYXRhCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgIFc3dhcF8FBHR4aWQCCF9QRU5ESU5HBAxzd2FwRmluYWxpemUJAPwHBAUNTkVVVFJJTk9fTUFJTgIId2l0aGRyYXcJAMwIAgkApQgBBQR0aGlzCQDMCAIFBUluZGV4CQDMCAIFBHR4aWQFA25pbAUDbmlsAwkAAAIFDHN3YXBGaW5hbGl6ZQUMc3dhcEZpbmFsaXplCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgVzd2FwXwUEdHhpZAIIX1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBXN3YXBfBQR0eGlkAglfRklOSVNIRUQFBGRhdGEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgIBaQELdXNkblRvV2F2ZXMBAWEDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgtOb3QgYWxsb3dlZAQGYW1vdW50BQFhBAR0eGlkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQED25ldXRyaW5vTWV0cmljcwkBCWFzQW55TGlzdAEJAPwHBAUVTkVVVFJJTk9fTUVUUklDU19EQVBQAhpjYWxjTmV1dGlub01ldHJpY3NSRUFET05MWQUDbmlsBQNuaWwDCQAAAgUPbmV1dHJpbm9NZXRyaWNzBQ9uZXV0cmlub01ldHJpY3MEAkJSCQEFYXNJbnQBCQCRAwIFD25ldXRyaW5vTWV0cmljcwAIAwkAZgIFAkJSAJSRBgQEY2FsbAkBBWFzU3RyAQkA/AcEBRtORVVUUklOT19SRVNUX1JFQURPTkxZX0RBUFACEHN3YXBJbmZvUkVBRE9OTFkJAMwIAgIjM1BHN0NIdkJhdEhwQ2h3bThyZUg3NHdmRXdrMVBIYzhScXkFA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwEEW5ldXRyaW5vX2RhdGFfYXJyCQC1CQIFBGNhbGwCAl9fBBhhbHJlYWR5U3dhcHBlZFVuZGVyTGltaXQJAQVhc0ludAEJALYJAQkAkQMCBRFuZXV0cmlub19kYXRhX2FycgALBBVtYXhBdmFpbGFibGVUb1N3YXBOb3cJAQVhc0ludAEJALYJAQkAkQMCBRFuZXV0cmlub19kYXRhX2FycgAKAwkBAiE9AgUYYWxyZWFkeVN3YXBwZWRVbmRlckxpbWl0AAAJAAIBAg5DYW4ndCBzd2FwIHlldAQRYW1vdW5PZlVzZG5Ub1N3YXADCQBmAgUGYW1vdW50BRVtYXhBdmFpbGFibGVUb1N3YXBOb3cFFW1heEF2YWlsYWJsZVRvU3dhcE5vdwUGYW1vdW50BBJzd2FwVXNkblRvV2F2ZXNfU0MJAPwHBAUNTkVVVFJJTk9fTUFJTgITc3dhcE5ldXRyaW5vVG9XYXZlcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ1VU0ROX0FTU0VUX0lEBRFhbW91bk9mVXNkblRvU3dhcAUDbmlsAwkAAAIFEnN3YXBVc2RuVG9XYXZlc19TQwUSc3dhcFVzZG5Ub1dhdmVzX1NDBBRiYWxhbmNlX3VubG9ja19ibG9jawkBEUBleHRyTmF0aXZlKDEwNTApAgUNTkVVVFJJTk9fTUFJTgkArAICAhViYWxhbmNlX3VubG9ja19ibG9ja18JAKUIAQUEdGhpcwQFaW5kZXgJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9ORVVUUklOT19PUkFDTEUCC3ByaWNlX2luZGV4AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBXN3YXBfBQR0eGlkAghfUEVORElORwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUFaW5kZXgCAV8JAKQDAQUGaGVpZ2h0AgFfBQR0eGlkAgFfCQCkAwEFEWFtb3VuT2ZVc2RuVG9Td2FwAgFfCQCkAwEFFGJhbGFuY2VfdW5sb2NrX2Jsb2NrBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtCciB1bmRlciAxMAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQIEdHhpZAVJbmRleAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECC05vdCBhbGxvd2VkBBx3eE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQERQGV4dHJOYXRpdmUoMTA1MSkCBRBORVVUUklOT19GQUNUT1JZAh4lc19fb25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQDBRx3eE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQACAQIld3hPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCBkaXNhYmxlZAMFHHd4T25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQJARFmaW5hbGl6ZVdhdmVzT25seQMFAWkFBHR4aWQFBUluZGV4CQETZmluYWxpemVXYXZlc1RvVXNkbgMFAWkFBHR4aWQFBUluZGV4AQJ0eAEGdmVyaWZ5AAkAyBMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleZ1PuFw=", "height": 3473817, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CK9azM854KGpLFjLDyrP1SJNxFJRWF8SsC9aSoLcheYn Next: 56tNdHq18eseLx3zmG7xDRoRGPY68xnDuzYByV3QxTbP Diff:
OldNewDifferences
1212 let NEUTRINO_MAIN = Address(base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo')
1313
1414 let NEUTRINO_ORACLE = Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP')
15+
16+let NEUTRINO_FACTORY = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
1517
1618 let USDN_ASSET_ID = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1719
3739 case t =>
3840 throw("#err")
3941 }
42+
43+
44+func finalizeWavesToUsdn (i,txid,Index) = if ((i.caller != this))
45+ then throw("Not allowed")
46+ else {
47+ let wbb = wavesBalance(this).available
48+ if ((wbb == wbb))
49+ then {
50+ let data = getStringValue((("swap_" + txid) + "_PENDING"))
51+ let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
52+ if ((swapFinalize == swapFinalize))
53+ then {
54+ let wba = wavesBalance(this).available
55+ if ((wba == wba))
56+ then {
57+ let amount = (wba - wbb)
58+ if ((0 >= amount))
59+ then throw("Nothing to swap")
60+ else {
61+ let call1 = invoke(WX_POOL_WAVES_USDN_DAPP, "putOneTkn", [1, false], [AttachedPayment(unit, amount)])
62+ if ((call1 == call1))
63+ then {
64+ let lpTokenBalance = assetBalance(this, WX_LP_WAVES_USDN_ASSET_ID)
65+ let call2 = invoke(WX_POOL_WAVES_USDN_DAPP, "getOneTkn", [toBase58String(USDN_ASSET_ID), 1], [AttachedPayment(WX_LP_WAVES_USDN_ASSET_ID, lpTokenBalance)])
66+ if ((call2 == call2))
67+ then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
68+ else throw("Strict value is not equal to itself.")
69+ }
70+ else throw("Strict value is not equal to itself.")
71+ }
72+ }
73+ else throw("Strict value is not equal to itself.")
74+ }
75+ else throw("Strict value is not equal to itself.")
76+ }
77+ else throw("Strict value is not equal to itself.")
78+ }
79+
80+
81+func finalizeWavesOnly (i,txid,Index) = if ((i.caller != this))
82+ then throw("Not allowed")
83+ else {
84+ let data = getStringValue(this, (("swap_" + txid) + "_PENDING"))
85+ let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
86+ if ((swapFinalize == swapFinalize))
87+ then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
88+ else throw("Strict value is not equal to itself.")
89+ }
4090
4191
4292 @Callable(i)
83133
84134
85135 @Callable(i)
86-func finalizeWavesToUsdn (txid,Index) = if ((i.caller != this))
87- then throw("Not allowed")
88- else {
89- let wbb = wavesBalance(this).available
90- if ((wbb == wbb))
91- then {
92- let data = getStringValue((("swap_" + txid) + "_PENDING"))
93- let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
94- if ((swapFinalize == swapFinalize))
95- then {
96- let wba = wavesBalance(this).available
97- if ((wba == wba))
98- then {
99- let amount = (wba - wbb)
100- if ((0 >= amount))
101- then throw("Nothing to swap")
102- else {
103- let call1 = invoke(WX_POOL_WAVES_USDN_DAPP, "putOneTkn", [1, false], [AttachedPayment(unit, amount)])
104- if ((call1 == call1))
105- then {
106- let lpTokenBalance = assetBalance(this, WX_LP_WAVES_USDN_ASSET_ID)
107- let call2 = invoke(WX_POOL_WAVES_USDN_DAPP, "getOneTkn", [toBase58String(USDN_ASSET_ID), 1], [AttachedPayment(WX_LP_WAVES_USDN_ASSET_ID, lpTokenBalance)])
108- if ((call2 == call2))
109- then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
110- else throw("Strict value is not equal to itself.")
111- }
112- else throw("Strict value is not equal to itself.")
113- }
114- }
115- else throw("Strict value is not equal to itself.")
116- }
117- else throw("Strict value is not equal to itself.")
118- }
119- else throw("Strict value is not equal to itself.")
120- }
121-
122-
123-
124-@Callable(i)
125136 func finalize (txid,Index) = if ((i.caller != this))
126137 then throw("Not allowed")
127138 else {
128- let data = getStringValue(this, (("swap_" + txid) + "_PENDING"))
129- let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
130- if ((swapFinalize == swapFinalize))
131- then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
132- else throw("Strict value is not equal to itself.")
139+ let wxOneTokenOperationsDisabled = getBooleanValue(NEUTRINO_FACTORY, "%s__oneTokenOperationsDisabled")
140+ if (wxOneTokenOperationsDisabled)
141+ then throw("wxOneTokenOperationsDisabled disabled")
142+ else if (wxOneTokenOperationsDisabled)
143+ then finalizeWavesOnly(i, txid, Index)
144+ else finalizeWavesToUsdn(i, txid, Index)
133145 }
134146
135147
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WX_LP_WAVES_USDN_ASSET_ID = base58'7KZbJrVopwJhkdwbe1eFDBbex4dkY63MxjTNjqXtrzj1'
55
66 let WX_POOL_WAVES_USDN_DAPP = Address(base58'3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g')
77
88 let NEUTRINO_REST_READONLY_DAPP = Address(base58'3P6uaG88jjcLYZQrvJHLWPbFFRnChnAzmcU')
99
1010 let NEUTRINO_METRICS_DAPP = Address(base58'3P77iUusNwMMzWFdC8f7bftwpHyG1PBs1gq')
1111
1212 let NEUTRINO_MAIN = Address(base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo')
1313
1414 let NEUTRINO_ORACLE = Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP')
15+
16+let NEUTRINO_FACTORY = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
1517
1618 let USDN_ASSET_ID = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1719
1820 func asAnyList (v) = match v {
1921 case l: List[Any] =>
2022 l
2123 case _ =>
2224 throw("#err")
2325 }
2426
2527
2628 func asInt (v) = match v {
2729 case x: Int =>
2830 x
2931 case t =>
3032 throw("#err")
3133 }
3234
3335
3436 func asStr (v) = match v {
3537 case x: String =>
3638 x
3739 case t =>
3840 throw("#err")
3941 }
42+
43+
44+func finalizeWavesToUsdn (i,txid,Index) = if ((i.caller != this))
45+ then throw("Not allowed")
46+ else {
47+ let wbb = wavesBalance(this).available
48+ if ((wbb == wbb))
49+ then {
50+ let data = getStringValue((("swap_" + txid) + "_PENDING"))
51+ let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
52+ if ((swapFinalize == swapFinalize))
53+ then {
54+ let wba = wavesBalance(this).available
55+ if ((wba == wba))
56+ then {
57+ let amount = (wba - wbb)
58+ if ((0 >= amount))
59+ then throw("Nothing to swap")
60+ else {
61+ let call1 = invoke(WX_POOL_WAVES_USDN_DAPP, "putOneTkn", [1, false], [AttachedPayment(unit, amount)])
62+ if ((call1 == call1))
63+ then {
64+ let lpTokenBalance = assetBalance(this, WX_LP_WAVES_USDN_ASSET_ID)
65+ let call2 = invoke(WX_POOL_WAVES_USDN_DAPP, "getOneTkn", [toBase58String(USDN_ASSET_ID), 1], [AttachedPayment(WX_LP_WAVES_USDN_ASSET_ID, lpTokenBalance)])
66+ if ((call2 == call2))
67+ then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
68+ else throw("Strict value is not equal to itself.")
69+ }
70+ else throw("Strict value is not equal to itself.")
71+ }
72+ }
73+ else throw("Strict value is not equal to itself.")
74+ }
75+ else throw("Strict value is not equal to itself.")
76+ }
77+ else throw("Strict value is not equal to itself.")
78+ }
79+
80+
81+func finalizeWavesOnly (i,txid,Index) = if ((i.caller != this))
82+ then throw("Not allowed")
83+ else {
84+ let data = getStringValue(this, (("swap_" + txid) + "_PENDING"))
85+ let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
86+ if ((swapFinalize == swapFinalize))
87+ then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
88+ else throw("Strict value is not equal to itself.")
89+ }
4090
4191
4292 @Callable(i)
4393 func usdnToWaves (a) = if ((i.caller != this))
4494 then throw("Not allowed")
4595 else {
4696 let amount = a
4797 let txid = toBase58String(i.transactionId)
4898 let neutrinoMetrics = asAnyList(invoke(NEUTRINO_METRICS_DAPP, "calcNeutinoMetricsREADONLY", nil, nil))
4999 if ((neutrinoMetrics == neutrinoMetrics))
50100 then {
51101 let BR = asInt(neutrinoMetrics[8])
52102 if ((BR > 100500))
53103 then {
54104 let call = asStr(invoke(NEUTRINO_REST_READONLY_DAPP, "swapInfoREADONLY", ["3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy"], nil))
55105 if ((call == call))
56106 then {
57107 let neutrino_data_arr = split(call, "__")
58108 let alreadySwappedUnderLimit = asInt(parseInt(neutrino_data_arr[11]))
59109 let maxAvailableToSwapNow = asInt(parseInt(neutrino_data_arr[10]))
60110 if ((alreadySwappedUnderLimit != 0))
61111 then throw("Can't swap yet")
62112 else {
63113 let amounOfUsdnToSwap = if ((amount > maxAvailableToSwapNow))
64114 then maxAvailableToSwapNow
65115 else amount
66116 let swapUsdnToWaves_SC = invoke(NEUTRINO_MAIN, "swapNeutrinoToWaves", nil, [AttachedPayment(USDN_ASSET_ID, amounOfUsdnToSwap)])
67117 if ((swapUsdnToWaves_SC == swapUsdnToWaves_SC))
68118 then {
69119 let balance_unlock_block = getIntegerValue(NEUTRINO_MAIN, ("balance_unlock_block_" + toString(this)))
70120 let index = (getIntegerValue(NEUTRINO_ORACLE, "price_index") + 1)
71121 [StringEntry((("swap_" + txid) + "_PENDING"), ((((((((toString(index) + "_") + toString(height)) + "_") + txid) + "_") + toString(amounOfUsdnToSwap)) + "_") + toString(balance_unlock_block)))]
72122 }
73123 else throw("Strict value is not equal to itself.")
74124 }
75125 }
76126 else throw("Strict value is not equal to itself.")
77127 }
78128 else throw("Br under 10")
79129 }
80130 else throw("Strict value is not equal to itself.")
81131 }
82132
83133
84134
85135 @Callable(i)
86-func finalizeWavesToUsdn (txid,Index) = if ((i.caller != this))
87- then throw("Not allowed")
88- else {
89- let wbb = wavesBalance(this).available
90- if ((wbb == wbb))
91- then {
92- let data = getStringValue((("swap_" + txid) + "_PENDING"))
93- let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
94- if ((swapFinalize == swapFinalize))
95- then {
96- let wba = wavesBalance(this).available
97- if ((wba == wba))
98- then {
99- let amount = (wba - wbb)
100- if ((0 >= amount))
101- then throw("Nothing to swap")
102- else {
103- let call1 = invoke(WX_POOL_WAVES_USDN_DAPP, "putOneTkn", [1, false], [AttachedPayment(unit, amount)])
104- if ((call1 == call1))
105- then {
106- let lpTokenBalance = assetBalance(this, WX_LP_WAVES_USDN_ASSET_ID)
107- let call2 = invoke(WX_POOL_WAVES_USDN_DAPP, "getOneTkn", [toBase58String(USDN_ASSET_ID), 1], [AttachedPayment(WX_LP_WAVES_USDN_ASSET_ID, lpTokenBalance)])
108- if ((call2 == call2))
109- then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
110- else throw("Strict value is not equal to itself.")
111- }
112- else throw("Strict value is not equal to itself.")
113- }
114- }
115- else throw("Strict value is not equal to itself.")
116- }
117- else throw("Strict value is not equal to itself.")
118- }
119- else throw("Strict value is not equal to itself.")
120- }
121-
122-
123-
124-@Callable(i)
125136 func finalize (txid,Index) = if ((i.caller != this))
126137 then throw("Not allowed")
127138 else {
128- let data = getStringValue(this, (("swap_" + txid) + "_PENDING"))
129- let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
130- if ((swapFinalize == swapFinalize))
131- then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
132- else throw("Strict value is not equal to itself.")
139+ let wxOneTokenOperationsDisabled = getBooleanValue(NEUTRINO_FACTORY, "%s__oneTokenOperationsDisabled")
140+ if (wxOneTokenOperationsDisabled)
141+ then throw("wxOneTokenOperationsDisabled disabled")
142+ else if (wxOneTokenOperationsDisabled)
143+ then finalizeWavesOnly(i, txid, Index)
144+ else finalizeWavesToUsdn(i, txid, Index)
133145 }
134146
135147
136148 @Verifier(tx)
137149 func verify () = sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
138150

github/deemru/w8io/6500d08 
39.77 ms