tx · BHbPQU8E7EStXkiLtqSo212UtLVAbeGd7LLXMUdDavX1

3PMskBY6x2BJTwWuvLfGMouoHMwLnhVgEgU:  -0.01000000 Waves

2023.12.22 22:54 [3964266] smart account 3PMskBY6x2BJTwWuvLfGMouoHMwLnhVgEgU > SELF 0.00000000 Waves

{ "type": 13, "id": "BHbPQU8E7EStXkiLtqSo212UtLVAbeGd7LLXMUdDavX1", "fee": 1000000, "feeAssetId": null, "timestamp": 1703274831369, "version": 2, "chainId": 87, "sender": "3PMskBY6x2BJTwWuvLfGMouoHMwLnhVgEgU", "senderPublicKey": "2PZ4ctzkwZSpFDwLZksxJjiMSsFA2dS7V7mi4o27LExc", "proofs": [ "4E68god5whigAPp3LeEHETnerMPWzV8U15BTf2F8Hbz61P5Db2342DMfymTRR6AvHCb86zdpwmVPJZMtCLmnYWJk" ], "script": "base64:BgITCAISABIDCgEIEgMKAQgSAwoBCBkACnJ1bGVyX3Rlc3QCLEJneHBDbTR3eGJXOFNLTFBLWm5mNEtVMkQ2WlUyOW92OE1nWnJrYVNBcXBZAAVydWxlcgIsN3pOVUpCVm9QTUJDUnN0UDNSMUF2eGh4ck41MVNRa241Qk1pMmlKOWNpQWQABnJ1bGVyMgIsOWZlNjdld3p4dGFMb3plUFoyVTNTRzcxWlFGeUdMQVhXbW1tSFJFcEZlTUMABnJ1bGVyMwIsQW8ycWlqUVZ2dlpaU2dSektvWXlKOWtCeFlqc1BRMzdDZFVwcGRKdFQ2VjEABnJ1bGVyNAIsM1BTSzdiNmJNZjFnQkR2akhSYkdROXpHYzY4VWlyZXFCajJldWJWaTFxNXIABnJ1bGVyNQIsNjZyQ3Y5ZGZkb3VxUTNTUkc5WHJLblJpRm1NYndrWlFnbWhTMWZ0bkN0cW0ABnJ1bGVyNgIsRmVNWDZoUWFSS3NMc2tpNzd4VkhIREdSa2o5VnVKem1QMk1BQ2JBV0RqREsABnJ1bGVyNwIsN3hERVE3SlpOTDFaTExxY3lTVWIxV1dpakcxWDNHRFdHMzVReHlOcWJ4eGkABnJ1bGVyOAIsR1g1azFDcHVobnY5b1A5Vm5XTVNYQnJKdXNha1U1UDNLenFRVzVlN1BqZ2QABnJ1bGVyOQIsQkJ0NnlZdnFMSjZjR1d1YjRGV3ZQRzM1eTZzS05RQkdzUXljeksyU2l0M2oACmFicmFjYWRicmEBIITDhEyr4nwCCd6iwXNoCSzra2gXEkldulYQmi+2iXMBAA1saW1pdENvbnRyYWN0AiMzUEZCNkxKeVNoc0NLRUExQVUxVTFXTGJEYXpxeWo2Wkw5YgALdHNuQ29udHJhY3QCIzNQS3o1am5KTG9oRjJHalNoUTdiRzVINEJlYmRvQTk4eloyAAp3eENvbnRyYWN0AiMzUDY4ek5pdWZzdTF2aVpwdTFhWTNjZGFoUlJLY3ZWNU45MwARbGVuZFByb3h5Q29udHJhY3QCIzNQR3hNWnRNbk5UOXBKQ3ZYeFhWNEx6S3FYc2p2UTlYcGZSAQN2aXABA2trawMDAwMDAwMDAwkAAAIFA2trawUFcnVsZXIGCQAAAgUDa2trBQZydWxlcjIGCQAAAgUDa2trBQZydWxlcjMGCQAAAgUDa2trBQZydWxlcjQGCQAAAgUDa2trBQZydWxlcjUGCQAAAgUDa2trBQZydWxlcjYGCQAAAgUDa2trBQZydWxlcjcGCQAAAgUDa2trBQZydWxlcjgGCQAAAgUDa2trBQZydWxlcjkGBwEKZ2V0QXNzZXRJZAEDcG10BAckbWF0Y2gwBQNwbXQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBcAUHJG1hdGNoMAUDcG10BQR1bml0AQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQBDWdldEFzc2V0Qnl0ZXMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEJbXlCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAPAHAgUEdGhpcwUBYggJAO8HAQUEdGhpcwlhdmFpbGFibGUBCXN3YXBMaW1pdAIGcGFyYW1zBXQwU3RyCgEHZG9MaW1pdAIFYXNzZXQLb3JkZXJQYXJhbXMEA29yZAkAtQkCBQtvcmRlclBhcmFtcwIBPgQLJHQwMjUxNTI1NjAJAJQKAgkAkQMCBQNvcmQAAAkAkQMCBQNvcmQAAQQHb3JkZXJJZAgFCyR0MDI1MTUyNTYwAl8xBAtvcmRlckFtb3VudAgFCyR0MDI1MTUyNTYwAl8yBANpbnYJAPwHBAkBB0FkZHJlc3MBCQDZBAEFDWxpbWl0Q29udHJhY3QCDGZ1bGZpbGxPcmRlcgkAzAgCBQdvcmRlcklkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBWFzc2V0CQENcGFyc2VJbnRWYWx1ZQEFC29yZGVyQW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYFBWFzc2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAhvcmRlcnNMaQkAtQkCBQZwYXJhbXMCAToEAnQwCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBAZyZXN1bHQKAAIkbAUIb3JkZXJzTGkKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQJ0MAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHZG9MaW1pdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQZyZXN1bHQFBnJlc3VsdAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQhzd2FwTGVuZAQGcGFyYW1zBXQwU3RyBXQxU3RyBmFtb3VudAQDYXJyCQC1CQIFBnBhcmFtcwIBLQQLJHQwMjk4OTMwNDYJAJUKAwkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQkAkQMCBQNhcnIAAgQMcG9vbF9hZGRyZXNzCAULJHQwMjk4OTMwNDYCXzEEBWFzc2V0CAULJHQwMjk4OTMwNDYCXzIEA2RpcggFCyR0MDI5ODkzMDQ2Al8zBAhwcm94eUFkcgkBB0FkZHJlc3MBCQDZBAEFEWxlbmRQcm94eUNvbnRyYWN0BAxmdW5jdGlvbk5hbWUDCQAAAgUDZGlyAgEwAgZtaW50UEwCCHJlZGVlbVBMCQD8BwQFCHByb3h5QWRyBQxmdW5jdGlvbk5hbWUJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIFBmFtb3VudAUDbmlsAQhzd2FwUGVwZQQGcGFyYW1zBXQwU3RyBXQxU3RyBmFtb3VudAQDYXJyCQC1CQIFBnBhcmFtcwIBLQQLJHQwMzQyNjM0NzYJAJQKAgkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQQMcG9vbF9hZGRyZXNzCAULJHQwMzQyNjM0NzYCXzEEC2Z1bmN0aW9uVGFnCAULJHQwMzQyNjM0NzYCXzIEC3N3YXBBZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUMcG9vbF9hZGRyZXNzAwkAAAIFC2Z1bmN0aW9uVGFnAgFkCQD8BwQFC3N3YXBBZGRyZXNzAgdkZXBvc2l0CQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAMJAAACBQtmdW5jdGlvblRhZwIBdwkA/AcEBQtzd2FwQWRkcmVzcwIId2l0aGRyYXcJAMwIAgUFdDFTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIFBmFtb3VudAUDbmlsAwkAAAIFC2Z1bmN0aW9uVGFnAgFzCQD8BwQFC3N3YXBBZGRyZXNzAgRzd2FwCQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAkAAgECIlVua25vd24gZnVuY3Rpb24gdGFnIGZvciBwZXBlIHN3YXABCG1ha2VTd2FwBQJwdAFwA2FtaQNhaW4DYW91AwkAAAIFAnB0AgJwdQkA/AcECQEHQWRkcmVzcwEJANkEAQUBcAIEc3dhcAkAzAgCBQNhb3UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFA2FpbgUDYW1pBQNuaWwDCQAAAgUCcHQCAnN3CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQFwAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUDYWluBQNhbWkFA25pbAMJAAACBQJwdAICd3gJAPwHBAkBB0FkZHJlc3MBARoBVy4qNTWxDbfxeT7ht0bQnnRSTXsx0IOuBgIEc3dhcAkAzAgCAAEJAMwIAgUDYW91CQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQNhaW4FA2FtaQUDbmlsAwkAAAIFAnB0AgJsaQkBCXN3YXBMaW1pdAIFAXAJAQ5nZXRBc3NldFN0cmluZwEFA2FpbgMJAAACBQJwdAICdHMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFC3RzbkNvbnRyYWN0AgRzd2FwCQDMCAIFA2FvdQkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUDYWluBQNhbWkFA25pbAMJAAACBQJwdAICbGUJAQhzd2FwTGVuZAQFAXAJAQ5nZXRBc3NldFN0cmluZwEFA2FpbgUDYW91BQNhbWkDCQAAAgUCcHQCAnBlCQEIc3dhcFBlcGUEBQFwCQEOZ2V0QXNzZXRTdHJpbmcBBQNhaW4FA2FvdQUDYW1pCQACAQIRVW5rbm93biBwb29sIHR5cGUEAWkBBHRlc3QACQCUCgIFA25pbAIAAWkBAWEBAWQECWNhbGxlclBiawkA2AQBCAUBaQ9jYWxsZXJQdWJsaWNLZXkDCQEBIQEJAQN2aXABBQljYWxsZXJQYmsJAAIBAghOby1uby1ubwQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SW4JAQpnZXRBc3NldElkAQgFA3BtdAdhc3NldElkBAhhbW91bnRJbgkBBXZhbHVlAQgFA3BtdAZhbW91bnQEA2FycgkAtQkCBQFkAgF8BAskdDA1MzI0NTQwNAkAmAoGCQCRAwIFA2FycgAACQCRAwIFA2FycgABCQCRAwIFA2FycgACCQCRAwIFA2FycgADCQCRAwIFA2FycgAECQCRAwIFA2FycgAFBAJhMQgFCyR0MDUzMjQ1NDA0Al8xBAJwMQgFCyR0MDUzMjQ1NDA0Al8yBANwMXQIBQskdDA1MzI0NTQwNAJfMwQCcDIIBQskdDA1MzI0NTQwNAJfNAQDcDJ0CAULJHQwNTMyNDU0MDQCXzUEAW0IBQskdDA1MzI0NTQwNAJfNgQFbWluaW0JAQ1wYXJzZUludFZhbHVlAQUBbQQGYTFfYmVmCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMQMJAAACBQZhMV9iZWYFBmExX2JlZgQCczEJAQhtYWtlU3dhcAUFA3AxdAUCcDEFCGFtb3VudEluBQdhc3NldEluBQJhMQMJAAACBQJzMQUCczEEA25iMQkAZQIJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAmExBQZhMV9iZWYDCQAAAgUDbmIxBQNuYjEECmFfYmFzZV9iZWYJAQlteUJhbGFuY2UBBQdhc3NldEluAwkAAAIFCmFfYmFzZV9iZWYFCmFfYmFzZV9iZWYEAnMyCQEIbWFrZVN3YXAFBQNwMnQFAnAyBQNuYjEJAQ1nZXRBc3NldEJ5dGVzAQUCYTEJAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SW4DCQAAAgUCczIFAnMyBAZyZXN1bHQJAGUCCQEJbXlCYWxhbmNlAQUHYXNzZXRJbgUKYV9iYXNlX2JlZgMJAAACBQZyZXN1bHQFBnJlc3VsdAMJAGYCBQZyZXN1bHQFBW1pbmltBAdodWphYnJhCQBlAgUGcmVzdWx0BQhhbW91bnRJbgQEcmV0dQUIYW1vdW50SW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQRyZXR1BQdhc3NldEluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAKcIAQUKYWJyYWNhZGJyYQUHaHVqYWJyYQUHYXNzZXRJbgUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUDbmIxAgcsIG91dDogCQCkAwEFBnJlc3VsdAIHLCBtaW46IAkApAMBBQVtaW5pbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQFiAQFkBAljYWxsZXJQYmsJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEDdmlwAQUJY2FsbGVyUGJrCQACAQIITm8tbm8tbm8EA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldEluCQEKZ2V0QXNzZXRJZAEIBQNwbXQHYXNzZXRJZAQIYW1vdW50SW4JAQV2YWx1ZQEIBQNwbXQGYW1vdW50BANhcnIJALUJAgUBZAIBfAQLJHQwNjYzMzY3NTAJAJsKCQkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQkAkQMCBQNhcnIAAgkAkQMCBQNhcnIAAwkAkQMCBQNhcnIABAkAkQMCBQNhcnIABQkAkQMCBQNhcnIABgkAkQMCBQNhcnIABwkAkQMCBQNhcnIACAQCYTEIBQskdDA2NjMzNjc1MAJfMQQCcDEIBQskdDA2NjMzNjc1MAJfMgQDcDF0CAULJHQwNjYzMzY3NTACXzMEAmEyCAULJHQwNjYzMzY3NTACXzQEAnAyCAULJHQwNjYzMzY3NTACXzUEA3AydAgFCyR0MDY2MzM2NzUwAl82BAJwMwgFCyR0MDY2MzM2NzUwAl83BANwM3QIBQskdDA2NjMzNjc1MAJfOAQBbQgFCyR0MDY2MzM2NzUwAl85BAVtaW5pbQkBDXBhcnNlSW50VmFsdWUBBQFtBAZhMV9iZWYJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAmExAwkAAAIFBmExX2JlZgUGYTFfYmVmBAJzMQkBCG1ha2VTd2FwBQUDcDF0BQJwMQUIYW1vdW50SW4FB2Fzc2V0SW4FAmExAwkAAAIFAnMxBQJzMQQDbmIxCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTEFBmExX2JlZgMJAAACBQNuYjEFA25iMQQGYTJfYmVmCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMgMJAAACBQZhMl9iZWYFBmEyX2JlZgQCczIJAQhtYWtlU3dhcAUFA3AydAUCcDIFA25iMQkBDWdldEFzc2V0Qnl0ZXMBBQJhMQUCYTIDCQAAAgUCczIFAnMyBANuYjIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMgUGYTJfYmVmAwkAAAIFA25iMgUDbmIyBAphX2Jhc2VfYmVmCQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBQphX2Jhc2VfYmVmBQphX2Jhc2VfYmVmBAJzMwkBCG1ha2VTd2FwBQUDcDN0BQJwMwUDbmIyCQENZ2V0QXNzZXRCeXRlcwEFAmEyCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluAwkAAAIFAnMzBQJzMwQGcmVzdWx0CQBlAgkBCW15QmFsYW5jZQEFB2Fzc2V0SW4FCmFfYmFzZV9iZWYDCQAAAgUGcmVzdWx0BQZyZXN1bHQDCQBmAgUGcmVzdWx0BQVtaW5pbQQHaHVqYWJyYQkAZQIFBnJlc3VsdAUIYW1vdW50SW4EBHJldHUFCGFtb3VudEluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEcmV0dQUHYXNzZXRJbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQCnCAEFCmFicmFjYWRicmEFB2h1amFicmEFB2Fzc2V0SW4FA25pbAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICC09vb3BzLCBpbjogCQCkAwEFCGFtb3VudEluAgUsIDE6IAkApAMBBQNuYjECBSwgMjogCQCkAwEFA25iMgIHLCBvdXQ6IAkApAMBBQZyZXN1bHQCBywgbWluOiAJAKQDAQUFbWluaW0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVx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IG1pbjogCQCkAwEFBW1pbmltCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleWwCa5Y=", "height": 3964266, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 8mV91PKzmjpfz6RMv9QS6uTwpSRQ89ZzM13Pbc9rJ4A2 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let ruler_test = "BgxpCm4wxbW8SKLPKZnf4KU2D6ZU29ov8MgZrkaSAqpY"
5+
6+let ruler = "7zNUJBVoPMBCRstP3R1AvxhxrN51SQkn5BMi2iJ9ciAd"
7+
8+let ruler2 = "9fe67ewzxtaLozePZ2U3SG71ZQFyGLAXWmmmHREpFeMC"
9+
10+let ruler3 = "Ao2qijQVvvZZSgRzKoYyJ9kBxYjsPQ37CdUppdJtT6V1"
11+
12+let ruler4 = "3PSK7b6bMf1gBDvjHRbGQ9zGc68UireqBj2eubVi1q5r"
13+
14+let ruler5 = "66rCv9dfdouqQ3SRG9XrKnRiFmMbwkZQgmhS1ftnCtqm"
15+
16+let ruler6 = "FeMX6hQaRKsLski77xVHHDGRkj9VuJzmP2MACbAWDjDK"
17+
18+let ruler7 = "7xDEQ7JZNL1ZLLqcySUb1WWijG1X3GDWG35QxyNqbxxi"
19+
20+let ruler8 = "GX5k1Cpuhnv9oP9VnWMSXBrJusakU5P3KzqQW5e7Pjgd"
21+
22+let ruler9 = "BBt6yYvqLJ6cGWub4FWvPG35y6sKNQBGsQyczK2Sit3j"
23+
24+let abracadbra = base58'9wFjTx4rK6ZxfHa3z65BHhP6A7gkZLioxVrD4p2Frjjn'
25+
26+let limitContract = "3PFB6LJyShsCKEA1AU1U1WLbDazqyj6ZL9b"
27+
28+let tsnContract = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2"
29+
30+let wxContract = "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93"
31+
32+let lendProxyContract = "3PGxMZtMnNT9pJCvXxXV4LzKqXsjvQ9XpfR"
33+
34+func vip (kkk) = if (if (if (if (if (if (if (if (if ((kkk == ruler))
35+ then true
36+ else (kkk == ruler2))
37+ then true
38+ else (kkk == ruler3))
39+ then true
40+ else (kkk == ruler4))
41+ then true
42+ else (kkk == ruler5))
43+ then true
44+ else (kkk == ruler6))
45+ then true
46+ else (kkk == ruler7))
47+ then true
48+ else (kkk == ruler8))
49+ then true
50+ else (kkk == ruler9))
51+ then true
52+ else false
53+
54+
55+func getAssetId (pmt) = match pmt {
56+ case p: ByteVector =>
57+ pmt
58+ case _ =>
59+ unit
60+}
61+
62+
63+func getAssetString (assetId) = match assetId {
64+ case b: ByteVector =>
65+ toBase58String(b)
66+ case _ =>
67+ "WAVES"
68+}
69+
70+
71+func getAccBalance (assetId) = if ((assetId == "WAVES"))
72+ then wavesBalance(this).available
73+ else assetBalance(this, fromBase58String(assetId))
74+
75+
76+func getAssetBytes (assetId) = if ((assetId == "WAVES"))
77+ then unit
78+ else fromBase58String(assetId)
79+
80+
81+func myBalance (assetId) = match assetId {
82+ case b: ByteVector =>
83+ assetBalance(this, b)
84+ case _ =>
85+ wavesBalance(this).available
86+}
87+
88+
89+func swapLimit (params,t0Str) = {
90+ func doLimit (asset,orderParams) = {
91+ let ord = split(orderParams, ">")
92+ let $t025152560 = $Tuple2(ord[0], ord[1])
93+ let orderId = $t025152560._1
94+ let orderAmount = $t025152560._2
95+ let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
96+ if ((inv == inv))
97+ then asset
98+ else throw("Strict value is not equal to itself.")
99+ }
100+
101+ let ordersLi = split(params, ":")
102+ let t0 = getAssetBytes(t0Str)
103+ let result = {
104+ let $l = ordersLi
105+ let $s = size($l)
106+ let $acc0 = t0
107+ func $f0_1 ($a,$i) = if (($i >= $s))
108+ then $a
109+ else doLimit($a, $l[$i])
110+
111+ func $f0_2 ($a,$i) = if (($i >= $s))
112+ then $a
113+ else throw("List size exceeds 10")
114+
115+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
116+ }
117+ if ((result == result))
118+ then 0
119+ else throw("Strict value is not equal to itself.")
120+ }
121+
122+
123+func swapLend (params,t0Str,t1Str,amount) = {
124+ let arr = split(params, "-")
125+ let $t029893046 = $Tuple3(arr[0], arr[1], arr[2])
126+ let pool_address = $t029893046._1
127+ let asset = $t029893046._2
128+ let dir = $t029893046._3
129+ let proxyAdr = Address(fromBase58String(lendProxyContract))
130+ let functionName = if ((dir == "0"))
131+ then "mintPL"
132+ else "redeemPL"
133+ invoke(proxyAdr, functionName, [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
134+ }
135+
136+
137+func swapPepe (params,t0Str,t1Str,amount) = {
138+ let arr = split(params, "-")
139+ let $t034263476 = $Tuple2(arr[0], arr[1])
140+ let pool_address = $t034263476._1
141+ let functionTag = $t034263476._2
142+ let swapAddress = Address(fromBase58String(pool_address))
143+ if ((functionTag == "d"))
144+ then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
145+ else if ((functionTag == "w"))
146+ then invoke(swapAddress, "withdraw", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
147+ else if ((functionTag == "s"))
148+ then invoke(swapAddress, "swap", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
149+ else throw("Unknown function tag for pepe swap")
150+ }
151+
152+
153+func makeSwap (pt,p,ami,ain,aou) = if ((pt == "pu"))
154+ then invoke(Address(fromBase58String(p)), "swap", [aou, 1], [AttachedPayment(ain, ami)])
155+ else if ((pt == "sw"))
156+ then invoke(Address(fromBase58String(p)), "exchange", [1], [AttachedPayment(ain, ami)])
157+ else if ((pt == "wx"))
158+ then invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, aou, toString(this)], [AttachedPayment(ain, ami)])
159+ else if ((pt == "li"))
160+ then swapLimit(p, getAssetString(ain))
161+ else if ((pt == "ts"))
162+ then invoke(Address(fromBase58String(tsnContract)), "swap", [aou, 0], [AttachedPayment(ain, ami)])
163+ else if ((pt == "le"))
164+ then swapLend(p, getAssetString(ain), aou, ami)
165+ else if ((pt == "pe"))
166+ then swapPepe(p, getAssetString(ain), aou, ami)
167+ else throw("Unknown pool type")
168+
169+
170+@Callable(i)
171+func test () = $Tuple2(nil, "")
172+
173+
174+
175+@Callable(i)
176+func a (d) = {
177+ let callerPbk = toBase58String(i.callerPublicKey)
178+ if (!(vip(callerPbk)))
179+ then throw("No-no-no")
180+ else {
181+ let pmt = i.payments[0]
182+ let assetIn = getAssetId(pmt.assetId)
183+ let amountIn = value(pmt.amount)
184+ let arr = split(d, "|")
185+ let $t053245404 = $Tuple6(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5])
186+ let a1 = $t053245404._1
187+ let p1 = $t053245404._2
188+ let p1t = $t053245404._3
189+ let p2 = $t053245404._4
190+ let p2t = $t053245404._5
191+ let m = $t053245404._6
192+ let minim = parseIntValue(m)
193+ let a1_bef = myBalance(getAssetBytes(a1))
194+ if ((a1_bef == a1_bef))
195+ then {
196+ let s1 = makeSwap(p1t, p1, amountIn, assetIn, a1)
197+ if ((s1 == s1))
198+ then {
199+ let nb1 = (myBalance(getAssetBytes(a1)) - a1_bef)
200+ if ((nb1 == nb1))
201+ then {
202+ let a_base_bef = myBalance(assetIn)
203+ if ((a_base_bef == a_base_bef))
204+ then {
205+ let s2 = makeSwap(p2t, p2, nb1, getAssetBytes(a1), getAssetString(assetIn))
206+ if ((s2 == s2))
207+ then {
208+ let result = (myBalance(assetIn) - a_base_bef)
209+ if ((result == result))
210+ then if ((result > minim))
211+ then {
212+ let hujabra = (result - amountIn)
213+ let retu = amountIn
214+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(abracadbra), hujabra, assetIn)]
215+ }
216+ else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb1)) + ", out: ") + toString(result)) + ", min: ") + toString(minim)))
217+ else throw("Strict value is not equal to itself.")
218+ }
219+ else throw("Strict value is not equal to itself.")
220+ }
221+ else throw("Strict value is not equal to itself.")
222+ }
223+ else throw("Strict value is not equal to itself.")
224+ }
225+ else throw("Strict value is not equal to itself.")
226+ }
227+ else throw("Strict value is not equal to itself.")
228+ }
229+ }
230+
231+
232+
233+@Callable(i)
234+func b (d) = {
235+ let callerPbk = toBase58String(i.callerPublicKey)
236+ if (!(vip(callerPbk)))
237+ then throw("No-no-no")
238+ else {
239+ let pmt = i.payments[0]
240+ let assetIn = getAssetId(pmt.assetId)
241+ let amountIn = value(pmt.amount)
242+ let arr = split(d, "|")
243+ let $t066336750 = $Tuple9(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8])
244+ let a1 = $t066336750._1
245+ let p1 = $t066336750._2
246+ let p1t = $t066336750._3
247+ let a2 = $t066336750._4
248+ let p2 = $t066336750._5
249+ let p2t = $t066336750._6
250+ let p3 = $t066336750._7
251+ let p3t = $t066336750._8
252+ let m = $t066336750._9
253+ let minim = parseIntValue(m)
254+ let a1_bef = myBalance(getAssetBytes(a1))
255+ if ((a1_bef == a1_bef))
256+ then {
257+ let s1 = makeSwap(p1t, p1, amountIn, assetIn, a1)
258+ if ((s1 == s1))
259+ then {
260+ let nb1 = (myBalance(getAssetBytes(a1)) - a1_bef)
261+ if ((nb1 == nb1))
262+ then {
263+ let a2_bef = myBalance(getAssetBytes(a2))
264+ if ((a2_bef == a2_bef))
265+ then {
266+ let s2 = makeSwap(p2t, p2, nb1, getAssetBytes(a1), a2)
267+ if ((s2 == s2))
268+ then {
269+ let nb2 = (myBalance(getAssetBytes(a2)) - a2_bef)
270+ if ((nb2 == nb2))
271+ then {
272+ let a_base_bef = myBalance(assetIn)
273+ if ((a_base_bef == a_base_bef))
274+ then {
275+ let s3 = makeSwap(p3t, p3, nb2, getAssetBytes(a2), getAssetString(assetIn))
276+ if ((s3 == s3))
277+ then {
278+ let result = (myBalance(assetIn) - a_base_bef)
279+ if ((result == result))
280+ then if ((result > minim))
281+ then {
282+ let hujabra = (result - amountIn)
283+ let retu = amountIn
284+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(abracadbra), hujabra, assetIn)]
285+ }
286+ else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb1)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(result)) + ", min: ") + toString(minim)))
287+ else throw("Strict value is not equal to itself.")
288+ }
289+ else throw("Strict value is not equal to itself.")
290+ }
291+ else throw("Strict value is not equal to itself.")
292+ }
293+ else throw("Strict value is not equal to itself.")
294+ }
295+ else throw("Strict value is not equal to itself.")
296+ }
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else throw("Strict value is not equal to itself.")
300+ }
301+ else throw("Strict value is not equal to itself.")
302+ }
303+ else throw("Strict value is not equal to itself.")
304+ }
305+ }
306+
307+
308+
309+@Callable(i)
310+func c (d) = {
311+ let callerPbk = toBase58String(i.callerPublicKey)
312+ if (!(vip(callerPbk)))
313+ then throw("No-no-no")
314+ else {
315+ let pmt = i.payments[0]
316+ let assetIn = getAssetId(pmt.assetId)
317+ let amountIn = value(pmt.amount)
318+ let arr = split(d, "|")
319+ let $t082558411 = $Tuple12(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11])
320+ let a1 = $t082558411._1
321+ let p1 = $t082558411._2
322+ let p1t = $t082558411._3
323+ let a2 = $t082558411._4
324+ let p2 = $t082558411._5
325+ let p2t = $t082558411._6
326+ let a3 = $t082558411._7
327+ let p3 = $t082558411._8
328+ let p3t = $t082558411._9
329+ let p4 = $t082558411._10
330+ let p4t = $t082558411._11
331+ let m = $t082558411._12
332+ let minim = parseIntValue(m)
333+ let a1_bef = myBalance(getAssetBytes(a1))
334+ if ((a1_bef == a1_bef))
335+ then {
336+ let s1 = makeSwap(p1t, p1, amountIn, assetIn, a1)
337+ if ((s1 == s1))
338+ then {
339+ let nb1 = (myBalance(getAssetBytes(a1)) - a1_bef)
340+ if ((nb1 == nb1))
341+ then {
342+ let a2_bef = myBalance(getAssetBytes(a2))
343+ if ((a2_bef == a2_bef))
344+ then {
345+ let s2 = makeSwap(p2t, p2, nb1, getAssetBytes(a1), a2)
346+ if ((s2 == s2))
347+ then {
348+ let nb2 = (myBalance(getAssetBytes(a2)) - a2_bef)
349+ if ((nb2 == nb2))
350+ then {
351+ let a3_bef = myBalance(getAssetBytes(a3))
352+ if ((a3_bef == a3_bef))
353+ then {
354+ let s3 = makeSwap(p3t, p3, nb2, getAssetBytes(a2), a3)
355+ if ((s3 == s3))
356+ then {
357+ let nb3 = (myBalance(getAssetBytes(a3)) - a3_bef)
358+ if ((nb3 == nb3))
359+ then {
360+ let a_base_bef = myBalance(assetIn)
361+ if ((a_base_bef == a_base_bef))
362+ then {
363+ let s4 = makeSwap(p4t, p4, nb3, getAssetBytes(a3), getAssetString(assetIn))
364+ if ((s4 == s4))
365+ then {
366+ let result = (myBalance(assetIn) - a_base_bef)
367+ if ((result == result))
368+ then if ((result > minim))
369+ then {
370+ let hujabra = (result - amountIn)
371+ let retu = amountIn
372+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(abracadbra), hujabra, assetIn)]
373+ }
374+ else throw(((((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb1)) + ", 2: ") + toString(nb2)) + ", 3: ") + toString(nb3)) + ", out: ") + toString(result)) + ", min: ") + toString(minim)))
375+ else throw("Strict value is not equal to itself.")
376+ }
377+ else throw("Strict value is not equal to itself.")
378+ }
379+ else throw("Strict value is not equal to itself.")
380+ }
381+ else throw("Strict value is not equal to itself.")
382+ }
383+ else throw("Strict value is not equal to itself.")
384+ }
385+ else throw("Strict value is not equal to itself.")
386+ }
387+ else throw("Strict value is not equal to itself.")
388+ }
389+ else throw("Strict value is not equal to itself.")
390+ }
391+ else throw("Strict value is not equal to itself.")
392+ }
393+ else throw("Strict value is not equal to itself.")
394+ }
395+ else throw("Strict value is not equal to itself.")
396+ }
397+ else throw("Strict value is not equal to itself.")
398+ }
399+ }
400+
401+
402+@Verifier(tx)
403+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
404+

github/deemru/w8io/3ef1775 
40.46 ms