tx · 9WsGTT9MQoEaFzRDCnRM3me8ozSB7EHaq5kYwGzyrjdJ

3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk:  -0.00700000 Waves

2022.09.01 16:49 [3275638] smart account 3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk > SELF 0.00000000 Waves

{ "type": 13, "id": "9WsGTT9MQoEaFzRDCnRM3me8ozSB7EHaq5kYwGzyrjdJ", "fee": 700000, "feeAssetId": null, "timestamp": 1662040221712, "version": 1, "sender": "3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk", "senderPublicKey": "FwXAX9xcWiwbCejtdF8q1Nz8NpJqaVxXKnKK6JoR24pZ", "proofs": [ "jbcmgHeHzAysr4Pq4tds5y7p7nDW1gtsqDWCDUpAvYEyHQ5cLMxCGBKZGzFxJYwPRaZuYf9pFjvjL8RnyHa2Jug" ], "script": "base64:BgIdCAISCwoJCAgICAgICAEIEgASBAoCBAQSBAoCBAQcAAtmYWN0b3JzQmFzZQDoBwEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQ13cml0ZUNvbnN0SW50AgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMFA2tleQkBDEludGVnZXJFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhhc1N0cmluZwEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAkAAgECBHNtOjEBBmFzSW50MgEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACCihJbnQsIEludCkEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAhp3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50MgERYXNVc2VyQmFsYW5jZURhdGEBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAiIoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEJvb2xlYW4pBAF4BQckbWF0Y2gwBQF4BAF0BQckbWF0Y2gwCQACAQIBMwELdXNlckJhbGFuY2UCA3JzcgR1c2VyCQERYXNVc2VyQmFsYW5jZURhdGEBCQD8BwQFA3JzcgILdXNlckJhbGFuY2UJAMwIAgUEdXNlcgUDbmlsBQNuaWwBB3Rocm93SWYCCWNvbmRpdGlvbgVlcnJvcgMFCWNvbmRpdGlvbgkAAgEFBWVycm9yBgEIY2hhbmdlQnkCA2tleQV2YWx1ZQkBCHdyaXRlSW50AgUDa2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAUFdmFsdWUAC2NvbmZpZ1N0b3JlAgZjb25maWcADWNvbmZpZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFC2NvbmZpZ1N0b3JlABJtYXliZU9yYWNsZUFkZHJlc3MEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIOb3JhY2xlX2FkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMFBHVuaXQABkhFSUdIVAUGaGVpZ2h0AAJ2ZAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEXZpcmVzX2Rpc3RyaWJ1dG9yAhViYWQgdmlyZXMgZGlzdHJpYnV0b3IAEHByb3RlY3RlZFJlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MCEXByb3RlY3RlZF9yZXNlcnZlAAVtYWluMQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwIFbWFpbjEAC3VzZHRSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2R0UmVzZXJ2ZQALdXNkY1Jlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCC3VzZGNSZXNlcnZlAANhY2MJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCA2FjYwAOdXNkblZlc3RpbmdBbGwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCDnVzZG5WZXN0aW5nQWxsAAt1c2RuVmVzdGluZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwILdXNkblZlc3RpbmcAC3VzZG5Bc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2RuQXNzZXRJZAAJdXNkbkJvbnVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAgVib251cwEKbW92ZVN0cmVhbQUDcnNyBmFjdGlvbgRmcm9tBnN0cmluZwNhbXQJAPwHBAUCdmQCBG1vdmUJAMwIAgUDcnNyCQDMCAIFBmFjdGlvbgkAzAgCBQRmcm9tCQDMCAIFBnN0cmluZwkAzAgCBQNhbXQFA25pbAUDbmlsAQlvcEFsbG93ZWQCAm9wCmFzc2V0SWRTdHIEByRtYXRjaDAJAPwHBAUNY29uZmlnQWRkcmVzcwIJb3BBbGxvd2VkCQDMCAIFCmFzc2V0SWRTdHIJAMwIAgUCb3AFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDADBQFiBgkAAgECC25vdCBhbGxvd2VkCQACAQIhb3BBbGxvd2VkOiB1bmV4cGVjdGVkIHJlc3VsdCB0eXBlAQphZHZpc2VVc2VyAQNhY2MECWRhdGFXaGFsZQkBCGFzU3RyaW5nAQkA/AcEBQt1c2RuVmVzdGluZwIHYWR2aXNlVQkAzAgCBQNhY2MFA25pbAUDbmlsAwkAAAIFCWRhdGFXaGFsZQUJZGF0YVdoYWxlBAdkYXRhQWxsCQEIYXNTdHJpbmcBCQD8BwQFDnVzZG5WZXN0aW5nQWxsAgdhZHZpc2VVCQDMCAIFA2FjYwUDbmlsBQNuaWwDCQAAAgUHZGF0YUFsbAUHZGF0YUFsbAkArAICCQCsAgIFCWRhdGFXaGFsZQIDIHwgBQdkYXRhQWxsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAFpAQRpbml0CQRjb25mAXQBYwh2ZXN0bkFsbAdhY2NvdW50BG1haW4JdXNkbkFzc2V0BWJvbnVzBXZlc3RuAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQISb25seSBzZWxmIGNhbiBpbml0CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgULY29uZmlnU3RvcmUFBGNvbmYJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2R0UmVzZXJ2ZQUBdAkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwICC3VzZGNSZXNlcnZlBQFjCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIOdXNkblZlc3RpbmdBbGwFCHZlc3RuQWxsCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgILdXNkblZlc3RpbmcFBXZlc3RuCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIDYWNjBQdhY2NvdW50CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIFbWFpbjEFBG1haW4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2RuQXNzZXRJZAUJdXNkbkFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVib251cwUFYm9udXMFA25pbAFpAQ1jb252ZXJ0VG9VU0ROAAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIKAQdtb3ZlUnNyAQNyc3IEB3Jlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEFA3JzcgQHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUHcmVzZXJ2ZQIHYXNzZXRJZAQGY2hlY2tzCQEJb3BBbGxvd2VkAgIOb3BlbkNvbGxhdGVyYWwFB2Fzc2V0SWQDCQAAAgUGY2hlY2tzBQZjaGVja3MDAwkBAiE9AgUDcnNyCQClCAEFC3VzZHRSZXNlcnZlCQECIT0CBQNyc3IJAKUIAQULdXNkY1Jlc2VydmUHCQACAQIPaW52YWxpZCByZXNlcnZlBANzaEMJAPwHBAUCdmQCCnN5bmNIZWlnaHQJAMwIAgUDcnNyBQNuaWwFA25pbAMJAAACBQNzaEMFA3NoQwQLJHQwNDIzMDQzMTQJAQZhc0ludDIBCQD8BwQFB3Jlc2VydmUCE3N0b3JlZERlcG9zaXRCb3Jyb3cFA25pbAUDbmlsBAx0b3RhbERlcG9zaXQIBQskdDA0MjMwNDMxNAJfMQQJdG90YWxEZWJ0CAULJHQwNDIzMDQzMTQCXzIEBHV0aWwDCQBmAgUMdG90YWxEZXBvc2l0AAAJAJcDAQkAzAgCBQtmYWN0b3JzQmFzZQkAzAgCCQBrAwUJdG90YWxEZWJ0BQtmYWN0b3JzQmFzZQUMdG90YWxEZXBvc2l0BQNuaWwAAAQNdXRpbFRocmVzaG9sZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1jb25maWdBZGRyZXNzCQCsAgIFB2Fzc2V0SWQCGV9vcGVuX2NvbGxhdGVyYWxfdGhyZXNvbGQA6AcDCQBmAgUNdXRpbFRocmVzaG9sZAUEdXRpbAkAAgECHW5vdCBhbGxvd2VkOiB1dGlsIDwgdGhyZXNob2xkBANkZXAJAQVhc0ludAEJAPwHBAUHcmVzZXJ2ZQIOdXNlckRlcG9zaXRVU0QJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwEBG1vdmUEAnMzCQD8BwQFB3Jlc2VydmUCEnRyYW5zZmVyQVRva2Vuc0ZvcgkAzAgCBQdhZGRyZXNzCQDMCAIFA2FjYwkAzAgCBQNkZXAFA25pbAUDbmlsAwkAAAIFAnMzBQJzMwQEcFJ3MwkBCm1vdmVTdHJlYW0FBQNyc3ICB2RlcG9zaXQFB2FkZHJlc3MFA2FjYwUDZGVwAwkAAAIFBHBSdzMFBHBSdzMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUEbW92ZQUEbW92ZQUDZGVwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJtdwkA/AcEBQt1c2RuVmVzdGluZwISc3RhcnRWZXN0aW5nQWxsRm9yCQDMCAIJAKUIAQgFAWkGY2FsbGVyBQNuaWwFA25pbAMJAAACBQJtdwUCbXcEAm10CQEFYXNJbnQBCQEHbW92ZVJzcgEJAKUIAQULdXNkdFJlc2VydmUDCQAAAgUCbXQFAm10BAJtYwkBBWFzSW50AQkBB21vdmVSc3IBCQClCAEFC3VzZGNSZXNlcnZlAwkAAAIFAm1jBQJtYwQIZGVwVG90YWwJAGQCBQJtdAUCbWMEBXJlaGFiBAd1c2RuQW10CQBrAwUIZGVwVG90YWwJAGQCBQtmYWN0b3JzQmFzZQUJdXNkbkJvbnVzBQtmYWN0b3JzQmFzZQQCd2QJAPwHBAUQcHJvdGVjdGVkUmVzZXJ2ZQIPd2l0aGRyYXdUb01haW4yCQDMCAIFA2FjYwkAzAgCBQt1c2RuQXNzZXRJZAkAzAgCBQd1c2RuQW10BQNuaWwFA25pbAMJAAACBQJ3ZAUCd2QEBXJlaGFiCQD8BwQFDnVzZG5WZXN0aW5nQWxsAgphY2NvdW50Rm9yCQDMCAIFB2FkZHJlc3MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQt1c2RuQXNzZXRJZAUHdXNkbkFtdAUDbmlsAwkAAAIFBXJlaGFiBQVyZWhhYgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQVyZWhhYgUFcmVoYWIECyR0MDU1NDY1NjA4CQEGYXNJbnQyAQkA/AcEBQVtYWluMQIIaGVhbHRoT2YJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwEAmJwCAULJHQwNTU0NjU2MDgCXzEEA2JwdQgFCyR0MDU1NDY1NjA4Al8yAwkAZgIFAmJwCQBoAgBkCQBlAgUCYnAFA2JwdQkAAgECKm5vdCBlbm91Z2ggYWRkcmVzcyBoZWFsdGggYWZ0ZXIgbW92ZTogPCAxJQQLJHQwNTcwNjU3NzIJAQZhc0ludDIBCQD8BwQFBW1haW4xAghoZWFsdGhPZgkAzAgCBQNhY2MFA25pbAUDbmlsBAZicF9hY2MIBQskdDA1NzA2NTc3MgJfMQQHYnB1X2FjYwgFCyR0MDU3MDY1NzcyAl8yAwkAZgIFBmJwX2FjYwkAaAIAZAkAZQIFBmJwX2FjYwUHYnB1X2FjYwkAAgECJm5vdCBlbm91Z2ggYWNjIGhlYWx0aCBhZnRlciBtb3ZlOiA8IDElCQDMCAIJAQ13cml0ZUNvbnN0SW50AgkArAICCQCsAgIFB2FkZHJlc3MCCl9taWdyYXRlZF8JARFAZXh0ck5hdGl2ZSgxMDUzKQIFC3VzZHRSZXNlcnZlAgdhc3NldElkBQJtdAkAzAgCCQENd3JpdGVDb25zdEludAIJAKwCAgkArAICBQdhZGRyZXNzAgpfbWlncmF0ZWRfCQERQGV4dHJOYXRpdmUoMTA1MykCBQt1c2RjUmVzZXJ2ZQIHYXNzZXRJZAUCbWMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARV3aXRoZHJhd1Zlc3RlZEFsbFVTRE4CBXdoYWxlB3JlZ3VsYXIECXdoYWxlUGFydAMFBXdoYWxlCQEFYXNJbnQBCQD8BwQFDnVzZG5WZXN0aW5nQWxsAhF3aXRoZHJhd1Zlc3RlZEZvcgkAzAgCCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwAAAMJAAACBQl3aGFsZVBhcnQFCXdoYWxlUGFydAQHcmVnUGFydAMFB3JlZ3VsYXIJAQVhc0ludAEJAPwHBAULdXNkblZlc3RpbmcCEXdpdGhkcmF3VmVzdGVkRm9yCQDMCAIJAKUIAQgFAWkGY2FsbGVyBQNuaWwFA25pbAAAAwkAAAIFB3JlZ1BhcnQFB3JlZ1BhcnQJAJQKAgUDbmlsCQBkAgUJd2hhbGVQYXJ0BQdyZWdQYXJ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXdpdGhkcmF3VmVzdGVkQWxsU1VSRgIFd2hhbGUHcmVndWxhcgkAAgECBHRvZG8AJaIZPw==", "chainId": 87, "height": 3275638, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: GniN2f7yf36GzReitrCBFnBUVvKvfH95h4yJnrYbEwPq Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let factorsBase = 1000
5+
6+func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
7+ then StringEntry(key, value)
8+ else throw(("already initialized: " + key))
9+
10+
11+func writeConstInt (key,value) = if (!(isDefined(getInteger(this, key))))
12+ then IntegerEntry(key, value)
13+ else throw(("already initialized: " + key))
14+
15+
16+func writeInt (key,value) = if ((0 > value))
17+ then throw(((("writing negative value " + toString(value)) + " for key ") + key))
18+ else IntegerEntry(key, value)
19+
20+
21+func asString (value) = match value {
22+ case s: String =>
23+ s
24+ case _ =>
25+ throw("wrong type, expected: String")
26+}
27+
28+
29+func asInt (value) = match value {
30+ case int: Int =>
31+ int
32+ case _ =>
33+ throw("sm:1")
34+}
35+
36+
37+func asInt2 (value) = match value {
38+ case x: (Int, Int) =>
39+ x
40+ case t =>
41+ throw("wrong type, expected: Int2")
42+}
43+
44+
45+func asUserBalanceData (value) = match value {
46+ case x: (Int, Int, Int, Int, Int, Boolean) =>
47+ x
48+ case t =>
49+ throw("3")
50+}
51+
52+
53+func userBalance (rsr,user) = asUserBalanceData(invoke(rsr, "userBalance", [user], nil))
54+
55+
56+func throwIf (condition,error) = if (condition)
57+ then throw(error)
58+ else true
59+
60+
61+func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
62+
63+
64+let configStore = "config"
65+
66+let configAddress = addressFromStringValue(getStringValue(this, configStore))
67+
68+let maybeOracleAddress = match getString(configAddress, "oracle_address") {
69+ case s: String =>
70+ addressFromString(s)
71+ case _ =>
72+ unit
73+}
74+
75+let HEIGHT = height
76+
77+let vd = addressFromStringValue(valueOrErrorMessage(getString(configAddress, "vires_distributor"), "bad vires distributor"))
78+
79+let protectedReserve = addressFromStringValue(getStringValue(configAddress, "protected_reserve"))
80+
81+let main1 = addressFromStringValue(getStringValue(this, "main1"))
82+
83+let usdtReserve = addressFromStringValue(getStringValue(this, "usdtReserve"))
84+
85+let usdcReserve = addressFromStringValue(getStringValue(this, "usdcReserve"))
86+
87+let acc = getStringValue(this, "acc")
88+
89+let usdnVestingAll = addressFromStringValue(getStringValue(this, "usdnVestingAll"))
90+
91+let usdnVesting = addressFromStringValue(getStringValue(this, "usdnVesting"))
92+
93+let usdnAssetId = getStringValue(this, "usdnAssetId")
94+
95+let usdnBonus = getIntegerValue(this, "bonus")
96+
97+func moveStream (rsr,action,from,string,amt) = invoke(vd, "move", [rsr, action, from, string, amt], nil)
98+
99+
100+func opAllowed (op,assetIdStr) = match invoke(configAddress, "opAllowed", [assetIdStr, op], nil) {
101+ case b: Boolean =>
102+ if (b)
103+ then true
104+ else throw("not allowed")
105+ case _ =>
106+ throw("opAllowed: unexpected result type")
107+}
108+
109+
110+func adviseUser (acc) = {
111+ let dataWhale = asString(invoke(usdnVesting, "adviseU", [acc], nil))
112+ if ((dataWhale == dataWhale))
113+ then {
114+ let dataAll = asString(invoke(usdnVestingAll, "adviseU", [acc], nil))
115+ if ((dataAll == dataAll))
116+ then ((dataWhale + " | ") + dataAll)
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+@Callable(i)
124+func init (conf,t,c,vestnAll,account,main,usdnAsset,bonus,vestn) = if ((i.caller != this))
125+ then throw("only self can init")
126+ else [writeConstString(configStore, conf), writeConstString("usdtReserve", t), writeConstString("usdcReserve", c), writeConstString("usdnVestingAll", vestnAll), writeConstString("usdnVesting", vestn), writeConstString("acc", account), writeConstString("main1", main), writeConstString("usdnAssetId", usdnAsset), IntegerEntry("bonus", bonus)]
127+
128+
129+
130+@Callable(i)
131+func convertToUSDN () = {
132+ let address = toString(i.caller)
133+ func moveRsr (rsr) = {
134+ let reserve = addressFromStringValue(rsr)
135+ let assetId = getStringValue(reserve, "assetId")
136+ let checks = opAllowed("openCollateral", assetId)
137+ if ((checks == checks))
138+ then if (if ((rsr != toString(usdtReserve)))
139+ then (rsr != toString(usdcReserve))
140+ else false)
141+ then throw("invalid reserve")
142+ else {
143+ let shC = invoke(vd, "syncHeight", [rsr], nil)
144+ if ((shC == shC))
145+ then {
146+ let $t042304314 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
147+ let totalDeposit = $t042304314._1
148+ let totalDebt = $t042304314._2
149+ let util = if ((totalDeposit > 0))
150+ then min([factorsBase, fraction(totalDebt, factorsBase, totalDeposit)])
151+ else 0
152+ let utilThreshold = valueOrElse(getInteger(configAddress, (assetId + "_open_collateral_thresold")), 1000)
153+ if ((utilThreshold > util))
154+ then throw("not allowed: util < threshold")
155+ else {
156+ let dep = asInt(invoke(reserve, "userDepositUSD", [address], nil))
157+ let move = {
158+ let s3 = invoke(reserve, "transferATokensFor", [address, acc, dep], nil)
159+ if ((s3 == s3))
160+ then {
161+ let pRw3 = moveStream(rsr, "deposit", address, acc, dep)
162+ if ((pRw3 == pRw3))
163+ then unit
164+ else throw("Strict value is not equal to itself.")
165+ }
166+ else throw("Strict value is not equal to itself.")
167+ }
168+ if ((move == move))
169+ then dep
170+ else throw("Strict value is not equal to itself.")
171+ }
172+ }
173+ else throw("Strict value is not equal to itself.")
174+ }
175+ else throw("Strict value is not equal to itself.")
176+ }
177+
178+ let mw = invoke(usdnVesting, "startVestingAllFor", [toString(i.caller)], nil)
179+ if ((mw == mw))
180+ then {
181+ let mt = asInt(moveRsr(toString(usdtReserve)))
182+ if ((mt == mt))
183+ then {
184+ let mc = asInt(moveRsr(toString(usdcReserve)))
185+ if ((mc == mc))
186+ then {
187+ let depTotal = (mt + mc)
188+ let rehab = {
189+ let usdnAmt = fraction(depTotal, (factorsBase + usdnBonus), factorsBase)
190+ let wd = invoke(protectedReserve, "withdrawToMain2", [acc, usdnAssetId, usdnAmt], nil)
191+ if ((wd == wd))
192+ then {
193+ let rehab = invoke(usdnVestingAll, "accountFor", [address], [AttachedPayment(fromBase58String(usdnAssetId), usdnAmt)])
194+ if ((rehab == rehab))
195+ then unit
196+ else throw("Strict value is not equal to itself.")
197+ }
198+ else throw("Strict value is not equal to itself.")
199+ }
200+ if ((rehab == rehab))
201+ then {
202+ let $t055465608 = asInt2(invoke(main1, "healthOf", [address], nil))
203+ let bp = $t055465608._1
204+ let bpu = $t055465608._2
205+ if ((bp > (100 * (bp - bpu))))
206+ then throw("not enough address health after move: < 1%")
207+ else {
208+ let $t057065772 = asInt2(invoke(main1, "healthOf", [acc], nil))
209+ let bp_acc = $t057065772._1
210+ let bpu_acc = $t057065772._2
211+ if ((bp_acc > (100 * (bp_acc - bpu_acc))))
212+ then throw("not enough acc health after move: < 1%")
213+ else [writeConstInt(((address + "_migrated_") + getStringValue(usdtReserve, "assetId")), mt), writeConstInt(((address + "_migrated_") + getStringValue(usdcReserve, "assetId")), mc)]
214+ }
215+ }
216+ else throw("Strict value is not equal to itself.")
217+ }
218+ else throw("Strict value is not equal to itself.")
219+ }
220+ else throw("Strict value is not equal to itself.")
221+ }
222+ else throw("Strict value is not equal to itself.")
223+ }
224+
225+
226+
227+@Callable(i)
228+func withdrawVestedAllUSDN (whale,regular) = {
229+ let whalePart = if (whale)
230+ then asInt(invoke(usdnVestingAll, "withdrawVestedFor", [toString(i.caller)], nil))
231+ else 0
232+ if ((whalePart == whalePart))
233+ then {
234+ let regPart = if (regular)
235+ then asInt(invoke(usdnVesting, "withdrawVestedFor", [toString(i.caller)], nil))
236+ else 0
237+ if ((regPart == regPart))
238+ then $Tuple2(nil, (whalePart + regPart))
239+ else throw("Strict value is not equal to itself.")
240+ }
241+ else throw("Strict value is not equal to itself.")
242+ }
243+
244+
245+
246+@Callable(i)
247+func withdrawVestedAllSURF (whale,regular) = throw("todo")
248+
249+

github/deemru/w8io/6500d08 
54.24 ms