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:
Old | New | Differences | |
---|---|---|---|
5 | 5 | ||
6 | 6 | let b = "__" | |
7 | 7 | ||
8 | - | let c = 100000000 | |
9 | - | ||
10 | - | func d (e) = throw(((a + ": ") + e)) | |
8 | + | func c (d) = throw(((a + ": ") + d)) | |
11 | 9 | ||
12 | 10 | ||
13 | - | let | |
11 | + | let e = makeString(["%s", "assetId"], b) | |
14 | 12 | ||
15 | - | let | |
13 | + | let f = makeString(["%s", "offsetId"], b) | |
16 | 14 | ||
17 | - | let | |
15 | + | let g = makeString(["%s", "offsetHeight"], b) | |
18 | 16 | ||
19 | - | let | |
17 | + | let h = makeString(["%s", "periodLength"], b) | |
20 | 18 | ||
21 | - | let | |
19 | + | let i = valueOrElse(getInteger(this, f), 0) | |
22 | 20 | ||
23 | - | let | |
21 | + | let j = valueOrElse(getInteger(this, h), 10000) | |
24 | 22 | ||
25 | - | let | |
23 | + | let k = valueOrElse(getInteger(this, g), -1) | |
26 | 24 | ||
27 | - | let | |
28 | - | then ( | |
25 | + | let l = if (if ((height > k)) | |
26 | + | then (k != -1) | |
29 | 27 | else false) | |
30 | - | then (((height - | |
31 | - | else max([0, ( | |
28 | + | then (((height - k) / j) + i) | |
29 | + | else max([0, (i - 1)]) | |
32 | 30 | ||
33 | - | let | |
31 | + | let m = (k + ((l - i) * j)) | |
34 | 32 | ||
35 | - | let | |
33 | + | let n = (m + j) | |
36 | 34 | ||
37 | - | func | |
35 | + | func o (p) = makeString(["%s", p], b) | |
38 | 36 | ||
39 | 37 | ||
40 | - | func | |
38 | + | func q (r) = makeString(["%s%s", "toClaim", r], b) | |
41 | 39 | ||
42 | 40 | ||
43 | - | func | |
41 | + | func s (r,p) = makeString(["%s%s", p, r], b) | |
44 | 42 | ||
45 | 43 | ||
46 | - | ||
44 | + | let t = valueOrElse(getString(this, e), "WAVES") | |
47 | 45 | ||
46 | + | let u = if ((t == "WAVES")) | |
47 | + | then unit | |
48 | + | else fromBase58String(t) | |
48 | 49 | ||
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")) | |
58 | 53 | then { | |
59 | - | let | |
54 | + | let y = x | |
60 | 55 | true | |
61 | 56 | } | |
62 | 57 | else false | |
63 | 58 | } | |
64 | 59 | ||
65 | 60 | ||
66 | - | func | |
67 | - | let | |
68 | - | StringEntry(p | |
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) | |
69 | 64 | } | |
70 | 65 | ||
71 | 66 | ||
72 | - | func | |
73 | - | let | |
74 | - | let | |
75 | - | if ($isInstanceOf( | |
67 | + | func D (p) = { | |
68 | + | let E = getString(this, o(p)) | |
69 | + | let x = E | |
70 | + | if ($isInstanceOf(x, "String")) | |
76 | 71 | then { | |
77 | - | let | |
78 | - | let | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | let | |
83 | - | if (( | |
84 | - | then $Tuple2( | |
85 | - | else $Tuple2( | |
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) | |
86 | 81 | } | |
87 | 82 | else $Tuple2(0, 0) | |
88 | 83 | } | |
89 | 84 | ||
90 | 85 | ||
91 | - | func | |
92 | - | let | |
93 | - | StringEntry( | |
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) | |
94 | 89 | } | |
95 | 90 | ||
96 | 91 | ||
97 | - | func | |
98 | - | let | |
99 | - | let | |
100 | - | if ($isInstanceOf( | |
92 | + | func O (p,r) = { | |
93 | + | let P = getString(this, s(r, p)) | |
94 | + | let x = P | |
95 | + | if ($isInstanceOf(x, "String")) | |
101 | 96 | then { | |
102 | - | let | |
103 | - | let | |
104 | - | let | |
105 | - | let | |
106 | - | let | |
107 | - | let | |
108 | - | if (( | |
109 | - | then $Tuple2( | |
110 | - | else $Tuple2( | |
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) | |
111 | 106 | } | |
112 | 107 | else $Tuple2(0, 0) | |
113 | 108 | } | |
114 | 109 | ||
115 | 110 | ||
116 | - | func | |
117 | - | let | |
118 | - | StringEntry( | |
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) | |
119 | 114 | } | |
120 | 115 | ||
121 | 116 | ||
122 | - | func | |
123 | - | let | |
124 | - | let | |
125 | - | if ($isInstanceOf( | |
117 | + | func V (r) = { | |
118 | + | let W = getString(this, q(r)) | |
119 | + | let x = W | |
120 | + | if ($isInstanceOf(x, "String")) | |
126 | 121 | then { | |
127 | - | let | |
128 | - | let | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | let | |
133 | - | if (( | |
134 | - | then $Tuple2( | |
135 | - | else $Tuple2(( | |
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) | |
136 | 131 | } | |
137 | 132 | else $Tuple2(0, 0) | |
138 | 133 | } | |
139 | 134 | ||
140 | 135 | ||
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)) | |
145 | 147 | 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)] | |
201 | 158 | } | |
202 | 159 | else throw("Strict value is not equal to itself.") | |
203 | 160 | } | |
204 | 161 | ||
205 | 162 | ||
206 | - | func | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | let | |
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)) | |
214 | 171 | then true | |
215 | - | else | |
172 | + | else c("unstake amount should be greater than 0"), if ((N >= ai)) | |
216 | 173 | then true | |
217 | - | else | |
174 | + | else c("unstake amount should be less or equal user staked amount"), if ((K >= ai)) | |
218 | 175 | then true | |
219 | - | else | |
176 | + | else c("unstake amount should be less or equal node staked amount"), if (v(p)) | |
220 | 177 | then true | |
221 | - | else | |
178 | + | else c(makeString(["node address is not valid:", p], " ")), if (v(r)) | |
222 | 179 | then true | |
223 | - | else | |
224 | - | if (( | |
180 | + | else c(makeString(["user address is not valid:", r], " "))] | |
181 | + | if ((ab == ab)) | |
225 | 182 | 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)] | |
236 | 190 | } | |
237 | 191 | else throw("Strict value is not equal to itself.") | |
238 | 192 | } | |
239 | 193 | ||
240 | 194 | ||
241 | - | func | |
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
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)) | |
246 | 200 | then true | |
247 | - | else | |
201 | + | else c("claim amount should be greater than 0"), if ((T >= ao)) | |
248 | 202 | then true | |
249 | - | else | |
203 | + | else c("claim amount should be less or equal unlocked amount"), if (v(r)) | |
250 | 204 | then true | |
251 | - | else | |
252 | - | if (( | |
205 | + | else c(makeString(["user address is not valid:", r], " "))] | |
206 | + | if ((ab == ab)) | |
253 | 207 | then { | |
254 | - | let | |
255 | - | [ | |
208 | + | let aq = (T - ao) | |
209 | + | [S(r, aq, U), ScriptTransfer(addressFromStringValue(r), ao, u)] | |
256 | 210 | } | |
257 | 211 | else throw("Strict value is not equal to itself.") | |
258 | 212 | } | |
259 | 213 | ||
260 | 214 | ||
261 | - | func | |
262 | - | let | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | let | |
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)) | |
267 | 221 | then true | |
268 | - | else | |
222 | + | else c("amount should be greater than 0"), if ((at >= ac)) | |
269 | 223 | then true | |
270 | - | else | |
224 | + | else c("amount should be less or equal to available"), if (v(p)) | |
271 | 225 | then true | |
272 | - | else | |
226 | + | else c(makeString(["node address is not valid:", p], " ")), if (v(r)) | |
273 | 227 | then true | |
274 | - | else | |
275 | - | if (( | |
228 | + | else c(makeString(["user address is not valid:", r], " "))] | |
229 | + | if ((ab == ab)) | |
276 | 230 | then { | |
277 | - | let | |
278 | - | let | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
287 | - | [ | |
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)] | |
288 | 242 | } | |
289 | 243 | else throw("Strict value is not equal to itself.") | |
290 | 244 | } | |
291 | 245 | ||
292 | 246 | ||
293 | - | func | |
294 | - | let | |
247 | + | func aw (ax) = { | |
248 | + | let ay = [if ((ax > 0)) | |
295 | 249 | then true | |
296 | - | else | |
297 | - | if (( | |
298 | - | then if (( | |
299 | - | then [IntegerEntry( | |
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)] | |
300 | 254 | else { | |
301 | - | let | |
302 | - | let | |
303 | - | [IntegerEntry(g, | |
255 | + | let az = (l + 1) | |
256 | + | let aA = ((j * (az - i)) + k) | |
257 | + | [IntegerEntry(f, az), IntegerEntry(g, aA), IntegerEntry(h, ax)] | |
304 | 258 | } | |
305 | 259 | else throw("Strict value is not equal to itself.") | |
306 | 260 | } | |
307 | 261 | ||
308 | 262 | ||
309 | - | @Callable( | |
310 | - | func setNewPeriodLength ( | |
263 | + | @Callable(aa) | |
264 | + | func setNewPeriodLength (ax) = aw(ax) | |
311 | 265 | ||
312 | 266 | ||
313 | 267 | ||
314 | - | @Callable( | |
315 | - | func getNodeDataREADONLY ( | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | $Tuple2(nil, $Tuple5(n, | |
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)) | |
320 | 274 | } | |
321 | 275 | ||
322 | 276 | ||
323 | 277 | ||
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)) | |
331 | 284 | } | |
332 | 285 | ||
333 | 286 | ||
334 | 287 | ||
335 | - | @Callable( | |
336 | - | func stakeFor ( | |
288 | + | @Callable(aa) | |
289 | + | func stakeFor (p,r) = Z(p, r, aa) | |
337 | 290 | ||
338 | 291 | ||
339 | 292 | ||
340 | - | @Callable( | |
341 | - | func stake ( | |
342 | - | let | |
343 | - | | |
293 | + | @Callable(aa) | |
294 | + | func stake (p) = { | |
295 | + | let r = toString(aa.caller) | |
296 | + | Z(p, r, aa) | |
344 | 297 | } | |
345 | 298 | ||
346 | 299 | ||
347 | 300 | ||
348 | - | @Callable( | |
349 | - | func stakeFromUnlocked ( | |
350 | - | let | |
351 | - | | |
301 | + | @Callable(aa) | |
302 | + | func stakeFromUnlocked (p,aE) = { | |
303 | + | let r = toString(aa.caller) | |
304 | + | ar(p, r, aE) | |
352 | 305 | } | |
353 | 306 | ||
354 | 307 | ||
355 | 308 | ||
356 | - | @Callable( | |
357 | - | func unstake ( | |
358 | - | let | |
359 | - | | |
309 | + | @Callable(aa) | |
310 | + | func unstake (p,aE) = { | |
311 | + | let r = toString(aa.caller) | |
312 | + | ah(p, r, aE) | |
360 | 313 | } | |
361 | 314 | ||
362 | 315 | ||
363 | 316 | ||
364 | - | @Callable( | |
365 | - | func claim ( | |
366 | - | let | |
367 | - | | |
317 | + | @Callable(aa) | |
318 | + | func claim (aE) = { | |
319 | + | let r = toString(aa.caller) | |
320 | + | an(r, aE) | |
368 | 321 | } | |
369 | 322 | ||
370 | 323 | ||
371 | 324 | ||
372 | - | @Callable( | |
325 | + | @Callable(aa) | |
373 | 326 | func claimAll () = { | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | | |
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) | |
379 | 332 | } | |
380 | 333 | ||
381 | 334 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "l2mp_leasing.ride" | |
5 | 5 | ||
6 | 6 | let b = "__" | |
7 | 7 | ||
8 | - | let c = 100000000 | |
9 | - | ||
10 | - | func d (e) = throw(((a + ": ") + e)) | |
8 | + | func c (d) = throw(((a + ": ") + d)) | |
11 | 9 | ||
12 | 10 | ||
13 | - | let | |
11 | + | let e = makeString(["%s", "assetId"], b) | |
14 | 12 | ||
15 | - | let | |
13 | + | let f = makeString(["%s", "offsetId"], b) | |
16 | 14 | ||
17 | - | let | |
15 | + | let g = makeString(["%s", "offsetHeight"], b) | |
18 | 16 | ||
19 | - | let | |
17 | + | let h = makeString(["%s", "periodLength"], b) | |
20 | 18 | ||
21 | - | let | |
19 | + | let i = valueOrElse(getInteger(this, f), 0) | |
22 | 20 | ||
23 | - | let | |
21 | + | let j = valueOrElse(getInteger(this, h), 10000) | |
24 | 22 | ||
25 | - | let | |
23 | + | let k = valueOrElse(getInteger(this, g), -1) | |
26 | 24 | ||
27 | - | let | |
28 | - | then ( | |
25 | + | let l = if (if ((height > k)) | |
26 | + | then (k != -1) | |
29 | 27 | else false) | |
30 | - | then (((height - | |
31 | - | else max([0, ( | |
28 | + | then (((height - k) / j) + i) | |
29 | + | else max([0, (i - 1)]) | |
32 | 30 | ||
33 | - | let | |
31 | + | let m = (k + ((l - i) * j)) | |
34 | 32 | ||
35 | - | let | |
33 | + | let n = (m + j) | |
36 | 34 | ||
37 | - | func | |
35 | + | func o (p) = makeString(["%s", p], b) | |
38 | 36 | ||
39 | 37 | ||
40 | - | func | |
38 | + | func q (r) = makeString(["%s%s", "toClaim", r], b) | |
41 | 39 | ||
42 | 40 | ||
43 | - | func | |
41 | + | func s (r,p) = makeString(["%s%s", p, r], b) | |
44 | 42 | ||
45 | 43 | ||
46 | - | ||
44 | + | let t = valueOrElse(getString(this, e), "WAVES") | |
47 | 45 | ||
46 | + | let u = if ((t == "WAVES")) | |
47 | + | then unit | |
48 | + | else fromBase58String(t) | |
48 | 49 | ||
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")) | |
58 | 53 | then { | |
59 | - | let | |
54 | + | let y = x | |
60 | 55 | true | |
61 | 56 | } | |
62 | 57 | else false | |
63 | 58 | } | |
64 | 59 | ||
65 | 60 | ||
66 | - | func | |
67 | - | let | |
68 | - | StringEntry(p | |
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) | |
69 | 64 | } | |
70 | 65 | ||
71 | 66 | ||
72 | - | func | |
73 | - | let | |
74 | - | let | |
75 | - | if ($isInstanceOf( | |
67 | + | func D (p) = { | |
68 | + | let E = getString(this, o(p)) | |
69 | + | let x = E | |
70 | + | if ($isInstanceOf(x, "String")) | |
76 | 71 | then { | |
77 | - | let | |
78 | - | let | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | let | |
83 | - | if (( | |
84 | - | then $Tuple2( | |
85 | - | else $Tuple2( | |
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) | |
86 | 81 | } | |
87 | 82 | else $Tuple2(0, 0) | |
88 | 83 | } | |
89 | 84 | ||
90 | 85 | ||
91 | - | func | |
92 | - | let | |
93 | - | StringEntry( | |
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) | |
94 | 89 | } | |
95 | 90 | ||
96 | 91 | ||
97 | - | func | |
98 | - | let | |
99 | - | let | |
100 | - | if ($isInstanceOf( | |
92 | + | func O (p,r) = { | |
93 | + | let P = getString(this, s(r, p)) | |
94 | + | let x = P | |
95 | + | if ($isInstanceOf(x, "String")) | |
101 | 96 | then { | |
102 | - | let | |
103 | - | let | |
104 | - | let | |
105 | - | let | |
106 | - | let | |
107 | - | let | |
108 | - | if (( | |
109 | - | then $Tuple2( | |
110 | - | else $Tuple2( | |
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) | |
111 | 106 | } | |
112 | 107 | else $Tuple2(0, 0) | |
113 | 108 | } | |
114 | 109 | ||
115 | 110 | ||
116 | - | func | |
117 | - | let | |
118 | - | StringEntry( | |
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) | |
119 | 114 | } | |
120 | 115 | ||
121 | 116 | ||
122 | - | func | |
123 | - | let | |
124 | - | let | |
125 | - | if ($isInstanceOf( | |
117 | + | func V (r) = { | |
118 | + | let W = getString(this, q(r)) | |
119 | + | let x = W | |
120 | + | if ($isInstanceOf(x, "String")) | |
126 | 121 | then { | |
127 | - | let | |
128 | - | let | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | let | |
133 | - | if (( | |
134 | - | then $Tuple2( | |
135 | - | else $Tuple2(( | |
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) | |
136 | 131 | } | |
137 | 132 | else $Tuple2(0, 0) | |
138 | 133 | } | |
139 | 134 | ||
140 | 135 | ||
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)) | |
145 | 147 | 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)] | |
201 | 158 | } | |
202 | 159 | else throw("Strict value is not equal to itself.") | |
203 | 160 | } | |
204 | 161 | ||
205 | 162 | ||
206 | - | func | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | let | |
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)) | |
214 | 171 | then true | |
215 | - | else | |
172 | + | else c("unstake amount should be greater than 0"), if ((N >= ai)) | |
216 | 173 | then true | |
217 | - | else | |
174 | + | else c("unstake amount should be less or equal user staked amount"), if ((K >= ai)) | |
218 | 175 | then true | |
219 | - | else | |
176 | + | else c("unstake amount should be less or equal node staked amount"), if (v(p)) | |
220 | 177 | then true | |
221 | - | else | |
178 | + | else c(makeString(["node address is not valid:", p], " ")), if (v(r)) | |
222 | 179 | then true | |
223 | - | else | |
224 | - | if (( | |
180 | + | else c(makeString(["user address is not valid:", r], " "))] | |
181 | + | if ((ab == ab)) | |
225 | 182 | 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)] | |
236 | 190 | } | |
237 | 191 | else throw("Strict value is not equal to itself.") | |
238 | 192 | } | |
239 | 193 | ||
240 | 194 | ||
241 | - | func | |
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
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)) | |
246 | 200 | then true | |
247 | - | else | |
201 | + | else c("claim amount should be greater than 0"), if ((T >= ao)) | |
248 | 202 | then true | |
249 | - | else | |
203 | + | else c("claim amount should be less or equal unlocked amount"), if (v(r)) | |
250 | 204 | then true | |
251 | - | else | |
252 | - | if (( | |
205 | + | else c(makeString(["user address is not valid:", r], " "))] | |
206 | + | if ((ab == ab)) | |
253 | 207 | then { | |
254 | - | let | |
255 | - | [ | |
208 | + | let aq = (T - ao) | |
209 | + | [S(r, aq, U), ScriptTransfer(addressFromStringValue(r), ao, u)] | |
256 | 210 | } | |
257 | 211 | else throw("Strict value is not equal to itself.") | |
258 | 212 | } | |
259 | 213 | ||
260 | 214 | ||
261 | - | func | |
262 | - | let | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | let | |
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)) | |
267 | 221 | then true | |
268 | - | else | |
222 | + | else c("amount should be greater than 0"), if ((at >= ac)) | |
269 | 223 | then true | |
270 | - | else | |
224 | + | else c("amount should be less or equal to available"), if (v(p)) | |
271 | 225 | then true | |
272 | - | else | |
226 | + | else c(makeString(["node address is not valid:", p], " ")), if (v(r)) | |
273 | 227 | then true | |
274 | - | else | |
275 | - | if (( | |
228 | + | else c(makeString(["user address is not valid:", r], " "))] | |
229 | + | if ((ab == ab)) | |
276 | 230 | then { | |
277 | - | let | |
278 | - | let | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
287 | - | [ | |
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)] | |
288 | 242 | } | |
289 | 243 | else throw("Strict value is not equal to itself.") | |
290 | 244 | } | |
291 | 245 | ||
292 | 246 | ||
293 | - | func | |
294 | - | let | |
247 | + | func aw (ax) = { | |
248 | + | let ay = [if ((ax > 0)) | |
295 | 249 | then true | |
296 | - | else | |
297 | - | if (( | |
298 | - | then if (( | |
299 | - | then [IntegerEntry( | |
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)] | |
300 | 254 | else { | |
301 | - | let | |
302 | - | let | |
303 | - | [IntegerEntry(g, | |
255 | + | let az = (l + 1) | |
256 | + | let aA = ((j * (az - i)) + k) | |
257 | + | [IntegerEntry(f, az), IntegerEntry(g, aA), IntegerEntry(h, ax)] | |
304 | 258 | } | |
305 | 259 | else throw("Strict value is not equal to itself.") | |
306 | 260 | } | |
307 | 261 | ||
308 | 262 | ||
309 | - | @Callable( | |
310 | - | func setNewPeriodLength ( | |
263 | + | @Callable(aa) | |
264 | + | func setNewPeriodLength (ax) = aw(ax) | |
311 | 265 | ||
312 | 266 | ||
313 | 267 | ||
314 | - | @Callable( | |
315 | - | func getNodeDataREADONLY ( | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | $Tuple2(nil, $Tuple5(n, | |
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)) | |
320 | 274 | } | |
321 | 275 | ||
322 | 276 | ||
323 | 277 | ||
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)) | |
331 | 284 | } | |
332 | 285 | ||
333 | 286 | ||
334 | 287 | ||
335 | - | @Callable( | |
336 | - | func stakeFor ( | |
288 | + | @Callable(aa) | |
289 | + | func stakeFor (p,r) = Z(p, r, aa) | |
337 | 290 | ||
338 | 291 | ||
339 | 292 | ||
340 | - | @Callable( | |
341 | - | func stake ( | |
342 | - | let | |
343 | - | | |
293 | + | @Callable(aa) | |
294 | + | func stake (p) = { | |
295 | + | let r = toString(aa.caller) | |
296 | + | Z(p, r, aa) | |
344 | 297 | } | |
345 | 298 | ||
346 | 299 | ||
347 | 300 | ||
348 | - | @Callable( | |
349 | - | func stakeFromUnlocked ( | |
350 | - | let | |
351 | - | | |
301 | + | @Callable(aa) | |
302 | + | func stakeFromUnlocked (p,aE) = { | |
303 | + | let r = toString(aa.caller) | |
304 | + | ar(p, r, aE) | |
352 | 305 | } | |
353 | 306 | ||
354 | 307 | ||
355 | 308 | ||
356 | - | @Callable( | |
357 | - | func unstake ( | |
358 | - | let | |
359 | - | | |
309 | + | @Callable(aa) | |
310 | + | func unstake (p,aE) = { | |
311 | + | let r = toString(aa.caller) | |
312 | + | ah(p, r, aE) | |
360 | 313 | } | |
361 | 314 | ||
362 | 315 | ||
363 | 316 | ||
364 | - | @Callable( | |
365 | - | func claim ( | |
366 | - | let | |
367 | - | | |
317 | + | @Callable(aa) | |
318 | + | func claim (aE) = { | |
319 | + | let r = toString(aa.caller) | |
320 | + | an(r, aE) | |
368 | 321 | } | |
369 | 322 | ||
370 | 323 | ||
371 | 324 | ||
372 | - | @Callable( | |
325 | + | @Callable(aa) | |
373 | 326 | func claimAll () = { | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | | |
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) | |
379 | 332 | } | |
380 | 333 | ||
381 | 334 |
github/deemru/w8io/169f3d6 104.97 ms ◑![]()