tx · 4NdZVT5TqqUqQVVYoF2PB4hRrXjeTdxvhchn2KA1WptP

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.01300000 Waves

2024.02.19 13:42 [2983018] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "4NdZVT5TqqUqQVVYoF2PB4hRrXjeTdxvhchn2KA1WptP", "fee": 1300000, "feeAssetId": null, "timestamp": 1708339418255, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "4Pw1do5Em32ETEVYWLahbbTYohherRrY4Qr2ZT42RzvjLyeF6p2asmcNdhYJAUbq4VLiciDS3Ag6WuYTu1WkHNUj" ], "script": "base64:BgI0CAISAwoBARIDCgEEEgMKAQgSAwoBCBIECgIICBIDCgEIEgQKAggBEgQKAggBEgMKAQESACoADGNvbnRyYWN0RmlsZQIRbDJtcF9sZWFzaW5nLnJpZGUAA1NFUAICX18BCHRocm93RXJyAQNtc2cJAAIBCQCsAgIJAKwCAgUMY29udHJhY3RGaWxlAgI6IAUDbXNnAAprZXlBc3NldElkCQC5CQIJAMwIAgICJXMJAMwIAgIHYXNzZXRJZAUDbmlsBQNTRVAADGtleUFkbWluTGlzdAkAuQkCCQDMCAICAiVzCQDMCAICCWFkbWluTGlzdAUDbmlsBQNTRVAADGtleUZvcmNlU3RvcAkAuQkCCQDMCAICAiVzCQDMCAICCWZvcmNlU3RvcAUDbmlsBQNTRVAAEWtleVBlcmlvZE9mZnNldElkCQC5CQIJAMwIAgICJXMJAMwIAgIIb2Zmc2V0SWQFA25pbAUDU0VQABVrZXlQZXJpb2RPZmZzZXRIZWlnaHQJALkJAgkAzAgCAgIlcwkAzAgCAgxvZmZzZXRIZWlnaHQFA25pbAUDU0VQAA9rZXlQZXJpb2RMZW5ndGgJALkJAgkAzAgCAgIlcwkAzAgCAgxwZXJpb2RMZW5ndGgFA25pbAUDU0VQABJrZXlNaWdyYXRpb25QZXJpb2QJALkJAgkAzAgCAgIlcwkAzAgCAg9taWdyYXRpb25QZXJpb2QFA25pbAUDU0VQAA5wZXJpb2RPZmZzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrZXlQZXJpb2RPZmZzZXRJZAAAAAxwZXJpb2RMZW5ndGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa2V5UGVyaW9kTGVuZ3RoAJBOABJwZXJpb2RPZmZzZXRIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEAD2N1cnJlbnRQZXJpb2RJZAMDCQBmAgUGaGVpZ2h0BRJwZXJpb2RPZmZzZXRIZWlnaHQJAQIhPQIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BBwkAZAIJAGkCCQBlAgUGaGVpZ2h0BRJwZXJpb2RPZmZzZXRIZWlnaHQFDHBlcmlvZExlbmd0aAUOcGVyaW9kT2Zmc2V0SWQJAJYDAQkAzAgCAAAJAMwIAgkAZQIFDnBlcmlvZE9mZnNldElkAAEFA25pbAATY3VycmVudFBlcmlvZEhlaWdodAkAZAIFEnBlcmlvZE9mZnNldEhlaWdodAkAaAIJAGUCBQ9jdXJyZW50UGVyaW9kSWQFDnBlcmlvZE9mZnNldElkBQxwZXJpb2RMZW5ndGgAEG5leHRQZXJpb2RIZWlnaHQJAGQCBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQxwZXJpb2RMZW5ndGgAFW1pZ3JhdGlvblBlcmlvZEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRJrZXlNaWdyYXRpb25QZXJpb2QJAGQCBQZoZWlnaHQAAQESa2V5TGVhc2luZ05vZGVEYXRhAQtub2RlQWRkcmVzcwkAuQkCCQDMCAICAiVzCQDMCAIFC25vZGVBZGRyZXNzBQNuaWwFA1NFUAEWa2V5VXNlckxlYXNpbmdOb2RlRGF0YQILdXNlckFkZHJlc3MLbm9kZUFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAIFC25vZGVBZGRyZXNzCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEOa2V5VXNlclRvQ2xhaW0BC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgd0b0NsYWltCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAESa2V5VXNlclRvdGFsTG9ja2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIPdXNlclRvdGFsTG9ja2VkCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEWa2V5Tm9kZUxlYXNpbmdCeUhlaWdodAELbm9kZUFkZHJlc3MJALkJAgkAzAgCAgQlcyVkCQDMCAIFC25vZGVBZGRyZXNzCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwFA1NFUAEWa2V5VXNlckxlYXNpbmdCeUhlaWdodAILbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQAA1hc3NldElkU3RyaW5nCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCmtleUFzc2V0SWQCBVdBVkVTAAxhc3NldElkQnl0ZXMDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwAMYWRtaW5MaXN0UmF3CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUMa2V5QWRtaW5MaXN0AgAFA1NFUAALaXNGb3JjZVN0b3AJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMa2V5Rm9yY2VTdG9wBwEHaXNBZG1pbgEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIFDGFkbWluTGlzdFJhdwUHYWRkcmVzcwEOaXNWYWxpZEFkZHJlc3MBB2FkZHJlc3MEByRtYXRjaDAJAKYIAQUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgcBE2dldExlYXNpbmdOb2RlRW50cnkDC25vZGVBZGRyZXNzDWN1cnJlbnRMZWFzZWQKbmV4dExlYXNlZAQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQ1jdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCm5leHRMZWFzZWQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQESa2V5TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzBBhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBEmtleUxlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBAckbWF0Y2gwBRhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQRbm9kZUN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBBFub2RlQ3VycmVudExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIEDm5vZGVOZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQObm9kZU5leHRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwMJAGYCBQ5ub2RlTmV4dFBlcmlvZAUGaGVpZ2h0BgMJAAACBQ5ub2RlTmV4dFBlcmlvZAD///////////8BCQBmAgUVbWlncmF0aW9uUGVyaW9kSGVpZ2h0BQZoZWlnaHQHCQCUCgIFEW5vZGVDdXJyZW50TGVhc2VkBQ5ub2RlTmV4dExlYXNlZAkAlAoCBQ5ub2RlTmV4dExlYXNlZAUObm9kZU5leHRMZWFzZWQJAJQKAgAAAAABE2dldFVzZXJMZWFzaW5nRW50cnkEC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzEXVzZXJDdXJyZW50TGVhc2VkDnVzZXJOZXh0TGVhc2VkBAt2YWx1ZVN0cmluZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFEXVzZXJDdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFDnVzZXJOZXh0TGVhc2VkBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBFmtleVVzZXJMZWFzaW5nTm9kZURhdGECBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRVc2VyTGVhc2luZ0RhdGECC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBBhsZWFzaW5nVXNlckRhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBFmtleVVzZXJMZWFzaW5nTm9kZURhdGECBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MEByRtYXRjaDAFGGxlYXNpbmdVc2VyRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBBF1c2VyQ3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEEXVzZXJDdXJyZW50TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAgQOdXNlck5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBA51c2VyTmV4dExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDAwkAZgIFDnVzZXJOZXh0UGVyaW9kBQZoZWlnaHQGAwkAAAIFDnVzZXJOZXh0UGVyaW9kAP///////////wEJAGYCBRVtaWdyYXRpb25QZXJpb2RIZWlnaHQFBmhlaWdodAcJAJQKAgURdXNlckN1cnJlbnRMZWFzZWQFDnVzZXJOZXh0TGVhc2VkCQCUCgIFDnVzZXJOZXh0TGVhc2VkBQ51c2VyTmV4dExlYXNlZAkAlAoCAAAAAAETZ2V0VXNlclRvQ2xhaW1FbnRyeQMLdXNlckFkZHJlc3MHdG9DbGFpbQh0b1VubG9jawQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQd0b0NsYWltCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCHRvVW5sb2NrBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MFC3ZhbHVlU3RyaW5nARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBC3VzZXJBZGRyZXNzBBh1c2VyVG9DbGFpbURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MEByRtYXRjaDAFGHVzZXJUb0NsYWltRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBA1jdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQHdG9DbGFpbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIECm5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBAh0b1VubG9jawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDCQBmAgUKbmV4dFBlcmlvZAUGaGVpZ2h0CQCUCgIFB3RvQ2xhaW0FCHRvVW5sb2NrCQCUCgIJAGQCBQd0b0NsYWltBQh0b1VubG9jawAACQCUCgIAAAAAARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQILdXNlckFkZHJlc3MPdXNlclRvdGFsTG9ja2VkCQEMSW50ZWdlckVudHJ5AgkBEmtleVVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzBQ91c2VyVG90YWxMb2NrZWQBEmdldFVzZXJUb3RhbExvY2tlZAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBEmtleVVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzAAABEWdldFVuc3Rha2VBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcw11bnN0YWtlQW1vdW50BAskdDA2MzAwNjM3MwkBEmdldExlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBBFub2RlQ3VycmVudExlYXNlZAgFCyR0MDYzMDA2MzczAl8xBA5ub2RlTmV4dExlYXNlZAgFCyR0MDYzMDA2MzczAl8yBAskdDA2Mzc4NjQ2NAkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQRdXNlckN1cnJlbnRMZWFzZWQIBQskdDA2Mzc4NjQ2NAJfMQQOdXNlck5leHRMZWFzZWQIBQskdDA2Mzc4NjQ2NAJfMgQGY2hlY2tzCQDMCAIDCQEBIQEFC2lzRm9yY2VTdG9wBgkBCHRocm93RXJyAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGYCBQ11bnN0YWtlQW1vdW50AAAGCQEIdGhyb3dFcnIBAid1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAGcCBQ51c2VyTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAYJAQh0aHJvd0VycgECOXVuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHVzZXIgc3Rha2VkIGFtb3VudAkAzAgCAwkAZwIFDm5vZGVOZXh0TGVhc2VkBQ11bnN0YWtlQW1vdW50BgkBCHRocm93RXJyAQI5dW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGxlc3Mgb3IgZXF1YWwgbm9kZSBzdGFrZWQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQtub2RlQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQtub2RlQWRkcmVzcwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEEG5ld05vZGVOZXh0TGVhc2UJAGUCBQ5ub2RlTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAQRbmV3VXNlck5leHRMZWFzZWQJAGUCBQ51c2VyTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAQLJHQwNzI3NzczMzcJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFCyR0MDcyNzc3MzM3Al8xBAh0b1VubG9jawgFCyR0MDcyNzc3MzM3Al8yBAtuZXdUb1VubG9jawkAZAIFCHRvVW5sb2NrBQ11bnN0YWtlQW1vdW50BA91c2VyVG90YWxMb2NrZWQJARJnZXRVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwQSbmV3VXNlclRvdGFsTG9ja2VkCQBlAgUPdXNlclRvdGFsTG9ja2VkBQ11bnN0YWtlQW1vdW50CQDMCAIJARNnZXRMZWFzaW5nTm9kZUVudHJ5AwULbm9kZUFkZHJlc3MFEW5vZGVDdXJyZW50TGVhc2VkBRBuZXdOb2RlTmV4dExlYXNlCQDMCAIJARNnZXRVc2VyTGVhc2luZ0VudHJ5BAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRF1c2VyQ3VycmVudExlYXNlZAURbmV3VXNlck5leHRMZWFzZWQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUHdG9DbGFpbQULbmV3VG9VbmxvY2sJAMwIAgkBF2dldFVzZXJUb3RhbExvY2tlZEVudHJ5AgULdXNlckFkZHJlc3MFEm5ld1VzZXJUb3RhbExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5vZGVMZWFzaW5nQnlIZWlnaHQBBQtub2RlQWRkcmVzcwUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMZWFzaW5nQnlIZWlnaHQCBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEW5ld1VzZXJOZXh0TGVhc2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgt1c2VyQWRkcmVzcwtjbGFpbUFtb3VudAQLJHQwODA2NjgxMjYJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFCyR0MDgwNjY4MTI2Al8xBAh0b1VubG9jawgFCyR0MDgwNjY4MTI2Al8yBAZjaGVja3MJAMwIAgMJAQEhAQULaXNGb3JjZVN0b3AGCQEIdGhyb3dFcnIBAh1jb250cmFjdCBpcyB0ZW1wb3Jhcnkgc3RvcHBlZAkAzAgCAwkAZgIFC2NsYWltQW1vdW50AAAGCQEIdGhyb3dFcnIBAiVjbGFpbSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUHdG9DbGFpbQULY2xhaW1BbW91bnQGCQEIdGhyb3dFcnIBAjRjbGFpbSBhbW91bnQgc2hvdWxkIGJlIGxlc3Mgb3IgZXF1YWwgdW5sb2NrZWQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECm5ld1RvQ2xhaW0JAGUCBQd0b0NsYWltBQtjbGFpbUFtb3VudAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQpuZXdUb0NsYWltBQh0b1VubG9jawkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQt1c2VyQWRkcmVzcwULY2xhaW1BbW91bnQFDGFzc2V0SWRCeXRlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9nZXRTdGFrZUFjdGlvbnMEC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzEXVzZXJMZWFzaW5nQW1vdW50AWkECyR0MDg4ODc4OTQ3CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQskdDA4ODg3ODk0NwJfMQQIdG9VbmxvY2sIBQskdDA4ODg3ODk0NwJfMgQNcGF5bWVudEFtb3VudAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAAAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECWF2YWlsYWJsZQkAZAIJAGQCBQh0b1VubG9jawUHdG9DbGFpbQUNcGF5bWVudEFtb3VudAQGY2hlY2tzCQDMCAIDCQEBIQEFC2lzRm9yY2VTdG9wBgkBCHRocm93RXJyAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGcCAAEJAJADAQgFAWkIcGF5bWVudHMGCQEIdGhyb3dFcnIBAhFtYXhpbXVtIDEgcGF5bWVudAkAzAgCAwMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAGCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIacGF5bWVudCBhc3NldElkIHNob3VsZCBiZToJAMwIAgUNYXNzZXRJZFN0cmluZwUDbmlsAgEgCQDMCAIDCQBmAgURdXNlckxlYXNpbmdBbW91bnQAAAYJAQh0aHJvd0VycgECH2Ftb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAGcCBQlhdmFpbGFibGUFEXVzZXJMZWFzaW5nQW1vdW50BgkBCHRocm93RXJyAQI7YW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIChwYXltZW50ICsgYXZhaWxhYmxlKSBhbW91bnQJAMwIAgMJAGcCBRF1c2VyTGVhc2luZ0Ftb3VudAUNcGF5bWVudEFtb3VudAYJAAIBAjBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgb3IgZXF1YWwgcGF5bWVudCBhbW91bnQJAMwIAgMJAQ5pc1ZhbGlkQWRkcmVzcwEFC25vZGVBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGm5vZGUgYWRkcmVzcyBpcyBub3QgdmFsaWQ6CQDMCAIFC25vZGVBZGRyZXNzBQNuaWwCASAJAMwIAgMJAQ5pc1ZhbGlkQWRkcmVzcwEFC3VzZXJBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnVzZXIgYWRkcmVzcyBpcyBub3QgdmFsaWQ6CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwCASAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQMJHQwOTk5MzEwMDY2CQESZ2V0TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEEW5vZGVDdXJyZW50TGVhc2VkCAUMJHQwOTk5MzEwMDY2Al8xBA5ub2RlTmV4dExlYXNlZAgFDCR0MDk5OTMxMDA2NgJfMgQQbmV3Tm9kZU5leHRMZWFzZQkAZAIFDm5vZGVOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQNJHQwMTAxMzQxMDIyMAkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQRdXNlckN1cnJlbnRMZWFzZWQIBQ0kdDAxMDEzNDEwMjIwAl8xBA51c2VyTmV4dExlYXNlZAgFDSR0MDEwMTM0MTAyMjACXzIEEW5ld1VzZXJOZXh0TGVhc2VkCQBkAgUOdXNlck5leHRMZWFzZWQFEXVzZXJMZWFzaW5nQW1vdW50BBJmcm9tVW5sb2NrZWRBbW91bnQJAGUCBRF1c2VyTGVhc2luZ0Ftb3VudAUNcGF5bWVudEFtb3VudAQLbmV3VG9VbmxvY2sJAJYDAQkAzAgCAAAJAMwIAgkAZQIFCHRvVW5sb2NrBRJmcm9tVW5sb2NrZWRBbW91bnQFA25pbAQKbmV3VG9DbGFpbQkAlwMBCQDMCAIFB3RvQ2xhaW0JAMwIAgkAZAIFB3RvQ2xhaW0JAGUCBQh0b1VubG9jawUSZnJvbVVubG9ja2VkQW1vdW50BQNuaWwED3VzZXJUb3RhbExvY2tlZAkBEmdldFVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzBBJuZXdVc2VyVG90YWxMb2NrZWQJAGQCBQ91c2VyVG90YWxMb2NrZWQFEXVzZXJMZWFzaW5nQW1vdW50CQDMCAIJARNnZXRMZWFzaW5nTm9kZUVudHJ5AwULbm9kZUFkZHJlc3MFEW5vZGVDdXJyZW50TGVhc2VkBRBuZXdOb2RlTmV4dExlYXNlCQDMCAIJARNnZXRVc2VyTGVhc2luZ0VudHJ5BAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRF1c2VyQ3VycmVudExlYXNlZAURbmV3VXNlck5leHRMZWFzZWQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQULbmV3VG9VbmxvY2sJAMwIAgkBF2dldFVzZXJUb3RhbExvY2tlZEVudHJ5AgULdXNlckFkZHJlc3MFEm5ld1VzZXJUb3RhbExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5vZGVMZWFzaW5nQnlIZWlnaHQBBQtub2RlQWRkcmVzcwUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMZWFzaW5nQnlIZWlnaHQCBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEW5ld1VzZXJOZXh0TGVhc2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGmdldFN0YWtlRnJvbVBheW1lbnRBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwFpBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAiBwYXltZW50IHNpemUgc2hvdWxkIGJlIGV4YWN0bHkgMQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEPZ2V0U3Rha2VBY3Rpb25zBAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEcZ2V0U2V0TmV3UGVyaW9kTGVuZ3RoQWN0aW9ucwEPbmV3UGVyaW9kTGVuZ3RoBAVjaGVjawkAzAgCAwkAZgIFD25ld1BlcmlvZExlbmd0aAAABgkBCHRocm93RXJyAQImcGVyaW9kIGxlbmd0aCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleVBlcmlvZExlbmd0aAUPbmV3UGVyaW9kTGVuZ3RoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlQZXJpb2RPZmZzZXRJZAkAZAIFD2N1cnJlbnRQZXJpb2RJZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleVBlcmlvZExlbmd0aAUPbmV3UGVyaW9kTGVuZ3RoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAWkBEnNldE5ld1BlcmlvZExlbmd0aAEPbmV3UGVyaW9kTGVuZ3RoBAZjaGVja3MJAMwIAgMJAQdpc0FkbWluAQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhpjYWxsZXIgaXMgbm90IGluIGFkbWluTGlzdAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEcZ2V0U2V0TmV3UGVyaW9kTGVuZ3RoQWN0aW9ucwEFD25ld1BlcmlvZExlbmd0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBzZXRGb3JjZVN0b3BGbGFnAQRzdG9wBAVjaGVjawkAzAgCAwkBB2lzQWRtaW4BCQClCAEIBQFpBmNhbGxlcgYJAQh0aHJvd0VycgECFmNhbGxlciBpcyBub3QgYW4gYWRtaW4FA25pbAMJAAACBQVjaGVjawUFY2hlY2sJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDGtleUZvcmNlU3RvcAUEc3RvcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2dldE5vZGVEYXRhUkVBRE9OTFkBC25vZGVBZGRyZXNzBA0kdDAxMjY0ODEyNzEyCQESZ2V0TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEDGN1cnJlbnRMZWFzZQgFDSR0MDEyNjQ4MTI3MTICXzEECm5leHRMZWFzZWQIBQ0kdDAxMjY0ODEyNzEyAl8yCQCUCgIFA25pbAkAlwoFBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQxjdXJyZW50TGVhc2UFEG5leHRQZXJpb2RIZWlnaHQFCm5leHRMZWFzZWQFBmhlaWdodAFpARNnZXRVc2VyRGF0YVJFQURPTkxZAQt1c2VyQWRkcmVzcwQNJHQwMTMwNzUxMzEzNQkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMTMwNzUxMzEzNQJfMQQIdG9VbmxvY2sIBQ0kdDAxMzA3NTEzMTM1Al8yBA91c2VyVG90YWxMb2NrZWQJARJnZXRVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwkAlAoCBQNuaWwJAJgKBgUTY3VycmVudFBlcmlvZEhlaWdodAUHdG9DbGFpbQUQbmV4dFBlcmlvZEhlaWdodAUIdG9VbmxvY2sFD3VzZXJUb3RhbExvY2tlZAUGaGVpZ2h0AWkBDmxlYXNlQnlBZGRyZXNzAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwkBGmdldFN0YWtlRnJvbVBheW1lbnRBY3Rpb25zAwULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQFpAWkBBWxlYXNlAQtub2RlQWRkcmVzcwQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEaZ2V0U3Rha2VGcm9tUGF5bWVudEFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFAWkBaQEPbGVhc2VGcm9tTG9ja2VkAgtub2RlQWRkcmVzcwZhbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0YWtlQWN0aW9ucwQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUGYW1vdW50BQFpAWkBC2NhbmNlbExlYXNlAgtub2RlQWRkcmVzcwZhbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBEWdldFVuc3Rha2VBY3Rpb25zAwULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQZhbW91bnQBaQEFY2xhaW0BBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEXZ2V0Q2xhaW1VbmxvY2tlZEFjdGlvbnMCBQt1c2VyQWRkcmVzcwUGYW1vdW50AWkBCGNsYWltQWxsAAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNDE0OTE0MjA5CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxNDE0OTE0MjA5Al8xBAh0b1VubG9jawgFDSR0MDE0MTQ5MTQyMDkCXzIEBmNoZWNrcwkAzAgCAwkAZgIFB3RvQ2xhaW0AAAYJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0FA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgULdXNlckFkZHJlc3MFB3RvQ2xhaW0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AaikWrg==", "height": 2983018, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4QGBpEr1MLNb9nuazfRv9SPBRzZKUCdU3UwUCYA7JvAo Next: EfNQCoTHm9YAP7VzEjHtoExBcREZSCS4yEznwcr9z6pu Diff:
OldNewDifferences
2020
2121 let j = makeString(["%s", "periodLength"], b)
2222
23-let k = valueOrElse(getInteger(this, h), 0)
23+let k = makeString(["%s", "migrationPeriod"], b)
2424
25-let l = valueOrElse(getInteger(this, j), 10000)
25+let l = valueOrElse(getInteger(this, h), 0)
2626
27-let m = valueOrElse(getInteger(this, i), -1)
27+let m = valueOrElse(getInteger(this, j), 10000)
2828
29-let n = if (if ((height > m))
30- then (m != -1)
29+let n = valueOrElse(getInteger(this, i), -1)
30+
31+let o = if (if ((height > n))
32+ then (n != -1)
3133 else false)
32- then (((height - m) / l) + k)
33- else max([0, (k - 1)])
34+ then (((height - n) / m) + l)
35+ else max([0, (l - 1)])
3436
35-let o = (m + ((n - k) * l))
37+let p = (n + ((o - l) * m))
3638
37-let p = (o + l)
39+let q = (p + m)
3840
39-func q (r) = makeString(["%s", r], b)
41+let r = valueOrElse(getInteger(this, k), (height + 1))
42+
43+func s (t) = makeString(["%s", t], b)
4044
4145
42-func s (t,r) = makeString(["%s%s", r, t], b)
46+func u (v,t) = makeString(["%s%s", t, v], b)
4347
4448
45-func u (t) = makeString(["%s%s", "toClaim", t], b)
49+func w (v) = makeString(["%s%s", "toClaim", v], b)
4650
4751
48-func v (t) = makeString(["%s%s", "userTotalLocked", t], b)
52+func x (v) = makeString(["%s%s", "userTotalLocked", v], b)
4953
5054
51-func w (r) = makeString(["%s%d", r, toString(height)], b)
55+func y (t) = makeString(["%s%d", t, toString(height)], b)
5256
5357
54-func x (r,t) = makeString(["%s%s%d", r, t, toString(height)], b)
58+func z (t,v) = makeString(["%s%s%d", t, v, toString(height)], b)
5559
5660
57-let y = valueOrElse(getString(this, e), "WAVES")
61+let A = valueOrElse(getString(this, e), "WAVES")
5862
59-let z = if ((y == "WAVES"))
63+let B = if ((A == "WAVES"))
6064 then unit
61- else fromBase58String(y)
65+ else fromBase58String(A)
6266
63-let A = split(valueOrElse(getString(this, f), ""), b)
67+let C = split(valueOrElse(getString(this, f), ""), b)
6468
65-let B = valueOrElse(getBoolean(this, g), false)
69+let D = valueOrElse(getBoolean(this, g), false)
6670
67-func C (D) = containsElement(A, D)
71+func E (F) = containsElement(C, F)
6872
6973
70-func E (D) = {
71- let F = addressFromString(D)
72- if ($isInstanceOf(F, "Address"))
74+func G (F) = {
75+ let H = addressFromString(F)
76+ if ($isInstanceOf(H, "Address"))
7377 then {
74- let G = F
78+ let I = H
7579 true
7680 }
7781 else false
7882 }
7983
8084
81-func H (r,I,J) = {
82- let K = makeString(["%d%d%d%d", toString(o), toString(I), toString(p), toString(J)], b)
83- StringEntry(q(r), K)
85+func J (t,K,L) = {
86+ let M = makeString(["%d%d%d%d", toString(p), toString(K), toString(q), toString(L)], b)
87+ StringEntry(s(t), M)
8488 }
8589
8690
87-func L (r) = {
88- let M = getString(this, q(r))
89- let F = M
90- if ($isInstanceOf(F, "String"))
91+func N (t) = {
92+ let O = getString(this, s(t))
93+ let H = O
94+ if ($isInstanceOf(H, "String"))
9195 then {
92- let N = F
93- let O = split(N, b)
94- let P = parseIntValue(O[1])
95- let Q = parseIntValue(O[2])
96- let R = parseIntValue(O[3])
97- let S = parseIntValue(O[4])
98- if ((R > height))
99- then $Tuple2(Q, S)
100- else $Tuple2(S, S)
96+ let P = H
97+ let Q = split(P, b)
98+ let R = parseIntValue(Q[1])
99+ let S = parseIntValue(Q[2])
100+ let T = parseIntValue(Q[3])
101+ let U = parseIntValue(Q[4])
102+ if (if ((T > height))
103+ then true
104+ else if ((T == -1))
105+ then (r > height)
106+ else false)
107+ then $Tuple2(S, U)
108+ else $Tuple2(U, U)
101109 }
102110 else $Tuple2(0, 0)
103111 }
104112
105113
106-func T (r,t,U,V) = {
107- let K = makeString(["%d%d%d%d", toString(o), toString(U), toString(p), toString(V)], b)
108- StringEntry(s(t, r), K)
114+func V (t,v,W,X) = {
115+ let M = makeString(["%d%d%d%d", toString(p), toString(W), toString(q), toString(X)], b)
116+ StringEntry(u(v, t), M)
109117 }
110118
111119
112-func W (r,t) = {
113- let X = getString(this, s(t, r))
114- let F = X
115- if ($isInstanceOf(F, "String"))
120+func Y (t,v) = {
121+ let Z = getString(this, u(v, t))
122+ let H = Z
123+ if ($isInstanceOf(H, "String"))
116124 then {
117- let N = F
118- let O = split(N, b)
119- let Y = parseIntValue(O[1])
120- let U = parseIntValue(O[2])
121- let Z = parseIntValue(O[3])
122- let V = parseIntValue(O[4])
123- if ((Z > height))
124- then $Tuple2(U, V)
125- else $Tuple2(V, V)
125+ let P = H
126+ let Q = split(P, b)
127+ let aa = parseIntValue(Q[1])
128+ let W = parseIntValue(Q[2])
129+ let ab = parseIntValue(Q[3])
130+ let X = parseIntValue(Q[4])
131+ if (if ((ab > height))
132+ then true
133+ else if ((ab == -1))
134+ then (r > height)
135+ else false)
136+ then $Tuple2(W, X)
137+ else $Tuple2(X, X)
126138 }
127139 else $Tuple2(0, 0)
128140 }
129141
130142
131-func aa (t,ab,ac) = {
132- let K = makeString(["%d%d%d%d", toString(o), toString(ab), toString(p), toString(ac)], b)
133- StringEntry(u(t), K)
143+func ac (v,ad,ae) = {
144+ let M = makeString(["%d%d%d%d", toString(p), toString(ad), toString(q), toString(ae)], b)
145+ StringEntry(w(v), M)
134146 }
135147
136148
137-func ad (t) = {
138- let ae = getString(this, u(t))
139- let F = ae
140- if ($isInstanceOf(F, "String"))
149+func af (v) = {
150+ let ag = getString(this, w(v))
151+ let H = ag
152+ if ($isInstanceOf(H, "String"))
141153 then {
142- let N = F
143- let O = split(N, b)
144- let af = parseIntValue(O[1])
145- let ab = parseIntValue(O[2])
146- let ag = parseIntValue(O[3])
147- let ac = parseIntValue(O[4])
148- if ((ag > height))
149- then $Tuple2(ab, ac)
150- else $Tuple2((ab + ac), 0)
154+ let P = H
155+ let Q = split(P, b)
156+ let ah = parseIntValue(Q[1])
157+ let ad = parseIntValue(Q[2])
158+ let ai = parseIntValue(Q[3])
159+ let ae = parseIntValue(Q[4])
160+ if ((ai > height))
161+ then $Tuple2(ad, ae)
162+ else $Tuple2((ad + ae), 0)
151163 }
152164 else $Tuple2(0, 0)
153165 }
154166
155167
156-func ah (t,ai) = IntegerEntry(v(t), ai)
168+func aj (v,ak) = IntegerEntry(x(v), ak)
157169
158170
159-func aj (t) = valueOrElse(getInteger(this, v(t)), 0)
171+func al (v) = valueOrElse(getInteger(this, x(v)), 0)
160172
161173
162-func ak (r,t,al) = {
163- let am = [if (!(B))
174+func am (t,v,an) = {
175+ let ao = N(t)
176+ let S = ao._1
177+ let U = ao._2
178+ let ap = Y(t, v)
179+ let W = ap._1
180+ let X = ap._2
181+ let aq = [if (!(D))
164182 then true
165- else c("contract is temporary stopped"), if ((size(al.payments) == 1))
183+ else c("contract is temporary stopped"), if ((an > 0))
166184 then true
167- else c("payment size should be exactly 1"), if ((al.payments[0].assetId == z))
185+ else c("unstake amount should be greater than 0"), if ((X >= an))
168186 then true
169- else c(makeString(["payment assetId should be:", y], " ")), if (E(r))
187+ else c("unstake amount should be less or equal user staked amount"), if ((U >= an))
170188 then true
171- else c(makeString(["node address is not valid:", r], " ")), if (E(t))
189+ else c("unstake amount should be less or equal node staked amount"), if (G(t))
172190 then true
173- else c(makeString(["user address is not valid:", t], " "))]
174- if ((am == am))
191+ else c(makeString(["node address is not valid:", t], " ")), if (G(v))
192+ then true
193+ else c(makeString(["user address is not valid:", v], " "))]
194+ if ((aq == aq))
175195 then {
176- let an = al.payments[0].amount
177- let ao = L(r)
178- let Q = ao._1
179- let S = ao._2
180- let ap = (S + an)
181- let aq = W(r, t)
182- let U = aq._1
183- let V = aq._2
184- let ar = (V + an)
185- let ai = aj(t)
186- let as = (ai + an)
187-[H(r, Q, ap), T(r, t, U, ar), ah(t, as), IntegerEntry(w(r), ap), IntegerEntry(x(r, t), ar)]
196+ let ar = (U - an)
197+ let as = (X - an)
198+ let at = af(v)
199+ let ad = at._1
200+ let ae = at._2
201+ let au = (ae + an)
202+ let ak = al(v)
203+ let av = (ak - an)
204+[J(t, S, ar), V(t, v, W, as), ac(v, ad, au), aj(v, av), IntegerEntry(y(t), ar), IntegerEntry(z(t, v), as)]
188205 }
189206 else throw("Strict value is not equal to itself.")
190207 }
191208
192209
193-func at (r,t,au) = {
194- let av = L(r)
195- let Q = av._1
196- let S = av._2
197- let aw = W(r, t)
198- let U = aw._1
199- let V = aw._2
200- let am = [if (!(B))
210+func aw (v,ax) = {
211+ let ay = af(v)
212+ let ad = ay._1
213+ let ae = ay._2
214+ let aq = [if (!(D))
201215 then true
202- else c("contract is temporary stopped"), if ((au > 0))
216+ else c("contract is temporary stopped"), if ((ax > 0))
203217 then true
204- else c("unstake amount should be greater than 0"), if ((V >= au))
218+ else c("claim amount should be greater than 0"), if ((ad >= ax))
205219 then true
206- else c("unstake amount should be less or equal user staked amount"), if ((S >= au))
220+ else c("claim amount should be less or equal unlocked amount"), if (G(v))
207221 then true
208- else c("unstake amount should be less or equal node staked amount"), if (E(r))
209- then true
210- else c(makeString(["node address is not valid:", r], " ")), if (E(t))
211- then true
212- else c(makeString(["user address is not valid:", t], " "))]
213- if ((am == am))
222+ else c(makeString(["user address is not valid:", v], " "))]
223+ if ((aq == aq))
214224 then {
215- let ap = (S - au)
216- let ar = (V - au)
217- let ax = ad(t)
218- let ab = ax._1
219- let ac = ax._2
220- let ay = (ac + au)
221- let ai = aj(t)
222- let as = (ai - au)
223-[H(r, Q, ap), T(r, t, U, ar), aa(t, ab, ay), ah(t, as), IntegerEntry(w(r), ap), IntegerEntry(x(r, t), ar)]
225+ let az = (ad - ax)
226+[ac(v, az, ae), ScriptTransfer(addressFromStringValue(v), ax, B)]
224227 }
225228 else throw("Strict value is not equal to itself.")
226229 }
227230
228231
229-func az (t,aA) = {
230- let aB = ad(t)
231- let ab = aB._1
232- let ac = aB._2
233- let am = [if (!(B))
232+func aA (t,v,aB,aC) = {
233+ let aD = af(v)
234+ let ad = aD._1
235+ let ae = aD._2
236+ let aE = if ((size(aC.payments) == 0))
237+ then 0
238+ else aC.payments[0].amount
239+ let aF = ((ae + ad) + aE)
240+ let aq = [if (!(D))
234241 then true
235- else c("contract is temporary stopped"), if ((aA > 0))
242+ else c("contract is temporary stopped"), if ((1 >= size(aC.payments)))
236243 then true
237- else c("claim amount should be greater than 0"), if ((ab >= aA))
244+ else c("maximum 1 payment"), if (if ((size(aC.payments) == 0))
238245 then true
239- else c("claim amount should be less or equal unlocked amount"), if (E(t))
246+ else (aC.payments[0].assetId == B))
240247 then true
241- else c(makeString(["user address is not valid:", t], " "))]
242- if ((am == am))
248+ else c(makeString(["payment assetId should be:", A], " ")), if ((aB > 0))
249+ then true
250+ else c("amount should be greater than 0"), if ((aF >= aB))
251+ then true
252+ else c("amount should be less or equal (payment + available) amount"), if ((aB >= aE))
253+ then true
254+ else throw("amount should be greater or equal payment amount"), if (G(t))
255+ then true
256+ else c(makeString(["node address is not valid:", t], " ")), if (G(v))
257+ then true
258+ else c(makeString(["user address is not valid:", v], " "))]
259+ if ((aq == aq))
243260 then {
244- let aC = (ab - aA)
245-[aa(t, aC, ac), ScriptTransfer(addressFromStringValue(t), aA, z)]
261+ let aG = N(t)
262+ let S = aG._1
263+ let U = aG._2
264+ let ar = (U + aB)
265+ let aH = Y(t, v)
266+ let W = aH._1
267+ let X = aH._2
268+ let as = (X + aB)
269+ let aI = (aB - aE)
270+ let au = max([0, (ae - aI)])
271+ let az = min([ad, (ad + (ae - aI))])
272+ let ak = al(v)
273+ let av = (ak + aB)
274+[J(t, S, ar), V(t, v, W, as), ac(v, az, au), aj(v, av), IntegerEntry(y(t), ar), IntegerEntry(z(t, v), as)]
246275 }
247276 else throw("Strict value is not equal to itself.")
248277 }
249278
250279
251-func aD (r,t,an,al) = {
252- let aE = ad(t)
253- let ab = aE._1
254- let ac = aE._2
255- let aF = if ((size(al.payments) == 0))
256- then 0
257- else al.payments[0].amount
258- let aG = ((ac + ab) + aF)
259- let am = [if (!(B))
280+func aJ (t,v,aC) = {
281+ let aq = [if ((size(aC.payments) == 1))
260282 then true
261- else c("contract is temporary stopped"), if ((1 >= size(al.payments)))
262- then true
263- else c("maximum 1 payment"), if (if ((size(al.payments) == 0))
264- then true
265- else (al.payments[0].assetId == z))
266- then true
267- else c(makeString(["payment assetId should be:", y], " ")), if ((an > 0))
268- then true
269- else c("amount should be greater than 0"), if ((aG >= an))
270- then true
271- else c("amount should be less or equal (payment + available) amount"), if ((an >= aF))
272- then true
273- else throw("amount should be greater or equal payment amount"), if (E(r))
274- then true
275- else c(makeString(["node address is not valid:", r], " ")), if (E(t))
276- then true
277- else c(makeString(["user address is not valid:", t], " "))]
278- if ((am == am))
279- then {
280- let aH = L(r)
281- let Q = aH._1
282- let S = aH._2
283- let ap = (S + an)
284- let aI = W(r, t)
285- let U = aI._1
286- let V = aI._2
287- let ar = (V + an)
288- let aJ = (an - aF)
289- let ay = max([0, (ac - aJ)])
290- let aC = min([ab, (ab + (ac - aJ))])
291- let ai = aj(t)
292- let as = (ai + an)
293-[H(r, Q, ap), T(r, t, U, ar), aa(t, aC, ay), ah(t, as), IntegerEntry(w(r), ap), IntegerEntry(x(r, t), ar)]
294- }
283+ else c("payment size should be exactly 1")]
284+ if ((aq == aq))
285+ then aA(t, v, aC.payments[0].amount, aC)
295286 else throw("Strict value is not equal to itself.")
296287 }
297288
301292 then true
302293 else c("period length should be greater than 0")]
303294 if ((aM == aM))
304- then if ((m == -1))
295+ then if ((n == -1))
305296 then [IntegerEntry(j, aL), IntegerEntry(i, height)]
306- else [IntegerEntry(h, (n + 1)), IntegerEntry(i, p), IntegerEntry(j, aL)]
297+ else [IntegerEntry(h, (o + 1)), IntegerEntry(i, q), IntegerEntry(j, aL)]
307298 else throw("Strict value is not equal to itself.")
308299 }
309300
310301
311-@Callable(al)
302+@Callable(aC)
312303 func setNewPeriodLength (aL) = {
313- let am = [if (C(toString(al.caller)))
304+ let aq = [if (E(toString(aC.caller)))
314305 then true
315306 else c("caller is not in adminList")]
316- if ((am == am))
307+ if ((aq == aq))
317308 then aK(aL)
318309 else throw("Strict value is not equal to itself.")
319310 }
320311
321312
322313
323-@Callable(al)
314+@Callable(aC)
324315 func setForceStopFlag (aN) = {
325- let aM = [if (C(toString(al.caller)))
316+ let aM = [if (E(toString(aC.caller)))
326317 then true
327318 else c("caller is not an admin")]
328319 if ((aM == aM))
332323
333324
334325
335-@Callable(al)
336-func getNodeDataREADONLY (r) = {
337- let aO = L(r)
326+@Callable(aC)
327+func getNodeDataREADONLY (t) = {
328+ let aO = N(t)
338329 let aP = aO._1
339- let J = aO._2
340- $Tuple2(nil, $Tuple5(o, aP, p, J, height))
330+ let L = aO._2
331+ $Tuple2(nil, $Tuple5(p, aP, q, L, height))
341332 }
342333
343334
344335
345-@Callable(al)
346-func getUserDataREADONLY (t) = {
347- let aQ = ad(t)
348- let ab = aQ._1
349- let ac = aQ._2
350- let ai = aj(t)
351- $Tuple2(nil, $Tuple6(o, ab, p, ac, ai, height))
336+@Callable(aC)
337+func getUserDataREADONLY (v) = {
338+ let aQ = af(v)
339+ let ad = aQ._1
340+ let ae = aQ._2
341+ let ak = al(v)
342+ $Tuple2(nil, $Tuple6(p, ad, q, ae, ak, height))
352343 }
353344
354345
355346
356-@Callable(al)
357-func leaseByAddress (r,t) = ak(r, t, al)
347+@Callable(aC)
348+func leaseByAddress (t,v) = aJ(t, v, aC)
358349
359350
360351
361-@Callable(al)
362-func lease (r) = {
363- let t = toString(al.caller)
364- ak(r, t, al)
352+@Callable(aC)
353+func lease (t) = {
354+ let v = toString(aC.caller)
355+ aJ(t, v, aC)
365356 }
366357
367358
368359
369-@Callable(al)
370-func leaseFromLocked (r,aR) = {
371- let t = toString(al.caller)
372- aD(r, t, aR, al)
360+@Callable(aC)
361+func leaseFromLocked (t,aR) = {
362+ let v = toString(aC.caller)
363+ aA(t, v, aR, aC)
373364 }
374365
375366
376367
377-@Callable(al)
378-func cancelLease (r,aR) = {
379- let t = toString(al.caller)
380- at(r, t, aR)
368+@Callable(aC)
369+func cancelLease (t,aR) = {
370+ let v = toString(aC.caller)
371+ am(t, v, aR)
381372 }
382373
383374
384375
385-@Callable(al)
376+@Callable(aC)
386377 func claim (aR) = {
387- let t = toString(al.caller)
388- az(t, aR)
378+ let v = toString(aC.caller)
379+ aw(v, aR)
389380 }
390381
391382
392383
393-@Callable(al)
384+@Callable(aC)
394385 func claimAll () = {
395- let t = toString(al.caller)
396- let aS = ad(t)
397- let ab = aS._1
398- let ac = aS._2
399- let am = [if ((ab > 0))
386+ let v = toString(aC.caller)
387+ let aS = af(v)
388+ let ad = aS._1
389+ let ae = aS._2
390+ let aq = [if ((ad > 0))
400391 then true
401392 else c("nothing to claim")]
402- if ((am == am))
403- then az(t, ab)
393+ if ((aq == aq))
394+ then aw(v, ad)
404395 else throw("Strict value is not equal to itself.")
405396 }
406397
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
88 func c (d) = throw(((a + ": ") + d))
99
1010
1111 let e = makeString(["%s", "assetId"], b)
1212
1313 let f = makeString(["%s", "adminList"], b)
1414
1515 let g = makeString(["%s", "forceStop"], b)
1616
1717 let h = makeString(["%s", "offsetId"], b)
1818
1919 let i = makeString(["%s", "offsetHeight"], b)
2020
2121 let j = makeString(["%s", "periodLength"], b)
2222
23-let k = valueOrElse(getInteger(this, h), 0)
23+let k = makeString(["%s", "migrationPeriod"], b)
2424
25-let l = valueOrElse(getInteger(this, j), 10000)
25+let l = valueOrElse(getInteger(this, h), 0)
2626
27-let m = valueOrElse(getInteger(this, i), -1)
27+let m = valueOrElse(getInteger(this, j), 10000)
2828
29-let n = if (if ((height > m))
30- then (m != -1)
29+let n = valueOrElse(getInteger(this, i), -1)
30+
31+let o = if (if ((height > n))
32+ then (n != -1)
3133 else false)
32- then (((height - m) / l) + k)
33- else max([0, (k - 1)])
34+ then (((height - n) / m) + l)
35+ else max([0, (l - 1)])
3436
35-let o = (m + ((n - k) * l))
37+let p = (n + ((o - l) * m))
3638
37-let p = (o + l)
39+let q = (p + m)
3840
39-func q (r) = makeString(["%s", r], b)
41+let r = valueOrElse(getInteger(this, k), (height + 1))
42+
43+func s (t) = makeString(["%s", t], b)
4044
4145
42-func s (t,r) = makeString(["%s%s", r, t], b)
46+func u (v,t) = makeString(["%s%s", t, v], b)
4347
4448
45-func u (t) = makeString(["%s%s", "toClaim", t], b)
49+func w (v) = makeString(["%s%s", "toClaim", v], b)
4650
4751
48-func v (t) = makeString(["%s%s", "userTotalLocked", t], b)
52+func x (v) = makeString(["%s%s", "userTotalLocked", v], b)
4953
5054
51-func w (r) = makeString(["%s%d", r, toString(height)], b)
55+func y (t) = makeString(["%s%d", t, toString(height)], b)
5256
5357
54-func x (r,t) = makeString(["%s%s%d", r, t, toString(height)], b)
58+func z (t,v) = makeString(["%s%s%d", t, v, toString(height)], b)
5559
5660
57-let y = valueOrElse(getString(this, e), "WAVES")
61+let A = valueOrElse(getString(this, e), "WAVES")
5862
59-let z = if ((y == "WAVES"))
63+let B = if ((A == "WAVES"))
6064 then unit
61- else fromBase58String(y)
65+ else fromBase58String(A)
6266
63-let A = split(valueOrElse(getString(this, f), ""), b)
67+let C = split(valueOrElse(getString(this, f), ""), b)
6468
65-let B = valueOrElse(getBoolean(this, g), false)
69+let D = valueOrElse(getBoolean(this, g), false)
6670
67-func C (D) = containsElement(A, D)
71+func E (F) = containsElement(C, F)
6872
6973
70-func E (D) = {
71- let F = addressFromString(D)
72- if ($isInstanceOf(F, "Address"))
74+func G (F) = {
75+ let H = addressFromString(F)
76+ if ($isInstanceOf(H, "Address"))
7377 then {
74- let G = F
78+ let I = H
7579 true
7680 }
7781 else false
7882 }
7983
8084
81-func H (r,I,J) = {
82- let K = makeString(["%d%d%d%d", toString(o), toString(I), toString(p), toString(J)], b)
83- StringEntry(q(r), K)
85+func J (t,K,L) = {
86+ let M = makeString(["%d%d%d%d", toString(p), toString(K), toString(q), toString(L)], b)
87+ StringEntry(s(t), M)
8488 }
8589
8690
87-func L (r) = {
88- let M = getString(this, q(r))
89- let F = M
90- if ($isInstanceOf(F, "String"))
91+func N (t) = {
92+ let O = getString(this, s(t))
93+ let H = O
94+ if ($isInstanceOf(H, "String"))
9195 then {
92- let N = F
93- let O = split(N, b)
94- let P = parseIntValue(O[1])
95- let Q = parseIntValue(O[2])
96- let R = parseIntValue(O[3])
97- let S = parseIntValue(O[4])
98- if ((R > height))
99- then $Tuple2(Q, S)
100- else $Tuple2(S, S)
96+ let P = H
97+ let Q = split(P, b)
98+ let R = parseIntValue(Q[1])
99+ let S = parseIntValue(Q[2])
100+ let T = parseIntValue(Q[3])
101+ let U = parseIntValue(Q[4])
102+ if (if ((T > height))
103+ then true
104+ else if ((T == -1))
105+ then (r > height)
106+ else false)
107+ then $Tuple2(S, U)
108+ else $Tuple2(U, U)
101109 }
102110 else $Tuple2(0, 0)
103111 }
104112
105113
106-func T (r,t,U,V) = {
107- let K = makeString(["%d%d%d%d", toString(o), toString(U), toString(p), toString(V)], b)
108- StringEntry(s(t, r), K)
114+func V (t,v,W,X) = {
115+ let M = makeString(["%d%d%d%d", toString(p), toString(W), toString(q), toString(X)], b)
116+ StringEntry(u(v, t), M)
109117 }
110118
111119
112-func W (r,t) = {
113- let X = getString(this, s(t, r))
114- let F = X
115- if ($isInstanceOf(F, "String"))
120+func Y (t,v) = {
121+ let Z = getString(this, u(v, t))
122+ let H = Z
123+ if ($isInstanceOf(H, "String"))
116124 then {
117- let N = F
118- let O = split(N, b)
119- let Y = parseIntValue(O[1])
120- let U = parseIntValue(O[2])
121- let Z = parseIntValue(O[3])
122- let V = parseIntValue(O[4])
123- if ((Z > height))
124- then $Tuple2(U, V)
125- else $Tuple2(V, V)
125+ let P = H
126+ let Q = split(P, b)
127+ let aa = parseIntValue(Q[1])
128+ let W = parseIntValue(Q[2])
129+ let ab = parseIntValue(Q[3])
130+ let X = parseIntValue(Q[4])
131+ if (if ((ab > height))
132+ then true
133+ else if ((ab == -1))
134+ then (r > height)
135+ else false)
136+ then $Tuple2(W, X)
137+ else $Tuple2(X, X)
126138 }
127139 else $Tuple2(0, 0)
128140 }
129141
130142
131-func aa (t,ab,ac) = {
132- let K = makeString(["%d%d%d%d", toString(o), toString(ab), toString(p), toString(ac)], b)
133- StringEntry(u(t), K)
143+func ac (v,ad,ae) = {
144+ let M = makeString(["%d%d%d%d", toString(p), toString(ad), toString(q), toString(ae)], b)
145+ StringEntry(w(v), M)
134146 }
135147
136148
137-func ad (t) = {
138- let ae = getString(this, u(t))
139- let F = ae
140- if ($isInstanceOf(F, "String"))
149+func af (v) = {
150+ let ag = getString(this, w(v))
151+ let H = ag
152+ if ($isInstanceOf(H, "String"))
141153 then {
142- let N = F
143- let O = split(N, b)
144- let af = parseIntValue(O[1])
145- let ab = parseIntValue(O[2])
146- let ag = parseIntValue(O[3])
147- let ac = parseIntValue(O[4])
148- if ((ag > height))
149- then $Tuple2(ab, ac)
150- else $Tuple2((ab + ac), 0)
154+ let P = H
155+ let Q = split(P, b)
156+ let ah = parseIntValue(Q[1])
157+ let ad = parseIntValue(Q[2])
158+ let ai = parseIntValue(Q[3])
159+ let ae = parseIntValue(Q[4])
160+ if ((ai > height))
161+ then $Tuple2(ad, ae)
162+ else $Tuple2((ad + ae), 0)
151163 }
152164 else $Tuple2(0, 0)
153165 }
154166
155167
156-func ah (t,ai) = IntegerEntry(v(t), ai)
168+func aj (v,ak) = IntegerEntry(x(v), ak)
157169
158170
159-func aj (t) = valueOrElse(getInteger(this, v(t)), 0)
171+func al (v) = valueOrElse(getInteger(this, x(v)), 0)
160172
161173
162-func ak (r,t,al) = {
163- let am = [if (!(B))
174+func am (t,v,an) = {
175+ let ao = N(t)
176+ let S = ao._1
177+ let U = ao._2
178+ let ap = Y(t, v)
179+ let W = ap._1
180+ let X = ap._2
181+ let aq = [if (!(D))
164182 then true
165- else c("contract is temporary stopped"), if ((size(al.payments) == 1))
183+ else c("contract is temporary stopped"), if ((an > 0))
166184 then true
167- else c("payment size should be exactly 1"), if ((al.payments[0].assetId == z))
185+ else c("unstake amount should be greater than 0"), if ((X >= an))
168186 then true
169- else c(makeString(["payment assetId should be:", y], " ")), if (E(r))
187+ else c("unstake amount should be less or equal user staked amount"), if ((U >= an))
170188 then true
171- else c(makeString(["node address is not valid:", r], " ")), if (E(t))
189+ else c("unstake amount should be less or equal node staked amount"), if (G(t))
172190 then true
173- else c(makeString(["user address is not valid:", t], " "))]
174- if ((am == am))
191+ else c(makeString(["node address is not valid:", t], " ")), if (G(v))
192+ then true
193+ else c(makeString(["user address is not valid:", v], " "))]
194+ if ((aq == aq))
175195 then {
176- let an = al.payments[0].amount
177- let ao = L(r)
178- let Q = ao._1
179- let S = ao._2
180- let ap = (S + an)
181- let aq = W(r, t)
182- let U = aq._1
183- let V = aq._2
184- let ar = (V + an)
185- let ai = aj(t)
186- let as = (ai + an)
187-[H(r, Q, ap), T(r, t, U, ar), ah(t, as), IntegerEntry(w(r), ap), IntegerEntry(x(r, t), ar)]
196+ let ar = (U - an)
197+ let as = (X - an)
198+ let at = af(v)
199+ let ad = at._1
200+ let ae = at._2
201+ let au = (ae + an)
202+ let ak = al(v)
203+ let av = (ak - an)
204+[J(t, S, ar), V(t, v, W, as), ac(v, ad, au), aj(v, av), IntegerEntry(y(t), ar), IntegerEntry(z(t, v), as)]
188205 }
189206 else throw("Strict value is not equal to itself.")
190207 }
191208
192209
193-func at (r,t,au) = {
194- let av = L(r)
195- let Q = av._1
196- let S = av._2
197- let aw = W(r, t)
198- let U = aw._1
199- let V = aw._2
200- let am = [if (!(B))
210+func aw (v,ax) = {
211+ let ay = af(v)
212+ let ad = ay._1
213+ let ae = ay._2
214+ let aq = [if (!(D))
201215 then true
202- else c("contract is temporary stopped"), if ((au > 0))
216+ else c("contract is temporary stopped"), if ((ax > 0))
203217 then true
204- else c("unstake amount should be greater than 0"), if ((V >= au))
218+ else c("claim amount should be greater than 0"), if ((ad >= ax))
205219 then true
206- else c("unstake amount should be less or equal user staked amount"), if ((S >= au))
220+ else c("claim amount should be less or equal unlocked amount"), if (G(v))
207221 then true
208- else c("unstake amount should be less or equal node staked amount"), if (E(r))
209- then true
210- else c(makeString(["node address is not valid:", r], " ")), if (E(t))
211- then true
212- else c(makeString(["user address is not valid:", t], " "))]
213- if ((am == am))
222+ else c(makeString(["user address is not valid:", v], " "))]
223+ if ((aq == aq))
214224 then {
215- let ap = (S - au)
216- let ar = (V - au)
217- let ax = ad(t)
218- let ab = ax._1
219- let ac = ax._2
220- let ay = (ac + au)
221- let ai = aj(t)
222- let as = (ai - au)
223-[H(r, Q, ap), T(r, t, U, ar), aa(t, ab, ay), ah(t, as), IntegerEntry(w(r), ap), IntegerEntry(x(r, t), ar)]
225+ let az = (ad - ax)
226+[ac(v, az, ae), ScriptTransfer(addressFromStringValue(v), ax, B)]
224227 }
225228 else throw("Strict value is not equal to itself.")
226229 }
227230
228231
229-func az (t,aA) = {
230- let aB = ad(t)
231- let ab = aB._1
232- let ac = aB._2
233- let am = [if (!(B))
232+func aA (t,v,aB,aC) = {
233+ let aD = af(v)
234+ let ad = aD._1
235+ let ae = aD._2
236+ let aE = if ((size(aC.payments) == 0))
237+ then 0
238+ else aC.payments[0].amount
239+ let aF = ((ae + ad) + aE)
240+ let aq = [if (!(D))
234241 then true
235- else c("contract is temporary stopped"), if ((aA > 0))
242+ else c("contract is temporary stopped"), if ((1 >= size(aC.payments)))
236243 then true
237- else c("claim amount should be greater than 0"), if ((ab >= aA))
244+ else c("maximum 1 payment"), if (if ((size(aC.payments) == 0))
238245 then true
239- else c("claim amount should be less or equal unlocked amount"), if (E(t))
246+ else (aC.payments[0].assetId == B))
240247 then true
241- else c(makeString(["user address is not valid:", t], " "))]
242- if ((am == am))
248+ else c(makeString(["payment assetId should be:", A], " ")), if ((aB > 0))
249+ then true
250+ else c("amount should be greater than 0"), if ((aF >= aB))
251+ then true
252+ else c("amount should be less or equal (payment + available) amount"), if ((aB >= aE))
253+ then true
254+ else throw("amount should be greater or equal payment amount"), if (G(t))
255+ then true
256+ else c(makeString(["node address is not valid:", t], " ")), if (G(v))
257+ then true
258+ else c(makeString(["user address is not valid:", v], " "))]
259+ if ((aq == aq))
243260 then {
244- let aC = (ab - aA)
245-[aa(t, aC, ac), ScriptTransfer(addressFromStringValue(t), aA, z)]
261+ let aG = N(t)
262+ let S = aG._1
263+ let U = aG._2
264+ let ar = (U + aB)
265+ let aH = Y(t, v)
266+ let W = aH._1
267+ let X = aH._2
268+ let as = (X + aB)
269+ let aI = (aB - aE)
270+ let au = max([0, (ae - aI)])
271+ let az = min([ad, (ad + (ae - aI))])
272+ let ak = al(v)
273+ let av = (ak + aB)
274+[J(t, S, ar), V(t, v, W, as), ac(v, az, au), aj(v, av), IntegerEntry(y(t), ar), IntegerEntry(z(t, v), as)]
246275 }
247276 else throw("Strict value is not equal to itself.")
248277 }
249278
250279
251-func aD (r,t,an,al) = {
252- let aE = ad(t)
253- let ab = aE._1
254- let ac = aE._2
255- let aF = if ((size(al.payments) == 0))
256- then 0
257- else al.payments[0].amount
258- let aG = ((ac + ab) + aF)
259- let am = [if (!(B))
280+func aJ (t,v,aC) = {
281+ let aq = [if ((size(aC.payments) == 1))
260282 then true
261- else c("contract is temporary stopped"), if ((1 >= size(al.payments)))
262- then true
263- else c("maximum 1 payment"), if (if ((size(al.payments) == 0))
264- then true
265- else (al.payments[0].assetId == z))
266- then true
267- else c(makeString(["payment assetId should be:", y], " ")), if ((an > 0))
268- then true
269- else c("amount should be greater than 0"), if ((aG >= an))
270- then true
271- else c("amount should be less or equal (payment + available) amount"), if ((an >= aF))
272- then true
273- else throw("amount should be greater or equal payment amount"), if (E(r))
274- then true
275- else c(makeString(["node address is not valid:", r], " ")), if (E(t))
276- then true
277- else c(makeString(["user address is not valid:", t], " "))]
278- if ((am == am))
279- then {
280- let aH = L(r)
281- let Q = aH._1
282- let S = aH._2
283- let ap = (S + an)
284- let aI = W(r, t)
285- let U = aI._1
286- let V = aI._2
287- let ar = (V + an)
288- let aJ = (an - aF)
289- let ay = max([0, (ac - aJ)])
290- let aC = min([ab, (ab + (ac - aJ))])
291- let ai = aj(t)
292- let as = (ai + an)
293-[H(r, Q, ap), T(r, t, U, ar), aa(t, aC, ay), ah(t, as), IntegerEntry(w(r), ap), IntegerEntry(x(r, t), ar)]
294- }
283+ else c("payment size should be exactly 1")]
284+ if ((aq == aq))
285+ then aA(t, v, aC.payments[0].amount, aC)
295286 else throw("Strict value is not equal to itself.")
296287 }
297288
298289
299290 func aK (aL) = {
300291 let aM = [if ((aL > 0))
301292 then true
302293 else c("period length should be greater than 0")]
303294 if ((aM == aM))
304- then if ((m == -1))
295+ then if ((n == -1))
305296 then [IntegerEntry(j, aL), IntegerEntry(i, height)]
306- else [IntegerEntry(h, (n + 1)), IntegerEntry(i, p), IntegerEntry(j, aL)]
297+ else [IntegerEntry(h, (o + 1)), IntegerEntry(i, q), IntegerEntry(j, aL)]
307298 else throw("Strict value is not equal to itself.")
308299 }
309300
310301
311-@Callable(al)
302+@Callable(aC)
312303 func setNewPeriodLength (aL) = {
313- let am = [if (C(toString(al.caller)))
304+ let aq = [if (E(toString(aC.caller)))
314305 then true
315306 else c("caller is not in adminList")]
316- if ((am == am))
307+ if ((aq == aq))
317308 then aK(aL)
318309 else throw("Strict value is not equal to itself.")
319310 }
320311
321312
322313
323-@Callable(al)
314+@Callable(aC)
324315 func setForceStopFlag (aN) = {
325- let aM = [if (C(toString(al.caller)))
316+ let aM = [if (E(toString(aC.caller)))
326317 then true
327318 else c("caller is not an admin")]
328319 if ((aM == aM))
329320 then [BooleanEntry(g, aN)]
330321 else throw("Strict value is not equal to itself.")
331322 }
332323
333324
334325
335-@Callable(al)
336-func getNodeDataREADONLY (r) = {
337- let aO = L(r)
326+@Callable(aC)
327+func getNodeDataREADONLY (t) = {
328+ let aO = N(t)
338329 let aP = aO._1
339- let J = aO._2
340- $Tuple2(nil, $Tuple5(o, aP, p, J, height))
330+ let L = aO._2
331+ $Tuple2(nil, $Tuple5(p, aP, q, L, height))
341332 }
342333
343334
344335
345-@Callable(al)
346-func getUserDataREADONLY (t) = {
347- let aQ = ad(t)
348- let ab = aQ._1
349- let ac = aQ._2
350- let ai = aj(t)
351- $Tuple2(nil, $Tuple6(o, ab, p, ac, ai, height))
336+@Callable(aC)
337+func getUserDataREADONLY (v) = {
338+ let aQ = af(v)
339+ let ad = aQ._1
340+ let ae = aQ._2
341+ let ak = al(v)
342+ $Tuple2(nil, $Tuple6(p, ad, q, ae, ak, height))
352343 }
353344
354345
355346
356-@Callable(al)
357-func leaseByAddress (r,t) = ak(r, t, al)
347+@Callable(aC)
348+func leaseByAddress (t,v) = aJ(t, v, aC)
358349
359350
360351
361-@Callable(al)
362-func lease (r) = {
363- let t = toString(al.caller)
364- ak(r, t, al)
352+@Callable(aC)
353+func lease (t) = {
354+ let v = toString(aC.caller)
355+ aJ(t, v, aC)
365356 }
366357
367358
368359
369-@Callable(al)
370-func leaseFromLocked (r,aR) = {
371- let t = toString(al.caller)
372- aD(r, t, aR, al)
360+@Callable(aC)
361+func leaseFromLocked (t,aR) = {
362+ let v = toString(aC.caller)
363+ aA(t, v, aR, aC)
373364 }
374365
375366
376367
377-@Callable(al)
378-func cancelLease (r,aR) = {
379- let t = toString(al.caller)
380- at(r, t, aR)
368+@Callable(aC)
369+func cancelLease (t,aR) = {
370+ let v = toString(aC.caller)
371+ am(t, v, aR)
381372 }
382373
383374
384375
385-@Callable(al)
376+@Callable(aC)
386377 func claim (aR) = {
387- let t = toString(al.caller)
388- az(t, aR)
378+ let v = toString(aC.caller)
379+ aw(v, aR)
389380 }
390381
391382
392383
393-@Callable(al)
384+@Callable(aC)
394385 func claimAll () = {
395- let t = toString(al.caller)
396- let aS = ad(t)
397- let ab = aS._1
398- let ac = aS._2
399- let am = [if ((ab > 0))
386+ let v = toString(aC.caller)
387+ let aS = af(v)
388+ let ad = aS._1
389+ let ae = aS._2
390+ let aq = [if ((ad > 0))
400391 then true
401392 else c("nothing to claim")]
402- if ((am == am))
403- then az(t, ab)
393+ if ((aq == aq))
394+ then aw(v, ad)
404395 else throw("Strict value is not equal to itself.")
405396 }
406397
407398

github/deemru/w8io/169f3d6 
100.59 ms