tx · CaKDo4wPYe63FFW5TBzmubKcDEsiZxUdA3GGp7RTBg9v

3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF:  -0.01000000 Waves

2024.05.03 18:51 [3090138] smart account 3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF > SELF 0.00000000 Waves

{ "type": 13, "id": "CaKDo4wPYe63FFW5TBzmubKcDEsiZxUdA3GGp7RTBg9v", "fee": 1000000, "feeAssetId": null, "timestamp": 1714751505045, "version": 2, "chainId": 84, "sender": "3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF", "senderPublicKey": "5pPySirDYzGqBH24WnXUvbKDkDVA5qoNuUgCDvkKYJTT", "proofs": [ "2DVxzqAj7cVxiTa8tH754k875BVfBTpqmvzR6zK2xW4e76XmkNnuXeTo54tRGT1jB5XrjT2eozAgftU6M41gfHve" ], "script": "base64:BgIUCAISCAoGCAgICAEBEgYKBAgBCAEVAAdXYXZlc0lkAgVXQVZFUwAGSGVpZ2h0BQZoZWlnaHQAEENhbGxlckFkZHJlc3NLZXkCE3NldHVwX2NhbGxlckFkZHJlc3MAGlB1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzS2V5Ah1zZXR1cF9wdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwAXUHV6emxlU3Rha2luZ0FkZHJlc3NLZXkCGnNldHVwX3B1enpsZVN0YWtpbmdBZGRyZXNzAAtQdXp6bGVJZEtleQIOc2V0dXBfcHV6emxlSWQAFEJ1eWJhY2tJdGVyYXRpb25zS2V5AhdzZXR1cF9idXliYWNrSXRlcmF0aW9ucwAPQnV5YmFja0RlbGF5S2V5AhJzZXR1cF9idXliYWNrRGVsYXkAFFRvdGFsQm91Z2h0UHV6emxlS2V5AhF0b3RhbEJvdWdodFB1enpsZQANQ2FsbGVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUQQ2FsbGVyQWRkcmVzc0tleQAXUHV6emxlQWdncmVnYXRvckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFGlB1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzS2V5ABRQdXp6bGVTdGFraW5nQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUXUHV6emxlU3Rha2luZ0FkZHJlc3NLZXkACFB1enpsZUlkCQERQGV4dHJOYXRpdmUoMTA1MikCBQR0aGlzBQtQdXp6bGVJZEtleQARQnV5YmFja0l0ZXJhdGlvbnMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFFEJ1eWJhY2tJdGVyYXRpb25zS2V5AAxCdXliYWNrRGVsYXkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFD0J1eWJhY2tEZWxheUtleQASQnV5YmFja0Vwb2NoTGVuZ3RoCQBoAgURQnV5YmFja0l0ZXJhdGlvbnMFDEJ1eWJhY2tEZWxheQEYbWFrZUxhc3RCdXliYWNrSGVpZ2h0S2V5AQVhc3NldAkArAICAhJsYXN0QnV5YmFja0hlaWdodF8FBWFzc2V0ARNtYWtlQnV5YmFja0lucHV0S2V5AgVhc3NldAtlcG9jaEhlaWdodAkArAICCQCsAgIJAKwCAgINYnV5YmFja0lucHV0XwUFYXNzZXQCAV8JAKQDAQULZXBvY2hIZWlnaHQBDG1ha2VTdGF0c0tleQMBaQxidXliYWNrSW5wdXQFYXNzZXQJALkJAgkAzAgCAgVzdGF0cwkAzAgCCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgkApAMBBQZIZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFDGJ1eWJhY2tJbnB1dAkAzAgCBQVhc3NldAUDbmlsAgFfARRnZXRMYXN0QnV5YmFja0hlaWdodAEFYXNzZXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGG1ha2VMYXN0QnV5YmFja0hlaWdodEtleQEFBWFzc2V0AAABD2dldEJ1eWJhY2tJbnB1dAIFYXNzZXQLZXBvY2hIZWlnaHQJAJoIAgUEdGhpcwkBE21ha2VCdXliYWNrSW5wdXRLZXkCBQVhc3NldAULZXBvY2hIZWlnaHQCAWkBBXNldHVwBg1jYWxsZXJBZGRyZXNzF3B1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzFHB1enpsZVN0YWtpbmdBZGRyZXNzCHB1enpsZUlkEWJ1eWJhY2tJdGVyYXRpb25zDGJ1eWJhY2tEZWxheQMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBVPKK99Uqk+USTq6ausjKLTQZBlBcP3+vtwcJAAIBAgpPd25lciBvbmx5AwkAAAIJAKYIAQUNY2FsbGVyQWRkcmVzcwUEdW5pdAkAAgEJAKwCAgIXSW52YWxpZCBjYWxsZXJBZGRyZXNzOiAFDWNhbGxlckFkZHJlc3MDCQAAAgkApggBBRdwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwUEdW5pdAkAAgEJAKwCAgIhSW52YWxpZCBwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzczogBRdwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwMJAAACCQCmCAEFFHB1enpsZVN0YWtpbmdBZGRyZXNzBQR1bml0CQACAQkArAICAh5JbnZhbGlkIHB1enpsZVN0YWtpbmdBZGRyZXNzOiAFFHB1enpsZVN0YWtpbmdBZGRyZXNzAwkAAAIJAOwHAQkA2QQBBQhwdXp6bGVJZAUEdW5pdAkAAgEJAKwCAgISVW5rbm93biBwdXp6bGVJZDogBQhwdXp6bGVJZAMJAGcCAAAFEWJ1eWJhY2tJdGVyYXRpb25zCQACAQkArAICAjVidXliYWNrSXRlcmF0aW9ucyBzaG91bGQgYmUgcG9zaXRpdmUsIGN1cnJlbnQgdmFsdWU6IAkApAMBBRFidXliYWNrSXRlcmF0aW9ucwMJAGcCAAAFDGJ1eWJhY2tEZWxheQkAAgEJAKwCAgIwYnV5YmFja0RlbGF5IHNob3VsZCBiZSBwb3NpdGl2ZSwgY3VycmVudCB2YWx1ZTogCQCkAwEFDGJ1eWJhY2tEZWxheQkAzAgCCQELU3RyaW5nRW50cnkCBRBDYWxsZXJBZGRyZXNzS2V5BQ1jYWxsZXJBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFGlB1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzS2V5BRdwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCBRdQdXp6bGVTdGFraW5nQWRkcmVzc0tleQUUcHV6emxlU3Rha2luZ0FkZHJlc3MJAMwIAgkBC0JpbmFyeUVudHJ5AgULUHV6emxlSWRLZXkJANkEAQUIcHV6emxlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFEJ1eWJhY2tJdGVyYXRpb25zS2V5BRFidXliYWNrSXRlcmF0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPQnV5YmFja0RlbGF5S2V5BQxidXliYWNrRGVsYXkFA25pbAFpARxidXliYWNrUHV6emxlQW5kVG9wVXBSZXdhcmRzBAVhc3NldAZhbW91bnQFcm91dGUMbWluVG9SZWNlaXZlAwkBAiE9AggFAWkGY2FsbGVyBQ1DYWxsZXJBZGRyZXNzCQACAQIQV2hpdGVsaXN0ZWQgb25seQQRbGFzdEJ1eWJhY2tIZWlnaHQJARRnZXRMYXN0QnV5YmFja0hlaWdodAEFBWFzc2V0AwkAZgIJAGQCBRFsYXN0QnV5YmFja0hlaWdodAUMQnV5YmFja0RlbGF5BQZIZWlnaHQJAAIBAgdOb3QgeWV0BAskdDAzMzYxMzYzMgMJAAACBQVhc3NldAUHV2F2ZXNJZAkAlAoCBQR1bml0CAkA7wcBBQR0aGlzCWF2YWlsYWJsZQQOY3VycmVudEFzc2V0SWQJANkEAQUFYXNzZXQEE2N1cnJlbnRBc3NldEJhbGFuY2UJAPAHAgUEdGhpcwUOY3VycmVudEFzc2V0SWQJAJQKAgUOY3VycmVudEFzc2V0SWQFE2N1cnJlbnRBc3NldEJhbGFuY2UEB2Fzc2V0SWQIBQskdDAzMzYxMzYzMgJfMQQHYmFsYW5jZQgFCyR0MDMzNjEzNjMyAl8yBAtlcG9jaEhlaWdodAkAaAIJAGkCBQZIZWlnaHQFEkJ1eWJhY2tFcG9jaExlbmd0aAUSQnV5YmFja0Vwb2NoTGVuZ3RoBBFlcG9jaEJ1eWJhY2tJbnB1dAkBC3ZhbHVlT3JFbHNlAgkBD2dldEJ1eWJhY2tJbnB1dAIFBWFzc2V0BQtlcG9jaEhlaWdodAkAaQIFB2JhbGFuY2UFEUJ1eWJhY2tJdGVyYXRpb25zAwMDCQBmAgUGYW1vdW50BQdiYWxhbmNlBgkAZwIAAAUGYW1vdW50BgkAZgIFBmFtb3VudAURZXBvY2hCdXliYWNrSW5wdXQJAAIBCQCsAgICEEludmFsaWQgYW1vdW50OiAJAKQDAQUGYW1vdW50BApzd2FwSW52b2tlCQD8BwQFF1B1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzAhBzd2FwV2l0aFJlZmVycmFsCQDMCAIFBXJvdXRlCQDMCAIFDG1pblRvUmVjZWl2ZQkAzAgCAgpwdXp6bGVub2RlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFCnN3YXBJbnZva2UFCnN3YXBJbnZva2UEDGJvdWdodFB1enpsZQkA8AcCBQR0aGlzBQhQdXp6bGVJZAMJAGcCAAAFDGJvdWdodFB1enpsZQkAAgEJAKwCAgkArAICCQCsAgICHlB1enpsZSB3YXMgbm90IGJvdWdodCwgYXNzZXQ6IAUFYXNzZXQCCSwgcm91dGU6IAUFcm91dGUEC3RvcFVwSW52b2tlCQD8BwQFFFB1enpsZVN0YWtpbmdBZGRyZXNzAgt0b3BVcFJld2FyZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhQdXp6bGVJZAUMYm91Z2h0UHV6emxlBQNuaWwDCQAAAgULdG9wVXBJbnZva2UFC3RvcFVwSW52b2tlBBF0b3RhbEJvdWdodFB1enpsZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUUVG90YWxCb3VnaHRQdXp6bGVLZXkAAAUMYm91Z2h0UHV6emxlBAhzdGF0c0tleQkBDG1ha2VTdGF0c0tleQMFAWkFBmFtb3VudAUFYXNzZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJARhtYWtlTGFzdEJ1eWJhY2tIZWlnaHRLZXkBBQVhc3NldAUGSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETbWFrZUJ1eWJhY2tJbnB1dEtleQIFBWFzc2V0BQtlcG9jaEhlaWdodAURZXBvY2hCdXliYWNrSW5wdXQJAMwIAgkBDEludGVnZXJFbnRyeQIFCHN0YXRzS2V5BQxib3VnaHRQdXp6bGUJAMwIAgkBDEludGVnZXJFbnRyeQIFFFRvdGFsQm91Z2h0UHV6emxlS2V5BRF0b3RhbEJvdWdodFB1enpsZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleWgPfww=", "height": 3090138, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9DCFNnHQ5Tf696ysBjpiG25jpmQshBPFxYfymbqv3LyM Next: none Diff:
OldNewDifferences
4949
5050
5151 @Callable(i)
52-func setup (callerAddress,puzzleAggregatorAddress,puzzleStakingAddress,puzzleId,buybackIterations,buybackDelay) = if ((getBinary(PuzzleIdKey) != unit))
53- then throw("Can be called only once")
52+func setup (callerAddress,puzzleAggregatorAddress,puzzleStakingAddress,puzzleId,buybackIterations,buybackDelay) = if (if ((i.caller != this))
53+ then (i.caller != Address(base58'3NC2Xn1tUKEc7YxJS9oxdtY4x5NaQHhpH2e'))
54+ else false)
55+ then throw("Owner only")
5456 else if ((addressFromString(callerAddress) == unit))
5557 then throw(("Invalid callerAddress: " + callerAddress))
5658 else if ((addressFromString(puzzleAggregatorAddress) == unit))
6870
6971
7072 @Callable(i)
71-func buybackPuzzleAndTopUpRewards (asset,route,minToReceive) = if ((i.caller != CallerAddress))
73+func buybackPuzzleAndTopUpRewards (asset,amount,route,minToReceive) = if ((i.caller != CallerAddress))
7274 then throw("Whitelisted only")
7375 else {
7476 let lastBuybackHeight = getLastBuybackHeight(asset)
7577 if (((lastBuybackHeight + BuybackDelay) > Height))
7678 then throw("Not yet")
7779 else {
78- let $t032713542 = if ((asset == WavesId))
80+ let $t033613632 = if ((asset == WavesId))
7981 then $Tuple2(unit, wavesBalance(this).available)
8082 else {
8183 let currentAssetId = fromBase58String(asset)
8284 let currentAssetBalance = assetBalance(this, currentAssetId)
8385 $Tuple2(currentAssetId, currentAssetBalance)
8486 }
85- let assetId = $t032713542._1
86- let balance = $t032713542._2
87+ let assetId = $t033613632._1
88+ let balance = $t033613632._2
8789 let epochHeight = ((Height / BuybackEpochLength) * BuybackEpochLength)
8890 let epochBuybackInput = valueOrElse(getBuybackInput(asset, epochHeight), (balance / BuybackIterations))
89- let buybackInput = if ((epochBuybackInput > balance))
90- then balance
91- else epochBuybackInput
92- if ((0 >= buybackInput))
93- then throw(("Empty balance of " + asset))
91+ if (if (if ((amount > balance))
92+ then true
93+ else (0 >= amount))
94+ then true
95+ else (amount > epochBuybackInput))
96+ then throw(("Invalid amount: " + toString(amount)))
9497 else {
95- let swapInvoke = invoke(PuzzleAggregatorAddress, "swapWithReferral", [route, minToReceive, "puzzlenode"], [AttachedPayment(assetId, buybackInput)])
98+ let swapInvoke = invoke(PuzzleAggregatorAddress, "swapWithReferral", [route, minToReceive, "puzzlenode"], [AttachedPayment(assetId, amount)])
9699 if ((swapInvoke == swapInvoke))
97100 then {
98101 let boughtPuzzle = assetBalance(this, PuzzleId)
103106 if ((topUpInvoke == topUpInvoke))
104107 then {
105108 let totalBoughtPuzzle = (valueOrElse(getInteger(this, TotalBoughtPuzzleKey), 0) + boughtPuzzle)
106- let statsKey = makeStatsKey(i, buybackInput, asset)
109+ let statsKey = makeStatsKey(i, amount, asset)
107110 [IntegerEntry(makeLastBuybackHeightKey(asset), Height), IntegerEntry(makeBuybackInputKey(asset, epochHeight), epochBuybackInput), IntegerEntry(statsKey, boughtPuzzle), IntegerEntry(TotalBoughtPuzzleKey, totalBoughtPuzzle)]
108111 }
109112 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WavesId = "WAVES"
55
66 let Height = height
77
88 let CallerAddressKey = "setup_callerAddress"
99
1010 let PuzzleAggregatorAddressKey = "setup_puzzleAggregatorAddress"
1111
1212 let PuzzleStakingAddressKey = "setup_puzzleStakingAddress"
1313
1414 let PuzzleIdKey = "setup_puzzleId"
1515
1616 let BuybackIterationsKey = "setup_buybackIterations"
1717
1818 let BuybackDelayKey = "setup_buybackDelay"
1919
2020 let TotalBoughtPuzzleKey = "totalBoughtPuzzle"
2121
2222 let CallerAddress = addressFromStringValue(getStringValue(this, CallerAddressKey))
2323
2424 let PuzzleAggregatorAddress = addressFromStringValue(getStringValue(this, PuzzleAggregatorAddressKey))
2525
2626 let PuzzleStakingAddress = addressFromStringValue(getStringValue(this, PuzzleStakingAddressKey))
2727
2828 let PuzzleId = getBinaryValue(this, PuzzleIdKey)
2929
3030 let BuybackIterations = getIntegerValue(this, BuybackIterationsKey)
3131
3232 let BuybackDelay = getIntegerValue(this, BuybackDelayKey)
3333
3434 let BuybackEpochLength = (BuybackIterations * BuybackDelay)
3535
3636 func makeLastBuybackHeightKey (asset) = ("lastBuybackHeight_" + asset)
3737
3838
3939 func makeBuybackInputKey (asset,epochHeight) = ((("buybackInput_" + asset) + "_") + toString(epochHeight))
4040
4141
4242 func makeStatsKey (i,buybackInput,asset) = makeString(["stats", toBase58String(i.transactionId), toString(Height), toString(lastBlock.timestamp), toString(buybackInput), asset], "_")
4343
4444
4545 func getLastBuybackHeight (asset) = valueOrElse(getInteger(this, makeLastBuybackHeightKey(asset)), 0)
4646
4747
4848 func getBuybackInput (asset,epochHeight) = getInteger(this, makeBuybackInputKey(asset, epochHeight))
4949
5050
5151 @Callable(i)
52-func setup (callerAddress,puzzleAggregatorAddress,puzzleStakingAddress,puzzleId,buybackIterations,buybackDelay) = if ((getBinary(PuzzleIdKey) != unit))
53- then throw("Can be called only once")
52+func setup (callerAddress,puzzleAggregatorAddress,puzzleStakingAddress,puzzleId,buybackIterations,buybackDelay) = if (if ((i.caller != this))
53+ then (i.caller != Address(base58'3NC2Xn1tUKEc7YxJS9oxdtY4x5NaQHhpH2e'))
54+ else false)
55+ then throw("Owner only")
5456 else if ((addressFromString(callerAddress) == unit))
5557 then throw(("Invalid callerAddress: " + callerAddress))
5658 else if ((addressFromString(puzzleAggregatorAddress) == unit))
5759 then throw(("Invalid puzzleAggregatorAddress: " + puzzleAggregatorAddress))
5860 else if ((addressFromString(puzzleStakingAddress) == unit))
5961 then throw(("Invalid puzzleStakingAddress: " + puzzleStakingAddress))
6062 else if ((assetInfo(fromBase58String(puzzleId)) == unit))
6163 then throw(("Unknown puzzleId: " + puzzleId))
6264 else if ((0 >= buybackIterations))
6365 then throw(("buybackIterations should be positive, current value: " + toString(buybackIterations)))
6466 else if ((0 >= buybackDelay))
6567 then throw(("buybackDelay should be positive, current value: " + toString(buybackDelay)))
6668 else [StringEntry(CallerAddressKey, callerAddress), StringEntry(PuzzleAggregatorAddressKey, puzzleAggregatorAddress), StringEntry(PuzzleStakingAddressKey, puzzleStakingAddress), BinaryEntry(PuzzleIdKey, fromBase58String(puzzleId)), IntegerEntry(BuybackIterationsKey, buybackIterations), IntegerEntry(BuybackDelayKey, buybackDelay)]
6769
6870
6971
7072 @Callable(i)
71-func buybackPuzzleAndTopUpRewards (asset,route,minToReceive) = if ((i.caller != CallerAddress))
73+func buybackPuzzleAndTopUpRewards (asset,amount,route,minToReceive) = if ((i.caller != CallerAddress))
7274 then throw("Whitelisted only")
7375 else {
7476 let lastBuybackHeight = getLastBuybackHeight(asset)
7577 if (((lastBuybackHeight + BuybackDelay) > Height))
7678 then throw("Not yet")
7779 else {
78- let $t032713542 = if ((asset == WavesId))
80+ let $t033613632 = if ((asset == WavesId))
7981 then $Tuple2(unit, wavesBalance(this).available)
8082 else {
8183 let currentAssetId = fromBase58String(asset)
8284 let currentAssetBalance = assetBalance(this, currentAssetId)
8385 $Tuple2(currentAssetId, currentAssetBalance)
8486 }
85- let assetId = $t032713542._1
86- let balance = $t032713542._2
87+ let assetId = $t033613632._1
88+ let balance = $t033613632._2
8789 let epochHeight = ((Height / BuybackEpochLength) * BuybackEpochLength)
8890 let epochBuybackInput = valueOrElse(getBuybackInput(asset, epochHeight), (balance / BuybackIterations))
89- let buybackInput = if ((epochBuybackInput > balance))
90- then balance
91- else epochBuybackInput
92- if ((0 >= buybackInput))
93- then throw(("Empty balance of " + asset))
91+ if (if (if ((amount > balance))
92+ then true
93+ else (0 >= amount))
94+ then true
95+ else (amount > epochBuybackInput))
96+ then throw(("Invalid amount: " + toString(amount)))
9497 else {
95- let swapInvoke = invoke(PuzzleAggregatorAddress, "swapWithReferral", [route, minToReceive, "puzzlenode"], [AttachedPayment(assetId, buybackInput)])
98+ let swapInvoke = invoke(PuzzleAggregatorAddress, "swapWithReferral", [route, minToReceive, "puzzlenode"], [AttachedPayment(assetId, amount)])
9699 if ((swapInvoke == swapInvoke))
97100 then {
98101 let boughtPuzzle = assetBalance(this, PuzzleId)
99102 if ((0 >= boughtPuzzle))
100103 then throw(((("Puzzle was not bought, asset: " + asset) + ", route: ") + route))
101104 else {
102105 let topUpInvoke = invoke(PuzzleStakingAddress, "topUpReward", nil, [AttachedPayment(PuzzleId, boughtPuzzle)])
103106 if ((topUpInvoke == topUpInvoke))
104107 then {
105108 let totalBoughtPuzzle = (valueOrElse(getInteger(this, TotalBoughtPuzzleKey), 0) + boughtPuzzle)
106- let statsKey = makeStatsKey(i, buybackInput, asset)
109+ let statsKey = makeStatsKey(i, amount, asset)
107110 [IntegerEntry(makeLastBuybackHeightKey(asset), Height), IntegerEntry(makeBuybackInputKey(asset, epochHeight), epochBuybackInput), IntegerEntry(statsKey, boughtPuzzle), IntegerEntry(TotalBoughtPuzzleKey, totalBoughtPuzzle)]
108111 }
109112 else throw("Strict value is not equal to itself.")
110113 }
111114 }
112115 else throw("Strict value is not equal to itself.")
113116 }
114117 }
115118 }
116119
117120
118121 @Verifier(tx)
119122 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
120123

github/deemru/w8io/3ef1775 
38.08 ms