tx · j97xUAmGW9RbRxMxfnuZFV2eBCY9tWu4BjTcF3x6gbM

3MwHAghvVSNQUvsYHsHSR4tAEYiVarQRrtG:  -0.01000000 Waves

2019.10.14 15:57 [719634] smart account 3MwHAghvVSNQUvsYHsHSR4tAEYiVarQRrtG > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
51.83 ms