tx · E4VayfDjmGsdmh6TbAY8KLpAmxpCtjaUyjpx7cCVbacL

3N8toFtTMZdsGLTcMKuKPDceJQ9WfpuELg8:  -0.02000000 Waves

2020.09.16 14:40 [1179781] smart account 3N8toFtTMZdsGLTcMKuKPDceJQ9WfpuELg8 > SELF 0.00000000 Waves

{ "type": 13, "id": "E4VayfDjmGsdmh6TbAY8KLpAmxpCtjaUyjpx7cCVbacL", "fee": 2000000, "feeAssetId": null, "timestamp": 1600256442539, "version": 1, "sender": "3N8toFtTMZdsGLTcMKuKPDceJQ9WfpuELg8", "senderPublicKey": "DFTWWuPjacHSCVR4EyaRA7ZoEUERdH5qBzRzK6UsPo6Y", "proofs": [ "VWYyvu23dn2egm4stCjcpApsRe42SzdfZUfWN9PHF4VCEt3UwRZJweGDtpGuSBGNSrffRorPVj2GCqB1bvHfZc6" ], "script": "base64:AAIEAAAAAAAAABwIAhIECgIIARIAEgQKAgEIEgQKAggBEgQKAggBAAAAHwEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQIAAAAAAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABNOZXV0cmlub0NvbnRyYWN0S2V5AgAAABFuZXV0cmlub19jb250cmFjdAAAAAAKQmFsYW5jZUtleQIAAAALcnBkX2JhbGFuY2UAAAAAEkNvbnRyb2xDb250cmFjdEtleQIAAAAQY29udHJvbF9jb250cmFjdAAAAAAJQWRtaW5zS2V5AgAAAAZhZG1pbnMBAAAAEWdldFVzZXJCYWxhbmNlS2V5AAAAAgAAAAVvd25lcgAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACkJhbGFuY2VLZXkCAAAAAV8FAAAAB2Fzc2V0SWQCAAAAAV8FAAAABW93bmVyAQAAABVnZXRDb250cmFjdEJhbGFuY2VLZXkAAAABAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACBQAAAApCYWxhbmNlS2V5AgAAAAFfBQAAAAdhc3NldElkAQAAABRnZXRFeHBpcmVQcm9wb3NhbEtleQAAAAEAAAAEaGFzaAkAASwAAAACCQABLAAAAAICAAAAD3Byb3Bvc2FsX2V4cGlyZQIAAAABXwUAAAAEaGFzaAEAAAATZ2V0T3duZXJQcm9wb3NhbEtleQAAAAEAAAAEaGFzaAkAASwAAAACCQABLAAAAAICAAAADnByb3Bvc2FsX293bmVyAgAAAAFfBQAAAARoYXNoAQAAABdnZXRBcmd1bWVudHNQcm9wb3NhbEtleQAAAAEAAAAEaGFzaAkAASwAAAACCQABLAAAAAICAAAAEnByb3Bvc2FsX2FyZ3VtZW50cwIAAAABXwUAAAAEaGFzaAEAAAAKZ2V0Vm90ZUtleQAAAAIAAAAFb3duZXIAAAAEaGFzaAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1wcm9wb3NhbF92b3RlAgAAAAFfBQAAAAVvd25lcgIAAAABXwUAAAAEaGFzaAEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEAAAAJanNvbkFycmF5CQAEtQAAAAIFAAAACWpzb25BcnJheQIAAAABLAAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAATTmV1dHJpbm9Db250cmFjdEtleQAAAAAPY29udHJvbENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAASQ29udHJvbENvbnRyYWN0S2V5AAAAAA9uZXV0cmlub0Fzc2V0SWQJAAJZAAAAAQkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAEk5ldXRyaW5vQXNzZXRJZEtleQEAAAASZ2V0Q29udHJhY3RCYWxhbmNlAAAAAQAAAAdhc3NldElkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AAAAAQUAAAAHYXNzZXRJZAEAAAAOZ2V0VXNlckJhbGFuY2UAAAACAAAABW93bmVyAAAAB2Fzc2V0SWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABFnZXRVc2VyQmFsYW5jZUtleQAAAAIFAAAABW93bmVyBQAAAAdhc3NldElkAQAAABFnZXRFeHBpcmVQcm9wb3NhbAAAAAEAAAAEaGFzaAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFGdldEV4cGlyZVByb3Bvc2FsS2V5AAAAAQUAAAAEaGFzaAEAAAAQZ2V0T3duZXJQcm9wb3NhbAAAAAEAAAAEaGFzaAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAE2dldE93bmVyUHJvcG9zYWxLZXkAAAABBQAAAARoYXNoAQAAABRnZXRBcmd1bWVudHNQcm9wb3NhbAAAAAEAAAAEaGFzaAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAF2dldEFyZ3VtZW50c1Byb3Bvc2FsS2V5AAAAAQUAAAAEaGFzaAEAAAAHZ2V0Vm90ZQAAAAIAAAAFb3duZXIAAAAEaGFzaAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAACmdldFZvdGVLZXkAAAACBQAAAAVvd25lcgUAAAAEaGFzaAEAAAATZ2V0UmV3YXJkc0NvbmZpZ0tleQAAAAMAAAAFb3duZXIAAAAFc2hhcmUAAAAIcmVjZWl2ZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA5zdGFraW5nY29uZmlnXwUAAAAFb3duZXICAAAAAV8JAAGkAAAAAQUAAAAFc2hhcmUCAAAAAV8FAAAACHJlY2VpdmVyAQAAABpnZXRDdXJyZW50UmV3YXJkc0NvbmZpZ0tleQAAAAEAAAAFb3duZXIJAAEsAAAAAgIAAAAWc3Rha2luZ2NvbmZpZ19jdXJyZW50XwUAAAAFb3duZXIBAAAAGGdldFJld2FyZHNDb25maWdTdGFydEtleQAAAAIAAAAJY29uZmlnS2V5AAAAB2lzU3RhcnQJAAEsAAAAAgUAAAAJY29uZmlnS2V5AwUAAAAHaXNTdGFydAIAAAAGX3N0YXJ0AgAAAARfZW5kAQAAABtnZXRSZXdhcmRDb25maWdJbml0aWFsU2hhcmUAAAABAAAABW93bmVyCQABLAAAAAIFAAAABW93bmVyAgAAAA1faW5pdGlhbFNoYXJlAQAAABRpbnRlcm5hbGxvY2tOZXV0cmlubwAAAAMAAAABaQAAAAhyZWNlaXZlcgAAAAVzaGFyZQQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkABCYAAAABBQAAAAhyZWNlaXZlcgkAAAIAAAABCQABLAAAAAICAAAAF0ludmFsaWQgYWRkcmVzcyBmb3JtYXQgBQAAAAhyZWNlaXZlcgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkCQAAAgAAAAECAAAAEGNhbiB1c2UgdXNkIG9ubHkDCQAAZgAAAAIFAAAABXNoYXJlAAAAAAAAAABkCQAAAgAAAAECAAAAMHN0YWtpbmcgcmV3YXJkcyBzaGFyZSBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gMTAwJQMJAABmAAAAAgAAAAAAAAAAAQUAAAAFc2hhcmUJAAACAAAAAQIAAAAtc3Rha2luZyByZXdhcmRzIHNoYXJlIGNhbm5vdCBiZSBsb3dlciB0aGFuIDElBAAAAAdhY2NvdW50CQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANYXNzZXRJZFN0cmluZwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAADWN1cnJlbnRDb25maWcJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABpnZXRDdXJyZW50UmV3YXJkc0NvbmZpZ0tleQAAAAEFAAAAB2FjY291bnQEAAAAC2NvcnJlY3REYXRhAwkBAAAAAiE9AAAAAgUAAAANY3VycmVudENvbmZpZwIAAAAABAAAABFjdXJyZW50Q29uZmlnRGF0YQkABLUAAAACBQAAAA1jdXJyZW50Q29uZmlnAgAAAAFfBAAAAAljdXJyU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABFjdXJyZW50Q29uZmlnRGF0YQAAAAAAAAAAAgQAAAAMY3VyclJlY2VpdmVyCQABkQAAAAIFAAAAEWN1cnJlbnRDb25maWdEYXRhAAAAAAAAAAADBAAAABdub3RNaWdyYXRlZEluaXRpYWxTaGFyZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAG2dldFJld2FyZENvbmZpZ0luaXRpYWxTaGFyZQAAAAEFAAAAB2FjY291bnQEAAAAEmFjdHVhbEluaXRpYWxTaGFyZQMJAAAAAAAAAgUAAAAXbm90TWlncmF0ZWRJbml0aWFsU2hhcmUAAAAAAAAAAAAFAAAACWN1cnJTaGFyZQUAAAAXbm90TWlncmF0ZWRJbml0aWFsU2hhcmUEAAAACG5ld1NoYXJlAwMJAABmAAAAAgUAAAASYWN0dWFsSW5pdGlhbFNoYXJlBQAAAAVzaGFyZQYJAQAAAAIhPQAAAAIFAAAADGN1cnJSZWNlaXZlcgUAAAAIcmVjZWl2ZXIFAAAAEmFjdHVhbEluaXRpYWxTaGFyZQUAAAAFc2hhcmUJAARMAAAAAgkAAaQAAAABBQAAABJhY3R1YWxJbml0aWFsU2hhcmUJAARMAAAAAgkAAaQAAAABBQAAAAhuZXdTaGFyZQkABEwAAAACBQAAAAxjdXJyUmVjZWl2ZXIFAAAAA25pbAkABEwAAAACCQABpAAAAAEFAAAABXNoYXJlCQAETAAAAAIJAAGkAAAAAQUAAAAFc2hhcmUJAARMAAAAAgUAAAAIcmVjZWl2ZXIFAAAAA25pbAQAAAATY29ycmVjdEluaXRpYWxTaGFyZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAC2NvcnJlY3REYXRhAAAAAAAAAAAABAAAAAxjb3JyZWN0U2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAtjb3JyZWN0RGF0YQAAAAAAAAAAAQQAAAAPY29ycmVjdFJlY2VpdmVyCQABkQAAAAIFAAAAC2NvcnJlY3REYXRhAAAAAAAAAAACBAAAABBuZXdDdXJyZW50Q29uZmlnCQEAAAATZ2V0UmV3YXJkc0NvbmZpZ0tleQAAAAMFAAAAB2FjY291bnQFAAAADGNvcnJlY3RTaGFyZQUAAAAPY29ycmVjdFJlY2VpdmVyBAAAAAtpc05ld0NvbmZpZwkBAAAAASEAAAABCQAAAAAAAAIFAAAADWN1cnJlbnRDb25maWcFAAAAEG5ld0N1cnJlbnRDb25maWcEAAAAA2VuZAMFAAAAC2lzTmV3Q29uZmlnBQAAAAZoZWlnaHQAAAAAAAAAAAAEAAAABXN0YXJ0AwUAAAALaXNOZXdDb25maWcFAAAABmhlaWdodAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldFJld2FyZHNDb25maWdTdGFydEtleQAAAAIFAAAAEG5ld0N1cnJlbnRDb25maWcGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AAAAAQUAAAANYXNzZXRJZFN0cmluZwkAAGQAAAACCQEAAAASZ2V0Q29udHJhY3RCYWxhbmNlAAAAAQUAAAANYXNzZXRJZFN0cmluZwgFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRVc2VyQmFsYW5jZUtleQAAAAIFAAAAB2FjY291bnQFAAAADWFzc2V0SWRTdHJpbmcJAABkAAAAAgkBAAAADmdldFVzZXJCYWxhbmNlAAAAAgUAAAAHYWNjb3VudAUAAAANYXNzZXRJZFN0cmluZwgFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhnZXRSZXdhcmRzQ29uZmlnU3RhcnRLZXkAAAACBQAAAA1jdXJyZW50Q29uZmlnBwUAAAADZW5kCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAYZ2V0UmV3YXJkc0NvbmZpZ1N0YXJ0S2V5AAAAAgUAAAAQbmV3Q3VycmVudENvbmZpZwYFAAAABXN0YXJ0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAbZ2V0UmV3YXJkQ29uZmlnSW5pdGlhbFNoYXJlAAAAAQUAAAAHYWNjb3VudAUAAAATY29ycmVjdEluaXRpYWxTaGFyZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaZ2V0Q3VycmVudFJld2FyZHNDb25maWdLZXkAAAABBQAAAAdhY2NvdW50BQAAABBuZXdDdXJyZW50Q29uZmlnBQAAAANuaWwAAAAFAAAAAWkBAAAADmxvY2tOZXV0cmlub1NQAAAAAgAAAAhyZWNlaXZlcgAAAAVzaGFyZQkBAAAAFGludGVybmFsbG9ja05ldXRyaW5vAAAAAwUAAAABaQUAAAAIcmVjZWl2ZXIFAAAABXNoYXJlAAAAAWkBAAAADGxvY2tOZXV0cmlubwAAAAAJAQAAABRpbnRlcm5hbGxvY2tOZXV0cmlubwAAAAMFAAAAAWkJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAABkAAAAAWkBAAAADnVubG9ja05ldXRyaW5vAAAAAgAAAAx1bmxvY2tBbW91bnQAAAANYXNzZXRJZFN0cmluZwQAAAAHYWNjb3VudAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAANYXNzZXRJZFN0cmluZwQAAAAHYmFsYW5jZQkAAGUAAAACCQEAAAAOZ2V0VXNlckJhbGFuY2UAAAACBQAAAAdhY2NvdW50BQAAAA1hc3NldElkU3RyaW5nBQAAAAx1bmxvY2tBbW91bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAAB2JhbGFuY2UJAAACAAAAAQIAAAAOaW52YWxpZCBhbW91bnQDCQEAAAACIT0AAAACBQAAAAdhc3NldElkBQAAAA9uZXV0cmlub0Fzc2V0SWQJAAACAAAAAQIAAAAQY2FuIHVzZSBuZXV0cmlubwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFWdldENvbnRyYWN0QmFsYW5jZUtleQAAAAEFAAAADWFzc2V0SWRTdHJpbmcJAABlAAAAAgkBAAAAEmdldENvbnRyYWN0QmFsYW5jZQAAAAEFAAAADWFzc2V0SWRTdHJpbmcFAAAADHVubG9ja0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldFVzZXJCYWxhbmNlS2V5AAAAAgUAAAAHYWNjb3VudAUAAAANYXNzZXRJZFN0cmluZwUAAAAHYmFsYW5jZQkABEwAAAACCQEAAAAO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", "chainId": 84, "height": 1179781, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func getNumberByKey (key) = valueOrElse(getInteger(this, key), 0)
5+
6+
7+func getStringByKey (key) = valueOrElse(getString(this, key), "")
8+
9+
10+func getBoolByKey (key) = valueOrElse(getBoolean(this, key), false)
11+
12+
13+func getNumberByAddressAndKey (address,key) = valueOrElse(getInteger(addressFromStringValue(address), key), 0)
14+
15+
16+func getStringByAddressAndKey (address,key) = valueOrElse(getString(address, key), "")
17+
18+
19+let NeutrinoAssetIdKey = "neutrino_asset_id"
20+
21+let NeutrinoContractKey = "neutrino_contract"
22+
23+let BalanceKey = "rpd_balance"
24+
25+let ControlContractKey = "control_contract"
26+
27+let AdminsKey = "admins"
28+
29+func getUserBalanceKey (owner,assetId) = ((((BalanceKey + "_") + assetId) + "_") + owner)
30+
31+
32+func getContractBalanceKey (assetId) = ((BalanceKey + "_") + assetId)
33+
34+
35+func getExpireProposalKey (hash) = (("proposal_expire" + "_") + hash)
36+
37+
38+func getOwnerProposalKey (hash) = (("proposal_owner" + "_") + hash)
39+
40+
41+func getArgumentsProposalKey (hash) = (("proposal_arguments" + "_") + hash)
42+
43+
44+func getVoteKey (owner,hash) = (((("proposal_vote" + "_") + owner) + "_") + hash)
45+
46+
47+func convertJsonArrayToList (jsonArray) = split(jsonArray, ",")
48+
49+
50+let neutrinoContract = addressFromStringValue(getStringByKey(NeutrinoContractKey))
51+
52+let controlContract = addressFromStringValue(getStringByAddressAndKey(neutrinoContract, ControlContractKey))
53+
54+let neutrinoAssetId = fromBase58String(getStringByAddressAndKey(neutrinoContract, NeutrinoAssetIdKey))
55+
56+func getContractBalance (assetId) = getNumberByKey(getContractBalanceKey(assetId))
57+
58+
59+func getUserBalance (owner,assetId) = getNumberByKey(getUserBalanceKey(owner, assetId))
60+
61+
62+func getExpireProposal (hash) = getNumberByKey(getExpireProposalKey(hash))
63+
64+
65+func getOwnerProposal (hash) = getStringByKey(getOwnerProposalKey(hash))
66+
67+
68+func getArgumentsProposal (hash) = getStringByKey(getArgumentsProposalKey(hash))
69+
70+
71+func getVote (owner,hash) = getStringByKey(getVoteKey(owner, hash))
72+
73+
74+func getRewardsConfigKey (owner,share,receiver) = ((((("stakingconfig_" + owner) + "_") + toString(share)) + "_") + receiver)
75+
76+
77+func getCurrentRewardsConfigKey (owner) = ("stakingconfig_current_" + owner)
78+
79+
80+func getRewardsConfigStartKey (configKey,isStart) = (configKey + (if (isStart)
81+ then "_start"
82+ else "_end"))
83+
84+
85+func getRewardConfigInitialShare (owner) = (owner + "_initialShare")
86+
87+
88+func internallockNeutrino (i,receiver,share) = {
89+ let pmt = value(i.payments[0])
90+ if (!(isDefined(addressFromString(receiver))))
91+ then throw(("Invalid address format " + receiver))
92+ else if ((pmt.assetId != neutrinoAssetId))
93+ then throw("can use usd only")
94+ else if ((share > 100))
95+ then throw("staking rewards share cannot be higher than 100%")
96+ else if ((1 > share))
97+ then throw("staking rewards share cannot be lower than 1%")
98+ else {
99+ let account = toString(i.caller)
100+ let assetIdString = toBase58String(value(pmt.assetId))
101+ let currentConfig = getStringByKey(getCurrentRewardsConfigKey(account))
102+ let correctData = if ((currentConfig != ""))
103+ then {
104+ let currentConfigData = split(currentConfig, "_")
105+ let currShare = parseIntValue(currentConfigData[2])
106+ let currReceiver = currentConfigData[3]
107+ let notMigratedInitialShare = getNumberByKey(getRewardConfigInitialShare(account))
108+ let actualInitialShare = if ((notMigratedInitialShare == 0))
109+ then currShare
110+ else notMigratedInitialShare
111+ let newShare = if (if ((actualInitialShare > share))
112+ then true
113+ else (currReceiver != receiver))
114+ then actualInitialShare
115+ else share
116+[toString(actualInitialShare), toString(newShare), currReceiver]
117+ }
118+ else [toString(share), toString(share), receiver]
119+ let correctInitialShare = parseIntValue(correctData[0])
120+ let correctShare = parseIntValue(correctData[1])
121+ let correctReceiver = correctData[2]
122+ let newCurrentConfig = getRewardsConfigKey(account, correctShare, correctReceiver)
123+ let isNewConfig = !((currentConfig == newCurrentConfig))
124+ let end = if (isNewConfig)
125+ then height
126+ else 0
127+ let start = if (isNewConfig)
128+ then height
129+ else getNumberByKey(getRewardsConfigStartKey(newCurrentConfig, true))
130+[IntegerEntry(getContractBalanceKey(assetIdString), (getContractBalance(assetIdString) + pmt.amount)), IntegerEntry(getUserBalanceKey(account, assetIdString), (getUserBalance(account, assetIdString) + pmt.amount)), IntegerEntry(getRewardsConfigStartKey(currentConfig, false), end), IntegerEntry(getRewardsConfigStartKey(newCurrentConfig, true), start), IntegerEntry(getRewardConfigInitialShare(account), correctInitialShare), StringEntry(getCurrentRewardsConfigKey(account), newCurrentConfig)]
131+ }
132+ }
133+
134+
135+@Callable(i)
136+func lockNeutrinoSP (receiver,share) = internallockNeutrino(i, receiver, share)
137+
138+
139+
140+@Callable(i)
141+func lockNeutrino () = internallockNeutrino(i, toString(i.caller), 100)
142+
143+
144+
145+@Callable(i)
146+func unlockNeutrino (unlockAmount,assetIdString) = {
147+ let account = toString(i.caller)
148+ let assetId = fromBase58String(assetIdString)
149+ let balance = (getUserBalance(account, assetIdString) - unlockAmount)
150+ if ((0 > balance))
151+ then throw("invalid amount")
152+ else if ((assetId != neutrinoAssetId))
153+ then throw("can use neutrino")
154+ else [IntegerEntry(getContractBalanceKey(assetIdString), (getContractBalance(assetIdString) - unlockAmount)), IntegerEntry(getUserBalanceKey(account, assetIdString), balance), ScriptTransfer(addressFromStringValue(account), unlockAmount, neutrinoAssetId)]
155+ }
156+
157+
158+
159+@Callable(i)
160+func vote (hash,indexArgument) = {
161+ let arguments = split(getArgumentsProposal(hash), ",")
162+ let argument = arguments[indexArgument]
163+ if ((height > getExpireProposal(hash)))
164+ then throw("proposal is expired")
165+ else [StringEntry(getVoteKey(toString(i.caller), hash), argument)]
166+ }
167+
168+
169+
170+@Callable(i)
171+func createProposal (arguments,expairHeight) = {
172+ let hash = toBase58String(keccak256(((toBytes(arguments) + toBytes(expairHeight)) + i.callerPublicKey)))
173+ if ((getOwnerProposal(hash) != ""))
174+ then throw("proposal is exist")
175+ else [IntegerEntry(getExpireProposalKey(hash), expairHeight), StringEntry(getOwnerProposalKey(hash), toString(i.caller)), StringEntry(getArgumentsProposalKey(hash), arguments)]
176+ }
177+
178+
179+@Verifier(tx)
180+func verify () = {
181+ let pubKeyAdminsList = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
182+ let count = ((((if (sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(pubKeyAdminsList[0])))
183+ then 1
184+ else 0) + (if (sigVerify(tx.bodyBytes, tx.proofs[1], fromBase58String(pubKeyAdminsList[1])))
185+ then 1
186+ else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[2], fromBase58String(pubKeyAdminsList[2])))
187+ then 1
188+ else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[3], fromBase58String(pubKeyAdminsList[3])))
189+ then 2
190+ else 0))
191+ (count >= 3)
192+ }
193+

github/deemru/w8io/169f3d6 
22.29 ms