tx · FcGnZMLzf85ueyh6gMKVYNLiyzFY9kAKdDKEauwSnoWc

3P3NVrhiyHBc4oUWNhtZRnJA5uLX9n39TK9:  -0.01000000 Waves

2022.07.05 18:50 [3192163] smart account 3P3NVrhiyHBc4oUWNhtZRnJA5uLX9n39TK9 > SELF 0.00000000 Waves

{ "type": 13, "id": "FcGnZMLzf85ueyh6gMKVYNLiyzFY9kAKdDKEauwSnoWc", "fee": 1000000, "feeAssetId": null, "timestamp": 1657036132756, "version": 1, "sender": "3P3NVrhiyHBc4oUWNhtZRnJA5uLX9n39TK9", "senderPublicKey": "GeY4VJBhADH72vNVpDy6WUGW2rM2e2TjfnK8d4Kxzz59", "proofs": [ "45ZDcNdVLrYhFfgjBffWymniKzKP4ZkJqbwrLYZPurQx4RMQNNqHUF6c3ZHQesQzD4Pcbox47mTEmDgS1BZ5YMYK" ], "script": "base64:BgIiCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgUKAwgBBBkBEHdyaXRlQ29uc3RTdHJpbmcCA2tleQV2YWx1ZQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQELU3RyaW5nRW50cnkCBQNrZXkFBXZhbHVlCQACAQkArAICAhVhbHJlYWR5IGluaXRpYWxpemVkOiAFA2tleQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIEbTM6MQEGYXNJbnQyAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBeAUHJG1hdGNoMAUBeAQBdAUHJG1hdGNoMAkAAgECGndyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQyAAtjb25maWdTdG9yZQIGY29uZmlnAA1jb25maWdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQtjb25maWdTdG9yZQAGbG9ja2VyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCCWxwX2xvY2tlcgIebm8gbHBfbG9ja2VyIGFkZHJlc3MgaW4gY29uZmlnAh9iYWQgbHBfbG9ja2VyIGFkZHJlc3MgaW4gY29uZmlnAAtyZXNlcnZlc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCE3Jld2FyZGFibGVfcmVzZXJ2ZXMCIW5vIHJld2FyZGFibGVfcmVzZXJ2ZXMgcmVnaXN0ZXJlZAAIcmVzZXJ2ZXMJALwJAgULcmVzZXJ2ZXNTdHICAXwAA21WRAQHJG1hdGNoMAkAnQgCBQ1jb25maWdBZGRyZXNzAhF2aXJlc19kaXN0cmlidXRvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWQFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWQFBHVuaXQAAlZECQETdmFsdWVPckVycm9yTWVzc2FnZQIFA21WRAIIbm8gZGlzdHIAAmRDCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEmRpdmlkZW5kc19jb250cmFjdAIVbm8gZGl2aWRlbmRzX2NvbnRyYWN0AgdiYWQgZGl2AAt2aXJlc01pbnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgx2aXJlc19taW50ZXICFG1haW46IG5vIHZpcmVzTWludGVyAgpiYWQgbWludGVyABFtYXliZVZpcmVzQXNzZXRJZAkAnQgCBQt2aXJlc01pbnRlcgIHYXNzZXRJZAAMdmlyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRFtYXliZVZpcmVzQXNzZXRJZAILbm8gdmlyZXMgaWQCEGludmFsaWQgdmlyZXMgaWQBCXJlc2VydmVCeQIFc3RvcmUFdmFsdWUKAQRmb2xkAgFhAXIEByRtYXRjaDAFAWEDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQFZm91bmQFByRtYXRjaDAFBWZvdW5kBANyc3IJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQFyAg9yc3IgYmFkIGFkZHJlc3MDCQAAAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFA3JzcgUFc3RvcmUJAKwCAgILcnNyIGhhcyBubyAFBXN0b3JlBQV2YWx1ZQUDcnNyBQR1bml0BAckbWF0Y2gwCgACJGwFCHJlc2VydmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBWZvdW5kBQckbWF0Y2gwBQVmb3VuZAkAAgEJAKwCAgIIdW5rbm93biAFBXN0b3JlAQN2bFIBAXIDCQEIY29udGFpbnMCBQtyZXNlcnZlc1N0cgUBcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAXICDW1haW46IGJhZCByc3IJAAIBCQCsAgICDHVua25vd24gcnNyOgUBcgAObWF5YmVQcm90ZWN0ZWQEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIRcHJvdGVjdGVkX3Jlc2VydmUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANwZHMFByRtYXRjaDAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQNwZHMCDWJhZCBwcm90ZWN0ZWQFBHVuaXQAEHByb3RlY3RlZFJlc2VydmUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUObWF5YmVQcm90ZWN0ZWQCEG5vIHByb3RlY3RlZCByc3IBEWVuc3VyZU5vUHJvdGVjdGVkAQR1c2VyBANoYXMEByRtYXRjaDAFDm1heWJlUHJvdGVjdGVkAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAnBhBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIFAnBhCQCsAgICFXByb3RlY3RlZF9jb2xsYXRlcmFsXwUEdXNlcgcHAwUDaGFzCQACAQIKZGlzYWxsb3dlZAUEdW5pdAAFYVRJZFMCCGFUb2tlbklkAQxsb2NrT3JQYXlvdXQDCXJlY2lwaWVudANhbXQEbG9jawMJAQEhAQUEbG9jawkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQlyZWNpcGllbnQFA2FtdAUMdmlyZXNBc3NldElkBQNuaWwEBmRvTG9jawkA/AcEBQJkQwIHbG9ja0ZvcgkAzAgCCQClCAEFCXJlY2lwaWVudAkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMdmlyZXNBc3NldElkBQNhbXQFA25pbAMJAAACBQZkb0xvY2sFBmRvTG9jawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJzUgEDcnNyBAckbWF0Y2gwBQNtVkQDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAkA/AcEBQFhAgpzeW5jSGVpZ2h0CQDMCAIFA3JzcgUDbmlsBQNuaWwFBHVuaXQBAnVTBQNyc3IGYWN0aW9uBHVzZXIKdXNlckNoYW5nZQxzdHJlYW1DaGFuZ2UEByRtYXRjaDAFA21WRAMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwCQD8BwQFAWECCG9uQWN0aW9uCQDMCAIFA3JzcgkAzAgCBQZhY3Rpb24JAMwIAgUEdXNlcgkAzAgCBQp1c2VyQ2hhbmdlCQDMCAIFDHN0cmVhbUNoYW5nZQUDbmlsBQNuaWwFBHVuaXQAB2xpbWl0ZXIEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIHbGltaXRlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWQFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWQFBHVuaXQBC2Vuc3VyZUxpbWl0BAZhY3Rpb24DcnNyBHVzZXIGYW1vdW50BAckbWF0Y2gwBQdsaW1pdGVyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWwFByRtYXRjaDAJAQVhc0ludAEJAPwHBAUBbAINdmFsaWRhdGVMaW1pdAkAzAgCBQZhY3Rpb24JAMwIAgkApQgBBQNyc3IJAMwIAgUEdXNlcgkAzAgCBQZhbW91bnQFA25pbAUDbmlsBgYBaQEKaW5pdGlhbGl6ZQECY2EJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCBQtjb25maWdTdG9yZQUCY2EFA25pbAFpARh3aXRoZHJhd1VubG9ja2VkTFBUb2tlbnMBCGFUb2tlbklkBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQGY2hlY2tzCQEJcmVzZXJ2ZUJ5AgUFYVRJZFMFCGFUb2tlbklkAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAFjCQD8BwQFBmxvY2tlcgIWY2xlYW5VcERpc3RyaWJ1dGlvbkZvcgkAzAgCBQR1c2VyCQDMCAIFCGFUb2tlbklkBQNuaWwFA25pbAMJAAACBQFjBQFjBAJ3ZAkBBWFzSW50AQkA/AcEBQZsb2NrZXICCHdpdGhkcmF3CQDMCAIFBHVzZXIJAMwIAgUIYVRva2VuSWQJAMwIAgUEdXNlcgUDbmlsBQNuaWwDCQAAAgUCd2QFAndkCQCUCgIFA25pbAUCd2QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdd2l0aGRyYXdTbGFzaGVkTG9ja2VkTFBUb2tlbnMBCGFUb2tlbklkBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQGY2hlY2tzCQEJcmVzZXJ2ZUJ5AgUFYVRJZFMFCGFUb2tlbklkAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAskdDA0Mzk4NDU0NQkBBmFzSW50MgEJAPwHBAUGbG9ja2VyAg93aXRoZHJhd1NsYXNoZWQJAMwIAgUEdXNlcgkAzAgCBQhhVG9rZW5JZAkAzAgCBQR1c2VyBQNuaWwFA25pbAMJAAACBQskdDA0Mzk4NDU0NQULJHQwNDM5ODQ1NDUEB3NsYXNoZWQIBQskdDA0Mzk4NDU0NQJfMgQCd2QIBQskdDA0Mzk4NDU0NQJfMQQIdHJlYXN1cnkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxkYW9fdHJlYXN1cnkCFm5vIHRyZWFzdXJ5IGNvbmZpZ3VyZWQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh0cmVhc3VyeQUHc2xhc2hlZAkA2QQBBQhhVG9rZW5JZAUDbmlsBQJ3ZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZzdXBwbHlVbmxvY2tlZExQVG9rZW5zAQhhVG9rZW5JZAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEA3JzcgkBCXJlc2VydmVCeQIFBWFUSWRTBQhhVG9rZW5JZAMJAAACBQNyc3IFA3JzcgQBYwkA/AcEBQZsb2NrZXICFmNsZWFuVXBEaXN0cmlidXRpb25Gb3IJAMwIAgUEdXNlcgkAzAgCBQhhVG9rZW5JZAUDbmlsBQNuaWwDCQAAAgUBYwUBYwQCd2QJAQVhc0ludAEJAPwHBAUGbG9ja2VyAgh3aXRoZHJhdwkAzAgCBQR1c2VyCQDMCAIFCGFUb2tlbklkCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQAAAgUCd2QFAndkBAZjaGVja3MJARFlbnN1cmVOb1Byb3RlY3RlZAEFBHVzZXIDCQAAAgUGY2hlY2tzBQZjaGVja3MEAnNoCQECc1IBCQClCAEFA3JzcgMJAAACBQJzaAUCc2gEDHJlcGxlbmlzaEFtdAkBBWFzSW50AQkA/AcEBQNyc3ICFnJlcGxlbmlzaFdpdGhBdG9rZW5Gb3IJAMwIAgUEdXNlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFCGFUb2tlbklkBQJ3ZAUDbmlsAwkAAAIFDHJlcGxlbmlzaEFtdAUMcmVwbGVuaXNoQW10BANwUncJAQJ1UwUJAKUIAQUDcnNyAgdkZXBvc2l0BQR1c2VyBQxyZXBsZW5pc2hBbXQAAAMJAAACBQNwUncFA3BSdwkAlAoCBQNuaWwFAndkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFnJlZGVlbVVubG9ja2VkTFBUb2tlbnMBCGFUb2tlbklkBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQDcnNyCQEJcmVzZXJ2ZUJ5AgUFYVRJZFMFCGFUb2tlbklkAwkAAAIFA3JzcgUDcnNyBAFjCQD8BwQFBmxvY2tlcgIWY2xlYW5VcERpc3RyaWJ1dGlvbkZvcgkAzAgCBQR1c2VyCQDMCAIFCGFUb2tlbklkBQNuaWwFA25pbAMJAAACBQFjBQFjBAJ3ZAkBBWFzSW50AQkA/AcEBQZsb2NrZXICCHdpdGhkcmF3CQDMCAIFBHVzZXIJAMwIAgUIYVRva2VuSWQJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAACBQJ3ZAUCd2QEAnNoCQECc1IBCQClCAEFA3JzcgMJAAACBQJzaAUCc2gEA2FtdAkBBWFzSW50AQkA/AcEBQNyc3ICEHJlZGVlbUF0b2tlbnNGb3IJAMwIAgUEdXNlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFCGFUb2tlbklkBQJ3ZAUDbmlsAwkAAAIFA2FtdAUDYW10BAFlCQELZW5zdXJlTGltaXQEAgh3aXRoZHJhdwUDcnNyBQR1c2VyBQNhbXQDCQAAAgUBZQUBZQQDcFJ3CQECdVMFCQClCAEFA3JzcgIHZGVwb3NpdAUEdXNlcgAACQEBLQEFA2FtdAMJAAACBQNwUncFA3BSdwkAlAoCBQNuaWwFAndkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsYWltTHBSZXdhcmQDA3JzcgNhbXQEbG9jawQBdgkBA3ZsUgEFA3JzcgMJAAACBQF2BQF2BAhhVG9rZW5JZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXYFBWFUSWRTAhZubyBhVG9rZW5JZCBpbiByZXNlcnZlBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBYwkBBWFzSW50AQkA/AcEBQZsb2NrZXICEGNsYWltTHBSZXdhcmRGb3IJAMwIAgUEdXNlcgkAzAgCBQhhVG9rZW5JZAkAzAgCBQNhbXQFA25pbAUDbmlsAwkAAAIFAWMFAWMJAQxsb2NrT3JQYXlvdXQDCAUBaQZjYWxsZXIFAWMFBGxvY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AMXPrxQ==", "chainId": 87, "height": 3192163, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GKMWzcsZDL5awfmDMA6ZgbQUirL8weiuvgTFHMnGQ2v2 Next: 9BFYqEW5dHfR9dGVg5x3NuvPdncZFBW51HBEYoxKmWDu Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
1010 case int: Int =>
1111 int
1212 case _ =>
13- throw("1")
13+ throw("m3:1")
14+}
15+
16+
17+func asInt2 (value) = match value {
18+ case x: (Int, Int) =>
19+ x
20+ case t =>
21+ throw("wrong type, expected: Int2")
1422 }
1523
1624
2230
2331 let reservesStr = valueOrErrorMessage(getString(configAddress, "rewardable_reserves"), "no rewardable_reserves registered")
2432
25-let reserves = split(reservesStr, "|")
33+let reserves = split_4C(reservesStr, "|")
2634
2735 let mVD = match getString(configAddress, "vires_distributor") {
2836 case d: String =>
6169
6270 func $f0_2 ($a,$i) = if (($i >= $s))
6371 then $a
64- else throw("List size exceeds 7")
72+ else throw("List size exceeds 20")
6573
66- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7) {
74+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20) {
6775 case found: Address =>
6876 found
6977 case _ =>
160168 if ((wd == wd))
161169 then $Tuple2(nil, wd)
162170 else throw("Strict value is not equal to itself.")
171+ }
172+ else throw("Strict value is not equal to itself.")
173+ }
174+ else throw("Strict value is not equal to itself.")
175+ }
176+
177+
178+
179+@Callable(i)
180+func withdrawSlashedLockedLPTokens (aTokenId) = {
181+ let user = toString(i.caller)
182+ let checks = reserveBy(aTIdS, aTokenId)
183+ if ((checks == checks))
184+ then {
185+ let $t043984545 = asInt2(invoke(locker, "withdrawSlashed", [user, aTokenId, user], nil))
186+ if (($t043984545 == $t043984545))
187+ then {
188+ let slashed = $t043984545._2
189+ let wd = $t043984545._1
190+ let treasury = addressFromStringValue(valueOrErrorMessage(getString(configAddress, "dao_treasury"), "no treasury configured"))
191+ $Tuple2([ScriptTransfer(treasury, slashed, fromBase58String(aTokenId))], wd)
163192 }
164193 else throw("Strict value is not equal to itself.")
165194 }
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
55 then StringEntry(key, value)
66 else throw(("already initialized: " + key))
77
88
99 func asInt (value) = match value {
1010 case int: Int =>
1111 int
1212 case _ =>
13- throw("1")
13+ throw("m3:1")
14+}
15+
16+
17+func asInt2 (value) = match value {
18+ case x: (Int, Int) =>
19+ x
20+ case t =>
21+ throw("wrong type, expected: Int2")
1422 }
1523
1624
1725 let configStore = "config"
1826
1927 let configAddress = addressFromStringValue(getStringValue(this, configStore))
2028
2129 let locker = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "lp_locker"), "no lp_locker address in config")), "bad lp_locker address in config")
2230
2331 let reservesStr = valueOrErrorMessage(getString(configAddress, "rewardable_reserves"), "no rewardable_reserves registered")
2432
25-let reserves = split(reservesStr, "|")
33+let reserves = split_4C(reservesStr, "|")
2634
2735 let mVD = match getString(configAddress, "vires_distributor") {
2836 case d: String =>
2937 addressFromStringValue(d)
3038 case _ =>
3139 unit
3240 }
3341
3442 let VD = valueOrErrorMessage(mVD, "no distr")
3543
3644 let dC = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "dividends_contract"), "no dividends_contract")), "bad div")
3745
3846 let viresMinter = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "vires_minter"), "main: no viresMinter")), "bad minter")
3947
4048 let maybeViresAssetId = getString(viresMinter, "assetId")
4149
4250 let viresAssetId = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(maybeViresAssetId, "no vires id")), "invalid vires id")
4351
4452 func reserveBy (store,value) = {
4553 func fold (a,r) = match a {
4654 case found: Address =>
4755 found
4856 case _ =>
4957 let rsr = valueOrErrorMessage(addressFromString(r), "rsr bad address")
5058 if ((valueOrErrorMessage(getString(rsr, store), ("rsr has no " + store)) == value))
5159 then rsr
5260 else unit
5361 }
5462
5563 match let $l = reserves
5664 let $s = size($l)
5765 let $acc0 = unit
5866 func $f0_1 ($a,$i) = if (($i >= $s))
5967 then $a
6068 else fold($a, $l[$i])
6169
6270 func $f0_2 ($a,$i) = if (($i >= $s))
6371 then $a
64- else throw("List size exceeds 7")
72+ else throw("List size exceeds 20")
6573
66- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7) {
74+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20) {
6775 case found: Address =>
6876 found
6977 case _ =>
7078 throw(("unknown " + store))
7179 }
7280 }
7381
7482
7583 func vlR (r) = if (contains(reservesStr, r))
7684 then valueOrErrorMessage(addressFromString(r), "main: bad rsr")
7785 else throw(("unknown rsr:" + r))
7886
7987
8088 let maybeProtected = match getString(configAddress, "protected_reserve") {
8189 case pds: String =>
8290 valueOrErrorMessage(addressFromString(pds), "bad protected")
8391 case _ =>
8492 unit
8593 }
8694
8795 let protectedReserve = valueOrErrorMessage(maybeProtected, "no protected rsr")
8896
8997 func ensureNoProtected (user) = {
9098 let has = match maybeProtected {
9199 case pa: Address =>
92100 valueOrElse(getBoolean(pa, ("protected_collateral_" + user)), false)
93101 case _ =>
94102 false
95103 }
96104 if (has)
97105 then throw("disallowed")
98106 else unit
99107 }
100108
101109
102110 let aTIdS = "aTokenId"
103111
104112 func lockOrPayout (recipient,amt,lock) = if (!(lock))
105113 then [ScriptTransfer(recipient, amt, viresAssetId)]
106114 else {
107115 let doLock = invoke(dC, "lockFor", [toString(recipient), 1], [AttachedPayment(viresAssetId, amt)])
108116 if ((doLock == doLock))
109117 then nil
110118 else throw("Strict value is not equal to itself.")
111119 }
112120
113121
114122 func sR (rsr) = match mVD {
115123 case a: Address =>
116124 invoke(a, "syncHeight", [rsr], nil)
117125 case _ =>
118126 unit
119127 }
120128
121129
122130 func uS (rsr,action,user,userChange,streamChange) = match mVD {
123131 case a: Address =>
124132 invoke(a, "onAction", [rsr, action, user, userChange, streamChange], nil)
125133 case _ =>
126134 unit
127135 }
128136
129137
130138 let limiter = match getString(configAddress, "limiter") {
131139 case d: String =>
132140 addressFromStringValue(d)
133141 case _ =>
134142 unit
135143 }
136144
137145 func ensureLimit (action,rsr,user,amount) = match limiter {
138146 case l: Address =>
139147 asInt(invoke(l, "validateLimit", [action, toString(rsr), user, amount], nil))
140148 case _ =>
141149 true
142150 }
143151
144152
145153 @Callable(i)
146154 func initialize (ca) = [writeConstString(configStore, ca)]
147155
148156
149157
150158 @Callable(i)
151159 func withdrawUnlockedLPTokens (aTokenId) = {
152160 let user = toString(i.caller)
153161 let checks = reserveBy(aTIdS, aTokenId)
154162 if ((checks == checks))
155163 then {
156164 let c = invoke(locker, "cleanUpDistributionFor", [user, aTokenId], nil)
157165 if ((c == c))
158166 then {
159167 let wd = asInt(invoke(locker, "withdraw", [user, aTokenId, user], nil))
160168 if ((wd == wd))
161169 then $Tuple2(nil, wd)
162170 else throw("Strict value is not equal to itself.")
171+ }
172+ else throw("Strict value is not equal to itself.")
173+ }
174+ else throw("Strict value is not equal to itself.")
175+ }
176+
177+
178+
179+@Callable(i)
180+func withdrawSlashedLockedLPTokens (aTokenId) = {
181+ let user = toString(i.caller)
182+ let checks = reserveBy(aTIdS, aTokenId)
183+ if ((checks == checks))
184+ then {
185+ let $t043984545 = asInt2(invoke(locker, "withdrawSlashed", [user, aTokenId, user], nil))
186+ if (($t043984545 == $t043984545))
187+ then {
188+ let slashed = $t043984545._2
189+ let wd = $t043984545._1
190+ let treasury = addressFromStringValue(valueOrErrorMessage(getString(configAddress, "dao_treasury"), "no treasury configured"))
191+ $Tuple2([ScriptTransfer(treasury, slashed, fromBase58String(aTokenId))], wd)
163192 }
164193 else throw("Strict value is not equal to itself.")
165194 }
166195 else throw("Strict value is not equal to itself.")
167196 }
168197
169198
170199
171200 @Callable(i)
172201 func supplyUnlockedLPTokens (aTokenId) = {
173202 let user = toString(i.caller)
174203 let rsr = reserveBy(aTIdS, aTokenId)
175204 if ((rsr == rsr))
176205 then {
177206 let c = invoke(locker, "cleanUpDistributionFor", [user, aTokenId], nil)
178207 if ((c == c))
179208 then {
180209 let wd = asInt(invoke(locker, "withdraw", [user, aTokenId, toString(this)], nil))
181210 if ((wd == wd))
182211 then {
183212 let checks = ensureNoProtected(user)
184213 if ((checks == checks))
185214 then {
186215 let sh = sR(toString(rsr))
187216 if ((sh == sh))
188217 then {
189218 let replenishAmt = asInt(invoke(rsr, "replenishWithAtokenFor", [user], [AttachedPayment(fromBase58String(aTokenId), wd)]))
190219 if ((replenishAmt == replenishAmt))
191220 then {
192221 let pRw = uS(toString(rsr), "deposit", user, replenishAmt, 0)
193222 if ((pRw == pRw))
194223 then $Tuple2(nil, wd)
195224 else throw("Strict value is not equal to itself.")
196225 }
197226 else throw("Strict value is not equal to itself.")
198227 }
199228 else throw("Strict value is not equal to itself.")
200229 }
201230 else throw("Strict value is not equal to itself.")
202231 }
203232 else throw("Strict value is not equal to itself.")
204233 }
205234 else throw("Strict value is not equal to itself.")
206235 }
207236 else throw("Strict value is not equal to itself.")
208237 }
209238
210239
211240
212241 @Callable(i)
213242 func redeemUnlockedLPTokens (aTokenId) = {
214243 let user = toString(i.caller)
215244 let rsr = reserveBy(aTIdS, aTokenId)
216245 if ((rsr == rsr))
217246 then {
218247 let c = invoke(locker, "cleanUpDistributionFor", [user, aTokenId], nil)
219248 if ((c == c))
220249 then {
221250 let wd = asInt(invoke(locker, "withdraw", [user, aTokenId, toString(this)], nil))
222251 if ((wd == wd))
223252 then {
224253 let sh = sR(toString(rsr))
225254 if ((sh == sh))
226255 then {
227256 let amt = asInt(invoke(rsr, "redeemAtokensFor", [user], [AttachedPayment(fromBase58String(aTokenId), wd)]))
228257 if ((amt == amt))
229258 then {
230259 let e = ensureLimit("withdraw", rsr, user, amt)
231260 if ((e == e))
232261 then {
233262 let pRw = uS(toString(rsr), "deposit", user, 0, -(amt))
234263 if ((pRw == pRw))
235264 then $Tuple2(nil, wd)
236265 else throw("Strict value is not equal to itself.")
237266 }
238267 else throw("Strict value is not equal to itself.")
239268 }
240269 else throw("Strict value is not equal to itself.")
241270 }
242271 else throw("Strict value is not equal to itself.")
243272 }
244273 else throw("Strict value is not equal to itself.")
245274 }
246275 else throw("Strict value is not equal to itself.")
247276 }
248277 else throw("Strict value is not equal to itself.")
249278 }
250279
251280
252281
253282 @Callable(i)
254283 func claimLpReward (rsr,amt,lock) = {
255284 let v = vlR(rsr)
256285 if ((v == v))
257286 then {
258287 let aTokenId = valueOrErrorMessage(getString(v, aTIdS), "no aTokenId in reserve")
259288 let user = toString(i.caller)
260289 let c = asInt(invoke(locker, "claimLpRewardFor", [user, aTokenId, amt], nil))
261290 if ((c == c))
262291 then lockOrPayout(i.caller, c, lock)
263292 else throw("Strict value is not equal to itself.")
264293 }
265294 else throw("Strict value is not equal to itself.")
266295 }
267296
268297

github/deemru/w8io/3ef1775 
48.96 ms