tx · 67X1F6bteVmT41HWWBREGDpdSZ7VKX2x4oRbEXpVdkvb

3P6dr3R6kKCsiRd1ebPx8XM4r1qdmUyHAN8:  -0.01000000 Waves

2023.10.09 17:59 [3857100] smart account 3P6dr3R6kKCsiRd1ebPx8XM4r1qdmUyHAN8 > SELF 0.00000000 Waves

{ "type": 13, "id": "67X1F6bteVmT41HWWBREGDpdSZ7VKX2x4oRbEXpVdkvb", "fee": 1000000, "feeAssetId": null, "timestamp": 1696863624664, "version": 2, "chainId": 87, "sender": "3P6dr3R6kKCsiRd1ebPx8XM4r1qdmUyHAN8", "senderPublicKey": "vY1FCJzCg2SfN3TDjYuqm3CTqHZjo4mCfLxx8UcRQkK", "proofs": [ "2dH2hK98cEGzWAusGJqf6nTPWHTq5Xjds9y9VU4JguKpzyE5mK5VJ7Qx7E8U4MgxgerSGKP2HJYMzVfCoxBYPDVU" ], "script": "base64:BgIXCAISAwoBCBIGCgQIAQEIEgYKBAgBAQgVARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgACFHN0YXRpY19mZWVBZ2dyZWdhdG9yARRzdGF0aWNLZXlfZWdnQXNzZXRJZAACEXN0YXRpY19lZ2dBc3NldElkARdzdGF0aWNLZXlfYmFja2VuZFB1YktleQACFHN0YXRpY19iYWNrZW5kUHViS2V5ARxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAIZc3RhdGljX3JlZkNvbnRyYWN0QWRkcmVzcwEVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAISc3RhdGljX2J1cm5BZGRyZXNzARhzdGF0aWNLZXlfY291cG9uc0FkZHJlc3MAAhVzdGF0aWNfY291cG9uc0FkZHJlc3MBCGVnZ0lkS2V5AgVlZ2dJZAR1c2VyCQCsAgIJAKwCAgkArAICAgZlZ2dJZF8FBWVnZ0lkAgFfBQR1c2VyARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAAQx0cnlHZXRTdHJpbmcBA2tleQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgUEdGhpcwUDa2V5AQlnZXRPcmFjbGUACQEHQWRkcmVzcwEJANkEAQkBDHRyeUdldFN0cmluZwEJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwABDWdldEVnZ0Fzc2V0SWQACQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAARBnZXRCYWNrZW5kUHViS2V5AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQEJZ2V0T3JhY2xlAAkBF3N0YXRpY0tleV9iYWNrZW5kUHViS2V5AAEQZ2V0RmVlQWdncmVnYXRvcgAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAEVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwABDmdldEJ1cm5BZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAERZ2V0Q291cG9uc0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfY291cG9uc0FkZHJlc3MAAQ9nZXRCYWNrZW5kUHJvb2YDBWVnZ0lkBXByaWNlCGRpc3RhbmNlCQC5CQIJAMwIAgUFZWdnSWQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCGRpc3RhbmNlBQNuaWwCATsBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQCB3BheW1lbnQGYW1vdW50AwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhlSQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzAwkBAiE9AggFB3BheW1lbnQGYW1vdW50BQZhbW91bnQJAAIBCQCsAgIJAKwCAgIcUkNBUDogUGxlYXNlIGF0dGFjaCBleGFjdGx5IAkApAMBBQZhbW91bnQCEyBhbW91bnQgb2Ygd2F2ZWxldHMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEGdldEZlZUFnZ3JlZ2F0b3IABQZhbW91bnQFBHVuaXQFA25pbAEJYXNCb29sZWFuAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQHYm9vbGVhbgUHJG1hdGNoMAUHYm9vbGVhbgkAAgECIVRJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogQm9vbGVhbgEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIeRkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AwFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECD1JDTzogYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MABQZvcmFjbGUFA25pbAFpAQdidXlSb3BlBAVlZ2dJZAVwcmljZQhkaXN0YW5jZRBiYWNrZW5kU2lnbmF0dXJlBA1hZGRyZXNzU3RyaW5nCQClCAEIBQFpBmNhbGxlcgQMYmFja2VuZFByb29mCQEPZ2V0QmFja2VuZFByb29mAwUFZWdnSWQFBXByaWNlBQhkaXN0YW5jZQQGZXhpc3RzCQEMdHJ5R2V0U3RyaW5nAQkBCGVnZ0lkS2V5AgUFZWdnSWQJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAloYWxmUHJpY2UJAGkCBQVwcmljZQACBAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AgkAkQMCCAUBaQhwYXltZW50cwABBQVwcmljZQMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAMJAQEhAQkAxBMDCQCbAwEFDGJhY2tlbmRQcm9vZgkA2QQBBRBiYWNrZW5kU2lnbmF0dXJlCQEQZ2V0QmFja2VuZFB1YktleQAJAAIBAh9SQlI6IEludmFsaWQgcHJvb2YgZnJvbSBiYWNrZW5kAwkAZgIFCGRpc3RhbmNlAOgHCQACAQI0UkJSOiBZb3UgY2FuIG9ubHkgbWF4aW11bSBib29zdCAxMDAwbWV0ZXJzIGRpc3RhbmNlIQQJbGVmdFRvUGF5AwkAAAIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBBNhbW91bnRQYWlkQnlDb3Vwb25zCQEFYXNJbnQBCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACCnVzZUNvdXBvbnMJAMwIAgUJaGFsZlByaWNlBQNuaWwFA25pbAMJAAACBRNhbW91bnRQYWlkQnlDb3Vwb25zBRNhbW91bnRQYWlkQnlDb3Vwb25zCQBlAgUJaGFsZlByaWNlBRNhbW91bnRQYWlkQnlDb3Vwb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQloYWxmUHJpY2UEB3BheW1lbnQDCQECIT0CBQlsZWZ0VG9QYXkAAAQMZmlyc3RQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQJAQ1nZXRFZ2dBc3NldElkAAkAAgEJAKwCAgJBUkJSOiBZb3UgY2FuIGF0dGFjaCBvbmx5IEVHRyB0b2tlbnMgd2l0aCB0aGUgZm9sbG93aW5nIGFzc2V0IGlkOiAJANgEAQkBDWdldEVnZ0Fzc2V0SWQAAwkAZgIFCWxlZnRUb1BheQgFDGZpcnN0UGF5bWVudAZhbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAkdSQlI6IFRvIHJvcGUgYSBlZ2cgeW91IGN1cnJlbnRseSBuZWVkIHRoZSBmb2xsb3dpbmcgYW1vdW50IG9mIEVHR2xldHM6IAkApAMBBQlsZWZ0VG9QYXkCASAJAKUIAQgFAWkGY2FsbGVyBBVyZWZlcmVyUmV3YXJkRm9yYmVhY2gAAAQGdG9CdXJuBQlsZWZ0VG9QYXkECGJ1cm5DYWxsCQD8BwQJAQ5nZXRCdXJuQWRkcmVzcwACFGJ1cm5BdHRhY2hlZFBheW1lbnRzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRFZ2dBc3NldElkAAUGdG9CdXJuBQNuaWwDCQAAAgUIYnVybkNhbGwFCGJ1cm5DYWxsBQlsZWZ0VG9QYXkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAMJAAACBQdwYXltZW50BQdwYXltZW50BAZyZWZ1bmQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCWxlZnRUb1BheQkBDWdldEVnZ0Fzc2V0SWQABQNuaWwEDHJlY29yZEFjdGlvbgkA/AcECQERZ2V0Q291cG9uc0FkZHJlc3MAAgxyZWNvcmRBY3Rpb24JAMwIAgIEUk9QRQUDbmlsBQNuaWwDCQAAAgUMcmVjb3JkQWN0aW9uBQxyZWNvcmRBY3Rpb24DCQECIT0CBQZleGlzdHMCAAkAAgECN1JCUjogUm9wZSB3YXMgYWxyZWFkeSBib3VnaHQgZm9yIHRoaXMgZWdnIGJ5IHRoaXMgdXNlciEJAM4IAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQhlZ2dJZEtleQIFBWVnZ0lkCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkArAICCQCsAgIJAKQDAQUFcHJpY2UCATsJAKQDAQUIZGlzdGFuY2UFA25pbAUMdmFsaWRQYXltZW50BQZyZWZ1bmQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPYnV5Um9wZUludmVydGVkBAVlZ2dJZAVwcmljZQhkaXN0YW5jZRBiYWNrZW5kU2lnbmF0dXJlBA1hZGRyZXNzU3RyaW5nCQClCAEIBQFpBmNhbGxlcgQMYmFja2VuZFByb29mCQEPZ2V0QmFja2VuZFByb29mAwUFZWdnSWQFBXByaWNlBQhkaXN0YW5jZQQGZXhpc3RzCQEMdHJ5R2V0U3RyaW5nAQkBCGVnZ0lkS2V5AgUFZWdnSWQJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAloYWxmUHJpY2UJAGkCBQVwcmljZQACBAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AgkAkQMCCAUBaQhwYXltZW50cwAABQVwcmljZQMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAMJAQEhAQkAxBMDCQCbAwEFDGJhY2tlbmRQcm9vZgkA2QQBBRBiYWNrZW5kU2lnbmF0dXJlCQEQZ2V0QmFja2VuZFB1YktleQAJAAIBAh9SQlI6IEludmFsaWQgcHJvb2YgZnJvbSBiYWNrZW5kAwkAZgIFCGRpc3RhbmNlAOgHCQACAQI0UkJSOiBZb3UgY2FuIG9ubHkgbWF4aW11bSBib29zdCAxMDAwbWV0ZXJzIGRpc3RhbmNlIQQJbGVmdFRvUGF5AwkAAAIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBBNhbW91bnRQYWlkQnlDb3Vwb25zCQEFYXNJbnQBCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACCnVzZUNvdXBvbnMJAMwIAgUJaGFsZlByaWNlBQNuaWwFA25pbAMJAAACBRNhbW91bnRQYWlkQnlDb3Vwb25zBRNhbW91bnRQYWlkQnlDb3Vwb25zCQBlAgUJaGFsZlByaWNlBRNhbW91bnRQYWlkQnlDb3Vwb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQloYWxmUHJpY2UEBnJlZnVuZAMJAQIhPQIFCWxlZnRUb1BheQAABAxmaXJzdFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQMJAQIhPQIIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAkBDWdldEVnZ0Fzc2V0SWQACQACAQkArAICAkFSQlI6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRUdHIHRva2VucyB3aXRoIHRoZSBmb2xsb3dpbmcgYXNzZXQgaWQ6IAkA2AQBCQENZ2V0RWdnQXNzZXRJZAADCQBmAgUJbGVmdFRvUGF5CAUMZmlyc3RQYXltZW50BmFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICR1JCUjogVG8gcm9wZSBhIGVnZyB5b3UgY3VycmVudGx5IG5lZWQgdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHbGV0czogCQCkAwEFCWxlZnRUb1BheQIBIAkApQgBCAUBaQZjYWxsZXIEFXJlZmVyZXJSZXdhcmRGb3JiZWFjaAAABAZ0b0J1cm4FCWxlZnRUb1BheQQIYnVybkNhbGwJAPwHBAkBDmdldEJ1cm5BZGRyZXNzAAIUYnVybkF0dGFjaGVkUGF5bWVudHMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABQZ0b0J1cm4FA25pbAMJAAACBQhidXJuQ2FsbAUIYnVybkNhbGwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAggJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQFCWxlZnRUb1BheQkBDWdldEVnZ0Fzc2V0SWQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQZyZWZ1bmQFBnJlZnVuZAQMcmVjb3JkQWN0aW9uCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACDHJlY29yZEFjdGlvbgkAzAgCAgRST1BFBQNuaWwFA25pbAMJAAACBQxyZWNvcmRBY3Rpb24FDHJlY29yZEFjdGlvbgMJAQIhPQIFBmV4aXN0cwIACQACAQI3UkJSOiBSb3BlIHdhcyBhbHJlYWR5IGJvdWdodCBmb3IgdGhpcyBlZ2cgYnkgdGhpcyB1c2VyIQkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCGVnZ0lkS2V5AgUFZWdnSWQJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQCsAgIJAKwCAgkApAMBBQVwcmljZQIBOwkApAMBBQhkaXN0YW5jZQUDbmlsBQx2YWxpZFBheW1lbnQFBnJlZnVuZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAe6dXk", "height": 3857100, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BLWzfYAp25dmRKFzcvYiyqzhGd1z9qzC8PVBBWfP9k8b Next: BUBG9dQsFJJsoxSrf5A7PCYLrZ2JjV5fxNEWA9HKDofh Diff:
OldNewDifferences
166166 else throw("Strict value is not equal to itself.")
167167 }
168168 else halfPrice
169- let payment = if ((leftToPay != 0))
169+ let refund = if ((leftToPay != 0))
170170 then {
171171 let firstPayment = value(i.payments[1])
172172 if ((firstPayment.assetId != getEggAssetId()))
178178 let toBurn = leftToPay
179179 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
180180 if ((burnCall == burnCall))
181- then leftToPay
181+ then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
182182 else throw("Strict value is not equal to itself.")
183183 }
184184 }
185- else 0
186- if ((payment == payment))
185+ else nil
186+ if ((refund == refund))
187187 then {
188- let refund = [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
189188 let recordAction = invoke(getCouponsAddress(), "recordAction", ["ROPE"], nil)
190189 if ((recordAction == recordAction))
191190 then if ((exists != ""))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func staticKey_oracleAddress () = "static_oracleAddress"
55
66
77 func staticKey_feeAggregator () = "static_feeAggregator"
88
99
1010 func staticKey_eggAssetId () = "static_eggAssetId"
1111
1212
1313 func staticKey_backendPubKey () = "static_backendPubKey"
1414
1515
1616 func staticKey_refContractAddress () = "static_refContractAddress"
1717
1818
1919 func staticKey_burnAddress () = "static_burnAddress"
2020
2121
2222 func staticKey_couponsAddress () = "static_couponsAddress"
2323
2424
2525 func eggIdKey (eggId,user) = ((("eggId_" + eggId) + "_") + user)
2626
2727
2828 func tryGetStringExternal (address,key) = match getString(address, key) {
2929 case a: String =>
3030 a
3131 case _ =>
3232 ""
3333 }
3434
3535
3636 func tryGetString (key) = tryGetStringExternal(this, key)
3737
3838
3939 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
4040
4141
4242 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
4343
4444
4545 func getBackendPubKey () = fromBase58String(getStringValue(getOracle(), staticKey_backendPubKey()))
4646
4747
4848 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
4949
5050
5151 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
5252
5353
5454 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
5555
5656
5757 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
5858
5959
6060 func getBackendProof (eggId,price,distance) = makeString([eggId, toString(price), toString(distance)], ";")
6161
6262
6363 func checkAdditionalPayment (payment,amount) = if (isDefined(payment.assetId))
6464 then throw("RCAP: Please attach waves")
6565 else if ((payment.amount != amount))
6666 then throw((("RCAP: Please attach exactly " + toString(amount)) + " amount of wavelets"))
6767 else [ScriptTransfer(getFeeAggregator(), amount, unit)]
6868
6969
7070 func asBoolean (value) = match value {
7171 case boolean: Boolean =>
7272 boolean
7373 case _ =>
7474 throw("TI: wrong type, expected: Boolean")
7575 }
7676
7777
7878 func asInt (value) = match value {
7979 case int: Int =>
8080 int
8181 case _ =>
8282 throw("FAI: wrong type, expected: Int")
8383 }
8484
8585
8686 @Callable(i)
8787 func configureOracle (oracle) = if ((i.caller != this))
8888 then throw("RCO: admin only")
8989 else [StringEntry(staticKey_oracleAddress(), oracle)]
9090
9191
9292
9393 @Callable(i)
9494 func buyRope (eggId,price,distance,backendSignature) = {
9595 let addressString = toString(i.caller)
9696 let backendProof = getBackendProof(eggId, price, distance)
9797 let exists = tryGetString(eggIdKey(eggId, toString(i.originCaller)))
9898 let halfPrice = (price / 2)
9999 let validPayment = checkAdditionalPayment(i.payments[1], price)
100100 if ((validPayment == validPayment))
101101 then if (!(sigVerify_8Kb(toBytes(backendProof), fromBase58String(backendSignature), getBackendPubKey())))
102102 then throw("RBR: Invalid proof from backend")
103103 else if ((distance > 1000))
104104 then throw("RBR: You can only maximum boost 1000meters distance!")
105105 else {
106106 let leftToPay = if ((i.originCaller == i.caller))
107107 then {
108108 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [halfPrice], nil))
109109 if ((amountPaidByCoupons == amountPaidByCoupons))
110110 then (halfPrice - amountPaidByCoupons)
111111 else throw("Strict value is not equal to itself.")
112112 }
113113 else halfPrice
114114 let payment = if ((leftToPay != 0))
115115 then {
116116 let firstPayment = value(i.payments[0])
117117 if ((firstPayment.assetId != getEggAssetId()))
118118 then throw(("RBR: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
119119 else if ((leftToPay > firstPayment.amount))
120120 then throw(((("RBR: To rope a egg you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
121121 else {
122122 let refererRewardForbeach = 0
123123 let toBurn = leftToPay
124124 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
125125 if ((burnCall == burnCall))
126126 then leftToPay
127127 else throw("Strict value is not equal to itself.")
128128 }
129129 }
130130 else 0
131131 if ((payment == payment))
132132 then {
133133 let refund = [ScriptTransfer(i.caller, (i.payments[0].amount - leftToPay), getEggAssetId())]
134134 let recordAction = invoke(getCouponsAddress(), "recordAction", ["ROPE"], nil)
135135 if ((recordAction == recordAction))
136136 then if ((exists != ""))
137137 then throw("RBR: Rope was already bought for this egg by this user!")
138138 else (([StringEntry(eggIdKey(eggId, toString(i.originCaller)), ((toString(price) + ";") + toString(distance)))] ++ validPayment) ++ refund)
139139 else throw("Strict value is not equal to itself.")
140140 }
141141 else throw("Strict value is not equal to itself.")
142142 }
143143 else throw("Strict value is not equal to itself.")
144144 }
145145
146146
147147
148148 @Callable(i)
149149 func buyRopeInverted (eggId,price,distance,backendSignature) = {
150150 let addressString = toString(i.caller)
151151 let backendProof = getBackendProof(eggId, price, distance)
152152 let exists = tryGetString(eggIdKey(eggId, toString(i.originCaller)))
153153 let halfPrice = (price / 2)
154154 let validPayment = checkAdditionalPayment(i.payments[0], price)
155155 if ((validPayment == validPayment))
156156 then if (!(sigVerify_8Kb(toBytes(backendProof), fromBase58String(backendSignature), getBackendPubKey())))
157157 then throw("RBR: Invalid proof from backend")
158158 else if ((distance > 1000))
159159 then throw("RBR: You can only maximum boost 1000meters distance!")
160160 else {
161161 let leftToPay = if ((i.originCaller == i.caller))
162162 then {
163163 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [halfPrice], nil))
164164 if ((amountPaidByCoupons == amountPaidByCoupons))
165165 then (halfPrice - amountPaidByCoupons)
166166 else throw("Strict value is not equal to itself.")
167167 }
168168 else halfPrice
169- let payment = if ((leftToPay != 0))
169+ let refund = if ((leftToPay != 0))
170170 then {
171171 let firstPayment = value(i.payments[1])
172172 if ((firstPayment.assetId != getEggAssetId()))
173173 then throw(("RBR: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
174174 else if ((leftToPay > firstPayment.amount))
175175 then throw(((("RBR: To rope a egg you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
176176 else {
177177 let refererRewardForbeach = 0
178178 let toBurn = leftToPay
179179 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
180180 if ((burnCall == burnCall))
181- then leftToPay
181+ then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
182182 else throw("Strict value is not equal to itself.")
183183 }
184184 }
185- else 0
186- if ((payment == payment))
185+ else nil
186+ if ((refund == refund))
187187 then {
188- let refund = [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
189188 let recordAction = invoke(getCouponsAddress(), "recordAction", ["ROPE"], nil)
190189 if ((recordAction == recordAction))
191190 then if ((exists != ""))
192191 then throw("RBR: Rope was already bought for this egg by this user!")
193192 else (([StringEntry(eggIdKey(eggId, toString(i.originCaller)), ((toString(price) + ";") + toString(distance)))] ++ validPayment) ++ refund)
194193 else throw("Strict value is not equal to itself.")
195194 }
196195 else throw("Strict value is not equal to itself.")
197196 }
198197 else throw("Strict value is not equal to itself.")
199198 }
200199
201200

github/deemru/w8io/3ef1775 
146.72 ms