tx · DqEhLXfa2hbuPEHSKvXVwKTa6R44YWTTAymcfmUwjbR5

3P3Gtbq2raMqBkks8tr6sTZH9uHCoVTBfQ8:  -0.01300000 Waves

2024.04.11 15:15 [4124059] smart account 3P3Gtbq2raMqBkks8tr6sTZH9uHCoVTBfQ8 > SELF 0.00000000 Waves

{ "type": 13, "id": "DqEhLXfa2hbuPEHSKvXVwKTa6R44YWTTAymcfmUwjbR5", "fee": 1300000, "feeAssetId": null, "timestamp": 1712837726660, "version": 2, "chainId": 87, "sender": "3P3Gtbq2raMqBkks8tr6sTZH9uHCoVTBfQ8", "senderPublicKey": "CkiAJpjzQxQJbusEaNya9oR4qzmVyLBpnuByUDshzsrP", "proofs": [ "3QiCSbKojJQsKMzAsTeQ5hZ5VvuEtUEsX3EjhZiAgA2YpvZmCbaXa8JXmTj8gpG2kD756gt1WGrTehuFSsrKgWac" ], "script": "base64:BgI8CAISAwoBCBIGCgQICAgIEgMKAQgSABIAEgMKAQgSABIDCgEIEgMKAQgSBAoCCAgSAwoBCBIGCgQIAQQIOAENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEVa2V5RHVja1BsYXlVbmxvY2tUaW1lAQdhc3NldElkCQCsAgIJAKwCAgIFZHVja18JANgEAQUHYXNzZXRJZAILX3VubG9ja1RpbWUBF2tleUR1Y2tGaW5pc2hVbmxvY2tUaW1lAQdhc3NldElkCQCsAgIJAKwCAgIFZHVja18JANgEAQUHYXNzZXRJZAIRZmluaXNoX3VubG9ja1RpbWUBDGtleUR1Y2tPd25lcgEHYXNzZXRJZAkArAICCQCsAgICBWR1Y2tfCQDYBAEFB2Fzc2V0SWQCBl9vd25lcgEOa2V5U3BvdHNCb3VnaHQBCmFkZHJlc3NTdHIJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIMX3Nwb3RzQm91Z2h0AQxrZXlTcG90c0J1c3kBCmFkZHJlc3NTdHIJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIKX3Nwb3RzQnVzeQETa2V5TG9ja2VkRHVja1N0YXR1cwIKYWRkcmVzc1N0cgphc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgxfbG9ja2VkRHVja18FCmFzc2V0SWRTdHICB19zdGF0dXMBCWtleUR1Y2tWMgIKYWRkcmVzc1N0cgphc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgxfbG9ja2VkRHVja18FCmFzc2V0SWRTdHICA192MgEOZ2V0RHVja0RldGFpbHMBB2Fzc2V0SWQECWFzc2V0TmFtZQkBBXZhbHVlAQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBA5hc3NldE5hbWVQYXJ0cwkAtQkCBQlhc3NldE5hbWUCAAQJaXNKYWNrcG90CQAAAgkAkQMCBQ5hc3NldE5hbWVQYXJ0cwkAZQIJAJADAQUOYXNzZXROYW1lUGFydHMAAgIBSgQKYXNzZXRDb2xvcgMFCWlzSmFja3BvdAIBQgkAkQMCBQ5hc3NldE5hbWVQYXJ0cwkAZQIJAJADAQUOYXNzZXROYW1lUGFydHMAAQkAlAoCBQphc3NldENvbG9yBQlpc0phY2twb3QBFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABDXRyeUdldEJvb2xlYW4BA2tleQQHJG1hdGNoMAkAoAgBBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBDHRyeUdldFN0cmluZwEDa2V5CQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQR0aGlzBQNrZXkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAIUc3RhdGljX29yYWNsZUFkZHJlc3MBFHN0YXRpY0tleV9lZ2dBc3NldElkAAIRc3RhdGljX2VnZ0Fzc2V0SWQBGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAIXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwACFXN0YXRpY19icmVlZGVyQWRkcmVzcwEYc3RhdGljS2V5X2Zhcm1pbmdBZGRyZXNzAAIVc3RhdGljX2Zhcm1pbmdBZGRyZXNzARhzdGF0aWNLZXlfcmVudGluZ0FkZHJlc3MAAhVzdGF0aWNfcmVudGluZ0FkZHJlc3MBF3N0YXRpY0tleV9zaG9ydEdhbWVOYW1lAAIUc3RhdGljX3Nob3J0R2FtZU5hbWUBFnN0YXRpY0tleV9sb25nR2FtZU5hbWUAAhNzdGF0aWNfbG9uZ0dhbWVOYW1lARFzdGF0aWNLZXlfbmZ0TmFtZQACDnN0YXRpY19uZnROYW1lARdzdGF0aWNLZXlfYmFja2VuZFB1YktleQACFHN0YXRpY19iYWNrZW5kUHViS2V5ARtzdGF0aWNLZXlfYWNjZXNzSXRlbUFzc2V0SWQAAhhzdGF0aWNfYWNjZXNzSXRlbUFzc2V0SWQBGXN0YXRpY0tleV9hY2Nlc3NJdGVtUHJpY2UAAhZzdGF0aWNfYWNjZXNzSXRlbVByaWNlARlzdGF0aWNLZXlfbWluTG9ja0R1cmF0aW9uAAIWc3RhdGljX21pbkxvY2tEdXJhdGlvbgEYc3RhdGljS2V5X1VubG9ja0R1cmF0aW9uAAIVc3RhdGljX1VubG9ja0R1cmF0aW9uARtzdGF0aWNLZXlfYm9vc3RlckJ1eUFzc2V0SWQAAhhzdGF0aWNfYm9vc3RlckJ1eUFzc2V0SWQBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAhRzdGF0aWNfZmVlQWdncmVnYXRvcgEbc3RhdGljS2V5X2Jvb3N0ZXJQcmljZUxldmVsAQVsZXZlbAkArAICAhlzdGF0aWNfYm9vc3RlclByaWNlTGV2ZWxfBQVsZXZlbAEVc3RhdGljS2V5X2Jvb3N0ZXJOYW1lAQVsZXZlbAkArAICAhNzdGF0aWNfYm9vc3Rlck5hbWVfBQVsZXZlbAEVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAISc3RhdGljX2J1cm5BZGRyZXNzAQlnZXRPcmFjbGUACQEHQWRkcmVzcwEJANkEAQkBDHRyeUdldFN0cmluZwEJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwABC2dldEdhbWVOYW1lAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARdzdGF0aWNLZXlfc2hvcnRHYW1lTmFtZQACJDNHR046IFRoZXJlIGlzIG5vIGdhbWUgbmFtZSBkZWZpbmVkIQEPZ2V0TG9uZ0dhbWVOYW1lAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARZzdGF0aWNLZXlfbG9uZ0dhbWVOYW1lAAIqM0dMR046IFRoZXJlIGlzIG5vIGxvbmcgZ2FtZSBuYW1lIGRlZmluZWQhAQpnZXRORlROYW1lAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARFzdGF0aWNLZXlfbmZ0TmFtZQACIzNHTk46IFRoZXJlIGlzIG5vIG5mdCBuYW1lIGRlZmluZWQhARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEac3RhdGljS2V5X2luY3ViYXRvckFkZHJlc3MAARFnZXRCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwABEWdldFJlbnRpbmdBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X3JlbnRpbmdBZGRyZXNzAAERZ2V0RmFybWluZ0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAQ1nZXRFZ2dBc3NldElkAAkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFHN0YXRpY0tleV9lZ2dBc3NldElkAAEQZ2V0QmFja2VuZFB1YktleQAJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARdzdGF0aWNLZXlfYmFja2VuZFB1YktleQABEGdldEZlZUFnZ3JlZ2F0b3IACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgABDmdldEJ1cm5BZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAEUZ2V0QWNjZXNzSXRlbUFzc2V0SWQACQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEbc3RhdGljS2V5X2FjY2Vzc0l0ZW1Bc3NldElkAAESZ2V0QWNjZXNzSXRlbVByaWNlAAkBDXRyeUdldEludGVnZXIBCQEZc3RhdGljS2V5X2FjY2Vzc0l0ZW1QcmljZQABEmdldE1pbkxvY2tEdXJhdGlvbgAJAQ10cnlHZXRJbnRlZ2VyAQkBGXN0YXRpY0tleV9taW5Mb2NrRHVyYXRpb24AARFnZXRVbmxvY2tEdXJhdGlvbgAJAQ10cnlHZXRJbnRlZ2VyAQkBGHN0YXRpY0tleV9VbmxvY2tEdXJhdGlvbgABE2dldEJvc3RlckJ1eUFzc2V0SWQACQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEbc3RhdGljS2V5X2Jvb3N0ZXJCdXlBc3NldElkAAEWZ2V0Qm9zdGVyUHJpY2VGb3JMZXZlbAEFbGV2ZWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEbc3RhdGljS2V5X2Jvb3N0ZXJQcmljZUxldmVsAQkApAMBBQVsZXZlbAI5M0dCUEZMOiBUaGVyZSBpcyBubyBwcmljZSB2YWx1ZSBmb3IgdGhpcyBsZXZlbCBvZiBib29zdGVyARVnZXRCb3N0ZXJOYW1lRm9yTGV2ZWwBBWxldmVsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFXN0YXRpY0tleV9ib29zdGVyTmFtZQEJAKQDAQUFbGV2ZWwCIDNHQk5GTDogVGhlcmUgaXMgbm8gc3VjaCBib29zdGVyARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQdwYXltZW50AwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhlSQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAlmZWVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHFJDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwBCGFzU3RyaW5nAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAFBnN0cmluZwkAAgECITNBUzogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEQbG9ja0R1Y2tJbnRlcm5hbAMKYWRkcmVzc1N0cg10YWtlU3BvdHNGcm9tA3BtdAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAthc3NldElzc3VlcggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIEDHREdWNrRGV0YWlscwkBDmdldER1Y2tEZXRhaWxzAQUHYXNzZXRJZAQKYXNzZXRDb2xvcggFDHREdWNrRGV0YWlscwJfMQQJaXNKYWNrcG90CAUMdER1Y2tEZXRhaWxzAl8yBAprU3BvdHNCdXN5CQEMa2V5U3BvdHNCdXN5AQUNdGFrZVNwb3RzRnJvbQQJc3BvdHNCdXN5CQENdHJ5R2V0SW50ZWdlcgEFCmtTcG90c0J1c3kEDGtTcG90c0JvdWdodAkBDmtleVNwb3RzQm91Z2h0AQUNdGFrZVNwb3RzRnJvbQQVYWRkcmVzc1Nwb3RzQXZhaWxhYmxlCQBlAgkBDXRyeUdldEludGVnZXIBBQxrU3BvdHNCb3VnaHQFCXNwb3RzQnVzeQMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBAhNORlQgaXMgbm90IGF0dGFjaGVkAwMJAQIhPQIFC2Fzc2V0SXNzdWVyCQETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJAQIhPQIFC2Fzc2V0SXNzdWVyCQERZ2V0QnJlZWRlckFkZHJlc3MABwkAAgECE2l2YWxpZCBORlQgYXR0YWNoZWQDCQBnAgAABRVhZGRyZXNzU3BvdHNBdmFpbGFibGUJAAIBCQCsAgICIE5vIHNwb3RzIGF2YWlsYWJsZSBpbiBodW50IGZvcjogBQ10YWtlU3BvdHNGcm9tBBFrUGVyY2hlc0F2YWlsYWJsZQkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18JAKUIAQUEdGhpcwISX3BlcmNoZXNBdmFpbGFibGVfBQphc3NldENvbG9yBBBwZXJjaGVzQXZhaWxhYmxlBAckbWF0Y2gwCQCaCAIJARFnZXRGYXJtaW5nQWRkcmVzcwAFEWtQZXJjaGVzQXZhaWxhYmxlAwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAwkAAAIFEHBlcmNoZXNBdmFpbGFibGUFEHBlcmNoZXNBdmFpbGFibGUECmVnZ0Fzc2V0SWQJAQ1nZXRFZ2dBc3NldElkAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUKa1Nwb3RzQnVzeQkAZAIFCXNwb3RzQnVzeQABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrT3duZXIBBQdhc3NldElkBQphZGRyZXNzU3RyCQDMCAIJAQxCb29sZWFuRW50cnkCCQETa2V5TG9ja2VkRHVja1N0YXR1cwIFCmFkZHJlc3NTdHIJANgEAQUHYXNzZXRJZAYJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlEdWNrUGxheVVubG9ja1RpbWUBBQdhc3NldElkCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAJARJnZXRNaW5Mb2NrRHVyYXRpb24ACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5RHVja1YyAgUKYWRkcmVzc1N0cgkA2AQBBQdhc3NldElkBgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5pbml0VW5sb2NrRHVjawIKYXNzZXRJZFN0cgphZGRyZXNzU3RyBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEDHREdWNrRGV0YWlscwkBDmdldER1Y2tEZXRhaWxzAQUHYXNzZXRJZAQKYXNzZXRDb2xvcggFDHREdWNrRGV0YWlscwJfMQQJaXNKYWNrcG90CAUMdER1Y2tEZXRhaWxzAl8yBAprU3BvdHNCdXN5CQEMa2V5U3BvdHNCdXN5AQUKYWRkcmVzc1N0cgQKa0R1Y2tPd25lcgkBDGtleUR1Y2tPd25lcgEFB2Fzc2V0SWQEEnJlbWFpbmluZ0ZvclVubG9jawkAZQIJAQ10cnlHZXRJbnRlZ2VyAQkBFWtleUR1Y2tQbGF5VW5sb2NrVGltZQEFB2Fzc2V0SWQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkBDHRyeUdldFN0cmluZwEFCmtEdWNrT3duZXIFCmFkZHJlc3NTdHIJAAIBAhwzSVVMRDogVGhlIGR1Y2sgaXMgbm90IHlvdXJzAwkAZgIFEnJlbWFpbmluZ0ZvclVubG9jawAACQACAQkArAICCQCsAgICITNJVUw6IFlvdSBuZWVkIHRvIHdhaXQgdG8gdW5sb2NrIAkApAMBCQBpAgUScmVtYWluaW5nRm9yVW5sb2NrAOgHAgggc2Vjb25kcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleUR1Y2tGaW5pc2hVbmxvY2tUaW1lAQUHYXNzZXRJZAkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQERZ2V0VW5sb2NrRHVyYXRpb24ABQNuaWwBC3Vuc3Rha2VEdWNrAwphc3NldElkU3RyCmFkZHJlc3NTdHIPYWRkU3BvdHNUb3dhcmRzBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEDHREdWNrRGV0YWlscwkBDmdldER1Y2tEZXRhaWxzAQUHYXNzZXRJZAQKYXNzZXRDb2xvcggFDHREdWNrRGV0YWlscwJfMQQJaXNKYWNrcG90CAUMdER1Y2tEZXRhaWxzAl8yBAprU3BvdHNCdXN5CQEMa2V5U3BvdHNCdXN5AQUPYWRkU3BvdHNUb3dhcmRzBAprRHVja093bmVyCQEMa2V5RHVja093bmVyAQUHYXNzZXRJZAQScmVtYWluaW5nRm9yVW5sb2NrCQBlAgkBDXRyeUdldEludGVnZXIBCQEXa2V5RHVja0ZpbmlzaFVubG9ja1RpbWUBBQdhc3NldElkCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQIhPQIJAQx0cnlHZXRTdHJpbmcBBQprRHVja093bmVyBQphZGRyZXNzU3RyCQACAQIaM1VEOiBUaGUgZHVjayBpcyBub3QgeW91cnMDCQBmAgUScmVtYWluaW5nRm9yVW5sb2NrAAAJAAIBCQCsAgIJAKwCAgIgM1VEOiBZb3UgbmVlZCB0byB3YWl0IHRvIHVubG9jayAJAKQDAQkAaQIFEnJlbWFpbmluZ0ZvclVubG9jawDoBwIIIHNlY29uZHMEBGlzVjIJAQ10cnlHZXRCb29sZWFuAQkBCWtleUR1Y2tWMgIFCmFkZHJlc3NTdHIFCmFzc2V0SWRTdHIECWRvVW5zdGFrZQMFBGlzVjIFA25pbAQPdW5zdGFrZUZ1bmNOYW1lAwkAAAIFCWlzSmFja3BvdAYCHXVuc3Rha2VKYWNrcG90V2l0aG91dENsYWltRWdnAhZ1bnN0YWtlTkZUV2l0aG91dENsYWltBARpbnYxCQD8BwQJARFnZXRGYXJtaW5nQWRkcmVzcwAFD3Vuc3Rha2VGdW5jTmFtZQkAzAgCBQphc3NldElkU3RyBQNuaWwFA25pbAMJAAACBQRpbnYxBQRpbnYxBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUJZG9VbnN0YWtlBQlkb1Vuc3Rha2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCmFkZHJlc3NTdHIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQETa2V5TG9ja2VkRHVja1N0YXR1cwIFCmFkZHJlc3NTdHIFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUKa0R1Y2tPd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKa1Nwb3RzQnVzeQkAZQIJAQ10cnlHZXRJbnRlZ2VyAQUKa1Nwb3RzQnVzeQABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4MAWkBFWJ1eUFjY2Vzc0l0ZW1JbnRlcm5hbAEKYWRkcmVzc1N0cgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECGDNCQUlJOiBpbnRlcm5hbCB1c2Ugb25seQQPaXNzdWVBY2Nlc3NJdGVtCQDCCAUJAKwCAgIHQUNDRVNTLQkBC2dldEdhbWVOYW1lAAkArAICCQCsAgIJAKwCAgIJW0FjY2Vzc10gCQEPZ2V0TG9uZ0dhbWVOYW1lAAIQIGFjY2VzcyBORlQgZm9yIAkBCmdldE5GVE5hbWUAAAEAAAcEEWFjY2Vzc1JhY2VBc3NldElkCQDYBAEJALgIAQUPaXNzdWVBY2Nlc3NJdGVtBAxrU3BvdHNCb3VnaHQJAQ5rZXlTcG90c0JvdWdodAEFCmFkZHJlc3NTdHIJAJQKAgkAzAgCBQ9pc3N1ZUFjY2Vzc0l0ZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICC2FjY2Vzc0l0ZW1fBRFhY2Nlc3NSYWNlQXNzZXRJZAIGX293bmVyBQphZGRyZXNzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIHX293bmluZwURYWNjZXNzUmFjZUFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtTcG90c0JvdWdodAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQUMa1Nwb3RzQm91Z2h0AAEFA25pbAURYWNjZXNzUmFjZUFzc2V0SWQBaQEPY29uZmlndXJlT3JhY2xlBAZvcmFjbGUJc2hvcnRuYW1lCGxvbmduYW1lB25mdE5hbWUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg8zQ086IGFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgIUc3RhdGljX29yYWNsZUFkZHJlc3MFBm9yYWNsZQkAzAgCCQELU3RyaW5nRW50cnkCAhRzdGF0aWNfc2hvcnRHYW1lTmFtZQUJc2hvcnRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQICE3N0YXRpY19sb25nR2FtZU5hbWUFCGxvbmduYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQICDnN0YXRpY19uZnROYW1lBQduZnROYW1lBQNuaWwBaQENZGVsZXRlU2V0dGluZwEDa2V5AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIsM0RTOiBPbmx5IGFkbWluaXN0cmF0b3IgY2FuIGNhbGwgdGhpcyBtZXRob2QJAMwIAgkBC0RlbGV0ZUVudHJ5AQUDa2V5BQNuaWwBaQEYYnV5QWNjZXNzSXRlbUFuZExvY2tEdWNrAAQKZWdnUGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAtkdWNrUGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBAphZGRyZXNzU3RyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgMJAQIhPQIIBQplZ2dQYXltZW50B2Fzc2V0SWQJARRnZXRBY2Nlc3NJdGVtQXNzZXRJZAAJAAIBAhozQkFJOiBXcm9uZyBhc3NldCBhdHRhY2hlZAMJAQIhPQIIBQplZ2dQYXltZW50BmFtb3VudAkBEmdldEFjY2Vzc0l0ZW1QcmljZQAJAAIBAiUzQkFJOiBXcm9uZyBhbW91bnQgb2YgYXNzZXRzIGF0dGFjaGVkBA5hY2Nlc3NJdGVtRGF0YQkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAhVidXlBY2Nlc3NJdGVtSW50ZXJuYWwJAMwIAgUKYWRkcmVzc1N0cgUDbmlsBQNuaWwDCQAAAgUOYWNjZXNzSXRlbURhdGEFDmFjY2Vzc0l0ZW1EYXRhBAhidXJuQ2FsbAkA/AcECQEOZ2V0QnVybkFkZHJlc3MAAhRidXJuQXR0YWNoZWRQYXltZW50cwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0RWdnQXNzZXRJZAAIBQplZ2dQYXltZW50BmFtb3VudAUDbmlsAwkAAAIFCGJ1cm5DYWxsBQhidXJuQ2FsbAQMdmFsaWRQYXltZW50AwkAAAIIBQFpBmNhbGxlcgkBEWdldFJlbnRpbmdBZGRyZXNzAAUDbmlsCQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAgMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAQIbG9ja0RhdGEJAM4IAgkBEGxvY2tEdWNrSW50ZXJuYWwDBQphZGRyZXNzU3RyBQphZGRyZXNzU3RyBQtkdWNrUGF5bWVudAUMdmFsaWRQYXltZW50CQCUCgIFCGxvY2tEYXRhBQ5hY2Nlc3NJdGVtRGF0YQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1idXlBY2Nlc3NJdGVtAAQKYWRkcmVzc1N0cgkApQgBCAUBaQxvcmlnaW5DYWxsZXIECmVnZ1BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQplZ2dQYXltZW50B2Fzc2V0SWQJARRnZXRBY2Nlc3NJdGVtQXNzZXRJZAAJAAIBCQCsAgICGzNCQUk6IFdyb25nIGFzc2V0IGF0dGFjaGVkIAkA2AQBCQEUZ2V0QWNjZXNzSXRlbUFzc2V0SWQAAwkBAiE9AggFCmVnZ1BheW1lbnQGYW1vdW50CQESZ2V0QWNjZXNzSXRlbVByaWNlAAkAAgECJTNCQUk6IFdyb25nIGFtb3VudCBvZiBhc3NldHMgYXR0YWNoZWQEDmFjY2Vzc0l0ZW1EYXRhCQEIYXNTdHJpbmcBCQD8BwQFBHRoaXMCFWJ1eUFjY2Vzc0l0ZW1JbnRlcm5hbAkAzAgCBQphZGRyZXNzU3RyBQNuaWwFA25pbAMJAAACBQ5hY2Nlc3NJdGVtRGF0YQUOYWNjZXNzSXRlbURhdGEECGJ1cm5DYWxsCQD8BwQJAQ5nZXRCdXJuQWRkcmVzcwACFGJ1cm5BdHRhY2hlZFBheW1lbnRzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRFZ2dBc3NldElkAAgFCmVnZ1BheW1lbnQGYW1vdW50BQNuaWwDCQAAAgUIYnVybkNhbGwFCGJ1cm5DYWxsBAx2YWxpZFBheW1lbnQDCQAAAggFAWkGY2FsbGVyCQERZ2V0UmVudGluZ0FkZHJlc3MABQNuaWwJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwABAwkAAAIFDHZhbGlkUGF5bWVudAUMdmFsaWRQYXltZW50CQCUCgIFDHZhbGlkUGF5bWVudAUOYWNjZXNzSXRlbURhdGEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESYnV5QWNjZXNzSXRlbU90aGVyAQxhZGRyZXNzT3RoZXIECmVnZ1BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQplZ2dQYXltZW50B2Fzc2V0SWQJARRnZXRBY2Nlc3NJdGVtQXNzZXRJZAAJAAIBAhozQkFJOiBXcm9uZyBhc3NldCBhdHRhY2hlZAMJAQIhPQIIBQplZ2dQYXltZW50BmFtb3VudAkBEmdldEFjY2Vzc0l0ZW1QcmljZQAJAAIBAiUzQkFJOiBXcm9uZyBhbW91bnQgb2YgYXNzZXRzIGF0dGFjaGVkBA5hY2Nlc3NJdGVtRGF0YQkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAhVidXlBY2Nlc3NJdGVtSW50ZXJuYWwJAMwIAgUMYWRkcmVzc090aGVyBQNuaWwFA25pbAMJAAACBQ5hY2Nlc3NJdGVtRGF0YQUOYWNjZXNzSXRlbURhdGEECGJ1cm5DYWxsCQD8BwQJAQ5nZXRCdXJuQWRkcmVzcwACFGJ1cm5BdHRhY2hlZFBheW1lbnRzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRFZ2dBc3NldElkAAgFCmVnZ1BheW1lbnQGYW1vdW50BQNuaWwDCQAAAgUIYnVybkNhbGwFCGJ1cm5DYWxsCQCUCgIFA25pbAUOYWNjZXNzSXRlbURhdGEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIbG9ja0R1Y2sABAphZGRyZXNzU3RyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja1BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQMdmFsaWRQYXltZW50CQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAQMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAkAzggCCQEQbG9ja0R1Y2tJbnRlcm5hbAMFCmFkZHJlc3NTdHIFCmFkZHJlc3NTdHIFC2R1Y2tQYXltZW50BQx2YWxpZFBheW1lbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKaW5pdFVubG9jawEKYXNzZXRJZFN0cgQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAADCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQJAM4IAgkBDmluaXRVbmxvY2tEdWNrAgUKYXNzZXRJZFN0cgUKYWRkcmVzc1N0cgUMdmFsaWRQYXltZW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD2xvY2tEdWNrUmVudGluZwEUYWRkcmVzc1Rha2VTcG90c0Zyb20DCQECIT0CCAUBaQZjYWxsZXIJARFnZXRSZW50aW5nQWRkcmVzcwAJAAIBAhMzVURPOiBSZW50aW5nIG9ubHkhBAphZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQLZHVja1BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAkBEGxvY2tEdWNrSW50ZXJuYWwDBQphZGRyZXNzU3RyBRRhZGRyZXNzVGFrZVNwb3RzRnJvbQULZHVja1BheW1lbnQBaQERdW5sb2NrRHVja1JlbnRpbmcCCmFzc2V0SWRTdHIPYWRkU3BvdHNUb3dhcmRzAwkBAiE9AggFAWkGY2FsbGVyCQERZ2V0UmVudGluZ0FkZHJlc3MACQACAQITM1VETzogUmVudGluZyBvbmx5IQQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIJAQt1bnN0YWtlRHVjawMFCmFzc2V0SWRTdHIFCmFkZHJlc3NTdHIFD2FkZFNwb3RzVG93YXJkcwFpAQ91bmxvY2tEdWNrT3RoZXIBCmFzc2V0SWRTdHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhEzVURPOiBBZG1pbiBvbmx5IQQIb3duZXJLZXkJAQx0cnlHZXRTdHJpbmcBCQEMa2V5RHVja093bmVyAQkA2QQBBQphc3NldElkU3RyCQELdW5zdGFrZUR1Y2sDBQphc3NldElkU3RyBQhvd25lcktleQUIb3duZXJLZXkBaQEKdW5sb2NrRHVjawQKYXNzZXRJZFN0cgJ0cwdhbGxvd2VkCXNpZ25hdHVyZQMJAQIhPQIFB2FsbG93ZWQGCQACAQIkM1VEOiBOb3QgYWxsb3dlZCB0byB1bmxvY2sgdGhlIGR1Y2shBAhNU0lOSE9VUgCA3dsBBAljdXJyZW50VHMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkAZgIFCWN1cnJlbnRUcwkAZAIFAnRzBQhNU0lOSE9VUgkAAgECGDNVRDogT3V0ZGF0ZWQgc2lnbmF0dXJlIQQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEBHRleHQJALkJAgkAzAgCBQphc3NldElkU3RyCQDMCAIJAKQDAQUCdHMJAMwIAgkApQMBBQdhbGxvd2VkBQNuaWwCATsDCQEBIQEJAMQTAwkAmwMBBQR0ZXh0CQDZBAEFCXNpZ25hdHVyZQkBEGdldEJhY2tlbmRQdWJLZXkACQACAQkArAICCQCsAgIJAKwCAgIjM1VEOiBJbnZhbGlkIHByb29mIGZyb20gYmFja2VuZCBrZXkJANgEAQkBEGdldEJhY2tlbmRQdWJLZXkAAgEgBQR0ZXh0BAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwAAAwkAAAIFDHZhbGlkUGF5bWVudAUMdmFsaWRQYXltZW50CQDOCAIJAQt1bnN0YWtlRHVjawMFCmFzc2V0SWRTdHIFCmFkZHJlc3NTdHIFCmFkZHJlc3NTdHIFDHZhbGlkUGF5bWVudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgDxS5zH", "height": 4124059, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4nMEzDQEWrThxddHpHVTLKSmmBsV3Tim4HXkHXu29SHQ Next: none Diff:
OldNewDifferences
1212 }
1313
1414
15-func e (f) = (("address_" + f) + "_boughtBoosterLevel")
15+func e (f) = (("duck_" + toBase58String(f)) + "_unlockTime")
1616
1717
18-func g (h) = (("duck_" + toBase58String(h)) + "_unlockTime")
18+func g (f) = (("duck_" + toBase58String(f)) + "finish_unlockTime")
1919
2020
21-func i (h) = (("duck_" + toBase58String(h)) + "finish_unlockTime")
21+func h (f) = (("duck_" + toBase58String(f)) + "_owner")
2222
2323
24-func j (h) = (("duck_" + toBase58String(h)) + "_owner")
24+func i (j) = (("address_" + j) + "_spotsBought")
2525
2626
27-func k (f) = (("address_" + f) + "_spotsBought")
27+func k (j) = (("address_" + j) + "_spotsBusy")
2828
2929
30-func l (f) = (("address_" + f) + "_spotsBusy")
30+func l (j,m) = (((("address_" + j) + "_lockedDuck_") + m) + "_status")
3131
3232
33-func m (f,n) = (((("address_" + f) + "_lockedDuck_") + n) + "_status")
33+func n (j,m) = (((("address_" + j) + "_lockedDuck_") + m) + "_v2")
3434
3535
36-func o (h) = {
37- let p = value(value(assetInfo(h)).name)
36+func o (f) = {
37+ let p = value(value(assetInfo(f)).name)
3838 let q = split(p, "")
3939 let r = (q[(size(q) - 2)] == "J")
4040 let s = if (r)
5555 }
5656
5757
58-func w (b) = t(this, b)
58+func w (b) = {
59+ let c = getBoolean(b)
60+ if ($isInstanceOf(c, "Boolean"))
61+ then {
62+ let d = c
63+ d
64+ }
65+ else false
66+ }
5967
6068
61-func x () = "static_oracleAddress"
69+func x (b) = t(this, b)
6270
6371
64-func y () = "static_eggAssetId"
72+func y () = "static_oracleAddress"
6573
6674
67-func z () = "static_incubatorAddress"
75+func z () = "static_eggAssetId"
6876
6977
70-func A () = "static_breederAddress"
78+func A () = "static_incubatorAddress"
7179
7280
73-func B () = "static_farmingAddress"
81+func B () = "static_breederAddress"
7482
7583
76-func C () = "static_rentingAddress"
84+func C () = "static_farmingAddress"
7785
7886
79-func D () = "static_shortGameName"
87+func D () = "static_rentingAddress"
8088
8189
82-func E () = "static_longGameName"
90+func E () = "static_shortGameName"
8391
8492
85-func F () = "static_nftName"
93+func F () = "static_longGameName"
8694
8795
88-func G () = "static_backendPubKey"
96+func G () = "static_nftName"
8997
9098
91-func H () = "static_accessItemAssetId"
99+func H () = "static_backendPubKey"
92100
93101
94-func I () = "static_accessItemPrice"
102+func I () = "static_accessItemAssetId"
95103
96104
97-func J () = "static_minLockDuration"
105+func J () = "static_accessItemPrice"
98106
99107
100-func K () = "static_UnlockDuration"
108+func K () = "static_minLockDuration"
101109
102110
103-func L () = "static_boosterBuyAssetId"
111+func L () = "static_UnlockDuration"
104112
105113
106-func M () = "static_extraFee"
114+func M () = "static_boosterBuyAssetId"
107115
108116
109-func N () = "static_feeAggregator"
117+func N () = "static_extraFee"
110118
111119
112-func O (P) = ("static_boosterPriceLevel_" + P)
120+func O () = "static_feeAggregator"
113121
114122
115-func Q (P) = ("static_boosterName_" + P)
123+func P (Q) = ("static_boosterPriceLevel_" + Q)
116124
117125
118-func R () = Address(fromBase58String(w(x())))
126+func R (Q) = ("static_boosterName_" + Q)
119127
120128
121-func S () = valueOrErrorMessage(getString(D()), "3GGN: There is no game name defined!")
129+func S () = "static_burnAddress"
122130
123131
124-func T () = valueOrErrorMessage(getString(E()), "3GLGN: There is no long game name defined!")
132+func T () = Address(fromBase58String(x(y())))
125133
126134
127-func U () = valueOrErrorMessage(getString(F()), "3GNN: There is no nft name defined!")
135+func U () = valueOrErrorMessage(getString(E()), "3GGN: There is no game name defined!")
128136
129137
130-func V () = Address(fromBase58String(t(R(), z())))
138+func V () = valueOrErrorMessage(getString(F()), "3GLGN: There is no long game name defined!")
131139
132140
133-func W () = Address(fromBase58String(t(R(), A())))
141+func W () = valueOrErrorMessage(getString(G()), "3GNN: There is no nft name defined!")
134142
135143
136-func X () = Address(fromBase58String(t(R(), C())))
144+func X () = Address(fromBase58String(t(T(), A())))
137145
138146
139-func Y () = Address(fromBase58String(t(R(), B())))
147+func Y () = Address(fromBase58String(t(T(), B())))
140148
141149
142-func Z () = fromBase58String(t(R(), y()))
150+func Z () = Address(fromBase58String(t(T(), D())))
143151
144152
145-func aa () = fromBase58String(t(R(), G()))
153+func aa () = Address(fromBase58String(t(T(), C())))
146154
147155
148-func ab () = Address(fromBase58String(t(R(), N())))
156+func ab () = fromBase58String(t(T(), z()))
149157
150158
151-func ac () = fromBase58String(w(H()))
159+func ac () = fromBase58String(t(T(), H()))
152160
153161
154-func ad () = a(I())
162+func ad () = Address(fromBase58String(t(T(), O())))
155163
156164
157-func ae () = a(J())
165+func ae () = Address(fromBase58String(t(T(), S())))
158166
159167
160-func af () = a(K())
168+func af () = fromBase58String(x(I()))
161169
162170
163-func ag () = fromBase58String(w(L()))
171+func ag () = a(J())
164172
165173
166-func ah (P) = valueOrErrorMessage(getInteger(O(toString(P))), "3GBPFL: There is no price value for this level of booster")
174+func ah () = a(K())
167175
168176
169-func ai (P) = valueOrErrorMessage(getString(Q(toString(P))), "3GBNFL: There is no such booster")
177+func ai () = a(L())
170178
171179
172-func aj (ak) = if (isDefined(ak.assetId))
180+func aj () = fromBase58String(x(M()))
181+
182+
183+func ak (Q) = valueOrErrorMessage(getInteger(P(toString(Q))), "3GBPFL: There is no price value for this level of booster")
184+
185+
186+func al (Q) = valueOrErrorMessage(getString(R(toString(Q))), "3GBNFL: There is no such booster")
187+
188+
189+func am (an) = if (isDefined(an.assetId))
173190 then throw("RCAP: Please attach waves")
174191 else {
175- let al = getIntegerValue(R(), M())
176- if ((ak.amount != al))
177- then throw((("RCAP: Please attach exactly " + toString(al)) + " amount of wavelets"))
178- else [ScriptTransfer(ab(), al, unit)]
192+ let ao = getIntegerValue(T(), N())
193+ if ((an.amount != ao))
194+ then throw((("RCAP: Please attach exactly " + toString(ao)) + " amount of wavelets"))
195+ else [ScriptTransfer(ad(), ao, unit)]
179196 }
180197
181198
182-func am (an) = {
183- let c = an
199+func ap (aq) = {
200+ let c = aq
184201 if ($isInstanceOf(c, "String"))
185202 then {
186- let ao = c
187- ao
203+ let ar = c
204+ ar
188205 }
189206 else throw("3AS: wrong type, expected: String")
190207 }
191208
192209
193-func ap (f,aq,ar) = {
194- let h = value(ar.assetId)
195- let as = value(assetInfo(h)).issuer
196- let at = o(h)
197- let s = at._1
198- let r = at._2
199- let au = l(aq)
200- let av = a(au)
201- let aw = k(aq)
202- let ax = (a(aw) - av)
203- if ((ar.amount != 1))
210+func as (j,at,au) = {
211+ let f = value(au.assetId)
212+ let av = value(assetInfo(f)).issuer
213+ let aw = o(f)
214+ let s = aw._1
215+ let r = aw._2
216+ let ax = k(at)
217+ let ay = a(ax)
218+ let az = i(at)
219+ let aA = (a(az) - ay)
220+ if ((au.amount != 1))
204221 then throw("NFT is not attached")
205- else if (if ((as != V()))
206- then (as != W())
222+ else if (if ((av != X()))
223+ then (av != Y())
207224 else false)
208225 then throw("ivalid NFT attached")
209- else if ((0 >= ax))
210- then throw(("No spots available in hunt for: " + aq))
226+ else if ((0 >= aA))
227+ then throw(("No spots available in hunt for: " + at))
211228 else {
212- let ay = ((("address_" + toString(this)) + "_perchesAvailable_") + s)
213- let az = {
214- let c = getInteger(Y(), ay)
229+ let aB = ((("address_" + toString(this)) + "_perchesAvailable_") + s)
230+ let aC = {
231+ let c = getInteger(aa(), aB)
215232 if ($isInstanceOf(c, "Int"))
216233 then {
217234 let d = c
219236 }
220237 else 0
221238 }
222- if ((az == az))
239+ if ((aC == aC))
223240 then {
224- let aA = Z()
225- let aB = if ((az > 0))
226- then unit
227- else invoke(Y(), "buyPerch", [s, ""], [AttachedPayment(aA, 100000000)])
228- if ((aB == aB))
229- then {
230- let aC = if ((r == false))
231- then invoke(Y(), "stakeNFT", nil, [AttachedPayment(h, 1)])
232- else invoke(Y(), "stakeJackpot", [s], [AttachedPayment(h, 1)])
233- if ((aC == aC))
234- then [IntegerEntry(au, (av + 1)), StringEntry(j(h), f), BooleanEntry(m(f, toBase58String(h)), true), IntegerEntry(g(h), (lastBlock.timestamp + ae()))]
235- else throw("Strict value is not equal to itself.")
236- }
237- else throw("Strict value is not equal to itself.")
241+ let aD = ab()
242+[IntegerEntry(ax, (ay + 1)), StringEntry(h(f), j), BooleanEntry(l(j, toBase58String(f)), true), IntegerEntry(e(f), (lastBlock.timestamp + ah())), BooleanEntry(n(j, toBase58String(f)), true)]
238243 }
239244 else throw("Strict value is not equal to itself.")
240245 }
241246 }
242247
243248
244-func aD (n,f) = {
245- let h = fromBase58String(n)
246- let at = o(h)
247- let s = at._1
248- let r = at._2
249- let au = l(f)
250- let aE = j(h)
251- let aF = (a(g(h)) - lastBlock.timestamp)
252- if ((w(aE) != f))
249+func aE (m,j) = {
250+ let f = fromBase58String(m)
251+ let aw = o(f)
252+ let s = aw._1
253+ let r = aw._2
254+ let ax = k(j)
255+ let aF = h(f)
256+ let aG = (a(e(f)) - lastBlock.timestamp)
257+ if ((x(aF) != j))
253258 then throw("3IULD: The duck is not yours")
254- else if ((aF > 0))
255- then throw((("3IUL: You need to wait to unlock " + toString((aF / 1000))) + " seconds"))
256- else [IntegerEntry(i(h), (lastBlock.timestamp + af()))]
259+ else if ((aG > 0))
260+ then throw((("3IUL: You need to wait to unlock " + toString((aG / 1000))) + " seconds"))
261+ else [IntegerEntry(g(f), (lastBlock.timestamp + ai()))]
257262 }
258263
259264
260-func aG (n,f,aH) = {
261- let h = fromBase58String(n)
262- let at = o(h)
263- let s = at._1
264- let r = at._2
265- let au = l(aH)
266- let aE = j(h)
267- let aF = (a(i(h)) - lastBlock.timestamp)
268- if ((w(aE) != f))
265+func aH (m,j,aI) = {
266+ let f = fromBase58String(m)
267+ let aw = o(f)
268+ let s = aw._1
269+ let r = aw._2
270+ let ax = k(aI)
271+ let aF = h(f)
272+ let aG = (a(g(f)) - lastBlock.timestamp)
273+ if ((x(aF) != j))
269274 then throw("3UD: The duck is not yours")
270- else if ((aF > 0))
271- then throw((("3UD: You need to wait to unlock " + toString((aF / 1000))) + " seconds"))
275+ else if ((aG > 0))
276+ then throw((("3UD: You need to wait to unlock " + toString((aG / 1000))) + " seconds"))
272277 else {
273- let aI = if ((r == true))
274- then "unstakeJackpotWithoutClaimEgg"
275- else "unstakeNFTWithoutClaim"
276- let aB = invoke(Y(), aI, [n], nil)
277- if ((aB == aB))
278- then [ScriptTransfer(Address(fromBase58String(f)), 1, h), DeleteEntry(m(f, n)), DeleteEntry(aE), IntegerEntry(au, (a(au) - 1))]
278+ let aJ = w(n(j, m))
279+ let aK = if (aJ)
280+ then nil
281+ else {
282+ let aL = if ((r == true))
283+ then "unstakeJackpotWithoutClaimEgg"
284+ else "unstakeNFTWithoutClaim"
285+ let aM = invoke(aa(), aL, [m], nil)
286+ if ((aM == aM))
287+ then nil
288+ else throw("Strict value is not equal to itself.")
289+ }
290+ if ((aK == aK))
291+ then [ScriptTransfer(Address(fromBase58String(j)), 1, f), DeleteEntry(l(j, m)), DeleteEntry(aF), IntegerEntry(ax, (a(ax) - 1))]
279292 else throw("Strict value is not equal to itself.")
280293 }
281294 }
282295
283296
284-func aJ (aK,b,an) = if ((aK.caller != this))
285- then throw("Only administrator can call this method")
286- else {
287- let c = an
288- if ($isInstanceOf(c, "Int"))
289- then {
290- let aL = c
291-[IntegerEntry(b, aL)]
292- }
293- else if ($isInstanceOf(c, "String"))
294- then {
295- let aM = c
296-[StringEntry(b, aM)]
297- }
298- else if ($isInstanceOf(c, "Boolean"))
299- then {
300- let d = c
301-[BooleanEntry(b, d)]
302- }
303- else if ($isInstanceOf(c, "ByteVector"))
304- then {
305- let aN = c
306-[BinaryEntry(b, aN)]
307- }
308- else throw("Bad value type")
309- }
310-
311-
312-@Callable(aK)
313-func updateSettingInt (b,an) = aJ(aK, b, an)
314-
315-
316-
317-@Callable(aK)
318-func updateSettingStr (b,an) = aJ(aK, b, an)
319-
320-
321-
322-@Callable(aK)
323-func updateSettingBoolean (b,an) = aJ(aK, b, an)
324-
325-
326-
327-@Callable(aK)
328-func updateSettingByteVector (b,an) = aJ(aK, b, an)
329-
330-
331-
332-@Callable(aK)
333-func buyAccessItemInternal (f) = if ((aK.caller != this))
297+@Callable(aN)
298+func buyAccessItemInternal (j) = if ((aN.caller != this))
334299 then throw("3BAII: internal use only")
335300 else {
336- let aO = Issue(("ACCESS-" + S()), ((("[Access] " + T()) + " access NFT for ") + U()), 1, 0, false)
301+ let aO = Issue(("ACCESS-" + U()), ((("[Access] " + V()) + " access NFT for ") + W()), 1, 0, false)
337302 let aP = toBase58String(calculateAssetId(aO))
338- let aw = k(f)
339- $Tuple2([aO, StringEntry((("accessItem_" + aP) + "_owner"), f), StringEntry((("address_" + f) + "_owning"), aP), IntegerEntry(aw, (a(aw) + 1))], aP)
303+ let az = i(j)
304+ $Tuple2([aO, StringEntry((("accessItem_" + aP) + "_owner"), j), StringEntry((("address_" + j) + "_owning"), aP), IntegerEntry(az, (a(az) + 1))], aP)
340305 }
341306
342307
343308
344-@Callable(aK)
345-func configureOracle (aQ,aR,aS,aT) = if ((aK.caller != this))
309+@Callable(aN)
310+func configureOracle (aQ,aR,aS,aT) = if ((aN.caller != this))
346311 then throw("3CO: admin only")
347312 else [StringEntry("static_oracleAddress", aQ), StringEntry("static_shortGameName", aR), StringEntry("static_longGameName", aS), StringEntry("static_nftName", aT)]
348313
349314
350315
351-@Callable(aK)
352-func deleteSetting (b) = if ((aK.caller != this))
316+@Callable(aN)
317+func deleteSetting (b) = if ((aN.caller != this))
353318 then throw("3DS: Only administrator can call this method")
354319 else [DeleteEntry(b)]
355320
356321
357322
358-@Callable(aK)
359-func buyBooster () = {
360- let aU = e(toString(aK.caller))
361- let aV = a(aU)
362- let aW = (aV + 1)
363- let ar = value(aK.payments[0])
364- let aX = ah(aW)
365- let aY = ag()
366- if ((ar.amount != aX))
367- then throw(("3BB: Bad price, it should be: " + toString(aX)))
368- else if ((ar.assetId != aY))
369- then throw(("3BB: Bad payment attached, it should be: " + toBase58String(aY)))
370- else {
371- let aZ = ai(aW)
372- let ba = Issue(((S() + "-") + aZ), ((("[Booster] " + T()) + " booster for the game, level = ") + toString(aW)), 1, 0, false)
373- let bb = calculateAssetId(ba)
374-[ba, IntegerEntry(aU, aW), ScriptTransfer(aK.caller, 1, bb)]
375- }
376- }
377-
378-
379-
380-@Callable(aK)
323+@Callable(aN)
381324 func buyAccessItemAndLockDuck () = {
382- let bc = value(aK.payments[0])
383- let bd = value(aK.payments[1])
384- let f = toString(aK.originCaller)
385- if ((bc.assetId != ac()))
325+ let aU = value(aN.payments[0])
326+ let aV = value(aN.payments[1])
327+ let j = toString(aN.originCaller)
328+ if ((aU.assetId != af()))
386329 then throw("3BAI: Wrong asset attached")
387- else if ((bc.amount != ad()))
330+ else if ((aU.amount != ag()))
388331 then throw("3BAI: Wrong amount of assets attached")
389332 else {
390- let be = am(invoke(this, "buyAccessItemInternal", [f], nil))
391- if ((be == be))
333+ let aW = ap(invoke(this, "buyAccessItemInternal", [j], nil))
334+ if ((aW == aW))
392335 then {
393- let bf = if ((aK.caller == X()))
394- then nil
395- else aj(aK.payments[2])
396- if ((bf == bf))
336+ let aX = invoke(ae(), "burnAttachedPayments", nil, [AttachedPayment(ab(), aU.amount)])
337+ if ((aX == aX))
397338 then {
398- let bg = (ap(f, f, bd) ++ bf)
399- $Tuple2(bg, be)
339+ let aY = if ((aN.caller == Z()))
340+ then nil
341+ else am(aN.payments[2])
342+ if ((aY == aY))
343+ then {
344+ let aZ = (as(j, j, aV) ++ aY)
345+ $Tuple2(aZ, aW)
346+ }
347+ else throw("Strict value is not equal to itself.")
400348 }
401349 else throw("Strict value is not equal to itself.")
402350 }
406354
407355
408356
409-@Callable(aK)
357+@Callable(aN)
410358 func buyAccessItem () = {
411- let f = toString(aK.originCaller)
412- let bc = value(aK.payments[0])
413- if ((bc.assetId != ac()))
414- then throw("3BAI: Wrong asset attached")
415- else if ((bc.amount != ad()))
359+ let j = toString(aN.originCaller)
360+ let aU = value(aN.payments[0])
361+ if ((aU.assetId != af()))
362+ then throw(("3BAI: Wrong asset attached " + toBase58String(af())))
363+ else if ((aU.amount != ag()))
416364 then throw("3BAI: Wrong amount of assets attached")
417365 else {
418- let be = am(invoke(this, "buyAccessItemInternal", [f], nil))
419- if ((be == be))
366+ let aW = ap(invoke(this, "buyAccessItemInternal", [j], nil))
367+ if ((aW == aW))
420368 then {
421- let bf = if ((aK.caller == X()))
422- then nil
423- else aj(aK.payments[1])
424- if ((bf == bf))
425- then $Tuple2(bf, be)
369+ let aX = invoke(ae(), "burnAttachedPayments", nil, [AttachedPayment(ab(), aU.amount)])
370+ if ((aX == aX))
371+ then {
372+ let aY = if ((aN.caller == Z()))
373+ then nil
374+ else am(aN.payments[1])
375+ if ((aY == aY))
376+ then $Tuple2(aY, aW)
377+ else throw("Strict value is not equal to itself.")
378+ }
426379 else throw("Strict value is not equal to itself.")
427380 }
428381 else throw("Strict value is not equal to itself.")
431384
432385
433386
434-@Callable(aK)
435-func buyAccessItemOther (bh) = {
436- let bc = value(aK.payments[0])
437- if ((bc.assetId != ac()))
387+@Callable(aN)
388+func buyAccessItemOther (ba) = {
389+ let aU = value(aN.payments[0])
390+ if ((aU.assetId != af()))
438391 then throw("3BAI: Wrong asset attached")
439- else if ((bc.amount != ad()))
392+ else if ((aU.amount != ag()))
440393 then throw("3BAI: Wrong amount of assets attached")
441394 else {
442- let be = am(invoke(this, "buyAccessItemInternal", [bh], nil))
443- if ((be == be))
444- then $Tuple2(nil, be)
395+ let aW = ap(invoke(this, "buyAccessItemInternal", [ba], nil))
396+ if ((aW == aW))
397+ then {
398+ let aX = invoke(ae(), "burnAttachedPayments", nil, [AttachedPayment(ab(), aU.amount)])
399+ if ((aX == aX))
400+ then $Tuple2(nil, aW)
401+ else throw("Strict value is not equal to itself.")
402+ }
445403 else throw("Strict value is not equal to itself.")
446404 }
447405 }
448406
449407
450408
451-@Callable(aK)
409+@Callable(aN)
452410 func lockDuck () = {
453- let f = toString(aK.originCaller)
454- let bd = value(aK.payments[0])
455- let bf = aj(aK.payments[1])
456- if ((bf == bf))
457- then (ap(f, f, bd) ++ bf)
411+ let j = toString(aN.originCaller)
412+ let aV = value(aN.payments[0])
413+ let aY = am(aN.payments[1])
414+ if ((aY == aY))
415+ then (as(j, j, aV) ++ aY)
458416 else throw("Strict value is not equal to itself.")
459417 }
460418
461419
462420
463-@Callable(aK)
464-func initUnlock (n) = {
465- let f = toString(aK.caller)
466- let bf = aj(aK.payments[0])
467- if ((bf == bf))
468- then (aD(n, f) ++ bf)
421+@Callable(aN)
422+func initUnlock (m) = {
423+ let j = toString(aN.caller)
424+ let aY = am(aN.payments[0])
425+ if ((aY == aY))
426+ then (aE(m, j) ++ aY)
469427 else throw("Strict value is not equal to itself.")
470428 }
471429
472430
473431
474-@Callable(aK)
475-func lockDuckRenting (bi) = if ((aK.caller != X()))
432+@Callable(aN)
433+func lockDuckRenting (bb) = if ((aN.caller != Z()))
476434 then throw("3UDO: Renting only!")
477435 else {
478- let f = toString(aK.caller)
479- let bd = value(aK.payments[0])
480- ap(f, bi, bd)
436+ let j = toString(aN.caller)
437+ let aV = value(aN.payments[0])
438+ as(j, bb, aV)
481439 }
482440
483441
484442
485-@Callable(aK)
486-func unlockDuckRenting (n,aH) = if ((aK.caller != X()))
443+@Callable(aN)
444+func unlockDuckRenting (m,aI) = if ((aN.caller != Z()))
487445 then throw("3UDO: Renting only!")
488446 else {
489- let f = toString(aK.caller)
490- aG(n, f, aH)
447+ let j = toString(aN.caller)
448+ aH(m, j, aI)
491449 }
492450
493451
494452
495-@Callable(aK)
496-func unlockDuckOther (n) = if ((aK.caller != this))
453+@Callable(aN)
454+func unlockDuckOther (m) = if ((aN.caller != this))
497455 then throw("3UDO: Admin only!")
498456 else {
499- let bj = w(j(fromBase58String(n)))
500- aG(n, bj, bj)
457+ let bc = x(h(fromBase58String(m)))
458+ aH(m, bc, bc)
501459 }
502460
503461
504462
505-@Callable(aK)
506-func unlockDuck (n,bk,bl,bm) = if ((bl != true))
463+@Callable(aN)
464+func unlockDuck (m,bd,be,bf) = if ((be != true))
507465 then throw("3UD: Not allowed to unlock the duck!")
508466 else {
509- let bn = 3600000
510- let bo = lastBlock.timestamp
511- if ((bo > (bk + bn)))
467+ let bg = 3600000
468+ let bh = lastBlock.timestamp
469+ if ((bh > (bd + bg)))
512470 then throw("3UD: Outdated signature!")
513471 else {
514- let f = toString(aK.caller)
515- let bp = makeString([n, toString(bk), toString(bl)], ";")
516- if (!(sigVerify_8Kb(toBytes(bp), fromBase58String(bm), aa())))
517- then throw(((("3UD: Invalid proof from backend key" + toBase58String(aa())) + " ") + bp))
472+ let j = toString(aN.caller)
473+ let bi = makeString([m, toString(bd), toString(be)], ";")
474+ if (!(sigVerify_8Kb(toBytes(bi), fromBase58String(bf), ac())))
475+ then throw(((("3UD: Invalid proof from backend key" + toBase58String(ac())) + " ") + bi))
518476 else {
519- let bf = aj(aK.payments[0])
520- if ((bf == bf))
521- then (aG(n, f, f) ++ bf)
477+ let aY = am(aN.payments[0])
478+ if ((aY == aY))
479+ then (aH(m, j, j) ++ aY)
522480 else throw("Strict value is not equal to itself.")
523481 }
524482 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = {
55 let c = getInteger(this, b)
66 if ($isInstanceOf(c, "Int"))
77 then {
88 let d = c
99 d
1010 }
1111 else 0
1212 }
1313
1414
15-func e (f) = (("address_" + f) + "_boughtBoosterLevel")
15+func e (f) = (("duck_" + toBase58String(f)) + "_unlockTime")
1616
1717
18-func g (h) = (("duck_" + toBase58String(h)) + "_unlockTime")
18+func g (f) = (("duck_" + toBase58String(f)) + "finish_unlockTime")
1919
2020
21-func i (h) = (("duck_" + toBase58String(h)) + "finish_unlockTime")
21+func h (f) = (("duck_" + toBase58String(f)) + "_owner")
2222
2323
24-func j (h) = (("duck_" + toBase58String(h)) + "_owner")
24+func i (j) = (("address_" + j) + "_spotsBought")
2525
2626
27-func k (f) = (("address_" + f) + "_spotsBought")
27+func k (j) = (("address_" + j) + "_spotsBusy")
2828
2929
30-func l (f) = (("address_" + f) + "_spotsBusy")
30+func l (j,m) = (((("address_" + j) + "_lockedDuck_") + m) + "_status")
3131
3232
33-func m (f,n) = (((("address_" + f) + "_lockedDuck_") + n) + "_status")
33+func n (j,m) = (((("address_" + j) + "_lockedDuck_") + m) + "_v2")
3434
3535
36-func o (h) = {
37- let p = value(value(assetInfo(h)).name)
36+func o (f) = {
37+ let p = value(value(assetInfo(f)).name)
3838 let q = split(p, "")
3939 let r = (q[(size(q) - 2)] == "J")
4040 let s = if (r)
4141 then "B"
4242 else q[(size(q) - 1)]
4343 $Tuple2(s, r)
4444 }
4545
4646
4747 func t (u,b) = {
4848 let c = getString(u, b)
4949 if ($isInstanceOf(c, "String"))
5050 then {
5151 let v = c
5252 v
5353 }
5454 else ""
5555 }
5656
5757
58-func w (b) = t(this, b)
58+func w (b) = {
59+ let c = getBoolean(b)
60+ if ($isInstanceOf(c, "Boolean"))
61+ then {
62+ let d = c
63+ d
64+ }
65+ else false
66+ }
5967
6068
61-func x () = "static_oracleAddress"
69+func x (b) = t(this, b)
6270
6371
64-func y () = "static_eggAssetId"
72+func y () = "static_oracleAddress"
6573
6674
67-func z () = "static_incubatorAddress"
75+func z () = "static_eggAssetId"
6876
6977
70-func A () = "static_breederAddress"
78+func A () = "static_incubatorAddress"
7179
7280
73-func B () = "static_farmingAddress"
81+func B () = "static_breederAddress"
7482
7583
76-func C () = "static_rentingAddress"
84+func C () = "static_farmingAddress"
7785
7886
79-func D () = "static_shortGameName"
87+func D () = "static_rentingAddress"
8088
8189
82-func E () = "static_longGameName"
90+func E () = "static_shortGameName"
8391
8492
85-func F () = "static_nftName"
93+func F () = "static_longGameName"
8694
8795
88-func G () = "static_backendPubKey"
96+func G () = "static_nftName"
8997
9098
91-func H () = "static_accessItemAssetId"
99+func H () = "static_backendPubKey"
92100
93101
94-func I () = "static_accessItemPrice"
102+func I () = "static_accessItemAssetId"
95103
96104
97-func J () = "static_minLockDuration"
105+func J () = "static_accessItemPrice"
98106
99107
100-func K () = "static_UnlockDuration"
108+func K () = "static_minLockDuration"
101109
102110
103-func L () = "static_boosterBuyAssetId"
111+func L () = "static_UnlockDuration"
104112
105113
106-func M () = "static_extraFee"
114+func M () = "static_boosterBuyAssetId"
107115
108116
109-func N () = "static_feeAggregator"
117+func N () = "static_extraFee"
110118
111119
112-func O (P) = ("static_boosterPriceLevel_" + P)
120+func O () = "static_feeAggregator"
113121
114122
115-func Q (P) = ("static_boosterName_" + P)
123+func P (Q) = ("static_boosterPriceLevel_" + Q)
116124
117125
118-func R () = Address(fromBase58String(w(x())))
126+func R (Q) = ("static_boosterName_" + Q)
119127
120128
121-func S () = valueOrErrorMessage(getString(D()), "3GGN: There is no game name defined!")
129+func S () = "static_burnAddress"
122130
123131
124-func T () = valueOrErrorMessage(getString(E()), "3GLGN: There is no long game name defined!")
132+func T () = Address(fromBase58String(x(y())))
125133
126134
127-func U () = valueOrErrorMessage(getString(F()), "3GNN: There is no nft name defined!")
135+func U () = valueOrErrorMessage(getString(E()), "3GGN: There is no game name defined!")
128136
129137
130-func V () = Address(fromBase58String(t(R(), z())))
138+func V () = valueOrErrorMessage(getString(F()), "3GLGN: There is no long game name defined!")
131139
132140
133-func W () = Address(fromBase58String(t(R(), A())))
141+func W () = valueOrErrorMessage(getString(G()), "3GNN: There is no nft name defined!")
134142
135143
136-func X () = Address(fromBase58String(t(R(), C())))
144+func X () = Address(fromBase58String(t(T(), A())))
137145
138146
139-func Y () = Address(fromBase58String(t(R(), B())))
147+func Y () = Address(fromBase58String(t(T(), B())))
140148
141149
142-func Z () = fromBase58String(t(R(), y()))
150+func Z () = Address(fromBase58String(t(T(), D())))
143151
144152
145-func aa () = fromBase58String(t(R(), G()))
153+func aa () = Address(fromBase58String(t(T(), C())))
146154
147155
148-func ab () = Address(fromBase58String(t(R(), N())))
156+func ab () = fromBase58String(t(T(), z()))
149157
150158
151-func ac () = fromBase58String(w(H()))
159+func ac () = fromBase58String(t(T(), H()))
152160
153161
154-func ad () = a(I())
162+func ad () = Address(fromBase58String(t(T(), O())))
155163
156164
157-func ae () = a(J())
165+func ae () = Address(fromBase58String(t(T(), S())))
158166
159167
160-func af () = a(K())
168+func af () = fromBase58String(x(I()))
161169
162170
163-func ag () = fromBase58String(w(L()))
171+func ag () = a(J())
164172
165173
166-func ah (P) = valueOrErrorMessage(getInteger(O(toString(P))), "3GBPFL: There is no price value for this level of booster")
174+func ah () = a(K())
167175
168176
169-func ai (P) = valueOrErrorMessage(getString(Q(toString(P))), "3GBNFL: There is no such booster")
177+func ai () = a(L())
170178
171179
172-func aj (ak) = if (isDefined(ak.assetId))
180+func aj () = fromBase58String(x(M()))
181+
182+
183+func ak (Q) = valueOrErrorMessage(getInteger(P(toString(Q))), "3GBPFL: There is no price value for this level of booster")
184+
185+
186+func al (Q) = valueOrErrorMessage(getString(R(toString(Q))), "3GBNFL: There is no such booster")
187+
188+
189+func am (an) = if (isDefined(an.assetId))
173190 then throw("RCAP: Please attach waves")
174191 else {
175- let al = getIntegerValue(R(), M())
176- if ((ak.amount != al))
177- then throw((("RCAP: Please attach exactly " + toString(al)) + " amount of wavelets"))
178- else [ScriptTransfer(ab(), al, unit)]
192+ let ao = getIntegerValue(T(), N())
193+ if ((an.amount != ao))
194+ then throw((("RCAP: Please attach exactly " + toString(ao)) + " amount of wavelets"))
195+ else [ScriptTransfer(ad(), ao, unit)]
179196 }
180197
181198
182-func am (an) = {
183- let c = an
199+func ap (aq) = {
200+ let c = aq
184201 if ($isInstanceOf(c, "String"))
185202 then {
186- let ao = c
187- ao
203+ let ar = c
204+ ar
188205 }
189206 else throw("3AS: wrong type, expected: String")
190207 }
191208
192209
193-func ap (f,aq,ar) = {
194- let h = value(ar.assetId)
195- let as = value(assetInfo(h)).issuer
196- let at = o(h)
197- let s = at._1
198- let r = at._2
199- let au = l(aq)
200- let av = a(au)
201- let aw = k(aq)
202- let ax = (a(aw) - av)
203- if ((ar.amount != 1))
210+func as (j,at,au) = {
211+ let f = value(au.assetId)
212+ let av = value(assetInfo(f)).issuer
213+ let aw = o(f)
214+ let s = aw._1
215+ let r = aw._2
216+ let ax = k(at)
217+ let ay = a(ax)
218+ let az = i(at)
219+ let aA = (a(az) - ay)
220+ if ((au.amount != 1))
204221 then throw("NFT is not attached")
205- else if (if ((as != V()))
206- then (as != W())
222+ else if (if ((av != X()))
223+ then (av != Y())
207224 else false)
208225 then throw("ivalid NFT attached")
209- else if ((0 >= ax))
210- then throw(("No spots available in hunt for: " + aq))
226+ else if ((0 >= aA))
227+ then throw(("No spots available in hunt for: " + at))
211228 else {
212- let ay = ((("address_" + toString(this)) + "_perchesAvailable_") + s)
213- let az = {
214- let c = getInteger(Y(), ay)
229+ let aB = ((("address_" + toString(this)) + "_perchesAvailable_") + s)
230+ let aC = {
231+ let c = getInteger(aa(), aB)
215232 if ($isInstanceOf(c, "Int"))
216233 then {
217234 let d = c
218235 d
219236 }
220237 else 0
221238 }
222- if ((az == az))
239+ if ((aC == aC))
223240 then {
224- let aA = Z()
225- let aB = if ((az > 0))
226- then unit
227- else invoke(Y(), "buyPerch", [s, ""], [AttachedPayment(aA, 100000000)])
228- if ((aB == aB))
229- then {
230- let aC = if ((r == false))
231- then invoke(Y(), "stakeNFT", nil, [AttachedPayment(h, 1)])
232- else invoke(Y(), "stakeJackpot", [s], [AttachedPayment(h, 1)])
233- if ((aC == aC))
234- then [IntegerEntry(au, (av + 1)), StringEntry(j(h), f), BooleanEntry(m(f, toBase58String(h)), true), IntegerEntry(g(h), (lastBlock.timestamp + ae()))]
235- else throw("Strict value is not equal to itself.")
236- }
237- else throw("Strict value is not equal to itself.")
241+ let aD = ab()
242+[IntegerEntry(ax, (ay + 1)), StringEntry(h(f), j), BooleanEntry(l(j, toBase58String(f)), true), IntegerEntry(e(f), (lastBlock.timestamp + ah())), BooleanEntry(n(j, toBase58String(f)), true)]
238243 }
239244 else throw("Strict value is not equal to itself.")
240245 }
241246 }
242247
243248
244-func aD (n,f) = {
245- let h = fromBase58String(n)
246- let at = o(h)
247- let s = at._1
248- let r = at._2
249- let au = l(f)
250- let aE = j(h)
251- let aF = (a(g(h)) - lastBlock.timestamp)
252- if ((w(aE) != f))
249+func aE (m,j) = {
250+ let f = fromBase58String(m)
251+ let aw = o(f)
252+ let s = aw._1
253+ let r = aw._2
254+ let ax = k(j)
255+ let aF = h(f)
256+ let aG = (a(e(f)) - lastBlock.timestamp)
257+ if ((x(aF) != j))
253258 then throw("3IULD: The duck is not yours")
254- else if ((aF > 0))
255- then throw((("3IUL: You need to wait to unlock " + toString((aF / 1000))) + " seconds"))
256- else [IntegerEntry(i(h), (lastBlock.timestamp + af()))]
259+ else if ((aG > 0))
260+ then throw((("3IUL: You need to wait to unlock " + toString((aG / 1000))) + " seconds"))
261+ else [IntegerEntry(g(f), (lastBlock.timestamp + ai()))]
257262 }
258263
259264
260-func aG (n,f,aH) = {
261- let h = fromBase58String(n)
262- let at = o(h)
263- let s = at._1
264- let r = at._2
265- let au = l(aH)
266- let aE = j(h)
267- let aF = (a(i(h)) - lastBlock.timestamp)
268- if ((w(aE) != f))
265+func aH (m,j,aI) = {
266+ let f = fromBase58String(m)
267+ let aw = o(f)
268+ let s = aw._1
269+ let r = aw._2
270+ let ax = k(aI)
271+ let aF = h(f)
272+ let aG = (a(g(f)) - lastBlock.timestamp)
273+ if ((x(aF) != j))
269274 then throw("3UD: The duck is not yours")
270- else if ((aF > 0))
271- then throw((("3UD: You need to wait to unlock " + toString((aF / 1000))) + " seconds"))
275+ else if ((aG > 0))
276+ then throw((("3UD: You need to wait to unlock " + toString((aG / 1000))) + " seconds"))
272277 else {
273- let aI = if ((r == true))
274- then "unstakeJackpotWithoutClaimEgg"
275- else "unstakeNFTWithoutClaim"
276- let aB = invoke(Y(), aI, [n], nil)
277- if ((aB == aB))
278- then [ScriptTransfer(Address(fromBase58String(f)), 1, h), DeleteEntry(m(f, n)), DeleteEntry(aE), IntegerEntry(au, (a(au) - 1))]
278+ let aJ = w(n(j, m))
279+ let aK = if (aJ)
280+ then nil
281+ else {
282+ let aL = if ((r == true))
283+ then "unstakeJackpotWithoutClaimEgg"
284+ else "unstakeNFTWithoutClaim"
285+ let aM = invoke(aa(), aL, [m], nil)
286+ if ((aM == aM))
287+ then nil
288+ else throw("Strict value is not equal to itself.")
289+ }
290+ if ((aK == aK))
291+ then [ScriptTransfer(Address(fromBase58String(j)), 1, f), DeleteEntry(l(j, m)), DeleteEntry(aF), IntegerEntry(ax, (a(ax) - 1))]
279292 else throw("Strict value is not equal to itself.")
280293 }
281294 }
282295
283296
284-func aJ (aK,b,an) = if ((aK.caller != this))
285- then throw("Only administrator can call this method")
286- else {
287- let c = an
288- if ($isInstanceOf(c, "Int"))
289- then {
290- let aL = c
291-[IntegerEntry(b, aL)]
292- }
293- else if ($isInstanceOf(c, "String"))
294- then {
295- let aM = c
296-[StringEntry(b, aM)]
297- }
298- else if ($isInstanceOf(c, "Boolean"))
299- then {
300- let d = c
301-[BooleanEntry(b, d)]
302- }
303- else if ($isInstanceOf(c, "ByteVector"))
304- then {
305- let aN = c
306-[BinaryEntry(b, aN)]
307- }
308- else throw("Bad value type")
309- }
310-
311-
312-@Callable(aK)
313-func updateSettingInt (b,an) = aJ(aK, b, an)
314-
315-
316-
317-@Callable(aK)
318-func updateSettingStr (b,an) = aJ(aK, b, an)
319-
320-
321-
322-@Callable(aK)
323-func updateSettingBoolean (b,an) = aJ(aK, b, an)
324-
325-
326-
327-@Callable(aK)
328-func updateSettingByteVector (b,an) = aJ(aK, b, an)
329-
330-
331-
332-@Callable(aK)
333-func buyAccessItemInternal (f) = if ((aK.caller != this))
297+@Callable(aN)
298+func buyAccessItemInternal (j) = if ((aN.caller != this))
334299 then throw("3BAII: internal use only")
335300 else {
336- let aO = Issue(("ACCESS-" + S()), ((("[Access] " + T()) + " access NFT for ") + U()), 1, 0, false)
301+ let aO = Issue(("ACCESS-" + U()), ((("[Access] " + V()) + " access NFT for ") + W()), 1, 0, false)
337302 let aP = toBase58String(calculateAssetId(aO))
338- let aw = k(f)
339- $Tuple2([aO, StringEntry((("accessItem_" + aP) + "_owner"), f), StringEntry((("address_" + f) + "_owning"), aP), IntegerEntry(aw, (a(aw) + 1))], aP)
303+ let az = i(j)
304+ $Tuple2([aO, StringEntry((("accessItem_" + aP) + "_owner"), j), StringEntry((("address_" + j) + "_owning"), aP), IntegerEntry(az, (a(az) + 1))], aP)
340305 }
341306
342307
343308
344-@Callable(aK)
345-func configureOracle (aQ,aR,aS,aT) = if ((aK.caller != this))
309+@Callable(aN)
310+func configureOracle (aQ,aR,aS,aT) = if ((aN.caller != this))
346311 then throw("3CO: admin only")
347312 else [StringEntry("static_oracleAddress", aQ), StringEntry("static_shortGameName", aR), StringEntry("static_longGameName", aS), StringEntry("static_nftName", aT)]
348313
349314
350315
351-@Callable(aK)
352-func deleteSetting (b) = if ((aK.caller != this))
316+@Callable(aN)
317+func deleteSetting (b) = if ((aN.caller != this))
353318 then throw("3DS: Only administrator can call this method")
354319 else [DeleteEntry(b)]
355320
356321
357322
358-@Callable(aK)
359-func buyBooster () = {
360- let aU = e(toString(aK.caller))
361- let aV = a(aU)
362- let aW = (aV + 1)
363- let ar = value(aK.payments[0])
364- let aX = ah(aW)
365- let aY = ag()
366- if ((ar.amount != aX))
367- then throw(("3BB: Bad price, it should be: " + toString(aX)))
368- else if ((ar.assetId != aY))
369- then throw(("3BB: Bad payment attached, it should be: " + toBase58String(aY)))
370- else {
371- let aZ = ai(aW)
372- let ba = Issue(((S() + "-") + aZ), ((("[Booster] " + T()) + " booster for the game, level = ") + toString(aW)), 1, 0, false)
373- let bb = calculateAssetId(ba)
374-[ba, IntegerEntry(aU, aW), ScriptTransfer(aK.caller, 1, bb)]
375- }
376- }
377-
378-
379-
380-@Callable(aK)
323+@Callable(aN)
381324 func buyAccessItemAndLockDuck () = {
382- let bc = value(aK.payments[0])
383- let bd = value(aK.payments[1])
384- let f = toString(aK.originCaller)
385- if ((bc.assetId != ac()))
325+ let aU = value(aN.payments[0])
326+ let aV = value(aN.payments[1])
327+ let j = toString(aN.originCaller)
328+ if ((aU.assetId != af()))
386329 then throw("3BAI: Wrong asset attached")
387- else if ((bc.amount != ad()))
330+ else if ((aU.amount != ag()))
388331 then throw("3BAI: Wrong amount of assets attached")
389332 else {
390- let be = am(invoke(this, "buyAccessItemInternal", [f], nil))
391- if ((be == be))
333+ let aW = ap(invoke(this, "buyAccessItemInternal", [j], nil))
334+ if ((aW == aW))
392335 then {
393- let bf = if ((aK.caller == X()))
394- then nil
395- else aj(aK.payments[2])
396- if ((bf == bf))
336+ let aX = invoke(ae(), "burnAttachedPayments", nil, [AttachedPayment(ab(), aU.amount)])
337+ if ((aX == aX))
397338 then {
398- let bg = (ap(f, f, bd) ++ bf)
399- $Tuple2(bg, be)
339+ let aY = if ((aN.caller == Z()))
340+ then nil
341+ else am(aN.payments[2])
342+ if ((aY == aY))
343+ then {
344+ let aZ = (as(j, j, aV) ++ aY)
345+ $Tuple2(aZ, aW)
346+ }
347+ else throw("Strict value is not equal to itself.")
400348 }
401349 else throw("Strict value is not equal to itself.")
402350 }
403351 else throw("Strict value is not equal to itself.")
404352 }
405353 }
406354
407355
408356
409-@Callable(aK)
357+@Callable(aN)
410358 func buyAccessItem () = {
411- let f = toString(aK.originCaller)
412- let bc = value(aK.payments[0])
413- if ((bc.assetId != ac()))
414- then throw("3BAI: Wrong asset attached")
415- else if ((bc.amount != ad()))
359+ let j = toString(aN.originCaller)
360+ let aU = value(aN.payments[0])
361+ if ((aU.assetId != af()))
362+ then throw(("3BAI: Wrong asset attached " + toBase58String(af())))
363+ else if ((aU.amount != ag()))
416364 then throw("3BAI: Wrong amount of assets attached")
417365 else {
418- let be = am(invoke(this, "buyAccessItemInternal", [f], nil))
419- if ((be == be))
366+ let aW = ap(invoke(this, "buyAccessItemInternal", [j], nil))
367+ if ((aW == aW))
420368 then {
421- let bf = if ((aK.caller == X()))
422- then nil
423- else aj(aK.payments[1])
424- if ((bf == bf))
425- then $Tuple2(bf, be)
369+ let aX = invoke(ae(), "burnAttachedPayments", nil, [AttachedPayment(ab(), aU.amount)])
370+ if ((aX == aX))
371+ then {
372+ let aY = if ((aN.caller == Z()))
373+ then nil
374+ else am(aN.payments[1])
375+ if ((aY == aY))
376+ then $Tuple2(aY, aW)
377+ else throw("Strict value is not equal to itself.")
378+ }
426379 else throw("Strict value is not equal to itself.")
427380 }
428381 else throw("Strict value is not equal to itself.")
429382 }
430383 }
431384
432385
433386
434-@Callable(aK)
435-func buyAccessItemOther (bh) = {
436- let bc = value(aK.payments[0])
437- if ((bc.assetId != ac()))
387+@Callable(aN)
388+func buyAccessItemOther (ba) = {
389+ let aU = value(aN.payments[0])
390+ if ((aU.assetId != af()))
438391 then throw("3BAI: Wrong asset attached")
439- else if ((bc.amount != ad()))
392+ else if ((aU.amount != ag()))
440393 then throw("3BAI: Wrong amount of assets attached")
441394 else {
442- let be = am(invoke(this, "buyAccessItemInternal", [bh], nil))
443- if ((be == be))
444- then $Tuple2(nil, be)
395+ let aW = ap(invoke(this, "buyAccessItemInternal", [ba], nil))
396+ if ((aW == aW))
397+ then {
398+ let aX = invoke(ae(), "burnAttachedPayments", nil, [AttachedPayment(ab(), aU.amount)])
399+ if ((aX == aX))
400+ then $Tuple2(nil, aW)
401+ else throw("Strict value is not equal to itself.")
402+ }
445403 else throw("Strict value is not equal to itself.")
446404 }
447405 }
448406
449407
450408
451-@Callable(aK)
409+@Callable(aN)
452410 func lockDuck () = {
453- let f = toString(aK.originCaller)
454- let bd = value(aK.payments[0])
455- let bf = aj(aK.payments[1])
456- if ((bf == bf))
457- then (ap(f, f, bd) ++ bf)
411+ let j = toString(aN.originCaller)
412+ let aV = value(aN.payments[0])
413+ let aY = am(aN.payments[1])
414+ if ((aY == aY))
415+ then (as(j, j, aV) ++ aY)
458416 else throw("Strict value is not equal to itself.")
459417 }
460418
461419
462420
463-@Callable(aK)
464-func initUnlock (n) = {
465- let f = toString(aK.caller)
466- let bf = aj(aK.payments[0])
467- if ((bf == bf))
468- then (aD(n, f) ++ bf)
421+@Callable(aN)
422+func initUnlock (m) = {
423+ let j = toString(aN.caller)
424+ let aY = am(aN.payments[0])
425+ if ((aY == aY))
426+ then (aE(m, j) ++ aY)
469427 else throw("Strict value is not equal to itself.")
470428 }
471429
472430
473431
474-@Callable(aK)
475-func lockDuckRenting (bi) = if ((aK.caller != X()))
432+@Callable(aN)
433+func lockDuckRenting (bb) = if ((aN.caller != Z()))
476434 then throw("3UDO: Renting only!")
477435 else {
478- let f = toString(aK.caller)
479- let bd = value(aK.payments[0])
480- ap(f, bi, bd)
436+ let j = toString(aN.caller)
437+ let aV = value(aN.payments[0])
438+ as(j, bb, aV)
481439 }
482440
483441
484442
485-@Callable(aK)
486-func unlockDuckRenting (n,aH) = if ((aK.caller != X()))
443+@Callable(aN)
444+func unlockDuckRenting (m,aI) = if ((aN.caller != Z()))
487445 then throw("3UDO: Renting only!")
488446 else {
489- let f = toString(aK.caller)
490- aG(n, f, aH)
447+ let j = toString(aN.caller)
448+ aH(m, j, aI)
491449 }
492450
493451
494452
495-@Callable(aK)
496-func unlockDuckOther (n) = if ((aK.caller != this))
453+@Callable(aN)
454+func unlockDuckOther (m) = if ((aN.caller != this))
497455 then throw("3UDO: Admin only!")
498456 else {
499- let bj = w(j(fromBase58String(n)))
500- aG(n, bj, bj)
457+ let bc = x(h(fromBase58String(m)))
458+ aH(m, bc, bc)
501459 }
502460
503461
504462
505-@Callable(aK)
506-func unlockDuck (n,bk,bl,bm) = if ((bl != true))
463+@Callable(aN)
464+func unlockDuck (m,bd,be,bf) = if ((be != true))
507465 then throw("3UD: Not allowed to unlock the duck!")
508466 else {
509- let bn = 3600000
510- let bo = lastBlock.timestamp
511- if ((bo > (bk + bn)))
467+ let bg = 3600000
468+ let bh = lastBlock.timestamp
469+ if ((bh > (bd + bg)))
512470 then throw("3UD: Outdated signature!")
513471 else {
514- let f = toString(aK.caller)
515- let bp = makeString([n, toString(bk), toString(bl)], ";")
516- if (!(sigVerify_8Kb(toBytes(bp), fromBase58String(bm), aa())))
517- then throw(((("3UD: Invalid proof from backend key" + toBase58String(aa())) + " ") + bp))
472+ let j = toString(aN.caller)
473+ let bi = makeString([m, toString(bd), toString(be)], ";")
474+ if (!(sigVerify_8Kb(toBytes(bi), fromBase58String(bf), ac())))
475+ then throw(((("3UD: Invalid proof from backend key" + toBase58String(ac())) + " ") + bi))
518476 else {
519- let bf = aj(aK.payments[0])
520- if ((bf == bf))
521- then (aG(n, f, f) ++ bf)
477+ let aY = am(aN.payments[0])
478+ if ((aY == aY))
479+ then (aH(m, j, j) ++ aY)
522480 else throw("Strict value is not equal to itself.")
523481 }
524482 }
525483 }
526484
527485

github/deemru/w8io/0e76f2f 
145.68 ms