2021.12.23 19:32 [2912162] smart account 3PJyz4AHXKBgDuFx7uZdYmHCBtTmDnRgCx3 > SELF 0.00000000 Waves

{ "type": 13, "id": "27KAb7zkM5qvfFivTSAVN5q9NDiqQ97BiNpESL27x6Yh", "fee": 1000000, "feeAssetId": null, "timestamp": 1640277174326, "version": 1, "sender": "3PJyz4AHXKBgDuFx7uZdYmHCBtTmDnRgCx3", "senderPublicKey": "FoGdD9qz4AFW3pdmp1QCA5vvo9wn3fTbv4JnYrWZe3BB", "proofs": [ "5dPbsXjhNtyKUFnaobxXcxPo41bEFHnxCrDRoDuS3seBmsz7BmVwsAA9yjVfVGZ49vKwVs9E1YSD3Yit2MUpQt9f" ], "script": "base64:AAIFAAAAAAAAABQIAhIJCgcIAQEBAQEIEgMKAQESAAAAAB0AAAAAA1NFUAIAAAACX18BAAAAD2dldFN0cmluZ09yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAACAAAAHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAAAAAAAAAAAAQAAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAAAAAAAAAAAAgAAAAAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAAAAAAAAAAMAAAAAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAAAAAAAAAABAAAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAAAAAAAAAABQAAAAAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAAAAAAAAAAGAAAAABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAAAAAAAAAAHAQAAAA1rZXlGYWN0b3J5Q2ZnAAAAAAIAAAARJXNfX2ZhY3RvcnlDb25maWcBAAAAGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAAAAAQAAAApscEFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAIFAAAACmxwQXNzZXRTdHIJAARMAAAAAgIAAAAebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAQa2V5RmFjdG9yeUxwTGlzdAAAAAACAAAAECVzX19scFRva2Vuc0xpc3QBAAAAJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQAAAApscEFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAIFAAAACmxwQXNzZXRTdHIJAARMAAAAAgIAAAAebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAUa2V5RmFjdG9yeVBvb2xXZWlnaHQAAAABAAAAD2NvbnRyYWN0QWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAKcG9vbFdlaWdodAkABEwAAAACBQAAAA9jb250cmFjdEFkZHJlc3MFAAAAA25pbAUAAAADU0VQAQAAABhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAAAACQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAEWtleUZhY3RvcnlBZGRyZXNzAAAAAAEAAAAKcmVhZExwTGlzdAAAAAAJAAS1AAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACCQEAAAAYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAAAAAkBAAAAEGtleUZhY3RvcnlMcExpc3QAAAAAAgAAAAAFAAAAA1NFUAEAAAAUcmVhZEZhY3RvcnlDZmdPckZhaWwAAAABAAAAB2ZhY3RvcnkJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAB2ZhY3RvcnkJAQAAAA1rZXlGYWN0b3J5Q2ZnAAAAAAUAAAADU0VQAQAAABhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAEAAAAYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHABAAAAF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAEAAAAJa2V5Q29uZmlnAAAAAAIAAAAKJXNfX2NvbmZpZwEAAAAZa2V5UmF0ZVBlckJsb2NrTWF4Q3VycmVudAAAAAACAAAAHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAEAAAAba2V5UmF0ZVBlckJsb2NrTWF4U3RhcnRGcm9tAAAAAgAAAAl0aW1lc3RhbXAAAAAFYmxvY2sJAAS5AAAAAgkABEwAAAACAgAAACAlcyVzJWQlZF9fcmF0ZVBlckJsb2NrTWF4X19zdGFydAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAABWJsb2NrBQAAAANuaWwFAAAAA1NFUAEAAAAWa2V5UmF0ZVBlckJsb2NrQ3VycmVudAAAAAACAAAAGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEAAAAYa2V5UmF0ZVBlckJsb2NrU3RhcnRGcm9tAAAAAgAAAAl0aW1lc3RhbXAAAAAFYmxvY2sJAAS5AAAAAgkABEwAAAACAgAAAB0lcyVzJWQlZF9fcmF0ZVBlckJsb2NrX19zdGFydAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAABWJsb2NrBQAAAANuaWwFAAAAA1NFUAEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAIAAAAaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBAAAAG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcwAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgEAAAATa2V5RW1pc3Npb25FbmRCbG9jawAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawAAAAMAAAABaQEAAAALY29uc3RydWN0b3IAAAAHAAAADmZhY3RvcnlBZGRyZXNzAAAAD3JhdGVQZXJCbG9ja01heAAAAAxyYXRlUGVyQmxvY2sAAAASZW1pc3Npb25TdGFydEJsb2NrAAAAEGVtaXNzaW9uRHVyYXRpb24AAAAWZW1pc3Npb25TdGFydFRpbWVzdGFtcAAAAAx3eEFzc2V0SWRTdHIDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAba2V5UmF0ZVBlckJsb2NrTWF4U3RhcnRGcm9tAAAAAgUAAAAWZW1pc3Npb25TdGFydFRpbWVzdGFtcAUAAAASZW1pc3Npb25TdGFydEJsb2NrBQAAAA9yYXRlUGVyQmxvY2tNYXgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABlrZXlSYXRlUGVyQmxvY2tNYXhDdXJyZW50AAAAAAUAAAAPcmF0ZVBlckJsb2NrTWF4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAYa2V5UmF0ZVBlckJsb2NrU3RhcnRGcm9tAAAAAgUAAAAWZW1pc3Npb25TdGFydFRpbWVzdGFtcAUAAAASZW1pc3Npb25TdGFydEJsb2NrBQAAAAxyYXRlUGVyQmxvY2sJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlSYXRlUGVyQmxvY2tDdXJyZW50AAAAAAUAAAAMcmF0ZVBlckJsb2NrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAUAAAASZW1pc3Npb25TdGFydEJsb2NrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAAAAAUAAAAQZW1pc3Npb25EdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAE2tleUVtaXNzaW9uRW5kQmxvY2sAAAAACQAAZAAAAAIFAAAAEmVtaXNzaW9uU3RhcnRCbG9jawUAAAAQZW1pc3Npb25EdXJhdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5RmFjdG9yeUFkZHJlc3MAAAAABQAAAA5mYWN0b3J5QWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5Q29uZmlnAAAAAAkAASwAAAACAgAAAAQlc19fBQAAAAx3eEFzc2V0SWRTdHIFAAAAA25pbAAAAAFpAQAAAARlbWl0AAAAAQAAAAZhbW91bnQEAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAAAAAEAAAACmZhY3RvcnlDZmcJAQAAABRyZWFkRmFjdG9yeUNmZ09yRmFpbAAAAAEFAAAAD2ZhY3RvcnlDb250cmFjdAQAAAAPc3Rha2luZ0NvbnRyYWN0CQEAAAAXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwAAAABBQAAAApmYWN0b3J5Q2ZnBAAAABFzdGFraW5nQWRkcmVzc1N0cgkABCUAAAABBQAAAA9zdGFraW5nQ29udHJhY3QEAAAACWNhbGxlclN0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAljYWxsZXJTdHIFAAAAEXN0YWtpbmdBZGRyZXNzU3RyCQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAQAAAAMd3hBc3NldElkU3RyCQABkQAAAAIJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAAlrZXlDb25maWcAAAAABQAAAANTRVAAAAAAAAAAAAEEAAAACXd4QXNzZXRJZAkAAlkAAAABBQAAAAx3eEFzc2V0SWRTdHIJAAUUAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA9zdGFraW5nQ29udHJhY3QFAAAABmFtb3VudAUAAAAJd3hBc3NldElkBQAAAANuaWwJAARMAAAAAgUAAAAJd3hBc3NldElkBQAAAANuaWwAAAABaQEAAAAEYnVybgAAAAAEAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAAAAAEAAAACmZhY3RvcnlDZmcJAQAAABRyZWFkRmFjdG9yeUNmZ09yRmFpbAAAAAEFAAAAD2ZhY3RvcnlDb250cmFjdAQAAAAQYm9vc3RpbmdDb250cmFjdAkBAAAAGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHGV4YWN0IG9uZSBwYXltZW50IGlzIGFsbG93ZWQEAAAAA3BtdAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAHYXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50BAAAAAl3eEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAAJa2V5Q29uZmlnAAAAAAUAAAADU0VQAAAAAAAAAAABAwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAAJd3hBc3NldElkCQAAAgAAAAECAAAAG2ludmFsaWQgd3hBc3NldElkIGlzIHBhc3NlZAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAQYm9vc3RpbmdDb250cmFjdAkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAdhc3NldElkBQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABclcyVzJXNfX2hpc3RvcnlfX2J1cm5fXwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQAEuQAAAAIJAARMAAAAAgIAAAAGJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAGaGVpZ2h0CQAETAAAAAIJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkAAaQAAAABBQAAAAlwbXRBbW91bnQFAAAAA25pbAUAAAADU0VQBQAAAANuaWwAAAAAvUA1nA==", "chainId": 87, "height": 2912162, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6ymKS9Xck1wveq5fB9KfKiWR3E89H5HXNL9FFpi9Vo6w Next: GneKUZ78XpogsjiNceV7J2HT1yD9R16cpAWnBoCkTE5D Diff:
OldNewDifferences
104104 }
105105
106106
107+
108+@Callable(i)
109+func burn () = {
110+ let factoryContract = readFactoryAddressOrFail()
111+ let factoryCfg = readFactoryCfgOrFail(factoryContract)
112+ let boostingContract = getBoostingAddressOrFail(factoryCfg)
113+ if ((size(i.payments) != 1))
114+ then throw("exact one payment is allowed")
115+ else {
116+ let pmt = i.payments[0]
117+ let assetId = value(pmt.assetId)
118+ let pmtAmount = pmt.amount
119+ let wxAssetId = fromBase58String(split(getStringOrFail(this, keyConfig()), SEP)[1])
120+ if ((assetId != wxAssetId))
121+ then throw("invalid wxAssetId is passed")
122+ else if ((i.caller != boostingContract))
123+ then throw("permissions denied")
124+ 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))]
125+ }
126+ }
127+
128+
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 func keyFactoryCfg () = "%s__factoryConfig"
2727
2828
2929 func keyFactoryLp2AssetsMapping (lpAssetStr) = makeString(["%s%s%s", lpAssetStr, "mappings__lpAsset2PoolContract"], SEP)
3030
3131
3232 func keyFactoryLpList () = "%s__lpTokensList"
3333
3434
3535 func keyFactoryLpAssetToPoolContractAddress (lpAssetStr) = makeString(["%s%s%s", lpAssetStr, "mappings__lpAsset2PoolContract"], SEP)
3636
3737
3838 func keyFactoryPoolWeight (contractAddress) = makeString(["%s%s", "poolWeight", contractAddress], SEP)
3939
4040
4141 func readFactoryAddressOrFail () = addressFromStringValue(getStringOrFail(this, keyFactoryAddress()))
4242
4343
4444 func readLpList () = split(valueOrElse(getString(readFactoryAddressOrFail(), keyFactoryLpList()), ""), SEP)
4545
4646
4747 func readFactoryCfgOrFail (factory) = split(getStringOrFail(factory, keyFactoryCfg()), SEP)
4848
4949
5050 func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
5151
5252
5353 func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
5454
5555
5656 func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
5757
5858
5959 func keyConfig () = "%s__config"
6060
6161
6262 func keyRatePerBlockMaxCurrent () = "%s%s__ratePerBlockMax__current"
6363
6464
6565 func keyRatePerBlockMaxStartFrom (timestamp,block) = makeString(["%s%s%d%d__ratePerBlockMax__start", toString(timestamp), toString(block)], SEP)
6666
6767
6868 func keyRatePerBlockCurrent () = "%s%s__ratePerBlock__current"
6969
7070
7171 func keyRatePerBlockStartFrom (timestamp,block) = makeString(["%s%s%d%d__ratePerBlock__start", toString(timestamp), toString(block)], SEP)
7272
7373
7474 func keyEmissionStartBlock () = "%s%s__emission__startBlock"
7575
7676
7777 func keyEmissionDurationInBlocks () = "%s%s__emission__duration"
7878
7979
8080 func keyEmissionEndBlock () = "%s%s__emission__endBlock"
8181
8282
8383 @Callable(i)
8484 func constructor (factoryAddress,ratePerBlockMax,ratePerBlock,emissionStartBlock,emissionDuration,emissionStartTimestamp,wxAssetIdStr) = if ((i.caller != this))
8585 then throw("permissions denied")
8686 else [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))]
8787
8888
8989
9090 @Callable(i)
9191 func emit (amount) = {
9292 let factoryContract = readFactoryAddressOrFail()
9393 let factoryCfg = readFactoryCfgOrFail(factoryContract)
9494 let stakingContract = getStakingAddressOrFail(factoryCfg)
9595 let stakingAddressStr = toString(stakingContract)
9696 let callerStr = toString(i.caller)
9797 if ((callerStr != stakingAddressStr))
9898 then throw("permissions denied")
9999 else {
100100 let wxAssetIdStr = split(getStringOrFail(this, keyConfig()), SEP)[1]
101101 let wxAssetId = fromBase58String(wxAssetIdStr)
102102 $Tuple2([ScriptTransfer(stakingContract, amount, wxAssetId)], [wxAssetId])
103103 }
104104 }
105105
106106
107+
108+@Callable(i)
109+func burn () = {
110+ let factoryContract = readFactoryAddressOrFail()
111+ let factoryCfg = readFactoryCfgOrFail(factoryContract)
112+ let boostingContract = getBoostingAddressOrFail(factoryCfg)
113+ if ((size(i.payments) != 1))
114+ then throw("exact one payment is allowed")
115+ else {
116+ let pmt = i.payments[0]
117+ let assetId = value(pmt.assetId)
118+ let pmtAmount = pmt.amount
119+ let wxAssetId = fromBase58String(split(getStringOrFail(this, keyConfig()), SEP)[1])
120+ if ((assetId != wxAssetId))
121+ then throw("invalid wxAssetId is passed")
122+ else if ((i.caller != boostingContract))
123+ then throw("permissions denied")
124+ 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))]
125+ }
126+ }
127+
128+

github/deemru/w8io/786bc32 
38.83 ms