tx · EQjLwVUFBbF3KRw7i5cbqA4m8psZwy6XKi9pkT1ryJFb 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy: -0.01500000 Waves 2023.08.01 02:17 [2690706] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves
{ "type": 13, "id": "EQjLwVUFBbF3KRw7i5cbqA4m8psZwy6XKi9pkT1ryJFb", "fee": 1500000, "feeAssetId": null, "timestamp": 1690845463059, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "4JieY76dBLEGEEiXTtWtnvEukB34i5p96oZ32Hw3g3jRhoXsdZKnFaytCxdqkGT2S8W698khU8Gggtk9t26YSmmh" ], "script": "base64:BgIbCAISBgoECAgICBIDCgEBEgMKAQESABIDCgEIWQACTTYAwIQ9AAJNOACAwtcvAAhNSUxMSU9ONgCAgOmDsd4WAA5NQVJLRVRJTkdTSEFSRQCgjQYACVRFQU1TSEFSRQDAmgwADUFDVElWSVRZU0hBUkUAoI0GAAtQTEFZRVJTSEFSRQCAtRgACllFQVJNSUxMSVMAgIbrx3UACUNIRUNLVElNRQCAyeCrsAEAA0RBWQCAuJkpABBtYXJrZXRpbmdBZGRyS2V5Ag1tYXJrZXRpbmdBZGRyAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIAFGxhc3RNYXJrZXRpbmdUaW1lS2V5AhlsYXN0Q2xhaW1lZFRpbWVfbWFya2V0aW5nABZtYXJrZXRpbmdBbW91bnRMZWZ0S2V5AhNtYXJrZXRpbmdBbW91bnRMZWZ0AA9sYXN0VGVhbVRpbWVLZXkCFGxhc3RDbGFpbWVkVGltZV90ZWFtABF0ZWFtQW1vdW50TGVmdEtleQIOdGVhbUFtb3VudExlZnQAFWxhc3RBY3Rpdml0aWVzVGltZUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMAEGFjdEFtb3VudExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABRzdGFrZXJzQW1vdW50TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBGGtleUxhc3RDbGFpbWVkVGltZUJ5VXNlcgEEYWRkcgkArAICAhRsYXN0Q2xhaW1lZFRpbWVVc2VyXwUEYWRkcgEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBBnBlcmlvZAkAawMFCE1JTExJT042CQBoAgULUExBWUVSU0hBUkUJAGQCBQZwZXJpb2QAAQkAaAIABgUCTTYAD3dsZ0lzc3VlVGltZUtleQINd2xnX2lzc3VlVGltZQASd2xnSXNzdWVkQW1vdW50S2V5AhB3bGdfaXNzdWVkQW1vdW50ABF6Yklzc3VlZEFtb3VudEtleQISemJpbGxfaXNzdWVkQW1vdW50AAxpZHhXbGdBbW91bnQAAAALaWR4V2xnUHJpY2UAAQALaWR4V2xnRnVuZHMAAgAPaWR4V2xnSXNzdWVUaW1lAAcAFWlkeFdsZ01hcmtldGluZ0FtTGVmdAAKABlpZHhXbGdNYXJrZXRpbmdBbUF2YWlsTm93AAsAEGlkeFdsZ1RlYW1BbUxlZnQADgAUaWR4V2xnVGVhbUFtQXZhaWxOb3cADwAPaWR4V2xnQWN0QW1MZWZ0ABIAE2lkeFdsZ0FjdEFtQXZhaWxOb3cAEwARaWR4V2xnQW1MZWZ0VG90YWwAFgAUaWR4V2xnVXNlckFtQXZhaWxOb3cAGQAIZGFwcFJlc3QAAAALZGFwcFN0YWtpbmcAAQALZGFwcEVjb25vbXkAAgAHZGFwcFdsZwAEAApkYXBwUHV6emxlAAUADmRhcHBJbnZlc3RGdW5kAAYBCWdldFBpZWNlcwISdXNlckFkZHJTdHJPckVtcHR5D3N0YWtpbmdDb250cmFjdAQFcHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QCE3Jlc1R5cGVzUHJvcG9ydGlvbnMCCzBfMF8wXzBfMF8wAgFfCgEFYWRkZXICA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0ECnRvdGFsUG93ZXIKAAIkbAUFcHJvcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAp1c2Vyc1Bvd2VyCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUSdXNlckFkZHJTdHJPckVtcHR5AAAJAMwIAgUKdG90YWxQb3dlcgkAzAgCBQp1c2Vyc1Bvd2VyBQNuaWwBC2dldFdsZ1N0YXRzBAt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQMaXNzdWVkQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFEndsZ0lzc3VlZEFtb3VudEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0BAplY29ub215VXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQtkYXBwRWNvbm9teQUGdXNkdElkBAdyZXN0VXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQhkYXBwUmVzdAUGdXNkdElkBAZ3bGdVc2QJAGUCCQDwBwIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBQZ1c2R0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQJcHV6emxlVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQpkYXBwUHV6emxlBQZ1c2R0SWQEEmludmVzdEZ1bmRDb250cmFjdAkAkQMCBQljb250cmFjdHMFDmRhcHBJbnZlc3RGdW5kBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEmludmVzdEZ1bmRDb250cmFjdAUGdXNkdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEmludmVzdEZ1bmRDb250cmFjdAURemJJc3N1ZWRBbW91bnRLZXkAAAQNdG90YWxGdW5kc1VzZAkAZAIJAGQCBQplY29ub215VXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAQFd2xnSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwILd2xnX2Fzc2V0SWQCE05vdCBpbml0aWFsaXplZCB5ZXQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWlzc3VlVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBQ93bGdJc3N1ZVRpbWVLZXkCD05vdCBpbml0aWFsaXplZAQObWFya2V0aW5nVG90YWwJAGsDBQhNSUxMSU9ONgUOTUFSS0VUSU5HU0hBUkUFAk02BBNtYXJrZXRpbmdBbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRZtYXJrZXRpbmdBbW91bnRMZWZ0S2V5BQ5tYXJrZXRpbmdUb3RhbAQRbGFzdE1hcmtldGluZ1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFFGxhc3RNYXJrZXRpbmdUaW1lS2V5BQlpc3N1ZVRpbWUEDW1hcmtldGluZ0FkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAJ0IAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFEG1hcmtldGluZ0FkZHJLZXkEG21hcmtldGluZ0Ftb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQ5tYXJrZXRpbmdUb3RhbAkAZQIFA25vdwURbGFzdE1hcmtldGluZ1RpbWUFCllFQVJNSUxMSVMJAMwIAgUTbWFya2V0aW5nQW1vdW50TGVmdAUDbmlsBA9tYXJrZXRpbmdXbGdvbGQJAPAHAgUNbWFya2V0aW5nQWRkcgUFd2xnSWQECXRlYW1Ub3RhbAkAawMFCE1JTExJT042BQlURUFNU0hBUkUFAk02BA50ZWFtQW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwURdGVhbUFtb3VudExlZnRLZXkFCXRlYW1Ub3RhbAQMbGFzdFRlYW1UaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBQ9sYXN0VGVhbVRpbWVLZXkFCWlzc3VlVGltZQQIdGVhbUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAJ0IAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFC3RlYW1BZGRyS2V5BBZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCXRlYW1Ub3RhbAkAZQIFA25vdwUMbGFzdFRlYW1UaW1lCQBoAgADBQpZRUFSTUlMTElTCQDMCAIFDnRlYW1BbW91bnRMZWZ0BQNuaWwECnRlYW1XbGdvbGQJAPAHAgUIdGVhbUFkZHIFBXdsZ0lkBAhhY3RUb3RhbAkAawMFCE1JTExJT042BQ1BQ1RJVklUWVNIQVJFBQJNNgQNYWN0QW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUQYWN0QW1vdW50TGVmdEtleQUIYWN0VG90YWwEEmxhc3RBY3Rpdml0aWVzVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQlpc3N1ZVRpbWUEFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQhhY3RUb3RhbAkAZQIFA25vdwUSbGFzdEFjdGl2aXRpZXNUaW1lCQBoAgADBQpZRUFSTUlMTElTCQDMCAIFDWFjdEFtb3VudExlZnQFA25pbAQJYWN0V2xnb2xkCQDwBwIJAJEDAgUJY29udHJhY3RzBQhkYXBwUmVzdAUFd2xnSWQEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwkBGGtleUxhc3RDbGFpbWVkVGltZUJ5VXNlcgEFC3VzZXJBZGRyT3B0BQlpc3N1ZVRpbWUEDmxhc3RVc2VyUGVyaW9kCQBpAgkAZQIFDGxhc3RVc2VyVGltZQUJaXNzdWVUaW1lBQpZRUFSTUlMTElTBApub3dMaW1pdGVkCQCXAwEJAMwIAgUDbm93CQDMCAIJAGQCBQlpc3N1ZVRpbWUJAGgCAAMFCllFQVJNSUxMSVMFA25pbAQJY3VyUGVyaW9kCQCXAwEJAMwIAgkAaQIJAGUCBQNub3cFCWlzc3VlVGltZQUKWUVBUk1JTExJUwkAzAgCAAIFA25pbAQDZWZmCQEJZ2V0UGllY2VzAgULdXNlckFkZHJPcHQJAJEDAgUJY29udHJhY3RzBQtkYXBwU3Rha2luZwQVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBBQljdXJQZXJpb2QECnVzZXJBbW91bnQJAGsDAwkAAAIFDmxhc3RVc2VyUGVyaW9kBQljdXJQZXJpb2QJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkBQxsYXN0VXNlclRpbWUFCllFQVJNSUxMSVMDCQAAAgUObGFzdFVzZXJQZXJpb2QJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGsDCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAEJAGUCCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwUJY3VyUGVyaW9kBQxsYXN0VXNlclRpbWUFCllFQVJNSUxMSVMJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwUJY3VyUGVyaW9kBQpZRUFSTUlMTElTCQBkAgkAZAIJAGsDCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAIJAGUCCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwkAZQIFCWN1clBlcmlvZAABBQxsYXN0VXNlclRpbWUFCllFQVJNSUxMSVMJARRkaXN0cmlidXRpb25CeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQJAGQCBQlpc3N1ZVRpbWUJAGgCBQpZRUFSTUlMTElTBQljdXJQZXJpb2QFCllFQVJNSUxMSVMJAJEDAgUDZWZmAAEJAJEDAgUDZWZmAAAEEHNMYW5kRGFpbHlBbW91bnQJAGsDCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uBQNEQVkFCllFQVJNSUxMSVMAGQkAkQMCBQNlZmYAAAQPYW1vdW50TGVmdFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRRzdGFrZXJzQW1vdW50TGVmdEtleQAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCCQBrAwUNdG90YWxGdW5kc1VzZAUCTTgFDGlzc3VlZEFtb3VudAkAzAgCBQ10b3RhbEZ1bmRzVXNkCQDMCAIFCmVjb25vbXlVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQZ3bGdVc2QJAMwIAgUJcHV6emxlVXNkCQDMCAIFCWlzc3VlVGltZQkAzAgCBRFsYXN0TWFya2V0aW5nVGltZQkAzAgCBQ5tYXJrZXRpbmdUb3RhbAkAzAgCBRNtYXJrZXRpbmdBbW91bnRMZWZ0CQDMCAIFG21hcmtldGluZ0Ftb3VudEF2YWlsYWJsZU5vdwkAzAgCBQ9tYXJrZXRpbmdXbGdvbGQJAMwIAgUJdGVhbVRvdGFsCQDMCAIFDnRlYW1BbW91bnRMZWZ0CQDMCAIFFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAMwIAgUKdGVhbVdsZ29sZAkAzAgCBQhhY3RUb3RhbAkAzAgCBQ1hY3RBbW91bnRMZWZ0CQDMCAIFFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAzAgCBQlhY3RXbGdvbGQJAMwIAgUJY3VyUGVyaW9kCQDMCAIFD2Ftb3VudExlZnRUb3RhbAkAzAgCBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAMwIAgUMbGFzdFVzZXJUaW1lCQDMCAIFCnVzZXJBbW91bnQJAMwIAgUQc0xhbmREYWlseUFtb3VudAkAzAgCBQ9pbnZlc3RGdW5kVG90YWwFA25pbAANS1NBTExPV1dMR09MRAYABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAwM8kAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1B1enpsZVBvb2xEYXBwAAUAFElkeENmZ0ludmVzdEZ1bmREYXBwAAYBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1B1enpsZVBvb2xEYXBwABJpbnZlc3RGdW5kQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdJbnZlc3RGdW5kRGFwcAANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQITTm90IGluaXRpYWxpemVkIHlldAAKSWR4RWZmVXNlcgABARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBDmdldFZvdGluZ1Bvd2VyARJ1c2VyQWRkclN0ck9yRW1wdHkEBXByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwoBBWFkZGVyAgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAp0b3RhbFBvd2VyCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlcnNQb3dlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAJAMwIAgUKdG90YWxQb3dlcgkAzAgCBQp1c2Vyc1Bvd2VyBQNuaWwBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEB2xvd1NpemUJALECAQUHbG93UGFydAQGemVyb2VzCQCvAgIJAKQDAQUGdGVuUG93BQdsb3dTaXplCQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AAJBNgCAwtcvAAJCOACA4esXAA1wcm9maXRBZGRyS2V5Agpwcm9maXRBZGRyABlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AhZzdGFrZXJzQW1vdW50UGFpZFRvdGFsARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBGFkZHIJAKwCAgIWc3Rha2Vyc0Ftb3VudFBhaWRVc2VyXwUEYWRkcgEGcHJvbG9nAAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsAQxnZXRTd2FwTGltaXQBBGFkZHIECGxhc3RUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQ5hcmJpdHJhZ2VEZWxheQkAZQIFA25vdwUIbGFzdFRpbWUJAAIBCQCsAgIJAKwCAgIfQXJiaXRyYWdlcyBhcmUgcG9zc2libGUgb25jZSBhIAkApAMBCQBpAgUOYXJiaXRyYWdlRGVsYXkA4NQDAgNtaW4EBnBpZWNlcwkAkQMCCQEOZ2V0Vm90aW5nUG93ZXIBBQRhZGRyBQpJZHhFZmZVc2VyBARwb3c4CQBsBgUGcGllY2VzAAAFAkI4AAgACAUHQ0VJTElORwkAawMFAkE2BQRwb3c4BQVNVUxUOAENY2xhaW1JbnRlcm5hbAEEYWRkcgMJAQEhAQUNS1NBTExPV1dMR09MRAkAlAoCBQNuaWwAAAQGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyBAhjdXJTdGF0cwkBC2dldFdsZ1N0YXRzBAUEYWRkcgkAzAgCBQxyZXN0Q29udHJhY3QJAMwIAgUPc3Rha2luZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBQtnb3ZDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWlzc3VlVGltZQkAkQMCBQhjdXJTdGF0cwUPaWR4V2xnSXNzdWVUaW1lBBNtYXJrZXRpbmdBbW91bnRMZWZ0CQCRAwIFCGN1clN0YXRzBRVpZHhXbGdNYXJrZXRpbmdBbUxlZnQED21hcmtldGluZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwUZaWR4V2xnTWFya2V0aW5nQW1BdmFpbE5vdwQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFEGlkeFdsZ1RlYW1BbUxlZnQECnRlYW1BbW91bnQJAJEDAgUIY3VyU3RhdHMFFGlkeFdsZ1RlYW1BbUF2YWlsTm93BA1hY3RBbW91bnRMZWZ0CQCRAwIFCGN1clN0YXRzBQ9pZHhXbGdBY3RBbUxlZnQECWFjdEFtb3VudAkAkQMCBQhjdXJTdGF0cwUTaWR4V2xnQWN0QW1BdmFpbE5vdwMJAGYCCQBlAgUDbm93BQlpc3N1ZVRpbWUFCUNIRUNLVElNRQkAAgECPVBsZWFzZSBtb2RpZnkgY29udHJhY3QgZm9yIG5leHQgMS41IHllYXJzLCBhY2NvcmRpbmcgdG8gc3RhdHMECnVzZXJBbW91bnQJAJEDAgUIY3VyU3RhdHMFFGlkeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUQbWFya2V0aW5nQWRkcktleQUPbWFya2V0aW5nQW1vdW50BQp3bGdBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQULdGVhbUFkZHJLZXkFCnRlYW1BbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQp1c2VyQW1vdW50BQp3bGdBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd1c2VyS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd1c2VyS2V5AAAFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGUCCQCRAwIFCGN1clN0YXRzBRFpZHhXbGdBbUxlZnRUb3RhbAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWbWFya2V0aW5nQW1vdW50TGVmdEtleQkAZQIFE21hcmtldGluZ0Ftb3VudExlZnQFD21hcmtldGluZ0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUbGFzdE1hcmtldGluZ1RpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgURdGVhbUFtb3VudExlZnRLZXkJAGUCBQ50ZWFtQW1vdW50TGVmdAUKdGVhbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPbGFzdFRlYW1UaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFEGFjdEFtb3VudExlZnRLZXkJAGUCBQ1hY3RBbW91bnRMZWZ0BQlhY3RBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFFWxhc3RBY3Rpdml0aWVzVGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdENsYWltZWRUaW1lQnlVc2VyAQUEYWRkcgUDbm93BQNuaWwFCnVzZXJBbW91bnQFAWkBDWNvbnN0cnVjdG9yVjEECHJlc3RBZGRyDW1hcmtldGluZ0FkZHIIdGVhbUFkZHIKcHJvZml0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBCWlzRGVmaW5lZAEJAKEIAQUNd2xnQXNzZXRJZEtleQkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQEDGlzc3VlZEFtb3VudAUITUlMTElPTjYEBWlzc3VlCQDDCAcCBldMR09MRAIgV2F2ZXNMYW5kcyBHb2xkIGludmVzdG1lbnQgdG9rZW4FDGlzc3VlZEFtb3VudAAIBgUEdW5pdAAABAdhc3NldElkCQC4CAEFBWlzc3VlCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ93bGdJc3N1ZVRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDGlzc3VlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAawMFCE1JTExJT042BQtQTEFZRVJTSEFSRQUFTVVMVDYJAMwIAgkBC0JpbmFyeUVudHJ5AgUNd2xnQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBRBtYXJrZXRpbmdBZGRyS2V5BQ1tYXJrZXRpbmdBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFC3RlYW1BZGRyS2V5BQh0ZWFtQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQ1wcm9maXRBZGRyS2V5BQpwcm9maXRBZGRyBQNuaWwBaQEGYnV5V2xnAQltaW5BbW91bnQDCQEBIQEFDUtTQUxMT1dXTEdPTEQJAJQKAgUDbmlsAAAEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIEB21heFVzZHQJAQxnZXRTd2FwTGltaXQBBQRhZGRyAwkAZgIFB3VzZHRBbXQFB21heFVzZHQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiBzcGVuZCBtYXggCQEKZml4ZWRQb2ludAIFB21heFVzZHQABgIFIFVTRFQDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUBAhjdXJTdGF0cwkBC2dldFdsZ1N0YXRzBAIACQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFC2dvdkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwUMaWR4V2xnQW1vdW50BAhmdW5kc1VzZAkAkQMCBQhjdXJTdGF0cwULaWR4V2xnRnVuZHMECHdsZ1ByaWNlCQBrAwUIZnVuZHNVc2QFBU1VTFQ4BQxjdXJXbGdBbW91bnQECGJ1eVByaWNlCQBrAwUId2xnUHJpY2UABgAFBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UDCQBmAgUJbWluQW1vdW50BQl3bGdBbW91bnQJAAIBAjBQcmljZSBjaGFuZ2VkIGR1cmluZyBvcGVyYXRpb24sIHBsZWFzZSB0cnkgYWdhaW4EDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABgQKZGVsdGFGdW5kcwkAZQIFB3VzZHRBbXQFDHByb2ZpdEFtb3VudAQIcmVpc3N1ZWQJAGsDBQxjdXJXbGdBbW91bnQFCmRlbHRhRnVuZHMFCGZ1bmRzVXNkCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQhyZWlzc3VlZAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIFDGN1cldsZ0Ftb3VudAUIcmVpc3N1ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXdsZ0Ftb3VudAUKd2xnQXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQBaQEHc2VsbFdsZwEJbWluQW1vdW50AwkBASEBBQ1LU0FMTE9XV0xHT0xECQCUCgIFA25pbAAABAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAhVXTEdPTEQgcGF5bWVudHMgb25seSEDCQECIT0CBQpwbXRBc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIEB21heFVzZHQJAQxnZXRTd2FwTGltaXQBBQRhZGRyBAhjdXJTdGF0cwkBC2dldFdsZ1N0YXRzBAIACQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFC2dvdkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQxpZHhXbGdBbW91bnQECXNlbGxQcmljZQkAawMJAJEDAgUIY3VyU3RhdHMFC2lkeFdsZ1ByaWNlAAQABQQHdXNkdEFtdAkAawMFBndsZ0FtdAUJc2VsbFByaWNlBQVNVUxUOAMJAGYCBQd1c2R0QW10BQdtYXhVc2R0CQACAQkArAICCQCsAgICEFlvdSBjYW4gZ2V0IG1heCAJAQpmaXhlZFBvaW50AgUHbWF4VXNkdAAGAgUgVVNEVAMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQDCQBmAgUJbWluQW1vdW50BQd1c2R0QW10CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAQEBmJ1cm5lZAkAawMJAGQCBQd1c2R0QW10BQxwcm9maXRBbW91bnQFDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwULaWR4V2xnRnVuZHMJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBmJ1cm5lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBlAgUMY3VyV2xnQW1vdW50BQZidXJuZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFB3VzZHRBbXQFC3VzZHRBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAFpAQVjbGFpbQAEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYWN0aW9ucwgJAQ1jbGFpbUludGVybmFsAQkApQgBCAUBaQZjYWxsZXICXzEJAJQKAgUHYWN0aW9ucwUMcHJvbG9nUmVzdWx0AWkBEm9uU3Rha2VVbnN0YWtlTGFuZAEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAQ1jbGFpbUludGVybmFsAQUEYWRkcgCARJfh", "height": 2690706, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dpe98dDAc71EQtxLfhYS8D5Nbe4PqGre9t9WqXDrzDkE Next: HRfRgTFHuSRukT9s9CH5J1GNJiWdAjag97ZaQq7EKngw Diff:
Old | New | Differences | |
---|---|---|---|
289 | 289 | ||
290 | 290 | func bO (bP,bQ) = { | |
291 | 291 | let bR = pow(10, 0, bQ, 0, 0, DOWN) | |
292 | - | ((toString((bP / bR)) + ".") + toString((bP % bR))) | |
292 | + | let bS = toString((bP % bR)) | |
293 | + | let bT = size(bS) | |
294 | + | let bU = take(toString(bR), bT) | |
295 | + | (((toString((bP / bR)) + ".") + bU) + bS) | |
293 | 296 | } | |
294 | 297 | ||
295 | 298 | ||
296 | - | let | |
299 | + | let bV = 100000000 | |
297 | 300 | ||
298 | - | let | |
301 | + | let bW = 50000000 | |
299 | 302 | ||
300 | - | let | |
303 | + | let bX = "profitAddr" | |
301 | 304 | ||
302 | - | let | |
305 | + | let bY = "stakersAmountPaidTotal" | |
303 | 306 | ||
304 | - | func | |
307 | + | func bZ (u) = ("stakersAmountPaidUser_" + u) | |
305 | 308 | ||
306 | 309 | ||
307 | - | func | |
310 | + | func ca () = bK(invoke(V, "saveLastTx", nil, nil)) | |
308 | 311 | ||
309 | 312 | ||
310 | - | func | |
311 | - | let | |
313 | + | func cb (u) = { | |
314 | + | let cc = valueOrElse(getInteger(v(u)), 0) | |
312 | 315 | let ax = lastBlock.timestamp | |
313 | - | if ((be > (ax - | |
316 | + | if ((be > (ax - cc))) | |
314 | 317 | then throw((("Arbitrages are possible once a " + toString((be / 60000))) + "min")) | |
315 | 318 | else { | |
316 | - | let | |
317 | - | let | |
318 | - | fraction( | |
319 | + | let cd = bN(u)[bG] | |
320 | + | let ce = pow(cd, 0, bW, 8, 8, CEILING) | |
321 | + | fraction(bV, ce, bh) | |
319 | 322 | } | |
320 | 323 | } | |
321 | 324 | ||
322 | 325 | ||
323 | - | func | |
326 | + | func cf (u) = if (!(aZ)) | |
324 | 327 | then $Tuple2(nil, 0) | |
325 | 328 | else { | |
326 | - | let | |
327 | - | let | |
329 | + | let cg = addressFromStringValue(u) | |
330 | + | let ch = aj(u, [bz, V, bA, bB, bC, bD, at], bb, 0) | |
328 | 331 | let ax = lastBlock.timestamp | |
329 | - | let ay = | |
330 | - | let aA = | |
331 | - | let | |
332 | - | let aG = | |
333 | - | let | |
334 | - | let aM = | |
335 | - | let | |
332 | + | let ay = ch[E] | |
333 | + | let aA = ch[F] | |
334 | + | let ci = ch[G] | |
335 | + | let aG = ch[H] | |
336 | + | let cj = ch[I] | |
337 | + | let aM = ch[J] | |
338 | + | let ck = ch[K] | |
336 | 339 | if (((ax - ay) > i)) | |
337 | 340 | then throw("Please modify contract for next 1.5 years, according to stats") | |
338 | 341 | else { | |
339 | - | let aW = | |
340 | - | let | |
341 | - | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), | |
342 | + | let aW = ch[M] | |
343 | + | let cl = bZ(u) | |
344 | + | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), ci, bF), ScriptTransfer(addressFromStringValue(value(getString(l))), cj, bF), ScriptTransfer(bz, ck, bF), ScriptTransfer(cg, aW, bF), IntegerEntry(cl, (valueOrElse(getInteger(cl), 0) + aW)), IntegerEntry(bY, (valueOrElse(getInteger(bY), 0) + aW)), IntegerEntry(s, (ch[L] - aW)), IntegerEntry(n, (aA - ci)), IntegerEntry(m, ax), IntegerEntry(p, (aG - cj)), IntegerEntry(o, ax), IntegerEntry(r, (aM - ck)), IntegerEntry(q, ax), IntegerEntry(t(u), ax)], aW) | |
342 | 345 | } | |
343 | 346 | } | |
344 | 347 | ||
345 | 348 | ||
346 | - | @Callable( | |
347 | - | func constructorV1 ( | |
349 | + | @Callable(cm) | |
350 | + | func constructorV1 (cn,aC,aI,co) = if ((cm.caller != this)) | |
348 | 351 | then throw("Permission denied") | |
349 | 352 | else if (isDefined(getBinary(bE))) | |
350 | 353 | then throw("Already initialized") | |
351 | 354 | else { | |
352 | 355 | let ao = c | |
353 | - | let | |
354 | - | let | |
355 | - | [ | |
356 | + | let cp = Issue("WLGOLD", "WavesLands Gold investment token", ao, 8, true, unit, 0) | |
357 | + | let cq = calculateAssetId(cp) | |
358 | + | [cp, IntegerEntry(y, lastBlock.timestamp), IntegerEntry(z, ao), IntegerEntry(bY, 0), IntegerEntry(s, fraction(c, g, bg)), BinaryEntry(bE, cq), StringEntry(bt(), cn), StringEntry(k, aC), StringEntry(l, aI), StringEntry(bX, co)] | |
356 | 359 | } | |
357 | 360 | ||
358 | 361 | ||
359 | 362 | ||
360 | - | @Callable( | |
361 | - | func buyWlg ( | |
363 | + | @Callable(cm) | |
364 | + | func buyWlg (cr) = if (!(aZ)) | |
362 | 365 | then $Tuple2(nil, 0) | |
363 | 366 | else { | |
364 | - | let | |
365 | - | if ((size( | |
367 | + | let cs = ca() | |
368 | + | if ((size(cm.payments) != 1)) | |
366 | 369 | then throw("exactly 1 payment must be attached") | |
367 | 370 | else { | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | if (( | |
371 | + | let ct = cm.payments[0] | |
372 | + | let cu = ct.amount | |
373 | + | let cv = valueOrErrorMessage(ct.assetId, "USDT payments only!") | |
374 | + | if ((cv != bb)) | |
372 | 375 | then throw("USDT payments only!") | |
373 | 376 | else { | |
374 | - | let | |
375 | - | let u = toString( | |
376 | - | let | |
377 | - | if (( | |
378 | - | then throw((("You can spend max " + bO( | |
379 | - | else if ((bi > | |
377 | + | let cg = cm.caller | |
378 | + | let u = toString(cg) | |
379 | + | let cw = cb(u) | |
380 | + | if ((cu > cw)) | |
381 | + | then throw((("You can spend max " + bO(cw, 6)) + " USDT")) | |
382 | + | else if ((bi > cu)) | |
380 | 383 | then throw((("You can trade min " + bO(bi, 6)) + " USDT")) | |
381 | 384 | else { | |
382 | - | let | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | let | |
388 | - | if (( | |
385 | + | let ch = aj("", [bz, V, bA, bB, bC, bD, at], bb, cu) | |
386 | + | let cx = ch[B] | |
387 | + | let cy = ch[D] | |
388 | + | let cz = fraction(cy, bh, cx) | |
389 | + | let cA = fraction(cz, 6, 5) | |
390 | + | let cB = fraction(cu, bh, cA) | |
391 | + | if ((cr > cB)) | |
389 | 392 | then throw("Price changed during operation, please try again") | |
390 | 393 | else { | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | $Tuple2([Reissue(bF, | |
394 | + | let cC = (cu / 6) | |
395 | + | let cD = (cu - cC) | |
396 | + | let cE = fraction(cx, cD, cy) | |
397 | + | $Tuple2([Reissue(bF, cE, true), IntegerEntry(z, (cx + cE)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(bX))), cC, bb), ScriptTransfer(cg, cB, bF)], cs) | |
395 | 398 | } | |
396 | 399 | } | |
397 | 400 | } | |
400 | 403 | ||
401 | 404 | ||
402 | 405 | ||
403 | - | @Callable( | |
404 | - | func sellWlg ( | |
406 | + | @Callable(cm) | |
407 | + | func sellWlg (cr) = if (!(aZ)) | |
405 | 408 | then $Tuple2(nil, 0) | |
406 | 409 | else { | |
407 | - | let | |
408 | - | if ((size( | |
410 | + | let cs = ca() | |
411 | + | if ((size(cm.payments) != 1)) | |
409 | 412 | then throw("exactly 1 payment must be attached") | |
410 | 413 | else { | |
411 | - | let | |
412 | - | let | |
413 | - | let | |
414 | - | if (( | |
414 | + | let ct = cm.payments[0] | |
415 | + | let cF = ct.amount | |
416 | + | let cv = valueOrErrorMessage(ct.assetId, "WLGOLD payments only!") | |
417 | + | if ((cv != bF)) | |
415 | 418 | then throw("WLGOLD payments only!") | |
416 | 419 | else { | |
417 | - | let | |
418 | - | let u = toString( | |
419 | - | let | |
420 | - | let | |
421 | - | let | |
422 | - | let | |
423 | - | let | |
424 | - | if (( | |
425 | - | then throw((("You can get max " + bO( | |
426 | - | else if ((bi > | |
420 | + | let cg = cm.caller | |
421 | + | let u = toString(cg) | |
422 | + | let cw = cb(u) | |
423 | + | let ch = aj("", [bz, V, bA, bB, bC, bD, at], bb, 0) | |
424 | + | let cx = ch[B] | |
425 | + | let cG = fraction(ch[C], 4, 5) | |
426 | + | let cu = fraction(cF, cG, bh) | |
427 | + | if ((cu > cw)) | |
428 | + | then throw((("You can get max " + bO(cw, 6)) + " USDT")) | |
429 | + | else if ((bi > cu)) | |
427 | 430 | then throw((("You can trade min " + bO(bi, 6)) + " USDT")) | |
428 | - | else if (( | |
431 | + | else if ((cr > cu)) | |
429 | 432 | then throw("Price changed during operation, please try again") | |
430 | 433 | else { | |
431 | - | let | |
432 | - | let | |
433 | - | $Tuple2([Burn(bF, | |
434 | + | let cC = (cu / 4) | |
435 | + | let cH = fraction((cu + cC), cx, ch[D]) | |
436 | + | $Tuple2([Burn(bF, cH), IntegerEntry(z, (cx - cH)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(bX))), cC, bb), ScriptTransfer(cg, cu, bb)], cs) | |
434 | 437 | } | |
435 | 438 | } | |
436 | 439 | } | |
438 | 441 | ||
439 | 442 | ||
440 | 443 | ||
441 | - | @Callable( | |
444 | + | @Callable(cm) | |
442 | 445 | func claim () = { | |
443 | - | let | |
444 | - | if ((size( | |
446 | + | let cs = ca() | |
447 | + | if ((size(cm.payments) != 0)) | |
445 | 448 | then throw("No payments required") | |
446 | 449 | else { | |
447 | - | let | |
448 | - | $Tuple2( | |
450 | + | let cI = cf(toString(cm.caller))._1 | |
451 | + | $Tuple2(cI, cs) | |
449 | 452 | } | |
450 | 453 | } | |
451 | 454 | ||
452 | 455 | ||
453 | 456 | ||
454 | - | @Callable( | |
455 | - | func onStakeUnstakeLand (u) = if (( | |
457 | + | @Callable(cm) | |
458 | + | func onStakeUnstakeLand (u) = if ((cm.caller != V)) | |
456 | 459 | then throw("Permission denied") | |
457 | - | else | |
460 | + | else cf(u) | |
458 | 461 | ||
459 | 462 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 1000000 | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 100000000000000 | |
9 | 9 | ||
10 | 10 | let d = 100000 | |
11 | 11 | ||
12 | 12 | let e = 200000 | |
13 | 13 | ||
14 | 14 | let f = 100000 | |
15 | 15 | ||
16 | 16 | let g = 400000 | |
17 | 17 | ||
18 | 18 | let h = 31557600000 | |
19 | 19 | ||
20 | 20 | let i = 47336400000 | |
21 | 21 | ||
22 | 22 | let j = 86400000 | |
23 | 23 | ||
24 | 24 | let k = "marketingAddr" | |
25 | 25 | ||
26 | 26 | let l = "teamAddr" | |
27 | 27 | ||
28 | 28 | let m = "lastClaimedTime_marketing" | |
29 | 29 | ||
30 | 30 | let n = "marketingAmountLeft" | |
31 | 31 | ||
32 | 32 | let o = "lastClaimedTime_team" | |
33 | 33 | ||
34 | 34 | let p = "teamAmountLeft" | |
35 | 35 | ||
36 | 36 | let q = "lastClaimedTime_activities" | |
37 | 37 | ||
38 | 38 | let r = "activitiesAmountLeft" | |
39 | 39 | ||
40 | 40 | let s = "stakersAmountLeft" | |
41 | 41 | ||
42 | 42 | func t (u) = ("lastClaimedTimeUser_" + u) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func v (u) = ("lastArbTimeUser_" + u) | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func w (x) = fraction(c, (g * (x + 1)), (6 * a)) | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | let y = "wlg_issueTime" | |
52 | 52 | ||
53 | 53 | let z = "wlg_issuedAmount" | |
54 | 54 | ||
55 | 55 | let A = "zbill_issuedAmount" | |
56 | 56 | ||
57 | 57 | let B = 0 | |
58 | 58 | ||
59 | 59 | let C = 1 | |
60 | 60 | ||
61 | 61 | let D = 2 | |
62 | 62 | ||
63 | 63 | let E = 7 | |
64 | 64 | ||
65 | 65 | let F = 10 | |
66 | 66 | ||
67 | 67 | let G = 11 | |
68 | 68 | ||
69 | 69 | let H = 14 | |
70 | 70 | ||
71 | 71 | let I = 15 | |
72 | 72 | ||
73 | 73 | let J = 18 | |
74 | 74 | ||
75 | 75 | let K = 19 | |
76 | 76 | ||
77 | 77 | let L = 22 | |
78 | 78 | ||
79 | 79 | let M = 25 | |
80 | 80 | ||
81 | 81 | let N = 0 | |
82 | 82 | ||
83 | 83 | let O = 1 | |
84 | 84 | ||
85 | 85 | let P = 2 | |
86 | 86 | ||
87 | 87 | let Q = 4 | |
88 | 88 | ||
89 | 89 | let R = 5 | |
90 | 90 | ||
91 | 91 | let S = 6 | |
92 | 92 | ||
93 | 93 | func T (U,V) = { | |
94 | 94 | let W = split(valueOrElse(getString(V, "resTypesProportions"), "0_0_0_0_0_0"), "_") | |
95 | 95 | func X (Y,Z) = (Y + parseIntValue(Z)) | |
96 | 96 | ||
97 | 97 | let aa = { | |
98 | 98 | let ab = W | |
99 | 99 | let ac = size(ab) | |
100 | 100 | let ad = 0 | |
101 | 101 | func ae (af,ag) = if ((ag >= ac)) | |
102 | 102 | then af | |
103 | 103 | else X(af, ab[ag]) | |
104 | 104 | ||
105 | 105 | func ah (af,ag) = if ((ag >= ac)) | |
106 | 106 | then af | |
107 | 107 | else throw("List size exceeds 6") | |
108 | 108 | ||
109 | 109 | ah(ae(ae(ae(ae(ae(ae(ad, 0), 1), 2), 3), 4), 5), 6) | |
110 | 110 | } | |
111 | 111 | let ai = valueOrElse(getInteger(V, ("stakedPiecesByOwner_" + U)), 0) | |
112 | 112 | [aa, ai] | |
113 | 113 | } | |
114 | 114 | ||
115 | 115 | ||
116 | 116 | func aj (ak,al,am,an) = { | |
117 | 117 | let ao = valueOrErrorMessage(getInteger(al[Q], z), "WLGOLD is not issued yet") | |
118 | 118 | let ap = assetBalance(al[P], am) | |
119 | 119 | let aq = assetBalance(al[N], am) | |
120 | 120 | let ar = (assetBalance(al[Q], am) - an) | |
121 | 121 | let as = assetBalance(al[R], am) | |
122 | 122 | let at = al[S] | |
123 | 123 | let au = (assetBalance(at, am) + valueOrElse(getInteger(at, A), 0)) | |
124 | 124 | let av = ((ap + ar) + au) | |
125 | 125 | let aw = valueOrErrorMessage(getBinary(al[Q], "wlg_assetId"), "Not initialized yet") | |
126 | 126 | let ax = lastBlock.timestamp | |
127 | 127 | let ay = valueOrErrorMessage(getInteger(al[Q], y), "Not initialized") | |
128 | 128 | let az = fraction(c, d, a) | |
129 | 129 | let aA = valueOrElse(getInteger(al[Q], n), az) | |
130 | 130 | let aB = valueOrElse(getInteger(al[Q], m), ay) | |
131 | 131 | let aC = addressFromStringValue(value(getString(al[Q], k))) | |
132 | 132 | let aD = min([fraction(az, (ax - aB), h), aA]) | |
133 | 133 | let aE = assetBalance(aC, aw) | |
134 | 134 | let aF = fraction(c, e, a) | |
135 | 135 | let aG = valueOrElse(getInteger(al[Q], p), aF) | |
136 | 136 | let aH = valueOrElse(getInteger(al[Q], o), ay) | |
137 | 137 | let aI = addressFromStringValue(value(getString(al[Q], l))) | |
138 | 138 | let aJ = min([fraction(aF, (ax - aH), (3 * h)), aG]) | |
139 | 139 | let aK = assetBalance(aI, aw) | |
140 | 140 | let aL = fraction(c, f, a) | |
141 | 141 | let aM = valueOrElse(getInteger(al[Q], r), aL) | |
142 | 142 | let aN = valueOrElse(getInteger(al[Q], q), ay) | |
143 | 143 | let aO = min([fraction(aL, (ax - aN), (3 * h)), aM]) | |
144 | 144 | let aP = assetBalance(al[N], aw) | |
145 | 145 | let aQ = valueOrElse(getInteger(al[Q], t(ak)), ay) | |
146 | 146 | let aR = ((aQ - ay) / h) | |
147 | 147 | let aS = min([ax, (ay + (3 * h))]) | |
148 | 148 | let aT = min([((ax - ay) / h), 2]) | |
149 | 149 | let aU = T(ak, al[O]) | |
150 | 150 | let aV = w(aT) | |
151 | 151 | let aW = fraction(if ((aR == aT)) | |
152 | 152 | then fraction(aV, (aS - aQ), h) | |
153 | 153 | else if ((aR == (aT - 1))) | |
154 | 154 | then (fraction(w((aT - 1)), ((ay + (h * aT)) - aQ), h) + fraction(aV, (aS - (ay + (h * aT))), h)) | |
155 | 155 | else ((fraction(w((aT - 2)), ((ay + (h * (aT - 1))) - aQ), h) + w((aT - 1))) + fraction(aV, (aS - (ay + (h * aT))), h)), aU[1], aU[0]) | |
156 | 156 | let aX = fraction(fraction(aV, j, h), 25, aU[0]) | |
157 | 157 | let aY = valueOrElse(getInteger(al[Q], s), 0) | |
158 | 158 | [ao, fraction(av, b, ao), av, ap, aq, ar, as, ay, aB, az, aA, aD, aE, aF, aG, aJ, aK, aL, aM, aO, aP, aT, aY, aV, aQ, aW, aX, au] | |
159 | 159 | } | |
160 | 160 | ||
161 | 161 | ||
162 | 162 | let aZ = true | |
163 | 163 | ||
164 | 164 | let ba = take(drop(this.bytes, 1), 1) | |
165 | 165 | ||
166 | 166 | let bb = { | |
167 | 167 | let bc = ba | |
168 | 168 | if ((base58'2W' == bc)) | |
169 | 169 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
170 | 170 | else if ((base58'2T' == bc)) | |
171 | 171 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
172 | 172 | else throw("Unknown chain") | |
173 | 173 | } | |
174 | 174 | ||
175 | 175 | let bd = { | |
176 | 176 | let bc = ba | |
177 | 177 | if ((base58'2W' == bc)) | |
178 | 178 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
179 | 179 | else if ((base58'2T' == bc)) | |
180 | 180 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
181 | 181 | else throw("Unknown chain") | |
182 | 182 | } | |
183 | 183 | ||
184 | 184 | let be = { | |
185 | 185 | let bc = ba | |
186 | 186 | if ((base58'2W' == bc)) | |
187 | 187 | then 600000 | |
188 | 188 | else if ((base58'2T' == bc)) | |
189 | 189 | then 60000 | |
190 | 190 | else throw("Unknown chain") | |
191 | 191 | } | |
192 | 192 | ||
193 | 193 | let bf = "__" | |
194 | 194 | ||
195 | 195 | let bg = 1000000 | |
196 | 196 | ||
197 | 197 | let bh = 100000000 | |
198 | 198 | ||
199 | 199 | let bi = 100000 | |
200 | 200 | ||
201 | 201 | func bj (bk,bl) = valueOrErrorMessage(getString(bk, bl), makeString(["mandatory ", toString(bk), ".", bl, " is not defined"], "")) | |
202 | 202 | ||
203 | 203 | ||
204 | 204 | let bm = 1 | |
205 | 205 | ||
206 | 206 | let bn = 2 | |
207 | 207 | ||
208 | 208 | let bo = 3 | |
209 | 209 | ||
210 | 210 | let bp = 4 | |
211 | 211 | ||
212 | 212 | let bq = 5 | |
213 | 213 | ||
214 | 214 | let br = 6 | |
215 | 215 | ||
216 | 216 | func bs () = "%s__restConfig" | |
217 | 217 | ||
218 | 218 | ||
219 | 219 | func bt () = "%s__restAddr" | |
220 | 220 | ||
221 | 221 | ||
222 | 222 | func bu (bv) = split_4C(bj(bv, bs()), bf) | |
223 | 223 | ||
224 | 224 | ||
225 | 225 | func bw (bx,by) = valueOrErrorMessage(addressFromString(bx[by]), ("Rest cfg doesn't contain address at index " + toString(by))) | |
226 | 226 | ||
227 | 227 | ||
228 | 228 | let bz = addressFromStringValue(valueOrElse(getString(this, bt()), bd)) | |
229 | 229 | ||
230 | 230 | let bx = bu(bz) | |
231 | 231 | ||
232 | 232 | let V = bw(bx, bm) | |
233 | 233 | ||
234 | 234 | let bA = bw(bx, bn) | |
235 | 235 | ||
236 | 236 | let bB = bw(bx, bo) | |
237 | 237 | ||
238 | 238 | let bC = bw(bx, bp) | |
239 | 239 | ||
240 | 240 | let bD = bw(bx, bq) | |
241 | 241 | ||
242 | 242 | let at = bw(bx, br) | |
243 | 243 | ||
244 | 244 | let bE = "wlg_assetId" | |
245 | 245 | ||
246 | 246 | let bF = valueOrErrorMessage(getBinary(bC, bE), "Not initialized yet") | |
247 | 247 | ||
248 | 248 | let bG = 1 | |
249 | 249 | ||
250 | 250 | func bH () = "resTypesProportions" | |
251 | 251 | ||
252 | 252 | ||
253 | 253 | func bI (bJ) = ("stakedPiecesByOwner_" + bJ) | |
254 | 254 | ||
255 | 255 | ||
256 | 256 | func bK (bL) = { | |
257 | 257 | let bc = bL | |
258 | 258 | if ($isInstanceOf(bc, "Int")) | |
259 | 259 | then { | |
260 | 260 | let bM = bc | |
261 | 261 | bM | |
262 | 262 | } | |
263 | 263 | else throw("fail to cast into Int") | |
264 | 264 | } | |
265 | 265 | ||
266 | 266 | ||
267 | 267 | func bN (U) = { | |
268 | 268 | let W = split(valueOrElse(getString(V, bH()), "0_0_0_0_0_0"), "_") | |
269 | 269 | func X (Y,Z) = (Y + parseIntValue(Z)) | |
270 | 270 | ||
271 | 271 | let aa = { | |
272 | 272 | let ab = W | |
273 | 273 | let ac = size(ab) | |
274 | 274 | let ad = 0 | |
275 | 275 | func ae (af,ag) = if ((ag >= ac)) | |
276 | 276 | then af | |
277 | 277 | else X(af, ab[ag]) | |
278 | 278 | ||
279 | 279 | func ah (af,ag) = if ((ag >= ac)) | |
280 | 280 | then af | |
281 | 281 | else throw("List size exceeds 6") | |
282 | 282 | ||
283 | 283 | ah(ae(ae(ae(ae(ae(ae(ad, 0), 1), 2), 3), 4), 5), 6) | |
284 | 284 | } | |
285 | 285 | let ai = valueOrElse(getInteger(V, bI(U)), 0) | |
286 | 286 | [aa, ai] | |
287 | 287 | } | |
288 | 288 | ||
289 | 289 | ||
290 | 290 | func bO (bP,bQ) = { | |
291 | 291 | let bR = pow(10, 0, bQ, 0, 0, DOWN) | |
292 | - | ((toString((bP / bR)) + ".") + toString((bP % bR))) | |
292 | + | let bS = toString((bP % bR)) | |
293 | + | let bT = size(bS) | |
294 | + | let bU = take(toString(bR), bT) | |
295 | + | (((toString((bP / bR)) + ".") + bU) + bS) | |
293 | 296 | } | |
294 | 297 | ||
295 | 298 | ||
296 | - | let | |
299 | + | let bV = 100000000 | |
297 | 300 | ||
298 | - | let | |
301 | + | let bW = 50000000 | |
299 | 302 | ||
300 | - | let | |
303 | + | let bX = "profitAddr" | |
301 | 304 | ||
302 | - | let | |
305 | + | let bY = "stakersAmountPaidTotal" | |
303 | 306 | ||
304 | - | func | |
307 | + | func bZ (u) = ("stakersAmountPaidUser_" + u) | |
305 | 308 | ||
306 | 309 | ||
307 | - | func | |
310 | + | func ca () = bK(invoke(V, "saveLastTx", nil, nil)) | |
308 | 311 | ||
309 | 312 | ||
310 | - | func | |
311 | - | let | |
313 | + | func cb (u) = { | |
314 | + | let cc = valueOrElse(getInteger(v(u)), 0) | |
312 | 315 | let ax = lastBlock.timestamp | |
313 | - | if ((be > (ax - | |
316 | + | if ((be > (ax - cc))) | |
314 | 317 | then throw((("Arbitrages are possible once a " + toString((be / 60000))) + "min")) | |
315 | 318 | else { | |
316 | - | let | |
317 | - | let | |
318 | - | fraction( | |
319 | + | let cd = bN(u)[bG] | |
320 | + | let ce = pow(cd, 0, bW, 8, 8, CEILING) | |
321 | + | fraction(bV, ce, bh) | |
319 | 322 | } | |
320 | 323 | } | |
321 | 324 | ||
322 | 325 | ||
323 | - | func | |
326 | + | func cf (u) = if (!(aZ)) | |
324 | 327 | then $Tuple2(nil, 0) | |
325 | 328 | else { | |
326 | - | let | |
327 | - | let | |
329 | + | let cg = addressFromStringValue(u) | |
330 | + | let ch = aj(u, [bz, V, bA, bB, bC, bD, at], bb, 0) | |
328 | 331 | let ax = lastBlock.timestamp | |
329 | - | let ay = | |
330 | - | let aA = | |
331 | - | let | |
332 | - | let aG = | |
333 | - | let | |
334 | - | let aM = | |
335 | - | let | |
332 | + | let ay = ch[E] | |
333 | + | let aA = ch[F] | |
334 | + | let ci = ch[G] | |
335 | + | let aG = ch[H] | |
336 | + | let cj = ch[I] | |
337 | + | let aM = ch[J] | |
338 | + | let ck = ch[K] | |
336 | 339 | if (((ax - ay) > i)) | |
337 | 340 | then throw("Please modify contract for next 1.5 years, according to stats") | |
338 | 341 | else { | |
339 | - | let aW = | |
340 | - | let | |
341 | - | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), | |
342 | + | let aW = ch[M] | |
343 | + | let cl = bZ(u) | |
344 | + | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), ci, bF), ScriptTransfer(addressFromStringValue(value(getString(l))), cj, bF), ScriptTransfer(bz, ck, bF), ScriptTransfer(cg, aW, bF), IntegerEntry(cl, (valueOrElse(getInteger(cl), 0) + aW)), IntegerEntry(bY, (valueOrElse(getInteger(bY), 0) + aW)), IntegerEntry(s, (ch[L] - aW)), IntegerEntry(n, (aA - ci)), IntegerEntry(m, ax), IntegerEntry(p, (aG - cj)), IntegerEntry(o, ax), IntegerEntry(r, (aM - ck)), IntegerEntry(q, ax), IntegerEntry(t(u), ax)], aW) | |
342 | 345 | } | |
343 | 346 | } | |
344 | 347 | ||
345 | 348 | ||
346 | - | @Callable( | |
347 | - | func constructorV1 ( | |
349 | + | @Callable(cm) | |
350 | + | func constructorV1 (cn,aC,aI,co) = if ((cm.caller != this)) | |
348 | 351 | then throw("Permission denied") | |
349 | 352 | else if (isDefined(getBinary(bE))) | |
350 | 353 | then throw("Already initialized") | |
351 | 354 | else { | |
352 | 355 | let ao = c | |
353 | - | let | |
354 | - | let | |
355 | - | [ | |
356 | + | let cp = Issue("WLGOLD", "WavesLands Gold investment token", ao, 8, true, unit, 0) | |
357 | + | let cq = calculateAssetId(cp) | |
358 | + | [cp, IntegerEntry(y, lastBlock.timestamp), IntegerEntry(z, ao), IntegerEntry(bY, 0), IntegerEntry(s, fraction(c, g, bg)), BinaryEntry(bE, cq), StringEntry(bt(), cn), StringEntry(k, aC), StringEntry(l, aI), StringEntry(bX, co)] | |
356 | 359 | } | |
357 | 360 | ||
358 | 361 | ||
359 | 362 | ||
360 | - | @Callable( | |
361 | - | func buyWlg ( | |
363 | + | @Callable(cm) | |
364 | + | func buyWlg (cr) = if (!(aZ)) | |
362 | 365 | then $Tuple2(nil, 0) | |
363 | 366 | else { | |
364 | - | let | |
365 | - | if ((size( | |
367 | + | let cs = ca() | |
368 | + | if ((size(cm.payments) != 1)) | |
366 | 369 | then throw("exactly 1 payment must be attached") | |
367 | 370 | else { | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | if (( | |
371 | + | let ct = cm.payments[0] | |
372 | + | let cu = ct.amount | |
373 | + | let cv = valueOrErrorMessage(ct.assetId, "USDT payments only!") | |
374 | + | if ((cv != bb)) | |
372 | 375 | then throw("USDT payments only!") | |
373 | 376 | else { | |
374 | - | let | |
375 | - | let u = toString( | |
376 | - | let | |
377 | - | if (( | |
378 | - | then throw((("You can spend max " + bO( | |
379 | - | else if ((bi > | |
377 | + | let cg = cm.caller | |
378 | + | let u = toString(cg) | |
379 | + | let cw = cb(u) | |
380 | + | if ((cu > cw)) | |
381 | + | then throw((("You can spend max " + bO(cw, 6)) + " USDT")) | |
382 | + | else if ((bi > cu)) | |
380 | 383 | then throw((("You can trade min " + bO(bi, 6)) + " USDT")) | |
381 | 384 | else { | |
382 | - | let | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | let | |
388 | - | if (( | |
385 | + | let ch = aj("", [bz, V, bA, bB, bC, bD, at], bb, cu) | |
386 | + | let cx = ch[B] | |
387 | + | let cy = ch[D] | |
388 | + | let cz = fraction(cy, bh, cx) | |
389 | + | let cA = fraction(cz, 6, 5) | |
390 | + | let cB = fraction(cu, bh, cA) | |
391 | + | if ((cr > cB)) | |
389 | 392 | then throw("Price changed during operation, please try again") | |
390 | 393 | else { | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | $Tuple2([Reissue(bF, | |
394 | + | let cC = (cu / 6) | |
395 | + | let cD = (cu - cC) | |
396 | + | let cE = fraction(cx, cD, cy) | |
397 | + | $Tuple2([Reissue(bF, cE, true), IntegerEntry(z, (cx + cE)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(bX))), cC, bb), ScriptTransfer(cg, cB, bF)], cs) | |
395 | 398 | } | |
396 | 399 | } | |
397 | 400 | } | |
398 | 401 | } | |
399 | 402 | } | |
400 | 403 | ||
401 | 404 | ||
402 | 405 | ||
403 | - | @Callable( | |
404 | - | func sellWlg ( | |
406 | + | @Callable(cm) | |
407 | + | func sellWlg (cr) = if (!(aZ)) | |
405 | 408 | then $Tuple2(nil, 0) | |
406 | 409 | else { | |
407 | - | let | |
408 | - | if ((size( | |
410 | + | let cs = ca() | |
411 | + | if ((size(cm.payments) != 1)) | |
409 | 412 | then throw("exactly 1 payment must be attached") | |
410 | 413 | else { | |
411 | - | let | |
412 | - | let | |
413 | - | let | |
414 | - | if (( | |
414 | + | let ct = cm.payments[0] | |
415 | + | let cF = ct.amount | |
416 | + | let cv = valueOrErrorMessage(ct.assetId, "WLGOLD payments only!") | |
417 | + | if ((cv != bF)) | |
415 | 418 | then throw("WLGOLD payments only!") | |
416 | 419 | else { | |
417 | - | let | |
418 | - | let u = toString( | |
419 | - | let | |
420 | - | let | |
421 | - | let | |
422 | - | let | |
423 | - | let | |
424 | - | if (( | |
425 | - | then throw((("You can get max " + bO( | |
426 | - | else if ((bi > | |
420 | + | let cg = cm.caller | |
421 | + | let u = toString(cg) | |
422 | + | let cw = cb(u) | |
423 | + | let ch = aj("", [bz, V, bA, bB, bC, bD, at], bb, 0) | |
424 | + | let cx = ch[B] | |
425 | + | let cG = fraction(ch[C], 4, 5) | |
426 | + | let cu = fraction(cF, cG, bh) | |
427 | + | if ((cu > cw)) | |
428 | + | then throw((("You can get max " + bO(cw, 6)) + " USDT")) | |
429 | + | else if ((bi > cu)) | |
427 | 430 | then throw((("You can trade min " + bO(bi, 6)) + " USDT")) | |
428 | - | else if (( | |
431 | + | else if ((cr > cu)) | |
429 | 432 | then throw("Price changed during operation, please try again") | |
430 | 433 | else { | |
431 | - | let | |
432 | - | let | |
433 | - | $Tuple2([Burn(bF, | |
434 | + | let cC = (cu / 4) | |
435 | + | let cH = fraction((cu + cC), cx, ch[D]) | |
436 | + | $Tuple2([Burn(bF, cH), IntegerEntry(z, (cx - cH)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(bX))), cC, bb), ScriptTransfer(cg, cu, bb)], cs) | |
434 | 437 | } | |
435 | 438 | } | |
436 | 439 | } | |
437 | 440 | } | |
438 | 441 | ||
439 | 442 | ||
440 | 443 | ||
441 | - | @Callable( | |
444 | + | @Callable(cm) | |
442 | 445 | func claim () = { | |
443 | - | let | |
444 | - | if ((size( | |
446 | + | let cs = ca() | |
447 | + | if ((size(cm.payments) != 0)) | |
445 | 448 | then throw("No payments required") | |
446 | 449 | else { | |
447 | - | let | |
448 | - | $Tuple2( | |
450 | + | let cI = cf(toString(cm.caller))._1 | |
451 | + | $Tuple2(cI, cs) | |
449 | 452 | } | |
450 | 453 | } | |
451 | 454 | ||
452 | 455 | ||
453 | 456 | ||
454 | - | @Callable( | |
455 | - | func onStakeUnstakeLand (u) = if (( | |
457 | + | @Callable(cm) | |
458 | + | func onStakeUnstakeLand (u) = if ((cm.caller != V)) | |
456 | 459 | then throw("Permission denied") | |
457 | - | else | |
460 | + | else cf(u) | |
458 | 461 | ||
459 | 462 |
github/deemru/w8io/026f985 101.04 ms ◑