tx · AKGttLNzSenSUFncf6Fvw7QtGpfed3SZdZLNMWcCH6B3

3N2PjXqef29HexCE7PeGZa9eRjS2jVeaFe4:  -0.01700000 Waves

2023.09.15 11:17 [2756265] smart account 3N2PjXqef29HexCE7PeGZa9eRjS2jVeaFe4 > SELF 0.00000000 Waves

{ "type": 13, "id": "AKGttLNzSenSUFncf6Fvw7QtGpfed3SZdZLNMWcCH6B3", "fee": 1700000, "feeAssetId": null, "timestamp": 1694765822273, "version": 2, "chainId": 84, "sender": "3N2PjXqef29HexCE7PeGZa9eRjS2jVeaFe4", "senderPublicKey": "DU1U4j8FqHUMRr9WgfF3yo67ULEFkjp7dtMWMpjBK1ar", "proofs": [ "3YpZWbmrhfLXRhbmQBHL1pbAwQisyVTBzXRn8TNMNFo724JTkb7ZRf5wimoeWu2wz23gNoRv1F1B9AwFirBCtkyg", "5EzjU9oa4Du2WxUTZqYNGbrAzaUKhW4mC7gzZgkCHu2BErNY8Heg8xidSYywZVVMe1hYAAEg8qjNmN5umhnkBjZ7" ], "script": "base64:BgI0CAISABIDCgEIEgMKAQgSBwoFCAgICAESABIDCgEBEgASABIDCgEIEgUKAwgICBIAEgASACMABlNDQUxFOACAwtcvAA1QRVJDRU5UX1NDQUxFAJBOAAlTRVBBUkFUT1ICAl9fAAlrSW50ZXJlc3QCCGludGVyZXN0AA1rVXNlckludGVyZXN0Ag1fdXNlckludGVyZXN0AA5rVXNlckF2YWlsYWJsZQITX3VzZXJBdmFpbGFibGVDbGFpbQAQa1VzZXJUb2tlblN0YWtlZAIQX3VzZXJUb2tlblN0YWtlZAARa1RvdGFsVG9rZW5TdGFrZWQCEHRvdGFsVG9rZW5TdGFrZWQADGtORlRJbnRlcmVzdAILTkZUSW50ZXJlc3QAEGtORlRVc2VySW50ZXJlc3QCEF9ORlRVc2VySW50ZXJlc3QAFmtORlRVc2VyQXZhaWxhYmxlQ2xhaW0CFl9ORlRVc2VyQXZhaWxhYmxlQ2xhaW0AD2tORlRUb3RhbFN0YWtlZAIOTkZUVG90YWxTdGFrZWQADmt1c2VyTkZUU3Rha2VkAg5fdXNlck5GVFN0YWtlZAAQa3VzZXJORlRTdGFrZWRJZAIQX3VzZXJORlRTdGFrZWRJZAALa05GVENyZWF0ZWQCC19ORlRDcmVhdGVkAAxrTGFzdEFpcmRyb3ACDF9sYXN0QWlyZHJvcAAIa1Rva2VuaWQCB3Rva2VuSWQADmtQZXJzZW50Rm9yTkZUAg1wZXJjZW50Rm9yTkZUAA9rTkZUQ3JlYXRlZExpc3QCDm5mdENyZWF0ZWRMaXN0AAdrQWN0aXZlAgZhY3RpdmUACWtBZG1pbjFQSwILYWRtaW5fcHViXzEACWtBZG1pbjJQSwILYWRtaW5fcHViXzIACWtBZG1pbjNQSwILYWRtaW5fcHViXzMACGFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQlrQWRtaW4xUEsCEkNhbid0IGdldCBhZG1pbjFQSwAIYWRtaW4yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFCWtBZG1pbjJQSwISQ2FuJ3QgZ2V0IGFkbWluMlBLAAhhZG1pbjNQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa0FkbWluM1BLAhRDYW4ndCBnZXQgb3BlcmF0b3JQSwAHdG9rZW5JZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFCGtUb2tlbmlkAhdDYW4ndCBnZXQgc3Rha2luZyB0b2tlbgELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhZG1pbjFQSwkAzAgCBQhhZG1pbjJQSwkAzAgCBQhhZG1pbjNQSwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzU2VsZkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEIaXNBY3RpdmUAAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBDGFzc2V0SWRUb1N0cgEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAIFV0FWRVMJAAIBAgxOb3QgQXNzZXQgaWQBCWNsYWltQ2FsYwEEdXNlcgQQdG90YWxUb2tlblN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrVG90YWxUb2tlblN0YWtlZAAABAtjdXJJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrSW50ZXJlc3QAAAQRYXZhaWxhYmxlRm9yQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBQ5rVXNlckF2YWlsYWJsZQAABAx1c2VySW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBQ1rVXNlckludGVyZXN0BQtjdXJJbnRlcmVzdAQPdXNlclRva2VuU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUQa1VzZXJUb2tlblN0YWtlZAAABAtjbGFpbUFtb3VudAkAawMFD3VzZXJUb2tlblN0YWtlZAkAZQIFC2N1ckludGVyZXN0BQx1c2VySW50ZXJlc3QFBlNDQUxFOAkAlgoEBQtjdXJJbnRlcmVzdAkAZAIFC2NsYWltQW1vdW50BRFhdmFpbGFibGVGb3JDbGFpbQUPdXNlclRva2VuU3Rha2VkBRB0b3RhbFRva2VuU3Rha2VkAQxjbGFpbUNhbGNOZnQBBHVzZXIEDnRvdGFsTmZ0U3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tORlRUb3RhbFN0YWtlZAAABAtjdXJJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrTkZUSW50ZXJlc3QAAAQRYXZhaWxhYmxlRm9yQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRZrTkZUVXNlckF2YWlsYWJsZUNsYWltAAAEDHVzZXJJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFEGtORlRVc2VySW50ZXJlc3QFC2N1ckludGVyZXN0BA11c2VyTmZ0U3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUOa3VzZXJORlRTdGFrZWQAAAQLY2xhaW1BbW91bnQJAGgCBQ11c2VyTmZ0U3Rha2VkCQBlAgULY3VySW50ZXJlc3QFDHVzZXJJbnRlcmVzdAkAlgoEBQtjdXJJbnRlcmVzdAkAZAIFC2NsYWltQW1vdW50BRFhdmFpbGFibGVGb3JDbGFpbQUNdXNlck5mdFN0YWtlZAUOdG90YWxOZnRTdGFrZWQBDGNhbGNUb2tlbkFwcgAEC2xhc3RBaXJkcm9wCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDGtMYXN0QWlyZHJvcAAABBB0b3RhbFRva2VuU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtUb3RhbFRva2VuU3Rha2VkAAAEDnRvdGFsTkZUU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tORlRUb3RhbFN0YWtlZAAABA1wZXJjZW50Rm9yTkZUCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ5rUGVyc2VudEZvck5GVAQMdG9rZW5BaXJkcm9wAwkAAAIFDnRvdGFsTkZUU3Rha2VkAAAFC2xhc3RBaXJkcm9wCQBrAwULbGFzdEFpcmRyb3AJAJcDAQkAzAgCBQ1wZXJjZW50Rm9yTkZUCQDMCAIJAGgCBQ50b3RhbE5GVFN0YWtlZAAKBQNuaWwAZAkAaAIJAGsDBQx0b2tlbkFpcmRyb3AFDVBFUkNFTlRfU0NBTEUFEHRvdGFsVG9rZW5TdGFrZWQANAEQZ2V0VXNlclN0YWtlZE5GVAEEdXNlcgoBBmZvck5mdAIEdU5GVAVuZnRJZAMJAQlpc0RlZmluZWQBCQCbCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBW5mdElkBRBrdXNlck5GVFN0YWtlZElkCQDNCAIFBHVORlQFBW5mdElkBQR1TkZUBAduZnRzU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFD2tORlRDcmVhdGVkTGlzdAIABAduZnRMaXN0AwkAAAIFB25mdHNTdHICAAUDbmlsCQC1CQIFB25mdHNTdHIFCVNFUEFSQVRPUgQIdXNlck5mdHMKAAIkbAUHbmZ0TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZm9yTmZ0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQkAuQkCBQh1c2VyTmZ0cwIBLA0BaQEQZ2V0U3RhdHNSRUFET05MWQAEA2FwcgkBDGNhbGNUb2tlbkFwcgAEEHRvdGFsVG9rZW5TdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa1RvdGFsVG9rZW5TdGFrZWQAAAQOdG90YWxOZnRTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa05GVFRvdGFsU3Rha2VkAAAJAJQKAgUDbmlsCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUDYXByCQDMCAIJAKQDAQUQdG90YWxUb2tlblN0YWtlZAkAzAgCCQCkAwEFDnRvdGFsTmZ0U3Rha2VkBQNuaWwFCVNFUEFSQVRPUgFpARZnZXRTdGF0c0J5VXNlclJFQURPTkxZAQR1c2VyBAh1c2VyQWRkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBHVzZXICEldyb25nIHVzZXIgYWRkcmVzcwQLJHQwNDQ5NDQ1OTAJAQljbGFpbUNhbGMBBQR1c2VyBA91c2VyTmV3SW50ZXJlc3QIBQskdDA0NDk0NDU5MAJfMQQUY2xhaW1BbW91bnRBdmFpbGFibGUIBQskdDA0NDk0NDU5MAJfMgQPdXNlclRva2VuU3Rha2VkCAULJHQwNDQ5NDQ1OTACXzMEEHRvdGFsVG9rZW5TdGFrZWQIBQskdDA0NDk0NDU5MAJfNAQLJHQwNDU5MzQ2OTQJAQxjbGFpbUNhbGNOZnQBBQR1c2VyBBJ1c2VyTmV3SW50ZXJlc3RORlQIBQskdDA0NTkzNDY5NAJfMQQXY2xhaW1BbW91bnRBdmFpbGFibGVORlQIBQskdDA0NTkzNDY5NAJfMgQNdXNlck5GVFN0YWtlZAgFCyR0MDQ1OTM0Njk0Al8zBA50b3RhbE5GVFN0YWtlZAgFCyR0MDQ1OTM0Njk0Al80BBB1c2VyVG9rZW5CYWxhbmNlCQDwBwIFCHVzZXJBZGRyCQDZBAEFB3Rva2VuSWQECHVzZXJOZnRzCQEQZ2V0VXNlclN0YWtlZE5GVAEFBHVzZXIJAJQKAgUDbmlsCQC5CQIJAMwIAgIKJWQlZCVkJWQlcwkAzAgCCQCkAwEFEHVzZXJUb2tlbkJhbGFuY2UJAMwIAgkApAMBBQ91c2VyVG9rZW5TdGFrZWQJAMwIAgkApAMBBRRjbGFpbUFtb3VudEF2YWlsYWJsZQkAzAgCCQCkAwEFF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUCQDMCAIFCHVzZXJOZnRzBQNuaWwFCVNFUEFSQVRPUgFpARRnZXRVc2VyU3RhdHNSRUFET05MWQEEdXNlcgQDYXByCQEMY2FsY1Rva2VuQXByAAQLJHQwNTEzOTU3MzgDCQAAAgUEdXNlcgIACQCWCgQAAAAAAAAAAAQIdXNlckFkZHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQR1c2VyAhJXcm9uZyB1c2VyIGFkZHJlc3MECyR0MDUzNzY1NDcyCQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAULJHQwNTM3NjU0NzICXzEEFGNsYWltQW1vdW50QXZhaWxhYmxlCAULJHQwNTM3NjU0NzICXzIED3VzZXJUb2tlblN0YWtlZAgFCyR0MDUzNzY1NDcyAl8zBBB0b3RhbFRva2VuU3Rha2VkCAULJHQwNTM3NjU0NzICXzQECyR0MDU0Nzk1NTgwCQEMY2xhaW1DYWxjTmZ0AQUEdXNlcgQSdXNlck5ld0ludGVyZXN0TkZUCAULJHQwNTQ3OTU1ODACXzEEF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUCAULJHQwNTQ3OTU1ODACXzIEDXVzZXJORlRTdGFrZWQIBQskdDA1NDc5NTU4MAJfMwQOdG90YWxORlRTdGFrZWQIBQskdDA1NDc5NTU4MAJfNAQLdXNlckJhbGFuY2UJAPAHAgUIdXNlckFkZHIJANkEAQUHdG9rZW5JZAkAlgoEBQt1c2VyQmFsYW5jZQUPdXNlclRva2VuU3Rha2VkBRRjbGFpbUFtb3VudEF2YWlsYWJsZQUXY2xhaW1BbW91bnRBdmFpbGFibGVORlQEEHVzZXJUb2tlbkJhbGFuY2UIBQskdDA1MTM5NTczOAJfMQQPdXNlclRva2VuU3Rha2VkCAULJHQwNTEzOTU3MzgCXzIEFGNsYWltQW1vdW50QXZhaWxhYmxlCAULJHQwNTEzOTU3MzgCXzMEF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUCAULJHQwNTEzOTU3MzgCXzQJAJQKAgUDbmlsCQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCCQCkAwEFA2FwcgkAzAgCCQCkAwEFEHVzZXJUb2tlbkJhbGFuY2UJAMwIAgkApAMBBQ91c2VyVG9rZW5TdGFrZWQJAMwIAgkApAMBBRRjbGFpbUFtb3VudEF2YWlsYWJsZQkAzAgCCQCkAwEFF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUBQNuaWwFCVNFUEFSQVRPUgFpAQRpbml0BQd0b2tlbklkB2FkbTFQdWIHYWRtMlB1YgdhZG0zUHViDHRvTkZUUGVyY2VudAkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUIa1Rva2VuaWQJAAIBAhNEQXBwIGFscmVhZHkgaW5pdGVkAwkBASEBCQEJaXNEZWZpbmVkAQkA7AcBCQDZBAEFB3Rva2VuSWQJAAIBAiBhc3NldCBpZCBpcyBub3QgY29ycmVjdCBhc3NldCBpZAMJAQIhPQIJAMgBAQkA2QQBBQdhZG0xUHViACAJAAIBAiFncm91cDFBZG1pbjFQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUHYWRtMlB1YgAgCQACAQIhZ3JvdXAxQWRtaW4xUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFB2FkbTNQdWIAIAkAAgECIWdyb3VwMUFkbWluMVB1YktleSBpcyBub3QgY29ycmVjdAkAzAgCCQELU3RyaW5nRW50cnkCBQhrVG9rZW5pZAUHdG9rZW5JZAkAzAgCCQELU3RyaW5nRW50cnkCBQlrQWRtaW4xUEsFB2FkbTFQdWIJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0FkbWluMlBLBQdhZG0yUHViCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBZG1pbjNQSwUHYWRtM1B1YgkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa1BlcnNlbnRGb3JORlQFDHRvTkZUUGVyY2VudAUDbmlsAWkBBXN0YWtlAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFE9uZSBwYXltZW50IGV4cGVjdGVkBAskdDA2OTQxNzAxNgkAlAoCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAlwbXRBbW91bnQIBQskdDA2OTQxNzAxNgJfMQQKcG10QXNzZXRJZAgFCyR0MDY5NDE3MDE2Al8yAwkBAiE9AgUKcG10QXNzZXRJZAkA2QQBBQd0b2tlbklkCQACAQITV3JvbmcgcGF5bWVudCBhc3NldAQEdXNlcgkApQgBCAUBaQZjYWxsZXIECyR0MDcxMzc3MjMzCQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAULJHQwNzEzNzcyMzMCXzEEFGNsYWltQW1vdW50QXZhaWxhYmxlCAULJHQwNzEzNzcyMzMCXzIED3VzZXJUb2tlblN0YWtlZAgFCyR0MDcxMzc3MjMzAl8zBBB0b3RhbFRva2VuU3Rha2VkCAULJHQwNzEzNzcyMzMCXzQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUNa1VzZXJJbnRlcmVzdAUPdXNlck5ld0ludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFDmtVc2VyQXZhaWxhYmxlBRRjbGFpbUFtb3VudEF2YWlsYWJsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlclRva2VuU3Rha2VkCQBkAgUPdXNlclRva2VuU3Rha2VkBQlwbXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtUb3RhbFRva2VuU3Rha2VkCQBkAgUQdG90YWxUb2tlblN0YWtlZAUJcG10QW1vdW50BQNuaWwBaQEHdW5zdGFrZQEGYW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAR1c2VyCQClCAEIBQFpBmNhbGxlcgMJAGcCAAAFBmFtb3VudAkAAgECHUFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwBAskdDA3NjcxNzc2NwkBCWNsYWltQ2FsYwEFBHVzZXIED3VzZXJOZXdJbnRlcmVzdAgFCyR0MDc2NzE3NzY3Al8xBBRjbGFpbUFtb3VudEF2YWlsYWJsZQgFCyR0MDc2NzE3NzY3Al8yBA91c2VyVG9rZW5TdGFrZWQIBQskdDA3NjcxNzc2NwJfMwQQdG90YWxUb2tlblN0YWtlZAgFCyR0MDc2NzE3NzY3Al80AwkAZgIFBmFtb3VudAUPdXNlclRva2VuU3Rha2VkCQACAQIiWW91IGNhbid0IHVuc3Rha2UgbW9yZSB0aGFuIHN0YWtlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBQ1rVXNlckludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUOa1VzZXJBdmFpbGFibGUFFGNsYWltQW1vdW50QXZhaWxhYmxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyVG9rZW5TdGFrZWQJAGUCBQ91c2VyVG9rZW5TdGFrZWQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1RvdGFsVG9rZW5TdGFrZWQJAGUCBRB0b3RhbFRva2VuU3Rha2VkBQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQJANkEAQUHdG9rZW5JZAUDbmlsAWkBBWNsYWltAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQEdXNlcgkApQgBCAUBaQZjYWxsZXIECyR0MDgyNzM4MzY5CQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAULJHQwODI3MzgzNjkCXzEEFGNsYWltQW1vdW50QXZhaWxhYmxlCAULJHQwODI3MzgzNjkCXzIED3VzZXJUb2tlblN0YWtlZAgFCyR0MDgyNzM4MzY5Al8zBBB0b3RhbFRva2VuU3Rha2VkCAULJHQwODI3MzgzNjkCXzQECyR0MDgzNzI4NDczCQEMY2xhaW1DYWxjTmZ0AQUEdXNlcgQSdXNlck5ld0ludGVyZXN0TkZUCAULJHQwODM3Mjg0NzMCXzEEF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUCAULJHQwODM3Mjg0NzMCXzIEDXVzZXJORlRTdGFrZWQIBQskdDA4MzcyODQ3MwJfMwQOdG90YWxORlRTdGFrZWQIBQskdDA4MzcyODQ3MwJfNAMJAAACCQBkAgUUY2xhaW1BbW91bnRBdmFpbGFibGUFF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUAAAJAAIBAhBOb3RoaW5nIHRvIGNsYWltCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFDWtVc2VySW50ZXJlc3QFD3VzZXJOZXdJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBQ5rVXNlckF2YWlsYWJsZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtORlRVc2VySW50ZXJlc3QFEnVzZXJOZXdJbnRlcmVzdE5GVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRZrTkZUVXNlckF2YWlsYWJsZUNsYWltAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBkAgUUY2xhaW1BbW91bnRBdmFpbGFibGUFF2NsYWltQW1vdW50QXZhaWxhYmxlTkZUCQDZBAEFB3Rva2VuSWQFA25pbAFpAQhzdGFrZU5GVAAJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhRPbmUgcGF5bWVudCBleHBlY3RlZAQLJHQwOTAyOTkxMDQJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAULJHQwOTAyOTkxMDQCXzEECnBtdEFzc2V0SWQIBQskdDA5MDI5OTEwNAJfMgQNcG10QXNzZXRJZFN0cgkBDGFzc2V0SWRUb1N0cgEFCnBtdEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUNcG10QXNzZXRJZFN0cgULa05GVENyZWF0ZWQJAAIBAg9Xcm9uZyBuZnQgYXNzZXQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAskdDA5Mjg1OTM4MAkBDGNsYWltQ2FsY05mdAEFBHVzZXIED3VzZXJOZXdJbnRlcmVzdAgFCyR0MDkyODU5MzgwAl8xBBRjbGFpbUFtb3VudEF2YWlsYWJsZQgFCyR0MDkyODU5MzgwAl8yBA11c2VyTkZUU3Rha2VkCAULJHQwOTI4NTkzODACXzMEDnRvdGFsTkZUU3Rha2VkCAULJHQwOTI4NTkzODACXzQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUQa05GVFVzZXJJbnRlcmVzdAUPdXNlck5ld0ludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFFmtORlRVc2VyQXZhaWxhYmxlQ2xhaW0FFGNsYWltQW1vdW50QXZhaWxhYmxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFDmt1c2VyTkZUU3Rha2VkCQBkAgUNdXNlck5GVFN0YWtlZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rTkZUVG90YWxTdGFrZWQJAGQCBQ50b3RhbE5GVFN0YWtlZAABCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQ1wbXRBc3NldElkU3RyBRBrdXNlck5GVFN0YWtlZElkBgUDbmlsAWkBCnVuc3Rha2VORlQBAmlkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAR1c2VyCQClCAEIBQFpBmNhbGxlcgMJAQlpc0RlZmluZWQBCQCbCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FAmlkBRBrdXNlck5GVFN0YWtlZElkCQACAQIRWW91IGRpZG4ndCBzdGFrZWQEDCR0MDk5MTcxMDAxMgkBDGNsYWltQ2FsY05mdAEFBHVzZXIED3VzZXJOZXdJbnRlcmVzdAgFDCR0MDk5MTcxMDAxMgJfMQQUY2xhaW1BbW91bnRBdmFpbGFibGUIBQwkdDA5OTE3MTAwMTICXzIEDXVzZXJORlRTdGFrZWQIBQwkdDA5OTE3MTAwMTICXzMEDnRvdGFsTkZUU3Rha2VkCAUMJHQwOTkxNzEwMDEyAl80CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtORlRVc2VySW50ZXJlc3QFD3VzZXJOZXdJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRZrTkZUVXNlckF2YWlsYWJsZUNsYWltBRRjbGFpbUFtb3VudEF2YWlsYWJsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBQ5rdXNlck5GVFN0YWtlZAkAZQIFDXVzZXJORlRTdGFrZWQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa05GVFRvdGFsU3Rha2VkCQBlAgUOdG90YWxORlRTdGFrZWQAAQkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQJpZAUQa3VzZXJORlRTdGFrZWRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQJpZAUDbmlsAWkBCGlzc3VlTkZUAwh1c2VyQWRkcgRuYW1lBWRlc2NyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpBAV1QWRkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFCHVzZXJBZGRyAhJXcm9uZyB1c2VyIGFkZHJlc3MEBWlzc3VlCQDCCAUFBG5hbWUFBWRlc2NyAAEAAAcEBW5mdElkCQC4CAEFBWlzc3VlBAduZnRMaXN0CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFD2tORlRDcmVhdGVkTGlzdAIABApuZXdOZnRMaXN0CQCsAgIFB25mdExpc3QDCQECIT0CBQduZnRMaXN0AgAJAKwCAgUJU0VQQVJBVE9SCQDYBAEFBW5mdElkCQCsAgICAAkA2AQBBQVuZnRJZAkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUFbmZ0SWQFC2tORlRDcmVhdGVkBQh1c2VyQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQ9rTkZUQ3JlYXRlZExpc3QFCm5ld05mdExpc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFdUFkZHIAAQUFbmZ0SWQFA25pbAFpAQdhaXJkcm9wAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFE9uZSBwYXltZW50IGV4cGVjdGVkBA0kdDAxMTE4MjExMjU3CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFDSR0MDExMTgyMTEyNTcCXzEECnBtdEFzc2V0SWQIBQ0kdDAxMTE4MjExMjU3Al8yAwkBAiE9AgUKcG10QXNzZXRJZAkA2QQBBQd0b2tlbklkCQACAQITV3JvbmcgcGF5bWVudCBhc3NldAQNcGVyY2VudEZvck5GVAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUOa1BlcnNlbnRGb3JORlQEEHRvdGFsVG9rZW5TdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa1RvdGFsVG9rZW5TdGFrZWQAAAQOdG90YWxORlRTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa05GVFRvdGFsU3Rha2VkAAAEC2N1ckludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtJbnRlcmVzdAAABA5jdXJORlRJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrTkZUSW50ZXJlc3QAAAQNJHQwMTE2ODAxMTg4NAMJAAACBQ50b3RhbE5GVFN0YWtlZAAACQCUCgIAAAUJcG10QW1vdW50BARuZnRQCQBrAwUJcG10QW1vdW50CQCXAwEJAMwIAgUNcGVyY2VudEZvck5GVAkAzAgCCQBoAgUOdG90YWxORlRTdGFrZWQACgUDbmlsAGQJAJQKAgUEbmZ0UAkAZQIFCXBtdEFtb3VudAUEbmZ0UAQGcG10TkZUCAUNJHQwMTE2ODAxMTg4NAJfMQQIcG10VG9rZW4IBQ0kdDAxMTY4MDExODg0Al8yBAtpbnRlcmVzdE5ldwMJAGYCBRB0b3RhbFRva2VuU3Rha2VkAAAJAGQCBQtjdXJJbnRlcmVzdAkAawMFCHBtdFRva2VuBQZTQ0FMRTgFEHRvdGFsVG9rZW5TdGFrZWQFC2N1ckludGVyZXN0BA5pbnRlcmVzdE5GVE5ldwMJAGYCBQ50b3RhbE5GVFN0YWtlZAAACQBkAgUOY3VyTkZUSW50ZXJlc3QJAGkCBQZwbXRORlQFDnRvdGFsTkZUU3Rha2VkBQ5jdXJORlRJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0ludGVyZXN0BQtpbnRlcmVzdE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa05GVEludGVyZXN0BQ5pbnRlcmVzdE5GVE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa0xhc3RBaXJkcm9wBQlwbXRBbW91bnQFA25pbAFpAQhhY3RpdmF0ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQACAQITZEFwcCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYFA25pbAFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUHa0FjdGl2ZQYJAAIBAhVkQXBwIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHBQNuaWwBAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQhhZG1pbjFQSwABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCGFkbWluMlBLAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUIYWRtaW4zUEsAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAEBmlzU2VsZgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQQKaXNSaWdodEZlZQMJAAACCAUDaW52A2ZlZQCg9zYJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHBAppc0luaXRDYWxsCQAAAggFA2ludghmdW5jdGlvbgIEaW5pdAQMaXNub1BheW1lbnRzCQAAAgkAkAMBCAUDaW52CHBheW1lbnRzAAADAwMDBQppc1JpZ2h0RmVlBQppc0luaXRDYWxsBwUGaXNTZWxmBwUMaXNub1BheW1lbnRzBwYFE211bHRpU2lnbmVkQnlBZG1pbnMFE211bHRpU2lnbmVkQnlBZG1pbnOfdnTp", "height": 2756265, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4ipPRY1tfDjXYHf3RgACkpV6xWnLcAF4ihmfxhQifYmQ Next: 5dSyRTeK8fmHAMxrT2jEyWX8uJW41UvbJExcpAsUZGU4 Diff:
OldNewDifferences
120120 }
121121
122122
123+func aa (L) = {
124+ func ab (ac,ad) = if (isDefined(getBoolean(this, (((L + "_") + ad) + n))))
125+ then (ac :+ ad)
126+ else ac
127+
128+ let ae = valueOrElse(getString(this, s), "")
129+ let af = if ((ae == ""))
130+ then nil
131+ else split(ae, c)
132+ let ag = {
133+ let ah = af
134+ let ai = size(ah)
135+ let aj = nil
136+ func ak (al,am) = if ((am >= ai))
137+ then al
138+ else ab(al, ah[am])
139+
140+ func an (al,am) = if ((am >= ai))
141+ then al
142+ else throw("List size exceeds 5")
143+
144+ an(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5)
145+ }
146+ makeString(ag, ",")
147+ }
148+
149+
123150 @Callable(C)
124151 func getStatsREADONLY () = {
125- let aa = V()
152+ let ao = V()
126153 let M = valueOrElse(getInteger(this, h), 0)
127154 let T = valueOrElse(getInteger(this, l), 0)
128- $Tuple2(nil, makeString(["%d%d%d", toString(aa), toString(M), toString(T)], c))
155+ $Tuple2(nil, makeString(["%d%d%d", toString(ao), toString(M), toString(T)], c))
129156 }
130157
131158
132159
133160 @Callable(C)
134161 func getStatsByUserREADONLY (L) = {
135- let ab = if ((L == ""))
136- then $Tuple4(0, 0, 0, 0)
137- else {
138- let ac = valueOrErrorMessage(addressFromString(L), "Wrong user address")
139- let ad = K(L)
140- let ae = ad._1
141- let af = ad._2
142- let Q = ad._3
143- let M = ad._4
144- let ag = S(L)
145- let ah = ag._1
146- let ai = ag._2
147- let aj = ag._3
148- let X = ag._4
149- let ak = assetBalance(ac, fromBase58String(A))
150- $Tuple4(ak, Q, af, ai)
151- }
152- let al = ab._1
153- let Q = ab._2
154- let af = ab._3
155- let ai = ab._4
156- $Tuple2(nil, makeString(["%d%d%d%d", toString(al), toString(Q), toString(af), toString(ai)], c))
162+ let ap = valueOrErrorMessage(addressFromString(L), "Wrong user address")
163+ let aq = K(L)
164+ let ar = aq._1
165+ let as = aq._2
166+ let Q = aq._3
167+ let M = aq._4
168+ let at = S(L)
169+ let au = at._1
170+ let av = at._2
171+ let aw = at._3
172+ let X = at._4
173+ let ax = assetBalance(ap, fromBase58String(A))
174+ let ag = aa(L)
175+ $Tuple2(nil, makeString(["%d%d%d%d%s", toString(ax), toString(Q), toString(as), toString(av), ag], c))
157176 }
158177
159178
160179
161180 @Callable(C)
162181 func getUserStatsREADONLY (L) = {
163- let aa = V()
164- let am = if ((L == ""))
182+ let ao = V()
183+ let ay = if ((L == ""))
165184 then $Tuple4(0, 0, 0, 0)
166185 else {
167- let ac = valueOrErrorMessage(addressFromString(L), "Wrong user address")
168- let an = K(L)
169- let ae = an._1
170- let af = an._2
171- let Q = an._3
172- let M = an._4
173- let ao = S(L)
174- let ah = ao._1
175- let ai = ao._2
176- let aj = ao._3
177- let X = ao._4
178- let ak = assetBalance(ac, fromBase58String(A))
179- $Tuple4(ak, Q, af, ai)
186+ let ap = valueOrErrorMessage(addressFromString(L), "Wrong user address")
187+ let az = K(L)
188+ let ar = az._1
189+ let as = az._2
190+ let Q = az._3
191+ let M = az._4
192+ let aA = S(L)
193+ let au = aA._1
194+ let av = aA._2
195+ let aw = aA._3
196+ let X = aA._4
197+ let aB = assetBalance(ap, fromBase58String(A))
198+ $Tuple4(aB, Q, as, av)
180199 }
181- let al = am._1
182- let Q = am._2
183- let af = am._3
184- let ai = am._4
185- $Tuple2(nil, makeString(["%d%d%d%d%d", toString(aa), toString(al), toString(Q), toString(af), toString(ai)], c))
200+ let ax = ay._1
201+ let Q = ay._2
202+ let as = ay._3
203+ let av = ay._4
204+ $Tuple2(nil, makeString(["%d%d%d%d%d", toString(ao), toString(ax), toString(Q), toString(as), toString(av)], c))
186205 }
187206
188207
189208
190209 @Callable(C)
191-func init (A,ap,aq,ar,as) = valueOrElse(D(C), if (isDefined(getString(this, q)))
210+func init (A,aC,aD,aE,aF) = valueOrElse(D(C), if (isDefined(getString(this, q)))
192211 then throw("DApp already inited")
193212 else if (!(isDefined(assetInfo(fromBase58String(A)))))
194213 then throw("asset id is not correct asset id")
195- else if ((size(fromBase58String(ap)) != 32))
214+ else if ((size(fromBase58String(aC)) != 32))
196215 then throw("group1Admin1PubKey is not correct")
197- else if ((size(fromBase58String(aq)) != 32))
216+ else if ((size(fromBase58String(aD)) != 32))
198217 then throw("group1Admin1PubKey is not correct")
199- else if ((size(fromBase58String(ar)) != 32))
218+ else if ((size(fromBase58String(aE)) != 32))
200219 then throw("group1Admin1PubKey is not correct")
201- else [StringEntry(q, A), StringEntry(u, ap), StringEntry(v, aq), StringEntry(w, ar), IntegerEntry(r, as)])
220+ else [StringEntry(q, A), StringEntry(u, aC), StringEntry(v, aD), StringEntry(w, aE), IntegerEntry(r, aF)])
202221
203222
204223
206225 func stake () = valueOrElse(E(), if ((size(C.payments) != 1))
207226 then throw("One payment expected")
208227 else {
209- let at = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
210- let au = at._1
211- let av = at._2
212- if ((av != fromBase58String(A)))
228+ let aG = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
229+ let aH = aG._1
230+ let aI = aG._2
231+ if ((aI != fromBase58String(A)))
213232 then throw("Wrong payment asset")
214233 else {
215234 let L = toString(C.caller)
216- let aw = K(L)
217- let ae = aw._1
218- let af = aw._2
219- let Q = aw._3
220- let M = aw._4
221-[IntegerEntry((L + e), ae), IntegerEntry((L + f), af), IntegerEntry((L + g), (Q + au)), IntegerEntry(h, (M + au))]
235+ let aJ = K(L)
236+ let ar = aJ._1
237+ let as = aJ._2
238+ let Q = aJ._3
239+ let M = aJ._4
240+[IntegerEntry((L + e), ar), IntegerEntry((L + f), as), IntegerEntry((L + g), (Q + aH)), IntegerEntry(h, (M + aH))]
222241 }
223242 })
224243
225244
226245
227246 @Callable(C)
228-func unstake (ax) = valueOrElse(E(), {
247+func unstake (aK) = valueOrElse(E(), {
229248 let L = toString(C.caller)
230- if ((0 >= ax))
249+ if ((0 >= aK))
231250 then throw("Amount must be greater than 0")
232251 else {
233- let ay = K(L)
234- let ae = ay._1
235- let af = ay._2
236- let Q = ay._3
237- let M = ay._4
238- if ((ax > Q))
252+ let aL = K(L)
253+ let ar = aL._1
254+ let as = aL._2
255+ let Q = aL._3
256+ let M = aL._4
257+ if ((aK > Q))
239258 then throw("You can't unstake more than staked")
240- else [IntegerEntry((L + e), ae), IntegerEntry((L + f), af), IntegerEntry((L + g), (Q - ax)), IntegerEntry(h, (M - ax)), ScriptTransfer(C.caller, ax, fromBase58String(A))]
259+ else [IntegerEntry((L + e), ar), IntegerEntry((L + f), as), IntegerEntry((L + g), (Q - aK)), IntegerEntry(h, (M - aK)), ScriptTransfer(C.caller, aK, fromBase58String(A))]
241260 }
242261 })
243262
246265 @Callable(C)
247266 func claim () = valueOrElse(E(), {
248267 let L = toString(C.caller)
249- let az = K(L)
250- let ae = az._1
251- let af = az._2
252- let Q = az._3
253- let M = az._4
254- let aA = S(L)
255- let ah = aA._1
256- let ai = aA._2
257- let aj = aA._3
258- let X = aA._4
259- if (((af + ai) == 0))
268+ let aM = K(L)
269+ let ar = aM._1
270+ let as = aM._2
271+ let Q = aM._3
272+ let M = aM._4
273+ let aN = S(L)
274+ let au = aN._1
275+ let av = aN._2
276+ let aw = aN._3
277+ let X = aN._4
278+ if (((as + av) == 0))
260279 then throw("Nothing to claim")
261- else [IntegerEntry((L + e), ae), IntegerEntry((L + f), 0), IntegerEntry((L + j), ah), IntegerEntry((L + k), 0), ScriptTransfer(C.caller, (af + ai), fromBase58String(A))]
280+ else [IntegerEntry((L + e), ar), IntegerEntry((L + f), 0), IntegerEntry((L + j), au), IntegerEntry((L + k), 0), ScriptTransfer(C.caller, (as + av), fromBase58String(A))]
262281 })
263282
264283
267286 func stakeNFT () = valueOrElse(E(), if ((size(C.payments) != 1))
268287 then throw("One payment expected")
269288 else {
270- let aB = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
271- let au = aB._1
272- let av = aB._2
273- let aC = F(av)
274- if (!(isDefined(getString(this, (aC + o)))))
289+ let aO = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
290+ let aH = aO._1
291+ let aI = aO._2
292+ let aP = F(aI)
293+ if (!(isDefined(getString(this, (aP + o)))))
275294 then throw("Wrong nft asset")
276295 else {
277296 let L = toString(C.caller)
278- let aD = S(L)
279- let ae = aD._1
280- let af = aD._2
281- let aj = aD._3
282- let X = aD._4
283-[IntegerEntry((L + j), ae), IntegerEntry((L + k), af), IntegerEntry((L + m), (aj + 1)), IntegerEntry(l, (X + 1)), BooleanEntry((((L + "_") + aC) + n), true)]
297+ let aQ = S(L)
298+ let ar = aQ._1
299+ let as = aQ._2
300+ let aw = aQ._3
301+ let X = aQ._4
302+[IntegerEntry((L + j), ar), IntegerEntry((L + k), as), IntegerEntry((L + m), (aw + 1)), IntegerEntry(l, (X + 1)), BooleanEntry((((L + "_") + aP) + n), true)]
284303 }
285304 })
286305
292311 if (isDefined(getBoolean(this, (((L + "_") + I) + n))))
293312 then throw("You didn't staked")
294313 else {
295- let aE = S(L)
296- let ae = aE._1
297- let af = aE._2
298- let aj = aE._3
299- let X = aE._4
300-[IntegerEntry((L + j), ae), IntegerEntry((L + k), af), IntegerEntry((L + m), (aj - 1)), IntegerEntry(l, (X - 1)), DeleteEntry((((L + "_") + I) + n)), ScriptTransfer(C.caller, 1, fromBase58String(I))]
314+ let aR = S(L)
315+ let ar = aR._1
316+ let as = aR._2
317+ let aw = aR._3
318+ let X = aR._4
319+[IntegerEntry((L + j), ar), IntegerEntry((L + k), as), IntegerEntry((L + m), (aw - 1)), IntegerEntry(l, (X - 1)), DeleteEntry((((L + "_") + I) + n)), ScriptTransfer(C.caller, 1, fromBase58String(I))]
301320 }
302321 })
303322
304323
305324
306325 @Callable(C)
307-func issueNFT (ac,aF,aG) = valueOrElse(E(), valueOrElse(B(C), {
308- let aH = valueOrErrorMessage(addressFromString(ac), "Wrong user address")
309- let aI = Issue(aF, aG, 1, 0, false)
310- let aJ = calculateAssetId(aI)
311- let aK = valueOrElse(getString(this, s), "")
312- let aL = (aK + (if ((aK != ""))
313- then (c + toBase58String(aJ))
314- else ("" + toBase58String(aJ))))
315-[aI, StringEntry((toBase58String(aJ) + o), ac), StringEntry(s, aL), ScriptTransfer(aH, 1, aJ)]
326+func issueNFT (ap,aS,aT) = valueOrElse(E(), valueOrElse(B(C), {
327+ let aU = valueOrErrorMessage(addressFromString(ap), "Wrong user address")
328+ let aV = Issue(aS, aT, 1, 0, false)
329+ let ad = calculateAssetId(aV)
330+ let af = valueOrElse(getString(this, s), "")
331+ let aW = (af + (if ((af != ""))
332+ then (c + toBase58String(ad))
333+ else ("" + toBase58String(ad))))
334+[aV, StringEntry((toBase58String(ad) + o), ap), StringEntry(s, aW), ScriptTransfer(aU, 1, ad)]
316335 }))
317336
318337
321340 func airdrop () = valueOrElse(E(), valueOrElse(B(C), if ((size(C.payments) != 1))
322341 then throw("One payment expected")
323342 else {
324- let aM = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
325- let au = aM._1
326- let av = aM._2
327- if ((av != fromBase58String(A)))
343+ let aX = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
344+ let aH = aX._1
345+ let aI = aX._2
346+ if ((aI != fromBase58String(A)))
328347 then throw("Wrong payment asset")
329348 else {
330349 let Y = getIntegerValue(this, r)
331350 let M = valueOrElse(getInteger(this, h), 0)
332351 let X = valueOrElse(getInteger(this, l), 0)
333352 let N = valueOrElse(getInteger(this, d), 0)
334- let aN = valueOrElse(getInteger(this, i), 0)
335- let aO = if ((X == 0))
336- then $Tuple2(0, au)
353+ let aY = valueOrElse(getInteger(this, i), 0)
354+ let aZ = if ((X == 0))
355+ then $Tuple2(0, aH)
337356 else {
338- let aP = fraction(au, min([Y, (X * 10)]), 100)
339- $Tuple2(aP, (au - aP))
357+ let ba = fraction(aH, min([Y, (X * 10)]), 100)
358+ $Tuple2(ba, (aH - ba))
340359 }
341- let aQ = aO._1
342- let aR = aO._2
343- let aS = if ((M > 0))
344- then (N + fraction(aR, a, M))
360+ let bb = aZ._1
361+ let bc = aZ._2
362+ let bd = if ((M > 0))
363+ then (N + fraction(bc, a, M))
345364 else N
346- let aT = if ((X > 0))
347- then (aN + (aQ / X))
348- else aN
349-[IntegerEntry(d, aS), IntegerEntry(i, aT), IntegerEntry(p, au)]
365+ let be = if ((X > 0))
366+ then (aY + (bb / X))
367+ else aY
368+[IntegerEntry(d, bd), IntegerEntry(i, be), IntegerEntry(p, aH)]
350369 }
351370 }))
352371
365384 else [BooleanEntry(t, false)])
366385
367386
368-@Verifier(aU)
369-func aV () = {
370- let aW = {
371- let aX = if (sigVerify(aU.bodyBytes, aU.proofs[0], x))
387+@Verifier(bf)
388+func bg () = {
389+ let bh = {
390+ let bi = if (sigVerify(bf.bodyBytes, bf.proofs[0], x))
372391 then 1
373392 else 0
374- let aY = if (sigVerify(aU.bodyBytes, aU.proofs[1], y))
393+ let bj = if (sigVerify(bf.bodyBytes, bf.proofs[1], y))
375394 then 1
376395 else 0
377- let aZ = if (sigVerify(aU.bodyBytes, aU.proofs[2], z))
396+ let bk = if (sigVerify(bf.bodyBytes, bf.proofs[2], z))
378397 then 1
379398 else 0
380- (((aX + aY) + aZ) >= 2)
399+ (((bi + bj) + bk) >= 2)
381400 }
382- let H = aU
401+ let H = bf
383402 if ($isInstanceOf(H, "InvokeScriptTransaction"))
384403 then {
385- let ba = H
386- let bb = sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
387- let bc = if ((ba.fee == 900000))
388- then (ba.feeAssetId == unit)
404+ let bl = H
405+ let bm = sigVerify(bf.bodyBytes, bf.proofs[0], bf.senderPublicKey)
406+ let bn = if ((bl.fee == 900000))
407+ then (bl.feeAssetId == unit)
389408 else false
390- let bd = (ba.function == "init")
391- let be = (size(ba.payments) == 0)
392- if (if (if (if (bc)
393- then bd
409+ let bo = (bl.function == "init")
410+ let bp = (size(bl.payments) == 0)
411+ if (if (if (if (bn)
412+ then bo
394413 else false)
395- then bb
414+ then bm
396415 else false)
397- then be
416+ then bp
398417 else false)
399418 then true
400- else aW
419+ else bh
401420 }
402- else aW
421+ else bh
403422 }
404423
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = 10000
77
88 let c = "__"
99
1010 let d = "interest"
1111
1212 let e = "_userInterest"
1313
1414 let f = "_userAvailableClaim"
1515
1616 let g = "_userTokenStaked"
1717
1818 let h = "totalTokenStaked"
1919
2020 let i = "NFTInterest"
2121
2222 let j = "_NFTUserInterest"
2323
2424 let k = "_NFTUserAvailableClaim"
2525
2626 let l = "NFTTotalStaked"
2727
2828 let m = "_userNFTStaked"
2929
3030 let n = "_userNFTStakedId"
3131
3232 let o = "_NFTCreated"
3333
3434 let p = "_lastAirdrop"
3535
3636 let q = "tokenId"
3737
3838 let r = "percentForNFT"
3939
4040 let s = "nftCreatedList"
4141
4242 let t = "active"
4343
4444 let u = "admin_pub_1"
4545
4646 let v = "admin_pub_2"
4747
4848 let w = "admin_pub_3"
4949
5050 let x = fromBase58String(valueOrErrorMessage(getString(this, u), "Can't get admin1PK"))
5151
5252 let y = fromBase58String(valueOrErrorMessage(getString(this, v), "Can't get admin2PK"))
5353
5454 let z = fromBase58String(valueOrErrorMessage(getString(this, w), "Can't get operatorPK"))
5555
5656 let A = valueOrErrorMessage(getString(this, q), "Can't get staking token")
5757
5858 func B (C) = if (containsElement([x, y, z], C.callerPublicKey))
5959 then unit
6060 else throw("Only admin can call this function")
6161
6262
6363 func D (C) = if ((C.caller == this))
6464 then unit
6565 else throw("Only contract itself can call this function")
6666
6767
6868 func E () = if (valueOrElse(getBoolean(this, t), true))
6969 then unit
7070 else throw("DApp is inactive at this moment")
7171
7272
7373 func F (G) = {
7474 let H = G
7575 if ($isInstanceOf(H, "ByteVector"))
7676 then {
7777 let I = H
7878 toBase58String(I)
7979 }
8080 else if ($isInstanceOf(H, "Unit"))
8181 then {
8282 let J = H
8383 "WAVES"
8484 }
8585 else throw("Not Asset id")
8686 }
8787
8888
8989 func K (L) = {
9090 let M = valueOrElse(getInteger(this, h), 0)
9191 let N = valueOrElse(getInteger(this, d), 0)
9292 let O = valueOrElse(getInteger(this, (L + f)), 0)
9393 let P = valueOrElse(getInteger(this, (L + e)), N)
9494 let Q = valueOrElse(getInteger(this, (L + g)), 0)
9595 let R = fraction(Q, (N - P), a)
9696 $Tuple4(N, (R + O), Q, M)
9797 }
9898
9999
100100 func S (L) = {
101101 let T = valueOrElse(getInteger(this, l), 0)
102102 let N = valueOrElse(getInteger(this, i), 0)
103103 let O = valueOrElse(getInteger(this, (L + k)), 0)
104104 let P = valueOrElse(getInteger(this, (L + j)), N)
105105 let U = valueOrElse(getInteger(this, (L + m)), 0)
106106 let R = (U * (N - P))
107107 $Tuple4(N, (R + O), U, T)
108108 }
109109
110110
111111 func V () = {
112112 let W = valueOrElse(getInteger(this, p), 0)
113113 let M = valueOrElse(getInteger(this, h), 0)
114114 let X = valueOrElse(getInteger(this, l), 0)
115115 let Y = getIntegerValue(this, r)
116116 let Z = if ((X == 0))
117117 then W
118118 else fraction(W, min([Y, (X * 10)]), 100)
119119 (fraction(Z, b, M) * 52)
120120 }
121121
122122
123+func aa (L) = {
124+ func ab (ac,ad) = if (isDefined(getBoolean(this, (((L + "_") + ad) + n))))
125+ then (ac :+ ad)
126+ else ac
127+
128+ let ae = valueOrElse(getString(this, s), "")
129+ let af = if ((ae == ""))
130+ then nil
131+ else split(ae, c)
132+ let ag = {
133+ let ah = af
134+ let ai = size(ah)
135+ let aj = nil
136+ func ak (al,am) = if ((am >= ai))
137+ then al
138+ else ab(al, ah[am])
139+
140+ func an (al,am) = if ((am >= ai))
141+ then al
142+ else throw("List size exceeds 5")
143+
144+ an(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5)
145+ }
146+ makeString(ag, ",")
147+ }
148+
149+
123150 @Callable(C)
124151 func getStatsREADONLY () = {
125- let aa = V()
152+ let ao = V()
126153 let M = valueOrElse(getInteger(this, h), 0)
127154 let T = valueOrElse(getInteger(this, l), 0)
128- $Tuple2(nil, makeString(["%d%d%d", toString(aa), toString(M), toString(T)], c))
155+ $Tuple2(nil, makeString(["%d%d%d", toString(ao), toString(M), toString(T)], c))
129156 }
130157
131158
132159
133160 @Callable(C)
134161 func getStatsByUserREADONLY (L) = {
135- let ab = if ((L == ""))
136- then $Tuple4(0, 0, 0, 0)
137- else {
138- let ac = valueOrErrorMessage(addressFromString(L), "Wrong user address")
139- let ad = K(L)
140- let ae = ad._1
141- let af = ad._2
142- let Q = ad._3
143- let M = ad._4
144- let ag = S(L)
145- let ah = ag._1
146- let ai = ag._2
147- let aj = ag._3
148- let X = ag._4
149- let ak = assetBalance(ac, fromBase58String(A))
150- $Tuple4(ak, Q, af, ai)
151- }
152- let al = ab._1
153- let Q = ab._2
154- let af = ab._3
155- let ai = ab._4
156- $Tuple2(nil, makeString(["%d%d%d%d", toString(al), toString(Q), toString(af), toString(ai)], c))
162+ let ap = valueOrErrorMessage(addressFromString(L), "Wrong user address")
163+ let aq = K(L)
164+ let ar = aq._1
165+ let as = aq._2
166+ let Q = aq._3
167+ let M = aq._4
168+ let at = S(L)
169+ let au = at._1
170+ let av = at._2
171+ let aw = at._3
172+ let X = at._4
173+ let ax = assetBalance(ap, fromBase58String(A))
174+ let ag = aa(L)
175+ $Tuple2(nil, makeString(["%d%d%d%d%s", toString(ax), toString(Q), toString(as), toString(av), ag], c))
157176 }
158177
159178
160179
161180 @Callable(C)
162181 func getUserStatsREADONLY (L) = {
163- let aa = V()
164- let am = if ((L == ""))
182+ let ao = V()
183+ let ay = if ((L == ""))
165184 then $Tuple4(0, 0, 0, 0)
166185 else {
167- let ac = valueOrErrorMessage(addressFromString(L), "Wrong user address")
168- let an = K(L)
169- let ae = an._1
170- let af = an._2
171- let Q = an._3
172- let M = an._4
173- let ao = S(L)
174- let ah = ao._1
175- let ai = ao._2
176- let aj = ao._3
177- let X = ao._4
178- let ak = assetBalance(ac, fromBase58String(A))
179- $Tuple4(ak, Q, af, ai)
186+ let ap = valueOrErrorMessage(addressFromString(L), "Wrong user address")
187+ let az = K(L)
188+ let ar = az._1
189+ let as = az._2
190+ let Q = az._3
191+ let M = az._4
192+ let aA = S(L)
193+ let au = aA._1
194+ let av = aA._2
195+ let aw = aA._3
196+ let X = aA._4
197+ let aB = assetBalance(ap, fromBase58String(A))
198+ $Tuple4(aB, Q, as, av)
180199 }
181- let al = am._1
182- let Q = am._2
183- let af = am._3
184- let ai = am._4
185- $Tuple2(nil, makeString(["%d%d%d%d%d", toString(aa), toString(al), toString(Q), toString(af), toString(ai)], c))
200+ let ax = ay._1
201+ let Q = ay._2
202+ let as = ay._3
203+ let av = ay._4
204+ $Tuple2(nil, makeString(["%d%d%d%d%d", toString(ao), toString(ax), toString(Q), toString(as), toString(av)], c))
186205 }
187206
188207
189208
190209 @Callable(C)
191-func init (A,ap,aq,ar,as) = valueOrElse(D(C), if (isDefined(getString(this, q)))
210+func init (A,aC,aD,aE,aF) = valueOrElse(D(C), if (isDefined(getString(this, q)))
192211 then throw("DApp already inited")
193212 else if (!(isDefined(assetInfo(fromBase58String(A)))))
194213 then throw("asset id is not correct asset id")
195- else if ((size(fromBase58String(ap)) != 32))
214+ else if ((size(fromBase58String(aC)) != 32))
196215 then throw("group1Admin1PubKey is not correct")
197- else if ((size(fromBase58String(aq)) != 32))
216+ else if ((size(fromBase58String(aD)) != 32))
198217 then throw("group1Admin1PubKey is not correct")
199- else if ((size(fromBase58String(ar)) != 32))
218+ else if ((size(fromBase58String(aE)) != 32))
200219 then throw("group1Admin1PubKey is not correct")
201- else [StringEntry(q, A), StringEntry(u, ap), StringEntry(v, aq), StringEntry(w, ar), IntegerEntry(r, as)])
220+ else [StringEntry(q, A), StringEntry(u, aC), StringEntry(v, aD), StringEntry(w, aE), IntegerEntry(r, aF)])
202221
203222
204223
205224 @Callable(C)
206225 func stake () = valueOrElse(E(), if ((size(C.payments) != 1))
207226 then throw("One payment expected")
208227 else {
209- let at = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
210- let au = at._1
211- let av = at._2
212- if ((av != fromBase58String(A)))
228+ let aG = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
229+ let aH = aG._1
230+ let aI = aG._2
231+ if ((aI != fromBase58String(A)))
213232 then throw("Wrong payment asset")
214233 else {
215234 let L = toString(C.caller)
216- let aw = K(L)
217- let ae = aw._1
218- let af = aw._2
219- let Q = aw._3
220- let M = aw._4
221-[IntegerEntry((L + e), ae), IntegerEntry((L + f), af), IntegerEntry((L + g), (Q + au)), IntegerEntry(h, (M + au))]
235+ let aJ = K(L)
236+ let ar = aJ._1
237+ let as = aJ._2
238+ let Q = aJ._3
239+ let M = aJ._4
240+[IntegerEntry((L + e), ar), IntegerEntry((L + f), as), IntegerEntry((L + g), (Q + aH)), IntegerEntry(h, (M + aH))]
222241 }
223242 })
224243
225244
226245
227246 @Callable(C)
228-func unstake (ax) = valueOrElse(E(), {
247+func unstake (aK) = valueOrElse(E(), {
229248 let L = toString(C.caller)
230- if ((0 >= ax))
249+ if ((0 >= aK))
231250 then throw("Amount must be greater than 0")
232251 else {
233- let ay = K(L)
234- let ae = ay._1
235- let af = ay._2
236- let Q = ay._3
237- let M = ay._4
238- if ((ax > Q))
252+ let aL = K(L)
253+ let ar = aL._1
254+ let as = aL._2
255+ let Q = aL._3
256+ let M = aL._4
257+ if ((aK > Q))
239258 then throw("You can't unstake more than staked")
240- else [IntegerEntry((L + e), ae), IntegerEntry((L + f), af), IntegerEntry((L + g), (Q - ax)), IntegerEntry(h, (M - ax)), ScriptTransfer(C.caller, ax, fromBase58String(A))]
259+ else [IntegerEntry((L + e), ar), IntegerEntry((L + f), as), IntegerEntry((L + g), (Q - aK)), IntegerEntry(h, (M - aK)), ScriptTransfer(C.caller, aK, fromBase58String(A))]
241260 }
242261 })
243262
244263
245264
246265 @Callable(C)
247266 func claim () = valueOrElse(E(), {
248267 let L = toString(C.caller)
249- let az = K(L)
250- let ae = az._1
251- let af = az._2
252- let Q = az._3
253- let M = az._4
254- let aA = S(L)
255- let ah = aA._1
256- let ai = aA._2
257- let aj = aA._3
258- let X = aA._4
259- if (((af + ai) == 0))
268+ let aM = K(L)
269+ let ar = aM._1
270+ let as = aM._2
271+ let Q = aM._3
272+ let M = aM._4
273+ let aN = S(L)
274+ let au = aN._1
275+ let av = aN._2
276+ let aw = aN._3
277+ let X = aN._4
278+ if (((as + av) == 0))
260279 then throw("Nothing to claim")
261- else [IntegerEntry((L + e), ae), IntegerEntry((L + f), 0), IntegerEntry((L + j), ah), IntegerEntry((L + k), 0), ScriptTransfer(C.caller, (af + ai), fromBase58String(A))]
280+ else [IntegerEntry((L + e), ar), IntegerEntry((L + f), 0), IntegerEntry((L + j), au), IntegerEntry((L + k), 0), ScriptTransfer(C.caller, (as + av), fromBase58String(A))]
262281 })
263282
264283
265284
266285 @Callable(C)
267286 func stakeNFT () = valueOrElse(E(), if ((size(C.payments) != 1))
268287 then throw("One payment expected")
269288 else {
270- let aB = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
271- let au = aB._1
272- let av = aB._2
273- let aC = F(av)
274- if (!(isDefined(getString(this, (aC + o)))))
289+ let aO = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
290+ let aH = aO._1
291+ let aI = aO._2
292+ let aP = F(aI)
293+ if (!(isDefined(getString(this, (aP + o)))))
275294 then throw("Wrong nft asset")
276295 else {
277296 let L = toString(C.caller)
278- let aD = S(L)
279- let ae = aD._1
280- let af = aD._2
281- let aj = aD._3
282- let X = aD._4
283-[IntegerEntry((L + j), ae), IntegerEntry((L + k), af), IntegerEntry((L + m), (aj + 1)), IntegerEntry(l, (X + 1)), BooleanEntry((((L + "_") + aC) + n), true)]
297+ let aQ = S(L)
298+ let ar = aQ._1
299+ let as = aQ._2
300+ let aw = aQ._3
301+ let X = aQ._4
302+[IntegerEntry((L + j), ar), IntegerEntry((L + k), as), IntegerEntry((L + m), (aw + 1)), IntegerEntry(l, (X + 1)), BooleanEntry((((L + "_") + aP) + n), true)]
284303 }
285304 })
286305
287306
288307
289308 @Callable(C)
290309 func unstakeNFT (I) = valueOrElse(E(), {
291310 let L = toString(C.caller)
292311 if (isDefined(getBoolean(this, (((L + "_") + I) + n))))
293312 then throw("You didn't staked")
294313 else {
295- let aE = S(L)
296- let ae = aE._1
297- let af = aE._2
298- let aj = aE._3
299- let X = aE._4
300-[IntegerEntry((L + j), ae), IntegerEntry((L + k), af), IntegerEntry((L + m), (aj - 1)), IntegerEntry(l, (X - 1)), DeleteEntry((((L + "_") + I) + n)), ScriptTransfer(C.caller, 1, fromBase58String(I))]
314+ let aR = S(L)
315+ let ar = aR._1
316+ let as = aR._2
317+ let aw = aR._3
318+ let X = aR._4
319+[IntegerEntry((L + j), ar), IntegerEntry((L + k), as), IntegerEntry((L + m), (aw - 1)), IntegerEntry(l, (X - 1)), DeleteEntry((((L + "_") + I) + n)), ScriptTransfer(C.caller, 1, fromBase58String(I))]
301320 }
302321 })
303322
304323
305324
306325 @Callable(C)
307-func issueNFT (ac,aF,aG) = valueOrElse(E(), valueOrElse(B(C), {
308- let aH = valueOrErrorMessage(addressFromString(ac), "Wrong user address")
309- let aI = Issue(aF, aG, 1, 0, false)
310- let aJ = calculateAssetId(aI)
311- let aK = valueOrElse(getString(this, s), "")
312- let aL = (aK + (if ((aK != ""))
313- then (c + toBase58String(aJ))
314- else ("" + toBase58String(aJ))))
315-[aI, StringEntry((toBase58String(aJ) + o), ac), StringEntry(s, aL), ScriptTransfer(aH, 1, aJ)]
326+func issueNFT (ap,aS,aT) = valueOrElse(E(), valueOrElse(B(C), {
327+ let aU = valueOrErrorMessage(addressFromString(ap), "Wrong user address")
328+ let aV = Issue(aS, aT, 1, 0, false)
329+ let ad = calculateAssetId(aV)
330+ let af = valueOrElse(getString(this, s), "")
331+ let aW = (af + (if ((af != ""))
332+ then (c + toBase58String(ad))
333+ else ("" + toBase58String(ad))))
334+[aV, StringEntry((toBase58String(ad) + o), ap), StringEntry(s, aW), ScriptTransfer(aU, 1, ad)]
316335 }))
317336
318337
319338
320339 @Callable(C)
321340 func airdrop () = valueOrElse(E(), valueOrElse(B(C), if ((size(C.payments) != 1))
322341 then throw("One payment expected")
323342 else {
324- let aM = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
325- let au = aM._1
326- let av = aM._2
327- if ((av != fromBase58String(A)))
343+ let aX = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
344+ let aH = aX._1
345+ let aI = aX._2
346+ if ((aI != fromBase58String(A)))
328347 then throw("Wrong payment asset")
329348 else {
330349 let Y = getIntegerValue(this, r)
331350 let M = valueOrElse(getInteger(this, h), 0)
332351 let X = valueOrElse(getInteger(this, l), 0)
333352 let N = valueOrElse(getInteger(this, d), 0)
334- let aN = valueOrElse(getInteger(this, i), 0)
335- let aO = if ((X == 0))
336- then $Tuple2(0, au)
353+ let aY = valueOrElse(getInteger(this, i), 0)
354+ let aZ = if ((X == 0))
355+ then $Tuple2(0, aH)
337356 else {
338- let aP = fraction(au, min([Y, (X * 10)]), 100)
339- $Tuple2(aP, (au - aP))
357+ let ba = fraction(aH, min([Y, (X * 10)]), 100)
358+ $Tuple2(ba, (aH - ba))
340359 }
341- let aQ = aO._1
342- let aR = aO._2
343- let aS = if ((M > 0))
344- then (N + fraction(aR, a, M))
360+ let bb = aZ._1
361+ let bc = aZ._2
362+ let bd = if ((M > 0))
363+ then (N + fraction(bc, a, M))
345364 else N
346- let aT = if ((X > 0))
347- then (aN + (aQ / X))
348- else aN
349-[IntegerEntry(d, aS), IntegerEntry(i, aT), IntegerEntry(p, au)]
365+ let be = if ((X > 0))
366+ then (aY + (bb / X))
367+ else aY
368+[IntegerEntry(d, bd), IntegerEntry(i, be), IntegerEntry(p, aH)]
350369 }
351370 }))
352371
353372
354373
355374 @Callable(C)
356375 func activate () = valueOrElse(B(C), if (valueOrElse(getBoolean(this, t), true))
357376 then throw("dApp already active")
358377 else [BooleanEntry(t, true)])
359378
360379
361380
362381 @Callable(C)
363382 func shutdown () = valueOrElse(B(C), if (!(valueOrElse(getBoolean(this, t), true)))
364383 then throw("dApp already shutdown")
365384 else [BooleanEntry(t, false)])
366385
367386
368-@Verifier(aU)
369-func aV () = {
370- let aW = {
371- let aX = if (sigVerify(aU.bodyBytes, aU.proofs[0], x))
387+@Verifier(bf)
388+func bg () = {
389+ let bh = {
390+ let bi = if (sigVerify(bf.bodyBytes, bf.proofs[0], x))
372391 then 1
373392 else 0
374- let aY = if (sigVerify(aU.bodyBytes, aU.proofs[1], y))
393+ let bj = if (sigVerify(bf.bodyBytes, bf.proofs[1], y))
375394 then 1
376395 else 0
377- let aZ = if (sigVerify(aU.bodyBytes, aU.proofs[2], z))
396+ let bk = if (sigVerify(bf.bodyBytes, bf.proofs[2], z))
378397 then 1
379398 else 0
380- (((aX + aY) + aZ) >= 2)
399+ (((bi + bj) + bk) >= 2)
381400 }
382- let H = aU
401+ let H = bf
383402 if ($isInstanceOf(H, "InvokeScriptTransaction"))
384403 then {
385- let ba = H
386- let bb = sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
387- let bc = if ((ba.fee == 900000))
388- then (ba.feeAssetId == unit)
404+ let bl = H
405+ let bm = sigVerify(bf.bodyBytes, bf.proofs[0], bf.senderPublicKey)
406+ let bn = if ((bl.fee == 900000))
407+ then (bl.feeAssetId == unit)
389408 else false
390- let bd = (ba.function == "init")
391- let be = (size(ba.payments) == 0)
392- if (if (if (if (bc)
393- then bd
409+ let bo = (bl.function == "init")
410+ let bp = (size(bl.payments) == 0)
411+ if (if (if (if (bn)
412+ then bo
394413 else false)
395- then bb
414+ then bm
396415 else false)
397- then be
416+ then bp
398417 else false)
399418 then true
400- else aW
419+ else bh
401420 }
402- else aW
421+ else bh
403422 }
404423

github/deemru/w8io/169f3d6 
102.38 ms