tx · AfNsctNwArHFvjwHPEs8h6hDQbQarCgoGgEeTc2rbHUy

3Mt7wmkWeioUsmfaBu6PsNq9j9SUs7f9qrs:  -0.04000000 Waves

2022.08.23 14:58 [2197101] smart account 3Mt7wmkWeioUsmfaBu6PsNq9j9SUs7f9qrs > SELF 0.00000000 Waves

{ "type": 13, "id": "AfNsctNwArHFvjwHPEs8h6hDQbQarCgoGgEeTc2rbHUy", "fee": 4000000, "feeAssetId": null, "timestamp": 1661256051913, "version": 1, "sender": "3Mt7wmkWeioUsmfaBu6PsNq9j9SUs7f9qrs", "senderPublicKey": "BLEvt3fBtK9gbCuj3VA7nHviqe3TPkRrF9KL6ZaHGgr4", "proofs": [ "2bYJkn4FrVZ8rnrxRmQuAW2E8pN1174RvmCrfJHAHv14UtwaaWvshsYL918UgK8ei41EcBCzZ5R4ksWz246Kw2eN" ], "script": "base64:BgIQCAISBQoDCAEBEgASAwoBCC8AC3JldmlzaW9uTnVtAgAABkVVTEVSOADWic+BAQAFTVVMVDYAwIQ9AAZNVUxUWDYJALYCAQDAhD0ABU1VTFQ4AIDC1y8ABk1VTFRYOAkAtgIBAIDC1y8ABk1VTFQxMgCAoJSljR0ABk1VTFQxOAkAtgIBAICAkLu61q3wDQADU0VQAgJfXwAHV0FWRVNJRAkA2QQBAgVXQVZFUwEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQ1nZXRCb29sT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCbCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABFmNvbnZlcnROZXV0cmlub1RvV2F2ZXMCBmFtb3VudAVwcmljZQkAawMFBmFtb3VudAUFTVVMVDgFBXByaWNlARZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAgZhbW91bnQFcHJpY2UJAGsDBQZhbW91bnQFBXByaWNlBQVNVUxUOAEJYXNBbnlMaXN0AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0ECnZhbEFueUxpc3QFByRtYXRjaDAFCnZhbEFueUxpc3QJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQhhc1N0cmluZwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEMYXNUdXBsZTJJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgooSW50LCBJbnQpBAF2BQckbWF0Y2gwBQF2CQACAQIdZmFpbCB0byBjYXN0IGludG8gVHVwbGUyIGludHMBEmFzU3dhcFBhcmFtc1NUUlVDVAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIjKEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCkEBnN0cnVjdAUHJG1hdGNoMAUGc3RydWN0CQACAQIiZmFpbCB0byBjYXN0IGludG8gU3dhcFBhcmFtc1NUUlVDVAELdG9UaW1lc3RhbXABBXN0YXJ0AwkAZgIAAAUFc3RhcnQA////////////AQQHJG1hdGNoMAkA7QcBBQVzdGFydAMJAAECBQckbWF0Y2gwAglCbG9ja0luZm8EBWJsb2NrBQckbWF0Y2gwCAUFYmxvY2sJdGltZXN0YW1wAP///////////wEBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQZNVUxUMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFBk1VTFQxOAAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsBEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM040TlM3ZDRKbzlhNkYxNExpRlVLS1lWZFVra2YyZVA0WngACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAMbWF0aENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUVSWR4Q29udHJvbENmZ01hdGhEYXBwABBuZXV0cmlub0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAPYXVjdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwABNsaXF1aWRhdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAALcnBkQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRRJZHhDb250cm9sQ2ZnUnBkRGFwcAATbnNidFN0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAAE3N1cmZTdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAwFpARRnbnNidEluZm9TWVNSRUFET05MWQMVdXNlckFkZHJlc3NTdHJPckVtcHR5CG5zYnREaWZmCHN1cmZEaWZmBAhuc2J0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUTbnNidFN0YWtpbmdDb250cmFjdAIWbnNidFN0YWtpbmdTWVNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkJAMwIAgUIbnNidERpZmYFA25pbAUDbmlsBAhuc2J0VXNlcgkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQAABAluc2J0VG90YWwJAQVhc0ludAEJAJEDAgUIbnNidERhdGEAAQQRZ05zYnRGcm9tTnNidFVzZXIFCG5zYnRVc2VyBBJnTnNidEZyb21Oc2J0VG90YWwFCW5zYnRUb3RhbAQIc3VyZkRhdGEJAQlhc0FueUxpc3QBCQD8BwQFE3N1cmZTdGFraW5nQ29udHJhY3QCFnN1cmZTdGFraW5nU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIFCHN1cmZEaWZmBQNuaWwFA25pbAQIc3VyZlVzZXIJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEAAAQJc3VyZlRvdGFsCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhAAEEEWdOc2J0RnJvbVN1cmZVc2VyCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhAAIEEmdOc2J0RnJvbVN1cmZUb3RhbAkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQADBBF2cEVmZmVjdGl2ZUhlaWdodAkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQAEBBR2cEVmZmVjdGl2ZUhlaWdodE5FVwkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQAFBAlnTnNidFVzZXIJAGQCBRFnTnNidEZyb21Oc2J0VXNlcgURZ05zYnRGcm9tU3VyZlVzZXIECmdOc2J0VG90YWwJAGQCBRJnTnNidEZyb21Oc2J0VG90YWwFEmdOc2J0RnJvbVN1cmZUb3RhbAkAlAoCBQNuaWwJAMwIAgUJZ05zYnRVc2VyCQDMCAIFCmdOc2J0VG90YWwJAMwIAgkAzAgCBQhuc2J0VXNlcgkAzAgCBQluc2J0VG90YWwJAMwIAgURZ05zYnRGcm9tTnNidFVzZXIJAMwIAgUSZ05zYnRGcm9tTnNidFRvdGFsBQNuaWwJAMwIAgkAzAgCBQhzdXJmVXNlcgkAzAgCBQlzdXJmVG90YWwJAMwIAgURZ05zYnRGcm9tU3VyZlVzZXIJAMwIAgUSZ05zYnRGcm9tU3VyZlRvdGFsBQNuaWwJAMwIAgURdnBFZmZlY3RpdmVIZWlnaHQJAMwIAgUUdnBFZmZlY3RpdmVIZWlnaHRORVcFA25pbAFpAQxjbGFpbVJld2FyZHMABAduc2J0SW52CQD8BwQFE25zYnRTdGFraW5nQ29udHJhY3QCGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyBQNuaWwFA25pbAMJAAACBQduc2J0SW52BQduc2J0SW52BAdzdXJmSW52CQD8BwQFE3N1cmZTdGFraW5nQ29udHJhY3QCGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyBQNuaWwFA25pbAMJAAACBQdzdXJmSW52BQdzdXJmSW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEXZ25zYnRSZXdhcmRzU1lTUkVBRE9OTFkBFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQNbnNidFJld2FyZFN0cgkBCGFzU3RyaW5nAQkA/AcEBRNuc2J0U3Rha2luZ0NvbnRyYWN0Ahh1bmNsYWltZWRSZXdhcmRzUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQNuaWwFA25pbAQNc3VyZlJld2FyZFN0cgkBCGFzU3RyaW5nAQkA/AcEBRNzdXJmU3Rha2luZ0NvbnRyYWN0Ahh1bmNsYWltZWRSZXdhcmRzUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQNuaWwFA25pbAkAlAoCBQNuaWwJAMwIAgUNbnNidFJld2FyZFN0cgkAzAgCBQ1zdXJmUmV3YXJkU3RyBQNuaWwAnW86tQ==", "chainId": 84, "height": 2197101, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GLWmDACcD6XHBL4R2ZSWNp2XYH2Fi1BoYn9KbYAFwPHq Next: DfzCmYxhQwbE8Zv7XvaL5ooU4YszUcfFdeiM5XuqJbrK Diff:
OldNewDifferences
2020 let SEP = "__"
2121
2222 let WAVESID = fromBase58String("WAVES")
23-
24-func keyGnsbtFromSurfCoeff () = "%s%s__cfg__gnsbtFromSurfCoeff"
25-
2623
2724 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
2825
7269
7370
7471 func asSwapParamsSTRUCT (val) = match val {
75- case struct: (Int, Int, Int, Int, Int) =>
72+ case struct: (Int, Int, Int, Int, Int, Int, Int) =>
7673 struct
7774 case _ =>
78- throw("fail to cast into Int")
75+ throw("fail to cast into SwapParamsSTRUCT")
7976 }
8077
8178
147144
148145 let surfStakingContract = getContractAddressOrFail(controlCfg, IdxControlCfgSurfStakingDapp)
149146
150-let gnsbtFromSurfCoeff = valueOrElse(getInteger(this, keyGnsbtFromSurfCoeff()), 300)
151-
152-@Callable(i)
153-func gnsbtFromSurfSYSREADONLY (surfAmt) = $Tuple2(nil, (surfAmt / gnsbtFromSurfCoeff))
154-
155-
156-
157147 @Callable(i)
158148 func gnsbtInfoSYSREADONLY (userAddressStrOrEmpty,nsbtDiff,surfDiff) = {
159149 let nsbtData = asAnyList(invoke(nsbtStakingContract, "nsbtStakingSYSREADONLY", [userAddressStrOrEmpty, nsbtDiff], nil))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let revisionNum = ""
55
66 let EULER8 = 271828182
77
88 let MULT6 = 1000000
99
1010 let MULTX6 = toBigInt(1000000)
1111
1212 let MULT8 = 100000000
1313
1414 let MULTX8 = toBigInt(100000000)
1515
1616 let MULT12 = 1000000000000
1717
1818 let MULT18 = toBigInt(1000000000000000000)
1919
2020 let SEP = "__"
2121
2222 let WAVESID = fromBase58String("WAVES")
23-
24-func keyGnsbtFromSurfCoeff () = "%s%s__cfg__gnsbtFromSurfCoeff"
25-
2623
2724 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
2825
2926
3027 func getIntOrFail (address,key) = valueOrErrorMessage(getInteger(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
3128
3229
3330 func getBoolOrFail (address,key) = valueOrErrorMessage(getBoolean(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
3431
3532
3633 func convertNeutrinoToWaves (amount,price) = fraction(amount, MULT8, price)
3734
3835
3936 func convertWavesToNeutrino (amount,price) = fraction(amount, price, MULT8)
4037
4138
4239 func asAnyList (val) = match val {
4340 case valAnyList: List[Any] =>
4441 valAnyList
4542 case _ =>
4643 throw("fail to cast into List[Any]")
4744 }
4845
4946
5047 func asInt (val) = match val {
5148 case valInt: Int =>
5249 valInt
5350 case _ =>
5451 throw("fail to cast into Int")
5552 }
5653
5754
5855 func asString (val) = match val {
5956 case valStr: String =>
6057 valStr
6158 case _ =>
6259 throw("fail to cast into String")
6360 }
6461
6562
6663 func asTuple2Ints (val) = match val {
6764 case v: (Int, Int) =>
6865 v
6966 case _ =>
7067 throw("fail to cast into Tuple2 ints")
7168 }
7269
7370
7471 func asSwapParamsSTRUCT (val) = match val {
75- case struct: (Int, Int, Int, Int, Int) =>
72+ case struct: (Int, Int, Int, Int, Int, Int, Int) =>
7673 struct
7774 case _ =>
78- throw("fail to cast into Int")
75+ throw("fail to cast into SwapParamsSTRUCT")
7976 }
8077
8178
8279 func toTimestamp (start) = if ((0 > start))
8380 then -1
8481 else match blockInfoByHeight(start) {
8582 case block: BlockInfo =>
8683 block.timestamp
8784 case _ =>
8885 -1
8986 }
9087
9188
9289 func toX18 (origVal,origScaleMult) = fraction(toBigInt(origVal), MULT18, toBigInt(origScaleMult))
9390
9491
9592 func fromX18 (val,resultScaleMult) = toInt(fraction(val, toBigInt(resultScaleMult), MULT18))
9693
9794
9895 let IdxControlCfgNeutrinoDapp = 1
9996
10097 let IdxControlCfgAuctionDapp = 2
10198
10299 let IdxControlCfgRpdDapp = 3
103100
104101 let IdxControlCfgMathDapp = 4
105102
106103 let IdxControlCfgLiquidationDapp = 5
107104
108105 let IdxControlCfgRestDapp = 6
109106
110107 let IdxControlCfgNodeRegistryDapp = 7
111108
112109 let IdxControlCfgNsbtStakingDapp = 8
113110
114111 let IdxControlCfgMediatorDapp = 9
115112
116113 let IdxControlCfgSurfStakingDapp = 10
117114
118115 let IdxControlCfgGnsbtControllerDapp = 11
119116
120117 func keyControlAddress () = "%s%s__config__controlAddress"
121118
122119
123120 func keyControlCfg () = "%s__controlConfig"
124121
125122
126123 func readControlCfgOrFail (control) = split(getStringOrFail(control, keyControlCfg()), SEP)
127124
128125
129126 func getContractAddressOrFail (controlCfg,idx) = valueOrErrorMessage(addressFromString(controlCfg[idx]), ("Control cfg doesn't contain address at index " + toString(idx)))
130127
131128
132129 let controlContract = addressFromStringValue(valueOrElse(getString(this, keyControlAddress()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
133130
134131 let controlCfg = readControlCfgOrFail(controlContract)
135132
136133 let mathContract = getContractAddressOrFail(controlCfg, IdxControlCfgMathDapp)
137134
138135 let neutrinoContract = getContractAddressOrFail(controlCfg, IdxControlCfgNeutrinoDapp)
139136
140137 let auctionContract = getContractAddressOrFail(controlCfg, IdxControlCfgAuctionDapp)
141138
142139 let liquidationContract = getContractAddressOrFail(controlCfg, IdxControlCfgLiquidationDapp)
143140
144141 let rpdContract = getContractAddressOrFail(controlCfg, IdxControlCfgRpdDapp)
145142
146143 let nsbtStakingContract = getContractAddressOrFail(controlCfg, IdxControlCfgNsbtStakingDapp)
147144
148145 let surfStakingContract = getContractAddressOrFail(controlCfg, IdxControlCfgSurfStakingDapp)
149146
150-let gnsbtFromSurfCoeff = valueOrElse(getInteger(this, keyGnsbtFromSurfCoeff()), 300)
151-
152-@Callable(i)
153-func gnsbtFromSurfSYSREADONLY (surfAmt) = $Tuple2(nil, (surfAmt / gnsbtFromSurfCoeff))
154-
155-
156-
157147 @Callable(i)
158148 func gnsbtInfoSYSREADONLY (userAddressStrOrEmpty,nsbtDiff,surfDiff) = {
159149 let nsbtData = asAnyList(invoke(nsbtStakingContract, "nsbtStakingSYSREADONLY", [userAddressStrOrEmpty, nsbtDiff], nil))
160150 let nsbtUser = asInt(nsbtData[0])
161151 let nsbtTotal = asInt(nsbtData[1])
162152 let gNsbtFromNsbtUser = nsbtUser
163153 let gNsbtFromNsbtTotal = nsbtTotal
164154 let surfData = asAnyList(invoke(surfStakingContract, "surfStakingSYSREADONLY", [userAddressStrOrEmpty, surfDiff], nil))
165155 let surfUser = asInt(surfData[0])
166156 let surfTotal = asInt(surfData[1])
167157 let gNsbtFromSurfUser = asInt(surfData[2])
168158 let gNsbtFromSurfTotal = asInt(surfData[3])
169159 let vpEffectiveHeight = asInt(surfData[4])
170160 let vpEffectiveHeightNEW = asInt(surfData[5])
171161 let gNsbtUser = (gNsbtFromNsbtUser + gNsbtFromSurfUser)
172162 let gNsbtTotal = (gNsbtFromNsbtTotal + gNsbtFromSurfTotal)
173163 $Tuple2(nil, [gNsbtUser, gNsbtTotal, [nsbtUser, nsbtTotal, gNsbtFromNsbtUser, gNsbtFromNsbtTotal], [surfUser, surfTotal, gNsbtFromSurfUser, gNsbtFromSurfTotal], vpEffectiveHeight, vpEffectiveHeightNEW])
174164 }
175165
176166
177167
178168 @Callable(i)
179169 func claimRewards () = {
180170 let nsbtInv = invoke(nsbtStakingContract, "claimRewardsByOriginCaller", nil, nil)
181171 if ((nsbtInv == nsbtInv))
182172 then {
183173 let surfInv = invoke(surfStakingContract, "claimRewardsByOriginCaller", nil, nil)
184174 if ((surfInv == surfInv))
185175 then nil
186176 else throw("Strict value is not equal to itself.")
187177 }
188178 else throw("Strict value is not equal to itself.")
189179 }
190180
191181
192182
193183 @Callable(i)
194184 func gnsbtRewardsSYSREADONLY (userAddressStrOrEmpty) = {
195185 let nsbtRewardStr = asString(invoke(nsbtStakingContract, "unclaimedRewardsREADONLY", [userAddressStrOrEmpty], nil))
196186 let surfRewardStr = asString(invoke(surfStakingContract, "unclaimedRewardsREADONLY", [userAddressStrOrEmpty], nil))
197187 $Tuple2(nil, [nsbtRewardStr, surfRewardStr])
198188 }
199189
200190

github/deemru/w8io/3ef1775 
63.47 ms