tx · 6gThyN5JKw14ac7Y4zobo2mtybp9ATZ5xGurzm8Csych

3PPumrPhPhQQdttZnTTi5KtJ5RwBuGku9XR:  -0.02300000 Waves

2023.05.09 15:58 [3635838] smart account 3PPumrPhPhQQdttZnTTi5KtJ5RwBuGku9XR > SELF 0.00000000 Waves

{ "type": 13, "id": "6gThyN5JKw14ac7Y4zobo2mtybp9ATZ5xGurzm8Csych", "fee": 2300000, "feeAssetId": null, "timestamp": 1683637133267, "version": 2, "chainId": 87, "sender": "3PPumrPhPhQQdttZnTTi5KtJ5RwBuGku9XR", "senderPublicKey": "BP6zaiRLoFEhtfZ3kJ1RfdmfaJKs3Q9jBaLdPdnRrjzM", "proofs": [ "4VGHvD5TJi4CL65ycFwxZJyE8o58MG59Lz26HinHe1wG1TJjqBvVvt5LsNSfqEDx24JXxuMbZidiG6civR3HHxRS" ], "script": "base64:BgIECAISAG0ABlNjYWxlNgDAhD0ADFNjYWxlNkJpZ0ludAkAtgIBBQZTY2FsZTYABlNjYWxlOACAwtcvAAxTY2FsZThCaWdJbnQJALYCAQUGU2NhbGU4AApaZXJvQmlnSW50CQC2AgEAAAADU0VQAgJfXwAHSW5TY2FsZQCAwtcvAApJbkRlY2ltYWxzAAgADUluU2NhbGVCaWdJbnQJALYCAQUHSW5TY2FsZQAHSW5Bc3NldAUEdW5pdAAKSW5Bc3NldFN0cgIFV0FWRVMADXd4U3dhcEFkZHJlc3MJAQdBZGRyZXNzAQEaAVcuKjU1sQ238Xk+4bdG0J50Uk17MdCDrgYADnRoaXNBZGRyZXNzU3RyCQClCAEFBHRoaXMBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCfCAEFA2tleQAAAAZjYWxsZXIJAQdBZGRyZXNzAQEaAVcr7Uuv7Xi/nRQppO4AFrhDr22DhCvr/cEBCmdldEJhbGFuY2UBBWFzc2V0AwkAAAIFBWFzc2V0BQR1bml0CAkA7wcBBQR0aGlzB3JlZ3VsYXIJAPAHAgUEdGhpcwkBBXZhbHVlAQUFYXNzZXQBD2dldEFzc2V0T3JXYXZlcwEIYXNzZXRTdHIDCQAAAgUIYXNzZXRTdHICBVdBVkVTBQR1bml0CQDZBAEFCGFzc2V0U3RyAAlpbkJhbGFuY2UJAQpnZXRCYWxhbmNlAQUHSW5Bc3NldAAPaW5CYWxhbmNlQmlnSW50CQC2AgEFCWluQmFsYW5jZQELZ2V0U3dvcFBvb2wBBHBvb2wEC2Fzc2V0SWRBU3RyCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sAgpBX2Fzc2V0X2lkBAthc3NldElkQlN0cgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAIKQl9hc3NldF9pZAQIYXNzZXRJZEEJAQ9nZXRBc3NldE9yV2F2ZXMBBQthc3NldElkQVN0cgQIYXNzZXRJZEIJAQ9nZXRBc3NldE9yV2F2ZXMBBQthc3NldElkQlN0cgQIYmFsYW5jZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wCD0FfYXNzZXRfYmFsYW5jZQQIYmFsYW5jZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wCD0JfYXNzZXRfYmFsYW5jZQQGb3V0RmVlCQC4AgIFDFNjYWxlNkJpZ0ludAkAtgIBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sAgpjb21taXNzaW9uCQCbCgkJALYCAQUIYmFsYW5jZUEJALYCAQUIYmFsYW5jZUIFCGFzc2V0SWRBBQhhc3NldElkQgULYXNzZXRJZEFTdHIFC2Fzc2V0SWRCU3RyBQxTY2FsZTZCaWdJbnQFBm91dEZlZQUEcG9vbAEUa2V5QWRkaXRpb25hbEJhbGFuY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICDXN0YWtlZEJhbGFuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFmtleVN0YWtpbmdBc3NldEJhbGFuY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICEXNoYXJlQXNzZXRCYWxhbmNlCQDMCAIFB2Fzc2V0SWQFA25pbAUDU0VQARpnZXRBZGRpdGlvbmFsQmFsYW5jZU9yWmVybwIEcG9vbAdhc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHBvb2wJARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQAAAEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwIEcG9vbAdhc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHBvb2wJARZrZXlTdGFraW5nQXNzZXRCYWxhbmNlAQUHYXNzZXRJZAAAARNnZXRXeEFjY291bnRCYWxhbmNlAgRwb29sB2Fzc2V0SWQEDWJhbGFuY2VPblBvb2wDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHBvb2wJYXZhaWxhYmxlCQDwBwIFBHBvb2wJANkEAQUHYXNzZXRJZAQMdG90YWxCYWxhbmNlCQBlAgkAZAIFDWJhbGFuY2VPblBvb2wJARpnZXRBZGRpdGlvbmFsQmFsYW5jZU9yWmVybwIFBHBvb2wFB2Fzc2V0SWQJARxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvAgUEcG9vbAUHYXNzZXRJZAkAlgMBCQDMCAIAAAkAzAgCBQx0b3RhbEJhbGFuY2UFA25pbAEJZ2V0V3hQb29sAQRwb29sBAthc3NldElkQVN0cgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAIPJXNfX2Ftb3VudEFzc2V0BAthc3NldElkQlN0cgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAIOJXNfX3ByaWNlQXNzZXQECGFzc2V0SWRBCQEPZ2V0QXNzZXRPcldhdmVzAQULYXNzZXRJZEFTdHIECGFzc2V0SWRCCQEPZ2V0QXNzZXRPcldhdmVzAQULYXNzZXRJZEJTdHIECGJhbGFuY2VBCQETZ2V0V3hBY2NvdW50QmFsYW5jZQIFBHBvb2wFC2Fzc2V0SWRBU3RyBAhiYWxhbmNlQgkBE2dldFd4QWNjb3VudEJhbGFuY2UCBQRwb29sBQthc3NldElkQlN0cgQLcHJvdG9jb2xGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDXd4U3dhcEFkZHJlc3MCDyVzX19wcm90b2NvbEZlZQQHcG9vbEZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUNd3hTd2FwQWRkcmVzcwILJXNfX3Bvb2xGZWUEBWluRmVlCQC4AgIFDFNjYWxlNkJpZ0ludAkAvAIDCQC2AgEJAGQCBQtwcm90b2NvbEZlZQUHcG9vbEZlZQUMU2NhbGU2QmlnSW50BQxTY2FsZThCaWdJbnQJAJsKCQkAtgIBBQhiYWxhbmNlQQkAtgIBBQhiYWxhbmNlQgUIYXNzZXRJZEEFCGFzc2V0SWRCBQthc3NldElkQVN0cgULYXNzZXRJZEJTdHIFBWluRmVlBQxTY2FsZTZCaWdJbnQFDXd4U3dhcEFkZHJlc3MBCGNhbGNTd2FwBQlwbXRBbW91bnQJdG9rZW5Gcm9tB3Rva2VuVG8FaW5GZWUGb3V0RmVlBAtjbGVhbkFtb3VudAkAvAIDBQlwbXRBbW91bnQFBWluRmVlBQxTY2FsZTZCaWdJbnQEEGFtb3VudFdpdGhvdXRGZWUJALwCAwUHdG9rZW5UbwULY2xlYW5BbW91bnQJALcCAgULY2xlYW5BbW91bnQFCXRva2VuRnJvbQQNYW1vdW50V2l0aEZlZQkAvAIDBRBhbW91bnRXaXRob3V0RmVlBQZvdXRGZWUFDFNjYWxlNkJpZ0ludAUNYW1vdW50V2l0aEZlZQEMZXN0aW1hdGVTd2FwAwhwb29sSW5mbwdpbkFzc2V0CGluQW1vdW50BAlyb3V0ZUFyZ3MDCQAAAgUHaW5Bc3NldAgFCHBvb2xJbmZvAl8zCQCVCgMIBQhwb29sSW5mbwJfNAgFCHBvb2xJbmZvAl82CQEIY2FsY1N3YXAFBQhpbkFtb3VudAgFCHBvb2xJbmZvAl8xCAUIcG9vbEluZm8CXzIIBQhwb29sSW5mbwJfNwgFCHBvb2xJbmZvAl84CQCVCgMIBQhwb29sSW5mbwJfMwgFCHBvb2xJbmZvAl81CQEIY2FsY1N3YXAFBQhpbkFtb3VudAgFCHBvb2xJbmZvAl8yCAUIcG9vbEluZm8CXzEIBQhwb29sSW5mbwJfNwgFCHBvb2xJbmZvAl84BAhkYXBwQXJncwMJAAACCAUIcG9vbEluZm8CXzkFDXd4U3dhcEFkZHJlc3MJAJQKAgIEc3dhcAkAzAgCAAAJAMwIAggFCXJvdXRlQXJncwJfMgkAzAgCBQ50aGlzQWRkcmVzc1N0cgUDbmlsCQCUCgICCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQCWCgQIBQlyb3V0ZUFyZ3MCXzEIBQlyb3V0ZUFyZ3MCXzMIBQhkYXBwQXJncwJfMQgFCGRhcHBBcmdzAl8yAQ1lc3RpbWF0ZVJvdXRlBgVwb29sMQVwb29sMgVwb29sMwxwb29sMVJldmVyc2UMcG9vbDJSZXZlcnNlDHBvb2wzUmV2ZXJzZQQDYTEyAwUMcG9vbDFSZXZlcnNlCAUFcG9vbDECXzIIBQVwb29sMQJfMQQDYTIxAwUMcG9vbDFSZXZlcnNlCAUFcG9vbDECXzEIBQVwb29sMQJfMgQDYTIzAwUMcG9vbDJSZXZlcnNlCAUFcG9vbDICXzIIBQVwb29sMgJfMQQDYTMyAwUMcG9vbDJSZXZlcnNlCAUFcG9vbDICXzEIBQVwb29sMgJfMgQDYTMxAwUMcG9vbDNSZXZlcnNlCAUFcG9vbDMCXzIIBQVwb29sMwJfMQQDYTEzAwUMcG9vbDNSZXZlcnNlCAUFcG9vbDMCXzEIBQVwb29sMwJfMgQNYWFEZW5vbWluYXRvcgkAtwICBQNhMjMJALwCAwkAvAIDBQNhMjEIBQVwb29sMQJfOAUMU2NhbGU2QmlnSW50CAUFcG9vbDICXzcFDFNjYWxlNkJpZ0ludAQEYWExMwkAvAIDBQNhMTIFA2EyMwUNYWFEZW5vbWluYXRvcgQEYWEzMQkAvAIDCQC8AgMJALwCAwUDYTIxBQNhMzIFDWFhRGVub21pbmF0b3IIBQVwb29sMgJfNwUMU2NhbGU2QmlnSW50CAUFcG9vbDICXzgFDFNjYWxlNkJpZ0ludAQMYURlbm9taW5hdG9yCQC3AgIFA2EzMQkAvAIDCQC8AgMFBGFhMzEIBQVwb29sMQJfNwUMU2NhbGU2QmlnSW50CAUFcG9vbDECXzgFDFNjYWxlNkJpZ0ludAQBYQkAvAIDBQRhYTEzBQNhMzEFDGFEZW5vbWluYXRvcgQCYWEJALwCAwkAvAIDCQC8AgMFBGFhMzEFA2ExMwUMYURlbm9taW5hdG9yCAUFcG9vbDMCXzcFDFNjYWxlNkJpZ0ludAgFBXBvb2wzAl84BQxTY2FsZTZCaWdJbnQEBWRlbHRhCQC8AgMJALgCAgkBCnNxcnRCaWdJbnQECQC8AgMJALwCAwkAvAIDBQJhYQUBYQUNSW5TY2FsZUJpZ0ludAgFBXBvb2wxAl83BQxTY2FsZTZCaWdJbnQIBQVwb29sMQJfOAUMU2NhbGU2QmlnSW50BQpJbkRlY2ltYWxzBQpJbkRlY2ltYWxzBQdDRUlMSU5HBQFhBQxTY2FsZTZCaWdJbnQIBQVwb29sMQJfNwMJAMACAgUKWmVyb0JpZ0ludAUFZGVsdGEJAJQKAgAABQNuaWwEBWlucHV0AwkAvwICBQVkZWx0YQUPaW5CYWxhbmNlQmlnSW50BQ9pbkJhbGFuY2VCaWdJbnQFBWRlbHRhBAVzd2FwMQkBDGVzdGltYXRlU3dhcAMFBXBvb2wxBQdJbkFzc2V0BQVpbnB1dAQFc3dhcDIJAQxlc3RpbWF0ZVN3YXADBQVwb29sMggFBXN3YXAxAl8xCAUFc3dhcDECXzIEBXN3YXAzCQEMZXN0aW1hdGVTd2FwAwUFcG9vbDMIBQVzd2FwMgJfMQgFBXN3YXAyAl8yCQCUCgIJAKADAQkAuAICCAUFc3dhcDMCXzIFBWlucHV0CQDMCAIJAJcKBQgFBXBvb2wxAl85CAUFc3dhcDECXzMIBQVzd2FwMQJfNAUHSW5Bc3NldAkAoAMBBQVpbnB1dAkAzAgCCQCXCgUIBQVwb29sMgJfOQgFBXN3YXAyAl8zCAUFc3dhcDICXzQIBQVzd2FwMQJfMQkAoAMBCAUFc3dhcDECXzIJAMwIAgkAlwoFCAUFcG9vbDMCXzkIBQVzd2FwMwJfMwgFBXN3YXAzAl80CAUFc3dhcDICXzEJAKADAQgFBXN3YXAyAl8yBQNuaWwBCmludm9rZVN3YXABBGFyZ3MEDmN1cnJlbnRCYWxhbmNlCQEKZ2V0QmFsYW5jZQEIBQRhcmdzAl80BA10cmltbWVkQW1vdW50AwkAZgIIBQRhcmdzAl81BQ5jdXJyZW50QmFsYW5jZQUOY3VycmVudEJhbGFuY2UIBQRhcmdzAl81BAxyZXN1bHRBbW91bnQDCQAAAggFBGFyZ3MCXzQFB0luQXNzZXQFDXRyaW1tZWRBbW91bnQDCQBmAgUOY3VycmVudEJhbGFuY2UIBQRhcmdzAl81BQ5jdXJyZW50QmFsYW5jZQUNdHJpbW1lZEFtb3VudAkA/AcECAUEYXJncwJfMQgFBGFyZ3MCXzIIBQRhcmdzAl8zCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUEYXJncwJfNAUMcmVzdWx0QW1vdW50BQNuaWwAD3N3b3BfYnRjd3hnX3h0bgkBC2dldFN3b3BQb29sAQkBB0FkZHJlc3MBARoBV1q/jutGsbgSrv1cydfRxv0pdV0mqNpqlwAPc3dvcF9jcnZ3eGdfeHRuCQELZ2V0U3dvcFBvb2wBCQEHQWRkcmVzcwEBGgFXVkP67whY8BK2EtkvlQbYpfXk7DTjL7AnAA5zd29wX2VnZ193YXZlcwkBC2dldFN3b3BQb29sAQkBB0FkZHJlc3MBARoBV+GBLWcuSRbM+6LwfcYIG3yBuMlCPo80VwAPc3dvcF9ldGh3eGdfeHRuCQELZ2V0U3dvcFBvb2wBCQEHQWRkcmVzcwEBGgFX3qgOPDlBiiQdA3Yon/bHfjRjLR3QNfrIABFzd29wX2V0aHBwdF93YXZlcwkBC2dldFN3b3BQb29sAQkBB0FkZHJlc3MBARoBVw89JtEBWSXBQoPVQ9hLEO59n5fOUb7ElQANc3dvcF9lbm5vX3h0bgkBC2dldFN3b3BQb29sAQkBB0FkZHJlc3MBARoBV0ks9zMVoQXg5neJPfkEX0ILZi1pZ9YFmQAPc3dvcF9sdGN3eGdfeHRuCQELZ2V0U3dvcFBvb2wB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CQEJZ2V0V3hQb29sAQkBB0FkZHJlc3MBARoBVx00zdFtuaSR3I9ZXuY7itcVIOJOyckRkgANd3hfd2VzdF93YXZlcwkBCWdldFd4UG9vbAEJAQdBZGRyZXNzAQEaAVdwMbJ+YMxkCRfem5055CY3zSVs4eyRb/MAC3d4X3dlc3RfeHRuCQEJZ2V0V3hQb29sAQkBB0FkZHJlc3MBARoBV5nlNkxUxRjuwcYjBUJw5NLhSOqUnG/T5AANd3hfd3hfdXNkdHd4ZwkBCWdldFd4UG9vbAEJAQdBZGRyZXNzAQEaAVetKxxC7oo4/BRH5l8s6tEcli/qomP8nW4AC3d4X3d4X3dhdmVzCQEJZ2V0V3hQb29sAQkBB0FkZHJlc3MBARoBV5pEBZiZvLSokOa3VW+3GCjLiIbTBX0fVgAJd3hfd3hfeHRuCQEJZ2V0V3hQb29sAQkBB0FkZHJlc3MBARoBV3D/xi5mRA30O/nQjGXN6dEzY5zPcg/hnAAGcm91dGVzCQDMCAIJAJgKBgUMd3hfd2F2ZXNfeHRuBQl3eF93eF94dG4FC3d4X3d4X3dhdmVzBwYHCQDMCAIJAJgKBgULd3hfd3hfd2F2ZXMFCXd4X3d4X3h0bgUMd3hfd2F2ZXNfeHRuBgcGCQDMCAIJAJgKBgUMd3hfd2F2ZXNfeHRuBQ13eF9idGN3eGdfeHRuBQ93eF93YXZlc19idGN3eGcHBgYJAMwIAgkAmAoGBQ93eF93YXZlc19idGN3eGcFDXd4X2J0Y3d4Z194dG4FDHd4X3dhdmVzX3h0bgcHBgkAzAgCCQCYCgYFDHd4X3dhdmVzX3h0bgUNd3hfZXRod3hnX3h0bgUPd3hfZXRod3hnX3dhdmVzBwYHCQDMCAIJAJgKBgUPd3hfZXRod3hnX3dhdmVzBQ13eF9ldGh3eGdfeHRuBQx3eF93YXZlc194dG4GBwYJAMwIAgkAmAoGBQx3eF93YXZlc194dG4FDHN3b3BfcHdyX3h0bgUMd3hfcHdyX3dhdmVzBwYHCQDMCAIJAJgKBgUMd3hfcHdyX3dhdmVzBQxzd29wX3B3cl94dG4FDHd4X3dhdmVzX3h0bgYHBgkAzAgCCQCYCgYFDXd4X3N1cmZfd2F2ZXMFD3d4X3N1cmZfdXNkdHd4ZwUQd3hfd2F2ZXNfdXNkdHd4ZwYHBgkAzAgCCQCYCgYFEHd4X3dhdmVzX3VzZHR3eGcFD3d4X3N1cmZfdXNkdHd4ZwUNd3hfc3VyZl93YXZlcwcGBwkAzAgCCQCYCgYFDXd4X3N1cmZfd2F2ZXMFD3d4X3N1cmZfdXNkY3d4ZwUQd3hfd2F2ZXNfdXNkY3d4ZwYHBgkAzAgCCQCYCgYFEHd4X3dhdmVzX3VzZGN3eGcFD3d4X3N1cmZfdXNkY3d4ZwUNd3hfc3VyZl93YXZlcwcGBwkAzAgCCQCYCgYFC3d4X3d4X3dhdmVzBQ13eF93eF91c2R0d3hnBRB3eF93YXZlc191c2R0d3hnBgcGCQDMCAIJAJgKBgUQd3hfd2F2ZXNfdXNkdHd4ZwUNd3hfd3hfdXNkdHd4ZwULd3hfd3hfd2F2ZXMHBgcJAMwIAgkAmAoGBQx3eF93YXZlc194dG4FC3d4X25zYnRfeHRuBQ13eF9uc2J0X3dhdmVzBwYHCQDMCAIJAJgKBgUNd3hfbnNidF93YXZlcwULd3hfbnNidF94dG4FDHd4X3dhdmVzX3h0bgYHBgkAzAgCCQCYCgYFDHd4X3dhdmVzX3h0bgUNd3hfc3dhdmVzX3h0bgUPd3hfc3dhdmVzX3dhdmVzBwYHCQDMCAIJAJgKBgUPd3hfc3dhdmVzX3dhdmVzBQ13eF9zd2F2ZXNfeHRuBQx3eF93YXZlc194dG4GBwYJAMwIAgkAmAoGBQx3eF93YXZlc194dG4FDHd4X3ZpcmVzX3h0bgUOd3hfdmlyZXNfd2F2ZXMHBgcJAMwIAgkAmAoGBQ53eF92aXJlc193YXZlcwUMd3hfdmlyZXNfeHRuBQx3eF93YXZlc194dG4GBwYJAMwIAgkAmAoGBQx3eF93YXZlc194dG4FDnd4X3VzZHRwcHRfeHRuBRB3eF93YXZlc191c2R0cHB0BwYGCQDMCAIJAJgKBgUQd3hfd2F2ZXNfdXNkdHBwdAUOd3hfdXNkdHBwdF94dG4FDHd4X3dhdmVzX3h0bgcHBgkAzAgCCQCYCgYFEHd4X3dhdmVzX3VzZHRwcHQFEXd4X2V0aHBwdF91c2R0cHB0BQ93eF9ldGhwcHRfd2F2ZXMHBgcJAMwIAgkAmAoGBQ93eF9ldGhwcHRfd2F2ZXMFEXd4X2V0aHBwdF91c2R0cHB0BRB3eF93YXZlc191c2R0cHB0BgcGBQNuaWwBAWkBCGRlZmF1bHRzAAMJAQIhPQIIBQFpBmNhbGxlcgUGY2FsbGVyCQACAQILTm8gdG91Y2hpbmcKAQ1hY2N1bUZ1bmN0aW9uAgVhY2N1bQRuZXh0BAplc3RpbWF0aW9uCQENZXN0aW1hdGVSb3V0ZQYIBQRuZXh0Al8xCAUEbmV4dAJfMggFBG5leHQCXzMIBQRuZXh0Al80CAUEbmV4dAJfNQgFBG5leHQCXzYJAJQKAgkAzQgCCAUFYWNjdW0CXzEIBQplc3RpbWF0aW9uAl8xCQDNCAIIBQVhY2N1bQJfMggFCmVzdGltYXRpb24CXzIEBGZvbGQKAAIkbAUGcm91dGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENYWNjdW1GdW5jdGlvbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjQJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgEDW1heFN3YXBQcm9maXQJAJYDAQgFBGZvbGQCXzEDCQBnAgAABQ1tYXhTd2FwUHJvZml0CQACAQINRXN0aW1hdGUgZmFpbAQPZXN0aW1hdGVkUmVzdWx0CQCRAwIIBQRmb2xkAl8yCQEFdmFsdWUBCQDPCAIIBQRmb2xkAl8xBQ1tYXhTd2FwUHJvZml0BAdyZXN1bHQxCQEKaW52b2tlU3dhcAEJAJEDAgUPZXN0aW1hdGVkUmVzdWx0AAADCQAAAgUHcmVzdWx0MQUHcmVzdWx0MQQHcmVzdWx0MgkBCmludm9rZVN3YXABCQCRAwIFD2VzdGltYXRlZFJlc3VsdAABAwkAAAIFB3Jlc3VsdDIFB3Jlc3VsdDIEB3Jlc3VsdDMJAQppbnZva2VTd2FwAQkAkQMCBQ9lc3RpbWF0ZWRSZXN1bHQAAgMJAAACBQdyZXN1bHQzBQdyZXN1bHQzBAZwcm9maXQJAGUCCQEKZ2V0QmFsYW5jZQEFB0luQXNzZXQFCWluQmFsYW5jZQQKcHVyZVByb2ZpdAkAZQIFBnByb2ZpdADgxlsDCQBnAgAABQpwdXJlUHJvZml0CQACAQIMRXhlY3V0ZSBmYWlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AYzeo+w==", "height": 3635838, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HnzTfBGpjsLa4j5sSyHJA5zFe6pgmRjuD56fUjj8zxu4 Next: none Diff:
OldNewDifferences
325325 let routes = [$Tuple6(wx_waves_xtn, wx_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_btcwxg_xtn, wx_waves_btcwxg, false, true, true), $Tuple6(wx_waves_btcwxg, wx_btcwxg_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_xtn, wx_ethwxg_xtn, wx_ethwxg_waves, false, true, false), $Tuple6(wx_ethwxg_waves, wx_ethwxg_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_pwr_xtn, wx_pwr_waves, false, true, false), $Tuple6(wx_pwr_waves, swop_pwr_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_surf_waves, wx_surf_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_surf_usdtwxg, wx_surf_waves, false, true, false), $Tuple6(wx_surf_waves, wx_surf_usdcwxg, wx_waves_usdcwxg, true, false, true), $Tuple6(wx_waves_usdcwxg, wx_surf_usdcwxg, wx_surf_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_wx_usdtwxg, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_nsbt_xtn, wx_nsbt_waves, false, true, false), $Tuple6(wx_nsbt_waves, wx_nsbt_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_swaves_xtn, wx_swaves_waves, false, true, false), $Tuple6(wx_swaves_waves, wx_swaves_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_vires_xtn, wx_vires_waves, false, true, false), $Tuple6(wx_vires_waves, wx_vires_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_usdtppt_xtn, wx_waves_usdtppt, false, true, true), $Tuple6(wx_waves_usdtppt, wx_usdtppt_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_usdtppt, wx_ethppt_usdtppt, wx_ethppt_waves, false, true, false), $Tuple6(wx_ethppt_waves, wx_ethppt_usdtppt, wx_waves_usdtppt, true, false, true)]
326326
327327 @Callable(i)
328-func default () = if ((i.caller != caller))
328+func defaults () = if ((i.caller != caller))
329329 then throw("No touching")
330330 else {
331331 func accumFunction (accum,next) = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let Scale6 = 1000000
55
66 let Scale6BigInt = toBigInt(Scale6)
77
88 let Scale8 = 100000000
99
1010 let Scale8BigInt = toBigInt(Scale8)
1111
1212 let ZeroBigInt = toBigInt(0)
1313
1414 let SEP = "__"
1515
1616 let InScale = 100000000
1717
1818 let InDecimals = 8
1919
2020 let InScaleBigInt = toBigInt(InScale)
2121
2222 let InAsset = unit
2323
2424 let InAssetStr = "WAVES"
2525
2626 let wxSwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
2727
2828 let thisAddressStr = toString(this)
2929
3030 func getIntOrZero (key) = valueOrElse(getInteger(key), 0)
3131
3232
3333 let caller = Address(base58'3P5wA45whe3XB4ECK6UYofNM3uFHFxE4KTn')
3434
3535 func getBalance (asset) = if ((asset == unit))
3636 then wavesBalance(this).regular
3737 else assetBalance(this, value(asset))
3838
3939
4040 func getAssetOrWaves (assetStr) = if ((assetStr == "WAVES"))
4141 then unit
4242 else fromBase58String(assetStr)
4343
4444
4545 let inBalance = getBalance(InAsset)
4646
4747 let inBalanceBigInt = toBigInt(inBalance)
4848
4949 func getSwopPool (pool) = {
5050 let assetIdAStr = getStringValue(pool, "A_asset_id")
5151 let assetIdBStr = getStringValue(pool, "B_asset_id")
5252 let assetIdA = getAssetOrWaves(assetIdAStr)
5353 let assetIdB = getAssetOrWaves(assetIdBStr)
5454 let balanceA = getIntegerValue(pool, "A_asset_balance")
5555 let balanceB = getIntegerValue(pool, "B_asset_balance")
5656 let outFee = (Scale6BigInt - toBigInt(getIntegerValue(pool, "commission")))
5757 $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, Scale6BigInt, outFee, pool)
5858 }
5959
6060
6161 func keyAdditionalBalance (assetId) = makeString(["%s%s", "stakedBalance", assetId], SEP)
6262
6363
6464 func keyStakingAssetBalance (assetId) = makeString(["%s%s", "shareAssetBalance", assetId], SEP)
6565
6666
6767 func getAdditionalBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyAdditionalBalance(assetId)), 0)
6868
6969
7070 func getStakingAssetBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyStakingAssetBalance(assetId)), 0)
7171
7272
7373 func getWxAccountBalance (pool,assetId) = {
7474 let balanceOnPool = if ((assetId == "WAVES"))
7575 then wavesBalance(pool).available
7676 else assetBalance(pool, fromBase58String(assetId))
7777 let totalBalance = ((balanceOnPool + getAdditionalBalanceOrZero(pool, assetId)) - getStakingAssetBalanceOrZero(pool, assetId))
7878 max([0, totalBalance])
7979 }
8080
8181
8282 func getWxPool (pool) = {
8383 let assetIdAStr = getStringValue(pool, "%s__amountAsset")
8484 let assetIdBStr = getStringValue(pool, "%s__priceAsset")
8585 let assetIdA = getAssetOrWaves(assetIdAStr)
8686 let assetIdB = getAssetOrWaves(assetIdBStr)
8787 let balanceA = getWxAccountBalance(pool, assetIdAStr)
8888 let balanceB = getWxAccountBalance(pool, assetIdBStr)
8989 let protocolFee = getIntegerValue(wxSwapAddress, "%s__protocolFee")
9090 let poolFee = getIntegerValue(wxSwapAddress, "%s__poolFee")
9191 let inFee = (Scale6BigInt - fraction(toBigInt((protocolFee + poolFee)), Scale6BigInt, Scale8BigInt))
9292 $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, inFee, Scale6BigInt, wxSwapAddress)
9393 }
9494
9595
9696 func calcSwap (pmtAmount,tokenFrom,tokenTo,inFee,outFee) = {
9797 let cleanAmount = fraction(pmtAmount, inFee, Scale6BigInt)
9898 let amountWithoutFee = fraction(tokenTo, cleanAmount, (cleanAmount + tokenFrom))
9999 let amountWithFee = fraction(amountWithoutFee, outFee, Scale6BigInt)
100100 amountWithFee
101101 }
102102
103103
104104 func estimateSwap (poolInfo,inAsset,inAmount) = {
105105 let routeArgs = if ((inAsset == poolInfo._3))
106106 then $Tuple3(poolInfo._4, poolInfo._6, calcSwap(inAmount, poolInfo._1, poolInfo._2, poolInfo._7, poolInfo._8))
107107 else $Tuple3(poolInfo._3, poolInfo._5, calcSwap(inAmount, poolInfo._2, poolInfo._1, poolInfo._7, poolInfo._8))
108108 let dappArgs = if ((poolInfo._9 == wxSwapAddress))
109109 then $Tuple2("swap", [0, routeArgs._2, thisAddressStr])
110110 else $Tuple2("exchange", [1])
111111 $Tuple4(routeArgs._1, routeArgs._3, dappArgs._1, dappArgs._2)
112112 }
113113
114114
115115 func estimateRoute (pool1,pool2,pool3,pool1Reverse,pool2Reverse,pool3Reverse) = {
116116 let a12 = if (pool1Reverse)
117117 then pool1._2
118118 else pool1._1
119119 let a21 = if (pool1Reverse)
120120 then pool1._1
121121 else pool1._2
122122 let a23 = if (pool2Reverse)
123123 then pool2._2
124124 else pool2._1
125125 let a32 = if (pool2Reverse)
126126 then pool2._1
127127 else pool2._2
128128 let a31 = if (pool3Reverse)
129129 then pool3._2
130130 else pool3._1
131131 let a13 = if (pool3Reverse)
132132 then pool3._1
133133 else pool3._2
134134 let aaDenominator = (a23 + fraction(fraction(a21, pool1._8, Scale6BigInt), pool2._7, Scale6BigInt))
135135 let aa13 = fraction(a12, a23, aaDenominator)
136136 let aa31 = fraction(fraction(fraction(a21, a32, aaDenominator), pool2._7, Scale6BigInt), pool2._8, Scale6BigInt)
137137 let aDenominator = (a31 + fraction(fraction(aa31, pool1._7, Scale6BigInt), pool1._8, Scale6BigInt))
138138 let a = fraction(aa13, a31, aDenominator)
139139 let aa = fraction(fraction(fraction(aa31, a13, aDenominator), pool3._7, Scale6BigInt), pool3._8, Scale6BigInt)
140140 let delta = fraction((sqrtBigInt(fraction(fraction(fraction(aa, a, InScaleBigInt), pool1._7, Scale6BigInt), pool1._8, Scale6BigInt), InDecimals, InDecimals, CEILING) - a), Scale6BigInt, pool1._7)
141141 if ((ZeroBigInt >= delta))
142142 then $Tuple2(0, nil)
143143 else {
144144 let input = if ((delta > inBalanceBigInt))
145145 then inBalanceBigInt
146146 else delta
147147 let swap1 = estimateSwap(pool1, InAsset, input)
148148 let swap2 = estimateSwap(pool2, swap1._1, swap1._2)
149149 let swap3 = estimateSwap(pool3, swap2._1, swap2._2)
150150 $Tuple2(toInt((swap3._2 - input)), [$Tuple5(pool1._9, swap1._3, swap1._4, InAsset, toInt(input)), $Tuple5(pool2._9, swap2._3, swap2._4, swap1._1, toInt(swap1._2)), $Tuple5(pool3._9, swap3._3, swap3._4, swap2._1, toInt(swap2._2))])
151151 }
152152 }
153153
154154
155155 func invokeSwap (args) = {
156156 let currentBalance = getBalance(args._4)
157157 let trimmedAmount = if ((args._5 > currentBalance))
158158 then currentBalance
159159 else args._5
160160 let resultAmount = if ((args._4 == InAsset))
161161 then trimmedAmount
162162 else if ((currentBalance > args._5))
163163 then currentBalance
164164 else trimmedAmount
165165 invoke(args._1, args._2, args._3, [AttachedPayment(args._4, resultAmount)])
166166 }
167167
168168
169169 let swop_btcwxg_xtn = getSwopPool(Address(base58'3PACj2DLTw3uUhsUmT98zHU5M4hPufbHKav'))
170170
171171 let swop_crvwxg_xtn = getSwopPool(Address(base58'3P9o2H6G5d2xXBTfBEwjzHc16RLSZLFLQjp'))
172172
173173 let swop_egg_waves = getSwopPool(Address(base58'3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ'))
174174
175175 let swop_ethwxg_xtn = getSwopPool(Address(base58'3PNEC4YKqZiMMytFrYRVtpW2ujvi3aGXRPm'))
176176
177177 let swop_ethppt_waves = getSwopPool(Address(base58'3P3KU81iteCQxKb8u15yEPcABknLEcCvGyr'))
178178
179179 let swop_enno_xtn = getSwopPool(Address(base58'3P8bovWtkLFVToB8LxP8AZLoWVwC8rDZLQQ'))
180180
181181 let swop_ltcwxg_xtn = getSwopPool(Address(base58'3P32Rjpo9YHoHaorLSxvnV6CkKFXyfDCkJh'))
182182
183183 let swop_nsbt_xtn = getSwopPool(Address(base58'3P2V63Xd6BviDkeMzxhUw2SJyojByRz8a8m'))
184184
185185 let swop_pluto_xtn = getSwopPool(Address(base58'3PDSXwwA2xAtmxeo2bebDP3AA5ynZ2Krgnw'))
186186
187187 let swop_pwr_xtn = getSwopPool(Address(base58'3P88KDKWHNKNdbZxe8FfAJP8coAhvfDtuzV'))
188188
189189 let swop_puzzle_xtn = getSwopPool(Address(base58'3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee'))
190190
191191 let swop_puzzle_waves = getSwopPool(Address(base58'3PRFKemXs4rAJYGPccNtP63Kw2UzwEdH7sZ'))
192192
193193 let swop_race_egg = getSwopPool(Address(base58'3P3Z8Gn665CJr14bTLv4d5USDBUQCTeeCaT'))
194194
195195 let swop_sign_xtn = getSwopPool(Address(base58'3P4Ftyud3U3xnuR8sTc1RvV4iQD62TcKndy'))
196196
197197 let swop_surf_xtn = getSwopPool(Address(base58'3PLp9KrdrbWAvSFHGJVEaszUubquz3M6mfe'))
198198
199199 let swop_swop_xtn = getSwopPool(Address(base58'3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W'))
200200
201201 let swop_swop_waves = getSwopPool(Address(base58'3PH8Np6jwuoikvkHL2qmdpFEHBR4UV5vwSq'))
202202
203203 let swop_tsn_xtn = getSwopPool(Address(base58'3PCwvns2dnmobD6Z4cR86v98s7LgMZYygEy'))
204204
205205 let swop_vires_xtn = getSwopPool(Address(base58'3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd'))
206206
207207 let swop_vvusdnlp_xtn = getSwopPool(Address(base58'3PCkJuWHu1QJLHvcdUegYczfNVohS6c1A6o'))
208208
209209 let swop_usdcwxg_usdtwxg = getSwopPool(Address(base58'3PJgkN4gy6b8qpA86otcJ2KDTbL8ay2n91s'))
210210
211211 let swop_waves_btcwxg = getSwopPool(Address(base58'3P8FVZgAJUAq32UEZtTw84qS4zLqEREiEiP'))
212212
213213 let swop_waves_xtn = getSwopPool(Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG'))
214214
215215 let swop_west_east = getSwopPool(Address(base58'3PHTDdjz8Kb5JcAkhzfR57MCUYoe73pyxxK'))
216216
217217 let swop_waves_eurn = getSwopPool(Address(base58'3PK7Xe5BiedRyxHLuMQx5ey9riUQqvUths2'))
218218
219219 let swop_waves_usdcppt = getSwopPool(Address(base58'3PESG2RvmPdDrMCbCVvzJvqxDR9d2HcAE2z'))
220220
221221 let swop_waves_usdtppt = getSwopPool(Address(base58'3P2M9btqYdpENh1SkaHFDdc8XSjXHNiAXF5'))
222222
223223 let swop_wct_xtn = getSwopPool(Address(base58'3PMDFxmG9uXAbuQgiNogZCBQASvCHt1Mdar'))
224224
225225 let swop_west_xtn = getSwopPool(Address(base58'3P6DLdJTP2EySq9MFdJu6beUevrQd2sVVBh'))
226226
227227 let swop_wx_xtn = getSwopPool(Address(base58'3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R'))
228228
229229 let swop_xtn_usdtwxg = getSwopPool(Address(base58'3PAunb4Dadc9rQM2VJNQBgQV3vrgF9z8Evq'))
230230
231231 let wx_bnbppt_waves = getWxPool(Address(base58'3PErdCQg2f8WYGG7DzSiH5FBosdnPHE6cND'))
232232
233233 let wx_bnbwxg_xtn = getWxPool(Address(base58'3P8NCvcipinDQVQZujpczBdvG7FL5EvTqLM'))
234234
235235 let wx_btcwxg_xtn = getWxPool(Address(base58'3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp'))
236236
237237 let wx_crv_xtn = getWxPool(Address(base58'3PHBmNjbaT8Re837JUfPGXeaW8NKfBQPr1u'))
238238
239239 let wx_east_xtn = getWxPool(Address(base58'3PHxdxsgxNwEjVRt45sjeUfNZZ8uHzYVpvH'))
240240
241241 let wx_egg_waves = getWxPool(Address(base58'3PJkUhnAHMaBTjyc7FkBfHantNUy871kBBW'))
242242
243243 let wx_egg_xtn = getWxPool(Address(base58'3P3Y38zymCHoTM6qcE9JcEA8rhaGTQbVMgu'))
244244
245245 let wx_enno_xtn = getWxPool(Address(base58'3P2H4iQAfxQCJaFCNgRLmKkLvv2yDhV93QC'))
246246
247247 let wx_ethppt_waves = getWxPool(Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg'))
248248
249249 let wx_ethppt_usdtppt = getWxPool(Address(base58'3PATKQATPmnxLd5DjXg8FmbXXbKpA1BVAvS'))
250250
251251 let wx_ethwxg_waves = getWxPool(Address(base58'3P3XGTN6s292g9iwYhs3TEqJqHiffQYojuE'))
252252
253253 let wx_ethwxg_xtn = getWxPool(Address(base58'3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A'))
254254
255255 let wx_eurn_xtn = getWxPool(Address(base58'3P879DU3ycr2XWorD7rR5gSpn1CpYgHjgFT'))
256256
257257 let wx_ltcwxg_xtn = getWxPool(Address(base58'3P94wvu5gA7VhjPgAB3twaeqdwHCwNK2vsn'))
258258
259259 let wx_nsbt_waves = getWxPool(Address(base58'3PPR4zVfWP4w4rshP541aiFtPNQN2sNJwrY'))
260260
261261 let wx_nsbt_xtn = getWxPool(Address(base58'3P97XQCT9VYMXBxasVpDsE7eZfQ6cR9eS9n'))
262262
263263 let wx_pluto_waves = getWxPool(Address(base58'3P6ZipK8ydb4qHmufCquh98g9KW6EwaeJfk'))
264264
265265 let wx_pluto_xtn = getWxPool(Address(base58'3PEkD5LuHGWhUfgBW1owZFxVydYoWjV6Jia'))
266266
267267 let wx_puzzle_waves = getWxPool(Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz'))
268268
269269 let wx_puzzle_xtn = getWxPool(Address(base58'3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug'))
270270
271271 let wx_pwr_waves = getWxPool(Address(base58'3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t'))
272272
273273 let wx_race_xtn = getWxPool(Address(base58'3P2nHbqMt7hiYKQjYLT3AEDteS4SYGeHTuc'))
274274
275275 let wx_sign_xtn = getWxPool(Address(base58'3P6UuvAt9RFuVznvjAQ7c2RrU25iU917WTN'))
276276
277277 let wx_surf_waves = getWxPool(Address(base58'3PNnCngfvAzyvAQ1cEudZ3o6o3tFktsBVz5'))
278278
279279 let wx_surf_usdcwxg = getWxPool(Address(base58'3PBfTdcoKmMNxZcjP8eTokbLFqYTUdoNKWL'))
280280
281281 let wx_surf_usdtwxg = getWxPool(Address(base58'3PM6YyJauiFTZzVLuRcCkDwWBvWTvPYo1ZM'))
282282
283283 let wx_swaves_waves = getWxPool(Address(base58'3PDVaJDqCadWeBugf768XeKiXtCCLUrYMge'))
284284
285285 let wx_swaves_xtn = getWxPool(Address(base58'3PEmxUzcCbsAcw6Q3VNLTWdd8bjc8KBUEDz'))
286286
287287 let wx_swop_waves = getWxPool(Address(base58'3PA8nK44sopUpXNcCRTpPSH2F7yjvxzx5cw'))
288288
289289 let wx_swop_xtn = getWxPool(Address(base58'3PCApn7kL3UMdCVYA2Ln2UcQvfnkFRL1qDC'))
290290
291291 let wx_usdtppt_xtn = getWxPool(Address(base58'3P5kfoYW7jPa9zYoTkN6Z6z8xtw8JGhymYB'))
292292
293293 let wx_tsn_xtn = getWxPool(Address(base58'3PH832eKnw67PFvJfUg9Knz6BHM87QvjMeL'))
294294
295295 let wx_vires_waves = getWxPool(Address(base58'3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU'))
296296
297297 let wx_vires_xtn = getWxPool(Address(base58'3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw'))
298298
299299 let wx_vvusdnlp_xtn = getWxPool(Address(base58'3P9UJxhsqj1UkqPDtM16yi9aGE26V5tdH6i'))
300300
301301 let wx_waves_btcwxg = getWxPool(Address(base58'3PPQDcvXuwVToC2QNWzPwxmLxLzMw9Eoe8C'))
302302
303303 let wx_waves_busdwxg = getWxPool(Address(base58'3P9vSwu2eLLmyAi8BdEoZvTwsxSWjsAh8Jm'))
304304
305305 let wx_waves_xtn = getWxPool(Address(base58'3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g'))
306306
307307 let wx_waves_usdtppt = getWxPool(Address(base58'3PPeWowdyQLKwW9AExN5CgFa7X9ts7D4LkM'))
308308
309309 let wx_waves_usdcwxg = getWxPool(Address(base58'3P3g3eipfG2NZKKQE8DZXt2E9tRJqii9jcX'))
310310
311311 let wx_waves_usdtwxg = getWxPool(Address(base58'3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa'))
312312
313313 let wx_wct_xtn = getWxPool(Address(base58'3P4bKahCwC2kPg8QcT8Pw5Br58hVgpziGsB'))
314314
315315 let wx_west_waves = getWxPool(Address(base58'3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe'))
316316
317317 let wx_west_xtn = getWxPool(Address(base58'3PFxchXqKNjgP1CcbgFZjHyrEj9xMbSeLU3'))
318318
319319 let wx_wx_usdtwxg = getWxPool(Address(base58'3PHiXGo7NTRoC2KqkMZ1y9LaA2QSrroGs8y'))
320320
321321 let wx_wx_waves = getWxPool(Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh'))
322322
323323 let wx_wx_xtn = getWxPool(Address(base58'3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99'))
324324
325325 let routes = [$Tuple6(wx_waves_xtn, wx_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_btcwxg_xtn, wx_waves_btcwxg, false, true, true), $Tuple6(wx_waves_btcwxg, wx_btcwxg_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_xtn, wx_ethwxg_xtn, wx_ethwxg_waves, false, true, false), $Tuple6(wx_ethwxg_waves, wx_ethwxg_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_pwr_xtn, wx_pwr_waves, false, true, false), $Tuple6(wx_pwr_waves, swop_pwr_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_surf_waves, wx_surf_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_surf_usdtwxg, wx_surf_waves, false, true, false), $Tuple6(wx_surf_waves, wx_surf_usdcwxg, wx_waves_usdcwxg, true, false, true), $Tuple6(wx_waves_usdcwxg, wx_surf_usdcwxg, wx_surf_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_wx_usdtwxg, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_nsbt_xtn, wx_nsbt_waves, false, true, false), $Tuple6(wx_nsbt_waves, wx_nsbt_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_swaves_xtn, wx_swaves_waves, false, true, false), $Tuple6(wx_swaves_waves, wx_swaves_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_vires_xtn, wx_vires_waves, false, true, false), $Tuple6(wx_vires_waves, wx_vires_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_usdtppt_xtn, wx_waves_usdtppt, false, true, true), $Tuple6(wx_waves_usdtppt, wx_usdtppt_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_usdtppt, wx_ethppt_usdtppt, wx_ethppt_waves, false, true, false), $Tuple6(wx_ethppt_waves, wx_ethppt_usdtppt, wx_waves_usdtppt, true, false, true)]
326326
327327 @Callable(i)
328-func default () = if ((i.caller != caller))
328+func defaults () = if ((i.caller != caller))
329329 then throw("No touching")
330330 else {
331331 func accumFunction (accum,next) = {
332332 let estimation = estimateRoute(next._1, next._2, next._3, next._4, next._5, next._6)
333333 $Tuple2((accum._1 :+ estimation._1), (accum._2 :+ estimation._2))
334334 }
335335
336336 let fold = {
337337 let $l = routes
338338 let $s = size($l)
339339 let $acc0 = $Tuple2(nil, nil)
340340 func $f0_1 ($a,$i) = if (($i >= $s))
341341 then $a
342342 else accumFunction($a, $l[$i])
343343
344344 func $f0_2 ($a,$i) = if (($i >= $s))
345345 then $a
346346 else throw("List size exceeds 24")
347347
348348 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24)
349349 }
350350 let maxSwapProfit = max(fold._1)
351351 if ((0 >= maxSwapProfit))
352352 then throw("Estimate fail")
353353 else {
354354 let estimatedResult = fold._2[value(indexOf(fold._1, maxSwapProfit))]
355355 let result1 = invokeSwap(estimatedResult[0])
356356 if ((result1 == result1))
357357 then {
358358 let result2 = invokeSwap(estimatedResult[1])
359359 if ((result2 == result2))
360360 then {
361361 let result3 = invokeSwap(estimatedResult[2])
362362 if ((result3 == result3))
363363 then {
364364 let profit = (getBalance(InAsset) - inBalance)
365365 let pureProfit = (profit - 1500000)
366366 if ((0 >= pureProfit))
367367 then throw("Execute fail")
368368 else nil
369369 }
370370 else throw("Strict value is not equal to itself.")
371371 }
372372 else throw("Strict value is not equal to itself.")
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
376376 }
377377
378378

github/deemru/w8io/3ef1775 
38.60 ms