tx · 5SszvmW9JPJ6wRwx158JBG2RzUDSMdvVR8zaAZ8R5Kdi 3MwHAghvVSNQUvsYHsHSR4tAEYiVarQRrtG: -0.01400000 Waves 2019.10.28 15:41 [739979] smart account 3MwHAghvVSNQUvsYHsHSR4tAEYiVarQRrtG > SELF 0.00000000 Waves
{ "type": 13, "id": "5SszvmW9JPJ6wRwx158JBG2RzUDSMdvVR8zaAZ8R5Kdi", "fee": 1400000, "feeAssetId": null, "timestamp": 1572266568598, "version": 1, "sender": "3MwHAghvVSNQUvsYHsHSR4tAEYiVarQRrtG", "senderPublicKey": "HSPAMMmqM219QKYupVfBAUubjhXRzmEkPKqGvZWJykXU", "proofs": [ "511p6YBADeVtitYHauVZaXfH33GsszCNU8DCSfaLELFEquuV4HfgtvPUzRcdfJLQsRebiL4W3xFHv3sye9At2ibT" ], "script": "base64:AAIDAAAAAAAAAEEIARIMCgoICAgBAQEBAQEBEgoKCAgBAQEBAQEBEgASABIDCgEIEgASAwoBCBIAEgMKAQQSABIAEgMKAQQSAwoBBAAAAD0AAAAADGRlcG9zaXRUb2tlbgUAAAAEdW5pdAAAAAANb3JhY2xlRGF0YUtleQIAAAALd2F2ZXNfYnRjXzgAAAAABHRlbjgJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoAAAAAApsZW5kZXJzS2V5AgAAAAdsZW5kZXJzAAAAABFlbmFibGVkTGVuZGVyc0tleQIAAAAOZW5hYmxlZExlbmRlcnMAAAAADmdyYWNlUGVyaW9kS2V5AgAAAAtncmFjZVBlcmlvZAAAAAARaW50ZXJlc3RQZXJpb2RLZXkCAAAADmludGVyZXN0UGVyaW9kAAAAABFidXJuZG93blBlcmlvZEtleQIAAAAOYnVybmRvd25QZXJpb2QAAAAACW9yYWNsZUtleQIAAAAGb3JhY2xlAAAAABVkaXNjb3VudFBlcmNlbnRpbGVLZXkCAAAAEmRpc2NvdW50UGVyY2VudGlsZQAAAAAKbWF4UmF0ZUtleQIAAAAHbWF4UmF0ZQAAAAANYXNzZXRUb2tlbktleQIAAAAKYXNzZXRUb2tlbgAAAAAIYWRtaW5LZXkCAAAABW93bmVyAAAAABdzZXJ2aWNlRmVlUGVyY2VudGlsZUtleQIAAAALc2VydmljZV9mZWUAAAAAC2xlbmRTaXplS2V5AgAAAAlsZW5kX3NpemUAAAAAE2VuYWJsZURlcG9zaXRCdGNLZXkCAAAAEmVuYWJsZV9kZXBvc2l0X2J0YwAAAAARZW5hYmxlTmV3TG9hbnNLZXkCAAAAEGVuYWJsZV9uZXdfbG9hbnMBAAAACnN0YXJ0T2ZLZXkAAAABAAAABnJlbnRlcgkAASwAAAACAgAAAAlzdGFydF9vZl8FAAAABnJlbnRlcgEAAAAPZW5kT2ZHcmFjZU9mS2V5AAAAAQAAAAZyZW50ZXIJAAEsAAAAAgIAAAAQZW5kX29mX2dyYWNlX29mXwUAAAAGcmVudGVyAQAAABJlbmRPZkludGVyZXN0T2ZLZXkAAAABAAAABnJlbnRlcgkAASwAAAACAgAAABNlbmRfb2ZfaW50ZXJlc3Rfb2ZfBQAAAAZyZW50ZXIBAAAAEmVuZE9mQnVybmRvd25PZktleQAAAAEAAAAGcmVudGVyCQABLAAAAAICAAAAE2VuZF9vZl9idXJuZG93bl9vZl8FAAAABnJlbnRlcgEAAAAJcmF0ZU9mS2V5AAAAAQAAAAZyZW50ZXIJAAEsAAAAAgIAAAAIcmF0ZV9vZl8FAAAABnJlbnRlcgEAAAAMZGVwb3NpdE9mS2V5AAAAAQAAAAZyZW50ZXIJAAEsAAAAAgIAAAALZGVwb3NpdF9vZl8FAAAABnJlbnRlcgEAAAAJbGVuZE9mS2V5AAAAAQAAAAZyZW50ZXIJAAEsAAAAAgIAAAAIbGVuZF9vZl8FAAAABnJlbnRlcgEAAAAMbGVuZGVyc09mS2V5AAAAAQAAAAZyZW50ZXIJAAEsAAAAAgIAAAALbGVuZGVyc19vZl8FAAAABnJlbnRlcgEAAAAUY2lyY3VsYXRpbmdBc3NldHNLZXkAAAABAAAABmxlbmRlcgkAASwAAAACAgAAABZjdXJjdWxhdGluZ19hc3NldHNfb2ZfBQAAAAZsZW5kZXIBAAAADm9wZW5MZW5kc09mS2V5AAAAAQAAAAZsZW5kZXIJAAEsAAAAAgIAAAAOb3Blbl9sZW5kc19vZl8FAAAABmxlbmRlcgAAAAAIbGVuZFNpemUJAABoAAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAC2xlbmRTaXplS2V5AgAAAAtubyBsZW5kU2l6ZQUAAAAEdGVuOAAAAAAUbmV3RGVwb3NpdEJ0Y0VuYWJsZWQEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAATZW5hYmxlRGVwb3NpdEJ0Y0tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgYAAAAAD25ld0xvYW5zRW5hYmxlZAQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAABFlbmFibGVOZXdMb2Fuc0tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgYAAAAADWFsbExlbmRlcnNTdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAAKbGVuZGVyc0tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF4BQAAAAckbWF0Y2gwBQAAAAF4AgAAAAAAAAAAEWVuYWJsZWRMZW5kZXJzU3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAEWVuYWJsZWRMZW5kZXJzS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgCAAAAAAAAAAAIb3duZXJTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAhhZG1pbktleQIAAAAITm8gb3duZXIAAAAABW93bmVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAEFAAAACG93bmVyU3RyAgAAAAhObyBvd25lcgAAAAAKYXNzZXRUb2tlbgkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAANYXNzZXRUb2tlbktleQIAAAAKTm8gYXNzZXRJZAAAAAALZ3JhY2VQZXJpb2QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA5ncmFjZVBlcmlvZEtleQIAAAAPTm8gZ3JhY2UgcGVyaW9kAAAAAA5pbnRlcmVzdFBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEWludGVyZXN0UGVyaW9kS2V5AgAAABJObyBpbnRlcmVzdCBwZXJpb2QAAAAADmJ1cm5kb3duUGVyaW9kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAARYnVybmRvd25QZXJpb2RLZXkCAAAAEk5vIGJ1cm5kb3duIHBlcmlvZAAAAAAHbWF4UmF0ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAACm1heFJhdGVLZXkCAAAAE05vIG9yYWNsZSBtYXggdmFsdWUAAAAABm9yYWNsZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAACW9yYWNsZUtleQIAAAAJTm8gb3JhY2xlAAAAAAtvcmFjbGVWYWx1ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQUAAAAGb3JhY2xlAgAAABJiYWQgb3JhY2xlIGFkZHJlc3MFAAAADW9yYWNsZURhdGFLZXkCAAAAD05vIG9yYWNsZSB2YWx1ZQAAAAASZGlzY291bnRQZXJjZW50aWxlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAVZGlzY291bnRQZXJjZW50aWxlS2V5AgAAABZObyBkaXNjb3VudCBwZXJjZW50aWxlAAAAABRzZXJ2aWNlRmVlUGVyY2VudGlsZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAF3NlcnZpY2VGZWVQZXJjZW50aWxlS2V5AgAAABlObyBzZXJ2aWNlIGZlZSBwZXJjZW50aWxlAAAAAARyYXRlAwkAAGcAAAACBQAAAAdtYXhSYXRlBQAAAAtvcmFjbGVWYWx1ZQUAAAALb3JhY2xlVmFsdWUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAfU3VzcGljaW91cyByYXRlIHZhbHVlOiBhY3R1YWw6IAkAAaQAAAABBQAAAAtvcmFjbGVWYWx1ZQIAAAAHLCBtYXg6IAkAAaQAAAABBQAAAAdtYXhSYXRlAAAAABFtaW5pbWFsTGVuZEFtb3VudAkAAGQAAAACCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAAZAUAAAAEdGVuOAkAAGgAAAACBQAAABJkaXNjb3VudFBlcmNlbnRpbGUFAAAABHJhdGUDCQAAZgAAAAIJAABqAAAAAgkAAGgAAAACAAAAAAAAAABkBQAAAAR0ZW44CQAAaAAAAAIFAAAAEmRpc2NvdW50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AQAAAAhmb2xkRnVuYwAAAAIFAAAADiRhY2MyMDUzMTM1Mzk1CQABkQAAAAIFAAAADSRsaXN0NTMxMzUzOTUAAAAAAAAAABQJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAyMAEAAAAVdW5jbGFpbWVkRGlzdHJpYnV0aW9uAAAAAwAAAAV3YXZlcwAAAANidGMAAAAHbGVuZGVycwQAAAAQd2F2ZXNTZXJ2aWNlUGFydAkAAGsAAAADBQAAAAV3YXZlcwUAAAAUc2VydmljZUZlZVBlcmNlbnRpbGUAAAAAAAAAJxAEAAAAD3dhdmVzRGlzdHJpYnV0ZQkAAGUAAAACBQAAAAV3YXZlcwUAAAAQd2F2ZXNTZXJ2aWNlUGFydAQAAAAYbmV3V2F2ZXNTZXJ2aWNlVW5jbGFpbWVkCQAAZAAAAAIJAQAAABN1bmNsYWltZWREZXBvc2l0Rm9yAAAAAQUAAAAIb3duZXJTdHIFAAAAEHdhdmVzU2VydmljZVBhcnQEAAAACmxlbmRlcnNBbXQJAAGQAAAAAQUAAAAHbGVuZGVycwoBAAAACGZvbGRGdW5jAAAAAgAAAAFsAAAABmxlbmRlcgQAAAAMbmV3VW5jbGFpbWVkCQAAZAAAAAIJAQAAABN1bmNsYWltZWREZXBvc2l0Rm9yAAAAAQUAAAAGbGVuZGVyCQAAaQAAAAIFAAAAD3dhdmVzRGlzdHJpYnV0ZQUAAAAKbGVuZGVyc0FtdAQAAAAPbmV3RGVwb3NpdFZhbHVlCQAAZQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAABRjaXJjdWxhdGluZ0Fzc2V0c0tleQAAAAEFAAAABmxlbmRlcgkAAGkAAAACBQAAAANidGMFAAAACmxlbmRlcnNBbXQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABZ1bmNsYWltZWREZXBvc2l0Rm9yS2V5AAAAAQUAAAAGbGVuZGVyBQAAAAxuZXdVbmNsYWltZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABRjaXJjdWxhdGluZ0Fzc2V0c0tleQAAAAEFAAAABmxlbmRlcgUAAAAPbmV3RGVwb3NpdFZhbHVlCQAETAAAAAIJAQAAABhkZWNyZW1lbnRPcGVuTGVuZHNBbW91bnQAAAABBQAAAAZsZW5kZXIFAAAAAWwEAAAADSRsaXN0NjE1NTYyNTUFAAAAB2xlbmRlcnMEAAAADSRzaXplNjE1NTYyNTUJAAGQAAAAAQUAAAANJGxpc3Q2MTU1NjI1NQQAAAANJGFjYzA2MTU1NjI1NQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFnVuY2xhaW1lZERlcG9zaXRGb3JLZXkAAAABBQAAAAhvd25lclN0cgUAAAAYbmV3V2F2ZXNTZXJ2aWNlVW5jbGFpbWVkBQAAAANuaWwDCQAAAAAAAAIFAAAADSRzaXplNjE1NTYyNTUAAAAAAAAAAAAFAAAADSRhY2MwNjE1NTYyNTUEAAAADSRhY2MxNjE1NTYyNTUJAQAAAAhmb2xkRnVuYwAAAAIFAAAADSRhY2MwNjE1NTYyNTUJAAGRAAAAAgUAAAANJGxpc3Q2MTU1NjI1NQAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2MTU1NjI1NQAAAAAAAAAAAQUAAAANJGFjYzE2MTU1NjI1NQQAAAANJGFjYzI2MTU1NjI1NQkBAAAACGZvbGRGdW5jAAAAAgUAAAANJGFjYzE2MTU1NjI1NQkAAZEAAAACBQAAAA0kbGlzdDYxNTU2MjU1AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTYxNTU2MjU1AAAAAAAAAAACBQAAAA0kYWNjMjYxNTU2MjU1BAAAAA0kYWNjMzYxNTU2MjU1CQEAAAAIZm9sZEZ1bmMAAAACBQAAAA0kYWNjMjYxNTU2MjU1CQABkQAAAAIFAAAADSRsaXN0NjE1NTYyNTUAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplNjE1NTYyNTUAAAAAAAAAAAMFAAAADSRhY2MzNjE1NTYyNTUEAAAADSRhY2M0NjE1NTYyNTUJAQAAAAhmb2xkRnVuYwAAAAIFAAAADSRhY2MzNjE1NTYyNTUJAAGRAAAAAgUAAAANJGxpc3Q2MTU1NjI1NQAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU2MTU1NjI1NQAAAAAAAAAABAUAAAANJGFjYzQ2MTU1NjI1NQQAAAANJGFjYzU2MTU1NjI1NQkBAAAACGZvbGRGdW5jAAAA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dFRva2VuBAAAAApsb2FuQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAAJbGVuZE9mS2V5AAAAAQUAAAAJcmVudGVyU3RyBAAAAA5kZXBvc2l0ZWRWYWx1ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAADGRlcG9zaXRPZktleQAAAAEFAAAACXJlbnRlclN0cgMJAQAAAAEhAAAAAQUAAAALaGFzT3BlbkxvYW4JAAACAAAAAQIAAAAXTm8gb3BlbiBsb2FuIGZvciBjYWxsZXIDCQEAAAABIQAAAAEFAAAADmlzVG9rZW5Db3JyZWN0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAF1VzZXIgbXVzdCByZXR1cm4gV0JUQzogCQACWAAAAAEFAAAACmFzc2V0VG9rZW4CAAAAECBidXQgcmV0dXJuaW5nOiAJAAJYAAAAAQUAAAANcmV0dXJuQXNzZXRJZAQAAAAKZW5kT2ZHcmFjZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAAD2VuZE9mR3JhY2VPZktleQAAAAEFAAAACXJlbnRlclN0cgQAAAANZW5kT2ZCdXJuZG93bgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAAEmVuZE9mQnVybmRvd25PZktleQAAAAEFAAAACXJlbnRlclN0cgQAAAANZW5kT2ZJbnRlcmVzdAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAAEmVuZE9mSW50ZXJlc3RPZktleQAAAAEFAAAACXJlbnRlclN0cgQAAAATY2FuUmV0dXJuRnVsbEFtb3VudAkAAGcAAAACBQAAAAplbmRPZkdyYWNlBQAAAAZoZWlnaHQEAAAAFHJldHVybnNUaGVTYW1lQW1vdW50CQAAZwAAAAIFAAAACmVuZE9mR3JhY2UFAAAABmhlaWdodAMJAABnAAAAAgUAAAAGaGVpZ2h0BQAAAA1lbmRPZkludGVyZXN0CQAAAgAAAAECAAAAFXlvdXIgbG9hbiBoYXMgZXhwaXJlZAQAAAANbGVuZGVyc1Byb2ZpdAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAplbmRPZkdyYWNlCQAAawAAAAMFAAAACmxvYW5BbW91bnQJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAplbmRPZkdyYWNlCQAAZQAAAAIFAAAADWVuZE9mQnVybmRvd24FAAAACmVuZE9mR3JhY2UAAAAAAAAAAAAEAAAADnJlcXVpcmVkQW1vdW50AwUAAAAUcmV0dXJuc1RoZVNhbWVBbW91bnQFAAAACmxvYW5BbW91bnQJAABkAAAAAgUAAAAKbG9hbkFtb3VudAUAAAANbGVuZGVyc1Byb2ZpdAQAAAAVaXNSZXR1cm5BbW91bnRDb3JyZWN0CQAAZwAAAAIFAAAACXJldHVybkFtdAUAAAAOcmVxdWlyZWRBbW91bnQEAAAAE2lzUmV0dXJuQW1vdW50RXhhY3QJAAAAAAAAAgUAAAAJcmV0dXJuQW10BQAAAA5yZXF1aXJlZEFtb3VudAMJAQAAAAEhAAAAAQUAAAAVaXNSZXR1cm5BbW91bnRDb3JyZWN0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEVVzZXIgbXVzdCByZXR1cm4gCQABpAAAAAEFAAAACmxvYW5BbW91bnQCAAAAGSBzYXRvc2hpcywgYnV0IHJldHVybmluZyAJAAGkAAAAAQUAAAAJcmV0dXJuQW10BAAAAAtkZXBvc2l0QmFjawkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAGcmVudGVyBQAAAA5kZXBvc2l0ZWRWYWx1ZQUAAAAMZGVwb3NpdFRva2VuBAAAABJleGNlc3NSZXR1cm5BbW91bnQJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABnJlbnRlcgkAAGUAAAACBQAAAAlyZXR1cm5BbXQFAAAADnJlcXVpcmVkQW1vdW50BQAAAAphc3NldFRva2VuBAAAAAl0cmFuc2ZlcnMDBQAAABNpc1JldHVybkFtb3VudEV4YWN0CQAETAAAAAIFAAAAC2RlcG9zaXRCYWNrBQAAAANuaWwJAARMAAAAAgUAAAALZGVwb3NpdEJhY2sJAARMAAAAAgUAAAASZXhjZXNzUmV0dXJuQW1vdW50BQAAAANuaWwEAAAAB2xlbmRlcnMJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAAAxsZW5kZXJzT2ZLZXkAAAABBQAAAAlyZW50ZXJTdHICAAAAG05vIGxlbmRlcnMgZm9yIGFuIG9wZW4gbG9hbgIAAAABfAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAdjbG9zaW5nAAAABQUAAAAJcmVudGVyU3RyAAAAAAAAAAAABQAAAA1sZW5kZXJzUHJvZml0BgUAAAAHbGVuZGVycwkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAAJdHJhbnNmZXJzAQAAAANhZGQAAAACAAAAB2xlbmRlcnMAAAAGbGVuZGVyAwkAAAAAAAACBQAAAAdsZW5kZXJzAgAAAAAFAAAABmxlbmRlcgkAASwAAAACCQABLAAAAAIFAAAAB2xlbmRlcnMCAAAAAXwFAAAABmxlbmRlcgEAAAAGcmVtb3ZlAAAAAgAAAAdsZW5kZXJzAAAABmxlbmRlcgQAAAADYXJyCQAEtQAAAAIFAAAAB2xlbmRlcnMCAAAAAXwKAQAAAAhmb2xkRnVuYwAAAAIAAAADYWNjAAAABGl0ZW0DCQAAAAAAAAIFAAAABGl0ZW0FAAAABmxlbmRlcgUAAAADYWNjCQEAAAADYWRkAAAAAgUAAAADYWNjBQAAAARpdGVtBAAAAA8kbGlzdDEwMDI2MTAwNTMFAAAAA2FycgQAAAAPJHNpemUxMDAyNjEwMDUzCQABkAAAAAEFAAAADyRsaXN0MTAwMjYxMDA1MwQAAAAPJGFjYzAxMDAyNjEwMDUzAgAAAAADCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAAAAUAAAAPJGFjYzAxMDAyNjEwMDUzBAAAAA8kYWNjMTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2MwMTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAAAQUAAAAPJGFjYzExMDAyNjEwMDUzBAAAAA8kYWNjMjEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2MxMTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAAAgUAAAAPJGFjYzIxMDAyNjEwMDUzBAAAAA8kYWNjMzEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2MyMTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAAAwUAAAAPJGFjYzMxMDAyNjEwMDUzBAAAAA8kYWNjNDEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2MzMTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAABAUAAAAPJGFjYzQxMDAyNjEwMDUzBAAAAA8kYWNjNTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2M0MTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAABQUAAAAPJGFjYzUxMDAyNjEwMDUzBAAAAA8kYWNjNjEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2M1MTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAUDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAABgUAAAAPJGFjYzYxMDAyNjEwMDUzBAAAAA8kYWNjNzEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2M2MTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAABwUAAAAPJGFjYzcxMDAyNjEwMDUzBAAAAA8kYWNjODEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2M3MTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAACAUAAAAPJGFjYzgxMDAyNjEwMDUzBAAAAA8kYWNjOTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAADyRhY2M4MTAwMjYxMDA1MwkAAZEAAAACBQAAAA8kbGlzdDEwMDI2MTAwNTMAAAAAAAAAAAgDCQAAAAAAAAIFAAAADyRzaXplMTAwMjYxMDA1MwAAAAAAAAAACQUAAAAPJGFjYzkxMDAyNjEwMDUzBAAAABAkYWNjMTAxMDAyNjEwMDUzCQEAAAAIZm9sZEZ1bmMAAAACBQAAAA8kYWNjOTEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAAAoFAAAAECRhY2MxMDEwMDI2MTAwNTMEAAAAECRhY2MxMTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxMDEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAKAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAAAsFAAAAECRhY2MxMTEwMDI2MTAwNTMEAAAAECRhY2MxMjEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxMTEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAALAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAAAwFAAAAECRhY2MxMjEwMDI2MTAwNTMEAAAAECRhY2MxMzEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxMjEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAMAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAAA0FAAAAECRhY2MxMzEwMDI2MTAwNTMEAAAAECRhY2MxNDEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxMzEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAANAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAAA4FAAAAECRhY2MxNDEwMDI2MTAwNTMEAAAAECRhY2MxNTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxNDEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAOAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAAA8FAAAAECRhY2MxNTEwMDI2MTAwNTMEAAAAECRhY2MxNjEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxNTEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAPAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAABAFAAAAECRhY2MxNjEwMDI2MTAwNTMEAAAAECRhY2MxNzEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxNjEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAQAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAABEFAAAAECRhY2MxNzEwMDI2MTAwNTMEAAAAECRhY2MxODEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxNzEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAARAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAABIFAAAAECRhY2MxODEwMDI2MTAwNTMEAAAAECRhY2MxOTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxODEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAASAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAABMFAAAAECRhY2MxOTEwMDI2MTAwNTMEAAAAECRhY2MyMDEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MxOTEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAATAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDI2MTAwNTMAAAAAAAAAABQFAAAAECRhY2MyMDEwMDI2MTAwNTMEAAAAECRhY2MyMTEwMDI2MTAwNTMJAQAAAAhmb2xkRnVuYwAAAAIFAAAAECRhY2MyMDEwMDI2MTAwNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDAyNjEwMDUzAAAAAAAAAAAUCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMjABAAAADGRvVGFrZVByb2ZpdAAAAAEAAAAGbGVuZGVyBAAAAANzdHIJAAJYAAAAAQgFAAAABmxlbmRlcgAAAAVieXRlcwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAAxwcm9maXRGb3JLZXkAAAABBQAAAANzdHIAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABZ1bmNsYWltZWREZXBvc2l0Rm9yS2V5AAAAAQUAAAADc3RyAAAAAAAAAAAABQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAGbGVuZGVyCQEAAAAJcHJvZml0Rm9yAAAAAQUAAAADc3RyBQAAAAphc3NldFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABmxlbmRlcgkBAAAAE3VuY2xhaW1lZERlcG9zaXRGb3IAAAABBQAAAANzdHIFAAAADGRlcG9zaXRUb2tlbgUAAAADbmlsAAAADQAAAAFpAQAAAARpbml0AAAACgAAAAVvd25lcgAAAAV0b2tlbgAAAAZvcmFjbGUAAAAHbWF4UmF0ZQAAAAhkaXNjb3VudAAAAAVncmFjZQAAAAhpbnRlcmVzdAAAAAhidXJuZG93bgAAAApzZXJ2aWNlRmVlAAAACGxlbmRTaXplAwkAAGYAAAACBQAAAAhpbnRlcmVzdAUAAAAIYnVybmRvd24JAAACAAAAAQIAAAAqaW50ZXJlc3QgbXVzdCBiZSBsZXNzIG9yIGVxdWFsIHRvIGJ1cm5kb3duAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAGW9ubHkgZGFwcCBpdHNlbGYgY2FuIGluaXQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACGFkbWluS2V5BQAAAAVvd25lcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANYXNzZXRUb2tlbktleQUAAAAFdG9rZW4JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACW9yYWNsZUtleQUAAAAGb3JhY2xlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAptYXhSYXRlS2V5BQAAAAdtYXhSYXRlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABVkaXNjb3VudFBlcmNlbnRpbGVLZXkFAAAACGRpc2NvdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA5ncmFjZVBlcmlvZEtleQUAAAAFZ3JhY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEWludGVyZXN0UGVyaW9kS2V5BQAAAAhpbnRlcmVzdAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARYnVybmRvd25QZXJpb2RLZXkFAAAACGJ1cm5kb3duCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABdzZXJ2aWNlRmVlUGVyY2VudGlsZUtleQUAAAAKc2VydmljZUZlZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAALbGVuZFNpemVLZXkFAAAACGxlbmRTaXplBQAAAANuaWwAAAABaQEAAAAMdXBkYXRlUGFyYW1zAAAACAAAAAZvcmFjbGUAAAAHbWF4UmF0ZQAAAAhkaXNjb3VudAAAAAVncmFjZQAAAAhpbnRlcmVzdAAAAAhidXJuZG93bgAAAApzZXJ2aWNlRmVlAAAACGxlbmRTaXplAwkAAGYAAAACBQAAAAhpbnRlcmVzdAUAAAAIYnVybmRvd24JAAACAAAAAQIAAAAqaW50ZXJlc3QgbXVzdCBiZSBsZXNzIG9yIGVxdWFsIHRvIGJ1cm5kb3duAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAVvd25lcgkAAAIAAAABAgAAABxvbmx5IG93bmVyIGNhbiB1cGRhdGUgcGFyYW1zCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAlvcmFjbGVLZXkFAAAABm9yYWNsZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAKbWF4UmF0ZUtleQUAAAAHbWF4UmF0ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAVZGlzY291bnRQZXJjZW50aWxlS2V5BQAAAAhkaXNjb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAOZ3JhY2VQZXJpb2RLZXkFAAAABWdyYWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABFpbnRlcmVzdFBlcmlvZEtleQUAAAAIaW50ZXJlc3QJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEWJ1cm5kb3duUGVyaW9kS2V5BQAAAAhidXJuZG93bgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAXc2VydmljZUZlZVBlcmNlbnRpbGVLZXkFAAAACnNlcnZpY2VGZWUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAC2xlbmRTaXplS2V5BQAAAAhsZW5kU2l6ZQUAAAADbmlsAAAAAWkBAAAABmJvcnJvdwAAAAAEAAAABnJlbnRlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAASEAAAABBQAAAA9uZXdMb2Fuc0VuYWJsZWQJAAACAAAAAQIAAAAeTmV3IGxvYW5zIHRlbXBvcmFyaWx5IGRpc2FibGVkAwkBAAAACmlzTGVuZE9wZW4AAAABBQAAAAZyZW50ZXIJAAACAAAAAQkAASwAAAACBQAAAAZyZW50ZXICAAAAGSBhbHJlYWR5IGhhcyBhbiBvcGVuIGxvYW4EAAAAByRtYXRjaDAIBQAAAAFpAAAAB3BheW1lbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0F0dGFjaGVkUGF5bWVudAQAAAABYQUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWEAAAAHYXNzZXRJZAUAAAAMZGVwb3NpdFRva2VuBAAAAA1jdXJyZW50SGVpZ2h0BQAAAAZoZWlnaHQEAAAACmVuZE9mR3JhY2UJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAAtncmFjZVBlcmlvZAQAAAANZW5kT2ZJbnRlcmVzdAkAAGQAAAACBQAAAAplbmRPZkdyYWNlBQAAAA5pbnRlcmVzdFBlcmlvZAQAAAANZW5kT2ZCdXJuZG93bgkAAGQAAAACBQAAAAplbmRPZkdyYWNlBQAAAA5idXJuZG93blBlcmlvZAQAAAANZGVwb3NpdEFtb3VudAgFAAAAAWEAAAAGYW1vdW50BAAAAA9hc3NldFRva2Vuc0xlbnQJAABrAAAAAwUAAAANZGVwb3NpdEFtb3VudAkAAGgAAAACBQAAAARyYXRlBQAAABJkaXNjb3VudFBlcmNlbnRpbGUJAABoAAAAAgUAAAAEdGVuOAAAAAAAAAAAZAMJAABmAAAAAgUAAAAPYXNzZXRUb2tlbnNMZW50AAAAAAAAAAAABAAAAAVkYXRhcwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAACnN0YXJ0T2ZLZXkAAAABBQAAAAZyZW50ZXIFAAAADWN1cnJlbnRIZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9lbmRPZkdyYWNlT2ZLZXkAAAABBQAAAAZyZW50ZXIFAAAACmVuZE9mR3JhY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJlbmRPZkludGVyZXN0T2ZLZXkAAAABBQAAAAZyZW50ZXIFAAAADWVuZE9mSW50ZXJlc3QJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJlbmRPZkJ1cm5kb3duT2ZLZXkAAAABBQAAAAZyZW50ZXIFAAAADWVuZE9mQnVybmRvd24JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJ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", "chainId": 84, "height": 739979, "spentComplexity": 0 } View: original | compacted Prev: j97xUAmGW9RbRxMxfnuZFV2eBCY9tWu4BjTcF3x6gbM Next: GChjJmfSMGmvdp8EhfeR88hTSBy9YKY5VhiUCucc82ve Diff:
Old | New | Differences | |
---|---|---|---|
287 | 287 | ||
288 | 288 | ||
289 | 289 | func profitDistribution (btc,lenders) = { | |
290 | - | let servicePart = fraction(btc, serviceFeePercentile, | |
290 | + | let servicePart = fraction(btc, serviceFeePercentile, 100) | |
291 | 291 | let distribute = (btc - servicePart) | |
292 | 292 | let newServiceProfit = (profitFor(ownerStr) + servicePart) | |
293 | 293 | let lendersAmt = size(lenders) | |
296 | 296 | [DataEntry(profitForKey(lender), newProfit), decrementOpenLendsAmount(lender)] :: l | |
297 | 297 | } | |
298 | 298 | ||
299 | - | let $ | |
300 | - | let $ | |
301 | - | let $ | |
302 | - | if (($ | |
303 | - | then $ | |
299 | + | let $list53135395 = lenders | |
300 | + | let $size53135395 = size($list53135395) | |
301 | + | let $acc053135395 = [DataEntry(profitForKey(ownerStr), newServiceProfit)] | |
302 | + | if (($size53135395 == 0)) | |
303 | + | then $acc053135395 | |
304 | 304 | else { | |
305 | - | let $ | |
306 | - | if (($ | |
307 | - | then $ | |
305 | + | let $acc153135395 = foldFunc($acc053135395, $list53135395[0]) | |
306 | + | if (($size53135395 == 1)) | |
307 | + | then $acc153135395 | |
308 | 308 | else { | |
309 | - | let $ | |
310 | - | if (($ | |
311 | - | then $ | |
309 | + | let $acc253135395 = foldFunc($acc153135395, $list53135395[1]) | |
310 | + | if (($size53135395 == 2)) | |
311 | + | then $acc253135395 | |
312 | 312 | else { | |
313 | - | let $ | |
314 | - | if (($ | |
315 | - | then $ | |
313 | + | let $acc353135395 = foldFunc($acc253135395, $list53135395[2]) | |
314 | + | if (($size53135395 == 3)) | |
315 | + | then $acc353135395 | |
316 | 316 | else { | |
317 | - | let $ | |
318 | - | if (($ | |
319 | - | then $ | |
317 | + | let $acc453135395 = foldFunc($acc353135395, $list53135395[3]) | |
318 | + | if (($size53135395 == 4)) | |
319 | + | then $acc453135395 | |
320 | 320 | else { | |
321 | - | let $ | |
322 | - | if (($ | |
323 | - | then $ | |
321 | + | let $acc553135395 = foldFunc($acc453135395, $list53135395[4]) | |
322 | + | if (($size53135395 == 5)) | |
323 | + | then $acc553135395 | |
324 | 324 | else { | |
325 | - | let $ | |
326 | - | if (($ | |
327 | - | then $ | |
325 | + | let $acc653135395 = foldFunc($acc553135395, $list53135395[5]) | |
326 | + | if (($size53135395 == 6)) | |
327 | + | then $acc653135395 | |
328 | 328 | else { | |
329 | - | let $ | |
330 | - | if (($ | |
331 | - | then $ | |
329 | + | let $acc753135395 = foldFunc($acc653135395, $list53135395[6]) | |
330 | + | if (($size53135395 == 7)) | |
331 | + | then $acc753135395 | |
332 | 332 | else { | |
333 | - | let $ | |
334 | - | if (($ | |
335 | - | then $ | |
333 | + | let $acc853135395 = foldFunc($acc753135395, $list53135395[7]) | |
334 | + | if (($size53135395 == 8)) | |
335 | + | then $acc853135395 | |
336 | 336 | else { | |
337 | - | let $ | |
338 | - | if (($ | |
339 | - | then $ | |
337 | + | let $acc953135395 = foldFunc($acc853135395, $list53135395[8]) | |
338 | + | if (($size53135395 == 9)) | |
339 | + | then $acc953135395 | |
340 | 340 | else { | |
341 | - | let $ | |
342 | - | if (($ | |
343 | - | then $ | |
341 | + | let $acc1053135395 = foldFunc($acc953135395, $list53135395[9]) | |
342 | + | if (($size53135395 == 10)) | |
343 | + | then $acc1053135395 | |
344 | 344 | else { | |
345 | - | let $ | |
346 | - | if (($ | |
347 | - | then $ | |
345 | + | let $acc1153135395 = foldFunc($acc1053135395, $list53135395[10]) | |
346 | + | if (($size53135395 == 11)) | |
347 | + | then $acc1153135395 | |
348 | 348 | else { | |
349 | - | let $ | |
350 | - | if (($ | |
351 | - | then $ | |
349 | + | let $acc1253135395 = foldFunc($acc1153135395, $list53135395[11]) | |
350 | + | if (($size53135395 == 12)) | |
351 | + | then $acc1253135395 | |
352 | 352 | else { | |
353 | - | let $ | |
354 | - | if (($ | |
355 | - | then $ | |
353 | + | let $acc1353135395 = foldFunc($acc1253135395, $list53135395[12]) | |
354 | + | if (($size53135395 == 13)) | |
355 | + | then $acc1353135395 | |
356 | 356 | else { | |
357 | - | let $ | |
358 | - | if (($ | |
359 | - | then $ | |
357 | + | let $acc1453135395 = foldFunc($acc1353135395, $list53135395[13]) | |
358 | + | if (($size53135395 == 14)) | |
359 | + | then $acc1453135395 | |
360 | 360 | else { | |
361 | - | let $ | |
362 | - | if (($ | |
363 | - | then $ | |
361 | + | let $acc1553135395 = foldFunc($acc1453135395, $list53135395[14]) | |
362 | + | if (($size53135395 == 15)) | |
363 | + | then $acc1553135395 | |
364 | 364 | else { | |
365 | - | let $ | |
366 | - | if (($ | |
367 | - | then $ | |
365 | + | let $acc1653135395 = foldFunc($acc1553135395, $list53135395[15]) | |
366 | + | if (($size53135395 == 16)) | |
367 | + | then $acc1653135395 | |
368 | 368 | else { | |
369 | - | let $ | |
370 | - | if (($ | |
371 | - | then $ | |
369 | + | let $acc1753135395 = foldFunc($acc1653135395, $list53135395[16]) | |
370 | + | if (($size53135395 == 17)) | |
371 | + | then $acc1753135395 | |
372 | 372 | else { | |
373 | - | let $ | |
374 | - | if (($ | |
375 | - | then $ | |
373 | + | let $acc1853135395 = foldFunc($acc1753135395, $list53135395[17]) | |
374 | + | if (($size53135395 == 18)) | |
375 | + | then $acc1853135395 | |
376 | 376 | else { | |
377 | - | let $ | |
378 | - | if (($ | |
379 | - | then $ | |
377 | + | let $acc1953135395 = foldFunc($acc1853135395, $list53135395[18]) | |
378 | + | if (($size53135395 == 19)) | |
379 | + | then $acc1953135395 | |
380 | 380 | else { | |
381 | - | let $ | |
382 | - | if (($ | |
383 | - | then $ | |
381 | + | let $acc2053135395 = foldFunc($acc1953135395, $list53135395[19]) | |
382 | + | if (($size53135395 == 20)) | |
383 | + | then $acc2053135395 | |
384 | 384 | else { | |
385 | - | let $ | |
385 | + | let $acc2153135395 = foldFunc($acc2053135395, $list53135395[20]) | |
386 | 386 | throw("List size exceed 20") | |
387 | 387 | } | |
388 | 388 | } | |
419 | 419 | [DataEntry(unclaimedDepositForKey(lender), newUnclaimed), DataEntry(circulatingAssetsKey(lender), newDepositValue), decrementOpenLendsAmount(lender)] :: l | |
420 | 420 | } | |
421 | 421 | ||
422 | - | let $ | |
423 | - | let $ | |
424 | - | let $ | |
425 | - | if (($ | |
426 | - | then $ | |
422 | + | let $list61556255 = lenders | |
423 | + | let $size61556255 = size($list61556255) | |
424 | + | let $acc061556255 = [DataEntry(unclaimedDepositForKey(ownerStr), newWavesServiceUnclaimed)] | |
425 | + | if (($size61556255 == 0)) | |
426 | + | then $acc061556255 | |
427 | 427 | else { | |
428 | - | let $ | |
429 | - | if (($ | |
430 | - | then $ | |
428 | + | let $acc161556255 = foldFunc($acc061556255, $list61556255[0]) | |
429 | + | if (($size61556255 == 1)) | |
430 | + | then $acc161556255 | |
431 | 431 | else { | |
432 | - | let $ | |
433 | - | if (($ | |
434 | - | then $ | |
432 | + | let $acc261556255 = foldFunc($acc161556255, $list61556255[1]) | |
433 | + | if (($size61556255 == 2)) | |
434 | + | then $acc261556255 | |
435 | 435 | else { | |
436 | - | let $ | |
437 | - | if (($ | |
438 | - | then $ | |
436 | + | let $acc361556255 = foldFunc($acc261556255, $list61556255[2]) | |
437 | + | if (($size61556255 == 3)) | |
438 | + | then $acc361556255 | |
439 | 439 | else { | |
440 | - | let $ | |
441 | - | if (($ | |
442 | - | then $ | |
440 | + | let $acc461556255 = foldFunc($acc361556255, $list61556255[3]) | |
441 | + | if (($size61556255 == 4)) | |
442 | + | then $acc461556255 | |
443 | 443 | else { | |
444 | - | let $ | |
445 | - | if (($ | |
446 | - | then $ | |
444 | + | let $acc561556255 = foldFunc($acc461556255, $list61556255[4]) | |
445 | + | if (($size61556255 == 5)) | |
446 | + | then $acc561556255 | |
447 | 447 | else { | |
448 | - | let $ | |
449 | - | if (($ | |
450 | - | then $ | |
448 | + | let $acc661556255 = foldFunc($acc561556255, $list61556255[5]) | |
449 | + | if (($size61556255 == 6)) | |
450 | + | then $acc661556255 | |
451 | 451 | else { | |
452 | - | let $ | |
453 | - | if (($ | |
454 | - | then $ | |
452 | + | let $acc761556255 = foldFunc($acc661556255, $list61556255[6]) | |
453 | + | if (($size61556255 == 7)) | |
454 | + | then $acc761556255 | |
455 | 455 | else { | |
456 | - | let $ | |
457 | - | if (($ | |
458 | - | then $ | |
456 | + | let $acc861556255 = foldFunc($acc761556255, $list61556255[7]) | |
457 | + | if (($size61556255 == 8)) | |
458 | + | then $acc861556255 | |
459 | 459 | else { | |
460 | - | let $ | |
461 | - | if (($ | |
462 | - | then $ | |
460 | + | let $acc961556255 = foldFunc($acc861556255, $list61556255[8]) | |
461 | + | if (($size61556255 == 9)) | |
462 | + | then $acc961556255 | |
463 | 463 | else { | |
464 | - | let $ | |
465 | - | if (($ | |
466 | - | then $ | |
464 | + | let $acc1061556255 = foldFunc($acc961556255, $list61556255[9]) | |
465 | + | if (($size61556255 == 10)) | |
466 | + | then $acc1061556255 | |
467 | 467 | else { | |
468 | - | let $ | |
469 | - | if (($ | |
470 | - | then $ | |
468 | + | let $acc1161556255 = foldFunc($acc1061556255, $list61556255[10]) | |
469 | + | if (($size61556255 == 11)) | |
470 | + | then $acc1161556255 | |
471 | 471 | else { | |
472 | - | let $ | |
473 | - | if (($ | |
474 | - | then $ | |
472 | + | let $acc1261556255 = foldFunc($acc1161556255, $list61556255[11]) | |
473 | + | if (($size61556255 == 12)) | |
474 | + | then $acc1261556255 | |
475 | 475 | else { | |
476 | - | let $ | |
477 | - | if (($ | |
478 | - | then $ | |
476 | + | let $acc1361556255 = foldFunc($acc1261556255, $list61556255[12]) | |
477 | + | if (($size61556255 == 13)) | |
478 | + | then $acc1361556255 | |
479 | 479 | else { | |
480 | - | let $ | |
481 | - | if (($ | |
482 | - | then $ | |
480 | + | let $acc1461556255 = foldFunc($acc1361556255, $list61556255[13]) | |
481 | + | if (($size61556255 == 14)) | |
482 | + | then $acc1461556255 | |
483 | 483 | else { | |
484 | - | let $ | |
485 | - | if (($ | |
486 | - | then $ | |
484 | + | let $acc1561556255 = foldFunc($acc1461556255, $list61556255[14]) | |
485 | + | if (($size61556255 == 15)) | |
486 | + | then $acc1561556255 | |
487 | 487 | else { | |
488 | - | let $ | |
489 | - | if (($ | |
490 | - | then $ | |
488 | + | let $acc1661556255 = foldFunc($acc1561556255, $list61556255[15]) | |
489 | + | if (($size61556255 == 16)) | |
490 | + | then $acc1661556255 | |
491 | 491 | else { | |
492 | - | let $ | |
493 | - | if (($ | |
494 | - | then $ | |
492 | + | let $acc1761556255 = foldFunc($acc1661556255, $list61556255[16]) | |
493 | + | if (($size61556255 == 17)) | |
494 | + | then $acc1761556255 | |
495 | 495 | else { | |
496 | - | let $ | |
497 | - | if (($ | |
498 | - | then $ | |
496 | + | let $acc1861556255 = foldFunc($acc1761556255, $list61556255[17]) | |
497 | + | if (($size61556255 == 18)) | |
498 | + | then $acc1861556255 | |
499 | 499 | else { | |
500 | - | let $ | |
501 | - | if (($ | |
502 | - | then $ | |
500 | + | let $acc1961556255 = foldFunc($acc1861556255, $list61556255[18]) | |
501 | + | if (($size61556255 == 19)) | |
502 | + | then $acc1961556255 | |
503 | 503 | else { | |
504 | - | let $ | |
505 | - | if (($ | |
506 | - | then $ | |
504 | + | let $acc2061556255 = foldFunc($acc1961556255, $list61556255[19]) | |
505 | + | if (($size61556255 == 20)) | |
506 | + | then $acc2061556255 | |
507 | 507 | else { | |
508 | - | let $ | |
508 | + | let $acc2161556255 = foldFunc($acc2061556255, $list61556255[20]) | |
509 | 509 | throw("List size exceed 20") | |
510 | 510 | } | |
511 | 511 | } | |
596 | 596 | then acc | |
597 | 597 | else add(acc, item) | |
598 | 598 | ||
599 | - | let $ | |
600 | - | let $ | |
601 | - | let $ | |
602 | - | if (($ | |
603 | - | then $ | |
599 | + | let $list1002610053 = arr | |
600 | + | let $size1002610053 = size($list1002610053) | |
601 | + | let $acc01002610053 = "" | |
602 | + | if (($size1002610053 == 0)) | |
603 | + | then $acc01002610053 | |
604 | 604 | else { | |
605 | - | let $ | |
606 | - | if (($ | |
607 | - | then $ | |
605 | + | let $acc11002610053 = foldFunc($acc01002610053, $list1002610053[0]) | |
606 | + | if (($size1002610053 == 1)) | |
607 | + | then $acc11002610053 | |
608 | 608 | else { | |
609 | - | let $ | |
610 | - | if (($ | |
611 | - | then $ | |
609 | + | let $acc21002610053 = foldFunc($acc11002610053, $list1002610053[1]) | |
610 | + | if (($size1002610053 == 2)) | |
611 | + | then $acc21002610053 | |
612 | 612 | else { | |
613 | - | let $ | |
614 | - | if (($ | |
615 | - | then $ | |
613 | + | let $acc31002610053 = foldFunc($acc21002610053, $list1002610053[2]) | |
614 | + | if (($size1002610053 == 3)) | |
615 | + | then $acc31002610053 | |
616 | 616 | else { | |
617 | - | let $ | |
618 | - | if (($ | |
619 | - | then $ | |
617 | + | let $acc41002610053 = foldFunc($acc31002610053, $list1002610053[3]) | |
618 | + | if (($size1002610053 == 4)) | |
619 | + | then $acc41002610053 | |
620 | 620 | else { | |
621 | - | let $ | |
622 | - | if (($ | |
623 | - | then $ | |
621 | + | let $acc51002610053 = foldFunc($acc41002610053, $list1002610053[4]) | |
622 | + | if (($size1002610053 == 5)) | |
623 | + | then $acc51002610053 | |
624 | 624 | else { | |
625 | - | let $ | |
626 | - | if (($ | |
627 | - | then $ | |
625 | + | let $acc61002610053 = foldFunc($acc51002610053, $list1002610053[5]) | |
626 | + | if (($size1002610053 == 6)) | |
627 | + | then $acc61002610053 | |
628 | 628 | else { | |
629 | - | let $ | |
630 | - | if (($ | |
631 | - | then $ | |
629 | + | let $acc71002610053 = foldFunc($acc61002610053, $list1002610053[6]) | |
630 | + | if (($size1002610053 == 7)) | |
631 | + | then $acc71002610053 | |
632 | 632 | else { | |
633 | - | let $ | |
634 | - | if (($ | |
635 | - | then $ | |
633 | + | let $acc81002610053 = foldFunc($acc71002610053, $list1002610053[7]) | |
634 | + | if (($size1002610053 == 8)) | |
635 | + | then $acc81002610053 | |
636 | 636 | else { | |
637 | - | let $ | |
638 | - | if (($ | |
639 | - | then $ | |
637 | + | let $acc91002610053 = foldFunc($acc81002610053, $list1002610053[8]) | |
638 | + | if (($size1002610053 == 9)) | |
639 | + | then $acc91002610053 | |
640 | 640 | else { | |
641 | - | let $ | |
642 | - | if (($ | |
643 | - | then $ | |
641 | + | let $acc101002610053 = foldFunc($acc91002610053, $list1002610053[9]) | |
642 | + | if (($size1002610053 == 10)) | |
643 | + | then $acc101002610053 | |
644 | 644 | else { | |
645 | - | let $ | |
646 | - | if (($ | |
647 | - | then $ | |
645 | + | let $acc111002610053 = foldFunc($acc101002610053, $list1002610053[10]) | |
646 | + | if (($size1002610053 == 11)) | |
647 | + | then $acc111002610053 | |
648 | 648 | else { | |
649 | - | let $ | |
650 | - | if (($ | |
651 | - | then $ | |
649 | + | let $acc121002610053 = foldFunc($acc111002610053, $list1002610053[11]) | |
650 | + | if (($size1002610053 == 12)) | |
651 | + | then $acc121002610053 | |
652 | 652 | else { | |
653 | - | let $ | |
654 | - | if (($ | |
655 | - | then $ | |
653 | + | let $acc131002610053 = foldFunc($acc121002610053, $list1002610053[12]) | |
654 | + | if (($size1002610053 == 13)) | |
655 | + | then $acc131002610053 | |
656 | 656 | else { | |
657 | - | let $ | |
658 | - | if (($ | |
659 | - | then $ | |
657 | + | let $acc141002610053 = foldFunc($acc131002610053, $list1002610053[13]) | |
658 | + | if (($size1002610053 == 14)) | |
659 | + | then $acc141002610053 | |
660 | 660 | else { | |
661 | - | let $ | |
662 | - | if (($ | |
663 | - | then $ | |
661 | + | let $acc151002610053 = foldFunc($acc141002610053, $list1002610053[14]) | |
662 | + | if (($size1002610053 == 15)) | |
663 | + | then $acc151002610053 | |
664 | 664 | else { | |
665 | - | let $ | |
666 | - | if (($ | |
667 | - | then $ | |
665 | + | let $acc161002610053 = foldFunc($acc151002610053, $list1002610053[15]) | |
666 | + | if (($size1002610053 == 16)) | |
667 | + | then $acc161002610053 | |
668 | 668 | else { | |
669 | - | let $ | |
670 | - | if (($ | |
671 | - | then $ | |
669 | + | let $acc171002610053 = foldFunc($acc161002610053, $list1002610053[16]) | |
670 | + | if (($size1002610053 == 17)) | |
671 | + | then $acc171002610053 | |
672 | 672 | else { | |
673 | - | let $ | |
674 | - | if (($ | |
675 | - | then $ | |
673 | + | let $acc181002610053 = foldFunc($acc171002610053, $list1002610053[17]) | |
674 | + | if (($size1002610053 == 18)) | |
675 | + | then $acc181002610053 | |
676 | 676 | else { | |
677 | - | let $ | |
678 | - | if (($ | |
679 | - | then $ | |
677 | + | let $acc191002610053 = foldFunc($acc181002610053, $list1002610053[18]) | |
678 | + | if (($size1002610053 == 19)) | |
679 | + | then $acc191002610053 | |
680 | 680 | else { | |
681 | - | let $ | |
682 | - | if (($ | |
683 | - | then $ | |
681 | + | let $acc201002610053 = foldFunc($acc191002610053, $list1002610053[19]) | |
682 | + | if (($size1002610053 == 20)) | |
683 | + | then $acc201002610053 | |
684 | 684 | else { | |
685 | - | let $ | |
685 | + | let $acc211002610053 = foldFunc($acc201002610053, $list1002610053[20]) | |
686 | 686 | throw("List size exceed 20") | |
687 | 687 | } | |
688 | 688 | } | |
834 | 834 | else if (alreadyParticipates) | |
835 | 835 | then throw((("lender " + lender) + " already participates in the dApp")) | |
836 | 836 | else { | |
837 | - | let errorMessage = (("exactly" + toString( | |
837 | + | let errorMessage = (("exactly" + toString(value(getInteger(this, lendSizeKey)))) + " BTC must be attached") | |
838 | 838 | let pmt = valueOrErrorMessage(i.payment, errorMessage) | |
839 | 839 | if (if ((pmt.assetId != assetToken)) | |
840 | 840 | then true |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let depositToken = unit | |
5 | 5 | ||
6 | 6 | let oracleDataKey = "waves_btc_8" | |
7 | 7 | ||
8 | 8 | let ten8 = ((100 * 1000) * 1000) | |
9 | 9 | ||
10 | 10 | let lendersKey = "lenders" | |
11 | 11 | ||
12 | 12 | let enabledLendersKey = "enabledLenders" | |
13 | 13 | ||
14 | 14 | let gracePeriodKey = "gracePeriod" | |
15 | 15 | ||
16 | 16 | let interestPeriodKey = "interestPeriod" | |
17 | 17 | ||
18 | 18 | let burndownPeriodKey = "burndownPeriod" | |
19 | 19 | ||
20 | 20 | let oracleKey = "oracle" | |
21 | 21 | ||
22 | 22 | let discountPercentileKey = "discountPercentile" | |
23 | 23 | ||
24 | 24 | let maxRateKey = "maxRate" | |
25 | 25 | ||
26 | 26 | let assetTokenKey = "assetToken" | |
27 | 27 | ||
28 | 28 | let adminKey = "owner" | |
29 | 29 | ||
30 | 30 | let serviceFeePercentileKey = "service_fee" | |
31 | 31 | ||
32 | 32 | let lendSizeKey = "lend_size" | |
33 | 33 | ||
34 | 34 | let enableDepositBtcKey = "enable_deposit_btc" | |
35 | 35 | ||
36 | 36 | let enableNewLoansKey = "enable_new_loans" | |
37 | 37 | ||
38 | 38 | func startOfKey (renter) = ("start_of_" + renter) | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func endOfGraceOfKey (renter) = ("end_of_grace_of_" + renter) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func endOfInterestOfKey (renter) = ("end_of_interest_of_" + renter) | |
45 | 45 | ||
46 | 46 | ||
47 | 47 | func endOfBurndownOfKey (renter) = ("end_of_burndown_of_" + renter) | |
48 | 48 | ||
49 | 49 | ||
50 | 50 | func rateOfKey (renter) = ("rate_of_" + renter) | |
51 | 51 | ||
52 | 52 | ||
53 | 53 | func depositOfKey (renter) = ("deposit_of_" + renter) | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func lendOfKey (renter) = ("lend_of_" + renter) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func lendersOfKey (renter) = ("lenders_of_" + renter) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func circulatingAssetsKey (lender) = ("curculating_assets_of_" + lender) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func openLendsOfKey (lender) = ("open_lends_of_" + lender) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | let lendSize = (valueOrErrorMessage(getInteger(this, lendSizeKey), "no lendSize") * ten8) | |
69 | 69 | ||
70 | 70 | let newDepositBtcEnabled = match getBoolean(this, enableDepositBtcKey) { | |
71 | 71 | case b: Boolean => | |
72 | 72 | b | |
73 | 73 | case _ => | |
74 | 74 | true | |
75 | 75 | } | |
76 | 76 | ||
77 | 77 | let newLoansEnabled = match getBoolean(this, enableNewLoansKey) { | |
78 | 78 | case b: Boolean => | |
79 | 79 | b | |
80 | 80 | case _ => | |
81 | 81 | true | |
82 | 82 | } | |
83 | 83 | ||
84 | 84 | let allLendersStr = match getString(this, lendersKey) { | |
85 | 85 | case x: String => | |
86 | 86 | x | |
87 | 87 | case _ => | |
88 | 88 | "" | |
89 | 89 | } | |
90 | 90 | ||
91 | 91 | let enabledLendersStr = match getString(this, enabledLendersKey) { | |
92 | 92 | case x: String => | |
93 | 93 | x | |
94 | 94 | case _ => | |
95 | 95 | "" | |
96 | 96 | } | |
97 | 97 | ||
98 | 98 | let ownerStr = valueOrErrorMessage(getString(this, adminKey), "No owner") | |
99 | 99 | ||
100 | 100 | let owner = valueOrErrorMessage(addressFromString(ownerStr), "No owner") | |
101 | 101 | ||
102 | 102 | let assetToken = fromBase58String(valueOrErrorMessage(getString(this, assetTokenKey), "No assetId")) | |
103 | 103 | ||
104 | 104 | let gracePeriod = valueOrErrorMessage(getInteger(this, gracePeriodKey), "No grace period") | |
105 | 105 | ||
106 | 106 | let interestPeriod = valueOrErrorMessage(getInteger(this, interestPeriodKey), "No interest period") | |
107 | 107 | ||
108 | 108 | let burndownPeriod = valueOrErrorMessage(getInteger(this, burndownPeriodKey), "No burndown period") | |
109 | 109 | ||
110 | 110 | let maxRate = valueOrErrorMessage(getInteger(this, maxRateKey), "No oracle max value") | |
111 | 111 | ||
112 | 112 | let oracle = valueOrErrorMessage(getString(this, oracleKey), "No oracle") | |
113 | 113 | ||
114 | 114 | let oracleValue = valueOrErrorMessage(getInteger(valueOrErrorMessage(addressFromString(oracle), "bad oracle address"), oracleDataKey), "No oracle value") | |
115 | 115 | ||
116 | 116 | let discountPercentile = valueOrErrorMessage(getInteger(this, discountPercentileKey), "No discount percentile") | |
117 | 117 | ||
118 | 118 | let serviceFeePercentile = valueOrErrorMessage(getInteger(this, serviceFeePercentileKey), "No service fee percentile") | |
119 | 119 | ||
120 | 120 | let rate = if ((maxRate >= oracleValue)) | |
121 | 121 | then oracleValue | |
122 | 122 | else throw(((("Suspicious rate value: actual: " + toString(oracleValue)) + ", max: ") + toString(maxRate))) | |
123 | 123 | ||
124 | 124 | let minimalLendAmount = (((100 * ten8) / (discountPercentile * rate)) + (if ((((100 * ten8) % (discountPercentile * rate)) > 0)) | |
125 | 125 | then 1 | |
126 | 126 | else 0)) | |
127 | 127 | ||
128 | 128 | let initialized = isDefined(getString(this, assetTokenKey)) | |
129 | 129 | ||
130 | 130 | func isLendOpen (renter) = match getInteger(this, startOfKey(renter)) { | |
131 | 131 | case s: Int => | |
132 | 132 | (s > 0) | |
133 | 133 | case _ => | |
134 | 134 | false | |
135 | 135 | } | |
136 | 136 | ||
137 | 137 | ||
138 | 138 | func profitForKey (s) = ("profit_for_" + s) | |
139 | 139 | ||
140 | 140 | ||
141 | 141 | func profitFor (r) = match getInteger(this, profitForKey(r)) { | |
142 | 142 | case i: Int => | |
143 | 143 | i | |
144 | 144 | case _ => | |
145 | 145 | 0 | |
146 | 146 | } | |
147 | 147 | ||
148 | 148 | ||
149 | 149 | func unclaimedDepositForKey (s) = ("unclaimied_for_" + s) | |
150 | 150 | ||
151 | 151 | ||
152 | 152 | func unclaimedDepositFor (r) = match getInteger(this, unclaimedDepositForKey(r)) { | |
153 | 153 | case i: Int => | |
154 | 154 | i | |
155 | 155 | case _ => | |
156 | 156 | 0 | |
157 | 157 | } | |
158 | 158 | ||
159 | 159 | ||
160 | 160 | func decrementOpenLendsAmount (lender) = { | |
161 | 161 | let cur = valueOrErrorMessage(getInteger(this, openLendsOfKey(lender)), "must have open lends at the moment") | |
162 | 162 | DataEntry(openLendsOfKey(lender), (cur - 1)) | |
163 | 163 | } | |
164 | 164 | ||
165 | 165 | ||
166 | 166 | func incrementOpenLends () = { | |
167 | 167 | func foldFunc (acc,s) = { | |
168 | 168 | let cur = match getInteger(this, openLendsOfKey(s)) { | |
169 | 169 | case x: Int => | |
170 | 170 | x | |
171 | 171 | case _ => | |
172 | 172 | 0 | |
173 | 173 | } | |
174 | 174 | DataEntry(openLendsOfKey(s), (cur + 1)) :: acc | |
175 | 175 | } | |
176 | 176 | ||
177 | 177 | let $list47564808 = split(enabledLendersStr, "|") | |
178 | 178 | let $size47564808 = size($list47564808) | |
179 | 179 | let $acc047564808 = nil | |
180 | 180 | if (($size47564808 == 0)) | |
181 | 181 | then $acc047564808 | |
182 | 182 | else { | |
183 | 183 | let $acc147564808 = foldFunc($acc047564808, $list47564808[0]) | |
184 | 184 | if (($size47564808 == 1)) | |
185 | 185 | then $acc147564808 | |
186 | 186 | else { | |
187 | 187 | let $acc247564808 = foldFunc($acc147564808, $list47564808[1]) | |
188 | 188 | if (($size47564808 == 2)) | |
189 | 189 | then $acc247564808 | |
190 | 190 | else { | |
191 | 191 | let $acc347564808 = foldFunc($acc247564808, $list47564808[2]) | |
192 | 192 | if (($size47564808 == 3)) | |
193 | 193 | then $acc347564808 | |
194 | 194 | else { | |
195 | 195 | let $acc447564808 = foldFunc($acc347564808, $list47564808[3]) | |
196 | 196 | if (($size47564808 == 4)) | |
197 | 197 | then $acc447564808 | |
198 | 198 | else { | |
199 | 199 | let $acc547564808 = foldFunc($acc447564808, $list47564808[4]) | |
200 | 200 | if (($size47564808 == 5)) | |
201 | 201 | then $acc547564808 | |
202 | 202 | else { | |
203 | 203 | let $acc647564808 = foldFunc($acc547564808, $list47564808[5]) | |
204 | 204 | if (($size47564808 == 6)) | |
205 | 205 | then $acc647564808 | |
206 | 206 | else { | |
207 | 207 | let $acc747564808 = foldFunc($acc647564808, $list47564808[6]) | |
208 | 208 | if (($size47564808 == 7)) | |
209 | 209 | then $acc747564808 | |
210 | 210 | else { | |
211 | 211 | let $acc847564808 = foldFunc($acc747564808, $list47564808[7]) | |
212 | 212 | if (($size47564808 == 8)) | |
213 | 213 | then $acc847564808 | |
214 | 214 | else { | |
215 | 215 | let $acc947564808 = foldFunc($acc847564808, $list47564808[8]) | |
216 | 216 | if (($size47564808 == 9)) | |
217 | 217 | then $acc947564808 | |
218 | 218 | else { | |
219 | 219 | let $acc1047564808 = foldFunc($acc947564808, $list47564808[9]) | |
220 | 220 | if (($size47564808 == 10)) | |
221 | 221 | then $acc1047564808 | |
222 | 222 | else { | |
223 | 223 | let $acc1147564808 = foldFunc($acc1047564808, $list47564808[10]) | |
224 | 224 | if (($size47564808 == 11)) | |
225 | 225 | then $acc1147564808 | |
226 | 226 | else { | |
227 | 227 | let $acc1247564808 = foldFunc($acc1147564808, $list47564808[11]) | |
228 | 228 | if (($size47564808 == 12)) | |
229 | 229 | then $acc1247564808 | |
230 | 230 | else { | |
231 | 231 | let $acc1347564808 = foldFunc($acc1247564808, $list47564808[12]) | |
232 | 232 | if (($size47564808 == 13)) | |
233 | 233 | then $acc1347564808 | |
234 | 234 | else { | |
235 | 235 | let $acc1447564808 = foldFunc($acc1347564808, $list47564808[13]) | |
236 | 236 | if (($size47564808 == 14)) | |
237 | 237 | then $acc1447564808 | |
238 | 238 | else { | |
239 | 239 | let $acc1547564808 = foldFunc($acc1447564808, $list47564808[14]) | |
240 | 240 | if (($size47564808 == 15)) | |
241 | 241 | then $acc1547564808 | |
242 | 242 | else { | |
243 | 243 | let $acc1647564808 = foldFunc($acc1547564808, $list47564808[15]) | |
244 | 244 | if (($size47564808 == 16)) | |
245 | 245 | then $acc1647564808 | |
246 | 246 | else { | |
247 | 247 | let $acc1747564808 = foldFunc($acc1647564808, $list47564808[16]) | |
248 | 248 | if (($size47564808 == 17)) | |
249 | 249 | then $acc1747564808 | |
250 | 250 | else { | |
251 | 251 | let $acc1847564808 = foldFunc($acc1747564808, $list47564808[17]) | |
252 | 252 | if (($size47564808 == 18)) | |
253 | 253 | then $acc1847564808 | |
254 | 254 | else { | |
255 | 255 | let $acc1947564808 = foldFunc($acc1847564808, $list47564808[18]) | |
256 | 256 | if (($size47564808 == 19)) | |
257 | 257 | then $acc1947564808 | |
258 | 258 | else { | |
259 | 259 | let $acc2047564808 = foldFunc($acc1947564808, $list47564808[19]) | |
260 | 260 | if (($size47564808 == 20)) | |
261 | 261 | then $acc2047564808 | |
262 | 262 | else { | |
263 | 263 | let $acc2147564808 = foldFunc($acc2047564808, $list47564808[20]) | |
264 | 264 | throw("List size exceed 20") | |
265 | 265 | } | |
266 | 266 | } | |
267 | 267 | } | |
268 | 268 | } | |
269 | 269 | } | |
270 | 270 | } | |
271 | 271 | } | |
272 | 272 | } | |
273 | 273 | } | |
274 | 274 | } | |
275 | 275 | } | |
276 | 276 | } | |
277 | 277 | } | |
278 | 278 | } | |
279 | 279 | } | |
280 | 280 | } | |
281 | 281 | } | |
282 | 282 | } | |
283 | 283 | } | |
284 | 284 | } | |
285 | 285 | } | |
286 | 286 | } | |
287 | 287 | ||
288 | 288 | ||
289 | 289 | func profitDistribution (btc,lenders) = { | |
290 | - | let servicePart = fraction(btc, serviceFeePercentile, | |
290 | + | let servicePart = fraction(btc, serviceFeePercentile, 100) | |
291 | 291 | let distribute = (btc - servicePart) | |
292 | 292 | let newServiceProfit = (profitFor(ownerStr) + servicePart) | |
293 | 293 | let lendersAmt = size(lenders) | |
294 | 294 | func foldFunc (l,lender) = { | |
295 | 295 | let newProfit = (profitFor(lender) + (distribute / lendersAmt)) | |
296 | 296 | [DataEntry(profitForKey(lender), newProfit), decrementOpenLendsAmount(lender)] :: l | |
297 | 297 | } | |
298 | 298 | ||
299 | - | let $ | |
300 | - | let $ | |
301 | - | let $ | |
302 | - | if (($ | |
303 | - | then $ | |
299 | + | let $list53135395 = lenders | |
300 | + | let $size53135395 = size($list53135395) | |
301 | + | let $acc053135395 = [DataEntry(profitForKey(ownerStr), newServiceProfit)] | |
302 | + | if (($size53135395 == 0)) | |
303 | + | then $acc053135395 | |
304 | 304 | else { | |
305 | - | let $ | |
306 | - | if (($ | |
307 | - | then $ | |
305 | + | let $acc153135395 = foldFunc($acc053135395, $list53135395[0]) | |
306 | + | if (($size53135395 == 1)) | |
307 | + | then $acc153135395 | |
308 | 308 | else { | |
309 | - | let $ | |
310 | - | if (($ | |
311 | - | then $ | |
309 | + | let $acc253135395 = foldFunc($acc153135395, $list53135395[1]) | |
310 | + | if (($size53135395 == 2)) | |
311 | + | then $acc253135395 | |
312 | 312 | else { | |
313 | - | let $ | |
314 | - | if (($ | |
315 | - | then $ | |
313 | + | let $acc353135395 = foldFunc($acc253135395, $list53135395[2]) | |
314 | + | if (($size53135395 == 3)) | |
315 | + | then $acc353135395 | |
316 | 316 | else { | |
317 | - | let $ | |
318 | - | if (($ | |
319 | - | then $ | |
317 | + | let $acc453135395 = foldFunc($acc353135395, $list53135395[3]) | |
318 | + | if (($size53135395 == 4)) | |
319 | + | then $acc453135395 | |
320 | 320 | else { | |
321 | - | let $ | |
322 | - | if (($ | |
323 | - | then $ | |
321 | + | let $acc553135395 = foldFunc($acc453135395, $list53135395[4]) | |
322 | + | if (($size53135395 == 5)) | |
323 | + | then $acc553135395 | |
324 | 324 | else { | |
325 | - | let $ | |
326 | - | if (($ | |
327 | - | then $ | |
325 | + | let $acc653135395 = foldFunc($acc553135395, $list53135395[5]) | |
326 | + | if (($size53135395 == 6)) | |
327 | + | then $acc653135395 | |
328 | 328 | else { | |
329 | - | let $ | |
330 | - | if (($ | |
331 | - | then $ | |
329 | + | let $acc753135395 = foldFunc($acc653135395, $list53135395[6]) | |
330 | + | if (($size53135395 == 7)) | |
331 | + | then $acc753135395 | |
332 | 332 | else { | |
333 | - | let $ | |
334 | - | if (($ | |
335 | - | then $ | |
333 | + | let $acc853135395 = foldFunc($acc753135395, $list53135395[7]) | |
334 | + | if (($size53135395 == 8)) | |
335 | + | then $acc853135395 | |
336 | 336 | else { | |
337 | - | let $ | |
338 | - | if (($ | |
339 | - | then $ | |
337 | + | let $acc953135395 = foldFunc($acc853135395, $list53135395[8]) | |
338 | + | if (($size53135395 == 9)) | |
339 | + | then $acc953135395 | |
340 | 340 | else { | |
341 | - | let $ | |
342 | - | if (($ | |
343 | - | then $ | |
341 | + | let $acc1053135395 = foldFunc($acc953135395, $list53135395[9]) | |
342 | + | if (($size53135395 == 10)) | |
343 | + | then $acc1053135395 | |
344 | 344 | else { | |
345 | - | let $ | |
346 | - | if (($ | |
347 | - | then $ | |
345 | + | let $acc1153135395 = foldFunc($acc1053135395, $list53135395[10]) | |
346 | + | if (($size53135395 == 11)) | |
347 | + | then $acc1153135395 | |
348 | 348 | else { | |
349 | - | let $ | |
350 | - | if (($ | |
351 | - | then $ | |
349 | + | let $acc1253135395 = foldFunc($acc1153135395, $list53135395[11]) | |
350 | + | if (($size53135395 == 12)) | |
351 | + | then $acc1253135395 | |
352 | 352 | else { | |
353 | - | let $ | |
354 | - | if (($ | |
355 | - | then $ | |
353 | + | let $acc1353135395 = foldFunc($acc1253135395, $list53135395[12]) | |
354 | + | if (($size53135395 == 13)) | |
355 | + | then $acc1353135395 | |
356 | 356 | else { | |
357 | - | let $ | |
358 | - | if (($ | |
359 | - | then $ | |
357 | + | let $acc1453135395 = foldFunc($acc1353135395, $list53135395[13]) | |
358 | + | if (($size53135395 == 14)) | |
359 | + | then $acc1453135395 | |
360 | 360 | else { | |
361 | - | let $ | |
362 | - | if (($ | |
363 | - | then $ | |
361 | + | let $acc1553135395 = foldFunc($acc1453135395, $list53135395[14]) | |
362 | + | if (($size53135395 == 15)) | |
363 | + | then $acc1553135395 | |
364 | 364 | else { | |
365 | - | let $ | |
366 | - | if (($ | |
367 | - | then $ | |
365 | + | let $acc1653135395 = foldFunc($acc1553135395, $list53135395[15]) | |
366 | + | if (($size53135395 == 16)) | |
367 | + | then $acc1653135395 | |
368 | 368 | else { | |
369 | - | let $ | |
370 | - | if (($ | |
371 | - | then $ | |
369 | + | let $acc1753135395 = foldFunc($acc1653135395, $list53135395[16]) | |
370 | + | if (($size53135395 == 17)) | |
371 | + | then $acc1753135395 | |
372 | 372 | else { | |
373 | - | let $ | |
374 | - | if (($ | |
375 | - | then $ | |
373 | + | let $acc1853135395 = foldFunc($acc1753135395, $list53135395[17]) | |
374 | + | if (($size53135395 == 18)) | |
375 | + | then $acc1853135395 | |
376 | 376 | else { | |
377 | - | let $ | |
378 | - | if (($ | |
379 | - | then $ | |
377 | + | let $acc1953135395 = foldFunc($acc1853135395, $list53135395[18]) | |
378 | + | if (($size53135395 == 19)) | |
379 | + | then $acc1953135395 | |
380 | 380 | else { | |
381 | - | let $ | |
382 | - | if (($ | |
383 | - | then $ | |
381 | + | let $acc2053135395 = foldFunc($acc1953135395, $list53135395[19]) | |
382 | + | if (($size53135395 == 20)) | |
383 | + | then $acc2053135395 | |
384 | 384 | else { | |
385 | - | let $ | |
385 | + | let $acc2153135395 = foldFunc($acc2053135395, $list53135395[20]) | |
386 | 386 | throw("List size exceed 20") | |
387 | 387 | } | |
388 | 388 | } | |
389 | 389 | } | |
390 | 390 | } | |
391 | 391 | } | |
392 | 392 | } | |
393 | 393 | } | |
394 | 394 | } | |
395 | 395 | } | |
396 | 396 | } | |
397 | 397 | } | |
398 | 398 | } | |
399 | 399 | } | |
400 | 400 | } | |
401 | 401 | } | |
402 | 402 | } | |
403 | 403 | } | |
404 | 404 | } | |
405 | 405 | } | |
406 | 406 | } | |
407 | 407 | } | |
408 | 408 | } | |
409 | 409 | ||
410 | 410 | ||
411 | 411 | func unclaimedDistribution (waves,btc,lenders) = { | |
412 | 412 | let wavesServicePart = fraction(waves, serviceFeePercentile, 10000) | |
413 | 413 | let wavesDistribute = (waves - wavesServicePart) | |
414 | 414 | let newWavesServiceUnclaimed = (unclaimedDepositFor(ownerStr) + wavesServicePart) | |
415 | 415 | let lendersAmt = size(lenders) | |
416 | 416 | func foldFunc (l,lender) = { | |
417 | 417 | let newUnclaimed = (unclaimedDepositFor(lender) + (wavesDistribute / lendersAmt)) | |
418 | 418 | let newDepositValue = (getIntegerValue(this, circulatingAssetsKey(lender)) - (btc / lendersAmt)) | |
419 | 419 | [DataEntry(unclaimedDepositForKey(lender), newUnclaimed), DataEntry(circulatingAssetsKey(lender), newDepositValue), decrementOpenLendsAmount(lender)] :: l | |
420 | 420 | } | |
421 | 421 | ||
422 | - | let $ | |
423 | - | let $ | |
424 | - | let $ | |
425 | - | if (($ | |
426 | - | then $ | |
422 | + | let $list61556255 = lenders | |
423 | + | let $size61556255 = size($list61556255) | |
424 | + | let $acc061556255 = [DataEntry(unclaimedDepositForKey(ownerStr), newWavesServiceUnclaimed)] | |
425 | + | if (($size61556255 == 0)) | |
426 | + | then $acc061556255 | |
427 | 427 | else { | |
428 | - | let $ | |
429 | - | if (($ | |
430 | - | then $ | |
428 | + | let $acc161556255 = foldFunc($acc061556255, $list61556255[0]) | |
429 | + | if (($size61556255 == 1)) | |
430 | + | then $acc161556255 | |
431 | 431 | else { | |
432 | - | let $ | |
433 | - | if (($ | |
434 | - | then $ | |
432 | + | let $acc261556255 = foldFunc($acc161556255, $list61556255[1]) | |
433 | + | if (($size61556255 == 2)) | |
434 | + | then $acc261556255 | |
435 | 435 | else { | |
436 | - | let $ | |
437 | - | if (($ | |
438 | - | then $ | |
436 | + | let $acc361556255 = foldFunc($acc261556255, $list61556255[2]) | |
437 | + | if (($size61556255 == 3)) | |
438 | + | then $acc361556255 | |
439 | 439 | else { | |
440 | - | let $ | |
441 | - | if (($ | |
442 | - | then $ | |
440 | + | let $acc461556255 = foldFunc($acc361556255, $list61556255[3]) | |
441 | + | if (($size61556255 == 4)) | |
442 | + | then $acc461556255 | |
443 | 443 | else { | |
444 | - | let $ | |
445 | - | if (($ | |
446 | - | then $ | |
444 | + | let $acc561556255 = foldFunc($acc461556255, $list61556255[4]) | |
445 | + | if (($size61556255 == 5)) | |
446 | + | then $acc561556255 | |
447 | 447 | else { | |
448 | - | let $ | |
449 | - | if (($ | |
450 | - | then $ | |
448 | + | let $acc661556255 = foldFunc($acc561556255, $list61556255[5]) | |
449 | + | if (($size61556255 == 6)) | |
450 | + | then $acc661556255 | |
451 | 451 | else { | |
452 | - | let $ | |
453 | - | if (($ | |
454 | - | then $ | |
452 | + | let $acc761556255 = foldFunc($acc661556255, $list61556255[6]) | |
453 | + | if (($size61556255 == 7)) | |
454 | + | then $acc761556255 | |
455 | 455 | else { | |
456 | - | let $ | |
457 | - | if (($ | |
458 | - | then $ | |
456 | + | let $acc861556255 = foldFunc($acc761556255, $list61556255[7]) | |
457 | + | if (($size61556255 == 8)) | |
458 | + | then $acc861556255 | |
459 | 459 | else { | |
460 | - | let $ | |
461 | - | if (($ | |
462 | - | then $ | |
460 | + | let $acc961556255 = foldFunc($acc861556255, $list61556255[8]) | |
461 | + | if (($size61556255 == 9)) | |
462 | + | then $acc961556255 | |
463 | 463 | else { | |
464 | - | let $ | |
465 | - | if (($ | |
466 | - | then $ | |
464 | + | let $acc1061556255 = foldFunc($acc961556255, $list61556255[9]) | |
465 | + | if (($size61556255 == 10)) | |
466 | + | then $acc1061556255 | |
467 | 467 | else { | |
468 | - | let $ | |
469 | - | if (($ | |
470 | - | then $ | |
468 | + | let $acc1161556255 = foldFunc($acc1061556255, $list61556255[10]) | |
469 | + | if (($size61556255 == 11)) | |
470 | + | then $acc1161556255 | |
471 | 471 | else { | |
472 | - | let $ | |
473 | - | if (($ | |
474 | - | then $ | |
472 | + | let $acc1261556255 = foldFunc($acc1161556255, $list61556255[11]) | |
473 | + | if (($size61556255 == 12)) | |
474 | + | then $acc1261556255 | |
475 | 475 | else { | |
476 | - | let $ | |
477 | - | if (($ | |
478 | - | then $ | |
476 | + | let $acc1361556255 = foldFunc($acc1261556255, $list61556255[12]) | |
477 | + | if (($size61556255 == 13)) | |
478 | + | then $acc1361556255 | |
479 | 479 | else { | |
480 | - | let $ | |
481 | - | if (($ | |
482 | - | then $ | |
480 | + | let $acc1461556255 = foldFunc($acc1361556255, $list61556255[13]) | |
481 | + | if (($size61556255 == 14)) | |
482 | + | then $acc1461556255 | |
483 | 483 | else { | |
484 | - | let $ | |
485 | - | if (($ | |
486 | - | then $ | |
484 | + | let $acc1561556255 = foldFunc($acc1461556255, $list61556255[14]) | |
485 | + | if (($size61556255 == 15)) | |
486 | + | then $acc1561556255 | |
487 | 487 | else { | |
488 | - | let $ | |
489 | - | if (($ | |
490 | - | then $ | |
488 | + | let $acc1661556255 = foldFunc($acc1561556255, $list61556255[15]) | |
489 | + | if (($size61556255 == 16)) | |
490 | + | then $acc1661556255 | |
491 | 491 | else { | |
492 | - | let $ | |
493 | - | if (($ | |
494 | - | then $ | |
492 | + | let $acc1761556255 = foldFunc($acc1661556255, $list61556255[16]) | |
493 | + | if (($size61556255 == 17)) | |
494 | + | then $acc1761556255 | |
495 | 495 | else { | |
496 | - | let $ | |
497 | - | if (($ | |
498 | - | then $ | |
496 | + | let $acc1861556255 = foldFunc($acc1761556255, $list61556255[17]) | |
497 | + | if (($size61556255 == 18)) | |
498 | + | then $acc1861556255 | |
499 | 499 | else { | |
500 | - | let $ | |
501 | - | if (($ | |
502 | - | then $ | |
500 | + | let $acc1961556255 = foldFunc($acc1861556255, $list61556255[18]) | |
501 | + | if (($size61556255 == 19)) | |
502 | + | then $acc1961556255 | |
503 | 503 | else { | |
504 | - | let $ | |
505 | - | if (($ | |
506 | - | then $ | |
504 | + | let $acc2061556255 = foldFunc($acc1961556255, $list61556255[19]) | |
505 | + | if (($size61556255 == 20)) | |
506 | + | then $acc2061556255 | |
507 | 507 | else { | |
508 | - | let $ | |
508 | + | let $acc2161556255 = foldFunc($acc2061556255, $list61556255[20]) | |
509 | 509 | throw("List size exceed 20") | |
510 | 510 | } | |
511 | 511 | } | |
512 | 512 | } | |
513 | 513 | } | |
514 | 514 | } | |
515 | 515 | } | |
516 | 516 | } | |
517 | 517 | } | |
518 | 518 | } | |
519 | 519 | } | |
520 | 520 | } | |
521 | 521 | } | |
522 | 522 | } | |
523 | 523 | } | |
524 | 524 | } | |
525 | 525 | } | |
526 | 526 | } | |
527 | 527 | } | |
528 | 528 | } | |
529 | 529 | } | |
530 | 530 | } | |
531 | 531 | } | |
532 | 532 | ||
533 | 533 | ||
534 | 534 | func closing (renter,waves,btc,isProfit,lenders) = WriteSet([DataEntry(startOfKey(renter), 0), DataEntry(endOfGraceOfKey(renter), 0), DataEntry(endOfInterestOfKey(renter), 0), DataEntry(endOfBurndownOfKey(renter), 0), DataEntry(rateOfKey(renter), 0), DataEntry(depositOfKey(renter), 0), DataEntry(lendOfKey(renter), 0), DataEntry(lendersOfKey(renter), ""), if (isProfit) | |
535 | 535 | then profitDistribution(btc, lenders) | |
536 | 536 | else unclaimedDistribution(waves, btc, lenders)]) | |
537 | 537 | ||
538 | 538 | ||
539 | 539 | func closeExpired (address,waves,btc,lenders) = { | |
540 | 540 | let loanSize = valueOrErrorMessage(getInteger(this, depositOfKey(address)), "No loan size for address") | |
541 | 541 | closing(address, waves, btc, false, lenders) | |
542 | 542 | } | |
543 | 543 | ||
544 | 544 | ||
545 | 545 | func doBB (renter,returnAssetId,returnAmt) = { | |
546 | 546 | let renterStr = toString(renter) | |
547 | 547 | let hasOpenLoan = isLendOpen(renterStr) | |
548 | 548 | let isTokenCorrect = (returnAssetId == assetToken) | |
549 | 549 | let loanAmount = getIntegerValue(this, lendOfKey(renterStr)) | |
550 | 550 | let depositedValue = getIntegerValue(this, depositOfKey(renterStr)) | |
551 | 551 | if (!(hasOpenLoan)) | |
552 | 552 | then throw("No open loan for caller") | |
553 | 553 | else if (!(isTokenCorrect)) | |
554 | 554 | then throw(((("User must return WBTC: " + toBase58String(assetToken)) + " but returning: ") + toBase58String(returnAssetId))) | |
555 | 555 | else { | |
556 | 556 | let endOfGrace = getIntegerValue(this, endOfGraceOfKey(renterStr)) | |
557 | 557 | let endOfBurndown = getIntegerValue(this, endOfBurndownOfKey(renterStr)) | |
558 | 558 | let endOfInterest = getIntegerValue(this, endOfInterestOfKey(renterStr)) | |
559 | 559 | let canReturnFullAmount = (endOfGrace >= height) | |
560 | 560 | let returnsTheSameAmount = (endOfGrace >= height) | |
561 | 561 | if ((height >= endOfInterest)) | |
562 | 562 | then throw("your loan has expired") | |
563 | 563 | else { | |
564 | 564 | let lendersProfit = if ((height > endOfGrace)) | |
565 | 565 | then fraction(loanAmount, (height - endOfGrace), (endOfBurndown - endOfGrace)) | |
566 | 566 | else 0 | |
567 | 567 | let requiredAmount = if (returnsTheSameAmount) | |
568 | 568 | then loanAmount | |
569 | 569 | else (loanAmount + lendersProfit) | |
570 | 570 | let isReturnAmountCorrect = (returnAmt >= requiredAmount) | |
571 | 571 | let isReturnAmountExact = (returnAmt == requiredAmount) | |
572 | 572 | if (!(isReturnAmountCorrect)) | |
573 | 573 | then throw(((("User must return " + toString(loanAmount)) + " satoshis, but returning ") + toString(returnAmt))) | |
574 | 574 | else { | |
575 | 575 | let depositBack = ScriptTransfer(renter, depositedValue, depositToken) | |
576 | 576 | let excessReturnAmount = ScriptTransfer(renter, (returnAmt - requiredAmount), assetToken) | |
577 | 577 | let transfers = if (isReturnAmountExact) | |
578 | 578 | then [depositBack] | |
579 | 579 | else [depositBack, excessReturnAmount] | |
580 | 580 | let lenders = split(valueOrErrorMessage(getString(this, lendersOfKey(renterStr)), "No lenders for an open loan"), "|") | |
581 | 581 | ScriptResult(closing(renterStr, 0, lendersProfit, true, lenders), TransferSet(transfers)) | |
582 | 582 | } | |
583 | 583 | } | |
584 | 584 | } | |
585 | 585 | } | |
586 | 586 | ||
587 | 587 | ||
588 | 588 | func add (lenders,lender) = if ((lenders == "")) | |
589 | 589 | then lender | |
590 | 590 | else ((lenders + "|") + lender) | |
591 | 591 | ||
592 | 592 | ||
593 | 593 | func remove (lenders,lender) = { | |
594 | 594 | let arr = split(lenders, "|") | |
595 | 595 | func foldFunc (acc,item) = if ((item == lender)) | |
596 | 596 | then acc | |
597 | 597 | else add(acc, item) | |
598 | 598 | ||
599 | - | let $ | |
600 | - | let $ | |
601 | - | let $ | |
602 | - | if (($ | |
603 | - | then $ | |
599 | + | let $list1002610053 = arr | |
600 | + | let $size1002610053 = size($list1002610053) | |
601 | + | let $acc01002610053 = "" | |
602 | + | if (($size1002610053 == 0)) | |
603 | + | then $acc01002610053 | |
604 | 604 | else { | |
605 | - | let $ | |
606 | - | if (($ | |
607 | - | then $ | |
605 | + | let $acc11002610053 = foldFunc($acc01002610053, $list1002610053[0]) | |
606 | + | if (($size1002610053 == 1)) | |
607 | + | then $acc11002610053 | |
608 | 608 | else { | |
609 | - | let $ | |
610 | - | if (($ | |
611 | - | then $ | |
609 | + | let $acc21002610053 = foldFunc($acc11002610053, $list1002610053[1]) | |
610 | + | if (($size1002610053 == 2)) | |
611 | + | then $acc21002610053 | |
612 | 612 | else { | |
613 | - | let $ | |
614 | - | if (($ | |
615 | - | then $ | |
613 | + | let $acc31002610053 = foldFunc($acc21002610053, $list1002610053[2]) | |
614 | + | if (($size1002610053 == 3)) | |
615 | + | then $acc31002610053 | |
616 | 616 | else { | |
617 | - | let $ | |
618 | - | if (($ | |
619 | - | then $ | |
617 | + | let $acc41002610053 = foldFunc($acc31002610053, $list1002610053[3]) | |
618 | + | if (($size1002610053 == 4)) | |
619 | + | then $acc41002610053 | |
620 | 620 | else { | |
621 | - | let $ | |
622 | - | if (($ | |
623 | - | then $ | |
621 | + | let $acc51002610053 = foldFunc($acc41002610053, $list1002610053[4]) | |
622 | + | if (($size1002610053 == 5)) | |
623 | + | then $acc51002610053 | |
624 | 624 | else { | |
625 | - | let $ | |
626 | - | if (($ | |
627 | - | then $ | |
625 | + | let $acc61002610053 = foldFunc($acc51002610053, $list1002610053[5]) | |
626 | + | if (($size1002610053 == 6)) | |
627 | + | then $acc61002610053 | |
628 | 628 | else { | |
629 | - | let $ | |
630 | - | if (($ | |
631 | - | then $ | |
629 | + | let $acc71002610053 = foldFunc($acc61002610053, $list1002610053[6]) | |
630 | + | if (($size1002610053 == 7)) | |
631 | + | then $acc71002610053 | |
632 | 632 | else { | |
633 | - | let $ | |
634 | - | if (($ | |
635 | - | then $ | |
633 | + | let $acc81002610053 = foldFunc($acc71002610053, $list1002610053[7]) | |
634 | + | if (($size1002610053 == 8)) | |
635 | + | then $acc81002610053 | |
636 | 636 | else { | |
637 | - | let $ | |
638 | - | if (($ | |
639 | - | then $ | |
637 | + | let $acc91002610053 = foldFunc($acc81002610053, $list1002610053[8]) | |
638 | + | if (($size1002610053 == 9)) | |
639 | + | then $acc91002610053 | |
640 | 640 | else { | |
641 | - | let $ | |
642 | - | if (($ | |
643 | - | then $ | |
641 | + | let $acc101002610053 = foldFunc($acc91002610053, $list1002610053[9]) | |
642 | + | if (($size1002610053 == 10)) | |
643 | + | then $acc101002610053 | |
644 | 644 | else { | |
645 | - | let $ | |
646 | - | if (($ | |
647 | - | then $ | |
645 | + | let $acc111002610053 = foldFunc($acc101002610053, $list1002610053[10]) | |
646 | + | if (($size1002610053 == 11)) | |
647 | + | then $acc111002610053 | |
648 | 648 | else { | |
649 | - | let $ | |
650 | - | if (($ | |
651 | - | then $ | |
649 | + | let $acc121002610053 = foldFunc($acc111002610053, $list1002610053[11]) | |
650 | + | if (($size1002610053 == 12)) | |
651 | + | then $acc121002610053 | |
652 | 652 | else { | |
653 | - | let $ | |
654 | - | if (($ | |
655 | - | then $ | |
653 | + | let $acc131002610053 = foldFunc($acc121002610053, $list1002610053[12]) | |
654 | + | if (($size1002610053 == 13)) | |
655 | + | then $acc131002610053 | |
656 | 656 | else { | |
657 | - | let $ | |
658 | - | if (($ | |
659 | - | then $ | |
657 | + | let $acc141002610053 = foldFunc($acc131002610053, $list1002610053[13]) | |
658 | + | if (($size1002610053 == 14)) | |
659 | + | then $acc141002610053 | |
660 | 660 | else { | |
661 | - | let $ | |
662 | - | if (($ | |
663 | - | then $ | |
661 | + | let $acc151002610053 = foldFunc($acc141002610053, $list1002610053[14]) | |
662 | + | if (($size1002610053 == 15)) | |
663 | + | then $acc151002610053 | |
664 | 664 | else { | |
665 | - | let $ | |
666 | - | if (($ | |
667 | - | then $ | |
665 | + | let $acc161002610053 = foldFunc($acc151002610053, $list1002610053[15]) | |
666 | + | if (($size1002610053 == 16)) | |
667 | + | then $acc161002610053 | |
668 | 668 | else { | |
669 | - | let $ | |
670 | - | if (($ | |
671 | - | then $ | |
669 | + | let $acc171002610053 = foldFunc($acc161002610053, $list1002610053[16]) | |
670 | + | if (($size1002610053 == 17)) | |
671 | + | then $acc171002610053 | |
672 | 672 | else { | |
673 | - | let $ | |
674 | - | if (($ | |
675 | - | then $ | |
673 | + | let $acc181002610053 = foldFunc($acc171002610053, $list1002610053[17]) | |
674 | + | if (($size1002610053 == 18)) | |
675 | + | then $acc181002610053 | |
676 | 676 | else { | |
677 | - | let $ | |
678 | - | if (($ | |
679 | - | then $ | |
677 | + | let $acc191002610053 = foldFunc($acc181002610053, $list1002610053[18]) | |
678 | + | if (($size1002610053 == 19)) | |
679 | + | then $acc191002610053 | |
680 | 680 | else { | |
681 | - | let $ | |
682 | - | if (($ | |
683 | - | then $ | |
681 | + | let $acc201002610053 = foldFunc($acc191002610053, $list1002610053[19]) | |
682 | + | if (($size1002610053 == 20)) | |
683 | + | then $acc201002610053 | |
684 | 684 | else { | |
685 | - | let $ | |
685 | + | let $acc211002610053 = foldFunc($acc201002610053, $list1002610053[20]) | |
686 | 686 | throw("List size exceed 20") | |
687 | 687 | } | |
688 | 688 | } | |
689 | 689 | } | |
690 | 690 | } | |
691 | 691 | } | |
692 | 692 | } | |
693 | 693 | } | |
694 | 694 | } | |
695 | 695 | } | |
696 | 696 | } | |
697 | 697 | } | |
698 | 698 | } | |
699 | 699 | } | |
700 | 700 | } | |
701 | 701 | } | |
702 | 702 | } | |
703 | 703 | } | |
704 | 704 | } | |
705 | 705 | } | |
706 | 706 | } | |
707 | 707 | } | |
708 | 708 | } | |
709 | 709 | ||
710 | 710 | ||
711 | 711 | func doTakeProfit (lender) = { | |
712 | 712 | let str = toBase58String(lender.bytes) | |
713 | 713 | ScriptResult(WriteSet([DataEntry(profitForKey(str), 0), DataEntry(unclaimedDepositForKey(str), 0)]), TransferSet([ScriptTransfer(lender, profitFor(str), assetToken), ScriptTransfer(lender, unclaimedDepositFor(str), depositToken)])) | |
714 | 714 | } | |
715 | 715 | ||
716 | 716 | ||
717 | 717 | @Callable(i) | |
718 | 718 | func init (owner,token,oracle,maxRate,discount,grace,interest,burndown,serviceFee,lendSize) = if ((interest > burndown)) | |
719 | 719 | then throw("interest must be less or equal to burndown") | |
720 | 720 | else if ((i.caller != this)) | |
721 | 721 | then throw("only dapp itself can init") | |
722 | 722 | else WriteSet([DataEntry(adminKey, owner), DataEntry(assetTokenKey, token), DataEntry(oracleKey, oracle), DataEntry(maxRateKey, maxRate), DataEntry(discountPercentileKey, discount), DataEntry(gracePeriodKey, grace), DataEntry(interestPeriodKey, interest), DataEntry(burndownPeriodKey, burndown), DataEntry(serviceFeePercentileKey, serviceFee), DataEntry(lendSizeKey, lendSize)]) | |
723 | 723 | ||
724 | 724 | ||
725 | 725 | ||
726 | 726 | @Callable(i) | |
727 | 727 | func updateParams (oracle,maxRate,discount,grace,interest,burndown,serviceFee,lendSize) = if ((interest > burndown)) | |
728 | 728 | then throw("interest must be less or equal to burndown") | |
729 | 729 | else if ((i.caller != owner)) | |
730 | 730 | then throw("only owner can update params") | |
731 | 731 | else WriteSet([DataEntry(oracleKey, oracle), DataEntry(maxRateKey, maxRate), DataEntry(discountPercentileKey, discount), DataEntry(gracePeriodKey, grace), DataEntry(interestPeriodKey, interest), DataEntry(burndownPeriodKey, burndown), DataEntry(serviceFeePercentileKey, serviceFee), DataEntry(lendSizeKey, lendSize)]) | |
732 | 732 | ||
733 | 733 | ||
734 | 734 | ||
735 | 735 | @Callable(i) | |
736 | 736 | func borrow () = { | |
737 | 737 | let renter = toBase58String(i.caller.bytes) | |
738 | 738 | if (!(newLoansEnabled)) | |
739 | 739 | then throw("New loans temporarily disabled") | |
740 | 740 | else if (isLendOpen(renter)) | |
741 | 741 | then throw((renter + " already has an open loan")) | |
742 | 742 | else match i.payment { | |
743 | 743 | case a: AttachedPayment => | |
744 | 744 | if ((a.assetId == depositToken)) | |
745 | 745 | then { | |
746 | 746 | let currentHeight = height | |
747 | 747 | let endOfGrace = (height + gracePeriod) | |
748 | 748 | let endOfInterest = (endOfGrace + interestPeriod) | |
749 | 749 | let endOfBurndown = (endOfGrace + burndownPeriod) | |
750 | 750 | let depositAmount = a.amount | |
751 | 751 | let assetTokensLent = fraction(depositAmount, (rate * discountPercentile), (ten8 * 100)) | |
752 | 752 | if ((assetTokensLent > 0)) | |
753 | 753 | then { | |
754 | 754 | let datas = WriteSet([DataEntry(startOfKey(renter), currentHeight), DataEntry(endOfGraceOfKey(renter), endOfGrace), DataEntry(endOfInterestOfKey(renter), endOfInterest), DataEntry(endOfBurndownOfKey(renter), endOfBurndown), DataEntry(rateOfKey(renter), fraction(rate, discountPercentile, 100)), DataEntry(depositOfKey(renter), depositAmount), DataEntry(lendOfKey(renter), assetTokensLent), DataEntry(lendersOfKey(renter), enabledLendersStr), incrementOpenLends()]) | |
755 | 755 | ScriptResult(datas, TransferSet([ScriptTransfer(i.caller, assetTokensLent, assetToken)])) | |
756 | 756 | } | |
757 | 757 | else throw((("payment can't be less than " + toString(minimalLendAmount)) + " wavelets (price of 1 satoshi)")) | |
758 | 758 | } | |
759 | 759 | else throw(("can only lend WBTC for WAVES, but got " + toBase58String(valueOrErrorMessage(a.assetId, "No asset provided")))) | |
760 | 760 | case _ => | |
761 | 761 | throw("payment in assetTokens must be attached") | |
762 | 762 | } | |
763 | 763 | } | |
764 | 764 | ||
765 | 765 | ||
766 | 766 | ||
767 | 767 | @Callable(i) | |
768 | 768 | func buyBack () = { | |
769 | 769 | let pmt = valueOrErrorMessage(i.payment, "payment must be attached") | |
770 | 770 | doBB(i.caller, valueOrErrorMessage(pmt.assetId, "payment in WBTC must be attached"), pmt.amount) | |
771 | 771 | } | |
772 | 772 | ||
773 | 773 | ||
774 | 774 | ||
775 | 775 | @Callable(i) | |
776 | 776 | func closeExpiredFor (address) = { | |
777 | 777 | let endOfInterest = valueOrErrorMessage(getInteger(this, endOfInterestOfKey(address)), "no end of interest") | |
778 | 778 | let loanExpired = (height > endOfInterest) | |
779 | 779 | if (!(loanExpired)) | |
780 | 780 | then throw(((("Owner can only close expired rents. Expiring on height " + toString(endOfInterest)) + ", current height") + toString(height))) | |
781 | 781 | else closeExpired(address, getIntegerValue(this, depositOfKey(address)), getIntegerValue(this, lendOfKey(address)), split(getStringValue(this, lendersOfKey(address)), "|")) | |
782 | 782 | } | |
783 | 783 | ||
784 | 784 | ||
785 | 785 | ||
786 | 786 | @Callable(i) | |
787 | 787 | func discard () = { | |
788 | 788 | let address = toBase58String(i.caller.bytes) | |
789 | 789 | closeExpired(address, getIntegerValue(this, depositOfKey(address)), getIntegerValue(this, lendOfKey(address)), split(getStringValue(this, lendersOfKey(address)), "|")) | |
790 | 790 | } | |
791 | 791 | ||
792 | 792 | ||
793 | 793 | ||
794 | 794 | @Callable(i) | |
795 | 795 | func sendProfit (lender) = doTakeProfit(valueOrErrorMessage(addressFromString(lender), "incorrect address")) | |
796 | 796 | ||
797 | 797 | ||
798 | 798 | ||
799 | 799 | @Callable(i) | |
800 | 800 | func takeProfit () = doTakeProfit(i.caller) | |
801 | 801 | ||
802 | 802 | ||
803 | 803 | ||
804 | 804 | @Callable(i) | |
805 | 805 | func enableLending (b) = { | |
806 | 806 | let lender = toBase58String(i.caller.bytes) | |
807 | 807 | let isLender = isDefined(indexOf(allLendersStr, lender)) | |
808 | 808 | let isActiveLender = isDefined(indexOf(enabledLendersStr, lender)) | |
809 | 809 | if (!(isLender)) | |
810 | 810 | then throw("is not lender") | |
811 | 811 | else { | |
812 | 812 | let r = if (isActiveLender) | |
813 | 813 | then if (b) | |
814 | 814 | then throw("is already active lender") | |
815 | 815 | else remove(enabledLendersStr, lender) | |
816 | 816 | else if (!(b)) | |
817 | 817 | then throw("is already disabled lender") | |
818 | 818 | else add(enabledLendersStr, lender) | |
819 | 819 | WriteSet([DataEntry(enabledLendersKey, r)]) | |
820 | 820 | } | |
821 | 821 | } | |
822 | 822 | ||
823 | 823 | ||
824 | 824 | ||
825 | 825 | @Callable(i) | |
826 | 826 | func depositBtc () = { | |
827 | 827 | let lender = toBase58String(i.caller.bytes) | |
828 | 828 | let hasCapacity = (20 > size(split(allLendersStr, "|"))) | |
829 | 829 | let alreadyParticipates = isDefined(indexOf(allLendersStr, lender)) | |
830 | 830 | if (!(newDepositBtcEnabled)) | |
831 | 831 | then throw("New deposits temporarily disabled") | |
832 | 832 | else if (!(hasCapacity)) | |
833 | 833 | then throw("too much lenders already") | |
834 | 834 | else if (alreadyParticipates) | |
835 | 835 | then throw((("lender " + lender) + " already participates in the dApp")) | |
836 | 836 | else { | |
837 | - | let errorMessage = (("exactly" + toString( | |
837 | + | let errorMessage = (("exactly" + toString(value(getInteger(this, lendSizeKey)))) + " BTC must be attached") | |
838 | 838 | let pmt = valueOrErrorMessage(i.payment, errorMessage) | |
839 | 839 | if (if ((pmt.assetId != assetToken)) | |
840 | 840 | then true | |
841 | 841 | else (pmt.amount != lendSize)) | |
842 | 842 | then throw(errorMessage) | |
843 | 843 | else WriteSet([DataEntry(circulatingAssetsKey(lender), lendSize), DataEntry(lendersKey, add(allLendersStr, lender)), DataEntry(enabledLendersKey, add(enabledLendersStr, lender))]) | |
844 | 844 | } | |
845 | 845 | } | |
846 | 846 | ||
847 | 847 | ||
848 | 848 | ||
849 | 849 | @Callable(i) | |
850 | 850 | func withdrawBtc () = { | |
851 | 851 | let lender = toBase58String(i.caller.bytes) | |
852 | 852 | let isWithdrawAllowed = match getInteger(this, openLendsOfKey(lender)) { | |
853 | 853 | case a: Int => | |
854 | 854 | (a == 0) | |
855 | 855 | case _ => | |
856 | 856 | true | |
857 | 857 | } | |
858 | 858 | if (!(isWithdrawAllowed)) | |
859 | 859 | then throw("withdraw not allowed, you have open lends. invoke enableLending(false) and wait for loans to be closed") | |
860 | 860 | else ScriptResult(WriteSet([DataEntry(circulatingAssetsKey(lender), 0), DataEntry(lendersKey, remove(allLendersStr, lender)), DataEntry(enabledLendersKey, remove(enabledLendersStr, lender))]), TransferSet([ScriptTransfer(i.caller, getIntegerValue(this, circulatingAssetsKey(lender)), assetToken)])) | |
861 | 861 | } | |
862 | 862 | ||
863 | 863 | ||
864 | 864 | ||
865 | 865 | @Callable(i) | |
866 | 866 | func enableDepositBtc (b) = if ((i.caller != owner)) | |
867 | 867 | then throw("admin permissions required") | |
868 | 868 | else if ((b == newDepositBtcEnabled)) | |
869 | 869 | then throw("the value already set") | |
870 | 870 | else WriteSet([DataEntry(enableDepositBtcKey, b)]) | |
871 | 871 | ||
872 | 872 | ||
873 | 873 | ||
874 | 874 | @Callable(i) | |
875 | 875 | func enableNewLoans (b) = if ((i.caller != owner)) | |
876 | 876 | then throw("admin permissions required") | |
877 | 877 | else if ((b == newLoansEnabled)) | |
878 | 878 | then throw("the value already set") | |
879 | 879 | else WriteSet([DataEntry(enableNewLoansKey, b)]) | |
880 | 880 | ||
881 | 881 |
github/deemru/w8io/169f3d6 562.27 ms ◑