tx · 56XrT1RJsvEiWBSyi8XFbe73xbnuVTuEp1weMNWgpuSj

3N6PvAL6whpaLE48xjeZbmU7vRWQmuz8AA5:  -0.01800000 Waves

2024.11.14 21:51 [3371500] smart account 3N6PvAL6whpaLE48xjeZbmU7vRWQmuz8AA5 > SELF 0.00000000 Waves

{ "type": 13, "id": "56XrT1RJsvEiWBSyi8XFbe73xbnuVTuEp1weMNWgpuSj", "fee": 1800000, "feeAssetId": null, "timestamp": 1731610351463, "version": 2, "chainId": 84, "sender": "3N6PvAL6whpaLE48xjeZbmU7vRWQmuz8AA5", "senderPublicKey": "3ZB9kd3fTB7j5xvuxZe67A7aT4cNTs2gUk1tyFaCdWJ6", "proofs": [ "4aNKo7BWD62jzpsMGp5u4HbGKLKDduDTTpH58GNZDr4jGFzQDCZqvieadMgQ8t99x1YrK96wzXmf5ijCuyCTSp3M" ], "script": "base64:BgIWCAISAwoBCBIDCgEIEgMKAQgSAwoBCDABFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABEXRyeUdldEludEV4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhCQACAQIbUlRHSUU6IFNvbWV0aGluZyB3ZW50IHdyb25nAQlhc0Jvb2xlYW4BBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAdib29sZWFuBQckbWF0Y2gwBQdib29sZWFuCQACAQIiRkFCOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogQm9vbGVhbgEMdHJ5R2V0U3RyaW5nAQNrZXkJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIFBHRoaXMFA2tleQAQZGVsYXlGb3JIYXRjaGluZwACARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARRzdGF0aWNLZXlfZWdnQXNzZXRJZAACEXN0YXRpY19lZ2dBc3NldElkARpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwACF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MBGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwACGHN0YXRpY19mYXJtaW5nQWRkcmVzc05ldwEZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwACFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBGXN0YXRpY0tleV9nYW1lRGFwcEFkZHJlc3MAAhZzdGF0aWNfZ2FtZURhcHBBZGRyZXNzARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAITc3RhdGljX2l0ZW1zQWRkcmVzcwEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzARVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAhJzdGF0aWNfaHVudEFkZHJlc3MBFXN0YXRpY0tleV9idXJuQWRkcmVzcwACEnN0YXRpY19idXJuQWRkcmVzcwEcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwACGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAhRzdGF0aWNfZmVlQWdncmVnYXRvcgEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAQ1nZXRFZ2dBc3NldElkAAkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFHN0YXRpY0tleV9lZ2dBc3NldElkAAETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAARFnZXRGYXJtaW5nQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwABEmdldEJhYnlEdWNrQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGXN0YXRpY0tleV9iYWJ5RHVja0FkZHJlc3MAARJnZXRHYW1lRGFwcEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARlzdGF0aWNLZXlfZ2FtZURhcHBBZGRyZXNzAAEPZ2V0SXRlbXNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwABEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAEOZ2V0SHVudEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAQ5nZXRCdXJuQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFXN0YXRpY0tleV9idXJuQWRkcmVzcwABFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAARBnZXRGZWVBZ2dyZWdhdG9yAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQdwYXltZW50AwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhlSQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAlmZWVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHFJDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwAElBIT0VOSVhCQVNFT1BUSU9OUwDoBwENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEIYXNTdHJpbmcBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMDCQABAgUHJG1hdGNoMAIDSW50BAFzBQckbWF0Y2gwCQACAQImd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZywgZ290OiBJbnQDCQABAgUHJG1hdGNoMAIEVW5pdAQBcwUHJG1hdGNoMAkAAgECJ3dyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogVW5pdAkAAgECHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcACWZlZUFtb3VudAkBDXRyeUdldEludGVnZXIBAgxjdXJyZW50UHJpY2UBEGdldEFtb3VudE9yQ2xlYXIBBmFtb3VudAMJAQhjb250YWlucwIFBmFtb3VudAIBMAIABQZhbW91bnQBDmdldEFzc2V0T3JpZ2luAQpnZW5lcmF0aW9uAwkAAAIFCmdlbmVyYXRpb24CAUcJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBEWdldEJyZWVkZXJBZGRyZXNzAAEOZ2V0QXNzZXRSYXJpdHkCCGdlbm90eXBlCmdlbmVyYXRpb24ECHF1YW50aXR5CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEOZ2V0QXNzZXRPcmlnaW4BBQpnZW5lcmF0aW9uCQCsAgIJAKwCAgIGc3RhdHNfBQhnZW5vdHlwZQIJX3F1YW50aXR5BAVwb3dlcgkAbAYJAGkCAJBOBQhxdWFudGl0eQAEAAUAAQACBQVGTE9PUgMJAGYCBQVwb3dlcgAABQVwb3dlcgACARRnZXRBc3NldEZhcm1pbmdQb3dlcgEHYXNzZXRJZAMDCQAAAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJARFnZXRCcmVlZGVyQWRkcmVzcwAGCQAAAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAQJYXNzZXROYW1lCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUECmdlbmVyYXRpb24JAK8CAgkAsgICBQlhc3NldE5hbWUAAgABBAdmYXJtR2VuCQEIYXNTdHJpbmcBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACDmdldEdlbkZyb21OYW1lCQDMCAIFCWFzc2V0TmFtZQUDbmlsBQNuaWwDCQAAAgUHZmFybUdlbgUHZmFybUdlbgkAlAoCBQdmYXJtR2VuCQEOZ2V0QXNzZXRSYXJpdHkCBQdmYXJtR2VuBQpnZW5lcmF0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQINbm90IHZhbGlkIE5GVAEPZ2V0UmFuZG9tTnVtYmVyBAdvcHRpb25zBHR4SWQUaGF0Y2hpbmdGaW5pc2hIZWlnaHQGb2Zmc2V0BA9yYW5kb21TZWVkQmxvY2sJAQV2YWx1ZQEJAO0HAQkAZQIFFGhhdGNoaW5nRmluaXNoSGVpZ2h0AAEECnJhbmRvbUhhc2gJAPcDAQkAywECBQR0eElkCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgkAagIJALIJAgUKcmFuZG9tSGFzaAkAaAIFBm9mZnNldAAIBQdvcHRpb25zAQxnZXRSYW5kb21XaW4DAnR4DGZpbmlzaEhlaWdodAthc3NldFJhcml0eQQNamFja3BvdFJhbmRvbQkBD2dldFJhbmRvbU51bWJlcgQAyAEFAnR4BQxmaW5pc2hIZWlnaHQAAQMJAAACBQ1qYWNrcG90UmFuZG9tAAECB3Bob2VuaXgEAW4JAQ9nZXRSYW5kb21OdW1iZXIEAOgHBQJ0eAUMZmluaXNoSGVpZ2h0AAADCQBmAgD0AwUBbgITaXRlbSFBUlQtTVVUQVJJVU0tRAITaXRlbSFBUlQtTVVUQVJJVU0tRwEJZ2V0T3JpZ2luAQdhc3NldElkBAlhc3NldE5hbWUICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEbmFtZQQKZ2VuZXJhdGlvbgkArwICCQCyAgIFCWFzc2V0TmFtZQACAAEDAwkAAAIFCmdlbmVyYXRpb24CAUcGCQAAAgUKZ2VuZXJhdGlvbgIBSgkBE2dldEluY3ViYXRvckFkZHJlc3MACQERZ2V0QnJlZWRlckFkZHJlc3MAAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJAAIBCQCsAgICKVJBSTogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludCwgYnV0IGdvdDogBQZzdHJpbmcJAAIBAh5SQUk6IHdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBB2dldEJvb2wBA2tleQQHJG1hdGNoMAkAmwgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBCWlzVGVzdEVudgAJAQdnZXRCb29sAQIHVEVTVEVOVgEVZmluaXNoUmViaXJ0aEludGVybmFsBAZpbml0VHgHYWRkcmVzcwdwYXltZW50BmRvdWJsZQQLZmluaXNoQmxvY2sJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIMX2ZpbmlzaEJsb2NrBAthc3NldFJhcml0eQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgxfYXNzZXRSYXJpdHkEBnN0YXR1cwkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBBQdwYXltZW50AwkAAAIFDHZhbGlkUGF5bWVudAUMdmFsaWRQYXltZW50BAxyZWNvcmRBY3Rpb24JAPwHBAkBEWdldENvdXBvbnNBZGRyZXNzAAIMcmVjb3JkQWN0aW9uCQDMCAICB1JFQklSVEgFA25pbAUDbmlsAwkAAAIFDHJlY29yZEFjdGlvbgUMcmVjb3JkQWN0aW9uCgEUZ2V0QWNjZXNzSXRlbUFzc2V0SWQBB2FkZHJlc3MJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgUHYWRkcmVzcwIYc3RhdGljX2FjY2Vzc0l0ZW1Bc3NldElkCgESZ2V0QWNjZXNzSXRlbVByaWNlAQdhZGRyZXNzCQERdHJ5R2V0SW50RXh0ZXJuYWwCBQdhZGRyZXNzAhZzdGF0aWNfYWNjZXNzSXRlbVByaWNlAwkBAiE9AgUGc3RhdHVzAgRvcGVuCQACAQIfcmViaXJ0aCBpcyBmaW5pc2hlZCBvciBub3Qgb3BlbgMJAGYCBQtmaW5pc2hCbG9jawUGaGVpZ2h0CQACAQIeeW91IGNhbm5vdCBmaW5pc2ggcmViaXJ0aCwgeWV0BAN3aW4JAQxnZXRSYW5kb21XaW4DCQDZBAEFBmluaXRUeAULZmluaXNoQmxvY2sFC2Fzc2V0UmFyaXR5BAR0eElkBQZpbml0VHgEBnJlc3VsdAMJAQIhPQIJALMJAgUDd2luAgVwZXJjaAUEdW5pdAQFY29sb3IJALICAgUDd2luAAEEBnJlc3VsdAMJAQEhAQUGZG91YmxlBAVmaXJzdAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgxhZGRGcmVlUGVyY2gJAMwIAgUHYWRkcmVzcwkAzAgCBQVjb2xvcgkAzAgCAAEFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAVmaXJzdAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgxhZGRGcmVlUGVyY2gJAMwIAgUHYWRkcmVzcwkAzAgCBQVjb2xvcgkAzAgCAAIFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfcmVzdWx0MQkBCGFzU3RyaW5nAQUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIFX3dpbjEFA3dpbgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBnJlc3VsdAUGcmVzdWx0BQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUDd2luAglpbmN1YmF0b3IEBnJlc3VsdAMJAQEhAQUGZG91YmxlBAVmaXJzdAkA/AcECQETZ2V0SW5jdWJhdG9yQWRkcmVzcwACDWlzc3VlRnJlZUR1Y2sJAMwIAgUHYWRkcmVzcwkAzAgCBQR0eElkBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQFZmlyc3QJAPwHBAkBE2dldEluY3ViYXRvckFkZHJlc3MAAg1pc3N1ZUZyZWVEdWNrCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0BAZzZWNvbmQJAPwHBAkBEmdldEJhYnlEdWNrQWRkcmVzcwACEWlzc3VlRnJlZUR1Y2tsaW5nCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAkAzAgCAGQFA25pbAUDbmlsAwkAAAIFBnNlY29uZAUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCCF9yZXN1bHQxCQEIYXNTdHJpbmcBBQZzZWNvbmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIFX3dpbjECDGR1Y2tsaW5nXzEwMAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBnJlc3VsdAUGcmVzdWx0BQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUDd2luAgJhcgQHYXNzZXRJZAkBFGdldEFjY2Vzc0l0ZW1Bc3NldElkAQkBDmdldEh1bnRBZGRyZXNzAAQFcHJpY2UJARJnZXRBY2Nlc3NJdGVtUHJpY2UBCQEOZ2V0SHVudEFkZHJlc3MABARjYWxsCQD8BwQJAQ5nZXRIdW50QWRkcmVzcwACEmJ1eUFjY2Vzc0l0ZW1PdGhlcgkAzAgCBQdhZGRyZXNzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFBXByaWNlBQNuaWwDCQAAAgUEY2FsbAUEY2FsbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQRjYWxsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUDd2luAgdwaG9lbml4BARjYWxsCQD8BwQJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAIMaXNzdWVKYWNrcG90CQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAkAzAgCAghXV1dXSFdURgUDbmlsBQNuaWwDCQAAAgUEY2FsbAUEY2FsbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQRjYWxsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQECIT0CCQCzCQIFA3dpbgIIZHVja2xpbmcFBHVuaXQEBWxldmVsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQN3aW4CAV8AAQQKbGV2ZWxGaW5hbAMFBmRvdWJsZQkAaAIAAgUFbGV2ZWwFBWxldmVsBARjYWxsCQD8BwQJARJnZXRCYWJ5RHVja0FkZHJlc3MAAhFpc3N1ZUZyZWVEdWNrbGluZwkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQJAMwIAgUKbGV2ZWxGaW5hbAUDbmlsBQNuaWwDCQAAAgUEY2FsbAUEY2FsbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQRjYWxsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQECIT0CCQCzCQIFA3dpbgIEaXRlbQUEdW5pdAQIaXRlbU5hbWUJAJEDAgkAtQkCBQN3aW4CASEAAQQGcmVzdWx0AwkBASEBBQZkb3VibGUEBWZpcnN0CQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhJpc3N1ZUFydGVmYWN0SW5kZXgJAMwIAgUIaXRlbU5hbWUJAMwIAgUHYWRkcmVzcwkAzAgCAAAFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAVmaXJzdAkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAISaXNzdWVBcnRlZmFjdEluZGV4CQDMCAIFCGl0ZW1OYW1lCQDMCAIFB2FkZHJlc3MJAMwIAgAABQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QEBnNlY29uZAkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAISaXNzdWVBcnRlZmFjdEluZGV4CQDMCAIFCGl0ZW1OYW1lCQDMCAIFB2FkZHJlc3MJAMwIAgABBQNuaWwFA25pbAMJAAACBQZzZWNvbmQFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQZzZWNvbmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIFX3dpbjEFA3dpbgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBnJlc3VsdAUGcmVzdWx0BQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAjNSRkI6IFNvbWUgZXJyb3Igb2NjdXJlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucyEJAM4IAgkAzggCBQZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIEX3dpbgUDd2luCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMCBmZpbmlzaAUDbmlsBQx2YWxpZFBheW1lbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAWkBD2NvbmZpZ3VyZU9yYWNsZQEGb3JhY2xlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIPUkNVOiBhZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQICFHN0YXRpY19vcmFjbGVBZGRyZXNzBQZvcmFjbGUFA25pbAFpAQtpbml0UmViaXJ0aAEOcmVmZXJlckFkZHJlc3MEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBmluaXRUeAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBAhNORlQgaXMgbm90IGF0dGFjaGVkBBNhbW91bnRQYWlkQnlDb3Vwb25zCQEFYXNJbnQBCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACCnVzZUNvdXBvbnMJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBRNhbW91bnRQYWlkQnlDb3Vwb25zBRNhbW91bnRQYWlkQnlDb3Vwb25zBAlsZWZ0VG9QYXkJAGUCBQlmZWVBbW91bnQFE2Ftb3VudFBhaWRCeUNvdXBvbnMEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAEDCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQEB3BheW1lbnQDCQECIT0CBQlsZWZ0VG9QYXkAAAQKZmVlUGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwACAwkBAiE9AggFCmZlZVBheW1lbnQHYXNzZXRJZAkBDWdldEVnZ0Fzc2V0SWQACQACAQIkWW91IG5lZWQgdG8gYXR0YWNoIEVHRyB0b2tlbnMgYXMgZmVlAwkAZgIFCWxlZnRUb1BheQgFCmZlZVBheW1lbnQGYW1vdW50CQACAQkArAICAkBZb3UgbmVlZCB0byBhdHRhY2ggdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHIHRva2VucyBhcyBmZWU6IDAuCQCkAwEFCWxlZnRUb1BheQQVcmVmZXJlclJld2FyZEZvclBlcmNoCQBrAwUJbGVmdFRvUGF5AAUAZAQHcmVmQ2FsbAkBCWFzQm9vbGVhbgEJAPwHBAkBFWdldFJlZkNvbnRyYWN0QWRkcmVzcwACCnJlZlBheW1lbnQJAMwIAgUOcmVmZXJlckFkZHJlc3MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABRVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFA25pbAMJAAACBQdyZWZDYWxsBQdyZWZDYWxsBAZ0b0J1cm4DBQdyZWZDYWxsCQBlAgUJbGVmdFRvUGF5BRVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFCWxlZnRUb1BheQQIYnVybkNhbGwJAPwHBAkBDmdldEJ1cm5BZGRyZXNzAAIUYnVybkF0dGFjaGVkUGF5bWVudHMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABQZ0b0J1cm4FA25pbAMJAAACBQhidXJuQ2FsbAUIYnVybkNhbGwFCWxlZnRUb1BheQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAwkAAAIFB3BheW1lbnQFB3BheW1lbnQEDSR0MDEyNzU2MTI4MDUJARRnZXRBc3NldEZhcm1pbmdQb3dlcgEFB2Fzc2V0SWQEA2dlbggFDSR0MDEyNzU2MTI4MDUCXzEEBnJhcml0eQgFDSR0MDEyNzU2MTI4MDUCXzIEBGNhbGwJAPwHBAkBCWdldE9yaWdpbgEFB2Fzc2V0SWQCDHJlZHVjZVJhcml0eQkAzAgCCQDYBAEFB2Fzc2V0SWQJAMwIAgUDZ2VuBQNuaWwFA25pbAMJAAACBQRjYWxsBQRjYWxsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCDF9maW5pc2hCbG9jawkAZAIFBmhlaWdodAUQZGVsYXlGb3JIYXRjaGluZwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4Agdfc3RhdHVzAgRvcGVuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgxfYXNzZXRSYXJpdHkFBnJhcml0eQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfYXNzZXRJZAkA2AQBBQdhc3NldElkBQNuaWwFDHZhbGlkUGF5bWVudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1maW5pc2hSZWJpcnRoAQZpbml0VHgJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwEBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAAHAWkBE2ZpbmlzaFJlYmlydGhEb3VibGUBBmluaXRUeAMJAQEhAQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAIJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBwkAAgECD0ludmFsaWQgcGF5bWVudAQHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtib29zdGVyVHlwZQkBCGFzU3RyaW5nAQkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAIUY2hlY2tBcnRlZmFjdERldGFpbHMJAMwIAgkA2AQBBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQtib29zdGVyVHlwZQULYm9vc3RlclR5cGUDCQAAAgULYm9vc3RlclR5cGUCDkFSVC1HSUZUX0RPVUJMCQDOCAIJAMwIAgkBBEJ1cm4CBQdhc3NldElkAAEFA25pbAkBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAQFBmluaXRUeAkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAQYJAAIBAi1FcnJvciEgV3JvbmcgaXRlbSBhdHRhY2hlZCB0byBkb3VibGUgcmV3YXJkcyEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkAAwkBCWlzVGVzdEVudgAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECWZpcnN0VXNlcgEgURzk/Wb/EmnS8VoUnzuy4vQ7f8HLaCeiNF5sONdX3W0ECnNlY29uZFVzZXIBIFxyDkuu8SFPZuYZRfpqorHtsTYpWV8ZzMyw4U1BiGp9BAl0aGlyZFVzZXIBIKCvkeUteUNhYTISrY65+hhZUZ0tU0k2w9Cj96hgGTtOBA9maXJzdFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCWZpcnN0VXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJZmlyc3RVc2VyAAEAAAQQc2Vjb25kVXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCnNlY29uZFVzZXIAAQAABA90aGlyZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCXRoaXJkVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJdGhpcmRVc2VyAAEAAAQPc2lnbmF0dXJlc0NvdW50CQBkAgkAZAIFD2ZpcnN0VXNlclNpZ25lZAUQc2Vjb25kVXNlclNpZ25lZAUPdGhpcmRVc2VyU2lnbmVkBAckbWF0Y2gwBQJ0eAkAZwIFD3NpZ25hdHVyZXNDb3VudAACWxYiOA==", "height": 3371500, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A7iMdoRVk2SCwHCwEtQqb4TgepQuKq9Zj6NKAdPJD6Sb Next: none Diff:
OldNewDifferences
186186
187187
188188 func getRandomWin (tx,finishHeight,assetRarity) = {
189- let jackpotRandom = getRandomNumber(10, tx, finishHeight, 1)
189+ let jackpotRandom = getRandomNumber(200, tx, finishHeight, 1)
190190 if ((jackpotRandom == 1))
191191 then "phoenix"
192192 else {
193193 let n = getRandomNumber(1000, tx, finishHeight, 0)
194- if ((10 > n))
195- then "item!ART-FREEGENE"
196- else if ((126 > n))
197- then "ar"
198- else if ((186 > n))
199- then "item!ART-FIRE_ARMOUR"
200- else if ((206 > n))
201- then "item!ART-FEED5"
202- else if ((226 > n))
203- then "item!ART-FEED10"
204- else if ((246 > n))
205- then "item!ART-FEED15"
206- else if ((266 > n))
207- then "item!ART-FEED20"
208- else if ((286 > n))
209- then "item!ART-FEED25"
210- else if ((296 > n))
211- then "item!ART-FEED50"
212- else if ((300 > n))
213- then "item!ART-FEED100"
214- else if ((310 > n))
215- then "item!ART-CROWN"
216- else if ((350 > n))
217- then "incubator"
218- else if ((460 > n))
219- then if ((50 > assetRarity))
220- then "item!ART-BUILTBODY"
221- else "item!ART-MUTARIUM-D"
222- else if ((480 > n))
223- then "item!ART-SNAKE"
224- else if ((510 > n))
225- then "item!ART-ROBODUCK"
226- else if ((600 > n))
227- then "item!ART-KATANA"
228- else if ((650 > n))
229- then if ((50 > assetRarity))
230- then "item!ART-SCEPTER"
231- else "item!ART-MUTARIUM-D"
232- else if ((710 > n))
233- then "item!ART-MUTARIUM-D"
234- else if ((720 > n))
235- then "item!ART-MUTARIUM-G"
236- else if ((890 > n))
237- then "duckling_10"
238- else if ((960 > n))
239- then "duckling_20"
240- else "duckling_40"
194+ if ((500 > n))
195+ then "item!ART-MUTARIUM-D"
196+ else "item!ART-MUTARIUM-G"
241197 }
242198 }
243199
450406 else 0
451407 if ((payment == payment))
452408 then {
453- let $t01380913858 = getAssetFarmingPower(assetId)
454- let gen = $t01380913858._1
455- let rarity = $t01380913858._2
409+ let $t01275612805 = getAssetFarmingPower(assetId)
410+ let gen = $t01275612805._1
411+ let rarity = $t01275612805._2
456412 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
457413 if ((call == call))
458414 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetIntExternal (address,key) = match getInteger(address, key) {
1313 case a: Int =>
1414 a
1515 case _ =>
1616 throw("RTGIE: Something went wrong")
1717 }
1818
1919
2020 func asBoolean (value) = match value {
2121 case boolean: Boolean =>
2222 boolean
2323 case _ =>
2424 throw("FAB: wrong type, expected: Boolean")
2525 }
2626
2727
2828 func tryGetString (key) = tryGetStringExternal(this, key)
2929
3030
3131 let delayForHatching = 2
3232
3333 func staticKey_oracleAddress () = "static_oracleAddress"
3434
3535
3636 func staticKey_eggAssetId () = "static_eggAssetId"
3737
3838
3939 func staticKey_incubatorAddress () = "static_incubatorAddress"
4040
4141
4242 func staticKey_breederAddress () = "static_breederAddress"
4343
4444
4545 func staticKey_farmingAddress () = "static_farmingAddressNew"
4646
4747
4848 func staticKey_babyDuckAddress () = "static_babyDuckAddress"
4949
5050
5151 func staticKey_gameDappAddress () = "static_gameDappAddress"
5252
5353
5454 func staticKey_itemsAddress () = "static_itemsAddress"
5555
5656
5757 func staticKey_couponsAddress () = "static_couponsAddress"
5858
5959
6060 func staticKey_huntAddress () = "static_huntAddress"
6161
6262
6363 func staticKey_burnAddress () = "static_burnAddress"
6464
6565
6666 func staticKey_refContractAddress () = "static_refContractAddress"
6767
6868
6969 func staticKey_extraFee () = "static_extraFee"
7070
7171
7272 func staticKey_feeAggregator () = "static_feeAggregator"
7373
7474
7575 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
7676
7777
7878 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
7979
8080
8181 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_incubatorAddress())))
8282
8383
8484 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
8585
8686
8787 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
8888
8989
9090 func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
9191
9292
9393 func getGameDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_gameDappAddress())))
9494
9595
9696 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
9797
9898
9999 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
100100
101101
102102 func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
103103
104104
105105 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
106106
107107
108108 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
109109
110110
111111 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
112112
113113
114114 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
115115 then throw("RCAP: Please attach waves")
116116 else {
117117 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
118118 if ((payment.amount != feeAmount))
119119 then throw((("RCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
120120 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
121121 }
122122
123123
124124 let PHOENIXBASEOPTIONS = 1000
125125
126126 func tryGetInteger (key) = match getInteger(this, key) {
127127 case b: Int =>
128128 b
129129 case _ =>
130130 0
131131 }
132132
133133
134134 func asString (value) = match value {
135135 case s: String =>
136136 s
137137 case s: Int =>
138138 throw("wrong type, expected: String, got: Int")
139139 case s: Unit =>
140140 throw("wrong type, expected: String, got: Unit")
141141 case _ =>
142142 throw("wrong type, expected: String")
143143 }
144144
145145
146146 let feeAmount = tryGetInteger("currentPrice")
147147
148148 func getAmountOrClear (amount) = if (contains(amount, "0"))
149149 then ""
150150 else amount
151151
152152
153153 func getAssetOrigin (generation) = if ((generation == "G"))
154154 then getIncubatorAddress()
155155 else getBreederAddress()
156156
157157
158158 func getAssetRarity (genotype,generation) = {
159159 let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
160160 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
161161 if ((power > 0))
162162 then power
163163 else 2
164164 }
165165
166166
167167 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
168168 then true
169169 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
170170 then {
171171 let assetName = value(assetInfo(assetId)).name
172172 let generation = take(takeRight(assetName, 2), 1)
173173 let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
174174 if ((farmGen == farmGen))
175175 then $Tuple2(farmGen, getAssetRarity(farmGen, generation))
176176 else throw("Strict value is not equal to itself.")
177177 }
178178 else throw("not valid NFT")
179179
180180
181181 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
182182 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
183183 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
184184 (toInt(randomHash, (offset * 8)) % options)
185185 }
186186
187187
188188 func getRandomWin (tx,finishHeight,assetRarity) = {
189- let jackpotRandom = getRandomNumber(10, tx, finishHeight, 1)
189+ let jackpotRandom = getRandomNumber(200, tx, finishHeight, 1)
190190 if ((jackpotRandom == 1))
191191 then "phoenix"
192192 else {
193193 let n = getRandomNumber(1000, tx, finishHeight, 0)
194- if ((10 > n))
195- then "item!ART-FREEGENE"
196- else if ((126 > n))
197- then "ar"
198- else if ((186 > n))
199- then "item!ART-FIRE_ARMOUR"
200- else if ((206 > n))
201- then "item!ART-FEED5"
202- else if ((226 > n))
203- then "item!ART-FEED10"
204- else if ((246 > n))
205- then "item!ART-FEED15"
206- else if ((266 > n))
207- then "item!ART-FEED20"
208- else if ((286 > n))
209- then "item!ART-FEED25"
210- else if ((296 > n))
211- then "item!ART-FEED50"
212- else if ((300 > n))
213- then "item!ART-FEED100"
214- else if ((310 > n))
215- then "item!ART-CROWN"
216- else if ((350 > n))
217- then "incubator"
218- else if ((460 > n))
219- then if ((50 > assetRarity))
220- then "item!ART-BUILTBODY"
221- else "item!ART-MUTARIUM-D"
222- else if ((480 > n))
223- then "item!ART-SNAKE"
224- else if ((510 > n))
225- then "item!ART-ROBODUCK"
226- else if ((600 > n))
227- then "item!ART-KATANA"
228- else if ((650 > n))
229- then if ((50 > assetRarity))
230- then "item!ART-SCEPTER"
231- else "item!ART-MUTARIUM-D"
232- else if ((710 > n))
233- then "item!ART-MUTARIUM-D"
234- else if ((720 > n))
235- then "item!ART-MUTARIUM-G"
236- else if ((890 > n))
237- then "duckling_10"
238- else if ((960 > n))
239- then "duckling_20"
240- else "duckling_40"
194+ if ((500 > n))
195+ then "item!ART-MUTARIUM-D"
196+ else "item!ART-MUTARIUM-G"
241197 }
242198 }
243199
244200
245201 func getOrigin (assetId) = {
246202 let assetName = value(assetInfo(assetId)).name
247203 let generation = take(takeRight(assetName, 2), 1)
248204 if (if ((generation == "G"))
249205 then true
250206 else (generation == "J"))
251207 then getIncubatorAddress()
252208 else getBreederAddress()
253209 }
254210
255211
256212 func asInt (value) = match value {
257213 case int: Int =>
258214 int
259215 case string: String =>
260216 throw(("RAI: wrong type, expected: Int, but got: " + string))
261217 case _ =>
262218 throw("RAI: wrong type, expected: Int")
263219 }
264220
265221
266222 func getBool (key) = match getBoolean(this, key) {
267223 case b: Boolean =>
268224 b
269225 case _ =>
270226 false
271227 }
272228
273229
274230 func isTestEnv () = getBool("TESTENV")
275231
276232
277233 func finishRebirthInternal (initTx,address,payment,double) = {
278234 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
279235 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
280236 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
281237 let validPayment = checkAdditionalPayment(payment)
282238 if ((validPayment == validPayment))
283239 then {
284240 let recordAction = invoke(getCouponsAddress(), "recordAction", ["REBIRTH"], nil)
285241 if ((recordAction == recordAction))
286242 then {
287243 func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
288244
289245 func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
290246
291247 if ((status != "open"))
292248 then throw("rebirth is finished or not open")
293249 else if ((finishBlock > height))
294250 then throw("you cannot finish rebirth, yet")
295251 else {
296252 let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
297253 let txId = initTx
298254 let result = if ((indexOf(win, "perch") != unit))
299255 then {
300256 let color = takeRight(win, 1)
301257 let result = if (!(double))
302258 then {
303259 let first = invoke(getFarmingAddress(), "addFreePerch", [address, color, 1], nil)
304260 if ((first == first))
305261 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
306262 else throw("Strict value is not equal to itself.")
307263 }
308264 else {
309265 let first = invoke(getFarmingAddress(), "addFreePerch", [address, color, 2], nil)
310266 if ((first == first))
311267 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
312268 else throw("Strict value is not equal to itself.")
313269 }
314270 if ((result == result))
315271 then result
316272 else throw("Strict value is not equal to itself.")
317273 }
318274 else if ((win == "incubator"))
319275 then {
320276 let result = if (!(double))
321277 then {
322278 let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
323279 if ((first == first))
324280 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
325281 else throw("Strict value is not equal to itself.")
326282 }
327283 else {
328284 let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
329285 if ((first == first))
330286 then {
331287 let second = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, 100], nil)
332288 if ((second == second))
333289 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "duckling_100")]
334290 else throw("Strict value is not equal to itself.")
335291 }
336292 else throw("Strict value is not equal to itself.")
337293 }
338294 if ((result == result))
339295 then result
340296 else throw("Strict value is not equal to itself.")
341297 }
342298 else if ((win == "ar"))
343299 then {
344300 let assetId = getAccessItemAssetId(getHuntAddress())
345301 let price = getAccessItemPrice(getHuntAddress())
346302 let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
347303 if ((call == call))
348304 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
349305 else throw("Strict value is not equal to itself.")
350306 }
351307 else if ((win == "phoenix"))
352308 then {
353309 let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWHWTF"], nil)
354310 if ((call == call))
355311 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
356312 else throw("Strict value is not equal to itself.")
357313 }
358314 else if ((indexOf(win, "duckling") != unit))
359315 then {
360316 let level = parseIntValue(split(win, "_")[1])
361317 let levelFinal = if (double)
362318 then (2 * level)
363319 else level
364320 let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
365321 if ((call == call))
366322 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
367323 else throw("Strict value is not equal to itself.")
368324 }
369325 else if ((indexOf(win, "item") != unit))
370326 then {
371327 let itemName = split(win, "!")[1]
372328 let result = if (!(double))
373329 then {
374330 let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
375331 if ((first == first))
376332 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
377333 else throw("Strict value is not equal to itself.")
378334 }
379335 else {
380336 let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
381337 if ((first == first))
382338 then {
383339 let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
384340 if ((second == second))
385341 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
386342 else throw("Strict value is not equal to itself.")
387343 }
388344 else throw("Strict value is not equal to itself.")
389345 }
390346 if ((result == result))
391347 then result
392348 else throw("Strict value is not equal to itself.")
393349 }
394350 else throw("RFB: Some error occured, please contact the admins!")
395351 ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
396352 }
397353 }
398354 else throw("Strict value is not equal to itself.")
399355 }
400356 else throw("Strict value is not equal to itself.")
401357 }
402358
403359
404360 @Callable(i)
405361 func configureOracle (oracle) = if ((i.caller != this))
406362 then throw("RCU: admin only")
407363 else [StringEntry("static_oracleAddress", oracle)]
408364
409365
410366
411367 @Callable(i)
412368 func initRebirth (refererAddress) = {
413369 let pmt = i.payments[0]
414370 let assetId = value(pmt.assetId)
415371 let initTx = toBase58String(i.transactionId)
416372 let address = toString(i.caller)
417373 if ((pmt.amount != 1))
418374 then throw("NFT is not attached")
419375 else {
420376 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
421377 if ((amountPaidByCoupons == amountPaidByCoupons))
422378 then {
423379 let leftToPay = (feeAmount - amountPaidByCoupons)
424380 let validPayment = checkAdditionalPayment(i.payments[1])
425381 if ((validPayment == validPayment))
426382 then {
427383 let payment = if ((leftToPay != 0))
428384 then {
429385 let feePayment = value(i.payments[2])
430386 if ((feePayment.assetId != getEggAssetId()))
431387 then throw("You need to attach EGG tokens as fee")
432388 else if ((leftToPay > feePayment.amount))
433389 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
434390 else {
435391 let refererRewardForPerch = fraction(leftToPay, 5, 100)
436392 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)]))
437393 if ((refCall == refCall))
438394 then {
439395 let toBurn = if (refCall)
440396 then (leftToPay - refererRewardForPerch)
441397 else leftToPay
442398 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
443399 if ((burnCall == burnCall))
444400 then leftToPay
445401 else throw("Strict value is not equal to itself.")
446402 }
447403 else throw("Strict value is not equal to itself.")
448404 }
449405 }
450406 else 0
451407 if ((payment == payment))
452408 then {
453- let $t01380913858 = getAssetFarmingPower(assetId)
454- let gen = $t01380913858._1
455- let rarity = $t01380913858._2
409+ let $t01275612805 = getAssetFarmingPower(assetId)
410+ let gen = $t01275612805._1
411+ let rarity = $t01275612805._2
456412 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
457413 if ((call == call))
458414 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
459415 else throw("Strict value is not equal to itself.")
460416 }
461417 else throw("Strict value is not equal to itself.")
462418 }
463419 else throw("Strict value is not equal to itself.")
464420 }
465421 else throw("Strict value is not equal to itself.")
466422 }
467423 }
468424
469425
470426
471427 @Callable(i)
472428 func finishRebirth (initTx) = finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false)
473429
474430
475431
476432 @Callable(i)
477433 func finishRebirthDouble (initTx) = if (!(if ((size(i.payments) == 2))
478434 then (i.payments[0].amount == 1)
479435 else false))
480436 then throw("Invalid payment")
481437 else {
482438 let assetId = value(i.payments[0].assetId)
483439 let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
484440 if ((boosterType == boosterType))
485441 then if ((boosterType == "ART-GIFT_DOUBL"))
486442 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true))
487443 else throw("Error! Wrong item attached to double rewards!")
488444 else throw("Strict value is not equal to itself.")
489445 }
490446
491447
492448 @Verifier(tx)
493449 func verify () = if (isTestEnv())
494450 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
495451 else {
496452 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
497453 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
498454 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
499455 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
500456 then 1
501457 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
502458 then 1
503459 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
504460 then 1
505461 else 0
506462 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
507463 then 1
508464 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
509465 then 1
510466 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
511467 then 1
512468 else 0
513469 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
514470 then 1
515471 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
516472 then 1
517473 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
518474 then 1
519475 else 0
520476 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
521477 match tx {
522478 case _ =>
523479 (signaturesCount >= 2)
524480 }
525481 }
526482

github/deemru/w8io/026f985 
51.27 ms