tx · 5puwzvvYqHP8YkaS61QzxLjCS1GEPTPJNY7ZVLf49st5 3N8Sh63vMEnHzGWrxAuqUwyoe8nnwNafRYm: -0.02100000 Waves 2024.10.03 12:32 [3310494] smart account 3N8Sh63vMEnHzGWrxAuqUwyoe8nnwNafRYm > SELF 0.00000000 Waves
{ "type": 13, "id": "5puwzvvYqHP8YkaS61QzxLjCS1GEPTPJNY7ZVLf49st5", "fee": 2100000, "feeAssetId": null, "timestamp": 1727947980484, "version": 2, "chainId": 84, "sender": "3N8Sh63vMEnHzGWrxAuqUwyoe8nnwNafRYm", "senderPublicKey": "4zRFehCUfXKrC2CnzZRqqio7SeCiqJsryPjDUU1ojLPc", "proofs": [ "5cSVVxrhzrH3pQ66dRhmY5yZA93UkadNLhczfmK2KoUDuSTCAvqvhMkogxqJtR8msVtiXXH9sCfAQkpn5aXAS9JW" ], "script": "base64:BgIcCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIECgIICCwBDmJhc2VQcmljZVNwaWNlAACAlOvcAwEMYmFzZVByaWNlRWdnAACAhK9fARBkZWxheUZvckhhdGNoaW5nAAACAQ9oYXRjaGluZ1N0YXJ0ZWQAAhBCUkVFRElOR19TVEFSVEVEARBoYXRjaGluZ0ZpbmlzaGVkAAIRQlJFRURJTkdfRklOSVNIRUQBFHN0YXRpY0tleV9lZ2dBc3NldElkAAIRc3RhdGljX2VnZ0Fzc2V0SWQBFnN0YXRpY0tleV9zcGljZUFzc2V0SWQAAhNzdGF0aWNfc3BpY2VBc3NldElkARxzdGF0aWNLZXlfZHVja0JyZWVkZXJBZGRyZXNzAAIVc3RhdGljX2JyZWVkZXJBZGRyZXNzAR5zdGF0aWNLZXlfdHVydGxlQnJlZWRlckFkZHJlc3MAAhtzdGF0aWNfdHVydGxlQnJlZWRlckFkZHJlc3MBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAIUc3RhdGljX29yYWNsZUFkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAhRzdGF0aWNfZmVlQWdncmVnYXRvcgESZ2V0U3RhdHNLZXlfYW1vdW50AAIMc3RhdHNfYW1vdW50AQtnZXRTdGF0c0tleQEJZ2VuU3RyaW5nCQCsAgIJAKwCAgIGc3RhdHNfBQlnZW5TdHJpbmcCB19hbW91bnQBC2dldENoaWxkcmVuAQdhc3NldElkCQCsAgIJAKwCAgIGYXNzZXRfBQdhc3NldElkAglfY2hpbGRyZW4BDGdldFBhcmVudEtleQIEdHhJZAlwYXJlbnROdW0JAKwCAgkArAICCQCsAgICB2luaXR0eF8JANgEAQUEdHhJZAIHX3BhcmVudAkApAMBBQlwYXJlbnROdW0BE2dldFByb2Nlc3NTdGF0dXNLZXkCB2FkZHJlc3MEdHhJZAkArAICCQCsAgIJAKwCAgUHYWRkcmVzcwIBXwUEdHhJZAIHX3N0YXR1cwEZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQIHYWRkcmVzcwR0eElkCQCsAgIJAKwCAgkArAICBQdhZGRyZXNzAgFfBQR0eElkAgNfZmgBCGdldElkS2V5AgdhZGRyZXNzBHR4SWQJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAV8FBHR4SWQCA19kaQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEMdHJ5R2V0U3RyaW5nAQNrZXkJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIFBHRoaXMFA2tleQENdHJ5R2V0SW50ZWdlcgEDa2V5BAN2YWwEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAABQN2YWwBCWdldE9yYWNsZQAJAQdBZGRyZXNzAQkA2QQBCQEMdHJ5R2V0U3RyaW5nAQkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAEXZ2V0VHVydGxlQnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJAR5zdGF0aWNLZXlfdHVydGxlQnJlZWRlckFkZHJlc3MAARVnZXREdWNrQnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARxzdGF0aWNLZXlfZHVja0JyZWVkZXJBZGRyZXNzAAENZ2V0RWdnQXNzZXRJZAAJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARRzdGF0aWNLZXlfZWdnQXNzZXRJZAABD2dldFNwaWNlQXNzZXRJZAAJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARZzdGF0aWNLZXlfc3BpY2VBc3NldElkAAEQZ2V0RmVlQWdncmVnYXRvcgAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAERZ2V0QWxsb3dlZE11dGFudHMACQDMCAIJARdnZXRUdXJ0bGVCcmVlZGVyQWRkcmVzcwAJAMwIAgkBFWdldER1Y2tCcmVlZGVyQWRkcmVzcwAFA25pbAEQY2FsY1ByaWNlSW5Bc3NldAEKYmFzZUFtb3VudAkAZAIFCmJhc2VBbW91bnQJAGkCCQBpAgkAaAIFCmJhc2VBbW91bnQJAGQCCQENdHJ5R2V0SW50ZWdlcgEJARJnZXRTdGF0c0tleV9hbW91bnQAAAEA6AcJAJADAQkBEWdldEFsbG93ZWRNdXRhbnRzAAEHZ2V0Qm9vbAEDa2V5BAckbWF0Y2gwCQCbCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEJaXNUZXN0RW52AAkBB2dldEJvb2wBAgdURVNURU5WAQ9nZXRSYW5kb21OdW1iZXIECHZhcmlhbnRzBHR4SWQUaGF0Y2hpbmdGaW5pc2hIZWlnaHQGb2Zmc2V0BA9yYW5kb21TZWVkQmxvY2sJAQV2YWx1ZQEJAO0HAQkAZQIFFGhhdGNoaW5nRmluaXNoSGVpZ2h0AAEECnJhbmRvbUhhc2gJANQWAQkAywECBQR0eElkCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgkAagIJALIJAgUKcmFuZG9tSGFzaAUGb2Zmc2V0BQh2YXJpYW50cwEMZ2V0UmFuZG9tR2VuBQRnZW4xBGdlbjIEc3RlcAR0eElkFGhhdGNoaW5nRmluaXNoSGVpZ2h0BAlyYW5kb21OdW0JAQ9nZXRSYW5kb21OdW1iZXIEAAIFBHR4SWQFFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQRzdGVwBANnZW4DCQAAAgUJcmFuZG9tTnVtAAAFBGdlbjEFBGdlbjIFA2dlbgEIZ2VuZXJhdGUEBHR4SWQMZmluaXNoSGVpZ2h0CXBhcmVudDFJZAlwYXJlbnQySWQEC2NvbG9yUmFuZG9tCQEPZ2V0UmFuZG9tTnVtYmVyBABkBQR0eElkBQxmaW5pc2hIZWlnaHQACwQFY29sb3IDCQBmAgAaBQtjb2xvclJhbmRvbQIBQQMJAGYCADAFC2NvbG9yUmFuZG9tAgFCAwkAZgIARgULY29sb3JSYW5kb20CAUMDCQBmAgBaBQtjb2xvclJhbmRvbQIBRAIBRwQKcGFyZW50MUdlbgkAtQkCCAkBBXZhbHVlAQkA7AcBBQlwYXJlbnQxSWQEbmFtZQIABApwYXJlbnQyR2VuCQC1CQIICQEFdmFsdWUBCQDsBwEFCXBhcmVudDJJZARuYW1lAgAEA2dlbgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgVNVE5ULQkBDGdldFJhbmRvbUdlbgUJAKwCAgkAkQMCBQpwYXJlbnQxR2VuAAAJAJEDAgUKcGFyZW50MUdlbgAFCQCsAgIJAJEDAgUKcGFyZW50MkdlbgAACQCRAwIFCnBhcmVudDJHZW4ABQAABQR0eElkBQxmaW5pc2hIZWlnaHQJAQxnZXRSYW5kb21HZW4FCQCsAgIJAJEDAgUKcGFyZW50MUdlbgAACQCRAwIFCnBhcmVudDFHZW4ABgkArAICCQCRAwIFCnBhcmVudDJHZW4AAAkAkQMCBQpwYXJlbnQyR2VuAAYAAQUEdHhJZAUMZmluaXNoSGVpZ2h0CQEMZ2V0UmFuZG9tR2VuBQkArAICCQCRAwIFCnBhcmVudDFHZW4AAAkAkQMCBQpwYXJlbnQxR2VuAAcJAKwCAgkAkQMCBQpwYXJlbnQyR2VuAAAJAJEDAgUKcGFyZW50MkdlbgAHAAIFBHR4SWQFDGZpbmlzaEhlaWdodAkBDGdldFJhbmRvbUdlbgUJAKwCAgkAkQMCBQpwYXJlbnQxR2VuAAAJAJEDAgUKcGFyZW50MUdlbgAICQCsAgIJAJEDAgUKcGFyZW50MkdlbgAACQCRAwIFCnBhcmVudDJHZW4ACAADBQR0eElkBQxmaW5pc2hIZWlnaHQJAQxnZXRSYW5kb21HZW4FCQCsAgIJAJEDAgUKcGFyZW50MUdlbgAACQCRAwIFCnBhcmVudDFHZW4ACQkArAICCQCRAwIFCnBhcmVudDJHZW4AAAkAkQMCBQpwYXJlbnQyR2VuAAkABAUEdHhJZAUMZmluaXNoSGVpZ2h0CQEMZ2V0UmFuZG9tR2VuBQkArAICCQCRAwIFCnBhcmVudDFHZW4AAAkAkQMCBQpwYXJlbnQxR2VuAAoJAKwCAgkAkQMCBQpwYXJlbnQyR2VuAAAJAJEDAgUKcGFyZW50MkdlbgAKAAUFBHR4SWQFDGZpbmlzaEhlaWdodAkBDGdldFJhbmRvbUdlbgUJAKwCAgkAkQMCBQpwYXJlbnQxR2VuAAAJAJEDAgUKcGFyZW50MUdlbgALCQCsAgIJAJEDAgUKcGFyZW50MkdlbgAACQCRAwIFCnBhcmVudDJHZW4ACwAGBQR0eElkBQxmaW5pc2hIZWlnaHQJAQxnZXRSYW5kb21HZW4FCQCsAgIJAJEDAgUKcGFyZW50MUdlbgAACQCRAwIFCnBhcmVudDFHZW4ADAkArAICCQCRAwIFCnBhcmVudDJHZW4AAAkAkQMCBQpwYXJlbnQyR2VuAAwABwUEdHhJZAUMZmluaXNoSGVpZ2h0AgItRwUFY29sb3IFA2dlbgEIaXNTeW1ib2wCA2FjYwNzeW0DCQAAAgUDc3ltCAUDYWNjAl8yCQCUCgIJAGQCCAUDYWNjAl8xAAEIBQNhY2MCXzIJAJQKAgkAZAIIBQNhY2MCXzEAAAgFA2FjYwJfMgEQZ2V0QW1vdW50T3JDbGVhcgEGYW1vdW50AwkBCGNvbnRhaW5zAgUGYW1vdW50AgEwAgAFBmFtb3VudAEIY2hhckxpc3QACQDMCAICAUEJAMwIAgIBQgkAzAgCAgFDCQDMCAICAUQJAMwIAgIBRQkAzAgCAgFGCQDMCAICAUcJAMwIAgIBSAkAzAgCAgFJCQDMCAICAUoJAMwIAgIBSwkAzAgCAgFMCQDMCAICAU0JAMwIAgIBTgkAzAgCAgFPCQDMCAICAVAJAMwIAgIBUQkAzAgCAgFSCQDMCAICAVMJAMwIAgIBVAkAzAgCAgFVCQDMCAICAVYJAMwIAgIBVwkAzAgCAgFYCQDMCAICAVkJAMwIAgIBWgUDbmlsARFnZXRSYXJpdHlGcm9tTmFtZQEEbmFtZQQFY29sb3IJALICAgUEbmFtZQABBAhnZW5vdHlwZQkAtQkCCQCzAgIJALACAgUEbmFtZQAFAAMCAAQIZ2VuZXRpY3MJAMwIAgkAkQMCBQhnZW5vdHlwZQABCQDMCAIJAJEDAgUIZ2Vub3R5cGUAAwkAzAgCCQCRAwIFCGdlbm90eXBlAAUJAMwIAgkAkQMCBQhnZW5vdHlwZQAHCQDMCAIJAJEDAgUIZ2Vub3R5cGUACQkAzAgCCQCRAwIFCGdlbm90eXBlAAsJAMwIAgkAkQMCBQhnZW5vdHlwZQANCQDMCAIJAJEDAgUIZ2Vub3R5cGUADwUDbmlsCgENY29tcG9zZVN0cmluZwIDYWNjBGNoYXIECWNoYXJDb3VudAoAAiRsBQhnZW5ldGljcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQRjaGFyCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhpc1N5bWJvbAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgJAKwCAgUDYWNjCQEQZ2V0QW1vdW50T3JDbGVhcgEJAKwCAgkApAMBCAUJY2hhckNvdW50Al8xBQRjaGFyCQCsAgIJAKwCAgoAAiRsCQEIY2hhckxpc3QACgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ1jb21wb3NlU3RyaW5nAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoCAS0FBWNvbG9yAQ1uck9mVHlwZUdlbmVzAQNnZW4ECGdlbm90eXBlCQC1CQIJALMCAgkAsAICBQNnZW4ABQADAgAEBnBhcnRzMQkArAICCQCRAwIFCGdlbm90eXBlAAAJAJEDAgUIZ2Vub3R5cGUAAQQGcGFydHMyCQCsAgIJAJEDAgUIZ2Vub3R5cGUAAgkAkQMCBQhnZW5vdHlwZQADBAZwYXJ0czMJAKwCAgkAkQMCBQhnZW5vdHlwZQAECQCRAwIFCGdlbm90eXBlAAUEBnBhcnRzNAkArAICCQCRAwIFCGdlbm90eXBlAAYJAJEDAgUIZ2Vub3R5cGUABwQGcGFydHM1CQCsAgIJAJEDAgUIZ2Vub3R5cGUACAkAkQMCBQhnZW5vdHlwZQAJBAZwYXJ0czYJAKwCAgkAkQMCBQhnZW5vdHlwZQAKCQCRAwIFCGdlbm90eXBlAAsEBnBhcnRzNwkArAICCQCRAwIFCGdlbm90eXBlAAwJAJEDAgUIZ2Vub3R5cGUADQQGcGFydHM4CQCsAgIJAJEDAgUIZ2Vub3R5cGUADgkAkQMCBQhnZW5vdHlwZQAPBAVwYXJ0cwkAzAgCBQZwYXJ0czEJAMwIAgUGcGFydHMyCQDMCAIFBnBhcnRzMwkAzAgCBQZwYXJ0czQJAMwIAgUGcGFydHM1CQDMCAIFBnBhcnRzNgkAzAgCBQZwYXJ0czcJAMwIAgUGcGFydHM4BQNuaWwKAQ9zb3J0UGFydHNCeVR5cGUCA2FjYwRwYXJ0BApzcGxpdFBhcnRzCQC1CQIFBHBhcnQCAAMJAAACCQCRAwIFCnNwbGl0UGFydHMAAAIBVAkAlgoECQDNCAIIBQNhY2MCXzEJAJEDAgUKc3BsaXRQYXJ0cwABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80AwkAAAIJAJEDAgUKc3BsaXRQYXJ0cwAAAgFECQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQpzcGxpdFBhcnRzAAEIBQNhY2MCXzMIBQNhY2MCXzQDCQAAAgkAkQMCBQpzcGxpdFBhcnRzAAACAUMJAJYKBAgFA2FjYwJfMQgFA2FjYwJfMgkAzQgCCAUDYWNjAl8zCQCRAwIFCnNwbGl0UGFydHMAAQgFA2FjYwJfNAMJAAACCQCRAwIFCnNwbGl0UGFydHMAAAIBSAkAlgoE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AgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoEEmZpbmlzaGVkVHVydGxlR2VucwMJAAACBQp0dXJ0bGVHZW5zAgACAAkArAICCQCsAgICAlQ6BQp0dXJ0bGVHZW5zAgFfBBBmaW5pc2hlZER1Y2tHZW5zAwkAAAIFCGR1Y2tHZW5zAgACAAkArAICCQCsAgICAkQ6BQhkdWNrR2VucwIBXwQPZmluaXNoZWRDYXRHZW5zAwkAAAIFB2NhdEdlbnMCAAIACQCsAgIJAKwCAgICQzoFB2NhdEdlbnMCAV8EEGZpbmlzaGVkSG9uZEdlbnMDCQAAAgUIaG9uZEdlbnMCAAIACQCsAgIJAKwCAgICSDoFCGhvbmRHZW5zAgFfCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgIMREVCVUdfVFVSVExFBQp0dXJ0bGVHZW5zCQDMCAIJAQtTdHJpbmdFbnRyeQICCkRFQlVHX0RVQ0sFCGR1Y2tHZW5zCQDMCAIJAQtTdHJpbmdFbnRyeQICCURFQlVHX0NBVAUHY2F0R2VucwkAzAgCCQELU3RyaW5nRW50cnkCAgpERUJVR19IT05EBQhob25kR2VucwUDbmlsCQCsAgIJAKwCAgkArAICBRJmaW5pc2hlZFR1cnRsZUdlbnMFEGZpbmlzaGVkRHVja0dlbnMFD2ZpbmlzaGVkQ2F0R2VucwUIaG9uZEdlbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFnZhbGlkYXRlSWZNdXRhbnRGYWlsZWQBBnJhcml0eQMJAGYCAAMJAJADAQkAtQkCBQZyYXJpdHkCAToGBwEWZmluaXNoSGF0Y2hpbmdJbnRlcm5hbAIEdHhJZAVvd25lcgQQcHJvY2Vzc1N0YXR1c0tleQkBE2dldFByb2Nlc3NTdGF0dXNLZXkCBQVvd25lcgUEdHhJZAQPZmluaXNoSGVpZ2h0S2V5CQEZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQIFBW93bmVyBQR0eElkBAVJZEtleQkBCGdldElkS2V5AgUFb3duZXIFBHR4SWQED3Byb2Nlc3NUeFN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUQcHJvY2Vzc1N0YXR1c0tleQQTcHJvY2Vzc0ZpbmlzaEhlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUPZmluaXNoSGVpZ2h0S2V5AwkAAAIFD3Byb2Nlc3NUeFN0YXR1cwkBEGhhdGNoaW5nRmluaXNoZWQABAJJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkBCGdldElkS2V5AgUFb3duZXIFBHR4SWQJAAIBCQCsAgICQlRoZSBNVVRBTlQgd2FzIGJyZWVkZWQgYW5kIGNsYWltZWQgYWxyZWFkeSwgaGVyZSBpcyB0aGUgZm9sb3dpbmc6IAUCSWQDCQBmAgUTcHJvY2Vzc0ZpbmlzaEhlaWdodAUGaGVpZ2h0CQACAQkArAICCQCsAgIJAKwCAgkArAICAh1CcmVlZGluZyBpcyBub3QgZmluaXNoZWQgeWV0IAkApAMBCQBlAgUTcHJvY2Vzc0ZpbmlzaEhlaWdodAUGaGVpZ2h0AicgYmxvY2tzIHJlbWFpbmluZywgaXQgd2lsbCB0YWtlIGFyb3VuZCAJAKQDAQkAZQIFE3Byb2Nlc3NGaW5pc2hIZWlnaHQFBmhlaWdodAIIIG1pbnV0ZXMECXBhcmVudDFJZAkBDHRyeUdldFN0cmluZwEJAQxnZXRQYXJlbnRLZXkCCQDZBAEFBHR4SWQAAQQJcGFyZW50MklkCQEMdHJ5R2V0U3RyaW5nAQkBDGdldFBhcmVudEtleQIJANkEAQUEdHhJZAACBA5wYXJlbnQxSWRCeXRlcwkA2QQBBQlwYXJlbnQxSWQEDnBhcmVudDJJZEJ5dGVzCQDZBAEFCXBhcmVudDJJZAQDZ2VuCQEIZ2VuZXJhdGUECQDZBAEFBHR4SWQFE3Byb2Nlc3NGaW5pc2hIZWlnaHQFDnBhcmVudDFJZEJ5dGVzBQ5wYXJlbnQySWRCeXRlcwQHZmFybUdlbgkBDW5yT2ZUeXBlR2VuZXMBBQNnZW4EDnJhcml0eUZyb21OYW1lCQERZ2V0UmFyaXR5RnJvbU5hbWUBBQNnZW4ECWFtb3VudEdlbgkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkBC2dldFN0YXRzS2V5AQUDZ2VuAAEEBmFtb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkBEmdldFN0YXRzS2V5X2Ftb3VudAAAAQQFYXNzZXQJAMMIBwkArAICAgVNVE5ULQkApAMBBQZhbW91bnQFA2dlbgABAAAHBQR1bml0BRNwcm9jZXNzRmluaXNoSGVpZ2h0BAdhc3NldElkCQC4CAEFBWFzc2V0BAhxdWFudGl0eQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIGc3RhdHNfCAUHZmFybUdlbgJfMgIJX3F1YW50aXR5BAZyYXJpdHkJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICBnN0YXRzXwUOcmFyaXR5RnJvbU5hbWUCB19yYXJpdHkEDm93bmVyQXNBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQVvd25lcgQGZmFpbGVkCQEWdmFsaWRhdGVJZk11dGFudEZhaWxlZAEIBQdmYXJtR2VuAl8yBA50cmFuc2Zlck9yQnVybgMFBmZhaWxlZAkBBEJ1cm4CBQdhc3NldElkAAEJAQ5TY3JpcHRUcmFuc2ZlcgMFDm93bmVyQXNBZGRyZXNzAAEFB2Fzc2V0SWQEFXRyYW5zZmVyT3JCdXJuUGFyZW50MQMJAAACCQEPZ2V0UmFuZG9tTnVtYmVyBAAKCQDZBAEFBHR4SWQFE3Byb2Nlc3NGaW5pc2hIZWlnaHQAAgAFCQEEQnVybgIFDnBhcmVudDFJZEJ5dGVzAAEJAQ5TY3JpcHRUcmFuc2ZlcgMFDm93bmVyQXNBZGRyZXNzAAEFDnBhcmVudDFJZEJ5dGVzBBV0cmFuc2Zlck9yQnVyblBhcmVudDIDCQAAAgkBD2dldFJhbmRvbU51bWJlcgQACgkA2QQBBQR0eElkBRNwcm9jZXNzRmluaXNoSGVpZ2h0AAMABQkBBEJ1cm4CBQ5wYXJlbnQySWRCeXRlcwABCQEOU2NyaXB0VHJhbnNmZXIDBQ5vd25lckFzQWRkcmVzcwABBQ5wYXJlbnQySWRCeXRlcwkAzAgCCQELU3RyaW5nRW50cnkCBRBwcm9jZXNzU3RhdHVzS2V5CQEQaGF0Y2hpbmdGaW5pc2hlZAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFSWRLZXkJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQDYBAEFB2Fzc2V0SWQFBUlkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQELZ2V0U3RhdHNLZXkBBQNnZW4FCWFtb3VudEdlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFN0YXRzS2V5X2Ftb3VudAAFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICBnN0YXRzXwgFB2Zhcm1HZW4CXzICCV9xdWFudGl0eQkAZAIFCHF1YW50aXR5AAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgZzdGF0c18FDnJhcml0eUZyb21OYW1lAgdfcmFyaXR5CQBkAgUGcmFyaXR5AAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgZhc3NldF8FCXBhcmVudDFJZAIJX2NoaWxkcmVuAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgZhc3NldF8FCXBhcmVudDJJZAIJX2NoaWxkcmVuAAEJAMwIAgUFYXNzZXQJAMwIAgUOdHJhbnNmZXJPckJ1cm4JAMwIAgUVdHJhbnNmZXJPckJ1cm5QYXJlbnQxCQDMCAIFFXRyYW5zZmVyT3JCdXJuUGFyZW50MgUDbmlsARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQdwYXltZW50AwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhlCQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAlmZWVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHEJDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwBGmNoZWNrVHlwZUFuZFZhbGlkT2JzdGluYXRlAQRpbmZvBAhzcGxpdHRlZAkAtQkCCAUEaW5mbwRuYW1lAgAEBHR5cGUJAJEDAgUIc3BsaXR0ZWQAAAQDZ2VuCQCRAwIFCHNwbGl0dGVkAA4DCQECIT0CBQNnZW4CAU8JAAIBAjJNQ1RBVk86IE9ubHkgb2JzdGluYXRlcyBjYW4gYmUgdHVybmVkIGludG8gbXV0YW50cwQJYnJlZWRlclNjAwkAAAIFBHR5cGUCAVQJARdnZXRUdXJ0bGVCcmVlZGVyQWRkcmVzcwADCQAAAgUEdHlwZQIBRAkBFWdldER1Y2tCcmVlZGVyQWRkcmVzcwAJAAIBAhRNQ1RBVk86IEludmFsaWQgdHlwZQMJAQIhPQIFCWJyZWVkZXJTYwgFBGluZm8GaXNzdWVyCQACAQJMTUNUQVZPOiBPbmx5IG9ic3RpbmF0ZXMgZnJvbSB0aGUgYnJlZWRlciBjb250cmFjdCBjYW4gYmUgdHVybmVkIGludG8gbXV0YW50cwMJAAACCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQlicmVlZGVyU2MJANgEAQgFBGluZm8CaWQCAAkAAgECE01DVEFWTzogSW52YWxpZCBuZnQDCQAAAgkBDXRyeUdldEludGVnZXIBCQELZ2V0Q2hpbGRyZW4BCQDYBAEIBQRpbmZvAmlkAAEJAAIBAhhNQ1RBVk86IE5GVCBhbHJlYWR5IHVzZWQFBHR5cGUFAWkBD2NvbmZpZ3VyZU9yYWNsZQEGb3JhY2xlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIPSUNVOiBhZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQICFHN0YXRpY19vcmFjbGVBZGRyZXNzBQZvcmFjbGUFA25pbAFpARNzdGFydE11dGFudEhhdGNoaW5nAQ5yZWZlcmVyQWRkcmVzcwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMABQkAAgECGU1TTUg6IDUgcGF5bWVudHMgcmVxdWlyZWQDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABCQACAQIgTVNNSDogMXN0IHBheW1lbnQgbXVzdCBiZSBhbiBORlQDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAABCQACAQIgTVNNSDogMm5kIHBheW1lbnQgbXVzdCBiZSBhbiBORlQEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAIDCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAwdhc3NldElkCQEPZ2V0U3BpY2VBc3NldElkAAYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAMGYW1vdW50CQEQY2FsY1ByaWNlSW5Bc3NldAEJAQ5iYXNlUHJpY2VTcGljZQAJAAIBAiJNU01IOiA0dGggcGF5bWVudCBtdXN0IGJlIGluIHNwaWNlAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAQHYXNzZXRJZAkBDWdldEVnZ0Fzc2V0SWQABgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMABAZhbW91bnQJARBjYWxjUHJpY2VJbkFzc2V0AQkBDGJhc2VQcmljZUVnZwAJAAIBAiBNU01IOiA1dGggcGF5bWVudCBtdXN0IGJlIGluIGVnZwQEbmZ0MQkBBXZhbHVlAQkA7AcBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEBG5mdDIJAQV2YWx1ZQEJAOwHAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBAV0eXBlMQkBGmNoZWNrVHlwZUFuZFZhbGlkT2JzdGluYXRlAQUEbmZ0MQQFdHlwZTIJARpjaGVja1R5cGVBbmRWYWxpZE9ic3RpbmF0ZQEFBG5mdDIDCQAAAgUFdHlwZTEFBXR5cGUyCQACAQImTVNNSDogTkZUcyBjYW4gbm90IGJlIG9mIHRoZSBzYW1lIHR5cGUJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEMZ2V0UGFyZW50S2V5AggFAWkNdHJhbnNhY3Rpb25JZAABCQDYBAEIBQRuZnQxAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxnZXRQYXJlbnRLZXkCCAUBaQ10cmFuc2FjdGlvbklkAAIJANgEAQgFBG5mdDICaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2dldFByb2Nlc3NTdGF0dXNLZXkCCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPaGF0Y2hpbmdTdGFydGVkAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWdldFByb2Nlc3NGaW5pc2hIZWlnaHRLZXkCCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQBkAgUGaGVpZ2h0CQEQZGVsYXlGb3JIYXRjaGluZwAFA25pbAUMdmFsaWRQYXltZW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGZpbmlzaE11dGFudEhhdGNoaW5nAQd0eElkU3RyBAVvd25lcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAh9NRk1IOiBXcm9uZyBhbW91bnQgb2YgcGF5bWVudHMhBAtmZWVWYWxpZGF0ZQkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAADCQAAAgULZmVlVmFsaWRhdGUFC2ZlZVZhbGlkYXRlCQDOCAIJARZmaW5pc2hIYXRjaGluZ0ludGVybmFsAgUHdHhJZFN0cgUFb3duZXIFC2ZlZVZhbGlkYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldFJhcml0eQEIZ2Vub3R5cGUEDnJhcml0eUZyb21OYW1lCQERZ2V0UmFyaXR5RnJvbU5hbWUBBQhnZW5vdHlwZQQIcXVhbnRpdHkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIGc3RhdHNfBQ5yYXJpdHlGcm9tTmFtZQIHX3Jhcml0eQkArAICCQCsAgICBnN0YXRzXwUOcmFyaXR5RnJvbU5hbWUCB19yYXJpdHkEBXBvd2VyCQBsBgkAaQIAkE4FCHF1YW50aXR5AAQABQABAAIFBUZMT09SBAZyYXJpdHkDCQBmAgUFcG93ZXIAAAUFcG93ZXIAAgkAlAoCBQNuaWwJAJQKAgUOcmFyaXR5RnJvbU5hbWUFBnJhcml0eQFpAQxyZWR1Y2VSYXJpdHkCB2Fzc2V0SWQEZkdlbgkAAgECFE1SUjogTm90IGltcGxlbWVudGVkAQJ0eAEGdmVyaWZ5AAMJAQlpc1Rlc3RFbnYACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BAlmaXJzdFVzZXIBIFEc5P1m/xJp0vFaFJ87suL0O3/By2gnojRebDjXV91tBApzZWNvbmRVc2VyASDBbN+O7dONc4+Lovn6iQ/0dc1EG1RyUqO0nNJWpC3gdQQJdGhpcmRVc2VyASDnW/SOqtL5SZ5uhCa4+X4f3GeofdwruNTqe83yaArBJQQPZmlyc3RVc2VyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUJZmlyc3RVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCWZpcnN0VXNlcgABAAAEEHNlY29uZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQpzZWNvbmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQpzZWNvbmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQpzZWNvbmRVc2VyAAEAAAQPdGhpcmRVc2VyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUJdGhpcmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCXRoaXJkVXNlcgABAAAED3NpZ25hdHVyZXNDb3VudAkAZAIJAGQCBQ9maXJzdFVzZXJTaWduZWQFEHNlY29uZFVzZXJTaWduZWQFD3RoaXJkVXNlclNpZ25lZAQHJG1hdGNoMAUCdHgJAGcCBQ9zaWduYXR1cmVzQ291bnQAAk9HNew=", "height": 3310494, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EbkeaxYKue7gHuiKB3ychQERC5evFF3fM5Zz7zZ4PkT8 Next: AD94v3vJ8CD6NXqn4U9wH4xUq5gsSN7FaBcp6NxBrVW6 Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a () = 1000000000 | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | func b () = 200000000 | |
8 | 8 | ||
9 | 9 | ||
10 | 10 | func c () = 2 | |
11 | 11 | ||
12 | 12 | ||
13 | 13 | func d () = "BREEDING_STARTED" | |
14 | 14 | ||
15 | 15 | ||
16 | 16 | func e () = "BREEDING_FINISHED" | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func f () = "static_eggAssetId" | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | func g () = "static_spiceAssetId" | |
23 | 23 | ||
24 | 24 | ||
25 | 25 | func h () = "static_breederAddress" | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func i () = "static_turtleBreederAddress" | |
29 | 29 | ||
30 | 30 | ||
31 | 31 | func j () = "static_oracleAddress" | |
32 | 32 | ||
33 | 33 | ||
34 | 34 | func k () = "static_extraFee" | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func l () = "static_feeAggregator" | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func m () = "stats_amount" | |
41 | 41 | ||
42 | 42 | ||
43 | 43 | func n (o) = (("stats_" + o) + "_amount") | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | func p (q) = (("asset_" + q) + "_children") | |
47 | 47 | ||
48 | 48 | ||
49 | 49 | func r (s,t) = ((("inittx_" + toBase58String(s)) + "_parent") + toString(t)) | |
50 | 50 | ||
51 | 51 | ||
52 | 52 | func u (v,s) = (((v + "_") + s) + "_status") | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func w (v,s) = (((v + "_") + s) + "_fh") | |
56 | 56 | ||
57 | 57 | ||
58 | 58 | func x (v,s) = (((v + "_") + s) + "_di") | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | func y (v,z) = { | |
62 | 62 | let A = getString(v, z) | |
63 | 63 | if ($isInstanceOf(A, "String")) | |
64 | 64 | then { | |
65 | 65 | let B = A | |
66 | 66 | B | |
67 | 67 | } | |
68 | 68 | else "" | |
69 | 69 | } | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func C (z) = y(this, z) | |
73 | 73 | ||
74 | 74 | ||
75 | 75 | func D (z) = { | |
76 | 76 | let E = { | |
77 | 77 | let A = getInteger(this, z) | |
78 | 78 | if ($isInstanceOf(A, "Int")) | |
79 | 79 | then { | |
80 | 80 | let F = A | |
81 | 81 | F | |
82 | 82 | } | |
83 | 83 | else 0 | |
84 | 84 | } | |
85 | 85 | E | |
86 | 86 | } | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func G () = Address(fromBase58String(C(j()))) | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func H () = Address(fromBase58String(y(G(), i()))) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func I () = Address(fromBase58String(y(G(), h()))) | |
96 | 96 | ||
97 | 97 | ||
98 | 98 | func J () = fromBase58String(y(G(), f())) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func K () = fromBase58String(y(G(), g())) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func L () = Address(fromBase58String(y(G(), l()))) | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func M () = [H(), I()] | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | func N (O) = (O + (((O * (D(m()) + 1)) / 1000) / size(M()))) | |
111 | 111 | ||
112 | 112 | ||
113 | 113 | func P (z) = { | |
114 | 114 | let A = getBoolean(this, z) | |
115 | 115 | if ($isInstanceOf(A, "Boolean")) | |
116 | 116 | then { | |
117 | 117 | let F = A | |
118 | 118 | F | |
119 | 119 | } | |
120 | 120 | else false | |
121 | 121 | } | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | func Q () = P("TESTENV") | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | func R (S,s,T,U) = { | |
128 | 128 | let V = value(blockInfoByHeight((T - 1))) | |
129 | 129 | let W = sha256_16Kb((s + value(V.vrf))) | |
130 | 130 | (toInt(W, U) % S) | |
131 | 131 | } | |
132 | 132 | ||
133 | 133 | ||
134 | 134 | func X (Y,Z,aa,s,T) = { | |
135 | 135 | let ab = R(2, s, T, aa) | |
136 | 136 | let ac = if ((ab == 0)) | |
137 | 137 | then Y | |
138 | 138 | else Z | |
139 | 139 | ac | |
140 | 140 | } | |
141 | 141 | ||
142 | 142 | ||
143 | 143 | func ad (s,ae,af,ag) = { | |
144 | 144 | let ah = R(100, s, ae, 11) | |
145 | 145 | let ai = if ((26 > ah)) | |
146 | 146 | then "A" | |
147 | 147 | else if ((48 > ah)) | |
148 | 148 | then "B" | |
149 | 149 | else if ((70 > ah)) | |
150 | 150 | then "C" | |
151 | 151 | else if ((90 > ah)) | |
152 | 152 | then "D" | |
153 | 153 | else "G" | |
154 | 154 | let aj = split(value(assetInfo(af)).name, "") | |
155 | 155 | let ak = split(value(assetInfo(ag)).name, "") | |
156 | 156 | let ac = (((((((((("MTNT-" + X((aj[0] + aj[5]), (ak[0] + ak[5]), 0, s, ae)) + X((aj[0] + aj[6]), (ak[0] + ak[6]), 1, s, ae)) + X((aj[0] + aj[7]), (ak[0] + ak[7]), 2, s, ae)) + X((aj[0] + aj[8]), (ak[0] + ak[8]), 3, s, ae)) + X((aj[0] + aj[9]), (ak[0] + ak[9]), 4, s, ae)) + X((aj[0] + aj[10]), (ak[0] + ak[10]), 5, s, ae)) + X((aj[0] + aj[11]), (ak[0] + ak[11]), 6, s, ae)) + X((aj[0] + aj[12]), (ak[0] + ak[12]), 7, s, ae)) + "-G") + ai) | |
157 | 157 | ac | |
158 | 158 | } | |
159 | 159 | ||
160 | 160 | ||
161 | 161 | func al (am,an) = if ((an == am._2)) | |
162 | 162 | then $Tuple2((am._1 + 1), am._2) | |
163 | 163 | else $Tuple2((am._1 + 0), am._2) | |
164 | 164 | ||
165 | 165 | ||
166 | 166 | func ao (ap) = if (contains(ap, "0")) | |
167 | 167 | then "" | |
168 | 168 | else ap | |
169 | 169 | ||
170 | 170 | ||
171 | 171 | func aq () = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] | |
172 | 172 | ||
173 | 173 | ||
174 | 174 | func ar (as) = { | |
175 | 175 | let ai = takeRight(as, 1) | |
176 | 176 | let at = split(dropRight(drop(as, 5), 3), "") | |
177 | 177 | let au = [at[1], at[3], at[5], at[7], at[9], at[11], at[13], at[15]] | |
178 | 178 | func av (am,aw) = { | |
179 | 179 | let ax = { | |
180 | 180 | let ay = au | |
181 | 181 | let az = size(ay) | |
182 | 182 | let aA = $Tuple2(0, aw) | |
183 | 183 | func aB (aC,aD) = if ((aD >= az)) | |
184 | 184 | then aC | |
185 | 185 | else al(aC, ay[aD]) | |
186 | 186 | ||
187 | 187 | func aE (aC,aD) = if ((aD >= az)) | |
188 | 188 | then aC | |
189 | 189 | else throw("List size exceeds 8") | |
190 | 190 | ||
191 | 191 | aE(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
192 | 192 | } | |
193 | 193 | (am + ao((toString(ax._1) + aw))) | |
194 | 194 | } | |
195 | 195 | ||
196 | 196 | (({ | |
197 | 197 | let ay = aq() | |
198 | 198 | let az = size(ay) | |
199 | 199 | let aA = "" | |
200 | 200 | func aB (aC,aD) = if ((aD >= az)) | |
201 | 201 | then aC | |
202 | 202 | else av(aC, ay[aD]) | |
203 | 203 | ||
204 | 204 | func aE (aC,aD) = if ((aD >= az)) | |
205 | 205 | then aC | |
206 | 206 | else throw("List size exceeds 26") | |
207 | 207 | ||
208 | 208 | aE(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26) | |
209 | 209 | } + "-") + ai) | |
210 | 210 | } | |
211 | 211 | ||
212 | 212 | ||
213 | 213 | func aF (ac) = { | |
214 | 214 | let at = split(dropRight(drop(ac, 5), 3), "") | |
215 | 215 | let aG = (at[0] + at[1]) | |
216 | 216 | let aH = (at[2] + at[3]) | |
217 | 217 | let aI = (at[4] + at[5]) | |
218 | 218 | let aJ = (at[6] + at[7]) | |
219 | 219 | let aK = (at[8] + at[9]) | |
220 | 220 | let aL = (at[10] + at[11]) | |
221 | 221 | let aM = (at[12] + at[13]) | |
222 | 222 | let aN = (at[14] + at[15]) | |
223 | 223 | let aO = [aG, aH, aI, aJ, aK, aL, aM, aN] | |
224 | 224 | func aP (am,aQ) = { | |
225 | 225 | let aR = split(aQ, "") | |
226 | 226 | if ((aR[0] == "T")) | |
227 | 227 | then $Tuple4((am._1 :+ aR[1]), am._2, am._3, am._4) | |
228 | 228 | else if ((aR[0] == "D")) | |
229 | 229 | then $Tuple4(am._1, (am._2 :+ aR[1]), am._3, am._4) | |
230 | 230 | else if ((aR[0] == "C")) | |
231 | 231 | then $Tuple4(am._1, am._2, (am._3 :+ aR[1]), am._4) | |
232 | 232 | else if ((aR[0] == "H")) | |
233 | 233 | then $Tuple4(am._1, am._2, am._3, (am._4 :+ aR[1])) | |
234 | 234 | else throw("UNKNOWN TYPE") | |
235 | 235 | } | |
236 | 236 | ||
237 | 237 | let aS = { | |
238 | 238 | let ay = aO | |
239 | 239 | let az = size(ay) | |
240 | 240 | let aA = $Tuple4(nil, nil, nil, nil) | |
241 | 241 | func aB (aC,aD) = if ((aD >= az)) | |
242 | 242 | then aC | |
243 | 243 | else aP(aC, ay[aD]) | |
244 | 244 | ||
245 | 245 | func aE (aC,aD) = if ((aD >= az)) | |
246 | 246 | then aC | |
247 | 247 | else throw("List size exceeds 8") | |
248 | 248 | ||
249 | 249 | aE(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
250 | 250 | } | |
251 | 251 | if ((aS == aS)) | |
252 | 252 | then { | |
253 | 253 | func aT (am,aw) = { | |
254 | 254 | let ax = { | |
255 | 255 | let ay = aS._1 | |
256 | 256 | let az = size(ay) | |
257 | 257 | let aA = $Tuple2(0, aw) | |
258 | 258 | func aU (aC,aD) = if ((aD >= az)) | |
259 | 259 | then aC | |
260 | 260 | else al(aC, ay[aD]) | |
261 | 261 | ||
262 | 262 | func aV (aC,aD) = if ((aD >= az)) | |
263 | 263 | then aC | |
264 | 264 | else throw("List size exceeds 8") | |
265 | 265 | ||
266 | 266 | aV(aU(aU(aU(aU(aU(aU(aU(aU(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
267 | 267 | } | |
268 | 268 | (am + ao((toString(ax._1) + aw))) | |
269 | 269 | } | |
270 | 270 | ||
271 | 271 | func aW (am,aw) = { | |
272 | 272 | let ax = { | |
273 | 273 | let ay = aS._2 | |
274 | 274 | let az = size(ay) | |
275 | 275 | let aA = $Tuple2(0, aw) | |
276 | 276 | func aU (aC,aD) = if ((aD >= az)) | |
277 | 277 | then aC | |
278 | 278 | else al(aC, ay[aD]) | |
279 | 279 | ||
280 | 280 | func aV (aC,aD) = if ((aD >= az)) | |
281 | 281 | then aC | |
282 | 282 | else throw("List size exceeds 8") | |
283 | 283 | ||
284 | 284 | aV(aU(aU(aU(aU(aU(aU(aU(aU(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
285 | 285 | } | |
286 | 286 | (am + ao((toString(ax._1) + aw))) | |
287 | 287 | } | |
288 | 288 | ||
289 | 289 | func aX (am,aw) = { | |
290 | 290 | let ax = { | |
291 | 291 | let ay = aS._3 | |
292 | 292 | let az = size(ay) | |
293 | 293 | let aA = $Tuple2(0, aw) | |
294 | 294 | func aU (aC,aD) = if ((aD >= az)) | |
295 | 295 | then aC | |
296 | 296 | else al(aC, ay[aD]) | |
297 | 297 | ||
298 | 298 | func aV (aC,aD) = if ((aD >= az)) | |
299 | 299 | then aC | |
300 | 300 | else throw("List size exceeds 8") | |
301 | 301 | ||
302 | 302 | aV(aU(aU(aU(aU(aU(aU(aU(aU(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
303 | 303 | } | |
304 | 304 | (am + ao((toString(ax._1) + aw))) | |
305 | 305 | } | |
306 | 306 | ||
307 | 307 | func aY (am,aw) = { | |
308 | 308 | let ax = { | |
309 | 309 | let ay = aS._4 | |
310 | 310 | let az = size(ay) | |
311 | 311 | let aA = $Tuple2(0, aw) | |
312 | 312 | func aU (aC,aD) = if ((aD >= az)) | |
313 | 313 | then aC | |
314 | 314 | else al(aC, ay[aD]) | |
315 | 315 | ||
316 | 316 | func aV (aC,aD) = if ((aD >= az)) | |
317 | 317 | then aC | |
318 | 318 | else throw("List size exceeds 8") | |
319 | 319 | ||
320 | 320 | aV(aU(aU(aU(aU(aU(aU(aU(aU(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
321 | 321 | } | |
322 | 322 | (am + ao((toString(ax._1) + aw))) | |
323 | 323 | } | |
324 | 324 | ||
325 | 325 | let aZ = { | |
326 | 326 | let ay = aq() | |
327 | 327 | let az = size(ay) | |
328 | 328 | let aA = "" | |
329 | 329 | func aU (aC,aD) = if ((aD >= az)) | |
330 | 330 | then aC | |
331 | 331 | else aT(aC, ay[aD]) | |
332 | 332 | ||
333 | 333 | func aV (aC,aD) = if ((aD >= az)) | |
334 | 334 | then aC | |
335 | 335 | else throw("List size exceeds 26") | |
336 | 336 | ||
337 | 337 | aV(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26) | |
338 | 338 | } | |
339 | 339 | let ba = { | |
340 | 340 | let ay = aq() | |
341 | 341 | let az = size(ay) | |
342 | 342 | let aA = "" | |
343 | 343 | func bb (aC,aD) = if ((aD >= az)) | |
344 | 344 | then aC | |
345 | 345 | else aW(aC, ay[aD]) | |
346 | 346 | ||
347 | 347 | func bc (aC,aD) = if ((aD >= az)) | |
348 | 348 | then aC | |
349 | 349 | else throw("List size exceeds 26") | |
350 | 350 | ||
351 | 351 | bc(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(bb(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26) | |
352 | 352 | } | |
353 | 353 | let bd = { | |
354 | 354 | let ay = aq() | |
355 | 355 | let az = size(ay) | |
356 | 356 | let aA = "" | |
357 | 357 | func be (aC,aD) = if ((aD >= az)) | |
358 | 358 | then aC | |
359 | 359 | else aX(aC, ay[aD]) | |
360 | 360 | ||
361 | 361 | func bf (aC,aD) = if ((aD >= az)) | |
362 | 362 | then aC | |
363 | 363 | else throw("List size exceeds 26") | |
364 | 364 | ||
365 | 365 | bf(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(be(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26) | |
366 | 366 | } | |
367 | 367 | let bg = { | |
368 | 368 | let ay = aq() | |
369 | 369 | let az = size(ay) | |
370 | 370 | let aA = "" | |
371 | 371 | func bh (aC,aD) = if ((aD >= az)) | |
372 | 372 | then aC | |
373 | 373 | else aY(aC, ay[aD]) | |
374 | 374 | ||
375 | 375 | func bi (aC,aD) = if ((aD >= az)) | |
376 | 376 | then aC | |
377 | 377 | else throw("List size exceeds 26") | |
378 | 378 | ||
379 | 379 | bi(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(bh(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26) | |
380 | 380 | } | |
381 | 381 | let bj = if ((aZ == "")) | |
382 | 382 | then "" | |
383 | 383 | else (("T:" + aZ) + "_") | |
384 | 384 | let bk = if ((ba == "")) | |
385 | 385 | then "" | |
386 | 386 | else (("D:" + ba) + "_") | |
387 | 387 | let bl = if ((bd == "")) | |
388 | 388 | then "" | |
389 | 389 | else (("C:" + bd) + "_") | |
390 | 390 | let bm = if ((bg == "")) | |
391 | 391 | then "" | |
392 | 392 | else (("H:" + bg) + "_") | |
393 | 393 | $Tuple2([StringEntry("DEBUG_TURTLE", aZ), StringEntry("DEBUG_DUCK", ba), StringEntry("DEBUG_CAT", bd), StringEntry("DEBUG_HOND", bg)], (((bj + bk) + bl) + bg)) | |
394 | 394 | } | |
395 | 395 | else throw("Strict value is not equal to itself.") | |
396 | 396 | } | |
397 | 397 | ||
398 | 398 | ||
399 | 399 | func bn (bo) = if ((3 > size(split(bo, ":")))) | |
400 | 400 | then true | |
401 | 401 | else false | |
402 | 402 | ||
403 | 403 | ||
404 | 404 | func bp (s,bq) = { | |
405 | 405 | let br = u(bq, s) | |
406 | 406 | let bs = w(bq, s) | |
407 | 407 | let bt = x(bq, s) | |
408 | 408 | let bu = getStringValue(this, br) | |
409 | 409 | let bv = getIntegerValue(this, bs) | |
410 | 410 | if ((bu == e())) | |
411 | 411 | then { | |
412 | 412 | let bw = getStringValue(this, x(bq, s)) | |
413 | 413 | throw(("The MUTANT was breeded and claimed already, here is the folowing: " + bw)) | |
414 | 414 | } | |
415 | 415 | else if ((bv > height)) | |
416 | 416 | then throw((((("Breeding is not finished yet " + toString((bv - height))) + " blocks remaining, it will take around ") + toString((bv - height))) + " minutes")) | |
417 | 417 | else { | |
418 | 418 | let af = C(r(fromBase58String(s), 1)) | |
419 | 419 | let ag = C(r(fromBase58String(s), 2)) | |
420 | 420 | let bx = fromBase58String(af) | |
421 | 421 | let by = fromBase58String(ag) | |
422 | 422 | let ac = ad(fromBase58String(s), bv, bx, by) | |
423 | 423 | let bz = aF(ac) | |
424 | 424 | let bA = ar(ac) | |
425 | 425 | let bB = (D(n(ac)) + 1) | |
426 | 426 | let ap = (D(m()) + 1) | |
427 | 427 | let bC = Issue(("MTNT-" + toString(ap)), ac, 1, 0, false, unit, bv) | |
428 | 428 | let q = calculateAssetId(bC) | |
429 | 429 | let bD = D((("stats_" + bz._2) + "_quantity")) | |
430 | 430 | let bo = D((("stats_" + bA) + "_rarity")) | |
431 | 431 | let bE = addressFromStringValue(bq) | |
432 | 432 | let bF = bn(bz._2) | |
433 | 433 | let bG = if (bF) | |
434 | 434 | then Burn(q, 1) | |
435 | 435 | else ScriptTransfer(bE, 1, q) | |
436 | 436 | let bH = if ((R(10, fromBase58String(s), bv, 2) == 5)) | |
437 | 437 | then Burn(bx, 1) | |
438 | 438 | else ScriptTransfer(bE, 1, bx) | |
439 | 439 | let bI = if ((R(10, fromBase58String(s), bv, 3) == 5)) | |
440 | 440 | then Burn(by, 1) | |
441 | 441 | else ScriptTransfer(bE, 1, by) | |
442 | 442 | [StringEntry(br, e()), StringEntry(bt, toBase58String(q)), StringEntry(toBase58String(q), bt), IntegerEntry(n(ac), bB), IntegerEntry(m(), ap), IntegerEntry((("stats_" + bz._2) + "_quantity"), (bD + 1)), IntegerEntry((("stats_" + bA) + "_rarity"), (bo + 1)), IntegerEntry((("asset_" + af) + "_children"), 1), IntegerEntry((("asset_" + ag) + "_children"), 1), bC, bG, bH, bI] | |
443 | 443 | } | |
444 | 444 | } | |
445 | 445 | ||
446 | 446 | ||
447 | 447 | func bJ (bK) = if (isDefined(bK.assetId)) | |
448 | 448 | then throw("BCAP: Please attach waves") | |
449 | 449 | else { | |
450 | 450 | let bL = getIntegerValue(G(), k()) | |
451 | 451 | if ((bK.amount != bL)) | |
452 | 452 | then throw((("BCAP: Please attach exactly " + toString(bL)) + " amount of wavelets")) | |
453 | 453 | else [ScriptTransfer(L(), bL, unit)] | |
454 | 454 | } | |
455 | 455 | ||
456 | 456 | ||
457 | 457 | func bM (bN) = { | |
458 | 458 | let bO = split(bN.name, "") | |
459 | 459 | let bP = bO[0] | |
460 | 460 | let ac = bO[14] | |
461 | 461 | if ((ac != "O")) | |
462 | 462 | then throw("MCTAVO: Only obstinates can be turned into mutants") | |
463 | 463 | else { | |
464 | 464 | let bQ = if ((bP == "T")) | |
465 | 465 | then H() | |
466 | 466 | else if ((bP == "D")) | |
467 | 467 | then I() | |
468 | 468 | else throw("MCTAVO: Invalid type") | |
469 | 469 | if ((bQ != bN.issuer)) | |
470 | 470 | then throw("MCTAVO: Only obstinates from the breeder contract can be turned into mutants") | |
471 | 471 | else if ((y(bQ, toBase58String(bN.id)) == "")) | |
472 | 472 | then throw("MCTAVO: Invalid nft") | |
473 | 473 | else if ((D(p(toBase58String(bN.id))) == 1)) | |
474 | 474 | then throw("MCTAVO: NFT already used") | |
475 | 475 | else bP | |
476 | 476 | } | |
477 | 477 | } | |
478 | 478 | ||
479 | 479 | ||
480 | 480 | @Callable(bR) | |
481 | 481 | func configureOracle (bS) = if ((bR.caller != this)) | |
482 | 482 | then throw("ICU: admin only") | |
483 | 483 | else [StringEntry("static_oracleAddress", bS)] | |
484 | 484 | ||
485 | 485 | ||
486 | 486 | ||
487 | 487 | @Callable(bR) | |
488 | 488 | func startMutantHatching (bT) = if ((size(bR.payments) != 5)) | |
489 | 489 | then throw("MSMH: 5 payments required") | |
490 | 490 | else if ((bR.payments[0].amount != 1)) | |
491 | 491 | then throw("MSMH: 1st payment must be an NFT") | |
492 | 492 | else if ((bR.payments[1].amount != 1)) | |
493 | 493 | then throw("MSMH: 2nd payment must be an NFT") | |
494 | 494 | else { | |
495 | 495 | let bU = bJ(bR.payments[2]) | |
496 | 496 | if ((bU == bU)) | |
497 | 497 | then if (if ((bR.payments[3].assetId != K())) | |
498 | 498 | then true | |
499 | 499 | else (bR.payments[3].amount != N(a()))) | |
500 | 500 | then throw("MSMH: 4th payment must be in spice") | |
501 | 501 | else if (if ((bR.payments[4].assetId != J())) | |
502 | 502 | then true | |
503 | 503 | else (bR.payments[4].amount != N(b()))) | |
504 | 504 | then throw("MSMH: 5th payment must be in egg") | |
505 | 505 | else { | |
506 | 506 | let bV = value(assetInfo(value(bR.payments[0].assetId))) | |
507 | 507 | let bW = value(assetInfo(value(bR.payments[1].assetId))) | |
508 | 508 | let bX = bM(bV) | |
509 | 509 | let bY = bM(bW) | |
510 | 510 | if ((bX == bY)) | |
511 | 511 | then throw("MSMH: NFTs can not be of the same type") | |
512 | 512 | else ([StringEntry(r(bR.transactionId, 1), toBase58String(bV.id)), StringEntry(r(bR.transactionId, 2), toBase58String(bW.id)), StringEntry(u(toString(bR.caller), toBase58String(bR.transactionId)), d()), IntegerEntry(w(toString(bR.caller), toBase58String(bR.transactionId)), (height + c()))] ++ bU) | |
513 | 513 | } | |
514 | 514 | else throw("Strict value is not equal to itself.") | |
515 | 515 | } | |
516 | 516 | ||
517 | 517 | ||
518 | 518 | ||
519 | 519 | @Callable(bR) | |
520 | 520 | func finishMutantHatching (bZ) = { | |
521 | 521 | let bq = toString(bR.originCaller) | |
522 | 522 | if ((size(bR.payments) != 1)) | |
523 | 523 | then throw("MFMH: Wrong amount of payments!") | |
524 | 524 | else { | |
525 | 525 | let ca = bJ(bR.payments[0]) | |
526 | 526 | if ((ca == ca)) | |
527 | 527 | then (bp(bZ, bq) ++ ca) | |
528 | 528 | else throw("Strict value is not equal to itself.") | |
529 | 529 | } | |
530 | 530 | } | |
531 | 531 | ||
532 | 532 | ||
533 | 533 | ||
534 | 534 | @Callable(bR) | |
535 | 535 | func getRarity (at) = { | |
536 | 536 | let bA = ar(at) | |
537 | 537 | let bD = valueOrErrorMessage(D((("stats_" + bA) + "_rarity")), (("stats_" + bA) + "_rarity")) | |
538 | 538 | let cb = pow((10000 / bD), 4, 5, 1, 2, FLOOR) | |
539 | 539 | let bo = if ((cb > 0)) | |
540 | 540 | then cb | |
541 | 541 | else 2 | |
542 | 542 | $Tuple2(nil, $Tuple2(bA, bo)) | |
543 | 543 | } | |
544 | 544 | ||
545 | 545 | ||
546 | 546 | ||
547 | 547 | @Callable(bR) | |
548 | 548 | func reduceRarity (q,cc) = throw("MRR: Not implemented") | |
549 | 549 | ||
550 | 550 | ||
551 | 551 | @Verifier(cd) | |
552 | 552 | func ce () = if (Q()) | |
553 | 553 | then sigVerify(cd.bodyBytes, cd.proofs[0], cd.senderPublicKey) | |
554 | 554 | else { | |
555 | 555 | let cf = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4' | |
556 | 556 | let cg = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU' | |
557 | 557 | let ch = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe' | |
558 | 558 | let ci = if (sigVerify(cd.bodyBytes, cd.proofs[0], cf)) | |
559 | 559 | then 1 | |
560 | 560 | else if (sigVerify(cd.bodyBytes, cd.proofs[1], cf)) | |
561 | 561 | then 1 | |
562 | 562 | else if (sigVerify(cd.bodyBytes, cd.proofs[2], cf)) | |
563 | 563 | then 1 | |
564 | 564 | else 0 | |
565 | 565 | let cj = if (sigVerify(cd.bodyBytes, cd.proofs[0], cg)) | |
566 | 566 | then 1 | |
567 | 567 | else if (sigVerify(cd.bodyBytes, cd.proofs[1], cg)) | |
568 | 568 | then 1 | |
569 | 569 | else if (sigVerify(cd.bodyBytes, cd.proofs[2], cg)) | |
570 | 570 | then 1 | |
571 | 571 | else 0 | |
572 | 572 | let ck = if (sigVerify(cd.bodyBytes, cd.proofs[0], ch)) | |
573 | 573 | then 1 | |
574 | 574 | else if (sigVerify(cd.bodyBytes, cd.proofs[1], ch)) | |
575 | 575 | then 1 | |
576 | 576 | else if (sigVerify(cd.bodyBytes, cd.proofs[2], ch)) | |
577 | 577 | then 1 | |
578 | 578 | else 0 | |
579 | 579 | let cl = ((ci + cj) + ck) | |
580 | 580 | let A = cd | |
581 | 581 | (cl >= 2) | |
582 | 582 | } | |
583 | 583 |
github/deemru/w8io/169f3d6 61.45 ms ◑