tx · 78wCSZXshmt5KwAVGPkv6nGCgo7PRKLS1Wa3roxGAkZi

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.01100000 Waves

2024.02.12 15:38 [2973051] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "78wCSZXshmt5KwAVGPkv6nGCgo7PRKLS1Wa3roxGAkZi", "fee": 1100000, "feeAssetId": null, "timestamp": 1707741531257, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "4mJSCMmQFFrtP27q1uSoJyCC6DJKrAeKER4VsSYoHoDZkeHUZQLdZ4WmUdcsWKPAgEy9fHMGAQWZUd61TeqVu2Aw" ], "script": "base64:BgIvCAISAwoBARIDCgEIEgMKAQgSBAoCCAgSAwoBCBIECgIIARIECgIIARIDCgEBEgAeAAxjb250cmFjdEZpbGUCEWwybXBfbGVhc2luZy5yaWRlAANTRVACAl9fAQh0aHJvd0VycgEDbXNnCQACAQkArAICCQCsAgIFDGNvbnRyYWN0RmlsZQICOiAFA21zZwAKa2V5QXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICB2Fzc2V0SWQFA25pbAUDU0VQABFrZXlQZXJpb2RPZmZzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICCG9mZnNldElkBQNuaWwFA1NFUAAVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgIMb2Zmc2V0SGVpZ2h0BQNuaWwFA1NFUAAPa2V5UGVyaW9kTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFA1NFUAAOcGVyaW9kT2Zmc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa2V5UGVyaW9kT2Zmc2V0SWQAAAAMcGVyaW9kTGVuZ3RoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleVBlcmlvZExlbmd0aACQTgAScGVyaW9kT2Zmc2V0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWtleVBlcmlvZE9mZnNldEhlaWdodAD///////////8BAA9jdXJyZW50UGVyaW9kSWQDAwkAZgIFBmhlaWdodAUScGVyaW9kT2Zmc2V0SGVpZ2h0CQECIT0CBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQcJAGQCCQBpAgkAZQIFBmhlaWdodAUScGVyaW9kT2Zmc2V0SGVpZ2h0BQxwZXJpb2RMZW5ndGgFDnBlcmlvZE9mZnNldElkCQCWAwEJAMwIAgAACQDMCAIJAGUCBQ5wZXJpb2RPZmZzZXRJZAABBQNuaWwAE2N1cnJlbnRQZXJpb2RIZWlnaHQJAGQCBRJwZXJpb2RPZmZzZXRIZWlnaHQJAGgCCQBlAgUPY3VycmVudFBlcmlvZElkBQ5wZXJpb2RPZmZzZXRJZAUMcGVyaW9kTGVuZ3RoABBuZXh0UGVyaW9kSGVpZ2h0CQBkAgUTY3VycmVudFBlcmlvZEhlaWdodAUMcGVyaW9kTGVuZ3RoARJrZXlMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzCQC5CQIJAMwIAgICJXMJAMwIAgULbm9kZUFkZHJlc3MFA25pbAUDU0VQAQ5rZXlVc2VyVG9DbGFpbQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICB3RvQ2xhaW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQAA1hc3NldElkU3RyaW5nCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCmtleUFzc2V0SWQCBVdBVkVTAAxhc3NldElkQnl0ZXMDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwEOaXNWYWxpZEFkZHJlc3MBB2FkZHJlc3MEByRtYXRjaDAJAKYIAQUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgcBE2dldExlYXNpbmdOb2RlRW50cnkDC25vZGVBZGRyZXNzDWN1cnJlbnRMZWFzZWQKbmV4dExlYXNlZAQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQ1jdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCm5leHRMZWFzZWQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQESa2V5TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzBBhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBEmtleUxlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBAckbWF0Y2gwBRhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQRbm9kZUN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBBFub2RlQ3VycmVudExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIEDm5vZGVOZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQObm9kZU5leHRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwkAZgIFDm5vZGVOZXh0UGVyaW9kBQZoZWlnaHQJAJQKAgURbm9kZUN1cnJlbnRMZWFzZWQFDm5vZGVOZXh0TGVhc2VkCQCUCgIFDm5vZGVOZXh0TGVhc2VkBQ5ub2RlTmV4dExlYXNlZAkAlAoCAAAAAAETZ2V0VXNlckxlYXNpbmdFbnRyeQQLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MRdXNlckN1cnJlbnRMZWFzZWQOdXNlck5leHRMZWFzZWQEC3ZhbHVlU3RyaW5nCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQURdXNlckN1cnJlbnRMZWFzZWQJAMwIAgkApAMBBRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUOdXNlck5leHRMZWFzZWQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQEWa2V5VXNlckxlYXNpbmdOb2RlRGF0YQIFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwULdmFsdWVTdHJpbmcBEmdldFVzZXJMZWFzaW5nRGF0YQILbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MEGGxlYXNpbmdVc2VyRGF0YVN0cmluZ1JhdwkAnQgCBQR0aGlzCQEWa2V5VXNlckxlYXNpbmdOb2RlRGF0YQIFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwQHJG1hdGNoMAUYbGVhc2luZ1VzZXJEYXRhU3RyaW5nUmF3AwkAAQIFByRtYXRjaDACBlN0cmluZwQCZHMFByRtYXRjaDAECGRhdGFMaXN0CQC1CQIFAmRzBQNTRVAEEXVzZXJDdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQRdXNlckN1cnJlbnRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAACBA51c2VyTmV4dFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAMEDnVzZXJOZXh0TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QABAMJAGYCBQ51c2VyTmV4dFBlcmlvZAUGaGVpZ2h0CQCUCgIFEXVzZXJDdXJyZW50TGVhc2VkBQ51c2VyTmV4dExlYXNlZAkAlAoCBQ51c2VyTmV4dExlYXNlZAUOdXNlck5leHRMZWFzZWQJAJQKAgAAAAABE2dldFVzZXJUb0NsYWltRW50cnkDC3VzZXJBZGRyZXNzB3RvQ2xhaW0IdG9VbmxvY2sEC3ZhbHVlU3RyaW5nCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUHdG9DbGFpbQkAzAgCCQCkAwEFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQh0b1VubG9jawUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIJAQ5rZXlVc2VyVG9DbGFpbQEFC3VzZXJBZGRyZXNzBQt2YWx1ZVN0cmluZwEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQt1c2VyQWRkcmVzcwQYdXNlclRvQ2xhaW1EYXRhU3RyaW5nUmF3CQCdCAIFBHRoaXMJAQ5rZXlVc2VyVG9DbGFpbQEFC3VzZXJBZGRyZXNzBAckbWF0Y2gwBRh1c2VyVG9DbGFpbURhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQNY3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEB3RvQ2xhaW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAACBApuZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQIdG9VbmxvY2sJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwkAZgIFCm5leHRQZXJpb2QFBmhlaWdodAkAlAoCBQd0b0NsYWltBQh0b1VubG9jawkAlAoCCQBkAgUHdG9DbGFpbQUIdG9VbmxvY2sAAAkAlAoCAAAAAAEPZ2V0U3Rha2VBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwFpBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAiBwYXltZW50IHNpemUgc2hvdWxkIGJlIGV4YWN0bHkgMQkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMYXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmU6CQDMCAIFDWFzc2V0SWRTdHJpbmcFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBF1c2VyTGVhc2luZ0Ftb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECyR0MDU1MDk1NTgyCQESZ2V0TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEEW5vZGVDdXJyZW50TGVhc2VkCAULJHQwNTUwOTU1ODICXzEEDm5vZGVOZXh0TGVhc2VkCAULJHQwNTUwOTU1ODICXzIEEG5ld05vZGVOZXh0TGVhc2UJAGQCBQ5ub2RlTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQECyR0MDU2NTA1NzM2CQESZ2V0VXNlckxlYXNpbmdEYXRhAgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBBF1c2VyQ3VycmVudExlYXNlZAgFCyR0MDU2NTA1NzM2Al8xBA51c2VyTmV4dExlYXNlZAgFCyR0MDU2NTA1NzM2Al8yBBFuZXdVc2VyTmV4dExlYXNlZAkAZAIFDnVzZXJOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEWdldFVuc3Rha2VBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcw11bnN0YWtlQW1vdW50BAskdDA2MDgwNjE1MwkBEmdldExlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBBFub2RlQ3VycmVudExlYXNlZAgFCyR0MDYwODA2MTUzAl8xBA5ub2RlTmV4dExlYXNlZAgFCyR0MDYwODA2MTUzAl8yBAskdDA2MTU4NjI0NAkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQRdXNlckN1cnJlbnRMZWFzZWQIBQskdDA2MTU4NjI0NAJfMQQOdXNlck5leHRMZWFzZWQIBQskdDA2MTU4NjI0NAJfMgQGY2hlY2tzCQDMCAIDCQBmAgUNdW5zdGFrZUFtb3VudAAABgkBCHRocm93RXJyAQIndW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQGCQEIdGhyb3dFcnIBAjl1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCB1c2VyIHN0YWtlZCBhbW91bnQJAMwIAgMJAGcCBQ5ub2RlTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAYJAQh0aHJvd0VycgECOXVuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIG5vZGUgc3Rha2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBBuZXdOb2RlTmV4dExlYXNlCQBlAgUObm9kZU5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEEW5ld1VzZXJOZXh0TGVhc2VkCQBlAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQECyR0MDY5Mzc3MDQyCQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQskdDA2OTM3NzA0MgJfMQQIdG9VbmxvY2sIBQskdDA2OTM3NzA0MgJfMgQLbmV3VG9VbmxvY2sJAGQCBQh0b1VubG9jawUNdW5zdGFrZUFtb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFB3RvQ2xhaW0FC25ld1RvVW5sb2NrBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgt1c2VyQWRkcmVzcwtjbGFpbUFtb3VudAQLJHQwNzQxNzc0NzcJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFCyR0MDc0MTc3NDc3Al8xBAh0b1VubG9jawgFCyR0MDc0MTc3NDc3Al8yBAZjaGVja3MJAMwIAgMJAGYCBQtjbGFpbUFtb3VudAAABgkBCHRocm93RXJyAQIlY2xhaW0gYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAZwIFB3RvQ2xhaW0FC2NsYWltQW1vdW50BgkBCHRocm93RXJyAQI0Y2xhaW0gYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHVubG9ja2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApuZXdUb0NsYWltCQBlAgUHdG9DbGFpbQULY2xhaW1BbW91bnQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQUIdG9VbmxvY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFC2NsYWltQW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEbZ2V0U3Rha2VGcm9tVW5sb2NrZWRBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyTGVhc2luZ0Ftb3VudAQLJHQwODExNzgxNzcJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFCyR0MDgxMTc4MTc3Al8xBAh0b1VubG9jawgFCyR0MDgxMTc4MTc3Al8yBAlhdmFpbGFibGUJAGQCBQh0b1VubG9jawUHdG9DbGFpbQQGY2hlY2tzCQDMCAIDCQBmAgURdXNlckxlYXNpbmdBbW91bnQAAAYJAQh0aHJvd0VycgECH2Ftb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAGcCBQlhdmFpbGFibGUFEXVzZXJMZWFzaW5nQW1vdW50BgkBCHRocm93RXJyAQIrYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHRvIGF2YWlsYWJsZQkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAskdDA4NjU0ODcyNwkBEmdldExlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBBFub2RlQ3VycmVudExlYXNlZAgFCyR0MDg2NTQ4NzI3Al8xBA5ub2RlTmV4dExlYXNlZAgFCyR0MDg2NTQ4NzI3Al8yBBBuZXdOb2RlTmV4dExlYXNlCQBkAgUObm9kZU5leHRMZWFzZWQFEXVzZXJMZWFzaW5nQW1vdW50BAskdDA4Nzk1ODg4MQkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQRdXNlckN1cnJlbnRMZWFzZWQIBQskdDA4Nzk1ODg4MQJfMQQOdXNlck5leHRMZWFzZWQIBQskdDA4Nzk1ODg4MQJfMgQRbmV3VXNlck5leHRMZWFzZWQJAGQCBQ51c2VyTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQEC25ld1RvVW5sb2NrCQCWAwEJAMwIAgAACQDMCAIJAGUCBQh0b1VubG9jawURdXNlckxlYXNpbmdBbW91bnQFA25pbAQKbmV3VG9DbGFpbQkAlwMBCQDMCAIFB3RvQ2xhaW0JAMwIAgkAZAIFB3RvQ2xhaW0JAGUCBQh0b1VubG9jawURdXNlckxlYXNpbmdBbW91bnQFA25pbAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUObm9kZU5leHRMZWFzZWQJAMwIAgkBE2dldFVzZXJMZWFzaW5nRW50cnkEBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEXVzZXJDdXJyZW50TGVhc2VkBRFuZXdVc2VyTmV4dExlYXNlZAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQpuZXdUb0NsYWltBQtuZXdUb1VubG9jawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARxnZXRTZXROZXdQZXJpb2RMZW5ndGhBY3Rpb25zAQ9uZXdQZXJpb2RMZW5ndGgEBWNoZWNrCQDMCAIDCQBmAgUPbmV3UGVyaW9kTGVuZ3RoAAAGCQEIdGhyb3dFcnIBAiZwZXJpb2QgbGVuZ3RoIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5UGVyaW9kTGVuZ3RoBQ9uZXdQZXJpb2RMZW5ndGgJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVBlcmlvZE9mZnNldEhlaWdodAUGaGVpZ2h0BQNuaWwEEW5ld1BlcmlvZE9mZnNldElkCQBkAgUPY3VycmVudFBlcmlvZElkAAEED25ld09mZnNldEhlaWdodAkAZAIJAGgCBQxwZXJpb2RMZW5ndGgJAGUCBRFuZXdQZXJpb2RPZmZzZXRJZAUOcGVyaW9kT2Zmc2V0SWQFEnBlcmlvZE9mZnNldEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5UGVyaW9kT2Zmc2V0SWQFEW5ld1BlcmlvZE9mZnNldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFD25ld09mZnNldEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5UGVyaW9kTGVuZ3RoBQ9uZXdQZXJpb2RMZW5ndGgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBaQESc2V0TmV3UGVyaW9kTGVuZ3RoAQ9uZXdQZXJpb2RMZW5ndGgJARxnZXRTZXROZXdQZXJpb2RMZW5ndGhBY3Rpb25zAQUPbmV3UGVyaW9kTGVuZ3RoAWkBE2dldE5vZGVEYXRhUkVBRE9OTFkBC25vZGVBZGRyZXNzBA0kdDAxMDI2MTEwMzI1CQESZ2V0TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEDGN1cnJlbnRMZWFzZQgFDSR0MDEwMjYxMTAzMjUCXzEECm5leHRMZWFzZWQIBQ0kdDAxMDI2MTEwMzI1Al8yCQCUCgIFA25pbAkAlwoFBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQxjdXJyZW50TGVhc2UFEG5leHRQZXJpb2RIZWlnaHQFCm5leHRMZWFzZWQFBmhlaWdodAFpARNnZXRVc2VyRGF0YVJFQURPTkxZAQt1c2VyQWRkcmVzcwQNJHQwMTA0ODExMDU0MQkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMTA0ODExMDU0MQJfMQQIdG9VbmxvY2sIBQ0kdDAxMDQ4MTEwNTQxAl8yCQCUCgIFA25pbAkAlwoFBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQd0b0NsYWltBRBuZXh0UGVyaW9kSGVpZ2h0BQh0b1VubG9jawUGaGVpZ2h0AWkBCHN0YWtlRm9yAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwkBD2dldFN0YWtlQWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpAQVzdGFrZQELbm9kZUFkZHJlc3MEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0YWtlQWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpARFzdGFrZUZyb21VbmxvY2tlZAILbm9kZUFkZHJlc3MGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARtnZXRTdGFrZUZyb21VbmxvY2tlZEFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFBmFtb3VudAFpAQd1bnN0YWtlAgtub2RlQWRkcmVzcwZhbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBEWdldFVuc3Rha2VBY3Rpb25zAwULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQZhbW91bnQBaQEFY2xhaW0BBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEXZ2V0Q2xhaW1VbmxvY2tlZEFjdGlvbnMCBQt1c2VyQWRkcmVzcwUGYW1vdW50AWkBCGNsYWltQWxsAAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBA0kdDAxMTQ1OTExNTE5CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxMTQ1OTExNTE5Al8xBAh0b1VubG9jawgFDSR0MDExNDU5MTE1MTkCXzIJARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQd0b0NsYWltAK6xtYc=", "height": 2973051, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HsjWvuS1WgMYTbsG5ziMVtVzZx916WBJ9B2VuSC7MSxi Next: BnxhjRvsFxx5GWYAGufgqtCv1BbJxM2tH3hs67eYkZd7 Diff:
OldNewDifferences
55
66 let b = "__"
77
8-let c = 100000000
9-
10-func d (e) = throw(((a + ": ") + e))
8+func c (d) = throw(((a + ": ") + d))
119
1210
13-let f = makeString(["%s", "assetId"], b)
11+let e = makeString(["%s", "assetId"], b)
1412
15-let g = makeString(["%s", "offsetId"], b)
13+let f = makeString(["%s", "offsetId"], b)
1614
17-let h = makeString(["%s", "offsetHeight"], b)
15+let g = makeString(["%s", "offsetHeight"], b)
1816
19-let i = makeString(["%s", "periodLength"], b)
17+let h = makeString(["%s", "periodLength"], b)
2018
21-let j = valueOrElse(getInteger(this, g), 0)
19+let i = valueOrElse(getInteger(this, f), 0)
2220
23-let k = valueOrElse(getInteger(this, i), 10000)
21+let j = valueOrElse(getInteger(this, h), 10000)
2422
25-let l = valueOrElse(getInteger(this, h), -1)
23+let k = valueOrElse(getInteger(this, g), -1)
2624
27-let m = if (if ((height > l))
28- then (l != -1)
25+let l = if (if ((height > k))
26+ then (k != -1)
2927 else false)
30- then (((height - l) / k) + j)
31- else max([0, (j - 1)])
28+ then (((height - k) / j) + i)
29+ else max([0, (i - 1)])
3230
33-let n = (l + ((m - j) * k))
31+let m = (k + ((l - i) * j))
3432
35-let o = (n + k)
33+let n = (m + j)
3634
37-func p (q) = makeString(["%s", q], b)
35+func o (p) = makeString(["%s", p], b)
3836
3937
40-func r (s) = makeString(["%s%s", "userLeasingNodeList", s], b)
38+func q (r) = makeString(["%s%s", "toClaim", r], b)
4139
4240
43-func t (s,q) = makeString(["%s%s", q, s], b)
41+func s (r,p) = makeString(["%s%s", p, r], b)
4442
4543
46-func u (s) = makeString(["%s%s", "toClaim", s], b)
44+let t = valueOrElse(getString(this, e), "WAVES")
4745
46+let u = if ((t == "WAVES"))
47+ then unit
48+ else fromBase58String(t)
4849
49-let v = valueOrElse(getString(this, f), "WAVES")
50-
51-let w = if ((v == "WAVES"))
52- then unit
53- else fromBase58String(v)
54-
55-func x (y) = {
56- let z = addressFromString(y)
57- if ($isInstanceOf(z, "Address"))
50+func v (w) = {
51+ let x = addressFromString(w)
52+ if ($isInstanceOf(x, "Address"))
5853 then {
59- let A = z
54+ let y = x
6055 true
6156 }
6257 else false
6358 }
6459
6560
66-func B (q,C,D) = {
67- let E = makeString(["%d%d%d%d", toString(n), toString(C), toString(o), toString(D)], b)
68- StringEntry(p(q), E)
61+func z (p,A,B) = {
62+ let C = makeString(["%d%d%d%d", toString(m), toString(A), toString(n), toString(B)], b)
63+ StringEntry(o(p), C)
6964 }
7065
7166
72-func F (q) = {
73- let G = getString(this, p(q))
74- let z = G
75- if ($isInstanceOf(z, "String"))
67+func D (p) = {
68+ let E = getString(this, o(p))
69+ let x = E
70+ if ($isInstanceOf(x, "String"))
7671 then {
77- let H = z
78- let I = split(H, b)
79- let J = parseIntValue(I[1])
80- let K = parseIntValue(I[2])
81- let L = parseIntValue(I[3])
82- let M = parseIntValue(I[4])
83- if ((L > height))
84- then $Tuple2(K, M)
85- else $Tuple2(M, M)
72+ let F = x
73+ let G = split(F, b)
74+ let H = parseIntValue(G[1])
75+ let I = parseIntValue(G[2])
76+ let J = parseIntValue(G[3])
77+ let K = parseIntValue(G[4])
78+ if ((J > height))
79+ then $Tuple2(I, K)
80+ else $Tuple2(K, K)
8681 }
8782 else $Tuple2(0, 0)
8883 }
8984
9085
91-func N (q,s,O,P) = {
92- let E = makeString(["%d%d%d%d", toString(n), toString(O), toString(o), toString(P)], b)
93- StringEntry(t(s, q), E)
86+func L (p,r,M,N) = {
87+ let C = makeString(["%d%d%d%d", toString(m), toString(M), toString(n), toString(N)], b)
88+ StringEntry(s(r, p), C)
9489 }
9590
9691
97-func Q (q,s) = {
98- let G = getString(this, t(s, q))
99- let z = G
100- if ($isInstanceOf(z, "String"))
92+func O (p,r) = {
93+ let P = getString(this, s(r, p))
94+ let x = P
95+ if ($isInstanceOf(x, "String"))
10196 then {
102- let H = z
103- let I = split(H, b)
104- let R = parseIntValue(I[1])
105- let O = parseIntValue(I[2])
106- let S = parseIntValue(I[3])
107- let P = parseIntValue(I[4])
108- if ((S > height))
109- then $Tuple2(O, P)
110- else $Tuple2(P, P)
97+ let F = x
98+ let G = split(F, b)
99+ let Q = parseIntValue(G[1])
100+ let M = parseIntValue(G[2])
101+ let R = parseIntValue(G[3])
102+ let N = parseIntValue(G[4])
103+ if ((R > height))
104+ then $Tuple2(M, N)
105+ else $Tuple2(N, N)
111106 }
112107 else $Tuple2(0, 0)
113108 }
114109
115110
116-func T (s,U,V) = {
117- let E = makeString(["%d%d%d%d", toString(n), toString(U), toString(o), toString(V)], b)
118- StringEntry(u(s), E)
111+func S (r,T,U) = {
112+ let C = makeString(["%d%d%d%d", toString(m), toString(T), toString(n), toString(U)], b)
113+ StringEntry(q(r), C)
119114 }
120115
121116
122-func W (s) = {
123- let X = getString(this, u(s))
124- let z = X
125- if ($isInstanceOf(z, "String"))
117+func V (r) = {
118+ let W = getString(this, q(r))
119+ let x = W
120+ if ($isInstanceOf(x, "String"))
126121 then {
127- let H = z
128- let I = split(H, b)
129- let Y = parseIntValue(I[1])
130- let U = parseIntValue(I[2])
131- let Z = parseIntValue(I[3])
132- let V = parseIntValue(I[4])
133- if ((Z > height))
134- then $Tuple2(U, V)
135- else $Tuple2((U + V), 0)
122+ let F = x
123+ let G = split(F, b)
124+ let X = parseIntValue(G[1])
125+ let T = parseIntValue(G[2])
126+ let Y = parseIntValue(G[3])
127+ let U = parseIntValue(G[4])
128+ if ((Y > height))
129+ then $Tuple2(T, U)
130+ else $Tuple2((T + U), 0)
136131 }
137132 else $Tuple2(0, 0)
138133 }
139134
140135
141-func aa (s) = {
142- let G = getString(this, r(s))
143- let z = G
144- if ($isInstanceOf(z, "String"))
136+func Z (p,r,aa) = {
137+ let ab = [if ((size(aa.payments) == 1))
138+ then true
139+ else c("payment size should be exactly 1"), if ((aa.payments[0].assetId == u))
140+ then true
141+ else c(makeString(["payment assetId should be:", t], " ")), if (v(p))
142+ then true
143+ else c(makeString(["node address is not valid:", p], " ")), if (v(r))
144+ then true
145+ else c(makeString(["user address is not valid:", r], " "))]
146+ if ((ab == ab))
145147 then {
146- let H = z
147- let I = split_51C(H, b)
148- I
149- }
150- else nil
151- }
152-
153-
154-func ab (s,ac) = if ((size(ac) == 0))
155- then DeleteEntry(r(s))
156- else StringEntry(r(s), makeString_11C(ac, b))
157-
158-
159-func ad (s,q) = {
160- let ac = aa(s)
161- if (containsElement(ac, q))
162- then ac
163- else (ac :+ q)
164- }
165-
166-
167-func ae (s,q) = {
168- let ac = aa(s)
169- let z = indexOf(ac, q)
170- if ($isInstanceOf(z, "Int"))
171- then {
172- let af = z
173- removeByIndex(ac, af)
174- }
175- else ac
176- }
177-
178-
179-func ag (q,s,ah) = {
180- let ai = [if ((size(ah.payments) == 1))
181- then true
182- else d("payment size should be exactly 1"), if ((ah.payments[0].assetId == w))
183- then true
184- else d(makeString(["payment assetId should be:", v], " ")), if (x(q))
185- then true
186- else d(makeString(["node address is not valid:", q], " ")), if (x(s))
187- then true
188- else d(makeString(["user address is not valid:", s], " "))]
189- if ((ai == ai))
190- then {
191- let aj = ah.payments[0].amount
192- let ak = F(q)
193- let K = ak._1
194- let M = ak._2
195- let al = (M + aj)
196- let am = Q(q, s)
197- let O = am._1
198- let P = am._2
199- let an = (P + aj)
200-[B(q, K, al), N(q, s, O, an), ab(s, ad(s, q))]
148+ let ac = aa.payments[0].amount
149+ let ad = D(p)
150+ let I = ad._1
151+ let K = ad._2
152+ let ae = (K + ac)
153+ let af = O(p, r)
154+ let M = af._1
155+ let N = af._2
156+ let ag = (N + ac)
157+[z(p, I, ae), L(p, r, M, ag)]
201158 }
202159 else throw("Strict value is not equal to itself.")
203160 }
204161
205162
206-func ao (q,s,ap) = {
207- let aq = F(q)
208- let K = aq._1
209- let M = aq._2
210- let ar = Q(q, s)
211- let O = ar._1
212- let P = ar._2
213- let ai = [if ((ap > 0))
163+func ah (p,r,ai) = {
164+ let aj = D(p)
165+ let I = aj._1
166+ let K = aj._2
167+ let ak = O(p, r)
168+ let M = ak._1
169+ let N = ak._2
170+ let ab = [if ((ai > 0))
214171 then true
215- else d("unstake amount should be greater than 0"), if ((P >= ap))
172+ else c("unstake amount should be greater than 0"), if ((N >= ai))
216173 then true
217- else d("unstake amount should be less or equal user staked amount"), if ((M >= ap))
174+ else c("unstake amount should be less or equal user staked amount"), if ((K >= ai))
218175 then true
219- else d("unstake amount should be less or equal node staked amount"), if (x(q))
176+ else c("unstake amount should be less or equal node staked amount"), if (v(p))
220177 then true
221- else d(makeString(["node address is not valid:", q], " ")), if (x(s))
178+ else c(makeString(["node address is not valid:", p], " ")), if (v(r))
222179 then true
223- else d(makeString(["user address is not valid:", s], " "))]
224- if ((ai == ai))
180+ else c(makeString(["user address is not valid:", r], " "))]
181+ if ((ab == ab))
225182 then {
226- let al = (M - ap)
227- let an = (P - ap)
228- let as = W(s)
229- let U = as._1
230- let V = as._2
231- let at = (V + ap)
232- let au = if ((an == 0))
233- then [ab(s, ae(s, q))]
234- else nil
235- ([B(q, K, al), N(q, s, O, an), T(s, U, at)] ++ au)
183+ let ae = (K - ai)
184+ let ag = (N - ai)
185+ let al = V(r)
186+ let T = al._1
187+ let U = al._2
188+ let am = (U + ai)
189+[z(p, I, ae), L(p, r, M, ag), S(r, T, am)]
236190 }
237191 else throw("Strict value is not equal to itself.")
238192 }
239193
240194
241-func av (s,aw) = {
242- let ax = W(s)
243- let U = ax._1
244- let V = ax._2
245- let ai = [if ((aw > 0))
195+func an (r,ao) = {
196+ let ap = V(r)
197+ let T = ap._1
198+ let U = ap._2
199+ let ab = [if ((ao > 0))
246200 then true
247- else d("claim amount should be greater than 0"), if ((U >= aw))
201+ else c("claim amount should be greater than 0"), if ((T >= ao))
248202 then true
249- else d("claim amount should be less or equal unlocked amount"), if (x(s))
203+ else c("claim amount should be less or equal unlocked amount"), if (v(r))
250204 then true
251- else d(makeString(["user address is not valid:", s], " "))]
252- if ((ai == ai))
205+ else c(makeString(["user address is not valid:", r], " "))]
206+ if ((ab == ab))
253207 then {
254- let ay = (U - aw)
255-[T(s, ay, V), ScriptTransfer(addressFromStringValue(s), aw, w)]
208+ let aq = (T - ao)
209+[S(r, aq, U), ScriptTransfer(addressFromStringValue(r), ao, u)]
256210 }
257211 else throw("Strict value is not equal to itself.")
258212 }
259213
260214
261-func az (q,s,aj) = {
262- let aA = W(s)
263- let U = aA._1
264- let V = aA._2
265- let aB = (V + U)
266- let ai = [if ((aj > 0))
215+func ar (p,r,ac) = {
216+ let as = V(r)
217+ let T = as._1
218+ let U = as._2
219+ let at = (U + T)
220+ let ab = [if ((ac > 0))
267221 then true
268- else d("amount should be greater than 0"), if ((aB >= aj))
222+ else c("amount should be greater than 0"), if ((at >= ac))
269223 then true
270- else d("amount should be less or equal to available"), if (x(q))
224+ else c("amount should be less or equal to available"), if (v(p))
271225 then true
272- else d(makeString(["node address is not valid:", q], " ")), if (x(s))
226+ else c(makeString(["node address is not valid:", p], " ")), if (v(r))
273227 then true
274- else d(makeString(["user address is not valid:", s], " "))]
275- if ((ai == ai))
228+ else c(makeString(["user address is not valid:", r], " "))]
229+ if ((ab == ab))
276230 then {
277- let aC = F(q)
278- let K = aC._1
279- let M = aC._2
280- let al = (M + aj)
281- let aD = Q(q, s)
282- let O = aD._1
283- let P = aD._2
284- let an = (P + aj)
285- let at = max([0, (V - aj)])
286- let ay = min([U, (U + (V - aj))])
287-[B(q, K, M), N(q, s, O, an), T(s, ay, at), ab(s, ad(s, q))]
231+ let au = D(p)
232+ let I = au._1
233+ let K = au._2
234+ let ae = (K + ac)
235+ let av = O(p, r)
236+ let M = av._1
237+ let N = av._2
238+ let ag = (N + ac)
239+ let am = max([0, (U - ac)])
240+ let aq = min([T, (T + (U - ac))])
241+[z(p, I, K), L(p, r, M, ag), S(r, aq, am)]
288242 }
289243 else throw("Strict value is not equal to itself.")
290244 }
291245
292246
293-func aE (aF) = {
294- let aG = [if ((aF > 0))
247+func aw (ax) = {
248+ let ay = [if ((ax > 0))
295249 then true
296- else d("period length should be greater than 0")]
297- if ((aG == aG))
298- then if ((l == -1))
299- then [IntegerEntry(i, aF), IntegerEntry(h, height)]
250+ else c("period length should be greater than 0")]
251+ if ((ay == ay))
252+ then if ((k == -1))
253+ then [IntegerEntry(h, ax), IntegerEntry(g, height)]
300254 else {
301- let aH = (m + 1)
302- let aI = ((k * (aH - j)) + l)
303-[IntegerEntry(g, aH), IntegerEntry(h, aI), IntegerEntry(i, aF)]
255+ let az = (l + 1)
256+ let aA = ((j * (az - i)) + k)
257+[IntegerEntry(f, az), IntegerEntry(g, aA), IntegerEntry(h, ax)]
304258 }
305259 else throw("Strict value is not equal to itself.")
306260 }
307261
308262
309-@Callable(ah)
310-func setNewPeriodLength (aF) = aE(aF)
263+@Callable(aa)
264+func setNewPeriodLength (ax) = aw(ax)
311265
312266
313267
314-@Callable(ah)
315-func getNodeDataREADONLY (q) = {
316- let aJ = F(q)
317- let aK = aJ._1
318- let D = aJ._2
319- $Tuple2(nil, $Tuple5(n, aK, o, D, height))
268+@Callable(aa)
269+func getNodeDataREADONLY (p) = {
270+ let aB = D(p)
271+ let aC = aB._1
272+ let B = aB._2
273+ $Tuple2(nil, $Tuple5(m, aC, n, B, height))
320274 }
321275
322276
323277
324-@Callable(ah)
325-func getUserDataREADONLY (s) = {
326- let aL = W(s)
327- let U = aL._1
328- let V = aL._2
329- let ac = aa(s)
330- $Tuple2(nil, $Tuple6(n, U, o, V, height, ac))
278+@Callable(aa)
279+func getUserDataREADONLY (r) = {
280+ let aD = V(r)
281+ let T = aD._1
282+ let U = aD._2
283+ $Tuple2(nil, $Tuple5(m, T, n, U, height))
331284 }
332285
333286
334287
335-@Callable(ah)
336-func stakeFor (q,s) = ag(q, s, ah)
288+@Callable(aa)
289+func stakeFor (p,r) = Z(p, r, aa)
337290
338291
339292
340-@Callable(ah)
341-func stake (q) = {
342- let s = toString(ah.caller)
343- ag(q, s, ah)
293+@Callable(aa)
294+func stake (p) = {
295+ let r = toString(aa.caller)
296+ Z(p, r, aa)
344297 }
345298
346299
347300
348-@Callable(ah)
349-func stakeFromUnlocked (q,aM) = {
350- let s = toString(ah.caller)
351- az(q, s, aM)
301+@Callable(aa)
302+func stakeFromUnlocked (p,aE) = {
303+ let r = toString(aa.caller)
304+ ar(p, r, aE)
352305 }
353306
354307
355308
356-@Callable(ah)
357-func unstake (q,aM) = {
358- let s = toString(ah.caller)
359- ao(q, s, aM)
309+@Callable(aa)
310+func unstake (p,aE) = {
311+ let r = toString(aa.caller)
312+ ah(p, r, aE)
360313 }
361314
362315
363316
364-@Callable(ah)
365-func claim (aM) = {
366- let s = toString(ah.caller)
367- av(s, aM)
317+@Callable(aa)
318+func claim (aE) = {
319+ let r = toString(aa.caller)
320+ an(r, aE)
368321 }
369322
370323
371324
372-@Callable(ah)
325+@Callable(aa)
373326 func claimAll () = {
374- let s = toString(ah.caller)
375- let aN = W(s)
376- let U = aN._1
377- let V = aN._2
378- av(s, U)
327+ let r = toString(aa.caller)
328+ let aF = V(r)
329+ let T = aF._1
330+ let U = aF._2
331+ an(r, T)
379332 }
380333
381334
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_leasing.ride"
55
66 let b = "__"
77
8-let c = 100000000
9-
10-func d (e) = throw(((a + ": ") + e))
8+func c (d) = throw(((a + ": ") + d))
119
1210
13-let f = makeString(["%s", "assetId"], b)
11+let e = makeString(["%s", "assetId"], b)
1412
15-let g = makeString(["%s", "offsetId"], b)
13+let f = makeString(["%s", "offsetId"], b)
1614
17-let h = makeString(["%s", "offsetHeight"], b)
15+let g = makeString(["%s", "offsetHeight"], b)
1816
19-let i = makeString(["%s", "periodLength"], b)
17+let h = makeString(["%s", "periodLength"], b)
2018
21-let j = valueOrElse(getInteger(this, g), 0)
19+let i = valueOrElse(getInteger(this, f), 0)
2220
23-let k = valueOrElse(getInteger(this, i), 10000)
21+let j = valueOrElse(getInteger(this, h), 10000)
2422
25-let l = valueOrElse(getInteger(this, h), -1)
23+let k = valueOrElse(getInteger(this, g), -1)
2624
27-let m = if (if ((height > l))
28- then (l != -1)
25+let l = if (if ((height > k))
26+ then (k != -1)
2927 else false)
30- then (((height - l) / k) + j)
31- else max([0, (j - 1)])
28+ then (((height - k) / j) + i)
29+ else max([0, (i - 1)])
3230
33-let n = (l + ((m - j) * k))
31+let m = (k + ((l - i) * j))
3432
35-let o = (n + k)
33+let n = (m + j)
3634
37-func p (q) = makeString(["%s", q], b)
35+func o (p) = makeString(["%s", p], b)
3836
3937
40-func r (s) = makeString(["%s%s", "userLeasingNodeList", s], b)
38+func q (r) = makeString(["%s%s", "toClaim", r], b)
4139
4240
43-func t (s,q) = makeString(["%s%s", q, s], b)
41+func s (r,p) = makeString(["%s%s", p, r], b)
4442
4543
46-func u (s) = makeString(["%s%s", "toClaim", s], b)
44+let t = valueOrElse(getString(this, e), "WAVES")
4745
46+let u = if ((t == "WAVES"))
47+ then unit
48+ else fromBase58String(t)
4849
49-let v = valueOrElse(getString(this, f), "WAVES")
50-
51-let w = if ((v == "WAVES"))
52- then unit
53- else fromBase58String(v)
54-
55-func x (y) = {
56- let z = addressFromString(y)
57- if ($isInstanceOf(z, "Address"))
50+func v (w) = {
51+ let x = addressFromString(w)
52+ if ($isInstanceOf(x, "Address"))
5853 then {
59- let A = z
54+ let y = x
6055 true
6156 }
6257 else false
6358 }
6459
6560
66-func B (q,C,D) = {
67- let E = makeString(["%d%d%d%d", toString(n), toString(C), toString(o), toString(D)], b)
68- StringEntry(p(q), E)
61+func z (p,A,B) = {
62+ let C = makeString(["%d%d%d%d", toString(m), toString(A), toString(n), toString(B)], b)
63+ StringEntry(o(p), C)
6964 }
7065
7166
72-func F (q) = {
73- let G = getString(this, p(q))
74- let z = G
75- if ($isInstanceOf(z, "String"))
67+func D (p) = {
68+ let E = getString(this, o(p))
69+ let x = E
70+ if ($isInstanceOf(x, "String"))
7671 then {
77- let H = z
78- let I = split(H, b)
79- let J = parseIntValue(I[1])
80- let K = parseIntValue(I[2])
81- let L = parseIntValue(I[3])
82- let M = parseIntValue(I[4])
83- if ((L > height))
84- then $Tuple2(K, M)
85- else $Tuple2(M, M)
72+ let F = x
73+ let G = split(F, b)
74+ let H = parseIntValue(G[1])
75+ let I = parseIntValue(G[2])
76+ let J = parseIntValue(G[3])
77+ let K = parseIntValue(G[4])
78+ if ((J > height))
79+ then $Tuple2(I, K)
80+ else $Tuple2(K, K)
8681 }
8782 else $Tuple2(0, 0)
8883 }
8984
9085
91-func N (q,s,O,P) = {
92- let E = makeString(["%d%d%d%d", toString(n), toString(O), toString(o), toString(P)], b)
93- StringEntry(t(s, q), E)
86+func L (p,r,M,N) = {
87+ let C = makeString(["%d%d%d%d", toString(m), toString(M), toString(n), toString(N)], b)
88+ StringEntry(s(r, p), C)
9489 }
9590
9691
97-func Q (q,s) = {
98- let G = getString(this, t(s, q))
99- let z = G
100- if ($isInstanceOf(z, "String"))
92+func O (p,r) = {
93+ let P = getString(this, s(r, p))
94+ let x = P
95+ if ($isInstanceOf(x, "String"))
10196 then {
102- let H = z
103- let I = split(H, b)
104- let R = parseIntValue(I[1])
105- let O = parseIntValue(I[2])
106- let S = parseIntValue(I[3])
107- let P = parseIntValue(I[4])
108- if ((S > height))
109- then $Tuple2(O, P)
110- else $Tuple2(P, P)
97+ let F = x
98+ let G = split(F, b)
99+ let Q = parseIntValue(G[1])
100+ let M = parseIntValue(G[2])
101+ let R = parseIntValue(G[3])
102+ let N = parseIntValue(G[4])
103+ if ((R > height))
104+ then $Tuple2(M, N)
105+ else $Tuple2(N, N)
111106 }
112107 else $Tuple2(0, 0)
113108 }
114109
115110
116-func T (s,U,V) = {
117- let E = makeString(["%d%d%d%d", toString(n), toString(U), toString(o), toString(V)], b)
118- StringEntry(u(s), E)
111+func S (r,T,U) = {
112+ let C = makeString(["%d%d%d%d", toString(m), toString(T), toString(n), toString(U)], b)
113+ StringEntry(q(r), C)
119114 }
120115
121116
122-func W (s) = {
123- let X = getString(this, u(s))
124- let z = X
125- if ($isInstanceOf(z, "String"))
117+func V (r) = {
118+ let W = getString(this, q(r))
119+ let x = W
120+ if ($isInstanceOf(x, "String"))
126121 then {
127- let H = z
128- let I = split(H, b)
129- let Y = parseIntValue(I[1])
130- let U = parseIntValue(I[2])
131- let Z = parseIntValue(I[3])
132- let V = parseIntValue(I[4])
133- if ((Z > height))
134- then $Tuple2(U, V)
135- else $Tuple2((U + V), 0)
122+ let F = x
123+ let G = split(F, b)
124+ let X = parseIntValue(G[1])
125+ let T = parseIntValue(G[2])
126+ let Y = parseIntValue(G[3])
127+ let U = parseIntValue(G[4])
128+ if ((Y > height))
129+ then $Tuple2(T, U)
130+ else $Tuple2((T + U), 0)
136131 }
137132 else $Tuple2(0, 0)
138133 }
139134
140135
141-func aa (s) = {
142- let G = getString(this, r(s))
143- let z = G
144- if ($isInstanceOf(z, "String"))
136+func Z (p,r,aa) = {
137+ let ab = [if ((size(aa.payments) == 1))
138+ then true
139+ else c("payment size should be exactly 1"), if ((aa.payments[0].assetId == u))
140+ then true
141+ else c(makeString(["payment assetId should be:", t], " ")), if (v(p))
142+ then true
143+ else c(makeString(["node address is not valid:", p], " ")), if (v(r))
144+ then true
145+ else c(makeString(["user address is not valid:", r], " "))]
146+ if ((ab == ab))
145147 then {
146- let H = z
147- let I = split_51C(H, b)
148- I
149- }
150- else nil
151- }
152-
153-
154-func ab (s,ac) = if ((size(ac) == 0))
155- then DeleteEntry(r(s))
156- else StringEntry(r(s), makeString_11C(ac, b))
157-
158-
159-func ad (s,q) = {
160- let ac = aa(s)
161- if (containsElement(ac, q))
162- then ac
163- else (ac :+ q)
164- }
165-
166-
167-func ae (s,q) = {
168- let ac = aa(s)
169- let z = indexOf(ac, q)
170- if ($isInstanceOf(z, "Int"))
171- then {
172- let af = z
173- removeByIndex(ac, af)
174- }
175- else ac
176- }
177-
178-
179-func ag (q,s,ah) = {
180- let ai = [if ((size(ah.payments) == 1))
181- then true
182- else d("payment size should be exactly 1"), if ((ah.payments[0].assetId == w))
183- then true
184- else d(makeString(["payment assetId should be:", v], " ")), if (x(q))
185- then true
186- else d(makeString(["node address is not valid:", q], " ")), if (x(s))
187- then true
188- else d(makeString(["user address is not valid:", s], " "))]
189- if ((ai == ai))
190- then {
191- let aj = ah.payments[0].amount
192- let ak = F(q)
193- let K = ak._1
194- let M = ak._2
195- let al = (M + aj)
196- let am = Q(q, s)
197- let O = am._1
198- let P = am._2
199- let an = (P + aj)
200-[B(q, K, al), N(q, s, O, an), ab(s, ad(s, q))]
148+ let ac = aa.payments[0].amount
149+ let ad = D(p)
150+ let I = ad._1
151+ let K = ad._2
152+ let ae = (K + ac)
153+ let af = O(p, r)
154+ let M = af._1
155+ let N = af._2
156+ let ag = (N + ac)
157+[z(p, I, ae), L(p, r, M, ag)]
201158 }
202159 else throw("Strict value is not equal to itself.")
203160 }
204161
205162
206-func ao (q,s,ap) = {
207- let aq = F(q)
208- let K = aq._1
209- let M = aq._2
210- let ar = Q(q, s)
211- let O = ar._1
212- let P = ar._2
213- let ai = [if ((ap > 0))
163+func ah (p,r,ai) = {
164+ let aj = D(p)
165+ let I = aj._1
166+ let K = aj._2
167+ let ak = O(p, r)
168+ let M = ak._1
169+ let N = ak._2
170+ let ab = [if ((ai > 0))
214171 then true
215- else d("unstake amount should be greater than 0"), if ((P >= ap))
172+ else c("unstake amount should be greater than 0"), if ((N >= ai))
216173 then true
217- else d("unstake amount should be less or equal user staked amount"), if ((M >= ap))
174+ else c("unstake amount should be less or equal user staked amount"), if ((K >= ai))
218175 then true
219- else d("unstake amount should be less or equal node staked amount"), if (x(q))
176+ else c("unstake amount should be less or equal node staked amount"), if (v(p))
220177 then true
221- else d(makeString(["node address is not valid:", q], " ")), if (x(s))
178+ else c(makeString(["node address is not valid:", p], " ")), if (v(r))
222179 then true
223- else d(makeString(["user address is not valid:", s], " "))]
224- if ((ai == ai))
180+ else c(makeString(["user address is not valid:", r], " "))]
181+ if ((ab == ab))
225182 then {
226- let al = (M - ap)
227- let an = (P - ap)
228- let as = W(s)
229- let U = as._1
230- let V = as._2
231- let at = (V + ap)
232- let au = if ((an == 0))
233- then [ab(s, ae(s, q))]
234- else nil
235- ([B(q, K, al), N(q, s, O, an), T(s, U, at)] ++ au)
183+ let ae = (K - ai)
184+ let ag = (N - ai)
185+ let al = V(r)
186+ let T = al._1
187+ let U = al._2
188+ let am = (U + ai)
189+[z(p, I, ae), L(p, r, M, ag), S(r, T, am)]
236190 }
237191 else throw("Strict value is not equal to itself.")
238192 }
239193
240194
241-func av (s,aw) = {
242- let ax = W(s)
243- let U = ax._1
244- let V = ax._2
245- let ai = [if ((aw > 0))
195+func an (r,ao) = {
196+ let ap = V(r)
197+ let T = ap._1
198+ let U = ap._2
199+ let ab = [if ((ao > 0))
246200 then true
247- else d("claim amount should be greater than 0"), if ((U >= aw))
201+ else c("claim amount should be greater than 0"), if ((T >= ao))
248202 then true
249- else d("claim amount should be less or equal unlocked amount"), if (x(s))
203+ else c("claim amount should be less or equal unlocked amount"), if (v(r))
250204 then true
251- else d(makeString(["user address is not valid:", s], " "))]
252- if ((ai == ai))
205+ else c(makeString(["user address is not valid:", r], " "))]
206+ if ((ab == ab))
253207 then {
254- let ay = (U - aw)
255-[T(s, ay, V), ScriptTransfer(addressFromStringValue(s), aw, w)]
208+ let aq = (T - ao)
209+[S(r, aq, U), ScriptTransfer(addressFromStringValue(r), ao, u)]
256210 }
257211 else throw("Strict value is not equal to itself.")
258212 }
259213
260214
261-func az (q,s,aj) = {
262- let aA = W(s)
263- let U = aA._1
264- let V = aA._2
265- let aB = (V + U)
266- let ai = [if ((aj > 0))
215+func ar (p,r,ac) = {
216+ let as = V(r)
217+ let T = as._1
218+ let U = as._2
219+ let at = (U + T)
220+ let ab = [if ((ac > 0))
267221 then true
268- else d("amount should be greater than 0"), if ((aB >= aj))
222+ else c("amount should be greater than 0"), if ((at >= ac))
269223 then true
270- else d("amount should be less or equal to available"), if (x(q))
224+ else c("amount should be less or equal to available"), if (v(p))
271225 then true
272- else d(makeString(["node address is not valid:", q], " ")), if (x(s))
226+ else c(makeString(["node address is not valid:", p], " ")), if (v(r))
273227 then true
274- else d(makeString(["user address is not valid:", s], " "))]
275- if ((ai == ai))
228+ else c(makeString(["user address is not valid:", r], " "))]
229+ if ((ab == ab))
276230 then {
277- let aC = F(q)
278- let K = aC._1
279- let M = aC._2
280- let al = (M + aj)
281- let aD = Q(q, s)
282- let O = aD._1
283- let P = aD._2
284- let an = (P + aj)
285- let at = max([0, (V - aj)])
286- let ay = min([U, (U + (V - aj))])
287-[B(q, K, M), N(q, s, O, an), T(s, ay, at), ab(s, ad(s, q))]
231+ let au = D(p)
232+ let I = au._1
233+ let K = au._2
234+ let ae = (K + ac)
235+ let av = O(p, r)
236+ let M = av._1
237+ let N = av._2
238+ let ag = (N + ac)
239+ let am = max([0, (U - ac)])
240+ let aq = min([T, (T + (U - ac))])
241+[z(p, I, K), L(p, r, M, ag), S(r, aq, am)]
288242 }
289243 else throw("Strict value is not equal to itself.")
290244 }
291245
292246
293-func aE (aF) = {
294- let aG = [if ((aF > 0))
247+func aw (ax) = {
248+ let ay = [if ((ax > 0))
295249 then true
296- else d("period length should be greater than 0")]
297- if ((aG == aG))
298- then if ((l == -1))
299- then [IntegerEntry(i, aF), IntegerEntry(h, height)]
250+ else c("period length should be greater than 0")]
251+ if ((ay == ay))
252+ then if ((k == -1))
253+ then [IntegerEntry(h, ax), IntegerEntry(g, height)]
300254 else {
301- let aH = (m + 1)
302- let aI = ((k * (aH - j)) + l)
303-[IntegerEntry(g, aH), IntegerEntry(h, aI), IntegerEntry(i, aF)]
255+ let az = (l + 1)
256+ let aA = ((j * (az - i)) + k)
257+[IntegerEntry(f, az), IntegerEntry(g, aA), IntegerEntry(h, ax)]
304258 }
305259 else throw("Strict value is not equal to itself.")
306260 }
307261
308262
309-@Callable(ah)
310-func setNewPeriodLength (aF) = aE(aF)
263+@Callable(aa)
264+func setNewPeriodLength (ax) = aw(ax)
311265
312266
313267
314-@Callable(ah)
315-func getNodeDataREADONLY (q) = {
316- let aJ = F(q)
317- let aK = aJ._1
318- let D = aJ._2
319- $Tuple2(nil, $Tuple5(n, aK, o, D, height))
268+@Callable(aa)
269+func getNodeDataREADONLY (p) = {
270+ let aB = D(p)
271+ let aC = aB._1
272+ let B = aB._2
273+ $Tuple2(nil, $Tuple5(m, aC, n, B, height))
320274 }
321275
322276
323277
324-@Callable(ah)
325-func getUserDataREADONLY (s) = {
326- let aL = W(s)
327- let U = aL._1
328- let V = aL._2
329- let ac = aa(s)
330- $Tuple2(nil, $Tuple6(n, U, o, V, height, ac))
278+@Callable(aa)
279+func getUserDataREADONLY (r) = {
280+ let aD = V(r)
281+ let T = aD._1
282+ let U = aD._2
283+ $Tuple2(nil, $Tuple5(m, T, n, U, height))
331284 }
332285
333286
334287
335-@Callable(ah)
336-func stakeFor (q,s) = ag(q, s, ah)
288+@Callable(aa)
289+func stakeFor (p,r) = Z(p, r, aa)
337290
338291
339292
340-@Callable(ah)
341-func stake (q) = {
342- let s = toString(ah.caller)
343- ag(q, s, ah)
293+@Callable(aa)
294+func stake (p) = {
295+ let r = toString(aa.caller)
296+ Z(p, r, aa)
344297 }
345298
346299
347300
348-@Callable(ah)
349-func stakeFromUnlocked (q,aM) = {
350- let s = toString(ah.caller)
351- az(q, s, aM)
301+@Callable(aa)
302+func stakeFromUnlocked (p,aE) = {
303+ let r = toString(aa.caller)
304+ ar(p, r, aE)
352305 }
353306
354307
355308
356-@Callable(ah)
357-func unstake (q,aM) = {
358- let s = toString(ah.caller)
359- ao(q, s, aM)
309+@Callable(aa)
310+func unstake (p,aE) = {
311+ let r = toString(aa.caller)
312+ ah(p, r, aE)
360313 }
361314
362315
363316
364-@Callable(ah)
365-func claim (aM) = {
366- let s = toString(ah.caller)
367- av(s, aM)
317+@Callable(aa)
318+func claim (aE) = {
319+ let r = toString(aa.caller)
320+ an(r, aE)
368321 }
369322
370323
371324
372-@Callable(ah)
325+@Callable(aa)
373326 func claimAll () = {
374- let s = toString(ah.caller)
375- let aN = W(s)
376- let U = aN._1
377- let V = aN._2
378- av(s, U)
327+ let r = toString(aa.caller)
328+ let aF = V(r)
329+ let T = aF._1
330+ let U = aF._2
331+ an(r, T)
379332 }
380333
381334

github/deemru/w8io/169f3d6 
104.97 ms