2023.04.29 15:53 [3621462] smart account 3P8prjYwq9dxRqPiyYAjQpAnuei6eTAerSV > SELF 0.00000000 Waves

{ "type": 13, "id": "BGuSQQyzJsLQo7cqYn6JHSrHq3dhs5QenJ2jHHK2o8r2", "fee": 1000000, "feeAssetId": null, "timestamp": 1682772812536, "version": 2, "chainId": 87, "sender": "3P8prjYwq9dxRqPiyYAjQpAnuei6eTAerSV", "senderPublicKey": "AMyLj8njybNRT5DAz3WKHgzDpgXocT1ojBUcFthRiH6i", "proofs": [ "5RpTn5yrtFqdEiPGDJyXDN1ia448emcsUcA9U9gEWH2XbrbPYnAx7fUMXsgv9x2ZJsYQtn7Co4KSVKMu8ouhPPXo" ], "script": "base64:BgIdCAISAwoBCBIDCgEBEgQKAgEBEgMKAQESBAoCCAEXAAliYXNlUHJpY2UAgIl6AAhpbmNyZWFzZQABABBpbmNyZWFzZURlY2ltYWxzAAMBD2R1Y2tDYXBhY2l0eUtleQEGZHVja0lkCQCsAgICD2FkZGVkX2NhcGFjaXR5XwUGZHVja0lkARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAAQx0cnlHZXRTdHJpbmcBA2tleQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgUEdGhpcwUDa2V5AQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAhl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50ARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARJzdGF0aWNLZXlfZXh0cmFGZWUAAg9zdGF0aWNfZXh0cmFGZWUBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwACFXN0YXRpY19icmVlZGVyQWRkcmVzcwEVc3RhdGljS2V5X2h1bnRBZGRyZXNzAAISc3RhdGljX2h1bnRBZGRyZXNzARRzdGF0aWNLZXlfZWdnQXNzZXRJZAACEXN0YXRpY19lZ2dBc3NldElkARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgACFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQlnZXRPcmFjbGUACQEHQWRkcmVzcwEJANkEAQkBDHRyeUdldFN0cmluZwEJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwABDWdldEVnZ0Fzc2V0SWQACQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAQ9nZXREdWNrQ2FwYWNpdHkBBmR1Y2tJZAkBDXRyeUdldEludGVnZXIBCQEPZHVja0NhcGFjaXR5S2V5AQUGZHVja0lkARFnZXRCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwABDmdldEh1bnRBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEVc3RhdGljS2V5X2h1bnRBZGRyZXNzAAEQZ2V0RmVlQWdncmVnYXRvcgAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAEMa2V5RHVja093bmVyAQdhc3NldElkCQCsAgIJAKwCAgIFZHVja18FB2Fzc2V0SWQCBl9vd25lcgEGY29tbW9uAwVuZnRJZAdwYXltZW50DWFkZGVkQ2FwYWNpdHkECGNoaWxkcmVuCQEFYXNJbnQBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACFnZhbGlkYXRlQW5kR2V0Q2hpbGRyZW4JAMwIAgUFbmZ0SWQFA25pbAUDbmlsAwkAAAIFCGNoaWxkcmVuBQhjaGlsZHJlbgQKZWdnUGF5bWVudAkBBXZhbHVlAQUHcGF5bWVudAQIY2FwYWNpdHkJAQ9nZXREdWNrQ2FwYWNpdHkBBQVuZnRJZAQNdG90YWxDYXBhY2l0eQkAZAIFCGNhcGFjaXR5BQ1hZGRlZENhcGFjaXR5BARkaWZmCQEFYXNJbnQBCQD8BwQFBHRoaXMCEWNhbGN1bGF0ZURpZmZFZ2dzCQDMCAIFCGNhcGFjaXR5CQDMCAIFDXRvdGFsQ2FwYWNpdHkFA25pbAUDbmlsAwkAAAIFBGRpZmYFBGRpZmYEBmFtb3VudAgFCmVnZ1BheW1lbnQGYW1vdW50AwkBAiE9AggFCmVnZ1BheW1lbnQHYXNzZXRJZAkBDWdldEVnZ0Fzc2V0SWQACQACAQkArAICAkFDQlI6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRUdHIHRva2VucyB3aXRoIHRoZSBmb2xsb3dpbmcgYXNzZXQgaWQ6IAkA2AQBCQENZ2V0RWdnQXNzZXRJZAADCQECIT0CBQZhbW91bnQFBGRpZmYJAAIBCQCsAgICKUNCUjogUGxlYXNlIGF0dGFjaCB0aGUgZXhhY3QgYXNzZXQgYW1vdW50CQCkAwEFBGRpZmYEBWRlYnVnCQC5CQIJAMwIAgkArAICAgxvbGRDYXBhY2l0eT0JAKQDAQUIY2FwYWNpdHkJAMwIAgkArAICAgxuZXdDYXBhY2l0eT0JAKQDAQUNdG90YWxDYXBhY2l0eQkAzAgCCQCsAgICDWRpZmZDYXBhY2l0eT0JAKQDAQUNYWRkZWRDYXBhY2l0eQkAzAgCCQCsAgICCWRpZmZQYWlkPQkApAMBBQRkaWZmBQNuaWwCATsJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9kdWNrQ2FwYWNpdHlLZXkBBQVuZnRJZAUNdG90YWxDYXBhY2l0eQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkBD2R1Y2tDYXBhY2l0eUtleQEFBW5mdElkAgdfZGVidWdfCQCkAwEFBmhlaWdodAUFZGVidWcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEHcGF5bWVudAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIZQ0NBUDogUGxlYXNlIGF0dGFjaCB3YXZlcwQJZmVlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEJZ2V0T3JhY2xlAAkBEnN0YXRpY0tleV9leHRyYUZlZQADCQECIT0CCAUHcGF5bWVudAZhbW91bnQFCWZlZUFtb3VudAkAAgEJAKwCAgkArAICAhxDQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQCkAwEFCWZlZUFtb3VudAITIGFtb3VudCBvZiB3YXZlbGV0cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEQZ2V0RmVlQWdncmVnYXRvcgAFCWZlZUFtb3VudAUEdW5pdAUDbmlsBQFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECD0NDTzogYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MABQZvcmFjbGUFA25pbAFpARdjYWxjdWxhdGVUb3RhbFByaWNlRWdncwEEZWdncwQHcG93UGFydAkAZQIJAGwGCQBkAgDoBwUIaW5jcmVhc2UFEGluY3JlYXNlRGVjaW1hbHMJAGQCBQRlZ2dzAAEAAAAIBQZIQUxGVVAAgMLXLwQFcHJpY2UJAGkCCQBpAgkAaAIFCWJhc2VQcmljZQUHcG93UGFydAUIaW5jcmVhc2UAoI0GCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIWUFJJQ0VfQ0FMQ1VMQVRJT05fUE9XXwkApAMBBQRlZ2dzBQdwb3dQYXJ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICElBSSUNFX0NBTENVTEFUSU9OXwkApAMBBQRlZ2dzBQVwcmljZQUDbmlsBQVwcmljZQFpARFjYWxjdWxhdGVEaWZmRWdncwIHb2xkRWdncwduZXdFZ2dzBAthbHJlYWR5UGFpZAkBBWFzSW50AQkA/AcEBQR0aGlzAhdjYWxjdWxhdGVUb3RhbFByaWNlRWdncwkAzAgCBQdvbGRFZ2dzBQNuaWwFA25pbAMJAAACBQthbHJlYWR5UGFpZAULYWxyZWFkeVBhaWQECnRvdGFsVG9QYXkJAQVhc0ludAEJAPwHBAUEdGhpcwIXY2FsY3VsYXRlVG90YWxQcmljZUVnZ3MJAMwIAgUHbmV3RWdncwUDbmlsBQNuaWwDCQAAAgUKdG90YWxUb1BheQUKdG90YWxUb1BheQQEZGlmZgkAZQIFCnRvdGFsVG9QYXkFC2FscmVhZHlQYWlkBAVkZWJ1ZwkAuQkCCQDMCAIJAKwCAgIIb2xkUGFpZD0JAKQDAQULYWxyZWFkeVBhaWQJAMwIAgkArAICAghuZXdQYWlkPQkApAMBBQp0b3RhbFRvUGF5BQNuaWwCATsJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCAhJERUJVR19DQUxDVUxBVElPTlMFBWRlYnVnBQNuaWwFBGRpZmYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERYWRkQ2FwYWNpdHlUb0R1Y2sBDWFkZGVkQ2FwYWNpdHkECm5mdFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQMdmFsaWRQYXltZW50CQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAQQLZHVja0Fzc2V0SWQJANgEAQkBBXZhbHVlAQgFCm5mdFBheW1lbnQHYXNzZXRJZAMJAQIhPQIIBQpuZnRQYXltZW50BmFtb3VudAABCQACAQITTkZUIGlzIG5vdCBhdHRhY2hlZAkAzggCCQDOCAIJAQZjb21tb24DBQtkdWNrQXNzZXRJZAkAkQMCCAUBaQhwYXltZW50cwABBQ1hZGRlZENhcGFjaXR5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQEFdmFsdWUBCAUKbmZ0UGF5bWVudAdhc3NldElkBQNuaWwFDHZhbGlkUGF5bWVudAFpARdhZGRDYXBhY2l0eVRvRHVja0luSHVudAIFbmZ0SWQNYWRkZWRDYXBhY2l0eQQLb3duZXJJbkh1bnQJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQ5nZXRIdW50QWRkcmVzcwAJAQxrZXlEdWNrT3duZXIBBQVuZnRJZAQMdmFsaWRQYXltZW50CQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAQMJAQIhPQIFC293bmVySW5IdW50CQClCAEIBQFpBmNhbGxlcgkAAgECLENCUjogWW91IGNhbiBvbmx5IGFkZCBjYXBhY2l0eSB0byBvd24gZHVja3MhCQDOCAIJAQZjb21tb24DBQVuZnRJZAkAkQMCCAUBaQhwYXltZW50cwAABQ1hZGRlZENhcGFjaXR5BQx2YWxpZFBheW1lbnQAPRVWdA==", "height": 3621462, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DQJrsU59Uxn7wM9hq5EAzDbswsAW3LEjvcNeDCCiagaM Next: A8gT881kzXP7u2zoSzjL8XrmLirbGnQTfuyQY9AE9Ar Diff:
OldNewDifferences
3737 }
3838
3939
40-func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
40+func staticKey_oracleAddress () = "static_oracleAddress"
4141
4242
43-func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
43+func staticKey_extraFee () = "static_extraFee"
44+
45+
46+func staticKey_breederAddress () = "static_breederAddress"
47+
48+
49+func staticKey_huntAddress () = "static_huntAddress"
50+
51+
52+func staticKey_eggAssetId () = "static_eggAssetId"
53+
54+
55+func staticKey_feeAggregator () = "static_feeAggregator"
56+
57+
58+func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
59+
60+
61+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
4462
4563
4664 func getDuckCapacity (duckId) = tryGetInteger(duckCapacityKey(duckId))
4765
4866
49-func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
67+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
5068
5169
52-func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_huntAddress")))
70+func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
71+
72+
73+func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
5374
5475
5576 func keyDuckOwner (assetId) = (("duck_" + assetId) + "_owner")
81102 }
82103
83104
105+func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
106+ then throw("CCAP: Please attach waves")
107+ else {
108+ let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
109+ if ((payment.amount != feeAmount))
110+ then throw((("CCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
111+ else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
112+ }
113+
114+
84115 @Callable(i)
85116 func configureOracle (oracle) = if ((i.caller != this))
86117 then throw("CCO: admin only")
87- else [StringEntry("static_oracleAddress", oracle)]
118+ else [StringEntry(staticKey_oracleAddress(), oracle)]
88119
89120
90121
119150 @Callable(i)
120151 func addCapacityToDuck (addedCapacity) = {
121152 let nftPayment = value(i.payments[0])
153+ let validPayment = checkAdditionalPayment(i.payments[1])
122154 let duckAssetId = toBase58String(value(nftPayment.assetId))
123155 if ((nftPayment.amount != 1))
124156 then throw("NFT is not attached")
125- else (common(duckAssetId, i.payments[1], addedCapacity) ++ [ScriptTransfer(i.caller, 1, value(nftPayment.assetId))])
157+ else ((common(duckAssetId, i.payments[1], addedCapacity) ++ [ScriptTransfer(i.caller, 1, value(nftPayment.assetId))]) ++ validPayment)
126158 }
127159
128160
130162 @Callable(i)
131163 func addCapacityToDuckInHunt (nftId,addedCapacity) = {
132164 let ownerInHunt = tryGetStringExternal(getHuntAddress(), keyDuckOwner(nftId))
165+ let validPayment = checkAdditionalPayment(i.payments[1])
133166 if ((ownerInHunt != toString(i.caller)))
134167 then throw("CBR: You can only add capacity to own ducks!")
135- else common(nftId, i.payments[0], addedCapacity)
168+ else (common(nftId, i.payments[0], addedCapacity) ++ validPayment)
136169 }
137170
138171
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let basePrice = 2000000
55
66 let increase = 1
77
88 let increaseDecimals = 3
99
1010 func duckCapacityKey (duckId) = ("added_capacity_" + duckId)
1111
1212
1313 func tryGetStringExternal (address,key) = match getString(address, key) {
1414 case a: String =>
1515 a
1616 case _ =>
1717 ""
1818 }
1919
2020
2121 func tryGetString (key) = tryGetStringExternal(this, key)
2222
2323
2424 func tryGetInteger (key) = match getInteger(this, key) {
2525 case b: Int =>
2626 b
2727 case _ =>
2828 0
2929 }
3030
3131
3232 func asInt (value) = match value {
3333 case int: Int =>
3434 int
3535 case _ =>
3636 throw("wrong type, expected: Int")
3737 }
3838
3939
40-func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
40+func staticKey_oracleAddress () = "static_oracleAddress"
4141
4242
43-func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
43+func staticKey_extraFee () = "static_extraFee"
44+
45+
46+func staticKey_breederAddress () = "static_breederAddress"
47+
48+
49+func staticKey_huntAddress () = "static_huntAddress"
50+
51+
52+func staticKey_eggAssetId () = "static_eggAssetId"
53+
54+
55+func staticKey_feeAggregator () = "static_feeAggregator"
56+
57+
58+func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
59+
60+
61+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
4462
4563
4664 func getDuckCapacity (duckId) = tryGetInteger(duckCapacityKey(duckId))
4765
4866
49-func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
67+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
5068
5169
52-func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_huntAddress")))
70+func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
71+
72+
73+func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
5374
5475
5576 func keyDuckOwner (assetId) = (("duck_" + assetId) + "_owner")
5677
5778
5879 func common (nftId,payment,addedCapacity) = {
5980 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [nftId], nil))
6081 if ((children == children))
6182 then {
6283 let eggPayment = value(payment)
6384 let capacity = getDuckCapacity(nftId)
6485 let totalCapacity = (capacity + addedCapacity)
6586 let diff = asInt(invoke(this, "calculateDiffEggs", [capacity, totalCapacity], nil))
6687 if ((diff == diff))
6788 then {
6889 let amount = eggPayment.amount
6990 if ((eggPayment.assetId != getEggAssetId()))
7091 then throw(("CBR: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
7192 else if ((amount != diff))
7293 then throw(("CBR: Please attach the exact asset amount" + toString(diff)))
7394 else {
7495 let debug = makeString([("oldCapacity=" + toString(capacity)), ("newCapacity=" + toString(totalCapacity)), ("diffCapacity=" + toString(addedCapacity)), ("diffPaid=" + toString(diff))], ";")
7596 [IntegerEntry(duckCapacityKey(nftId), totalCapacity), StringEntry(((duckCapacityKey(nftId) + "_debug_") + toString(height)), debug)]
7697 }
7798 }
7899 else throw("Strict value is not equal to itself.")
79100 }
80101 else throw("Strict value is not equal to itself.")
81102 }
82103
83104
105+func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
106+ then throw("CCAP: Please attach waves")
107+ else {
108+ let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
109+ if ((payment.amount != feeAmount))
110+ then throw((("CCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
111+ else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
112+ }
113+
114+
84115 @Callable(i)
85116 func configureOracle (oracle) = if ((i.caller != this))
86117 then throw("CCO: admin only")
87- else [StringEntry("static_oracleAddress", oracle)]
118+ else [StringEntry(staticKey_oracleAddress(), oracle)]
88119
89120
90121
91122 @Callable(i)
92123 func calculateTotalPriceEggs (eggs) = {
93124 let powPart = (pow((1000 + increase), increaseDecimals, (eggs + 1), 0, 8, HALFUP) - 100000000)
94125 let price = (((basePrice * powPart) / increase) / 100000)
95126 $Tuple2([IntegerEntry(("PRICE_CALCULATION_POW_" + toString(eggs)), powPart), IntegerEntry(("PRICE_CALCULATION_" + toString(eggs)), price)], price)
96127 }
97128
98129
99130
100131 @Callable(i)
101132 func calculateDiffEggs (oldEggs,newEggs) = {
102133 let alreadyPaid = asInt(invoke(this, "calculateTotalPriceEggs", [oldEggs], nil))
103134 if ((alreadyPaid == alreadyPaid))
104135 then {
105136 let totalToPay = asInt(invoke(this, "calculateTotalPriceEggs", [newEggs], nil))
106137 if ((totalToPay == totalToPay))
107138 then {
108139 let diff = (totalToPay - alreadyPaid)
109140 let debug = makeString([("oldPaid=" + toString(alreadyPaid)), ("newPaid=" + toString(totalToPay))], ";")
110141 $Tuple2([StringEntry("DEBUG_CALCULATIONS", debug)], diff)
111142 }
112143 else throw("Strict value is not equal to itself.")
113144 }
114145 else throw("Strict value is not equal to itself.")
115146 }
116147
117148
118149
119150 @Callable(i)
120151 func addCapacityToDuck (addedCapacity) = {
121152 let nftPayment = value(i.payments[0])
153+ let validPayment = checkAdditionalPayment(i.payments[1])
122154 let duckAssetId = toBase58String(value(nftPayment.assetId))
123155 if ((nftPayment.amount != 1))
124156 then throw("NFT is not attached")
125- else (common(duckAssetId, i.payments[1], addedCapacity) ++ [ScriptTransfer(i.caller, 1, value(nftPayment.assetId))])
157+ else ((common(duckAssetId, i.payments[1], addedCapacity) ++ [ScriptTransfer(i.caller, 1, value(nftPayment.assetId))]) ++ validPayment)
126158 }
127159
128160
129161
130162 @Callable(i)
131163 func addCapacityToDuckInHunt (nftId,addedCapacity) = {
132164 let ownerInHunt = tryGetStringExternal(getHuntAddress(), keyDuckOwner(nftId))
165+ let validPayment = checkAdditionalPayment(i.payments[1])
133166 if ((ownerInHunt != toString(i.caller)))
134167 then throw("CBR: You can only add capacity to own ducks!")
135- else common(nftId, i.payments[0], addedCapacity)
168+ else (common(nftId, i.payments[0], addedCapacity) ++ validPayment)
136169 }
137170
138171

github/deemru/w8io/786bc32 
41.20 ms