tx · J6Z19qpocu1KAfXr2tJQLpEQeCCexwGM1yfcuY1hyMGK

3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ:  -0.01900000 Waves

2023.12.15 16:13 [3953752] smart account 3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ > SELF 0.00000000 Waves

{ "type": 13, "id": "J6Z19qpocu1KAfXr2tJQLpEQeCCexwGM1yfcuY1hyMGK", "fee": 1900000, "feeAssetId": null, "timestamp": 1702646068501, "version": 2, "chainId": 87, "sender": "3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ", "senderPublicKey": "HobXgEQL44LfeEEq2G69uiciuAuiUBfG33UF4ubYmNMd", "proofs": [ "387FKmCUshzfoUduvjsBMKArquFS1UhiqcKhdA6H2dDbkCpRNw1gBh5dsnE4cffh2PXYhP4ZfX4eEWM6KxZto8eB", "2Fn6sx8Go8aqc3dsxj1LQoT3oJnSERAA3jpdDF9AUNpFupyiP84tZt4LnLpRNTJhbjmJTxNjXGTpeAYTPy9LMJbd" ], "script": "base64:BgIWCAISAwoBCBIDCgEIEgMKAQgSAwoBCDABFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABEXRyeUdldEludEV4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhCQACAQIbUlRHSUU6IFNvbWV0aGluZyB3ZW50IHdyb25nAQlhc0Jvb2xlYW4BBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAdib29sZWFuBQckbWF0Y2gwBQdib29sZWFuCQACAQIiRkFCOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogQm9vbGVhbgEMdHJ5R2V0U3RyaW5nAQNrZXkJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIFBHRoaXMFA2tleQAQZGVsYXlGb3JIYXRjaGluZwACARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARRzdGF0aWNLZXlfZWdnQXNzZXRJZAACEXN0YXRpY19lZ2dBc3NldElkARpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwACF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MBGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwACFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwACFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBGXN0YXRpY0tleV9nYW1lRGFwcEFkZHJlc3MAAhZzdGF0aWNfZ2FtZURhcHBBZGRyZXNzARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAITc3RhdGljX2l0ZW1zQWRkcmVzcwEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzARVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAhJzdGF0aWNfaHVudEFkZHJlc3MBFXN0YXRpY0tleV9idXJuQWRkcmVzcwACEnN0YXRpY19idXJuQWRkcmVzcwEcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwACGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAhRzdGF0aWNfZmVlQWdncmVnYXRvcgEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAQ1nZXRFZ2dBc3NldElkAAkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFHN0YXRpY0tleV9lZ2dBc3NldElkAAETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAARFnZXRGYXJtaW5nQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwABEmdldEJhYnlEdWNrQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGXN0YXRpY0tleV9iYWJ5RHVja0FkZHJlc3MAARJnZXRHYW1lRGFwcEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARlzdGF0aWNLZXlfZ2FtZURhcHBBZGRyZXNzAAEPZ2V0SXRlbXNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwABEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAEOZ2V0SHVudEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAQ5nZXRCdXJuQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFXN0YXRpY0tleV9idXJuQWRkcmVzcwABFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAARBnZXRGZWVBZ2dyZWdhdG9yAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQdwYXltZW50AwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhlSQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAlmZWVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHFJDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwAElBIT0VOSVhCQVNFT1BUSU9OUwDoBwENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEIYXNTdHJpbmcBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMDCQABAgUHJG1hdGNoMAIDSW50BAFzBQckbWF0Y2gwCQACAQImd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZywgZ290OiBJbnQDCQABAgUHJG1hdGNoMAIEVW5pdAQBcwUHJG1hdGNoMAkAAgECJ3dyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogVW5pdAkAAgECHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcACWZlZUFtb3VudAkBDXRyeUdldEludGVnZXIBAgxjdXJyZW50UHJpY2UBEGdldEFtb3VudE9yQ2xlYXIBBmFtb3VudAMJAQhjb250YWlucwIFBmFtb3VudAIBMAIABQZhbW91bnQBDmdldEFzc2V0T3JpZ2luAQpnZW5lcmF0aW9uAwkAAAIFCmdlbmVyYXRpb24CAUcJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBEWdldEJyZWVkZXJBZGRyZXNzAAEOZ2V0QXNzZXRSYXJpdHkCCGdlbm90eXBlCmdlbmVyYXRpb24ECHF1YW50aXR5CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEOZ2V0QXNzZXRPcmlnaW4BBQpnZW5lcmF0aW9uCQCsAgIJAKwCAgIGc3RhdHNfBQhnZW5vdHlwZQIJX3F1YW50aXR5BAVwb3dlcgkAbAYJAGkCAJBOBQhxdWFudGl0eQAEAAUAAQACBQVGTE9PUgMJAGYCBQVwb3dlcgAABQVwb3dlcgACARRnZXRBc3NldEZhcm1pbmdQb3dlcgEHYXNzZXRJZAMDCQAAAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJARFnZXRCcmVlZGVyQWRkcmVzcwAGCQAAAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAQJYXNzZXROYW1lCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUECmdlbmVyYXRpb24JAK8CAgkAsgICBQlhc3NldE5hbWUAAgABBAdmYXJtR2VuCQEIYXNTdHJpbmcBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACDmdldEdlbkZyb21OYW1lCQDMCAIFCWFzc2V0TmFtZQUDbmlsBQNuaWwDCQAAAgUHZmFybUdlbgUHZmFybUdlbgkAlAoCBQdmYXJtR2VuCQEOZ2V0QXNzZXRSYXJpdHkCBQdmYXJtR2VuBQpnZW5lcmF0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQINbm90IHZhbGlkIE5GVAEPZ2V0UmFuZG9tTnVtYmVyBAdvcHRpb25zBHR4SWQUaGF0Y2hpbmdGaW5pc2hIZWlnaHQGb2Zmc2V0BA9yYW5kb21TZWVkQmxvY2sJAQV2YWx1ZQEJAO0HAQkAZQIFFGhhdGNoaW5nRmluaXNoSGVpZ2h0AAEECnJhbmRvbUhhc2gJAPcDAQkAywECBQR0eElkCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgkAagIJALIJAgUKcmFuZG9tSGFzaAkAaAIFBm9mZnNldAAIBQdvcHRpb25zAQxnZXRSYW5kb21XaW4DAnR4DGZpbmlzaEhlaWdodAthc3NldFJhcml0eQQOcGhvZW5peE9wdGlvbnMJAGUCBRJQSE9FTklYQkFTRU9QVElPTlMJAGsDCQBpAgUSUEhPRU5JWEJBU0VPUFRJT05TAAIFC2Fzc2V0UmFyaXR5AGQEDWphY2twb3RSYW5kb20JAQ9nZXRSYW5kb21OdW1iZXIEBQ5waG9lbml4T3B0aW9ucwUCdHgFDGZpbmlzaEhlaWdodAABAwkAAAIFDWphY2twb3RSYW5kb20AAQIHcGhvZW5peAQBbgkBD2dldFJhbmRvbU51bWJlcgQA6AcFAnR4BQxmaW5pc2hIZWlnaHQAAAMJAGYCAKoBBQFuAgtkdWNrbGluZ18xMAMJAGYCAPABBQFuAgtkdWNrbGluZ18yMAMJAGYCAIQCBQFuAgtkdWNrbGluZ180MAMJAGYCAKwCBQFuAglpbmN1YmF0b3IDCQBmAgC2AgUBbgIPaXRlbSFBUlQtU0xFREdFAwkAZgIAwAIFAW4CE2l0ZW0hQVJULUlURU1fRFVQTEkDCQBmAgDKAgUBbgITaXRlbSFBUlQtWE1BU19TVEJMRQMJAGYCAPwCBQFuAhFpdGVtIUFSVC1TTk9XQkFMTAMJAGYCAK4DBQFuAhNpdGVtIUFSVC1HTkdSX0JSRUFEAwkAZgIAzAMFAW4CD2l0ZW0hQVJULUtBVEFOQQMJAGYCAP4DBQFuAhFpdGVtIUFSVC1ST0JPRFVDSwMJAGYCAJwEBQFuAg5pdGVtIUFSVC1DUk9XTgMJAGYCAJQFBQFuAhBpdGVtIUFSVC1TQ0VQVEVSAwkAZgIAlgYFAW4CEml0ZW0hQVJULUJVSUxUQk9EWQMJAGYCAKoGBQFuAg9pdGVtIUFSVC1GRUVEMTADCQBmAgC0BgUBbgIPaXRlbSFBUlQtRkVFRDUwAwkAZgIAuAYFAW4CEGl0ZW0hQVJULUZFRUQxMDADCQBmAgD0BgUBbgIUaXRlbSFBUlQtRklSRV9BUk1PVVICAmFyAQlnZXRPcmlnaW4BB2Fzc2V0SWQECWFzc2V0TmFtZQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBApnZW5lcmF0aW9uCQCvAgIJALICAgUJYXNzZXROYW1lAAIAAQMDCQAAAgUKZ2VuZXJhdGlvbgIBRwYJAAACBQpnZW5lcmF0aW9uAgFKCQETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJARFnZXRCcmVlZGVyQWRkcmVzcwABBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkAAgEJAKwCAgIpUkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50LCBidXQgZ290OiAFBnN0cmluZwkAAgECHlJBSTogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEHZ2V0Qm9vbAEDa2V5BAckbWF0Y2gwCQCbCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEJaXNUZXN0RW52AAkBB2dldEJvb2wBAgdURVNURU5WARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwEBmluaXRUeAdhZGRyZXNzB3BheW1lbnQGZG91YmxlBAtmaW5pc2hCbG9jawkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgxfZmluaXNoQmxvY2sEC2Fzc2V0UmFyaXR5CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCDF9hc3NldFJhcml0eQQGc3RhdHVzCQEMdHJ5R2V0U3RyaW5nAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3N0YXR1cwQMdmFsaWRQYXltZW50CQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEFB3BheW1lbnQDCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQEDHJlY29yZEFjdGlvbgkA/AcECQERZ2V0Q291cG9uc0FkZHJlc3MAAgxyZWNvcmRBY3Rpb24JAMwIAgIHUkVCSVJUSAUDbmlsBQNuaWwDCQAAAgUMcmVjb3JkQWN0aW9uBQxyZWNvcmRBY3Rpb24KARRnZXRBY2Nlc3NJdGVtQXNzZXRJZAEHYWRkcmVzcwkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQdhZGRyZXNzAhhzdGF0aWNfYWNjZXNzSXRlbUFzc2V0SWQKARJnZXRBY2Nlc3NJdGVtUHJpY2UBB2FkZHJlc3MJARF0cnlHZXRJbnRFeHRlcm5hbAIFB2FkZHJlc3MCFnN0YXRpY19hY2Nlc3NJdGVtUHJpY2UDCQECIT0CBQZzdGF0dXMCBG9wZW4JAAIBAh9yZWJpcnRoIGlzIGZpbmlzaGVkIG9yIG5vdCBvcGVuAwkAZgIFC2ZpbmlzaEJsb2NrBQZoZWlnaHQJAAIBAh55b3UgY2Fubm90IGZpbmlzaCByZWJpcnRoLCB5ZXQEA3dpbgkBDGdldFJhbmRvbVdpbgMJANkEAQUGaW5pdFR4BQtmaW5pc2hCbG9jawULYXNzZXRSYXJpdHkEBHR4SWQFBmluaXRUeAQGcmVzdWx0AwkBAiE9AgkAswkCBQN3aW4CBXBlcmNoBQR1bml0BAVjb2xvcgkAsgICBQN3aW4AAQQGcmVzdWx0AwkBASEBBQZkb3VibGUEBWZpcnN0CQD8BwQJARFnZXRGYXJtaW5nQWRkcmVzcwACDGFkZEZyZWVQZXJjaAkAzAgCBQdhZGRyZXNzCQDMCAIFBWNvbG9yBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQFZmlyc3QJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIMYWRkRnJlZVBlcmNoCQDMCAIFB2FkZHJlc3MJAMwIAgUFY29sb3IFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAQGc2Vjb25kCQD8BwQJARFnZXRGYXJtaW5nQWRkcmVzcwACDGFkZEZyZWVQZXJjaAkAzAgCBQdhZGRyZXNzCQDMCAIFBWNvbG9yBQNuaWwFA25pbAMJAAACBQZzZWNvbmQFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfcmVzdWx0MQkBCGFzU3RyaW5nAQUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xBQN3aW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIJaW5jdWJhdG9yBAZyZXN1bHQDCQEBIQEFBmRvdWJsZQQFZmlyc3QJAPwHBAkBE2dldEluY3ViYXRvckFkZHJlc3MAAg1pc3N1ZUZyZWVEdWNrCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBWZpcnN0CQD8BwQJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAINaXNzdWVGcmVlRHVjawkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAQGc2Vjb25kCQD8BwQJARJnZXRCYWJ5RHVja0FkZHJlc3MAAhFpc3N1ZUZyZWVEdWNrbGluZwkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQJAMwIAgBkBQNuaWwFA25pbAMJAAACBQZzZWNvbmQFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfcmVzdWx0MQkBCGFzU3RyaW5nAQUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xAgxkdWNrbGluZ18xMDAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgICYXIEB2Fzc2V0SWQJARRnZXRBY2Nlc3NJdGVtQXNzZXRJZAEJAQ5nZXRIdW50QWRkcmVzcwAEBXByaWNlCQESZ2V0QWNjZXNzSXRlbVByaWNlAQkBDmdldEh1bnRBZGRyZXNzAAQEY2FsbAkA/AcECQEOZ2V0SHVudEFkZHJlc3MAAhJidXlBY2Nlc3NJdGVtT3RoZXIJAMwIAgUHYWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQVwcmljZQUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUEY2FsbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIHcGhvZW5peAQEY2FsbAkA/AcECQETZ2V0SW5jdWJhdG9yQWRkcmVzcwACDGlzc3VlSmFja3BvdAkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQJAMwIAgkBC3ZhbHVlT3JFbHNlAgkAoggBAgxKQUNLUE9UX05BTUUCCFdXV1dXV1dQBQNuaWwFA25pbAMJAAACBQRjYWxsBQRjYWxsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBGNhbGwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAQIhPQIJALMJAgUDd2luAghkdWNrbGluZwUEdW5pdAQFbGV2ZWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFA3dpbgIBXwABBApsZXZlbEZpbmFsAwUGZG91YmxlCQBoAgACBQVsZXZlbAUFbGV2ZWwEBGNhbGwJAPwHBAkBEmdldEJhYnlEdWNrQWRkcmVzcwACEWlzc3VlRnJlZUR1Y2tsaW5nCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAkAzAgCBQpsZXZlbEZpbmFsBQNuaWwFA25pbAMJAAACBQRjYWxsBQRjYWxsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBGNhbGwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAQIhPQIJALMJAgUDd2luAgRpdGVtBQR1bml0BAhpdGVtTmFtZQkAkQMCCQC1CQIFA3dpbgIBIQABBAZyZXN1bHQDCQEBIQEFBmRvdWJsZQQFZmlyc3QJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACEmlzc3VlQXJ0ZWZhY3RJbmRleAkAzAgCBQhpdGVtTmFtZQkAzAgCBQdhZGRyZXNzCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBWZpcnN0CQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhJpc3N1ZUFydGVmYWN0SW5kZXgJAMwIAgUIaXRlbU5hbWUJAMwIAgUHYWRkcmVzcwkAzAgCAAAFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAQGc2Vjb25kCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhJpc3N1ZUFydGVmYWN0SW5kZXgJAMwIAgUIaXRlbU5hbWUJAMwIAgUHYWRkcmVzcwkAzAgCAAEFA25pbAUDbmlsAwkAAAIFBnNlY29uZAUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgVfd2luMQUDd2luBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUGcmVzdWx0BQZyZXN1bHQFBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECM1JGQjogU29tZSBlcnJvciBvY2N1cmVkLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zIQkAzggCCQDOCAIFBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgRfd2luBQN3aW4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3N0YXR1cwIGZmluaXNoBQNuaWwFDHZhbGlkUGF5bWVudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQBaQEPY29uZmlndXJlT3JhY2xlAQZvcmFjbGUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg9SQ1U6IGFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgIUc3RhdGljX29yYWNsZUFkZHJlc3MFBm9yYWNsZQUDbmlsAWkBC2luaXRSZWJpcnRoAQ5yZWZlcmVyQWRkcmVzcwQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGaW5pdFR4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgECE05GVCBpcyBub3QgYXR0YWNoZWQEE2Ftb3VudFBhaWRCeUNvdXBvbnMJAQVhc0ludAEJAPwHBAkBEWdldENvdXBvbnNBZGRyZXNzAAIKdXNlQ291cG9ucwkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFE2Ftb3VudFBhaWRCeUNvdXBvbnMFE2Ftb3VudFBhaWRCeUNvdXBvbnMECWxlZnRUb1BheQkAZQIFCWZlZUFtb3VudAUTYW1vdW50UGFpZEJ5Q291cG9ucwQMdmFsaWRQYXltZW50CQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAQMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAQHcGF5bWVudAMJAQIhPQIFCWxlZnRUb1BheQAABApmZWVQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAIDCQECIT0CCAUKZmVlUGF5bWVudAdhc3NldElkCQENZ2V0RWdnQXNzZXRJZAAJAAIBAiRZb3UgbmVlZCB0byBhdHRhY2ggRUdHIHRva2VucyBhcyBmZWUDCQBmAgUJbGVmdFRvUGF5CAUKZmVlUGF5bWVudAZhbW91bnQJAAIBCQCsAgICQFlvdSBuZWVkIHRvIGF0dGFjaCB0aGUgZm9sbG93aW5nIGFtb3VudCBvZiBFR0cgdG9rZW5zIGFzIGZlZTogMC4JAKQDAQUJbGVmdFRvUGF5BBVyZWZlcmVyUmV3YXJkRm9yUGVyY2gJAGsDBQlsZWZ0VG9QYXkABQBkBAdyZWZDYWxsCQEJYXNCb29sZWFuAQkA/AcECQEVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAIKcmVmUGF5bWVudAkAzAgCBQ5yZWZlcmVyQWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0RWdnQXNzZXRJZAAFFXJlZmVyZXJSZXdhcmRGb3JQZXJjaAUDbmlsAwkAAAIFB3JlZkNhbGwFB3JlZkNhbGwEBnRvQnVybgMFB3JlZkNhbGwJAGUCBQlsZWZ0VG9QYXkFFXJlZmVyZXJSZXdhcmRGb3JQZXJjaAUJbGVmdFRvUGF5BAhidXJuQ2FsbAkA/AcECQEOZ2V0QnVybkFkZHJlc3MAAhRidXJuQXR0YWNoZWRQYXltZW50cwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0RWdnQXNzZXRJZAAFBnRvQnVybgUDbmlsAwkAAAIFCGJ1cm5DYWxsBQhidXJuQ2FsbAUJbGVmdFRvUGF5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAADCQAAAgUHcGF5bWVudAUHcGF5bWVudAQNJHQwMTM2MDMxMzY1MgkBFGdldEFzc2V0RmFybWluZ1Bvd2VyAQUHYXNzZXRJZAQDZ2VuCAUNJHQwMTM2MDMxMzY1MgJfMQQGcmFyaXR5CAUNJHQwMTM2MDMxMzY1MgJfMgQEY2FsbAkA/AcECQEJZ2V0T3JpZ2luAQUHYXNzZXRJZAIMcmVkdWNlUmFyaXR5CQDMCAIJANgEAQUHYXNzZXRJZAkAzAgCBQNnZW4FA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIMX2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BRBkZWxheUZvckhhdGNoaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMCBG9wZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCDF9hc3NldFJhcml0eQUGcmFyaXR5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCCF9hc3NldElkCQDYBAEFB2Fzc2V0SWQFA25pbAUMdmFsaWRQYXltZW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWZpbmlzaFJlYmlydGgBBmluaXRUeAkBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAQFBmluaXRUeAkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAAcBaQETZmluaXNoUmViaXJ0aERvdWJsZQEGaW5pdFR4AwkBASEBAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEHCQACAQIPSW52YWxpZCBwYXltZW50BAdhc3NldElkCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEC2Jvb3N0ZXJUeXBlCQEIYXNTdHJpbmcBCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhRjaGVja0FydGVmYWN0RGV0YWlscwkAzAgCCQDYBAEFB2Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFC2Jvb3N0ZXJUeXBlBQtib29zdGVyVHlwZQMJAAACBQtib29zdGVyVHlwZQIOQVJULUdJRlRfRE9VQkwJAM4IAgkAzAgCCQEEQnVybgIFB2Fzc2V0SWQAAQUDbmlsCQEVZmluaXNoUmViaXJ0aEludGVybmFsBAUGaW5pdFR4CQClCAEIBQFpBmNhbGxlcgkAkQMCCAUBaQhwYXltZW50cwABBgkAAgECLUVycm9yISBXcm9uZyBpdGVtIGF0dGFjaGVkIHRvIGRvdWJsZSByZXdhcmRzIQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQADCQEJaXNUZXN0RW52AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQQJZmlyc3RVc2VyASBRHOT9Zv8SadLxWhSfO7Li9Dt/wctoJ6I0Xmw411fdbQQKc2Vjb25kVXNlcgEgwWzfju3TjXOPi6L5+okP9HXNRBtUclKjtJzSVqQt4HUECXRoaXJkVXNlcgEg51v0jqrS+UmeboQmuPl+H9xnqH3cK7jU6nvN8mgKwSUED2ZpcnN0VXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCWZpcnN0VXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUJZmlyc3RVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQlmaXJzdFVzZXIAAQAABBBzZWNvbmRVc2VyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUKc2Vjb25kVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUKc2Vjb25kVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUKc2Vjb25kVXNlcgABAAAED3RoaXJkVXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCXRoaXJkVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUJdGhpcmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQl0aGlyZFVzZXIAAQAABA9zaWduYXR1cmVzQ291bnQJAGQCCQBkAgUPZmlyc3RVc2VyU2lnbmVkBRBzZWNvbmRVc2VyU2lnbmVkBQ90aGlyZFVzZXJTaWduZWQEByRtYXRjaDAFAnR4CQBnAgUPc2lnbmF0dXJlc0NvdW50AALFMFXc", "height": 3953752, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ArPeAnbTM8FVVYh9vybysPgguScYA9C6CwLj8nDEtwid Next: 5Mo49JNnxmy8CqABmuMeaCAUnGm4p5efCpw8w5kAxUaJ Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
200200 then "duckling_40"
201201 else if ((300 > n))
202202 then "incubator"
203- else if ((320 > n))
204- then "item!ART-SNAKE"
205- else if ((330 > n))
206- then "item!ART-FREEGENE"
207- else if ((460 > n))
208- then "item!ART-KATANA"
209- else if ((510 > n))
210- then "item!ART-ROBODUCK"
211- else if ((540 > n))
212- then "item!ART-CROWN"
213- else if ((660 > n))
214- then "item!ART-SCEPTER"
215- else if ((790 > n))
216- then "item!ART-BUILTBODY"
217- else if ((810 > n))
218- then "item!ART-FEED10"
219- else if ((820 > n))
220- then "item!ART-FEED50"
221- else if ((824 > n))
222- then "item!ART-FEED100"
223- else if ((884 > n))
224- then "item!ART-FIRE_ARMOUR"
225- else "ar"
203+ else if ((310 > n))
204+ then "item!ART-SLEDGE"
205+ else if ((320 > n))
206+ then "item!ART-ITEM_DUPLI"
207+ else if ((330 > n))
208+ then "item!ART-XMAS_STBLE"
209+ else if ((380 > n))
210+ then "item!ART-SNOWBALL"
211+ else if ((430 > n))
212+ then "item!ART-GNGR_BREAD"
213+ else if ((460 > n))
214+ then "item!ART-KATANA"
215+ else if ((510 > n))
216+ then "item!ART-ROBODUCK"
217+ else if ((540 > n))
218+ then "item!ART-CROWN"
219+ else if ((660 > n))
220+ then "item!ART-SCEPTER"
221+ else if ((790 > n))
222+ then "item!ART-BUILTBODY"
223+ else if ((810 > n))
224+ then "item!ART-FEED10"
225+ else if ((820 > n))
226+ then "item!ART-FEED50"
227+ else if ((824 > n))
228+ then "item!ART-FEED100"
229+ else if ((884 > n))
230+ then "item!ART-FIRE_ARMOUR"
231+ else "ar"
226232 }
227233 }
228234
257263
258264
259265 func isTestEnv () = getBool("TESTENV")
266+
267+
268+func finishRebirthInternal (initTx,address,payment,double) = {
269+ let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
270+ let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
271+ let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
272+ let validPayment = checkAdditionalPayment(payment)
273+ if ((validPayment == validPayment))
274+ then {
275+ let recordAction = invoke(getCouponsAddress(), "recordAction", ["REBIRTH"], nil)
276+ if ((recordAction == recordAction))
277+ then {
278+ func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
279+
280+ func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
281+
282+ if ((status != "open"))
283+ then throw("rebirth is finished or not open")
284+ else if ((finishBlock > height))
285+ then throw("you cannot finish rebirth, yet")
286+ else {
287+ let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
288+ let txId = initTx
289+ let result = if ((indexOf(win, "perch") != unit))
290+ then {
291+ let color = takeRight(win, 1)
292+ let result = if (!(double))
293+ then {
294+ let first = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
295+ if ((first == first))
296+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else {
300+ let first = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
301+ if ((first == first))
302+ then {
303+ let second = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
304+ if ((second == second))
305+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
306+ else throw("Strict value is not equal to itself.")
307+ }
308+ else throw("Strict value is not equal to itself.")
309+ }
310+ if ((result == result))
311+ then result
312+ else throw("Strict value is not equal to itself.")
313+ }
314+ else if ((win == "incubator"))
315+ then {
316+ let result = if (!(double))
317+ then {
318+ let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
319+ if ((first == first))
320+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
321+ else throw("Strict value is not equal to itself.")
322+ }
323+ else {
324+ let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
325+ if ((first == first))
326+ then {
327+ let second = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, 100], nil)
328+ if ((second == second))
329+ 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")]
330+ else throw("Strict value is not equal to itself.")
331+ }
332+ else throw("Strict value is not equal to itself.")
333+ }
334+ if ((result == result))
335+ then result
336+ else throw("Strict value is not equal to itself.")
337+ }
338+ else if ((win == "ar"))
339+ then {
340+ let assetId = getAccessItemAssetId(getHuntAddress())
341+ let price = getAccessItemPrice(getHuntAddress())
342+ let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
343+ if ((call == call))
344+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
345+ else throw("Strict value is not equal to itself.")
346+ }
347+ else if ((win == "phoenix"))
348+ then {
349+ let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, valueOrElse(getString("JACKPOT_NAME"), "WWWWWWWP")], nil)
350+ if ((call == call))
351+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
352+ else throw("Strict value is not equal to itself.")
353+ }
354+ else if ((indexOf(win, "duckling") != unit))
355+ then {
356+ let level = parseIntValue(split(win, "_")[1])
357+ let levelFinal = if (double)
358+ then (2 * level)
359+ else level
360+ let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
361+ if ((call == call))
362+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
363+ else throw("Strict value is not equal to itself.")
364+ }
365+ else if ((indexOf(win, "item") != unit))
366+ then {
367+ let itemName = split(win, "!")[1]
368+ let result = if (!(double))
369+ then {
370+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
371+ if ((first == first))
372+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
373+ else throw("Strict value is not equal to itself.")
374+ }
375+ else {
376+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
377+ if ((first == first))
378+ then {
379+ let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
380+ if ((second == second))
381+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
382+ else throw("Strict value is not equal to itself.")
383+ }
384+ else throw("Strict value is not equal to itself.")
385+ }
386+ if ((result == result))
387+ then result
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ else throw("RFB: Some error occured, please contact the admins!")
391+ ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
392+ }
393+ }
394+ else throw("Strict value is not equal to itself.")
395+ }
396+ else throw("Strict value is not equal to itself.")
397+ }
260398
261399
262400 @Callable(i)
308446 else 0
309447 if ((payment == payment))
310448 then {
311- let $t085708619 = getAssetFarmingPower(assetId)
312- let gen = $t085708619._1
313- let rarity = $t085708619._2
449+ let $t01360313652 = getAssetFarmingPower(assetId)
450+ let gen = $t01360313652._1
451+ let rarity = $t01360313652._2
314452 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
315453 if ((call == call))
316454 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)
327465
328466
329467 @Callable(i)
330-func finishRebirth (initTx) = {
331- let address = toString(i.caller)
332- let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
333- let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
334- let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
335- let validPayment = checkAdditionalPayment(i.payments[0])
336- if ((validPayment == validPayment))
337- then {
338- let recordAction = invoke(getCouponsAddress(), "recordAction", ["REBIRTH"], nil)
339- if ((recordAction == recordAction))
340- then {
341- func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
468+func finishRebirth (initTx) = finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false)
342469
343- func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
344470
345- if ((status != "open"))
346- then throw("rebirth is finished or not open")
347- else if ((finishBlock > height))
348- then throw("you cannot finish rebirth, yet")
349- else {
350- let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
351- let txId = initTx
352- let result = if ((indexOf(win, "perch") != unit))
353- then {
354- let color = takeRight(win, 1)
355- let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
356- if ((call == call))
357- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
358- else throw("Strict value is not equal to itself.")
359- }
360- else if ((win == "incubator"))
361- then {
362- let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
363- if ((call == call))
364- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
365- else throw("Strict value is not equal to itself.")
366- }
367- else if ((win == "ar"))
368- then {
369- let assetId = getAccessItemAssetId(getHuntAddress())
370- let price = getAccessItemPrice(getHuntAddress())
371- let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
372- if ((call == call))
373- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
374- else throw("Strict value is not equal to itself.")
375- }
376- else if ((win == "phoenix"))
377- then {
378- let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
379- if ((call == call))
380- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
381- else throw("Strict value is not equal to itself.")
382- }
383- else if ((indexOf(win, "duckling") != unit))
384- then {
385- let level = parseIntValue(split(win, "_")[1])
386- let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
387- if ((call == call))
388- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
389- else throw("Strict value is not equal to itself.")
390- }
391- else if ((indexOf(win, "item") != unit))
392- then {
393- let itemName = split(win, "!")[1]
394- let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
395- if ((call == call))
396- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
397- else throw("Strict value is not equal to itself.")
398- }
399- else throw("RFB: Some error occured, please contact the admins!")
400- ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
401- }
402- }
403- else throw("Strict value is not equal to itself.")
404- }
405- else throw("Strict value is not equal to itself.")
406- }
471+
472+@Callable(i)
473+func finishRebirthDouble (initTx) = if (!(if ((size(i.payments) == 2))
474+ then (i.payments[0].amount == 1)
475+ else false))
476+ then throw("Invalid payment")
477+ else {
478+ let assetId = value(i.payments[0].assetId)
479+ let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
480+ if ((boosterType == boosterType))
481+ then if ((boosterType == "ART-GIFT_DOUBL"))
482+ then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true))
483+ else throw("Error! Wrong item attached to double rewards!")
484+ else throw("Strict value is not equal to itself.")
485+ }
407486
408487
409488 @Verifier(tx)
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# 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_farmingAddress"
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) = {
189189 let phoenixOptions = (PHOENIXBASEOPTIONS - fraction((PHOENIXBASEOPTIONS / 2), assetRarity, 100))
190190 let jackpotRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 1)
191191 if ((jackpotRandom == 1))
192192 then "phoenix"
193193 else {
194194 let n = getRandomNumber(1000, tx, finishHeight, 0)
195195 if ((170 > n))
196196 then "duckling_10"
197197 else if ((240 > n))
198198 then "duckling_20"
199199 else if ((260 > n))
200200 then "duckling_40"
201201 else if ((300 > n))
202202 then "incubator"
203- else if ((320 > n))
204- then "item!ART-SNAKE"
205- else if ((330 > n))
206- then "item!ART-FREEGENE"
207- else if ((460 > n))
208- then "item!ART-KATANA"
209- else if ((510 > n))
210- then "item!ART-ROBODUCK"
211- else if ((540 > n))
212- then "item!ART-CROWN"
213- else if ((660 > n))
214- then "item!ART-SCEPTER"
215- else if ((790 > n))
216- then "item!ART-BUILTBODY"
217- else if ((810 > n))
218- then "item!ART-FEED10"
219- else if ((820 > n))
220- then "item!ART-FEED50"
221- else if ((824 > n))
222- then "item!ART-FEED100"
223- else if ((884 > n))
224- then "item!ART-FIRE_ARMOUR"
225- else "ar"
203+ else if ((310 > n))
204+ then "item!ART-SLEDGE"
205+ else if ((320 > n))
206+ then "item!ART-ITEM_DUPLI"
207+ else if ((330 > n))
208+ then "item!ART-XMAS_STBLE"
209+ else if ((380 > n))
210+ then "item!ART-SNOWBALL"
211+ else if ((430 > n))
212+ then "item!ART-GNGR_BREAD"
213+ else if ((460 > n))
214+ then "item!ART-KATANA"
215+ else if ((510 > n))
216+ then "item!ART-ROBODUCK"
217+ else if ((540 > n))
218+ then "item!ART-CROWN"
219+ else if ((660 > n))
220+ then "item!ART-SCEPTER"
221+ else if ((790 > n))
222+ then "item!ART-BUILTBODY"
223+ else if ((810 > n))
224+ then "item!ART-FEED10"
225+ else if ((820 > n))
226+ then "item!ART-FEED50"
227+ else if ((824 > n))
228+ then "item!ART-FEED100"
229+ else if ((884 > n))
230+ then "item!ART-FIRE_ARMOUR"
231+ else "ar"
226232 }
227233 }
228234
229235
230236 func getOrigin (assetId) = {
231237 let assetName = value(assetInfo(assetId)).name
232238 let generation = take(takeRight(assetName, 2), 1)
233239 if (if ((generation == "G"))
234240 then true
235241 else (generation == "J"))
236242 then getIncubatorAddress()
237243 else getBreederAddress()
238244 }
239245
240246
241247 func asInt (value) = match value {
242248 case int: Int =>
243249 int
244250 case string: String =>
245251 throw(("RAI: wrong type, expected: Int, but got: " + string))
246252 case _ =>
247253 throw("RAI: wrong type, expected: Int")
248254 }
249255
250256
251257 func getBool (key) = match getBoolean(this, key) {
252258 case b: Boolean =>
253259 b
254260 case _ =>
255261 false
256262 }
257263
258264
259265 func isTestEnv () = getBool("TESTENV")
266+
267+
268+func finishRebirthInternal (initTx,address,payment,double) = {
269+ let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
270+ let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
271+ let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
272+ let validPayment = checkAdditionalPayment(payment)
273+ if ((validPayment == validPayment))
274+ then {
275+ let recordAction = invoke(getCouponsAddress(), "recordAction", ["REBIRTH"], nil)
276+ if ((recordAction == recordAction))
277+ then {
278+ func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
279+
280+ func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
281+
282+ if ((status != "open"))
283+ then throw("rebirth is finished or not open")
284+ else if ((finishBlock > height))
285+ then throw("you cannot finish rebirth, yet")
286+ else {
287+ let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
288+ let txId = initTx
289+ let result = if ((indexOf(win, "perch") != unit))
290+ then {
291+ let color = takeRight(win, 1)
292+ let result = if (!(double))
293+ then {
294+ let first = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
295+ if ((first == first))
296+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else {
300+ let first = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
301+ if ((first == first))
302+ then {
303+ let second = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
304+ if ((second == second))
305+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
306+ else throw("Strict value is not equal to itself.")
307+ }
308+ else throw("Strict value is not equal to itself.")
309+ }
310+ if ((result == result))
311+ then result
312+ else throw("Strict value is not equal to itself.")
313+ }
314+ else if ((win == "incubator"))
315+ then {
316+ let result = if (!(double))
317+ then {
318+ let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
319+ if ((first == first))
320+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
321+ else throw("Strict value is not equal to itself.")
322+ }
323+ else {
324+ let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
325+ if ((first == first))
326+ then {
327+ let second = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, 100], nil)
328+ if ((second == second))
329+ 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")]
330+ else throw("Strict value is not equal to itself.")
331+ }
332+ else throw("Strict value is not equal to itself.")
333+ }
334+ if ((result == result))
335+ then result
336+ else throw("Strict value is not equal to itself.")
337+ }
338+ else if ((win == "ar"))
339+ then {
340+ let assetId = getAccessItemAssetId(getHuntAddress())
341+ let price = getAccessItemPrice(getHuntAddress())
342+ let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
343+ if ((call == call))
344+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
345+ else throw("Strict value is not equal to itself.")
346+ }
347+ else if ((win == "phoenix"))
348+ then {
349+ let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, valueOrElse(getString("JACKPOT_NAME"), "WWWWWWWP")], nil)
350+ if ((call == call))
351+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
352+ else throw("Strict value is not equal to itself.")
353+ }
354+ else if ((indexOf(win, "duckling") != unit))
355+ then {
356+ let level = parseIntValue(split(win, "_")[1])
357+ let levelFinal = if (double)
358+ then (2 * level)
359+ else level
360+ let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
361+ if ((call == call))
362+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
363+ else throw("Strict value is not equal to itself.")
364+ }
365+ else if ((indexOf(win, "item") != unit))
366+ then {
367+ let itemName = split(win, "!")[1]
368+ let result = if (!(double))
369+ then {
370+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
371+ if ((first == first))
372+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
373+ else throw("Strict value is not equal to itself.")
374+ }
375+ else {
376+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
377+ if ((first == first))
378+ then {
379+ let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
380+ if ((second == second))
381+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
382+ else throw("Strict value is not equal to itself.")
383+ }
384+ else throw("Strict value is not equal to itself.")
385+ }
386+ if ((result == result))
387+ then result
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ else throw("RFB: Some error occured, please contact the admins!")
391+ ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
392+ }
393+ }
394+ else throw("Strict value is not equal to itself.")
395+ }
396+ else throw("Strict value is not equal to itself.")
397+ }
260398
261399
262400 @Callable(i)
263401 func configureOracle (oracle) = if ((i.caller != this))
264402 then throw("RCU: admin only")
265403 else [StringEntry("static_oracleAddress", oracle)]
266404
267405
268406
269407 @Callable(i)
270408 func initRebirth (refererAddress) = {
271409 let pmt = i.payments[0]
272410 let assetId = value(pmt.assetId)
273411 let initTx = toBase58String(i.transactionId)
274412 let address = toString(i.caller)
275413 if ((pmt.amount != 1))
276414 then throw("NFT is not attached")
277415 else {
278416 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
279417 if ((amountPaidByCoupons == amountPaidByCoupons))
280418 then {
281419 let leftToPay = (feeAmount - amountPaidByCoupons)
282420 let validPayment = checkAdditionalPayment(i.payments[1])
283421 if ((validPayment == validPayment))
284422 then {
285423 let payment = if ((leftToPay != 0))
286424 then {
287425 let feePayment = value(i.payments[2])
288426 if ((feePayment.assetId != getEggAssetId()))
289427 then throw("You need to attach EGG tokens as fee")
290428 else if ((leftToPay > feePayment.amount))
291429 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
292430 else {
293431 let refererRewardForPerch = fraction(leftToPay, 5, 100)
294432 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)]))
295433 if ((refCall == refCall))
296434 then {
297435 let toBurn = if (refCall)
298436 then (leftToPay - refererRewardForPerch)
299437 else leftToPay
300438 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
301439 if ((burnCall == burnCall))
302440 then leftToPay
303441 else throw("Strict value is not equal to itself.")
304442 }
305443 else throw("Strict value is not equal to itself.")
306444 }
307445 }
308446 else 0
309447 if ((payment == payment))
310448 then {
311- let $t085708619 = getAssetFarmingPower(assetId)
312- let gen = $t085708619._1
313- let rarity = $t085708619._2
449+ let $t01360313652 = getAssetFarmingPower(assetId)
450+ let gen = $t01360313652._1
451+ let rarity = $t01360313652._2
314452 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
315453 if ((call == call))
316454 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)
317455 else throw("Strict value is not equal to itself.")
318456 }
319457 else throw("Strict value is not equal to itself.")
320458 }
321459 else throw("Strict value is not equal to itself.")
322460 }
323461 else throw("Strict value is not equal to itself.")
324462 }
325463 }
326464
327465
328466
329467 @Callable(i)
330-func finishRebirth (initTx) = {
331- let address = toString(i.caller)
332- let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
333- let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
334- let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
335- let validPayment = checkAdditionalPayment(i.payments[0])
336- if ((validPayment == validPayment))
337- then {
338- let recordAction = invoke(getCouponsAddress(), "recordAction", ["REBIRTH"], nil)
339- if ((recordAction == recordAction))
340- then {
341- func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
468+func finishRebirth (initTx) = finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false)
342469
343- func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
344470
345- if ((status != "open"))
346- then throw("rebirth is finished or not open")
347- else if ((finishBlock > height))
348- then throw("you cannot finish rebirth, yet")
349- else {
350- let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
351- let txId = initTx
352- let result = if ((indexOf(win, "perch") != unit))
353- then {
354- let color = takeRight(win, 1)
355- let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
356- if ((call == call))
357- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
358- else throw("Strict value is not equal to itself.")
359- }
360- else if ((win == "incubator"))
361- then {
362- let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
363- if ((call == call))
364- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
365- else throw("Strict value is not equal to itself.")
366- }
367- else if ((win == "ar"))
368- then {
369- let assetId = getAccessItemAssetId(getHuntAddress())
370- let price = getAccessItemPrice(getHuntAddress())
371- let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
372- if ((call == call))
373- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
374- else throw("Strict value is not equal to itself.")
375- }
376- else if ((win == "phoenix"))
377- then {
378- let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
379- if ((call == call))
380- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
381- else throw("Strict value is not equal to itself.")
382- }
383- else if ((indexOf(win, "duckling") != unit))
384- then {
385- let level = parseIntValue(split(win, "_")[1])
386- let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
387- if ((call == call))
388- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
389- else throw("Strict value is not equal to itself.")
390- }
391- else if ((indexOf(win, "item") != unit))
392- then {
393- let itemName = split(win, "!")[1]
394- let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
395- if ((call == call))
396- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
397- else throw("Strict value is not equal to itself.")
398- }
399- else throw("RFB: Some error occured, please contact the admins!")
400- ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
401- }
402- }
403- else throw("Strict value is not equal to itself.")
404- }
405- else throw("Strict value is not equal to itself.")
406- }
471+
472+@Callable(i)
473+func finishRebirthDouble (initTx) = if (!(if ((size(i.payments) == 2))
474+ then (i.payments[0].amount == 1)
475+ else false))
476+ then throw("Invalid payment")
477+ else {
478+ let assetId = value(i.payments[0].assetId)
479+ let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
480+ if ((boosterType == boosterType))
481+ then if ((boosterType == "ART-GIFT_DOUBL"))
482+ then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true))
483+ else throw("Error! Wrong item attached to double rewards!")
484+ else throw("Strict value is not equal to itself.")
485+ }
407486
408487
409488 @Verifier(tx)
410489 func verify () = if (isTestEnv())
411490 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
412491 else {
413492 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
414493 let secondUser = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
415494 let thirdUser = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
416495 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
417496 then 1
418497 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
419498 then 1
420499 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
421500 then 1
422501 else 0
423502 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
424503 then 1
425504 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
426505 then 1
427506 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
428507 then 1
429508 else 0
430509 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
431510 then 1
432511 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
433512 then 1
434513 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
435514 then 1
436515 else 0
437516 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
438517 match tx {
439518 case _ =>
440519 (signaturesCount >= 2)
441520 }
442521 }
443522

github/deemru/w8io/3ef1775 
59.38 ms