tx · 31akyQHcutmCNR24QgQAFDAzCpEbAdGS8C6tVoVU7ddU

3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy:  -0.01000000 Waves

2023.04.19 18:00 [3607152] smart account 3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy > SELF 0.00000000 Waves

{ "type": 13, "id": "31akyQHcutmCNR24QgQAFDAzCpEbAdGS8C6tVoVU7ddU", "fee": 1000000, "feeAssetId": null, "timestamp": 1681916497623, "version": 2, "chainId": 87, "sender": "3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy", "senderPublicKey": "9KXfR1iJDN9MLTf7rgrygpRA3HG53KCgWyxzqk4m25Qd", "proofs": [ "5ZGuuzQNDdJq5rqDtWiBj9oNUvruXU3yNYPwhG7D1M2AG24mqFxG6aXBhGsgUkA8v2iQGNn1oyYEG2gCh6FUfY5W" ], "script": "base64:BgLqBAgCEgMKAQESBAoCCAEiG05FVVRSSU5PX1JFU1RfUkVBRE9OTFlfREFQUCIVTkVVVFJJTk9fTUVUUklDU19EQVBQIg1ORVVUUklOT19NQUlOIg9ORVVUUklOT19PUkFDTEUiEE5FVVRSSU5PX0ZBQ1RPUlkiDVVTRE5fQVNTRVRfSUQiC1dYX0FTU0VUX0lEIg5WSVJFU19BU1NFVF9JRCILQk9SUk9XX0RBUFAiDFdYX1NXQVBfREFQUCIJYXNBbnlMaXN0IgF2IgckbWF0Y2gwIgFsIgVhc0ludCIBeCIBdCIFYXNTdHIiE2ZpbmFsaXplV2F2ZXNUb1VzZG4iAWkiBHR4aWQiBUluZGV4IgN3YmIiBHd4YmIiA1ZiYiIEZGF0YSIIZGF0YV9hcnIiDHN3YXBGaW5hbGl6ZSIDd2JhIgR3eGJhIgN2YmEiBmFtb3VudCIFY2FsbDEiCGFtb3VudFd4IgVjYWxsMiILYW1vdW50VmlyZXMiBWNhbGwzIhFmaW5hbGl6ZVdhdmVzT25seSIBYSIPbmV1dHJpbm9NZXRyaWNzIgJCUiIEY2FsbCIRbmV1dHJpbm9fZGF0YV9hcnIiGGFscmVhZHlTd2FwcGVkVW5kZXJMaW1pdCIVbWF4QXZhaWxhYmxlVG9Td2FwTm93IhFhbW91bk9mVXNkblRvU3dhcCIGYm9ycm93IhJzd2FwVXNkblRvV2F2ZXNfU0MiFGJhbGFuY2VfdW5sb2NrX2Jsb2NrIgVpbmRleCIcd3hPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCICdHgiBnZlcmlmeQ8AAWEJAQdBZGRyZXNzAQEaAVc2mMwFV8eubgPH9X8mVUOITa4f15p3UlEAAWIJAQdBZGRyZXNzAQEaAVc45KaO+mF7CT0iLN90W7PgiLKdFQ86FLYAAWMJAQdBZGRyZXNzAQEaAVdwBGKmR5vprVZolMvvhYwwgiAomggUlrIAAWQJAQdBZGRyZXNzAQEaAVcjs60SXJOkyuw5/k9G1s1WTS37EPtjmHoAAWUJAQdBZGRyZXNzAQEaAVd4W96KvlEqrosx6m8TkCW+9Km4orsJAkEAAWYBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAFnASCTARyrqcduJVfOZp5xtr2qa/g86FgLKu7ZoE67PNwUsQABaAEguNriNwFicF+aqFuyGQy9D8Nlr3UGtlgt3QeTVqndqZcAAWkJAQdBZGRyZXNzAQEaAVcU3JJZoA9M3cfagw1Midl0Q2S2hgj44ncAAWoJAQdBZGRyZXNzAQEaAVcuKjU1sQ238Xk+4bdG0J50Uk17MdCDrgYBAWsBAWwEAW0FAWwDCQABAgUBbQIJTGlzdFtBbnldBAFuBQFtBQFuCQACAQIEI2VycgEBbwEBbAQBbQUBbAMJAAECBQFtAgNJbnQEAXAFAW0FAXAEAXEFAW0JAAIBAgQjZXJyAQFyAQFsBAFtBQFsAwkAAQIFAW0CBlN0cmluZwQBcAUBbQUBcAQBcQUBbQkAAgECBCNlcnIBAXMDAXQBdQF2AwkBAiE9AggFAXQGY2FsbGVyBQR0aGlzCQACAQILTm90IGFsbG93ZWQEAXcICQDvBwEFBHRoaXMJYXZhaWxhYmxlAwkAAAIFAXcFAXcEAXgJAPAHAgUEdGhpcwUBZwMJAAACBQF4BQF4BAF5CQDwBwIFBHRoaXMFAWgDCQAAAgUBeQUBeQQBegkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQCsAgICBXN3YXBfBQF1AghfUEVORElORwQBQQkAtQkCBQF6AgFfBAFCCQD8BwQFAWMCCHdpdGhkcmF3CQDMCAIJAKUIAQUEdGhpcwkAzAgCBQF2CQDMCAIFAXUFA25pbAUDbmlsAwkAAAIFAUIFAUIEAUMICQDvBwEFBHRoaXMJYXZhaWxhYmxlAwkAAAIFAUMFAUMEAUQJAPAHAgUEdGhpcwUBZwMJAAACBQFEBQFEBAFFCQDwBwIFBHRoaXMFAWgDCQAAAgUBRQUBRQQBRgkAZQIFAUMFAXcDCQBnAgAABQFGCQACAQIPTm90aGluZyB0byBzd2FwBAFHCQD8BwQFAWoCBHN3YXAJAMwIAgABCQDMCAIJANgEAQUBZgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAkAZQIFAUYAwIQ9BQNuaWwDCQAAAgUBRwUBRwQBSAkAZQIFAUQFAXgDCQBnAgAABQFICQACAQIPTm90aGluZyB0byBzd2FwBAFJCQD8BwQFAWoCBHN3YXAJAMwIAgABCQDMCAIJANgEAQUBZgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUBZwUBSAUDbmlsAwkAAAIFAUkFAUkEAUoJAGUCBQFFBQF5AwkAZwIAAAUBSgkAAgECD05vdGhpbmcgdG8gc3dhcAQBSwkA/AcEBQFqAgRzd2FwCQDMCAIAAQkAzAgCCQDYBAEFAWYJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAWgFAUoFA25pbAMJAAACBQFLBQFLCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgVzd2FwXwUBdQIIX1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBXN3YXBfBQF1AglfRklOSVNIRUQFAXoJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBaQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIFAUEAAwAABQFmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAUwDAXQBdQF2AwkBAiE9AggFAXQGY2FsbGVyBQR0aGlzCQACAQILTm90IGFsbG93ZWQEAXoJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICAgVzd2FwXwUBdQIIX1BFTkRJTkcEAUEJALUJAgUBegIBXwQBQgkA/AcEBQFjAgh3aXRoZHJhdwkAzAgCCQClCAEFBHRoaXMJAMwIAgUBdgkAzAgCBQF1BQNuaWwFA25pbAMJAAACBQFCBQFCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgVzd2FwXwUBdQIIX1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBXN3YXBfBQF1AglfRklOSVNIRUQFAXoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgIBdAELdXNkblRvV2F2ZXMBAU0DCQECIT0CCAUBdAZjYWxsZXIFBHRoaXMJAAIBAgtOb3QgYWxsb3dlZAQBRgUBTQQBdQkA2AQBCAUBdA10cmFuc2FjdGlvbklkBAFOCQEBawEJAPwHBAUBYgIaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFA25pbAUDbmlsAwkAAAIFAU4FAU4EAU8JAQFvAQkAkQMCBQFOAAgEAVAJAQFyAQkA/AcEBQFhAhBzd2FwSW5mb1JFQURPTkxZCQDMCAICIzNQRzdDSHZCYXRIcENod204cmVINzR3ZkV3azFQSGM4UnF5BQNuaWwFA25pbAMJAAACBQFQBQFQBAFRCQC1CQIFAVACAl9fBAFSCQEBbwEJALYJAQkAkQMCBQFRAAsEAVMJAQFvAQkAtgkBCQCRAwIFAVEACgMJAQIhPQIFAVIAAAkAAgECDkNhbid0IHN3YXAgeWV0BAFUAwkAZgIFAUYFAVMFAVMFAUYEAVUJAPwHBAUBaQIGYm9ycm93CQDMCAIFAVQFA25pbAUDbmlsAwkAAAIFAVUFAVUEAVYJAPwHBAUBYwIUc3dhcE5ldXRyaW5vVG9CYXNrZXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUBZgUBVAUDbmlsAwkAAAIFAVYFAVYEAVcJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAWMJAKwCAgIVYmFsYW5jZV91bmxvY2tfYmxvY2tfCQClCAEFBHRoaXMEAVgJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQFkAgtwcmljZV9pbmRleAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgVzd2FwXwUBdQIIX1BFTkRJTkcJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFAVgCAV8JAKQDAQUGaGVpZ2h0AgFfBQF1AgFfCQCkAwEFAVQCAV8JAKQDAQUBVwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAXQBCGZpbmFsaXplAgF1AXYDCQECIT0CCAUBdAZjYWxsZXIFBHRoaXMJAAIBAgtOb3QgYWxsb3dlZAQBWQkBEUBleHRyTmF0aXZlKDEwNTEpAgUBZQIeJXNfX29uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAwUBWQkBAUwDBQF0BQF1BQF2CQEBcwMFAXQFAXUFAXYBAVoBAmFhAAkAyBMDCAUBWglib2R5Qnl0ZXMJAJEDAggFAVoGcHJvb2ZzAAAIBQFaD3NlbmRlclB1YmxpY0tleXozZpk=", "height": 3607152, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FGjeXXZVPaxo8kMW5zRTKFpHxEAz3RqzqJo4jQuTa4t3 Next: H9XffueX1U4S3QeaFwxD2Xij3wUZmBFyQq2gjD2oQnrE Diff:
OldNewDifferences
1414 let USDN_ASSET_ID = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1515
1616 let WX_ASSET_ID = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
17+
18+let VIRES_ASSET_ID = base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p'
1719
1820 let BORROW_DAPP = Address(base58'3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez')
1921
5254 let wxbb = assetBalance(this, WX_ASSET_ID)
5355 if ((wxbb == wxbb))
5456 then {
55- let data = getStringValue((("swap_" + txid) + "_PENDING"))
56- let data_arr = split(data, "_")
57- let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
58- if ((swapFinalize == swapFinalize))
57+ let Vbb = assetBalance(this, VIRES_ASSET_ID)
58+ if ((Vbb == Vbb))
5959 then {
60- let wba = wavesBalance(this).available
61- if ((wba == wba))
60+ let data = getStringValue((("swap_" + txid) + "_PENDING"))
61+ let data_arr = split(data, "_")
62+ let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
63+ if ((swapFinalize == swapFinalize))
6264 then {
63- let wxba = assetBalance(this, WX_ASSET_ID)
64- if ((wxba == wxba))
65+ let wba = wavesBalance(this).available
66+ if ((wba == wba))
6567 then {
66- let amount = (wba - wbb)
67- if ((0 >= amount))
68- then throw("Nothing to swap")
69- else {
70- let call1 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(unit, (amount - 1000000))])
71- if ((call1 == call1))
68+ let wxba = assetBalance(this, WX_ASSET_ID)
69+ if ((wxba == wxba))
70+ then {
71+ let vba = assetBalance(this, VIRES_ASSET_ID)
72+ if ((vba == vba))
7273 then {
73- let amountWx = (wxba - wxbb)
74- let wbbwx = wavesBalance(this).available
75- if ((wbbwx == wbbwx))
76- then if ((0 >= amountWx))
77- then throw("Nothing to swap")
78- else {
79- let call2 = invoke(WX_SWAP_DAPP, "swap", [1, "WAVES", toString(this)], [AttachedPayment(WX_ASSET_ID, amountWx)])
80- if ((call2 == call2))
81- then {
82- let wbawx = wavesBalance(this).available
83- if ((wbawx == wbawx))
84- then {
85- let amountWavesAfterWx = (wbawx - wbbwx)
86- if ((0 >= amountWavesAfterWx))
87- then throw("Nothing to swap")
88- else {
89- let call3 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(unit, (amountWavesAfterWx - 1000000))])
90- if ((call3 == call3))
91- then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data), ScriptTransfer(BORROW_DAPP, valueOrElse(parseInt(data_arr[3]), 0), USDN_ASSET_ID)]
92- else throw("Strict value is not equal to itself.")
93- }
94- }
95- else throw("Strict value is not equal to itself.")
96- }
97- else throw("Strict value is not equal to itself.")
98- }
99- else throw("Strict value is not equal to itself.")
74+ let amount = (wba - wbb)
75+ if ((0 >= amount))
76+ then throw("Nothing to swap")
77+ else {
78+ let call1 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(unit, (amount - 1000000))])
79+ if ((call1 == call1))
80+ then {
81+ let amountWx = (wxba - wxbb)
82+ if ((0 >= amountWx))
83+ then throw("Nothing to swap")
84+ else {
85+ let call2 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(WX_ASSET_ID, amountWx)])
86+ if ((call2 == call2))
87+ then {
88+ let amountVires = (vba - Vbb)
89+ if ((0 >= amountVires))
90+ then throw("Nothing to swap")
91+ else {
92+ let call3 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(VIRES_ASSET_ID, amountVires)])
93+ if ((call3 == call3))
94+ then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data), ScriptTransfer(BORROW_DAPP, valueOrElse(parseInt(data_arr[3]), 0), USDN_ASSET_ID)]
95+ else throw("Strict value is not equal to itself.")
96+ }
97+ }
98+ else throw("Strict value is not equal to itself.")
99+ }
100+ }
101+ else throw("Strict value is not equal to itself.")
102+ }
100103 }
101104 else throw("Strict value is not equal to itself.")
102105 }
106+ else throw("Strict value is not equal to itself.")
103107 }
104108 else throw("Strict value is not equal to itself.")
105109 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NEUTRINO_REST_READONLY_DAPP = Address(base58'3P6uaG88jjcLYZQrvJHLWPbFFRnChnAzmcU')
55
66 let NEUTRINO_METRICS_DAPP = Address(base58'3P77iUusNwMMzWFdC8f7bftwpHyG1PBs1gq')
77
88 let NEUTRINO_MAIN = Address(base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo')
99
1010 let NEUTRINO_ORACLE = Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP')
1111
1212 let NEUTRINO_FACTORY = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
1313
1414 let USDN_ASSET_ID = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1515
1616 let WX_ASSET_ID = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
17+
18+let VIRES_ASSET_ID = base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p'
1719
1820 let BORROW_DAPP = Address(base58'3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez')
1921
2022 let WX_SWAP_DAPP = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
2123
2224 func asAnyList (v) = match v {
2325 case l: List[Any] =>
2426 l
2527 case _ =>
2628 throw("#err")
2729 }
2830
2931
3032 func asInt (v) = match v {
3133 case x: Int =>
3234 x
3335 case t =>
3436 throw("#err")
3537 }
3638
3739
3840 func asStr (v) = match v {
3941 case x: String =>
4042 x
4143 case t =>
4244 throw("#err")
4345 }
4446
4547
4648 func finalizeWavesToUsdn (i,txid,Index) = if ((i.caller != this))
4749 then throw("Not allowed")
4850 else {
4951 let wbb = wavesBalance(this).available
5052 if ((wbb == wbb))
5153 then {
5254 let wxbb = assetBalance(this, WX_ASSET_ID)
5355 if ((wxbb == wxbb))
5456 then {
55- let data = getStringValue((("swap_" + txid) + "_PENDING"))
56- let data_arr = split(data, "_")
57- let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
58- if ((swapFinalize == swapFinalize))
57+ let Vbb = assetBalance(this, VIRES_ASSET_ID)
58+ if ((Vbb == Vbb))
5959 then {
60- let wba = wavesBalance(this).available
61- if ((wba == wba))
60+ let data = getStringValue((("swap_" + txid) + "_PENDING"))
61+ let data_arr = split(data, "_")
62+ let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
63+ if ((swapFinalize == swapFinalize))
6264 then {
63- let wxba = assetBalance(this, WX_ASSET_ID)
64- if ((wxba == wxba))
65+ let wba = wavesBalance(this).available
66+ if ((wba == wba))
6567 then {
66- let amount = (wba - wbb)
67- if ((0 >= amount))
68- then throw("Nothing to swap")
69- else {
70- let call1 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(unit, (amount - 1000000))])
71- if ((call1 == call1))
68+ let wxba = assetBalance(this, WX_ASSET_ID)
69+ if ((wxba == wxba))
70+ then {
71+ let vba = assetBalance(this, VIRES_ASSET_ID)
72+ if ((vba == vba))
7273 then {
73- let amountWx = (wxba - wxbb)
74- let wbbwx = wavesBalance(this).available
75- if ((wbbwx == wbbwx))
76- then if ((0 >= amountWx))
77- then throw("Nothing to swap")
78- else {
79- let call2 = invoke(WX_SWAP_DAPP, "swap", [1, "WAVES", toString(this)], [AttachedPayment(WX_ASSET_ID, amountWx)])
80- if ((call2 == call2))
81- then {
82- let wbawx = wavesBalance(this).available
83- if ((wbawx == wbawx))
84- then {
85- let amountWavesAfterWx = (wbawx - wbbwx)
86- if ((0 >= amountWavesAfterWx))
87- then throw("Nothing to swap")
88- else {
89- let call3 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(unit, (amountWavesAfterWx - 1000000))])
90- if ((call3 == call3))
91- then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data), ScriptTransfer(BORROW_DAPP, valueOrElse(parseInt(data_arr[3]), 0), USDN_ASSET_ID)]
92- else throw("Strict value is not equal to itself.")
93- }
94- }
95- else throw("Strict value is not equal to itself.")
96- }
97- else throw("Strict value is not equal to itself.")
98- }
99- else throw("Strict value is not equal to itself.")
74+ let amount = (wba - wbb)
75+ if ((0 >= amount))
76+ then throw("Nothing to swap")
77+ else {
78+ let call1 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(unit, (amount - 1000000))])
79+ if ((call1 == call1))
80+ then {
81+ let amountWx = (wxba - wxbb)
82+ if ((0 >= amountWx))
83+ then throw("Nothing to swap")
84+ else {
85+ let call2 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(WX_ASSET_ID, amountWx)])
86+ if ((call2 == call2))
87+ then {
88+ let amountVires = (vba - Vbb)
89+ if ((0 >= amountVires))
90+ then throw("Nothing to swap")
91+ else {
92+ let call3 = invoke(WX_SWAP_DAPP, "swap", [1, toBase58String(USDN_ASSET_ID), toString(this)], [AttachedPayment(VIRES_ASSET_ID, amountVires)])
93+ if ((call3 == call3))
94+ then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data), ScriptTransfer(BORROW_DAPP, valueOrElse(parseInt(data_arr[3]), 0), USDN_ASSET_ID)]
95+ else throw("Strict value is not equal to itself.")
96+ }
97+ }
98+ else throw("Strict value is not equal to itself.")
99+ }
100+ }
101+ else throw("Strict value is not equal to itself.")
102+ }
100103 }
101104 else throw("Strict value is not equal to itself.")
102105 }
106+ else throw("Strict value is not equal to itself.")
103107 }
104108 else throw("Strict value is not equal to itself.")
105109 }
106110 else throw("Strict value is not equal to itself.")
107111 }
108112 else throw("Strict value is not equal to itself.")
109113 }
110114 else throw("Strict value is not equal to itself.")
111115 }
112116 else throw("Strict value is not equal to itself.")
113117 }
114118
115119
116120 func finalizeWavesOnly (i,txid,Index) = if ((i.caller != this))
117121 then throw("Not allowed")
118122 else {
119123 let data = getStringValue((("swap_" + txid) + "_PENDING"))
120124 let data_arr = split(data, "_")
121125 let swapFinalize = invoke(NEUTRINO_MAIN, "withdraw", [toString(this), Index, txid], nil)
122126 if ((swapFinalize == swapFinalize))
123127 then [DeleteEntry((("swap_" + txid) + "_PENDING")), StringEntry((("swap_" + txid) + "_FINISHED"), data)]
124128 else throw("Strict value is not equal to itself.")
125129 }
126130
127131
128132 @Callable(i)
129133 func usdnToWaves (a) = if ((i.caller != this))
130134 then throw("Not allowed")
131135 else {
132136 let amount = a
133137 let txid = toBase58String(i.transactionId)
134138 let neutrinoMetrics = asAnyList(invoke(NEUTRINO_METRICS_DAPP, "calcNeutinoMetricsREADONLY", nil, nil))
135139 if ((neutrinoMetrics == neutrinoMetrics))
136140 then {
137141 let BR = asInt(neutrinoMetrics[8])
138142 let call = asStr(invoke(NEUTRINO_REST_READONLY_DAPP, "swapInfoREADONLY", ["3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy"], nil))
139143 if ((call == call))
140144 then {
141145 let neutrino_data_arr = split(call, "__")
142146 let alreadySwappedUnderLimit = asInt(parseInt(neutrino_data_arr[11]))
143147 let maxAvailableToSwapNow = asInt(parseInt(neutrino_data_arr[10]))
144148 if ((alreadySwappedUnderLimit != 0))
145149 then throw("Can't swap yet")
146150 else {
147151 let amounOfUsdnToSwap = if ((amount > maxAvailableToSwapNow))
148152 then maxAvailableToSwapNow
149153 else amount
150154 let borrow = invoke(BORROW_DAPP, "borrow", [amounOfUsdnToSwap], nil)
151155 if ((borrow == borrow))
152156 then {
153157 let swapUsdnToWaves_SC = invoke(NEUTRINO_MAIN, "swapNeutrinoToBasket", nil, [AttachedPayment(USDN_ASSET_ID, amounOfUsdnToSwap)])
154158 if ((swapUsdnToWaves_SC == swapUsdnToWaves_SC))
155159 then {
156160 let balance_unlock_block = getIntegerValue(NEUTRINO_MAIN, ("balance_unlock_block_" + toString(this)))
157161 let index = (getIntegerValue(NEUTRINO_ORACLE, "price_index") + 1)
158162 [StringEntry((("swap_" + txid) + "_PENDING"), ((((((((toString(index) + "_") + toString(height)) + "_") + txid) + "_") + toString(amounOfUsdnToSwap)) + "_") + toString(balance_unlock_block)))]
159163 }
160164 else throw("Strict value is not equal to itself.")
161165 }
162166 else throw("Strict value is not equal to itself.")
163167 }
164168 }
165169 else throw("Strict value is not equal to itself.")
166170 }
167171 else throw("Strict value is not equal to itself.")
168172 }
169173
170174
171175
172176 @Callable(i)
173177 func finalize (txid,Index) = if ((i.caller != this))
174178 then throw("Not allowed")
175179 else {
176180 let wxOneTokenOperationsDisabled = getBooleanValue(NEUTRINO_FACTORY, "%s__oneTokenOperationsDisabled")
177181 if (wxOneTokenOperationsDisabled)
178182 then finalizeWavesOnly(i, txid, Index)
179183 else finalizeWavesToUsdn(i, txid, Index)
180184 }
181185
182186
183187 @Verifier(tx)
184188 func verify () = sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
185189

github/deemru/w8io/3ef1775 
32.63 ms