tx · 4SjcLom5ejSTWQXTpxcA78r9BQ1xKMjf9HmNYAn4Y76A

3NBqs2vfpyT5cMdUJ97mEJ1Ycp2y8GbAZDA:  -0.01400000 Waves

2022.03.11 17:13 [1959391] smart account 3NBqs2vfpyT5cMdUJ97mEJ1Ycp2y8GbAZDA > SELF 0.00000000 Waves

{ "type": 13, "id": "4SjcLom5ejSTWQXTpxcA78r9BQ1xKMjf9HmNYAn4Y76A", "fee": 1400000, "feeAssetId": null, "timestamp": 1647008071256, "version": 1, "sender": "3NBqs2vfpyT5cMdUJ97mEJ1Ycp2y8GbAZDA", "senderPublicKey": "H19CeJVbUnfsK8EYs8K6fHxwBH7pLyxw8WCDFu7D4rGQ", "proofs": [ "4TVQ3MgSaMve6DLo9ZV3Px5SNPW3MJAmeWck9haf3dTtqf2JwEHS2xFLCN94GPGVWmZEr3iwhWDP2G5aTp3St2bd" ], "script": "base64:AAIFAAAAAAAAABsIAhIJCgcIAQEBAQEIEgMKAQESABIDCgEIEgAAAAAkAAAAAANTRVACAAAAAl9fAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgIAAAAPbWFuZGF0b3J5IHRoaXMuBQAAAANrZXkCAAAADyBpcyBub3QgZGVmaW5lZAEAAAARa2V5RmFjdG9yeUFkZHJlc3MAAAAAAgAAABwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAAAABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAAAAAAAAAAEAAAAAGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAAAAAAAAAAAAIAAAAAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAAAAAAAAAADAAAAABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAAAAAAAAAAAAQAAAAAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAAAAAAAAAAAAUAAAAAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAAAAAAAAAABgAAAAAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAAAAAAAAAABwAAAAAaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAAAAAAAAAAAAoBAAAADWtleUZhY3RvcnlDZmcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAAaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcAAAABAAAACmxwQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgUAAAAKbHBBc3NldFN0cgkABEwAAAACAgAAAB5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAABBrZXlGYWN0b3J5THBMaXN0AAAAAAIAAAAQJXNfX2xwVG9rZW5zTGlzdAEAAAAma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABAAAACmxwQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgUAAAAKbHBBc3NldFN0cgkABEwAAAACAgAAAB5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAABRrZXlGYWN0b3J5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAApwb29sV2VpZ2h0CQAETAAAAAIFAAAAD2NvbnRyYWN0QWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAAGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAARa2V5RmFjdG9yeUFkZHJlc3MAAAAAAQAAAApyZWFkTHBMaXN0AAAAAAkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIJAQAAABhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAAAACQEAAAAQa2V5RmFjdG9yeUxwTGlzdAAAAAACAAAAAAUAAAADU0VQAQAAABRyZWFkRmFjdG9yeUNmZ09yRmFpbAAAAAEAAAAHZmFjdG9yeQkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAHZmFjdG9yeQkBAAAADWtleUZhY3RvcnlDZmcAAAAABQAAAANTRVABAAAAGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAQAAABhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEAAAAXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAQAAABlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAQAAAAlrZXlDb25maWcAAAAAAgAAAAolc19fY29uZmlnAQAAABlrZXlSYXRlUGVyQmxvY2tNYXhDdXJyZW50AAAAAAIAAAAeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQAAABtrZXlSYXRlUGVyQmxvY2tNYXhTdGFydEZyb20AAAACAAAACXRpbWVzdGFtcAAAAAVibG9jawkABLkAAAACCQAETAAAAAICAAAAICVzJXMlZCVkX19yYXRlUGVyQmxvY2tNYXhfX3N0YXJ0CQAETAAAAAIJAAGkAAAAAQUAAAAJdGltZXN0YW1wCQAETAAAAAIJAAGkAAAAAQUAAAAFYmxvY2sFAAAAA25pbAUAAAADU0VQAQAAABZrZXlSYXRlUGVyQmxvY2tDdXJyZW50AAAAAAIAAAAbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQAAABhrZXlSYXRlUGVyQmxvY2tTdGFydEZyb20AAAACAAAACXRpbWVzdGFtcAAAAAVibG9jawkABLkAAAACCQAETAAAAAICAAAAHSVzJXMlZCVkX19yYXRlUGVyQmxvY2tfX3N0YXJ0CQAETAAAAAIJAAGkAAAAAQUAAAAJdGltZXN0YW1wCQAETAAAAAIJAAGkAAAAAQUAAAAFYmxvY2sFAAAAA25pbAUAAAADU0VQAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAAAgAAABolcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawEAAAAba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAAAAAIAAAAYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uAQAAABNrZXlFbWlzc2lvbkVuZEJsb2NrAAAAAAIAAAAYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAC211c3RNYW5hZ2VyAAAAAQAAAAFpBAAAAAJwZAkAAAIAAAABAgAAABFQZXJtaXNzaW9uIGRlbmllZAQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAAJwawYFAAAAAnBkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMGBQAAAAJwZAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAUAAAABaQEAAAALY29uc3RydWN0b3IAAAAHAAAADmZhY3RvcnlBZGRyZXNzAAAAD3JhdGVQZXJCbG9ja01heAAAAAxyYXRlUGVyQmxvY2sAAAASZW1pc3Npb25TdGFydEJsb2NrAAAAEGVtaXNzaW9uRHVyYXRpb24AAAAWZW1pc3Npb25TdGFydFRpbWVzdGFtcAAAAAx3eEFzc2V0SWRTdHIEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABtrZXlSYXRlUGVyQmxvY2tNYXhTdGFydEZyb20AAAACBQAAABZlbWlzc2lvblN0YXJ0VGltZXN0YW1wBQAAABJlbWlzc2lvblN0YXJ0QmxvY2sFAAAAD3JhdGVQZXJCbG9ja01heAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGWtleVJhdGVQZXJCbG9ja01heEN1cnJlbnQAAAAABQAAAA9yYXRlUGVyQmxvY2tNYXgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhrZXlSYXRlUGVyQmxvY2tTdGFydEZyb20AAAACBQAAABZlbWlzc2lvblN0YXJ0VGltZXN0YW1wBQAAABJlbWlzc2lvblN0YXJ0QmxvY2sFAAAADHJhdGVQZXJCbG9jawkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQAAAAABQAAAAxyYXRlUGVyQmxvY2sJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAABQAAABJlbWlzc2lvblN0YXJ0QmxvY2sJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MAAAAABQAAABBlbWlzc2lvbkR1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAATa2V5RW1pc3Npb25FbmRCbG9jawAAAAAJAABkAAAAAgUAAAASZW1pc3Npb25TdGFydEJsb2NrBQAAABBlbWlzc2lvbkR1cmF0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAAFAAAADmZhY3RvcnlBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAlrZXlDb25maWcAAAAACQABLAAAAAICAAAABCVzX18FAAAADHd4QXNzZXRJZFN0cgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAARlbWl0AAAAAQAAAAZhbW91bnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkABRQAAAACBQAAAANuaWwFAAAAA25pbAQAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAAAAAQAAAAKZmFjdG9yeUNmZwkBAAAAFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAAAAAQUAAAAPZmFjdG9yeUNvbnRyYWN0BAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcEAAAAEmd3eFJld2FyZHNDb250cmFjdAkBAAAAGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwAAAABBQAAAApmYWN0b3J5Q2ZnBAAAAAZjYWxsZXIIBQAAAAFpAAAABmNhbGxlcgMDCQEAAAACIT0AAAACBQAAAAZjYWxsZXIFAAAAD3N0YWtpbmdDb250cmFjdAkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAABJnd3hSZXdhcmRzQ29udHJhY3QHCQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAQAAAAMd3hBc3NldElkU3RyCQABkQAAAAIJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAAlrZXlDb25maWcAAAAABQAAAANTRVAAAAAAAAAAAAEEAAAACXd4QXNzZXRJZAkAAlkAAAABBQAAAAx3eEFzc2V0SWRTdHIJAAUUAAAAAgkABEwA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", "chainId": 84, "height": 1959391, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2X9kpZjZoMNMzjCLbvvH4jVSqr4Tps5Ra9SZ91rJnBv1 Next: GjY1aZ5yXx65dW2UX9mSs8s9ucQa8RiJxx6yMSV9h5tC Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), (("mandatory this." + key) + " is not defined"))
77
88
99 func keyFactoryAddress () = "%s%s__config__factoryAddress"
1010
1111
1212 let IdxFactoryCfgStakingDapp = 1
1313
1414 let IdxFactoryCfgBoostingDapp = 2
1515
1616 let IdxFactoryCfgIdoDapp = 3
1717
1818 let IdxFactoryCfgTeamDapp = 4
1919
2020 let IdxFactoryCfgEmissionDapp = 5
2121
2222 let IdxFactoryCfgRestDapp = 6
2323
2424 let IdxFactoryCfgSlippageDapp = 7
2525
2626 let IdxFactoryCfgGwxRewardDapp = 10
2727
2828 func keyFactoryCfg () = "%s__factoryConfig"
2929
3030
3131 func keyFactoryLp2AssetsMapping (lpAssetStr) = makeString(["%s%s%s", lpAssetStr, "mappings__lpAsset2PoolContract"], SEP)
3232
3333
3434 func keyFactoryLpList () = "%s__lpTokensList"
3535
3636
3737 func keyFactoryLpAssetToPoolContractAddress (lpAssetStr) = makeString(["%s%s%s", lpAssetStr, "mappings__lpAsset2PoolContract"], SEP)
3838
3939
4040 func keyFactoryPoolWeight (contractAddress) = makeString(["%s%s", "poolWeight", contractAddress], SEP)
4141
4242
4343 func readFactoryAddressOrFail () = addressFromStringValue(getStringOrFail(this, keyFactoryAddress()))
4444
4545
4646 func readLpList () = split(valueOrElse(getString(readFactoryAddressOrFail(), keyFactoryLpList()), ""), SEP)
4747
4848
4949 func readFactoryCfgOrFail (factory) = split(getStringOrFail(factory, keyFactoryCfg()), SEP)
5050
5151
5252 func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
5353
5454
5555 func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
5656
5757
5858 func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
5959
6060
6161 func getGwxRewardAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgGwxRewardDapp])
6262
6363
6464 func keyConfig () = "%s__config"
6565
6666
6767 func keyRatePerBlockMaxCurrent () = "%s%s__ratePerBlockMax__current"
6868
6969
7070 func keyRatePerBlockMaxStartFrom (timestamp,block) = makeString(["%s%s%d%d__ratePerBlockMax__start", toString(timestamp), toString(block)], SEP)
7171
7272
7373 func keyRatePerBlockCurrent () = "%s%s__ratePerBlock__current"
7474
7575
7676 func keyRatePerBlockStartFrom (timestamp,block) = makeString(["%s%s%d%d__ratePerBlock__start", toString(timestamp), toString(block)], SEP)
7777
7878
7979 func keyEmissionStartBlock () = "%s%s__emission__startBlock"
8080
8181
8282 func keyEmissionDurationInBlocks () = "%s%s__emission__duration"
8383
8484
8585 func keyEmissionEndBlock () = "%s%s__emission__endBlock"
8686
8787
8888 func keyManagerPublicKey () = "%s__managerPublicKey"
8989
9090
9191 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
9292
9393
9494 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
9595 case s: String =>
9696 fromBase58String(s)
9797 case _: Unit =>
9898 unit
9999 case _ =>
100100 throw("Match error")
101101 }
102102
103103
104104 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
105105 case s: String =>
106106 fromBase58String(s)
107107 case _: Unit =>
108108 unit
109109 case _ =>
110110 throw("Match error")
111111 }
112112
113113
114114 func mustManager (i) = {
115115 let pd = throw("Permission denied")
116116 match managerPublicKeyOrUnit() {
117117 case pk: ByteVector =>
118118 if ((i.callerPublicKey == pk))
119119 then true
120120 else pd
121121 case _: Unit =>
122122 if ((i.caller == this))
123123 then true
124124 else pd
125125 case _ =>
126126 throw("Match error")
127127 }
128128 }
129129
130130
131131 @Callable(i)
132132 func constructor (factoryAddress,ratePerBlockMax,ratePerBlock,emissionStartBlock,emissionDuration,emissionStartTimestamp,wxAssetIdStr) = {
133133 let checkCaller = mustManager(i)
134134 if ((checkCaller == checkCaller))
135135 then [IntegerEntry(keyRatePerBlockMaxStartFrom(emissionStartTimestamp, emissionStartBlock), ratePerBlockMax), IntegerEntry(keyRatePerBlockMaxCurrent(), ratePerBlockMax), IntegerEntry(keyRatePerBlockStartFrom(emissionStartTimestamp, emissionStartBlock), ratePerBlock), IntegerEntry(keyRatePerBlockCurrent(), ratePerBlock), IntegerEntry(keyEmissionStartBlock(), emissionStartBlock), IntegerEntry(keyEmissionDurationInBlocks(), emissionDuration), IntegerEntry(keyEmissionEndBlock(), (emissionStartBlock + emissionDuration)), StringEntry(keyFactoryAddress(), factoryAddress), StringEntry(keyConfig(), ("%s__" + wxAssetIdStr))]
136136 else throw("Strict value is not equal to itself.")
137137 }
138138
139139
140140
141141 @Callable(i)
142142 func emit (amount) = if ((0 >= amount))
143143 then $Tuple2(nil, nil)
144144 else {
145145 let factoryContract = readFactoryAddressOrFail()
146146 let factoryCfg = readFactoryCfgOrFail(factoryContract)
147147 let stakingContract = getStakingAddressOrFail(factoryCfg)
148148 let gwxRewardsContract = getGwxRewardAddressOrFail(factoryCfg)
149149 let caller = i.caller
150150 if (if ((caller != stakingContract))
151151 then (caller != gwxRewardsContract)
152152 else false)
153153 then throw("permissions denied")
154154 else {
155155 let wxAssetIdStr = split(getStringOrFail(this, keyConfig()), SEP)[1]
156156 let wxAssetId = fromBase58String(wxAssetIdStr)
157157 $Tuple2([ScriptTransfer(caller, amount, wxAssetId)], [wxAssetId])
158158 }
159159 }
160160
161161
162162
163163 @Callable(i)
164164 func burn () = {
165165 let factoryContract = readFactoryAddressOrFail()
166166 let factoryCfg = readFactoryCfgOrFail(factoryContract)
167167 let boostingContract = getBoostingAddressOrFail(factoryCfg)
168168 if ((size(i.payments) != 1))
169169 then throw("exact one payment is allowed")
170170 else {
171171 let pmt = i.payments[0]
172172 let assetId = value(pmt.assetId)
173173 let pmtAmount = pmt.amount
174174 let wxAssetId = fromBase58String(split(getStringOrFail(this, keyConfig()), SEP)[1])
175175 if ((assetId != wxAssetId))
176176 then throw("invalid wxAssetId is passed")
177177 else if ((i.caller != boostingContract))
178178 then throw("permissions denied")
179179 else [Burn(assetId, pmtAmount), StringEntry(("%s%s%s__history__burn__" + toBase58String(i.transactionId)), makeString(["%d%d%d", toString(height), toString(lastBlock.timestamp), toString(pmtAmount)], SEP))]
180180 }
181181 }
182182
183183
184184
185185 @Callable(i)
186186 func setManager (pendingManagerPublicKey) = {
187187 let checkCaller = mustManager(i)
188188 if ((checkCaller == checkCaller))
189189 then {
190190 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
191191 if ((checkManagerPublicKey == checkManagerPublicKey))
192192 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
193193 else throw("Strict value is not equal to itself.")
194194 }
195195 else throw("Strict value is not equal to itself.")
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func confirmManager () = {
202202 let pm = pendingManagerPublicKeyOrUnit()
203203 let hasPM = if (isDefined(pm))
204204 then true
205205 else throw("No pending manager")
206206 if ((hasPM == hasPM))
207207 then {
208208 let checkPM = if ((i.callerPublicKey == value(pm)))
209209 then true
210210 else throw("You are not pending manager")
211211 if ((checkPM == checkPM))
212212 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
213213 else throw("Strict value is not equal to itself.")
214214 }
215215 else throw("Strict value is not equal to itself.")
216216 }
217217
218218
219219 @Verifier(tx)
220220 func verify () = {
221221 let targetPublicKey = match managerPublicKeyOrUnit() {
222222 case pk: ByteVector =>
223223 pk
224224 case _: Unit =>
225225 tx.senderPublicKey
226226 case _ =>
227227 throw("Match error")
228228 }
229229 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
230230 }
231231

github/deemru/w8io/3ef1775 
39.88 ms