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:
OldNewDifferences
287287
288288
289289 func profitDistribution (btc,lenders) = {
290- let servicePart = fraction(btc, serviceFeePercentile, 10000)
290+ let servicePart = fraction(btc, serviceFeePercentile, 100)
291291 let distribute = (btc - servicePart)
292292 let newServiceProfit = (profitFor(ownerStr) + servicePart)
293293 let lendersAmt = size(lenders)
296296 [DataEntry(profitForKey(lender), newProfit), decrementOpenLendsAmount(lender)] :: l
297297 }
298298
299- let $list53155397 = lenders
300- let $size53155397 = size($list53155397)
301- let $acc053155397 = [DataEntry(profitForKey(ownerStr), newServiceProfit)]
302- if (($size53155397 == 0))
303- then $acc053155397
299+ let $list53135395 = lenders
300+ let $size53135395 = size($list53135395)
301+ let $acc053135395 = [DataEntry(profitForKey(ownerStr), newServiceProfit)]
302+ if (($size53135395 == 0))
303+ then $acc053135395
304304 else {
305- let $acc153155397 = foldFunc($acc053155397, $list53155397[0])
306- if (($size53155397 == 1))
307- then $acc153155397
305+ let $acc153135395 = foldFunc($acc053135395, $list53135395[0])
306+ if (($size53135395 == 1))
307+ then $acc153135395
308308 else {
309- let $acc253155397 = foldFunc($acc153155397, $list53155397[1])
310- if (($size53155397 == 2))
311- then $acc253155397
309+ let $acc253135395 = foldFunc($acc153135395, $list53135395[1])
310+ if (($size53135395 == 2))
311+ then $acc253135395
312312 else {
313- let $acc353155397 = foldFunc($acc253155397, $list53155397[2])
314- if (($size53155397 == 3))
315- then $acc353155397
313+ let $acc353135395 = foldFunc($acc253135395, $list53135395[2])
314+ if (($size53135395 == 3))
315+ then $acc353135395
316316 else {
317- let $acc453155397 = foldFunc($acc353155397, $list53155397[3])
318- if (($size53155397 == 4))
319- then $acc453155397
317+ let $acc453135395 = foldFunc($acc353135395, $list53135395[3])
318+ if (($size53135395 == 4))
319+ then $acc453135395
320320 else {
321- let $acc553155397 = foldFunc($acc453155397, $list53155397[4])
322- if (($size53155397 == 5))
323- then $acc553155397
321+ let $acc553135395 = foldFunc($acc453135395, $list53135395[4])
322+ if (($size53135395 == 5))
323+ then $acc553135395
324324 else {
325- let $acc653155397 = foldFunc($acc553155397, $list53155397[5])
326- if (($size53155397 == 6))
327- then $acc653155397
325+ let $acc653135395 = foldFunc($acc553135395, $list53135395[5])
326+ if (($size53135395 == 6))
327+ then $acc653135395
328328 else {
329- let $acc753155397 = foldFunc($acc653155397, $list53155397[6])
330- if (($size53155397 == 7))
331- then $acc753155397
329+ let $acc753135395 = foldFunc($acc653135395, $list53135395[6])
330+ if (($size53135395 == 7))
331+ then $acc753135395
332332 else {
333- let $acc853155397 = foldFunc($acc753155397, $list53155397[7])
334- if (($size53155397 == 8))
335- then $acc853155397
333+ let $acc853135395 = foldFunc($acc753135395, $list53135395[7])
334+ if (($size53135395 == 8))
335+ then $acc853135395
336336 else {
337- let $acc953155397 = foldFunc($acc853155397, $list53155397[8])
338- if (($size53155397 == 9))
339- then $acc953155397
337+ let $acc953135395 = foldFunc($acc853135395, $list53135395[8])
338+ if (($size53135395 == 9))
339+ then $acc953135395
340340 else {
341- let $acc1053155397 = foldFunc($acc953155397, $list53155397[9])
342- if (($size53155397 == 10))
343- then $acc1053155397
341+ let $acc1053135395 = foldFunc($acc953135395, $list53135395[9])
342+ if (($size53135395 == 10))
343+ then $acc1053135395
344344 else {
345- let $acc1153155397 = foldFunc($acc1053155397, $list53155397[10])
346- if (($size53155397 == 11))
347- then $acc1153155397
345+ let $acc1153135395 = foldFunc($acc1053135395, $list53135395[10])
346+ if (($size53135395 == 11))
347+ then $acc1153135395
348348 else {
349- let $acc1253155397 = foldFunc($acc1153155397, $list53155397[11])
350- if (($size53155397 == 12))
351- then $acc1253155397
349+ let $acc1253135395 = foldFunc($acc1153135395, $list53135395[11])
350+ if (($size53135395 == 12))
351+ then $acc1253135395
352352 else {
353- let $acc1353155397 = foldFunc($acc1253155397, $list53155397[12])
354- if (($size53155397 == 13))
355- then $acc1353155397
353+ let $acc1353135395 = foldFunc($acc1253135395, $list53135395[12])
354+ if (($size53135395 == 13))
355+ then $acc1353135395
356356 else {
357- let $acc1453155397 = foldFunc($acc1353155397, $list53155397[13])
358- if (($size53155397 == 14))
359- then $acc1453155397
357+ let $acc1453135395 = foldFunc($acc1353135395, $list53135395[13])
358+ if (($size53135395 == 14))
359+ then $acc1453135395
360360 else {
361- let $acc1553155397 = foldFunc($acc1453155397, $list53155397[14])
362- if (($size53155397 == 15))
363- then $acc1553155397
361+ let $acc1553135395 = foldFunc($acc1453135395, $list53135395[14])
362+ if (($size53135395 == 15))
363+ then $acc1553135395
364364 else {
365- let $acc1653155397 = foldFunc($acc1553155397, $list53155397[15])
366- if (($size53155397 == 16))
367- then $acc1653155397
365+ let $acc1653135395 = foldFunc($acc1553135395, $list53135395[15])
366+ if (($size53135395 == 16))
367+ then $acc1653135395
368368 else {
369- let $acc1753155397 = foldFunc($acc1653155397, $list53155397[16])
370- if (($size53155397 == 17))
371- then $acc1753155397
369+ let $acc1753135395 = foldFunc($acc1653135395, $list53135395[16])
370+ if (($size53135395 == 17))
371+ then $acc1753135395
372372 else {
373- let $acc1853155397 = foldFunc($acc1753155397, $list53155397[17])
374- if (($size53155397 == 18))
375- then $acc1853155397
373+ let $acc1853135395 = foldFunc($acc1753135395, $list53135395[17])
374+ if (($size53135395 == 18))
375+ then $acc1853135395
376376 else {
377- let $acc1953155397 = foldFunc($acc1853155397, $list53155397[18])
378- if (($size53155397 == 19))
379- then $acc1953155397
377+ let $acc1953135395 = foldFunc($acc1853135395, $list53135395[18])
378+ if (($size53135395 == 19))
379+ then $acc1953135395
380380 else {
381- let $acc2053155397 = foldFunc($acc1953155397, $list53155397[19])
382- if (($size53155397 == 20))
383- then $acc2053155397
381+ let $acc2053135395 = foldFunc($acc1953135395, $list53135395[19])
382+ if (($size53135395 == 20))
383+ then $acc2053135395
384384 else {
385- let $acc2153155397 = foldFunc($acc2053155397, $list53155397[20])
385+ let $acc2153135395 = foldFunc($acc2053135395, $list53135395[20])
386386 throw("List size exceed 20")
387387 }
388388 }
419419 [DataEntry(unclaimedDepositForKey(lender), newUnclaimed), DataEntry(circulatingAssetsKey(lender), newDepositValue), decrementOpenLendsAmount(lender)] :: l
420420 }
421421
422- let $list61576257 = lenders
423- let $size61576257 = size($list61576257)
424- let $acc061576257 = [DataEntry(unclaimedDepositForKey(ownerStr), newWavesServiceUnclaimed)]
425- if (($size61576257 == 0))
426- then $acc061576257
422+ let $list61556255 = lenders
423+ let $size61556255 = size($list61556255)
424+ let $acc061556255 = [DataEntry(unclaimedDepositForKey(ownerStr), newWavesServiceUnclaimed)]
425+ if (($size61556255 == 0))
426+ then $acc061556255
427427 else {
428- let $acc161576257 = foldFunc($acc061576257, $list61576257[0])
429- if (($size61576257 == 1))
430- then $acc161576257
428+ let $acc161556255 = foldFunc($acc061556255, $list61556255[0])
429+ if (($size61556255 == 1))
430+ then $acc161556255
431431 else {
432- let $acc261576257 = foldFunc($acc161576257, $list61576257[1])
433- if (($size61576257 == 2))
434- then $acc261576257
432+ let $acc261556255 = foldFunc($acc161556255, $list61556255[1])
433+ if (($size61556255 == 2))
434+ then $acc261556255
435435 else {
436- let $acc361576257 = foldFunc($acc261576257, $list61576257[2])
437- if (($size61576257 == 3))
438- then $acc361576257
436+ let $acc361556255 = foldFunc($acc261556255, $list61556255[2])
437+ if (($size61556255 == 3))
438+ then $acc361556255
439439 else {
440- let $acc461576257 = foldFunc($acc361576257, $list61576257[3])
441- if (($size61576257 == 4))
442- then $acc461576257
440+ let $acc461556255 = foldFunc($acc361556255, $list61556255[3])
441+ if (($size61556255 == 4))
442+ then $acc461556255
443443 else {
444- let $acc561576257 = foldFunc($acc461576257, $list61576257[4])
445- if (($size61576257 == 5))
446- then $acc561576257
444+ let $acc561556255 = foldFunc($acc461556255, $list61556255[4])
445+ if (($size61556255 == 5))
446+ then $acc561556255
447447 else {
448- let $acc661576257 = foldFunc($acc561576257, $list61576257[5])
449- if (($size61576257 == 6))
450- then $acc661576257
448+ let $acc661556255 = foldFunc($acc561556255, $list61556255[5])
449+ if (($size61556255 == 6))
450+ then $acc661556255
451451 else {
452- let $acc761576257 = foldFunc($acc661576257, $list61576257[6])
453- if (($size61576257 == 7))
454- then $acc761576257
452+ let $acc761556255 = foldFunc($acc661556255, $list61556255[6])
453+ if (($size61556255 == 7))
454+ then $acc761556255
455455 else {
456- let $acc861576257 = foldFunc($acc761576257, $list61576257[7])
457- if (($size61576257 == 8))
458- then $acc861576257
456+ let $acc861556255 = foldFunc($acc761556255, $list61556255[7])
457+ if (($size61556255 == 8))
458+ then $acc861556255
459459 else {
460- let $acc961576257 = foldFunc($acc861576257, $list61576257[8])
461- if (($size61576257 == 9))
462- then $acc961576257
460+ let $acc961556255 = foldFunc($acc861556255, $list61556255[8])
461+ if (($size61556255 == 9))
462+ then $acc961556255
463463 else {
464- let $acc1061576257 = foldFunc($acc961576257, $list61576257[9])
465- if (($size61576257 == 10))
466- then $acc1061576257
464+ let $acc1061556255 = foldFunc($acc961556255, $list61556255[9])
465+ if (($size61556255 == 10))
466+ then $acc1061556255
467467 else {
468- let $acc1161576257 = foldFunc($acc1061576257, $list61576257[10])
469- if (($size61576257 == 11))
470- then $acc1161576257
468+ let $acc1161556255 = foldFunc($acc1061556255, $list61556255[10])
469+ if (($size61556255 == 11))
470+ then $acc1161556255
471471 else {
472- let $acc1261576257 = foldFunc($acc1161576257, $list61576257[11])
473- if (($size61576257 == 12))
474- then $acc1261576257
472+ let $acc1261556255 = foldFunc($acc1161556255, $list61556255[11])
473+ if (($size61556255 == 12))
474+ then $acc1261556255
475475 else {
476- let $acc1361576257 = foldFunc($acc1261576257, $list61576257[12])
477- if (($size61576257 == 13))
478- then $acc1361576257
476+ let $acc1361556255 = foldFunc($acc1261556255, $list61556255[12])
477+ if (($size61556255 == 13))
478+ then $acc1361556255
479479 else {
480- let $acc1461576257 = foldFunc($acc1361576257, $list61576257[13])
481- if (($size61576257 == 14))
482- then $acc1461576257
480+ let $acc1461556255 = foldFunc($acc1361556255, $list61556255[13])
481+ if (($size61556255 == 14))
482+ then $acc1461556255
483483 else {
484- let $acc1561576257 = foldFunc($acc1461576257, $list61576257[14])
485- if (($size61576257 == 15))
486- then $acc1561576257
484+ let $acc1561556255 = foldFunc($acc1461556255, $list61556255[14])
485+ if (($size61556255 == 15))
486+ then $acc1561556255
487487 else {
488- let $acc1661576257 = foldFunc($acc1561576257, $list61576257[15])
489- if (($size61576257 == 16))
490- then $acc1661576257
488+ let $acc1661556255 = foldFunc($acc1561556255, $list61556255[15])
489+ if (($size61556255 == 16))
490+ then $acc1661556255
491491 else {
492- let $acc1761576257 = foldFunc($acc1661576257, $list61576257[16])
493- if (($size61576257 == 17))
494- then $acc1761576257
492+ let $acc1761556255 = foldFunc($acc1661556255, $list61556255[16])
493+ if (($size61556255 == 17))
494+ then $acc1761556255
495495 else {
496- let $acc1861576257 = foldFunc($acc1761576257, $list61576257[17])
497- if (($size61576257 == 18))
498- then $acc1861576257
496+ let $acc1861556255 = foldFunc($acc1761556255, $list61556255[17])
497+ if (($size61556255 == 18))
498+ then $acc1861556255
499499 else {
500- let $acc1961576257 = foldFunc($acc1861576257, $list61576257[18])
501- if (($size61576257 == 19))
502- then $acc1961576257
500+ let $acc1961556255 = foldFunc($acc1861556255, $list61556255[18])
501+ if (($size61556255 == 19))
502+ then $acc1961556255
503503 else {
504- let $acc2061576257 = foldFunc($acc1961576257, $list61576257[19])
505- if (($size61576257 == 20))
506- then $acc2061576257
504+ let $acc2061556255 = foldFunc($acc1961556255, $list61556255[19])
505+ if (($size61556255 == 20))
506+ then $acc2061556255
507507 else {
508- let $acc2161576257 = foldFunc($acc2061576257, $list61576257[20])
508+ let $acc2161556255 = foldFunc($acc2061556255, $list61556255[20])
509509 throw("List size exceed 20")
510510 }
511511 }
596596 then acc
597597 else add(acc, item)
598598
599- let $list1002810055 = arr
600- let $size1002810055 = size($list1002810055)
601- let $acc01002810055 = ""
602- if (($size1002810055 == 0))
603- then $acc01002810055
599+ let $list1002610053 = arr
600+ let $size1002610053 = size($list1002610053)
601+ let $acc01002610053 = ""
602+ if (($size1002610053 == 0))
603+ then $acc01002610053
604604 else {
605- let $acc11002810055 = foldFunc($acc01002810055, $list1002810055[0])
606- if (($size1002810055 == 1))
607- then $acc11002810055
605+ let $acc11002610053 = foldFunc($acc01002610053, $list1002610053[0])
606+ if (($size1002610053 == 1))
607+ then $acc11002610053
608608 else {
609- let $acc21002810055 = foldFunc($acc11002810055, $list1002810055[1])
610- if (($size1002810055 == 2))
611- then $acc21002810055
609+ let $acc21002610053 = foldFunc($acc11002610053, $list1002610053[1])
610+ if (($size1002610053 == 2))
611+ then $acc21002610053
612612 else {
613- let $acc31002810055 = foldFunc($acc21002810055, $list1002810055[2])
614- if (($size1002810055 == 3))
615- then $acc31002810055
613+ let $acc31002610053 = foldFunc($acc21002610053, $list1002610053[2])
614+ if (($size1002610053 == 3))
615+ then $acc31002610053
616616 else {
617- let $acc41002810055 = foldFunc($acc31002810055, $list1002810055[3])
618- if (($size1002810055 == 4))
619- then $acc41002810055
617+ let $acc41002610053 = foldFunc($acc31002610053, $list1002610053[3])
618+ if (($size1002610053 == 4))
619+ then $acc41002610053
620620 else {
621- let $acc51002810055 = foldFunc($acc41002810055, $list1002810055[4])
622- if (($size1002810055 == 5))
623- then $acc51002810055
621+ let $acc51002610053 = foldFunc($acc41002610053, $list1002610053[4])
622+ if (($size1002610053 == 5))
623+ then $acc51002610053
624624 else {
625- let $acc61002810055 = foldFunc($acc51002810055, $list1002810055[5])
626- if (($size1002810055 == 6))
627- then $acc61002810055
625+ let $acc61002610053 = foldFunc($acc51002610053, $list1002610053[5])
626+ if (($size1002610053 == 6))
627+ then $acc61002610053
628628 else {
629- let $acc71002810055 = foldFunc($acc61002810055, $list1002810055[6])
630- if (($size1002810055 == 7))
631- then $acc71002810055
629+ let $acc71002610053 = foldFunc($acc61002610053, $list1002610053[6])
630+ if (($size1002610053 == 7))
631+ then $acc71002610053
632632 else {
633- let $acc81002810055 = foldFunc($acc71002810055, $list1002810055[7])
634- if (($size1002810055 == 8))
635- then $acc81002810055
633+ let $acc81002610053 = foldFunc($acc71002610053, $list1002610053[7])
634+ if (($size1002610053 == 8))
635+ then $acc81002610053
636636 else {
637- let $acc91002810055 = foldFunc($acc81002810055, $list1002810055[8])
638- if (($size1002810055 == 9))
639- then $acc91002810055
637+ let $acc91002610053 = foldFunc($acc81002610053, $list1002610053[8])
638+ if (($size1002610053 == 9))
639+ then $acc91002610053
640640 else {
641- let $acc101002810055 = foldFunc($acc91002810055, $list1002810055[9])
642- if (($size1002810055 == 10))
643- then $acc101002810055
641+ let $acc101002610053 = foldFunc($acc91002610053, $list1002610053[9])
642+ if (($size1002610053 == 10))
643+ then $acc101002610053
644644 else {
645- let $acc111002810055 = foldFunc($acc101002810055, $list1002810055[10])
646- if (($size1002810055 == 11))
647- then $acc111002810055
645+ let $acc111002610053 = foldFunc($acc101002610053, $list1002610053[10])
646+ if (($size1002610053 == 11))
647+ then $acc111002610053
648648 else {
649- let $acc121002810055 = foldFunc($acc111002810055, $list1002810055[11])
650- if (($size1002810055 == 12))
651- then $acc121002810055
649+ let $acc121002610053 = foldFunc($acc111002610053, $list1002610053[11])
650+ if (($size1002610053 == 12))
651+ then $acc121002610053
652652 else {
653- let $acc131002810055 = foldFunc($acc121002810055, $list1002810055[12])
654- if (($size1002810055 == 13))
655- then $acc131002810055
653+ let $acc131002610053 = foldFunc($acc121002610053, $list1002610053[12])
654+ if (($size1002610053 == 13))
655+ then $acc131002610053
656656 else {
657- let $acc141002810055 = foldFunc($acc131002810055, $list1002810055[13])
658- if (($size1002810055 == 14))
659- then $acc141002810055
657+ let $acc141002610053 = foldFunc($acc131002610053, $list1002610053[13])
658+ if (($size1002610053 == 14))
659+ then $acc141002610053
660660 else {
661- let $acc151002810055 = foldFunc($acc141002810055, $list1002810055[14])
662- if (($size1002810055 == 15))
663- then $acc151002810055
661+ let $acc151002610053 = foldFunc($acc141002610053, $list1002610053[14])
662+ if (($size1002610053 == 15))
663+ then $acc151002610053
664664 else {
665- let $acc161002810055 = foldFunc($acc151002810055, $list1002810055[15])
666- if (($size1002810055 == 16))
667- then $acc161002810055
665+ let $acc161002610053 = foldFunc($acc151002610053, $list1002610053[15])
666+ if (($size1002610053 == 16))
667+ then $acc161002610053
668668 else {
669- let $acc171002810055 = foldFunc($acc161002810055, $list1002810055[16])
670- if (($size1002810055 == 17))
671- then $acc171002810055
669+ let $acc171002610053 = foldFunc($acc161002610053, $list1002610053[16])
670+ if (($size1002610053 == 17))
671+ then $acc171002610053
672672 else {
673- let $acc181002810055 = foldFunc($acc171002810055, $list1002810055[17])
674- if (($size1002810055 == 18))
675- then $acc181002810055
673+ let $acc181002610053 = foldFunc($acc171002610053, $list1002610053[17])
674+ if (($size1002610053 == 18))
675+ then $acc181002610053
676676 else {
677- let $acc191002810055 = foldFunc($acc181002810055, $list1002810055[18])
678- if (($size1002810055 == 19))
679- then $acc191002810055
677+ let $acc191002610053 = foldFunc($acc181002610053, $list1002610053[18])
678+ if (($size1002610053 == 19))
679+ then $acc191002610053
680680 else {
681- let $acc201002810055 = foldFunc($acc191002810055, $list1002810055[19])
682- if (($size1002810055 == 20))
683- then $acc201002810055
681+ let $acc201002610053 = foldFunc($acc191002610053, $list1002610053[19])
682+ if (($size1002610053 == 20))
683+ then $acc201002610053
684684 else {
685- let $acc211002810055 = foldFunc($acc201002810055, $list1002810055[20])
685+ let $acc211002610053 = foldFunc($acc201002610053, $list1002610053[20])
686686 throw("List size exceed 20")
687687 }
688688 }
834834 else if (alreadyParticipates)
835835 then throw((("lender " + lender) + " already participates in the dApp"))
836836 else {
837- let errorMessage = (("exactly" + toString(lendSize)) + " BTC must be attached")
837+ let errorMessage = (("exactly" + toString(value(getInteger(this, lendSizeKey)))) + " BTC must be attached")
838838 let pmt = valueOrErrorMessage(i.payment, errorMessage)
839839 if (if ((pmt.assetId != assetToken))
840840 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let depositToken = unit
55
66 let oracleDataKey = "waves_btc_8"
77
88 let ten8 = ((100 * 1000) * 1000)
99
1010 let lendersKey = "lenders"
1111
1212 let enabledLendersKey = "enabledLenders"
1313
1414 let gracePeriodKey = "gracePeriod"
1515
1616 let interestPeriodKey = "interestPeriod"
1717
1818 let burndownPeriodKey = "burndownPeriod"
1919
2020 let oracleKey = "oracle"
2121
2222 let discountPercentileKey = "discountPercentile"
2323
2424 let maxRateKey = "maxRate"
2525
2626 let assetTokenKey = "assetToken"
2727
2828 let adminKey = "owner"
2929
3030 let serviceFeePercentileKey = "service_fee"
3131
3232 let lendSizeKey = "lend_size"
3333
3434 let enableDepositBtcKey = "enable_deposit_btc"
3535
3636 let enableNewLoansKey = "enable_new_loans"
3737
3838 func startOfKey (renter) = ("start_of_" + renter)
3939
4040
4141 func endOfGraceOfKey (renter) = ("end_of_grace_of_" + renter)
4242
4343
4444 func endOfInterestOfKey (renter) = ("end_of_interest_of_" + renter)
4545
4646
4747 func endOfBurndownOfKey (renter) = ("end_of_burndown_of_" + renter)
4848
4949
5050 func rateOfKey (renter) = ("rate_of_" + renter)
5151
5252
5353 func depositOfKey (renter) = ("deposit_of_" + renter)
5454
5555
5656 func lendOfKey (renter) = ("lend_of_" + renter)
5757
5858
5959 func lendersOfKey (renter) = ("lenders_of_" + renter)
6060
6161
6262 func circulatingAssetsKey (lender) = ("curculating_assets_of_" + lender)
6363
6464
6565 func openLendsOfKey (lender) = ("open_lends_of_" + lender)
6666
6767
6868 let lendSize = (valueOrErrorMessage(getInteger(this, lendSizeKey), "no lendSize") * ten8)
6969
7070 let newDepositBtcEnabled = match getBoolean(this, enableDepositBtcKey) {
7171 case b: Boolean =>
7272 b
7373 case _ =>
7474 true
7575 }
7676
7777 let newLoansEnabled = match getBoolean(this, enableNewLoansKey) {
7878 case b: Boolean =>
7979 b
8080 case _ =>
8181 true
8282 }
8383
8484 let allLendersStr = match getString(this, lendersKey) {
8585 case x: String =>
8686 x
8787 case _ =>
8888 ""
8989 }
9090
9191 let enabledLendersStr = match getString(this, enabledLendersKey) {
9292 case x: String =>
9393 x
9494 case _ =>
9595 ""
9696 }
9797
9898 let ownerStr = valueOrErrorMessage(getString(this, adminKey), "No owner")
9999
100100 let owner = valueOrErrorMessage(addressFromString(ownerStr), "No owner")
101101
102102 let assetToken = fromBase58String(valueOrErrorMessage(getString(this, assetTokenKey), "No assetId"))
103103
104104 let gracePeriod = valueOrErrorMessage(getInteger(this, gracePeriodKey), "No grace period")
105105
106106 let interestPeriod = valueOrErrorMessage(getInteger(this, interestPeriodKey), "No interest period")
107107
108108 let burndownPeriod = valueOrErrorMessage(getInteger(this, burndownPeriodKey), "No burndown period")
109109
110110 let maxRate = valueOrErrorMessage(getInteger(this, maxRateKey), "No oracle max value")
111111
112112 let oracle = valueOrErrorMessage(getString(this, oracleKey), "No oracle")
113113
114114 let oracleValue = valueOrErrorMessage(getInteger(valueOrErrorMessage(addressFromString(oracle), "bad oracle address"), oracleDataKey), "No oracle value")
115115
116116 let discountPercentile = valueOrErrorMessage(getInteger(this, discountPercentileKey), "No discount percentile")
117117
118118 let serviceFeePercentile = valueOrErrorMessage(getInteger(this, serviceFeePercentileKey), "No service fee percentile")
119119
120120 let rate = if ((maxRate >= oracleValue))
121121 then oracleValue
122122 else throw(((("Suspicious rate value: actual: " + toString(oracleValue)) + ", max: ") + toString(maxRate)))
123123
124124 let minimalLendAmount = (((100 * ten8) / (discountPercentile * rate)) + (if ((((100 * ten8) % (discountPercentile * rate)) > 0))
125125 then 1
126126 else 0))
127127
128128 let initialized = isDefined(getString(this, assetTokenKey))
129129
130130 func isLendOpen (renter) = match getInteger(this, startOfKey(renter)) {
131131 case s: Int =>
132132 (s > 0)
133133 case _ =>
134134 false
135135 }
136136
137137
138138 func profitForKey (s) = ("profit_for_" + s)
139139
140140
141141 func profitFor (r) = match getInteger(this, profitForKey(r)) {
142142 case i: Int =>
143143 i
144144 case _ =>
145145 0
146146 }
147147
148148
149149 func unclaimedDepositForKey (s) = ("unclaimied_for_" + s)
150150
151151
152152 func unclaimedDepositFor (r) = match getInteger(this, unclaimedDepositForKey(r)) {
153153 case i: Int =>
154154 i
155155 case _ =>
156156 0
157157 }
158158
159159
160160 func decrementOpenLendsAmount (lender) = {
161161 let cur = valueOrErrorMessage(getInteger(this, openLendsOfKey(lender)), "must have open lends at the moment")
162162 DataEntry(openLendsOfKey(lender), (cur - 1))
163163 }
164164
165165
166166 func incrementOpenLends () = {
167167 func foldFunc (acc,s) = {
168168 let cur = match getInteger(this, openLendsOfKey(s)) {
169169 case x: Int =>
170170 x
171171 case _ =>
172172 0
173173 }
174174 DataEntry(openLendsOfKey(s), (cur + 1)) :: acc
175175 }
176176
177177 let $list47564808 = split(enabledLendersStr, "|")
178178 let $size47564808 = size($list47564808)
179179 let $acc047564808 = nil
180180 if (($size47564808 == 0))
181181 then $acc047564808
182182 else {
183183 let $acc147564808 = foldFunc($acc047564808, $list47564808[0])
184184 if (($size47564808 == 1))
185185 then $acc147564808
186186 else {
187187 let $acc247564808 = foldFunc($acc147564808, $list47564808[1])
188188 if (($size47564808 == 2))
189189 then $acc247564808
190190 else {
191191 let $acc347564808 = foldFunc($acc247564808, $list47564808[2])
192192 if (($size47564808 == 3))
193193 then $acc347564808
194194 else {
195195 let $acc447564808 = foldFunc($acc347564808, $list47564808[3])
196196 if (($size47564808 == 4))
197197 then $acc447564808
198198 else {
199199 let $acc547564808 = foldFunc($acc447564808, $list47564808[4])
200200 if (($size47564808 == 5))
201201 then $acc547564808
202202 else {
203203 let $acc647564808 = foldFunc($acc547564808, $list47564808[5])
204204 if (($size47564808 == 6))
205205 then $acc647564808
206206 else {
207207 let $acc747564808 = foldFunc($acc647564808, $list47564808[6])
208208 if (($size47564808 == 7))
209209 then $acc747564808
210210 else {
211211 let $acc847564808 = foldFunc($acc747564808, $list47564808[7])
212212 if (($size47564808 == 8))
213213 then $acc847564808
214214 else {
215215 let $acc947564808 = foldFunc($acc847564808, $list47564808[8])
216216 if (($size47564808 == 9))
217217 then $acc947564808
218218 else {
219219 let $acc1047564808 = foldFunc($acc947564808, $list47564808[9])
220220 if (($size47564808 == 10))
221221 then $acc1047564808
222222 else {
223223 let $acc1147564808 = foldFunc($acc1047564808, $list47564808[10])
224224 if (($size47564808 == 11))
225225 then $acc1147564808
226226 else {
227227 let $acc1247564808 = foldFunc($acc1147564808, $list47564808[11])
228228 if (($size47564808 == 12))
229229 then $acc1247564808
230230 else {
231231 let $acc1347564808 = foldFunc($acc1247564808, $list47564808[12])
232232 if (($size47564808 == 13))
233233 then $acc1347564808
234234 else {
235235 let $acc1447564808 = foldFunc($acc1347564808, $list47564808[13])
236236 if (($size47564808 == 14))
237237 then $acc1447564808
238238 else {
239239 let $acc1547564808 = foldFunc($acc1447564808, $list47564808[14])
240240 if (($size47564808 == 15))
241241 then $acc1547564808
242242 else {
243243 let $acc1647564808 = foldFunc($acc1547564808, $list47564808[15])
244244 if (($size47564808 == 16))
245245 then $acc1647564808
246246 else {
247247 let $acc1747564808 = foldFunc($acc1647564808, $list47564808[16])
248248 if (($size47564808 == 17))
249249 then $acc1747564808
250250 else {
251251 let $acc1847564808 = foldFunc($acc1747564808, $list47564808[17])
252252 if (($size47564808 == 18))
253253 then $acc1847564808
254254 else {
255255 let $acc1947564808 = foldFunc($acc1847564808, $list47564808[18])
256256 if (($size47564808 == 19))
257257 then $acc1947564808
258258 else {
259259 let $acc2047564808 = foldFunc($acc1947564808, $list47564808[19])
260260 if (($size47564808 == 20))
261261 then $acc2047564808
262262 else {
263263 let $acc2147564808 = foldFunc($acc2047564808, $list47564808[20])
264264 throw("List size exceed 20")
265265 }
266266 }
267267 }
268268 }
269269 }
270270 }
271271 }
272272 }
273273 }
274274 }
275275 }
276276 }
277277 }
278278 }
279279 }
280280 }
281281 }
282282 }
283283 }
284284 }
285285 }
286286 }
287287
288288
289289 func profitDistribution (btc,lenders) = {
290- let servicePart = fraction(btc, serviceFeePercentile, 10000)
290+ let servicePart = fraction(btc, serviceFeePercentile, 100)
291291 let distribute = (btc - servicePart)
292292 let newServiceProfit = (profitFor(ownerStr) + servicePart)
293293 let lendersAmt = size(lenders)
294294 func foldFunc (l,lender) = {
295295 let newProfit = (profitFor(lender) + (distribute / lendersAmt))
296296 [DataEntry(profitForKey(lender), newProfit), decrementOpenLendsAmount(lender)] :: l
297297 }
298298
299- let $list53155397 = lenders
300- let $size53155397 = size($list53155397)
301- let $acc053155397 = [DataEntry(profitForKey(ownerStr), newServiceProfit)]
302- if (($size53155397 == 0))
303- then $acc053155397
299+ let $list53135395 = lenders
300+ let $size53135395 = size($list53135395)
301+ let $acc053135395 = [DataEntry(profitForKey(ownerStr), newServiceProfit)]
302+ if (($size53135395 == 0))
303+ then $acc053135395
304304 else {
305- let $acc153155397 = foldFunc($acc053155397, $list53155397[0])
306- if (($size53155397 == 1))
307- then $acc153155397
305+ let $acc153135395 = foldFunc($acc053135395, $list53135395[0])
306+ if (($size53135395 == 1))
307+ then $acc153135395
308308 else {
309- let $acc253155397 = foldFunc($acc153155397, $list53155397[1])
310- if (($size53155397 == 2))
311- then $acc253155397
309+ let $acc253135395 = foldFunc($acc153135395, $list53135395[1])
310+ if (($size53135395 == 2))
311+ then $acc253135395
312312 else {
313- let $acc353155397 = foldFunc($acc253155397, $list53155397[2])
314- if (($size53155397 == 3))
315- then $acc353155397
313+ let $acc353135395 = foldFunc($acc253135395, $list53135395[2])
314+ if (($size53135395 == 3))
315+ then $acc353135395
316316 else {
317- let $acc453155397 = foldFunc($acc353155397, $list53155397[3])
318- if (($size53155397 == 4))
319- then $acc453155397
317+ let $acc453135395 = foldFunc($acc353135395, $list53135395[3])
318+ if (($size53135395 == 4))
319+ then $acc453135395
320320 else {
321- let $acc553155397 = foldFunc($acc453155397, $list53155397[4])
322- if (($size53155397 == 5))
323- then $acc553155397
321+ let $acc553135395 = foldFunc($acc453135395, $list53135395[4])
322+ if (($size53135395 == 5))
323+ then $acc553135395
324324 else {
325- let $acc653155397 = foldFunc($acc553155397, $list53155397[5])
326- if (($size53155397 == 6))
327- then $acc653155397
325+ let $acc653135395 = foldFunc($acc553135395, $list53135395[5])
326+ if (($size53135395 == 6))
327+ then $acc653135395
328328 else {
329- let $acc753155397 = foldFunc($acc653155397, $list53155397[6])
330- if (($size53155397 == 7))
331- then $acc753155397
329+ let $acc753135395 = foldFunc($acc653135395, $list53135395[6])
330+ if (($size53135395 == 7))
331+ then $acc753135395
332332 else {
333- let $acc853155397 = foldFunc($acc753155397, $list53155397[7])
334- if (($size53155397 == 8))
335- then $acc853155397
333+ let $acc853135395 = foldFunc($acc753135395, $list53135395[7])
334+ if (($size53135395 == 8))
335+ then $acc853135395
336336 else {
337- let $acc953155397 = foldFunc($acc853155397, $list53155397[8])
338- if (($size53155397 == 9))
339- then $acc953155397
337+ let $acc953135395 = foldFunc($acc853135395, $list53135395[8])
338+ if (($size53135395 == 9))
339+ then $acc953135395
340340 else {
341- let $acc1053155397 = foldFunc($acc953155397, $list53155397[9])
342- if (($size53155397 == 10))
343- then $acc1053155397
341+ let $acc1053135395 = foldFunc($acc953135395, $list53135395[9])
342+ if (($size53135395 == 10))
343+ then $acc1053135395
344344 else {
345- let $acc1153155397 = foldFunc($acc1053155397, $list53155397[10])
346- if (($size53155397 == 11))
347- then $acc1153155397
345+ let $acc1153135395 = foldFunc($acc1053135395, $list53135395[10])
346+ if (($size53135395 == 11))
347+ then $acc1153135395
348348 else {
349- let $acc1253155397 = foldFunc($acc1153155397, $list53155397[11])
350- if (($size53155397 == 12))
351- then $acc1253155397
349+ let $acc1253135395 = foldFunc($acc1153135395, $list53135395[11])
350+ if (($size53135395 == 12))
351+ then $acc1253135395
352352 else {
353- let $acc1353155397 = foldFunc($acc1253155397, $list53155397[12])
354- if (($size53155397 == 13))
355- then $acc1353155397
353+ let $acc1353135395 = foldFunc($acc1253135395, $list53135395[12])
354+ if (($size53135395 == 13))
355+ then $acc1353135395
356356 else {
357- let $acc1453155397 = foldFunc($acc1353155397, $list53155397[13])
358- if (($size53155397 == 14))
359- then $acc1453155397
357+ let $acc1453135395 = foldFunc($acc1353135395, $list53135395[13])
358+ if (($size53135395 == 14))
359+ then $acc1453135395
360360 else {
361- let $acc1553155397 = foldFunc($acc1453155397, $list53155397[14])
362- if (($size53155397 == 15))
363- then $acc1553155397
361+ let $acc1553135395 = foldFunc($acc1453135395, $list53135395[14])
362+ if (($size53135395 == 15))
363+ then $acc1553135395
364364 else {
365- let $acc1653155397 = foldFunc($acc1553155397, $list53155397[15])
366- if (($size53155397 == 16))
367- then $acc1653155397
365+ let $acc1653135395 = foldFunc($acc1553135395, $list53135395[15])
366+ if (($size53135395 == 16))
367+ then $acc1653135395
368368 else {
369- let $acc1753155397 = foldFunc($acc1653155397, $list53155397[16])
370- if (($size53155397 == 17))
371- then $acc1753155397
369+ let $acc1753135395 = foldFunc($acc1653135395, $list53135395[16])
370+ if (($size53135395 == 17))
371+ then $acc1753135395
372372 else {
373- let $acc1853155397 = foldFunc($acc1753155397, $list53155397[17])
374- if (($size53155397 == 18))
375- then $acc1853155397
373+ let $acc1853135395 = foldFunc($acc1753135395, $list53135395[17])
374+ if (($size53135395 == 18))
375+ then $acc1853135395
376376 else {
377- let $acc1953155397 = foldFunc($acc1853155397, $list53155397[18])
378- if (($size53155397 == 19))
379- then $acc1953155397
377+ let $acc1953135395 = foldFunc($acc1853135395, $list53135395[18])
378+ if (($size53135395 == 19))
379+ then $acc1953135395
380380 else {
381- let $acc2053155397 = foldFunc($acc1953155397, $list53155397[19])
382- if (($size53155397 == 20))
383- then $acc2053155397
381+ let $acc2053135395 = foldFunc($acc1953135395, $list53135395[19])
382+ if (($size53135395 == 20))
383+ then $acc2053135395
384384 else {
385- let $acc2153155397 = foldFunc($acc2053155397, $list53155397[20])
385+ let $acc2153135395 = foldFunc($acc2053135395, $list53135395[20])
386386 throw("List size exceed 20")
387387 }
388388 }
389389 }
390390 }
391391 }
392392 }
393393 }
394394 }
395395 }
396396 }
397397 }
398398 }
399399 }
400400 }
401401 }
402402 }
403403 }
404404 }
405405 }
406406 }
407407 }
408408 }
409409
410410
411411 func unclaimedDistribution (waves,btc,lenders) = {
412412 let wavesServicePart = fraction(waves, serviceFeePercentile, 10000)
413413 let wavesDistribute = (waves - wavesServicePart)
414414 let newWavesServiceUnclaimed = (unclaimedDepositFor(ownerStr) + wavesServicePart)
415415 let lendersAmt = size(lenders)
416416 func foldFunc (l,lender) = {
417417 let newUnclaimed = (unclaimedDepositFor(lender) + (wavesDistribute / lendersAmt))
418418 let newDepositValue = (getIntegerValue(this, circulatingAssetsKey(lender)) - (btc / lendersAmt))
419419 [DataEntry(unclaimedDepositForKey(lender), newUnclaimed), DataEntry(circulatingAssetsKey(lender), newDepositValue), decrementOpenLendsAmount(lender)] :: l
420420 }
421421
422- let $list61576257 = lenders
423- let $size61576257 = size($list61576257)
424- let $acc061576257 = [DataEntry(unclaimedDepositForKey(ownerStr), newWavesServiceUnclaimed)]
425- if (($size61576257 == 0))
426- then $acc061576257
422+ let $list61556255 = lenders
423+ let $size61556255 = size($list61556255)
424+ let $acc061556255 = [DataEntry(unclaimedDepositForKey(ownerStr), newWavesServiceUnclaimed)]
425+ if (($size61556255 == 0))
426+ then $acc061556255
427427 else {
428- let $acc161576257 = foldFunc($acc061576257, $list61576257[0])
429- if (($size61576257 == 1))
430- then $acc161576257
428+ let $acc161556255 = foldFunc($acc061556255, $list61556255[0])
429+ if (($size61556255 == 1))
430+ then $acc161556255
431431 else {
432- let $acc261576257 = foldFunc($acc161576257, $list61576257[1])
433- if (($size61576257 == 2))
434- then $acc261576257
432+ let $acc261556255 = foldFunc($acc161556255, $list61556255[1])
433+ if (($size61556255 == 2))
434+ then $acc261556255
435435 else {
436- let $acc361576257 = foldFunc($acc261576257, $list61576257[2])
437- if (($size61576257 == 3))
438- then $acc361576257
436+ let $acc361556255 = foldFunc($acc261556255, $list61556255[2])
437+ if (($size61556255 == 3))
438+ then $acc361556255
439439 else {
440- let $acc461576257 = foldFunc($acc361576257, $list61576257[3])
441- if (($size61576257 == 4))
442- then $acc461576257
440+ let $acc461556255 = foldFunc($acc361556255, $list61556255[3])
441+ if (($size61556255 == 4))
442+ then $acc461556255
443443 else {
444- let $acc561576257 = foldFunc($acc461576257, $list61576257[4])
445- if (($size61576257 == 5))
446- then $acc561576257
444+ let $acc561556255 = foldFunc($acc461556255, $list61556255[4])
445+ if (($size61556255 == 5))
446+ then $acc561556255
447447 else {
448- let $acc661576257 = foldFunc($acc561576257, $list61576257[5])
449- if (($size61576257 == 6))
450- then $acc661576257
448+ let $acc661556255 = foldFunc($acc561556255, $list61556255[5])
449+ if (($size61556255 == 6))
450+ then $acc661556255
451451 else {
452- let $acc761576257 = foldFunc($acc661576257, $list61576257[6])
453- if (($size61576257 == 7))
454- then $acc761576257
452+ let $acc761556255 = foldFunc($acc661556255, $list61556255[6])
453+ if (($size61556255 == 7))
454+ then $acc761556255
455455 else {
456- let $acc861576257 = foldFunc($acc761576257, $list61576257[7])
457- if (($size61576257 == 8))
458- then $acc861576257
456+ let $acc861556255 = foldFunc($acc761556255, $list61556255[7])
457+ if (($size61556255 == 8))
458+ then $acc861556255
459459 else {
460- let $acc961576257 = foldFunc($acc861576257, $list61576257[8])
461- if (($size61576257 == 9))
462- then $acc961576257
460+ let $acc961556255 = foldFunc($acc861556255, $list61556255[8])
461+ if (($size61556255 == 9))
462+ then $acc961556255
463463 else {
464- let $acc1061576257 = foldFunc($acc961576257, $list61576257[9])
465- if (($size61576257 == 10))
466- then $acc1061576257
464+ let $acc1061556255 = foldFunc($acc961556255, $list61556255[9])
465+ if (($size61556255 == 10))
466+ then $acc1061556255
467467 else {
468- let $acc1161576257 = foldFunc($acc1061576257, $list61576257[10])
469- if (($size61576257 == 11))
470- then $acc1161576257
468+ let $acc1161556255 = foldFunc($acc1061556255, $list61556255[10])
469+ if (($size61556255 == 11))
470+ then $acc1161556255
471471 else {
472- let $acc1261576257 = foldFunc($acc1161576257, $list61576257[11])
473- if (($size61576257 == 12))
474- then $acc1261576257
472+ let $acc1261556255 = foldFunc($acc1161556255, $list61556255[11])
473+ if (($size61556255 == 12))
474+ then $acc1261556255
475475 else {
476- let $acc1361576257 = foldFunc($acc1261576257, $list61576257[12])
477- if (($size61576257 == 13))
478- then $acc1361576257
476+ let $acc1361556255 = foldFunc($acc1261556255, $list61556255[12])
477+ if (($size61556255 == 13))
478+ then $acc1361556255
479479 else {
480- let $acc1461576257 = foldFunc($acc1361576257, $list61576257[13])
481- if (($size61576257 == 14))
482- then $acc1461576257
480+ let $acc1461556255 = foldFunc($acc1361556255, $list61556255[13])
481+ if (($size61556255 == 14))
482+ then $acc1461556255
483483 else {
484- let $acc1561576257 = foldFunc($acc1461576257, $list61576257[14])
485- if (($size61576257 == 15))
486- then $acc1561576257
484+ let $acc1561556255 = foldFunc($acc1461556255, $list61556255[14])
485+ if (($size61556255 == 15))
486+ then $acc1561556255
487487 else {
488- let $acc1661576257 = foldFunc($acc1561576257, $list61576257[15])
489- if (($size61576257 == 16))
490- then $acc1661576257
488+ let $acc1661556255 = foldFunc($acc1561556255, $list61556255[15])
489+ if (($size61556255 == 16))
490+ then $acc1661556255
491491 else {
492- let $acc1761576257 = foldFunc($acc1661576257, $list61576257[16])
493- if (($size61576257 == 17))
494- then $acc1761576257
492+ let $acc1761556255 = foldFunc($acc1661556255, $list61556255[16])
493+ if (($size61556255 == 17))
494+ then $acc1761556255
495495 else {
496- let $acc1861576257 = foldFunc($acc1761576257, $list61576257[17])
497- if (($size61576257 == 18))
498- then $acc1861576257
496+ let $acc1861556255 = foldFunc($acc1761556255, $list61556255[17])
497+ if (($size61556255 == 18))
498+ then $acc1861556255
499499 else {
500- let $acc1961576257 = foldFunc($acc1861576257, $list61576257[18])
501- if (($size61576257 == 19))
502- then $acc1961576257
500+ let $acc1961556255 = foldFunc($acc1861556255, $list61556255[18])
501+ if (($size61556255 == 19))
502+ then $acc1961556255
503503 else {
504- let $acc2061576257 = foldFunc($acc1961576257, $list61576257[19])
505- if (($size61576257 == 20))
506- then $acc2061576257
504+ let $acc2061556255 = foldFunc($acc1961556255, $list61556255[19])
505+ if (($size61556255 == 20))
506+ then $acc2061556255
507507 else {
508- let $acc2161576257 = foldFunc($acc2061576257, $list61576257[20])
508+ let $acc2161556255 = foldFunc($acc2061556255, $list61556255[20])
509509 throw("List size exceed 20")
510510 }
511511 }
512512 }
513513 }
514514 }
515515 }
516516 }
517517 }
518518 }
519519 }
520520 }
521521 }
522522 }
523523 }
524524 }
525525 }
526526 }
527527 }
528528 }
529529 }
530530 }
531531 }
532532
533533
534534 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)
535535 then profitDistribution(btc, lenders)
536536 else unclaimedDistribution(waves, btc, lenders)])
537537
538538
539539 func closeExpired (address,waves,btc,lenders) = {
540540 let loanSize = valueOrErrorMessage(getInteger(this, depositOfKey(address)), "No loan size for address")
541541 closing(address, waves, btc, false, lenders)
542542 }
543543
544544
545545 func doBB (renter,returnAssetId,returnAmt) = {
546546 let renterStr = toString(renter)
547547 let hasOpenLoan = isLendOpen(renterStr)
548548 let isTokenCorrect = (returnAssetId == assetToken)
549549 let loanAmount = getIntegerValue(this, lendOfKey(renterStr))
550550 let depositedValue = getIntegerValue(this, depositOfKey(renterStr))
551551 if (!(hasOpenLoan))
552552 then throw("No open loan for caller")
553553 else if (!(isTokenCorrect))
554554 then throw(((("User must return WBTC: " + toBase58String(assetToken)) + " but returning: ") + toBase58String(returnAssetId)))
555555 else {
556556 let endOfGrace = getIntegerValue(this, endOfGraceOfKey(renterStr))
557557 let endOfBurndown = getIntegerValue(this, endOfBurndownOfKey(renterStr))
558558 let endOfInterest = getIntegerValue(this, endOfInterestOfKey(renterStr))
559559 let canReturnFullAmount = (endOfGrace >= height)
560560 let returnsTheSameAmount = (endOfGrace >= height)
561561 if ((height >= endOfInterest))
562562 then throw("your loan has expired")
563563 else {
564564 let lendersProfit = if ((height > endOfGrace))
565565 then fraction(loanAmount, (height - endOfGrace), (endOfBurndown - endOfGrace))
566566 else 0
567567 let requiredAmount = if (returnsTheSameAmount)
568568 then loanAmount
569569 else (loanAmount + lendersProfit)
570570 let isReturnAmountCorrect = (returnAmt >= requiredAmount)
571571 let isReturnAmountExact = (returnAmt == requiredAmount)
572572 if (!(isReturnAmountCorrect))
573573 then throw(((("User must return " + toString(loanAmount)) + " satoshis, but returning ") + toString(returnAmt)))
574574 else {
575575 let depositBack = ScriptTransfer(renter, depositedValue, depositToken)
576576 let excessReturnAmount = ScriptTransfer(renter, (returnAmt - requiredAmount), assetToken)
577577 let transfers = if (isReturnAmountExact)
578578 then [depositBack]
579579 else [depositBack, excessReturnAmount]
580580 let lenders = split(valueOrErrorMessage(getString(this, lendersOfKey(renterStr)), "No lenders for an open loan"), "|")
581581 ScriptResult(closing(renterStr, 0, lendersProfit, true, lenders), TransferSet(transfers))
582582 }
583583 }
584584 }
585585 }
586586
587587
588588 func add (lenders,lender) = if ((lenders == ""))
589589 then lender
590590 else ((lenders + "|") + lender)
591591
592592
593593 func remove (lenders,lender) = {
594594 let arr = split(lenders, "|")
595595 func foldFunc (acc,item) = if ((item == lender))
596596 then acc
597597 else add(acc, item)
598598
599- let $list1002810055 = arr
600- let $size1002810055 = size($list1002810055)
601- let $acc01002810055 = ""
602- if (($size1002810055 == 0))
603- then $acc01002810055
599+ let $list1002610053 = arr
600+ let $size1002610053 = size($list1002610053)
601+ let $acc01002610053 = ""
602+ if (($size1002610053 == 0))
603+ then $acc01002610053
604604 else {
605- let $acc11002810055 = foldFunc($acc01002810055, $list1002810055[0])
606- if (($size1002810055 == 1))
607- then $acc11002810055
605+ let $acc11002610053 = foldFunc($acc01002610053, $list1002610053[0])
606+ if (($size1002610053 == 1))
607+ then $acc11002610053
608608 else {
609- let $acc21002810055 = foldFunc($acc11002810055, $list1002810055[1])
610- if (($size1002810055 == 2))
611- then $acc21002810055
609+ let $acc21002610053 = foldFunc($acc11002610053, $list1002610053[1])
610+ if (($size1002610053 == 2))
611+ then $acc21002610053
612612 else {
613- let $acc31002810055 = foldFunc($acc21002810055, $list1002810055[2])
614- if (($size1002810055 == 3))
615- then $acc31002810055
613+ let $acc31002610053 = foldFunc($acc21002610053, $list1002610053[2])
614+ if (($size1002610053 == 3))
615+ then $acc31002610053
616616 else {
617- let $acc41002810055 = foldFunc($acc31002810055, $list1002810055[3])
618- if (($size1002810055 == 4))
619- then $acc41002810055
617+ let $acc41002610053 = foldFunc($acc31002610053, $list1002610053[3])
618+ if (($size1002610053 == 4))
619+ then $acc41002610053
620620 else {
621- let $acc51002810055 = foldFunc($acc41002810055, $list1002810055[4])
622- if (($size1002810055 == 5))
623- then $acc51002810055
621+ let $acc51002610053 = foldFunc($acc41002610053, $list1002610053[4])
622+ if (($size1002610053 == 5))
623+ then $acc51002610053
624624 else {
625- let $acc61002810055 = foldFunc($acc51002810055, $list1002810055[5])
626- if (($size1002810055 == 6))
627- then $acc61002810055
625+ let $acc61002610053 = foldFunc($acc51002610053, $list1002610053[5])
626+ if (($size1002610053 == 6))
627+ then $acc61002610053
628628 else {
629- let $acc71002810055 = foldFunc($acc61002810055, $list1002810055[6])
630- if (($size1002810055 == 7))
631- then $acc71002810055
629+ let $acc71002610053 = foldFunc($acc61002610053, $list1002610053[6])
630+ if (($size1002610053 == 7))
631+ then $acc71002610053
632632 else {
633- let $acc81002810055 = foldFunc($acc71002810055, $list1002810055[7])
634- if (($size1002810055 == 8))
635- then $acc81002810055
633+ let $acc81002610053 = foldFunc($acc71002610053, $list1002610053[7])
634+ if (($size1002610053 == 8))
635+ then $acc81002610053
636636 else {
637- let $acc91002810055 = foldFunc($acc81002810055, $list1002810055[8])
638- if (($size1002810055 == 9))
639- then $acc91002810055
637+ let $acc91002610053 = foldFunc($acc81002610053, $list1002610053[8])
638+ if (($size1002610053 == 9))
639+ then $acc91002610053
640640 else {
641- let $acc101002810055 = foldFunc($acc91002810055, $list1002810055[9])
642- if (($size1002810055 == 10))
643- then $acc101002810055
641+ let $acc101002610053 = foldFunc($acc91002610053, $list1002610053[9])
642+ if (($size1002610053 == 10))
643+ then $acc101002610053
644644 else {
645- let $acc111002810055 = foldFunc($acc101002810055, $list1002810055[10])
646- if (($size1002810055 == 11))
647- then $acc111002810055
645+ let $acc111002610053 = foldFunc($acc101002610053, $list1002610053[10])
646+ if (($size1002610053 == 11))
647+ then $acc111002610053
648648 else {
649- let $acc121002810055 = foldFunc($acc111002810055, $list1002810055[11])
650- if (($size1002810055 == 12))
651- then $acc121002810055
649+ let $acc121002610053 = foldFunc($acc111002610053, $list1002610053[11])
650+ if (($size1002610053 == 12))
651+ then $acc121002610053
652652 else {
653- let $acc131002810055 = foldFunc($acc121002810055, $list1002810055[12])
654- if (($size1002810055 == 13))
655- then $acc131002810055
653+ let $acc131002610053 = foldFunc($acc121002610053, $list1002610053[12])
654+ if (($size1002610053 == 13))
655+ then $acc131002610053
656656 else {
657- let $acc141002810055 = foldFunc($acc131002810055, $list1002810055[13])
658- if (($size1002810055 == 14))
659- then $acc141002810055
657+ let $acc141002610053 = foldFunc($acc131002610053, $list1002610053[13])
658+ if (($size1002610053 == 14))
659+ then $acc141002610053
660660 else {
661- let $acc151002810055 = foldFunc($acc141002810055, $list1002810055[14])
662- if (($size1002810055 == 15))
663- then $acc151002810055
661+ let $acc151002610053 = foldFunc($acc141002610053, $list1002610053[14])
662+ if (($size1002610053 == 15))
663+ then $acc151002610053
664664 else {
665- let $acc161002810055 = foldFunc($acc151002810055, $list1002810055[15])
666- if (($size1002810055 == 16))
667- then $acc161002810055
665+ let $acc161002610053 = foldFunc($acc151002610053, $list1002610053[15])
666+ if (($size1002610053 == 16))
667+ then $acc161002610053
668668 else {
669- let $acc171002810055 = foldFunc($acc161002810055, $list1002810055[16])
670- if (($size1002810055 == 17))
671- then $acc171002810055
669+ let $acc171002610053 = foldFunc($acc161002610053, $list1002610053[16])
670+ if (($size1002610053 == 17))
671+ then $acc171002610053
672672 else {
673- let $acc181002810055 = foldFunc($acc171002810055, $list1002810055[17])
674- if (($size1002810055 == 18))
675- then $acc181002810055
673+ let $acc181002610053 = foldFunc($acc171002610053, $list1002610053[17])
674+ if (($size1002610053 == 18))
675+ then $acc181002610053
676676 else {
677- let $acc191002810055 = foldFunc($acc181002810055, $list1002810055[18])
678- if (($size1002810055 == 19))
679- then $acc191002810055
677+ let $acc191002610053 = foldFunc($acc181002610053, $list1002610053[18])
678+ if (($size1002610053 == 19))
679+ then $acc191002610053
680680 else {
681- let $acc201002810055 = foldFunc($acc191002810055, $list1002810055[19])
682- if (($size1002810055 == 20))
683- then $acc201002810055
681+ let $acc201002610053 = foldFunc($acc191002610053, $list1002610053[19])
682+ if (($size1002610053 == 20))
683+ then $acc201002610053
684684 else {
685- let $acc211002810055 = foldFunc($acc201002810055, $list1002810055[20])
685+ let $acc211002610053 = foldFunc($acc201002610053, $list1002610053[20])
686686 throw("List size exceed 20")
687687 }
688688 }
689689 }
690690 }
691691 }
692692 }
693693 }
694694 }
695695 }
696696 }
697697 }
698698 }
699699 }
700700 }
701701 }
702702 }
703703 }
704704 }
705705 }
706706 }
707707 }
708708 }
709709
710710
711711 func doTakeProfit (lender) = {
712712 let str = toBase58String(lender.bytes)
713713 ScriptResult(WriteSet([DataEntry(profitForKey(str), 0), DataEntry(unclaimedDepositForKey(str), 0)]), TransferSet([ScriptTransfer(lender, profitFor(str), assetToken), ScriptTransfer(lender, unclaimedDepositFor(str), depositToken)]))
714714 }
715715
716716
717717 @Callable(i)
718718 func init (owner,token,oracle,maxRate,discount,grace,interest,burndown,serviceFee,lendSize) = if ((interest > burndown))
719719 then throw("interest must be less or equal to burndown")
720720 else if ((i.caller != this))
721721 then throw("only dapp itself can init")
722722 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)])
723723
724724
725725
726726 @Callable(i)
727727 func updateParams (oracle,maxRate,discount,grace,interest,burndown,serviceFee,lendSize) = if ((interest > burndown))
728728 then throw("interest must be less or equal to burndown")
729729 else if ((i.caller != owner))
730730 then throw("only owner can update params")
731731 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)])
732732
733733
734734
735735 @Callable(i)
736736 func borrow () = {
737737 let renter = toBase58String(i.caller.bytes)
738738 if (!(newLoansEnabled))
739739 then throw("New loans temporarily disabled")
740740 else if (isLendOpen(renter))
741741 then throw((renter + " already has an open loan"))
742742 else match i.payment {
743743 case a: AttachedPayment =>
744744 if ((a.assetId == depositToken))
745745 then {
746746 let currentHeight = height
747747 let endOfGrace = (height + gracePeriod)
748748 let endOfInterest = (endOfGrace + interestPeriod)
749749 let endOfBurndown = (endOfGrace + burndownPeriod)
750750 let depositAmount = a.amount
751751 let assetTokensLent = fraction(depositAmount, (rate * discountPercentile), (ten8 * 100))
752752 if ((assetTokensLent > 0))
753753 then {
754754 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()])
755755 ScriptResult(datas, TransferSet([ScriptTransfer(i.caller, assetTokensLent, assetToken)]))
756756 }
757757 else throw((("payment can't be less than " + toString(minimalLendAmount)) + " wavelets (price of 1 satoshi)"))
758758 }
759759 else throw(("can only lend WBTC for WAVES, but got " + toBase58String(valueOrErrorMessage(a.assetId, "No asset provided"))))
760760 case _ =>
761761 throw("payment in assetTokens must be attached")
762762 }
763763 }
764764
765765
766766
767767 @Callable(i)
768768 func buyBack () = {
769769 let pmt = valueOrErrorMessage(i.payment, "payment must be attached")
770770 doBB(i.caller, valueOrErrorMessage(pmt.assetId, "payment in WBTC must be attached"), pmt.amount)
771771 }
772772
773773
774774
775775 @Callable(i)
776776 func closeExpiredFor (address) = {
777777 let endOfInterest = valueOrErrorMessage(getInteger(this, endOfInterestOfKey(address)), "no end of interest")
778778 let loanExpired = (height > endOfInterest)
779779 if (!(loanExpired))
780780 then throw(((("Owner can only close expired rents. Expiring on height " + toString(endOfInterest)) + ", current height") + toString(height)))
781781 else closeExpired(address, getIntegerValue(this, depositOfKey(address)), getIntegerValue(this, lendOfKey(address)), split(getStringValue(this, lendersOfKey(address)), "|"))
782782 }
783783
784784
785785
786786 @Callable(i)
787787 func discard () = {
788788 let address = toBase58String(i.caller.bytes)
789789 closeExpired(address, getIntegerValue(this, depositOfKey(address)), getIntegerValue(this, lendOfKey(address)), split(getStringValue(this, lendersOfKey(address)), "|"))
790790 }
791791
792792
793793
794794 @Callable(i)
795795 func sendProfit (lender) = doTakeProfit(valueOrErrorMessage(addressFromString(lender), "incorrect address"))
796796
797797
798798
799799 @Callable(i)
800800 func takeProfit () = doTakeProfit(i.caller)
801801
802802
803803
804804 @Callable(i)
805805 func enableLending (b) = {
806806 let lender = toBase58String(i.caller.bytes)
807807 let isLender = isDefined(indexOf(allLendersStr, lender))
808808 let isActiveLender = isDefined(indexOf(enabledLendersStr, lender))
809809 if (!(isLender))
810810 then throw("is not lender")
811811 else {
812812 let r = if (isActiveLender)
813813 then if (b)
814814 then throw("is already active lender")
815815 else remove(enabledLendersStr, lender)
816816 else if (!(b))
817817 then throw("is already disabled lender")
818818 else add(enabledLendersStr, lender)
819819 WriteSet([DataEntry(enabledLendersKey, r)])
820820 }
821821 }
822822
823823
824824
825825 @Callable(i)
826826 func depositBtc () = {
827827 let lender = toBase58String(i.caller.bytes)
828828 let hasCapacity = (20 > size(split(allLendersStr, "|")))
829829 let alreadyParticipates = isDefined(indexOf(allLendersStr, lender))
830830 if (!(newDepositBtcEnabled))
831831 then throw("New deposits temporarily disabled")
832832 else if (!(hasCapacity))
833833 then throw("too much lenders already")
834834 else if (alreadyParticipates)
835835 then throw((("lender " + lender) + " already participates in the dApp"))
836836 else {
837- let errorMessage = (("exactly" + toString(lendSize)) + " BTC must be attached")
837+ let errorMessage = (("exactly" + toString(value(getInteger(this, lendSizeKey)))) + " BTC must be attached")
838838 let pmt = valueOrErrorMessage(i.payment, errorMessage)
839839 if (if ((pmt.assetId != assetToken))
840840 then true
841841 else (pmt.amount != lendSize))
842842 then throw(errorMessage)
843843 else WriteSet([DataEntry(circulatingAssetsKey(lender), lendSize), DataEntry(lendersKey, add(allLendersStr, lender)), DataEntry(enabledLendersKey, add(enabledLendersStr, lender))])
844844 }
845845 }
846846
847847
848848
849849 @Callable(i)
850850 func withdrawBtc () = {
851851 let lender = toBase58String(i.caller.bytes)
852852 let isWithdrawAllowed = match getInteger(this, openLendsOfKey(lender)) {
853853 case a: Int =>
854854 (a == 0)
855855 case _ =>
856856 true
857857 }
858858 if (!(isWithdrawAllowed))
859859 then throw("withdraw not allowed, you have open lends. invoke enableLending(false) and wait for loans to be closed")
860860 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)]))
861861 }
862862
863863
864864
865865 @Callable(i)
866866 func enableDepositBtc (b) = if ((i.caller != owner))
867867 then throw("admin permissions required")
868868 else if ((b == newDepositBtcEnabled))
869869 then throw("the value already set")
870870 else WriteSet([DataEntry(enableDepositBtcKey, b)])
871871
872872
873873
874874 @Callable(i)
875875 func enableNewLoans (b) = if ((i.caller != owner))
876876 then throw("admin permissions required")
877877 else if ((b == newLoansEnabled))
878878 then throw("the value already set")
879879 else WriteSet([DataEntry(enableNewLoansKey, b)])
880880
881881

github/deemru/w8io/169f3d6 
562.27 ms