tx · GjzAVopR3CiDDME9Bbhpphs8sHbH5XFPfbyxsyPc3jU9

3PQrVbTVpqXHqpVKftkNdjy3zZAh4dsRzN6:  -0.01100000 Waves

2022.11.30 15:55 [3405331] smart account 3PQrVbTVpqXHqpVKftkNdjy3zZAh4dsRzN6 > SELF 0.00000000 Waves

{ "type": 13, "id": "GjzAVopR3CiDDME9Bbhpphs8sHbH5XFPfbyxsyPc3jU9", "fee": 1100000, "feeAssetId": null, "timestamp": 1669815453860, "version": 1, "sender": "3PQrVbTVpqXHqpVKftkNdjy3zZAh4dsRzN6", "senderPublicKey": "ERsTyBo8M8Sai2pxVnMDzPWot7KbWfbLc7yp6hDRQNcs", "proofs": [ "36M3qC1cCFYAGBaqmAnEcBk4XcpEgYmVpuhWzqkeHG725zXWJ2pRDJv5KghnqBZRYe5SAVH9fB6A2kLZz3Fx89Rk" ], "script": "base64:BgIQCAISBQoDCAEBEgASAwoBCDsAC3JldmlzaW9uTnVtAihjNTU2ZGQ3ZTVmNmU4M2RiMDcyYWVjNjk4YjdiMTJiMmI5NDJhMzk1AAZFVUxFUjgA1onPgQEABU1VTFQ2AMCEPQAGTVVMVFg2CQC2AgEAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDgJALYCAQCAwtcvAAZNVUxUMTIAgKCUpY0dAAZNVUxUMTgJALYCAQCAgJC7utat8A0AA1NFUAICX18AB1dBVkVTSUQJANkEAQIFV0FWRVMBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAENZ2V0Qm9vbE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAARZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAgZhbW91bnQFcHJpY2UJAGsDBQZhbW91bnQFBU1VTFQ4BQVwcmljZQEWY29udmVydFdhdmVzVG9OZXV0cmlubwIGYW1vdW50BXByaWNlCQBrAwUGYW1vdW50BQVwcmljZQUFTVVMVDgBCWFzQW55TGlzdAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAp2YWxBbnlMaXN0BQckbWF0Y2gwBQp2YWxBbnlMaXN0CQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEIYXNTdHJpbmcBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBDGFzVHVwbGUySW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBdgUHJG1hdGNoMAUBdgkAAgECHWZhaWwgdG8gY2FzdCBpbnRvIFR1cGxlMiBpbnRzARJhc1N3YXBQYXJhbXNTVFJVQ1QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACIyhJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAZzdHJ1Y3QFByRtYXRjaDAFBnN0cnVjdAkAAgECImZhaWwgdG8gY2FzdCBpbnRvIFN3YXBQYXJhbXNTVFJVQ1QBC3RvVGltZXN0YW1wAQVzdGFydAMJAGYCAAAFBXN0YXJ0AP///////////wEEByRtYXRjaDAJAO0HAQUFc3RhcnQDCQABAgUHJG1hdGNoMAIJQmxvY2tJbmZvBAVibG9jawUHJG1hdGNoMAgFBWJsb2NrCXRpbWVzdGFtcAD///////////8BAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUGTVVMVDE4CQC2AgEFDW9yaWdTY2FsZU11bHQBB2Zyb21YMTgCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQZNVUxUMTgAGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAAQAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAIAFElkeENvbnRyb2xDZmdScGREYXBwAAMAFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAEABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAUAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAGAB1JZHhDb250cm9sQ2ZnTm9kZVJlZ2lzdHJ5RGFwcAAHABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAgAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAACQAcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAAKACBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAALARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEUcmVhZENvbnRyb2xDZmdPckZhaWwBB2NvbnRyb2wJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFB2NvbnRyb2wJAQ1rZXlDb250cm9sQ2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCmNvbnRyb2xDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpjb250cm9sQ2ZnBQNpZHgJAKwCAgItQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAPY29udHJvbENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFrZXlDb250cm9sQWRkcmVzcwACIzNQNUJmZDU4UFBmTnZCTTJIeThRZmJjRHFNZU50emc3S2ZQAApjb250cm9sQ2ZnCQEUcmVhZENvbnRyb2xDZmdPckZhaWwBBQ9jb250cm9sQ29udHJhY3QADG1hdGhDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAQbmV1dHJpbm9Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAD2F1Y3Rpb25Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAATbGlxdWlkYXRpb25Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAAC3JwZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUUSWR4Q29udHJvbENmZ1JwZERhcHAAE25zYnRTdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwABNzdXJmU3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAALSWR4U3VyZlVzZXIAAAAMSWR4U3VyZlRvdGFsAAEAEElkeFN1cmZHbnNidFVzZXIAAgARSWR4U3VyZkduc2J0VG90YWwAAwANSWR4U3VyZlZwQ3VycgAEAAxJZHhTdXJmVnBOZXcABQASSWR4U3VyZlRvdGFsTWF0dXJlAAYAEElkeFN1cmZUb3RhbFRlZW4ABwAPSWR4U3VyZlRvdGFsS2lkAAgAEUlkeFN1cmZVc2VyTWF0dXJlAAkAD0lkeFN1cmZVc2VyVGVlbgAKAA5JZHhTdXJmVXNlcktpZAALAwFpARRnbnNidEluZm9TWVNSRUFET05MWQMVdXNlckFkZHJlc3NTdHJPckVtcHR5CG5zYnREaWZmCHN1cmZEaWZmBAhuc2J0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUTbnNidFN0YWtpbmdDb250cmFjdAIWbnNidFN0YWtpbmdTWVNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkJAMwIAgUIbnNidERpZmYFA25pbAUDbmlsBAhuc2J0VXNlcgkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQAABAluc2J0VG90YWwJAQVhc0ludAEJAJEDAgUIbnNidERhdGEAAQQRZ05zYnRGcm9tTnNidFVzZXIFCG5zYnRVc2VyBBJnTnNidEZyb21Oc2J0VG90YWwFCW5zYnRUb3RhbAQIc3VyZkRhdGEJAQlhc0FueUxpc3QBCQD8BwQFE3N1cmZTdGFraW5nQ29udHJhY3QCFnN1cmZTdGFraW5nU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIFCHN1cmZEaWZmBQNuaWwFA25pbAQIc3VyZlVzZXIJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEFC0lkeFN1cmZVc2VyBAlzdXJmVG90YWwJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEFDElkeFN1cmZUb3RhbAQRZ05zYnRGcm9tU3VyZlVzZXIJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEFEElkeFN1cmZHbnNidFVzZXIEEmdOc2J0RnJvbVN1cmZUb3RhbAkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQURSWR4U3VyZkduc2J0VG90YWwECWdOc2J0VXNlcgkAZAIFEWdOc2J0RnJvbU5zYnRVc2VyBRFnTnNidEZyb21TdXJmVXNlcgQKZ05zYnRUb3RhbAkAZAIFEmdOc2J0RnJvbU5zYnRUb3RhbAUSZ05zYnRGcm9tU3VyZlRvdGFsCQCUCgIFA25pbAkAzAgCBQlnTnNidFVzZXIJAMwIAgUKZ05zYnRUb3RhbAkAzAgCCQDMCAIFCG5zYnRVc2VyCQDMCAIFCW5zYnRUb3RhbAkAzAgCBRFnTnNidEZyb21Oc2J0VXNlcgkAzAgCBRJnTnNidEZyb21Oc2J0VG90YWwFA25pbAkAzAgCCQDMCAIFCHN1cmZVc2VyCQDMCAIFCXN1cmZUb3RhbAkAzAgCBRFnTnNidEZyb21TdXJmVXNlcgkAzAgCBRJnTnNidEZyb21TdXJmVG90YWwFA25pbAkAzAgCCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhBQ1JZHhTdXJmVnBDdXJyCQDMCAIJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEFDElkeFN1cmZWcE5ldwkAzAgCCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhBRJJZHhTdXJmVG90YWxNYXR1cmUJAMwIAgkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQUQSWR4U3VyZlRvdGFsVGVlbgkAzAgCCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhBQ9JZHhTdXJmVG90YWxLaWQJAMwIAgkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQURSWR4U3VyZlVzZXJNYXR1cmUJAMwIAgkBBWFzSW50AQkAkQMCBQhzdXJmRGF0YQUPSWR4U3VyZlVzZXJUZWVuCQDMCAIJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEFDklkeFN1cmZVc2VyS2lkBQNuaWwBaQEMY2xhaW1SZXdhcmRzAAQHbnNidEludgkBBWFzSW50AQkA/AcEBRNuc2J0U3Rha2luZ0NvbnRyYWN0AhpjbGFpbVJld2FyZHNCeU9yaWdpbkNhbGxlcgUDbmlsBQNuaWwEB3N1cmZJbnYJAQVhc0ludAEJAPwHBAUTc3VyZlN0YWtpbmdDb250cmFjdAIaY2xhaW1SZXdhcmRzQnlPcmlnaW5DYWxsZXIFA25pbAUDbmlsAwkAAAIJAGQCBQduc2J0SW52BQdzdXJmSW52AAAJAAIBAhBOb3RoaW5nIHRvIGNsYWltBQNuaWwBaQEXZ25zYnRSZXdhcmRzU1lTUkVBRE9OTFkBFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQNbnNidFJld2FyZFN0cgkBCGFzU3RyaW5nAQkA/AcEBRNuc2J0U3Rha2luZ0NvbnRyYWN0Ahh1bmNsYWltZWRSZXdhcmRzUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQNuaWwFA25pbAQNc3VyZlJld2FyZFN0cgkBCGFzU3RyaW5nAQkA/AcEBRNzdXJmU3Rha2luZ0NvbnRyYWN0Ahh1bmNsYWltZWRSZXdhcmRzUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQNuaWwFA25pbAkAlAoCBQNuaWwJAMwIAgUNbnNidFJld2FyZFN0cgkAzAgCBQ1zdXJmUmV3YXJkU3RyBQNuaWwAraZ4XA==", "chainId": 87, "height": 3405331, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EZbpdQtcwJ6KPxjW5mf7RFm612YSoR1tVqKSchYJtUJT Next: 5fjZXDdgGXi2Y957yyxhj38byqXQARmEpwrfXudC3cPK Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let revisionNum = "67a79038ae808c38b2f30c38d7cee1f83f1912c0"
4+let revisionNum = "c556dd7e5f6e83db072aec698b7b12b2b942a395"
55
66 let EULER8 = 271828182
77
120120 func keyControlCfg () = "%s__controlConfig"
121121
122122
123-func readControlCfgOrFail (control) = split(getStringOrFail(control, keyControlCfg()), SEP)
123+func readControlCfgOrFail (control) = split_4C(getStringOrFail(control, keyControlCfg()), SEP)
124124
125125
126126 func getContractAddressOrFail (controlCfg,idx) = valueOrErrorMessage(addressFromString(controlCfg[idx]), ("Control cfg doesn't contain address at index " + toString(idx)))
144144
145145 let surfStakingContract = getContractAddressOrFail(controlCfg, IdxControlCfgSurfStakingDapp)
146146
147+let IdxSurfUser = 0
148+
149+let IdxSurfTotal = 1
150+
151+let IdxSurfGnsbtUser = 2
152+
153+let IdxSurfGnsbtTotal = 3
154+
155+let IdxSurfVpCurr = 4
156+
157+let IdxSurfVpNew = 5
158+
159+let IdxSurfTotalMature = 6
160+
161+let IdxSurfTotalTeen = 7
162+
163+let IdxSurfTotalKid = 8
164+
165+let IdxSurfUserMature = 9
166+
167+let IdxSurfUserTeen = 10
168+
169+let IdxSurfUserKid = 11
170+
147171 @Callable(i)
148172 func gnsbtInfoSYSREADONLY (userAddressStrOrEmpty,nsbtDiff,surfDiff) = {
149173 let nsbtData = asAnyList(invoke(nsbtStakingContract, "nsbtStakingSYSREADONLY", [userAddressStrOrEmpty, nsbtDiff], nil))
152176 let gNsbtFromNsbtUser = nsbtUser
153177 let gNsbtFromNsbtTotal = nsbtTotal
154178 let surfData = asAnyList(invoke(surfStakingContract, "surfStakingSYSREADONLY", [userAddressStrOrEmpty, surfDiff], nil))
155- let surfUser = asInt(surfData[0])
156- let surfTotal = asInt(surfData[1])
157- let gNsbtFromSurfUser = asInt(surfData[2])
158- let gNsbtFromSurfTotal = asInt(surfData[3])
159- let vpEffectiveHeight = asInt(surfData[4])
160- let vpEffectiveHeightNEW = asInt(surfData[5])
179+ let surfUser = asInt(surfData[IdxSurfUser])
180+ let surfTotal = asInt(surfData[IdxSurfTotal])
181+ let gNsbtFromSurfUser = asInt(surfData[IdxSurfGnsbtUser])
182+ let gNsbtFromSurfTotal = asInt(surfData[IdxSurfGnsbtTotal])
161183 let gNsbtUser = (gNsbtFromNsbtUser + gNsbtFromSurfUser)
162184 let gNsbtTotal = (gNsbtFromNsbtTotal + gNsbtFromSurfTotal)
163- $Tuple2(nil, [gNsbtUser, gNsbtTotal, [nsbtUser, nsbtTotal, gNsbtFromNsbtUser, gNsbtFromNsbtTotal], [surfUser, surfTotal, gNsbtFromSurfUser, gNsbtFromSurfTotal], vpEffectiveHeight, vpEffectiveHeightNEW])
185+ $Tuple2(nil, [gNsbtUser, gNsbtTotal, [nsbtUser, nsbtTotal, gNsbtFromNsbtUser, gNsbtFromNsbtTotal], [surfUser, surfTotal, gNsbtFromSurfUser, gNsbtFromSurfTotal], asInt(surfData[IdxSurfVpCurr]), asInt(surfData[IdxSurfVpNew]), asInt(surfData[IdxSurfTotalMature]), asInt(surfData[IdxSurfTotalTeen]), asInt(surfData[IdxSurfTotalKid]), asInt(surfData[IdxSurfUserMature]), asInt(surfData[IdxSurfUserTeen]), asInt(surfData[IdxSurfUserKid])])
164186 }
165187
166188
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let revisionNum = "67a79038ae808c38b2f30c38d7cee1f83f1912c0"
4+let revisionNum = "c556dd7e5f6e83db072aec698b7b12b2b942a395"
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")
2323
2424 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
2525
2626
2727 func getIntOrFail (address,key) = valueOrErrorMessage(getInteger(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
2828
2929
3030 func getBoolOrFail (address,key) = valueOrErrorMessage(getBoolean(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
3131
3232
3333 func convertNeutrinoToWaves (amount,price) = fraction(amount, MULT8, price)
3434
3535
3636 func convertWavesToNeutrino (amount,price) = fraction(amount, price, MULT8)
3737
3838
3939 func asAnyList (val) = match val {
4040 case valAnyList: List[Any] =>
4141 valAnyList
4242 case _ =>
4343 throw("fail to cast into List[Any]")
4444 }
4545
4646
4747 func asInt (val) = match val {
4848 case valInt: Int =>
4949 valInt
5050 case _ =>
5151 throw("fail to cast into Int")
5252 }
5353
5454
5555 func asString (val) = match val {
5656 case valStr: String =>
5757 valStr
5858 case _ =>
5959 throw("fail to cast into String")
6060 }
6161
6262
6363 func asTuple2Ints (val) = match val {
6464 case v: (Int, Int) =>
6565 v
6666 case _ =>
6767 throw("fail to cast into Tuple2 ints")
6868 }
6969
7070
7171 func asSwapParamsSTRUCT (val) = match val {
7272 case struct: (Int, Int, Int, Int, Int, Int, Int) =>
7373 struct
7474 case _ =>
7575 throw("fail to cast into SwapParamsSTRUCT")
7676 }
7777
7878
7979 func toTimestamp (start) = if ((0 > start))
8080 then -1
8181 else match blockInfoByHeight(start) {
8282 case block: BlockInfo =>
8383 block.timestamp
8484 case _ =>
8585 -1
8686 }
8787
8888
8989 func toX18 (origVal,origScaleMult) = fraction(toBigInt(origVal), MULT18, toBigInt(origScaleMult))
9090
9191
9292 func fromX18 (val,resultScaleMult) = toInt(fraction(val, toBigInt(resultScaleMult), MULT18))
9393
9494
9595 let IdxControlCfgNeutrinoDapp = 1
9696
9797 let IdxControlCfgAuctionDapp = 2
9898
9999 let IdxControlCfgRpdDapp = 3
100100
101101 let IdxControlCfgMathDapp = 4
102102
103103 let IdxControlCfgLiquidationDapp = 5
104104
105105 let IdxControlCfgRestDapp = 6
106106
107107 let IdxControlCfgNodeRegistryDapp = 7
108108
109109 let IdxControlCfgNsbtStakingDapp = 8
110110
111111 let IdxControlCfgMediatorDapp = 9
112112
113113 let IdxControlCfgSurfStakingDapp = 10
114114
115115 let IdxControlCfgGnsbtControllerDapp = 11
116116
117117 func keyControlAddress () = "%s%s__config__controlAddress"
118118
119119
120120 func keyControlCfg () = "%s__controlConfig"
121121
122122
123-func readControlCfgOrFail (control) = split(getStringOrFail(control, keyControlCfg()), SEP)
123+func readControlCfgOrFail (control) = split_4C(getStringOrFail(control, keyControlCfg()), SEP)
124124
125125
126126 func getContractAddressOrFail (controlCfg,idx) = valueOrErrorMessage(addressFromString(controlCfg[idx]), ("Control cfg doesn't contain address at index " + toString(idx)))
127127
128128
129129 let controlContract = addressFromStringValue(valueOrElse(getString(this, keyControlAddress()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
130130
131131 let controlCfg = readControlCfgOrFail(controlContract)
132132
133133 let mathContract = getContractAddressOrFail(controlCfg, IdxControlCfgMathDapp)
134134
135135 let neutrinoContract = getContractAddressOrFail(controlCfg, IdxControlCfgNeutrinoDapp)
136136
137137 let auctionContract = getContractAddressOrFail(controlCfg, IdxControlCfgAuctionDapp)
138138
139139 let liquidationContract = getContractAddressOrFail(controlCfg, IdxControlCfgLiquidationDapp)
140140
141141 let rpdContract = getContractAddressOrFail(controlCfg, IdxControlCfgRpdDapp)
142142
143143 let nsbtStakingContract = getContractAddressOrFail(controlCfg, IdxControlCfgNsbtStakingDapp)
144144
145145 let surfStakingContract = getContractAddressOrFail(controlCfg, IdxControlCfgSurfStakingDapp)
146146
147+let IdxSurfUser = 0
148+
149+let IdxSurfTotal = 1
150+
151+let IdxSurfGnsbtUser = 2
152+
153+let IdxSurfGnsbtTotal = 3
154+
155+let IdxSurfVpCurr = 4
156+
157+let IdxSurfVpNew = 5
158+
159+let IdxSurfTotalMature = 6
160+
161+let IdxSurfTotalTeen = 7
162+
163+let IdxSurfTotalKid = 8
164+
165+let IdxSurfUserMature = 9
166+
167+let IdxSurfUserTeen = 10
168+
169+let IdxSurfUserKid = 11
170+
147171 @Callable(i)
148172 func gnsbtInfoSYSREADONLY (userAddressStrOrEmpty,nsbtDiff,surfDiff) = {
149173 let nsbtData = asAnyList(invoke(nsbtStakingContract, "nsbtStakingSYSREADONLY", [userAddressStrOrEmpty, nsbtDiff], nil))
150174 let nsbtUser = asInt(nsbtData[0])
151175 let nsbtTotal = asInt(nsbtData[1])
152176 let gNsbtFromNsbtUser = nsbtUser
153177 let gNsbtFromNsbtTotal = nsbtTotal
154178 let surfData = asAnyList(invoke(surfStakingContract, "surfStakingSYSREADONLY", [userAddressStrOrEmpty, surfDiff], nil))
155- let surfUser = asInt(surfData[0])
156- let surfTotal = asInt(surfData[1])
157- let gNsbtFromSurfUser = asInt(surfData[2])
158- let gNsbtFromSurfTotal = asInt(surfData[3])
159- let vpEffectiveHeight = asInt(surfData[4])
160- let vpEffectiveHeightNEW = asInt(surfData[5])
179+ let surfUser = asInt(surfData[IdxSurfUser])
180+ let surfTotal = asInt(surfData[IdxSurfTotal])
181+ let gNsbtFromSurfUser = asInt(surfData[IdxSurfGnsbtUser])
182+ let gNsbtFromSurfTotal = asInt(surfData[IdxSurfGnsbtTotal])
161183 let gNsbtUser = (gNsbtFromNsbtUser + gNsbtFromSurfUser)
162184 let gNsbtTotal = (gNsbtFromNsbtTotal + gNsbtFromSurfTotal)
163- $Tuple2(nil, [gNsbtUser, gNsbtTotal, [nsbtUser, nsbtTotal, gNsbtFromNsbtUser, gNsbtFromNsbtTotal], [surfUser, surfTotal, gNsbtFromSurfUser, gNsbtFromSurfTotal], vpEffectiveHeight, vpEffectiveHeightNEW])
185+ $Tuple2(nil, [gNsbtUser, gNsbtTotal, [nsbtUser, nsbtTotal, gNsbtFromNsbtUser, gNsbtFromNsbtTotal], [surfUser, surfTotal, gNsbtFromSurfUser, gNsbtFromSurfTotal], asInt(surfData[IdxSurfVpCurr]), asInt(surfData[IdxSurfVpNew]), asInt(surfData[IdxSurfTotalMature]), asInt(surfData[IdxSurfTotalTeen]), asInt(surfData[IdxSurfTotalKid]), asInt(surfData[IdxSurfUserMature]), asInt(surfData[IdxSurfUserTeen]), asInt(surfData[IdxSurfUserKid])])
164186 }
165187
166188
167189
168190 @Callable(i)
169191 func claimRewards () = {
170192 let nsbtInv = asInt(invoke(nsbtStakingContract, "claimRewardsByOriginCaller", nil, nil))
171193 let surfInv = asInt(invoke(surfStakingContract, "claimRewardsByOriginCaller", nil, nil))
172194 if (((nsbtInv + surfInv) == 0))
173195 then throw("Nothing to claim")
174196 else nil
175197 }
176198
177199
178200
179201 @Callable(i)
180202 func gnsbtRewardsSYSREADONLY (userAddressStrOrEmpty) = {
181203 let nsbtRewardStr = asString(invoke(nsbtStakingContract, "unclaimedRewardsREADONLY", [userAddressStrOrEmpty], nil))
182204 let surfRewardStr = asString(invoke(surfStakingContract, "unclaimedRewardsREADONLY", [userAddressStrOrEmpty], nil))
183205 $Tuple2(nil, [nsbtRewardStr, surfRewardStr])
184206 }
185207
186208

github/deemru/w8io/3ef1775 
34.22 ms