tx · 2KXASVrMqv4T7NUuGZBKeW1CFXJp365BfscnUBpAzXUB

3NCCxt72qfGYBPUNx6zM49UDV9r4LvrtzeY:  -0.01800000 Waves

2024.12.10 20:30 [3408804] smart account 3NCCxt72qfGYBPUNx6zM49UDV9r4LvrtzeY > SELF 0.00000000 Waves

{ "type": 13, "id": "2KXASVrMqv4T7NUuGZBKeW1CFXJp365BfscnUBpAzXUB", "fee": 1800000, "feeAssetId": null, "timestamp": 1733851711997, "version": 2, "chainId": 84, "sender": "3NCCxt72qfGYBPUNx6zM49UDV9r4LvrtzeY", "senderPublicKey": "D14bs2ieC42BPAapbooQT637A3iD7mXwJ9bgfDGXBHcX", "proofs": [ "5XJsfUqQ4UjyhqNoeohEmreq24Fbodra6oLJ57vvuGX9Y1qX4VNbTiSMs7ohWrZbvvNcbjB2jzuGFVP5vcvR9nog" ], "script": "base64:BwItCAISBQoDCAgIEgYKBAgICAgSBQoDCAgIEgQKAggEEgMKAQgSAwoBCBIDCgEIPwAJU0VQQVJBVE9SAgJfXwAMS0VZX01VTFRJU0lHAghNVUxUSVNJRwAKS0VZX1NUQVRVUwIGU1RBVFVTAAhLRVlfSU5JVAIESU5JVAANS0VZX1NFUVVFTkNFUgIJU0VRVUVOQ0VSABNLRVlfQUNDT1VOVF9TVE9SQUdFAg9BQ0NPVU5UX1NUT1JBR0UAEUtFWV9GRUVfUkVDSVBJRU5UAg1GRUVfUkVDSVBJRU5UAApLRVlfU1lNQk9MAgZTWU1CT0wAF0tFWV9PUkRFUl9GSUxMRURfQU1PVU5UAhNPUkRFUl9GSUxMRURfQU1PVU5UABZLRVlfUkVXQVJEX0RJU1RSSUJVVE9SAhJSRVdBUkRfRElTVFJJQlVUT1IAFkZVTkNfRVhURVJOQUxfVFJBTlNGRVICEGV4dGVybmFsVHJhbnNmZXIAEUZVTkNfQ0xBSU1fUkVXQVJEAgtjbGFpbVJld2FyZAALU1BPVF9XQUxMRVQCBFNQT1QAEE9SREVSX1RZUEVfTElNSVQAAQART1JERVJfVFlQRV9NQVJLRVQAAgAPT1JERVJfVkVSU0lPTl8xAAEADk9SREVSX1NJREVfQlVZAAEAD09SREVSX1NJREVfU0VMTAACAA5BTEdfVFlQRV9XQVZFUwABAAxBTEdfVFlQRV9FVk0AAgALWkVST19CSUdJTlQJALYCAQAAAApPTkVfQklHSU5UCQC2AgEAAQAKTVVMVElQTElFUgkAtgIBAIDC1y8AEUZFRV9NQVhfVE9MRVJBTkNFCQC2AgEAoI0GAAxXQVZFU19QUkVGSVgBBP///wEACkVWTV9QUkVGSVgBHBlFdGhlcmV1bSBTaWduZWQgTWVzc2FnZToKMzIBEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQ9fdmFsaWRhdGVCaWdJbnQDBHZhbF8ObG93ZXJCb3VuZGFyeV8EZXJyXwMJAL8CAgUObG93ZXJCb3VuZGFyeV8FBHZhbF8JAAIBBQRlcnJfBgERX3ZhbGlkYXRlSW50RXF1YWwDBXZhbDFfBXZhbDJfBGVycl8DCQECIT0CBQV2YWwxXwUFdmFsMl8JAAIBBQRlcnJfBgEUX3ZhbGlkYXRlSW50Tm90RXF1YWwDBXZhbDFfBXZhbDJfBGVycl8DCQAAAgUFdmFsMV8FBXZhbDJfCQACAQUEZXJyXwYBD192YWxpZGF0ZVN0cmluZwIEdmFsXwRlcnJfAwMJAGcCAAAJALECAQUEdmFsXwYJAQhjb250YWlucwIFBHZhbF8FCVNFUEFSQVRPUgkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GAQlfbG9hZEluaXQABAckbWF0Y2gwCQCgCAEFCEtFWV9JTklUAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQlfc2F2ZUluaXQBB2lzSW5pdF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCEtFWV9JTklUBQdpc0luaXRfBQNuaWwBDV9sb2FkTXVsdGlzaWcABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ1fc2F2ZU11bHRpc2lnAQltdWx0aXNpZ18JAMwIAgkBC1N0cmluZ0VudHJ5AgUMS0VZX01VTFRJU0lHCQClCAEFCW11bHRpc2lnXwUDbmlsAQ5fbG9hZFNlcXVlbmNlcgAEByRtYXRjaDAJAKIIAQUNS0VZX1NFUVVFTkNFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ5fc2F2ZVNlcXVlbmNlcgEKc2VxdWVuY2VyXwkAzAgCCQELU3RyaW5nRW50cnkCBQ1LRVlfU0VRVUVOQ0VSCQClCAEFCnNlcXVlbmNlcl8FA25pbAETX2xvYWRBY2NvdW50U3RvcmFnZQAEByRtYXRjaDAJAKIIAQUTS0VZX0FDQ09VTlRfU1RPUkFHRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAARNfc2F2ZUFjY291bnRTdG9yYWdlAQ9hY2NvdW50U3RvcmFnZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgUTS0VZX0FDQ09VTlRfU1RPUkFHRQkApQgBBQ9hY2NvdW50U3RvcmFnZV8FA25pbAERX2xvYWRGZWVSZWNpcGllbnQABAckbWF0Y2gwCQCiCAEFEUtFWV9GRUVfUkVDSVBJRU5UAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAARFfc2F2ZUZlZVJlY2lwaWVudAENZmVlUmVjaXBpZW50XwkAzAgCCQELU3RyaW5nRW50cnkCBRFLRVlfRkVFX1JFQ0lQSUVOVAUNZmVlUmVjaXBpZW50XwUDbmlsARZfbG9hZFJld2FyZERpc3RyaWJ1dG9yAAQHJG1hdGNoMAkAoggBBRZLRVlfUkVXQVJEX0RJU1RSSUJVVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAARZfc2F2ZVJld2FyZERpc3RyaWJ1dG9yAQxkaXN0cmlidXRvcl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUWS0VZX1JFV0FSRF9ESVNUUklCVVRPUgUMZGlzdHJpYnV0b3JfBQNuaWwBC19sb2FkU3ltYm9sAQdzeW1ib2xfBAckbWF0Y2gwCQCgCAEJALkJAgkAzAgCBQpLRVlfU1lNQk9MCQDMCAIFB3N5bWJvbF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQtfc2F2ZVN5bWJvbAIHc3ltYm9sXwR2YWxfCQDMCAIJAQxCb29sZWFuRW50cnkCCQC5CQIJAMwIAgUKS0VZX1NZTUJPTAkAzAgCBQdzeW1ib2xfBQNuaWwFCVNFUEFSQVRPUgUEdmFsXwUDbmlsARZfbG9hZE9yZGVyRmlsbGVkQW1vdW50AQpvcmRlckhhc2hfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRdLRVlfT1JERVJfRklMTEVEX0FNT1VOVAkAzAgCCQDYBAEFCm9yZGVySGFzaF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEWX3NhdmVPcmRlckZpbGxlZEFtb3VudAIKb3JkZXJIYXNoXwdhbW91bnRfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRdLRVlfT1JERVJfRklMTEVEX0FNT1VOVAkAzAgCCQDYBAEFCm9yZGVySGFzaF8FA25pbAUJU0VQQVJBVE9SCQCmAwEFB2Ftb3VudF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAMJAQlfbG9hZEluaXQACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAADCQEBIQEJAQlfbG9hZEluaXQACQACAQIYX3doZW5Jbml0aWFsaXplZDogcmV2ZXJ0BgESX3ZhbGlkYXRlU2VxdWVuY2VyAgZjYWxsZXIEZXJyXwMJAQIhPQIJAQ5fbG9hZFNlcXVlbmNlcgAFBmNhbGxlcgkAAgEFBGVycl8GARJfdmFsaWRhdGVPcmRlclR5cGUDBXR5cGVfCHZlcnNpb25fBGVycl8DAwkBAiE9AgUFdHlwZV8FEE9SREVSX1RZUEVfTElNSVQJAQIhPQIFBXR5cGVfBRFPUkRFUl9UWVBFX01BUktFVAcJAAIBBQRlcnJfAwkBAiE9AgUIdmVyc2lvbl8FD09SREVSX1ZFUlNJT05fMQkAAgEFBGVycl8GARRfdmFsaWRhdGVPcmRlclN5bWJvbAIHc3ltYm9sXwRlcnJfAwkBASEBCQELX2xvYWRTeW1ib2wBBQdzeW1ib2xfCQACAQUEZXJyXwYBEl92YWxpZGF0ZU9yZGVyU2lkZQIFc2lkZV8EZXJyXwMDCQECIT0CBQVzaWRlXwUOT1JERVJfU0lERV9CVVkJAQIhPQIFBXNpZGVfBQ9PUkRFUl9TSURFX1NFTEwHCQACAQUEZXJyXwYBFF92YWxpZGF0ZU9yZGVyUHJpY2VzBRBtYWtlck9yZGVyUHJpY2VfEHRha2VyT3JkZXJQcmljZV8PdGFrZXJPcmRlclNpZGVfD3Rha2VyT3JkZXJUeXBlXwRlcnJfBAZyZXN1bHQDCQAAAgUPdGFrZXJPcmRlclR5cGVfBRFPUkRFUl9UWVBFX01BUktFVAYDCQAAAgUPdGFrZXJPcmRlclNpZGVfBQ5PUkRFUl9TSURFX0JVWQkAwAICBRB0YWtlck9yZGVyUHJpY2VfBRBtYWtlck9yZGVyUHJpY2VfAwkAAAIFD3Rha2VyT3JkZXJTaWRlXwUPT1JERVJfU0lERV9TRUxMCQDAAgIFEG1ha2VyT3JkZXJQcmljZV8FEHRha2VyT3JkZXJQcmljZV8HAwkBASEBBQZyZXN1bHQJAAIBBQRlcnJfBgEYX3ZhbGlkYXRlU2lnbmF0dXJlRm9ybWF0AwpzaWduYXR1cmVfBGFsZ18EZXJyXwMJAAACBQRhbGdfBQ5BTEdfVFlQRV9XQVZFUwMJAQIhPQIJAMgBAQUKc2lnbmF0dXJlXwBACQACAQUEZXJyXwYDCQAAAgUEYWxnXwUMQUxHX1RZUEVfRVZNAwkBAiE9AgkAyAEBBQpzaWduYXR1cmVfAEEJAAIBBQRlcnJfBgkAAgEJAKwCAgUEZXJyXwIJOiBpbnYgYWxnAQ9fdmFsaWRhdGVXZWIzSWQDB3dlYjNJZF8EYWxnXwRlcnJfAwkAAAIFBGFsZ18FDkFMR19UWVBFX1dBVkVTAwkBAiE9AgkAyAEBBQd3ZWIzSWRfACAJAAIBBQRlcnJfBgMJAAACBQRhbGdfBQxBTEdfVFlQRV9FVk0DCQECIT0CCQDIAQEFB3dlYjNJZF8AFAkAAgEFBGVycl8GCQACAQkArAICBQRlcnJfAgk6IGludiBhbGcBF19jb252ZXJ0V2ViM0lkVG9BZGRyZXNzAgd3ZWIzSWRfBGFsZ18DCQAAAgUEYWxnXwUOQUxHX1RZUEVfV0FWRVMJAKUIAQkApwgBBQd3ZWIzSWRfAwkAAAIFBGFsZ18FDEFMR19UWVBFX0VWTQkArAICAgIweAkA3AQBBQd3ZWIzSWRfCQACAQIfX2NvbnZlcnRXZWIzSWRUb0FkZHJlc3M6IHJldmVydAEXX3ZhbGlkYXRlT3JkZXJTaWduYXR1cmUFCm9yZGVySGFzaF8Kc2lnbmF0dXJlXwd3ZWIzSWRfBGFsZ18EZXJyXwQGcmVzdWx0AwkAAAIFBGFsZ18FDkFMR19UWVBFX1dBVkVTBANtc2cJAMsBAgUMV0FWRVNfUFJFRklYCQCbAwEJANgEAQUKb3JkZXJIYXNoXwkA9AMDBQNtc2cFCnNpZ25hdHVyZV8FB3dlYjNJZF8DCQAAAgUEYWxnXwUMQUxHX1RZUEVfRVZNBA5oYXNoV2l0aFByZWZpeAkAjBUBCQDLAQIFCkVWTV9QUkVGSVgFCm9yZGVySGFzaF8JAAACCQDMAQIJAIwVAQkAhAcCBQ5oYXNoV2l0aFByZWZpeAUKc2lnbmF0dXJlXwAUBQd3ZWIzSWRfCQACAQkArAICBQRlcnJfAgk6IGludiBhbGcDCQEBIQEFBnJlc3VsdAkAAgEFBGVycl8GARVfdmFsaWRhdGVGZWVUb2xlcmFuY2UDB2Ftb3VudF8EZmVlXwRlcnJfAwkAvwICBQRmZWVfCQC9AgQFB2Ftb3VudF8FEUZFRV9NQVhfVE9MRVJBTkNFBQpNVUxUSVBMSUVSBQRET1dOCQACAQUEZXJyXwYBC19wYXJzZU9yZGVyAgZvcmRlcl8EZXJyXwQGZmllbGRzCQC1CQIFBm9yZGVyXwUJU0VQQVJBVE9SBAR0eXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQZmaWVsZHMAAAkArAICBQRlcnJfAgo6IGludiB0eXBlBAd2ZXJzaW9uCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQZmaWVsZHMAAQkArAICBQRlcnJfAg06IGludiB2ZXJzaW9uBAZzeW1ib2wJAJEDAgUGZmllbGRzAAIEBHNpZGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBmZpZWxkcwADCQCsAgIFBGVycl8CCjogaW52IHNpZGUEAnRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQZmaWVsZHMABAkArAICBQRlcnJfAgg6IGludiB0cwQGd2ViM0lkCQDZBAEJAJEDAgUGZmllbGRzAAUEA2FsZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUGZmllbGRzAAYJAKwCAgUEZXJyXwIJOiBpbnYgYWxnBAlzaWduYXR1cmUJANkEAQkAkQMCBQZmaWVsZHMABwQLJHQwODQ2Mjk1MDADAwkAAAIFBHR5cGUFEE9SREVSX1RZUEVfTElNSVQJAAACBQd2ZXJzaW9uBQ9PUkRFUl9WRVJTSU9OXzEHBAVwcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAJEDAgUGZmllbGRzAAgJAKwCAgUEZXJyXwILOiBpbnYgcHJpY2UEBmFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAJEDAgUGZmllbGRzAAkJAKwCAgUEZXJyXwIMOiBpbnYgYW1vdW50BBFvcmRlckRldGFpbHNCeXRlcwkAywECCQCdAwEFBXByaWNlCQCdAwEFBmFtb3VudAkAlgoEBQVwcmljZQUGYW1vdW50BQtaRVJPX0JJR0lOVAURb3JkZXJEZXRhaWxzQnl0ZXMDAwkAAAIFBHR5cGUFEU9SREVSX1RZUEVfTUFSS0VUCQAAAgUHdmVyc2lvbgUPT1JERVJfVkVSU0lPTl8xBwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkAkQMCBQZmaWVsZHMACAkArAICBQRlcnJfAgw6IGludiBhbW91bnQEDGlzQmFzZUFtb3VudAMJAAACCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkAkQMCBQZmaWVsZHMACQkArAICBQRlcnJfAhI6IGludiBpc0Jhc2VBbW91bnQFC1pFUk9fQklHSU5UBwYDBQxpc0Jhc2VBbW91bnQJAJYKBAULWkVST19CSUdJTlQFBmFtb3VudAULWkVST19CSUdJTlQJAMsBAgkAnQMBBQZhbW91bnQJAJ0DAQUKT05FX0JJR0lOVAkAlgoEBQtaRVJPX0JJR0lOVAULWkVST19CSUdJTlQFBmFtb3VudAkAywECCQCdAwEFBmFtb3VudAkAnQMBBQtaRVJPX0JJR0lOVAkAAgEJAKwCAgUEZXJyXwIUOiBpbnYgdHlwZSAmIHZlcnNpb24EBXByaWNlCAULJHQwODQ2Mjk1MDACXzEECmJhc2VBbW91bnQIBQskdDA4NDYyOTUwMAJfMgQLcXVvdGVBbW91bnQIBQskdDA4NDYyOTUwMAJfMwQRb3JkZXJEZXRhaWxzQnl0ZXMIBQskdDA4NDYyOTUwMAJfNAQKb3JkZXJCeXRlcwkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAJoDAQUEdHlwZQkAmgMBBQd2ZXJzaW9uCQCaAwEJALECAQUGc3ltYm9sCQCbAwEFBnN5bWJvbAkAmgMBBQRzaWRlCQCaAwEFAnRzBQZ3ZWIzSWQJAJoDAQUDYWxnBRFvcmRlckRldGFpbHNCeXRlcwQJb3JkZXJIYXNoCQCNFQEFCm9yZGVyQnl0ZXMEA2VycgMDAwMDAwMJARJfdmFsaWRhdGVPcmRlclR5cGUDBQR0eXBlBQd2ZXJzaW9uCQCsAgIFBGVycl8CEDogaW52IG9yZGVyIHR5cGUJARRfdmFsaWRhdGVPcmRlclN5bWJvbAIFBnN5bWJvbAkArAICBQRlcnJfAhI6IGludiBvcmRlciBzeW1ib2wHCQESX3ZhbGlkYXRlT3JkZXJTaWRlAgUEc2lkZQkArAICBQRlcnJfAhA6IGludiBvcmRlciBzaWRlBwkBD192YWxpZGF0ZVdlYjNJZAMFBndlYjNJZAUDYWxnCQCsAgIFBGVycl8CEjogaW52IG9yZGVyIHdlYjNJZAcJARhfdmFsaWRhdGVTaWduYXR1cmVGb3JtYXQDBQlzaWduYXR1cmUFA2FsZwkArAICBQRlcnJfAhA6IGludiBzaWcgZm9ybWF0BwkBD192YWxpZGF0ZUJpZ0ludAMFBXByaWNlBQtaRVJPX0JJR0lOVAkArAICBQRlcnJfAgs6IG5lZyBwcmljZQcJAQ9fdmFsaWRhdGVCaWdJbnQDBQpiYXNlQW1vdW50BQtaRVJPX0JJR0lOVAkArAICBQRlcnJfAhE6IG5lZyBiYXNlIGFtb3VudAcJAQ9fdmFsaWRhdGVCaWdJbnQDBQtxdW90ZUFtb3VudAULWkVST19CSUdJTlQJAKwCAgUEZXJyXwISOiBuZWcgcXVvdGUgYW1vdW50BwMJAAACBQNlcnIFA2VycgkAnAoKBQR0eXBlBQZzeW1ib2wFBHNpZGUFBXByaWNlBQpiYXNlQW1vdW50BQtxdW90ZUFtb3VudAUJb3JkZXJIYXNoBQZ3ZWIzSWQFA2FsZwUJc2lnbmF0dXJlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBwFpAQRpbml0AwpzZXF1ZW5jZXJfD2FjY291bnRTdG9yYWdlXw1mZWVSZWNpcGllbnRfBANlcnIDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQETX3doZW5Ob3RJbml0aWFsaXplZAAHCQEQX3doZW5NdWx0aXNpZ1NldAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCnNlcXVlbmNlcl8CF2luaXQ6IGludmFsaWQgc2VxdWVuY2VyBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQ9hY2NvdW50U3RvcmFnZV8CHGluaXQ6IGludmFsaWQgYWNjb3VudFN0b3JhZ2UHCQEPX3ZhbGlkYXRlU3RyaW5nAgUNZmVlUmVjaXBpZW50XwIaaW5pdDogaW52YWxpZCBmZWVSZWNpcGllbnQHAwkAAAIFA2VycgUDZXJyCQCUCgIJAM4IAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBDl9zYXZlU2VxdWVuY2VyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUKc2VxdWVuY2VyXwkBE19zYXZlQWNjb3VudFN0b3JhZ2UBCQERQGV4dHJOYXRpdmUoMTA2MikBBQ9hY2NvdW50U3RvcmFnZV8JARFfc2F2ZUZlZVJlY2lwaWVudAEFDWZlZVJlY2lwaWVudF8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFdHJhZGUEC21ha2VyT3JkZXJfC3Rha2VyT3JkZXJfCGJhc2VGZWVfCXF1b3RlRmVlXwQNJHQwMTEzMTYxMTY0NQkBC19wYXJzZU9yZGVyAgULbWFrZXJPcmRlcl8CGnRyYWRlOiBpbnZhbGlkIG1ha2VyIG9yZGVyBA5tYWtlck9yZGVyVHlwZQgFDSR0MDExMzE2MTE2NDUCXzEEEG1ha2VyT3JkZXJTeW1ib2wIBQ0kdDAxMTMxNjExNjQ1Al8yBA5tYWtlck9yZGVyU2lkZQgFDSR0MDExMzE2MTE2NDUCXzMED21ha2VyT3JkZXJQcmljZQgFDSR0MDExMzE2MTE2NDUCXzQEFG1ha2VyT3JkZXJCYXNlQW1vdW50CAUNJHQwMTEzMTYxMTY0NQJfNQQVbWFrZXJPcmRlclF1b3RlQW1vdW50CAUNJHQwMTEzMTYxMTY0NQJfNgQObWFrZXJPcmRlckhhc2gIBQ0kdDAxMTMxNjExNjQ1Al83BBBtYWtlck9yZGVyV2ViM0lkCAUNJHQwMTEzMTYxMTY0NQJfOAQNbWFrZXJPcmRlckFsZwgFDSR0MDExMzE2MTE2NDUCXzkEE21ha2VyT3JkZXJTaWduYXR1cmUIBQ0kdDAxMTMxNjExNjQ1A18xMAQNJHQwMTE2NTExMTk4MAkBC19wYXJzZU9yZGVyAgULdGFrZXJPcmRlcl8CGnRyYWRlOiBpbnZhbGlkIHRha2VyIG9yZGVyBA50YWtlck9yZGVyVHlwZQgFDSR0MDExNjUxMTE5ODACXzEEEHRha2VyT3JkZXJTeW1ib2wIBQ0kdDAxMTY1MTExOTgwAl8yBA50YWtlck9yZGVyU2lkZQgFDSR0MDExNjUxMTE5ODACXzMED3Rha2VyT3JkZXJQcmljZQgFDSR0MDExNjUxMTE5ODACXzQEFHRha2VyT3JkZXJCYXNlQW1vdW50CAUNJHQwMTE2NTExMTk4MAJfNQQVdGFrZXJPcmRlclF1b3RlQW1vdW50CAUNJHQwMTE2NTExMTk4MAJfNgQOdGFrZXJPcmRlckhhc2gIBQ0kdDAxMTY1MTExOTgwAl83BBB0YWtlck9yZGVyV2ViM0lkCAUNJHQwMTE2NTExMTk4MAJfOAQNdGFrZXJPcmRlckFsZwgFDSR0MDExNjUxMTE5ODACXzkEE3Rha2VyT3JkZXJTaWduYXR1cmUIBQ0kdDAxMTY1MTExOTgwA18xMAQHYmFzZUZlZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEFCGJhc2VGZWVfAhZ0cmFkZTogYmFzZUZlZSBub3QgaW50BAhxdW90ZUZlZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEFCXF1b3RlRmVlXwIXdHJhZGU6IHF1b3RlRmVlIG5vdCBpbnQECnRyYWRlUHJpY2UFD21ha2VyT3JkZXJQcmljZQQWbWFrZXJPcmRlckZpbGxlZEFtb3VudAkBFl9sb2FkT3JkZXJGaWxsZWRBbW91bnQBBQ5tYWtlck9yZGVySGFzaAQYbWFrZXJPcmRlckJhc2VBbW91bnRGcmVlCQC4AgIFFG1ha2VyT3JkZXJCYXNlQW1vdW50BRZtYWtlck9yZGVyRmlsbGVkQW1vdW50BBZ0YWtlck9yZGVyRmlsbGVkQW1vdW50CQEWX2xvYWRPcmRlckZpbGxlZEFtb3VudAEFDnRha2VyT3JkZXJIYXNoBBh0YWtlck9yZGVyQmFzZUFtb3VudEZyZWUDCQAAAgUUdGFrZXJPcmRlckJhc2VBbW91bnQFC1pFUk9fQklHSU5UCQC9AgQJALgCAgUVdGFrZXJPcmRlclF1b3RlQW1vdW50BRZ0YWtlck9yZGVyRmlsbGVkQW1vdW50BQpNVUxUSVBMSUVSBQp0cmFkZVByaWNlBQRET1dOCQC4AgIFFHRha2VyT3JkZXJCYXNlQW1vdW50BRZ0YWtlck9yZGVyRmlsbGVkQW1vdW50BA90cmFkZUJhc2VBbW91bnQJAJkDAQkAzAgCBRhtYWtlck9yZGVyQmFzZUFtb3VudEZyZWUJAMwIAgUYdGFrZXJPcmRlckJhc2VBbW91bnRGcmVlBQNuaWwEEHRyYWRlUXVvdGVBbW91bnQJAL0CBAUPdHJhZGVCYXNlQW1vdW50BQp0cmFkZVByaWNlBQpNVUxUSVBMSUVSBQRET1dOBANlcnIDAwMDAwMDAwMJARJfdmFsaWRhdGVTZXF1ZW5jZXICCAUBaQZjYWxsZXICGHRyYWRlOiBpbnZhbGlkIHNlcXVlbmNlcgkBD192YWxpZGF0ZUJpZ0ludAMFD3RyYWRlQmFzZUFtb3VudAULWkVST19CSUdJTlQCF3RyYWRlOiBuZWcgdHJhZGUgYW1vdW50BwkBEV92YWxpZGF0ZUludEVxdWFsAwUObWFrZXJPcmRlclR5cGUFEE9SREVSX1RZUEVfTElNSVQCGXRyYWRlOiBtYWtlciBpcyBub3QgbGltaXQHCQEUX3ZhbGlkYXRlU3RyaW5nRXF1YWwDBRBtYWtlck9yZGVyU3ltYm9sBRB0YWtlck9yZGVyU3ltYm9sAhZ0cmFkZTogc3ltYm9sIG1pc21hdGNoBwkBFF92YWxpZGF0ZUludE5vdEVxdWFsAwUObWFrZXJPcmRlclNpZGUFDnRha2VyT3JkZXJTaWRlAhR0cmFkZTogc2lkZSBtaXNtYXRjaAcJARdfdmFsaWRhdGVPcmRlclNpZ25hdHVyZQUFDm1ha2VyT3JkZXJIYXNoBRNtYWtlck9yZGVyU2lnbmF0dXJlBRBtYWtlck9yZGVyV2ViM0lkBQ1tYWtlck9yZGVyQWxnAhh0cmFkZTogaW52YWxpZCBtYWtlciBzaWcHCQEXX3ZhbGlkYXRlT3JkZXJTaWduYXR1cmUFBQ50YWtlck9yZGVySGFzaAUTdGFrZXJPcmRlclNpZ25hdHVyZQUQdGFrZXJPcmRlcldlYjNJZAUNdGFrZXJPcmRlckFsZwIYdHJhZGU6IGludmFsaWQgdGFrZXIgc2lnBwkBFV92YWxpZGF0ZUZlZVRvbGVyYW5jZQMFD3RyYWRlQmFzZUFtb3VudAUHYmFzZUZlZQIYdHJhZGU6IGJhc2UgZmVlIHRvbyBtdWNoBwkBFV92YWxpZGF0ZUZlZVRvbGVyYW5jZQMFEHRyYWRlUXVvdGVBbW91bnQFCHF1b3RlRmVlAhl0cmFkZTogcXVvdGUgZmVlIHRvbyBtdWNoBwkBFF92YWxpZGF0ZU9yZGVyUHJpY2VzBQUPbWFrZXJPcmRlclByaWNlBQ90YWtlck9yZGVyUHJpY2UFDnRha2VyT3JkZXJTaWRlBQ50YWtlck9yZGVyVHlwZQIWdHJhZGU6IHByaWNlcyBtaXNtYXRjaAcDCQAAAgUDZXJyBQNlcnIEDG1ha2VyQWRkcmVzcwkBF19jb252ZXJ0V2ViM0lkVG9BZGRyZXNzAgUQbWFrZXJPcmRlcldlYjNJZAUNbWFrZXJPcmRlckFsZwQMdGFrZXJBZGRyZXNzCQEXX2NvbnZlcnRXZWIzSWRUb0FkZHJlc3MCBRB0YWtlck9yZGVyV2ViM0lkBQ10YWtlck9yZGVyQWxnBA0kdDAxNDEzNzE0NTYwAwkAAAIFDm1ha2VyT3JkZXJTaWRlBQ5PUkRFUl9TSURFX0JVWQkAlAoCBQxtYWtlckFkZHJlc3MFDHRha2VyQWRkcmVzcwkAlAoCBQx0YWtlckFkZHJlc3MFDG1ha2VyQWRkcmVzcwQFYnV5ZXIIBQ0kdDAxNDEzNzE0NTYwAl8xBAZzZWxsZXIIBQ0kdDAxNDEzNzE0NTYwAl8yBAZhc3NldHMJALUJAgUQbWFrZXJPcmRlclN5bWJvbAIBLQQJYmFzZUFzc2V0CQCRAwIFBmFzc2V0cwAABApxdW90ZUFzc2V0CQCRAwIFBmFzc2V0cwABBAxmZWVSZWNpcGllbnQJARFfbG9hZEZlZVJlY2lwaWVudAAEEXN0b3JhZ2VJbnZvY2F0aW9uCQD8BwQJARNfbG9hZEFjY291bnRTdG9yYWdlAAUWRlVOQ19FWFRFUk5BTF9UUkFOU0ZFUgkAzAgCBQtTUE9UX1dBTExFVAkAzAgCBQliYXNlQXNzZXQJAMwIAgUGc2VsbGVyCQDMCAIFBWJ1eWVyCQDMCAIJAKYDAQUPdHJhZGVCYXNlQW1vdW50CQDMCAIJAKYDAQUHYmFzZUZlZQkAzAgCBQxmZWVSZWNpcGllbnQFA25pbAUDbmlsAwkAAAIFEXN0b3JhZ2VJbnZvY2F0aW9uBRFzdG9yYWdlSW52b2NhdGlvbgQSc3RvcmFnZUludm9jYXRpb24xCQD8BwQJARNfbG9hZEFjY291bnRTdG9yYWdlAAUWRlVOQ19FWFRFUk5BTF9UUkFOU0ZFUgkAzAgCBQtTUE9UX1dBTExFVAkAzAgCBQpxdW90ZUFzc2V0CQDMCAIFBWJ1eWVyCQDMCAIFBnNlbGxlcgkAzAgCCQCmAwEFEHRyYWRlUXVvdGVBbW91bnQJAMwIAgkApgMBBQhxdW90ZUZlZQkAzAgCBQxmZWVSZWNpcGllbnQFA25pbAUDbmlsAwkAAAIFEnN0b3JhZ2VJbnZvY2F0aW9uMQUSc3RvcmFnZUludm9jYXRpb24xBBluZXdNYWtlck9yZGVyRmlsbGVkQW1vdW50CQC3AgIFFm1ha2VyT3JkZXJGaWxsZWRBbW91bnQFD3RyYWRlQmFzZUFtb3VudAQZbmV3VGFrZXJPcmRlckZpbGxlZEFtb3VudAMJAAACBRR0YWtlck9yZGVyQmFzZUFtb3VudAULWkVST19CSUdJTlQJALcCAgUWdGFrZXJPcmRlckZpbGxlZEFtb3VudAUQdHJhZGVRdW90ZUFtb3VudAkAtwICBRZ0YWtlck9yZGVyRmlsbGVkQW1vdW50BQ90cmFkZUJhc2VBbW91bnQJAJQKAgkAzggCCQEWX3NhdmVPcmRlckZpbGxlZEFtb3VudAIFDm1ha2VyT3JkZXJIYXNoBRluZXdNYWtlck9yZGVyRmlsbGVkQW1vdW50CQEWX3NhdmVPcmRlckZpbGxlZEFtb3VudAIFDnRha2VyT3JkZXJIYXNoBRluZXdUYWtlck9yZGVyRmlsbGVkQW1vdW50BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2NsYWltUmV3YXJkAwV1c2VyXwljdXJyZW5jeV8HYW1vdW50XwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQUHYW1vdW50XwIbY2xhaW1SZXdhcmQ6IGFtb3VudCBub3QgaW50BANlcnIDAwMJARJfdmFsaWRhdGVTZXF1ZW5jZXICCAUBaQZjYWxsZXICHmNsYWltUmV3YXJkOiBpbnZhbGlkIHNlcXVlbmNlcgkBD192YWxpZGF0ZVN0cmluZwIFBXVzZXJfAhljbGFpbVJld2FyZDogaW52YWxpZCB1c2VyBwkBD192YWxpZGF0ZVN0cmluZwIFCWN1cnJlbmN5XwIdY2xhaW1SZXdhcmQ6IGludmFsaWQgY3VycmVuY3kHCQEPX3ZhbGlkYXRlQmlnSW50AwUGYW1vdW50BQtaRVJPX0JJR0lOVAIXY2xhaW1SZXdhcmQ6IG5lZyBhbW91bnQHAwkAAAIFA2VycgUDZXJyBBFzdG9yYWdlSW52b2NhdGlvbgkA/AcECQETX2xvYWRBY2NvdW50U3RvcmFnZQAFEUZVTkNfQ0xBSU1fUkVXQVJECQDMCAIJARZfbG9hZFJld2FyZERpc3RyaWJ1dG9yAAkAzAgCBQV1c2VyXwkAzAgCBQljdXJyZW5jeV8JAMwIAgUHYW1vdW50XwUDbmlsBQNuaWwDCQAAAgURc3RvcmFnZUludm9jYXRpb24FEXN0b3JhZ2VJbnZvY2F0aW9uCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1cGRhdGVTeW1ib2wCB3N5bWJvbF8KYWxsb3dhbmNlXwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEPX3ZhbGlkYXRlU3RyaW5nAgUHc3ltYm9sXwIcdXBkYXRlU3ltYm9sOiBpbnZhbGlkIHN5bWJvbAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBC19zYXZlU3ltYm9sAgUHc3ltYm9sXwUKYWxsb3dhbmNlXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJ1cGRhdGVGZWVSZWNpcGllbnQBDWZlZVJlY2lwaWVudF8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ9fdmFsaWRhdGVTdHJpbmcCBQ1mZWVSZWNpcGllbnRfAih1cGRhdGVGZWVSZWNpcGllbnQ6IGludmFsaWQgZmVlUmVjaXBpZW50BwMJAAACBQNlcnIFA2VycgkAlAoCCQERX3NhdmVGZWVSZWNpcGllbnQBBQ1mZWVSZWNpcGllbnRfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF3VwZGF0ZVJld2FyZERpc3RyaWJ1dG9yARJyZXdhcmREaXN0cmlidXRvcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ9fdmFsaWRhdGVTdHJpbmcCBRJyZXdhcmREaXN0cmlidXRvcl8CMnVwZGF0ZVJld2FyZERpc3RyaWJ1dG9yOiBpbnZhbGlkIHJld2FyZERpc3RyaWJ1dG9yBwMJAAACBQNlcnIFA2VycgkAlAoCCQEWX3NhdmVSZXdhcmREaXN0cmlidXRvcgEFEnJld2FyZERpc3RyaWJ1dG9yXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNdWx0aXNpZwEJbXVsdGlzaWdfBANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfdmFsaWRhdGVBZGRyZXNzAgUJbXVsdGlzaWdfAh1zZXRNdWx0aXNpZzogaW52YWxpZCBtdWx0aXNpZwcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDV9zYXZlTXVsdGlzaWcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQltdWx0aXNpZ18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcECG11bHRpc2lnBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG11bHRpc2lnCQC5CQIJAMwIAgUKS0VZX1NUQVRVUwkAzAgCCQClCAEFBHRoaXMJAMwIAgkA2AQBCAUCdHgCaWQFA25pbAUJU0VQQVJBVE9SBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleeROHIg=", "height": 3408804, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BneY3TFrZpyyrKYUqG6LqJN5fkVxdEayVeEnhuH5qtM3 Next: none Diff:
OldNewDifferences
295295 func aM (ak,aH,aK,aI,C) = {
296296 let aF = if ((aI == s))
297297 then {
298- let aN = keccak256_16Kb((y + toBytes(toBase58String(ak))))
298+ let aN = (y + toBytes(toBase58String(ak)))
299299 sigVerify(aN, aH, aK)
300300 }
301301 else if ((aI == t))
302302 then {
303- let aN = keccak256_16Kb((z + ak))
304- (takeRight(keccak256_16Kb(ecrecover(aN, aH)), 20) == aK)
303+ let aO = keccak256_16Kb((z + ak))
304+ (takeRight(keccak256_16Kb(ecrecover(aO, aH)), 20) == aK)
305305 }
306306 else throw((C + ": inv alg"))
307307 if (!(aF))
310310 }
311311
312312
313-func aO (am,aP,C) = if ((aP > fraction(am, x, w, DOWN)))
313+func aP (am,aQ,C) = if ((aQ > fraction(am, x, w, DOWN)))
314314 then throw(C)
315315 else true
316316
317317
318-func aQ (aR,C) = {
319- let aS = split(aR, a)
320- let aT = valueOrErrorMessage(parseInt(aS[0]), (C + ": inv type"))
321- let aU = valueOrErrorMessage(parseInt(aS[1]), (C + ": inv version"))
322- let aV = aS[2]
323- let aW = valueOrErrorMessage(parseInt(aS[3]), (C + ": inv side"))
324- let aX = valueOrErrorMessage(parseInt(aS[4]), (C + ": inv ts"))
325- let aY = fromBase58String(aS[5])
326- let aZ = valueOrErrorMessage(parseInt(aS[6]), (C + ": inv alg"))
327- let ba = fromBase58String(aS[7])
328- let bb = if (if ((aT == n))
329- then (aU == p)
318+func aR (aS,C) = {
319+ let aT = split(aS, a)
320+ let aU = valueOrErrorMessage(parseInt(aT[0]), (C + ": inv type"))
321+ let aV = valueOrErrorMessage(parseInt(aT[1]), (C + ": inv version"))
322+ let aW = aT[2]
323+ let aX = valueOrErrorMessage(parseInt(aT[3]), (C + ": inv side"))
324+ let aY = valueOrErrorMessage(parseInt(aT[4]), (C + ": inv ts"))
325+ let aZ = fromBase58String(aT[5])
326+ let ba = valueOrErrorMessage(parseInt(aT[6]), (C + ": inv alg"))
327+ let bb = fromBase58String(aT[7])
328+ let bc = if (if ((aU == n))
329+ then (aV == p)
330330 else false)
331331 then {
332- let bc = valueOrErrorMessage(parseBigInt(aS[8]), (C + ": inv price"))
333- let bd = valueOrErrorMessage(parseBigInt(aS[9]), (C + ": inv amount"))
334- let be = (toBytes(bc) + toBytes(bd))
335- $Tuple4(bc, bd, u, be)
332+ let bd = valueOrErrorMessage(parseBigInt(aT[8]), (C + ": inv price"))
333+ let be = valueOrErrorMessage(parseBigInt(aT[9]), (C + ": inv amount"))
334+ let bf = (toBytes(bd) + toBytes(be))
335+ $Tuple4(bd, be, u, bf)
336336 }
337- else if (if ((aT == o))
338- then (aU == p)
337+ else if (if ((aU == o))
338+ then (aV == p)
339339 else false)
340340 then {
341- let bd = valueOrErrorMessage(parseBigInt(aS[8]), (C + ": inv amount"))
342- let bf = if ((valueOrErrorMessage(parseBigInt(aS[9]), (C + ": inv isBaseAmount")) == u))
341+ let be = valueOrErrorMessage(parseBigInt(aT[8]), (C + ": inv amount"))
342+ let bg = if ((valueOrErrorMessage(parseBigInt(aT[9]), (C + ": inv isBaseAmount")) == u))
343343 then false
344344 else true
345- if (bf)
346- then $Tuple4(u, bd, u, (toBytes(bd) + toBytes(v)))
347- else $Tuple4(u, u, bd, (toBytes(bd) + toBytes(u)))
345+ if (bg)
346+ then $Tuple4(u, be, u, (toBytes(be) + toBytes(v)))
347+ else $Tuple4(u, u, be, (toBytes(be) + toBytes(u)))
348348 }
349349 else throw((C + ": inv type & version"))
350- let bc = bb._1
351- let bg = bb._2
352- let bh = bb._3
353- let be = bb._4
354- let bi = ((((((((toBytes(aT) + toBytes(aU)) + toBytes(size(aV))) + toBytes(aV)) + toBytes(aW)) + toBytes(aX)) + aY) + toBytes(aZ)) + be)
355- let bj = keccak256_32Kb(bi)
356- let bk = if (if (if (if (if (if (if (au(aT, aU, (C + ": inv order type")))
357- then ax(aV, (C + ": inv order symbol"))
350+ let bd = bc._1
351+ let bh = bc._2
352+ let bi = bc._3
353+ let bf = bc._4
354+ let bj = ((((((((toBytes(aU) + toBytes(aV)) + toBytes(size(aW))) + toBytes(aW)) + toBytes(aX)) + toBytes(aY)) + aZ) + toBytes(ba)) + bf)
355+ let bk = keccak256_32Kb(bj)
356+ let bl = if (if (if (if (if (if (if (au(aU, aV, (C + ": inv order type")))
357+ then ax(aW, (C + ": inv order symbol"))
358358 else false)
359- then ay(aW, (C + ": inv order side"))
359+ then ay(aX, (C + ": inv order side"))
360360 else false)
361- then aJ(aY, aZ, (C + ": inv order web3Id"))
361+ then aJ(aZ, ba, (C + ": inv order web3Id"))
362362 else false)
363- then aG(ba, aZ, (C + ": inv sig format"))
363+ then aG(bb, ba, (C + ": inv sig format"))
364364 else false)
365- then F(bc, u, (C + ": neg price"))
365+ then F(bd, u, (C + ": neg price"))
366366 else false)
367- then F(bg, u, (C + ": neg base amount"))
367+ then F(bh, u, (C + ": neg base amount"))
368368 else false)
369- then F(bh, u, (C + ": neg quote amount"))
369+ then F(bi, u, (C + ": neg quote amount"))
370370 else false
371- if ((bk == bk))
372- then $Tuple10(aT, aV, aW, bc, bg, bh, bj, aY, aZ, ba)
371+ if ((bl == bl))
372+ then $Tuple10(aU, aW, aX, bd, bh, bi, bk, aZ, ba, bb)
373373 else throw("Strict value is not equal to itself.")
374374 }
375375
376376
377-@Callable(bl)
377+@Callable(bm)
378378 func init (W,Z,ac) = {
379- let bk = if (if (if (if (if (an(bl.caller))
379+ let bl = if (if (if (if (if (an(bm.caller))
380380 then aq()
381381 else false)
382382 then ap()
387387 else false)
388388 then M(ac, "init: invalid feeRecipient")
389389 else false
390- if ((bk == bk))
390+ if ((bl == bl))
391391 then $Tuple2((((P(true) ++ V(addressFromStringValue(W))) ++ Y(addressFromStringValue(Z))) ++ ab(ac)), unit)
392392 else throw("Strict value is not equal to itself.")
393393 }
394394
395395
396396
397-@Callable(bl)
398-func trade (bm,bn,bo,bp) = {
399- let bq = aQ(bm, "trade: invalid maker order")
400- let br = bq._1
401- let bs = bq._2
402- let bt = bq._3
403- let bu = bq._4
404- let bv = bq._5
405- let bw = bq._6
406- let bx = bq._7
407- let by = bq._8
408- let bz = bq._9
409- let bA = bq._10
410- let bB = aQ(bn, "trade: invalid taker order")
411- let bC = bB._1
412- let bD = bB._2
413- let bE = bB._3
414- let bF = bB._4
415- let bG = bB._5
416- let bH = bB._6
417- let bI = bB._7
418- let bJ = bB._8
419- let bK = bB._9
420- let bL = bB._10
421- let bM = valueOrErrorMessage(parseBigInt(bo), "trade: baseFee not int")
422- let bN = valueOrErrorMessage(parseBigInt(bp), "trade: quoteFee not int")
423- let bO = bu
424- let bP = aj(bx)
425- let bQ = (bv - bP)
426- let bR = aj(bI)
427- let bS = if ((bG == u))
428- then fraction((bH - bR), w, bO, DOWN)
429- else (bG - bR)
430- let bT = min([bQ, bS])
431- let bU = fraction(bT, bO, w, DOWN)
432- let bk = if (if (if (if (if (if (if (if (if (as(bl.caller, "trade: invalid sequencer"))
433- then F(bT, u, "trade: neg trade amount")
397+@Callable(bm)
398+func trade (bn,bo,bp,bq) = {
399+ let br = aR(bn, "trade: invalid maker order")
400+ let bs = br._1
401+ let bt = br._2
402+ let bu = br._3
403+ let bv = br._4
404+ let bw = br._5
405+ let bx = br._6
406+ let by = br._7
407+ let bz = br._8
408+ let bA = br._9
409+ let bB = br._10
410+ let bC = aR(bo, "trade: invalid taker order")
411+ let bD = bC._1
412+ let bE = bC._2
413+ let bF = bC._3
414+ let bG = bC._4
415+ let bH = bC._5
416+ let bI = bC._6
417+ let bJ = bC._7
418+ let bK = bC._8
419+ let bL = bC._9
420+ let bM = bC._10
421+ let bN = valueOrErrorMessage(parseBigInt(bp), "trade: baseFee not int")
422+ let bO = valueOrErrorMessage(parseBigInt(bq), "trade: quoteFee not int")
423+ let bP = bv
424+ let bQ = aj(by)
425+ let bR = (bw - bQ)
426+ let bS = aj(bJ)
427+ let bT = if ((bH == u))
428+ then fraction((bI - bS), w, bP, DOWN)
429+ else (bH - bS)
430+ let bU = min([bR, bT])
431+ let bV = fraction(bU, bP, w, DOWN)
432+ let bl = if (if (if (if (if (if (if (if (if (as(bm.caller, "trade: invalid sequencer"))
433+ then F(bU, u, "trade: neg trade amount")
434434 else false)
435- then I(br, n, "trade: maker is not limit")
435+ then I(bs, n, "trade: maker is not limit")
436436 else false)
437- then N(bs, bD, "trade: symbol mismatch")
437+ then N(bt, bE, "trade: symbol mismatch")
438438 else false)
439- then L(bt, bE, "trade: side mismatch")
439+ then L(bu, bF, "trade: side mismatch")
440440 else false)
441- then aM(bx, bA, by, bz, "trade: invalid maker sig")
441+ then aM(by, bB, bz, bA, "trade: invalid maker sig")
442442 else false)
443- then aM(bI, bL, bJ, bK, "trade: invalid taker sig")
443+ then aM(bJ, bM, bK, bL, "trade: invalid taker sig")
444444 else false)
445- then aO(bT, bM, "trade: base fee too much")
445+ then aP(bU, bN, "trade: base fee too much")
446446 else false)
447- then aO(bU, bN, "trade: quote fee too much")
447+ then aP(bV, bO, "trade: quote fee too much")
448448 else false)
449- then aA(bu, bF, bE, bC, "trade: prices mismatch")
449+ then aA(bv, bG, bF, bD, "trade: prices mismatch")
450450 else false
451- if ((bk == bk))
451+ if ((bl == bl))
452452 then {
453- let bV = aL(by, bz)
454- let bW = aL(bJ, bK)
455- let bX = if ((bt == q))
456- then $Tuple2(bV, bW)
457- else $Tuple2(bW, bV)
458- let bY = bX._1
459- let bZ = bX._2
460- let ca = split(bs, "-")
461- let cb = ca[0]
462- let cc = ca[1]
463- let cd = aa()
464- let ce = invoke(X(), k, [m, cb, bZ, bY, toString(bT), toString(bM), cd], nil)
465- if ((ce == ce))
453+ let bW = aL(bz, bA)
454+ let bX = aL(bK, bL)
455+ let bY = if ((bu == q))
456+ then $Tuple2(bW, bX)
457+ else $Tuple2(bX, bW)
458+ let bZ = bY._1
459+ let ca = bY._2
460+ let cb = split(bt, "-")
461+ let cc = cb[0]
462+ let cd = cb[1]
463+ let ce = aa()
464+ let cf = invoke(X(), k, [m, cc, ca, bZ, toString(bU), toString(bN), ce], nil)
465+ if ((cf == cf))
466466 then {
467- let cf = invoke(X(), k, [m, cc, bY, bZ, toString(bU), toString(bN), cd], nil)
468- if ((cf == cf))
467+ let cg = invoke(X(), k, [m, cd, bZ, ca, toString(bV), toString(bO), ce], nil)
468+ if ((cg == cg))
469469 then {
470- let cg = (bP + bT)
471- let ch = if ((bG == u))
472- then (bR + bU)
473- else (bR + bT)
474- $Tuple2((al(bx, cg) ++ al(bI, ch)), unit)
470+ let ch = (bQ + bU)
471+ let ci = if ((bH == u))
472+ then (bS + bV)
473+ else (bS + bU)
474+ $Tuple2((al(by, ch) ++ al(bJ, ci)), unit)
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
482482
483483
484484
485-@Callable(bl)
486-func claimReward (ci,cj,am) = {
487- let bd = valueOrErrorMessage(parseBigInt(am), "claimReward: amount not int")
488- let bk = if (if (if (as(bl.caller, "claimReward: invalid sequencer"))
489- then M(ci, "claimReward: invalid user")
485+@Callable(bm)
486+func claimReward (cj,ck,am) = {
487+ let be = valueOrErrorMessage(parseBigInt(am), "claimReward: amount not int")
488+ let bl = if (if (if (as(bm.caller, "claimReward: invalid sequencer"))
489+ then M(cj, "claimReward: invalid user")
490490 else false)
491- then M(cj, "claimReward: invalid currency")
491+ then M(ck, "claimReward: invalid currency")
492492 else false)
493- then F(bd, u, "claimReward: neg amount")
493+ then F(be, u, "claimReward: neg amount")
494494 else false
495- if ((bk == bk))
495+ if ((bl == bl))
496496 then {
497- let ce = invoke(X(), l, [ad(), ci, cj, am], nil)
498- if ((ce == ce))
497+ let cf = invoke(X(), l, [ad(), cj, ck, am], nil)
498+ if ((cf == cf))
499499 then $Tuple2(nil, unit)
500500 else throw("Strict value is not equal to itself.")
501501 }
504504
505505
506506
507-@Callable(bl)
508-func updateSymbol (ah,ck) = {
509- let bk = if (an(bl.caller))
507+@Callable(bm)
508+func updateSymbol (ah,cl) = {
509+ let bl = if (an(bm.caller))
510510 then M(ah, "updateSymbol: invalid symbol")
511511 else false
512- if ((bk == bk))
513- then $Tuple2(ai(ah, ck), unit)
512+ if ((bl == bl))
513+ then $Tuple2(ai(ah, cl), unit)
514514 else throw("Strict value is not equal to itself.")
515515 }
516516
517517
518518
519-@Callable(bl)
519+@Callable(bm)
520520 func updateFeeRecipient (ac) = {
521- let bk = if (if (an(bl.caller))
521+ let bl = if (if (an(bm.caller))
522522 then ar()
523523 else false)
524524 then M(ac, "updateFeeRecipient: invalid feeRecipient")
525525 else false
526- if ((bk == bk))
526+ if ((bl == bl))
527527 then $Tuple2(ab(ac), unit)
528528 else throw("Strict value is not equal to itself.")
529529 }
530530
531531
532532
533-@Callable(bl)
534-func updateRewardDistributor (cl) = {
535- let bk = if (if (an(bl.caller))
533+@Callable(bm)
534+func updateRewardDistributor (cm) = {
535+ let bl = if (if (an(bm.caller))
536536 then ar()
537537 else false)
538- then M(cl, "updateRewardDistributor: invalid rewardDistributor")
538+ then M(cm, "updateRewardDistributor: invalid rewardDistributor")
539539 else false
540- if ((bk == bk))
541- then $Tuple2(ae(cl), unit)
540+ if ((bl == bl))
541+ then $Tuple2(ae(cm), unit)
542542 else throw("Strict value is not equal to itself.")
543543 }
544544
545545
546546
547-@Callable(bl)
547+@Callable(bm)
548548 func setMultisig (T) = {
549- let bk = if (an(bl.caller))
549+ let bl = if (an(bm.caller))
550550 then A(T, "setMultisig: invalid multisig")
551551 else false
552- if ((bk == bk))
552+ if ((bl == bl))
553553 then $Tuple2(S(addressFromStringValue(T)), unit)
554554 else throw("Strict value is not equal to itself.")
555555 }
556556
557557
558-@Verifier(cm)
559-func cn () = {
558+@Verifier(cn)
559+func co () = {
560560 let D = getString(b)
561561 if ($isInstanceOf(D, "String"))
562562 then {
563- let co = D
564- valueOrElse(getBoolean(addressFromStringValue(co), makeString([c, toString(this), toBase58String(cm.id)], a)), false)
563+ let cp = D
564+ valueOrElse(getBoolean(addressFromStringValue(cp), makeString([c, toString(this), toBase58String(cn.id)], a)), false)
565565 }
566- else sigVerify(cm.bodyBytes, cm.proofs[0], cm.senderPublicKey)
566+ else sigVerify(cn.bodyBytes, cn.proofs[0], cn.senderPublicKey)
567567 }
568568
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "MULTISIG"
77
88 let c = "STATUS"
99
1010 let d = "INIT"
1111
1212 let e = "SEQUENCER"
1313
1414 let f = "ACCOUNT_STORAGE"
1515
1616 let g = "FEE_RECIPIENT"
1717
1818 let h = "SYMBOL"
1919
2020 let i = "ORDER_FILLED_AMOUNT"
2121
2222 let j = "REWARD_DISTRIBUTOR"
2323
2424 let k = "externalTransfer"
2525
2626 let l = "claimReward"
2727
2828 let m = "SPOT"
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 1
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = toBigInt(0)
4545
4646 let v = toBigInt(1)
4747
4848 let w = toBigInt(100000000)
4949
5050 let x = toBigInt(100000)
5151
5252 let y = base58'7YXq4t'
5353
5454 let z = base58'G5Nu92G2p7moXW9qjjN3na7gtq4dWCeVdaSjry'
5555
5656 func A (B,C) = {
5757 let D = addressFromString(B)
5858 if ($isInstanceOf(D, "Address"))
5959 then {
6060 let E = D
6161 true
6262 }
6363 else throw(C)
6464 }
6565
6666
6767 func F (G,H,C) = if ((H > G))
6868 then throw(C)
6969 else true
7070
7171
7272 func I (J,K,C) = if ((J != K))
7373 then throw(C)
7474 else true
7575
7676
7777 func L (J,K,C) = if ((J == K))
7878 then throw(C)
7979 else true
8080
8181
8282 func M (G,C) = if (if ((0 >= size(G)))
8383 then true
8484 else contains(G, a))
8585 then throw(C)
8686 else true
8787
8888
8989 func N (J,K,C) = if ((J != K))
9090 then throw(C)
9191 else true
9292
9393
9494 func O () = {
9595 let D = getBoolean(d)
9696 if ($isInstanceOf(D, "Boolean"))
9797 then {
9898 let E = D
9999 E
100100 }
101101 else false
102102 }
103103
104104
105105 func P (Q) = [BooleanEntry(d, Q)]
106106
107107
108108 func R () = {
109109 let D = getString(b)
110110 if ($isInstanceOf(D, "String"))
111111 then {
112112 let E = D
113113 addressFromStringValue(E)
114114 }
115115 else Address(base58'')
116116 }
117117
118118
119119 func S (T) = [StringEntry(b, toString(T))]
120120
121121
122122 func U () = {
123123 let D = getString(e)
124124 if ($isInstanceOf(D, "String"))
125125 then {
126126 let E = D
127127 addressFromStringValue(E)
128128 }
129129 else Address(base58'')
130130 }
131131
132132
133133 func V (W) = [StringEntry(e, toString(W))]
134134
135135
136136 func X () = {
137137 let D = getString(f)
138138 if ($isInstanceOf(D, "String"))
139139 then {
140140 let E = D
141141 addressFromStringValue(E)
142142 }
143143 else Address(base58'')
144144 }
145145
146146
147147 func Y (Z) = [StringEntry(f, toString(Z))]
148148
149149
150150 func aa () = {
151151 let D = getString(g)
152152 if ($isInstanceOf(D, "String"))
153153 then {
154154 let E = D
155155 E
156156 }
157157 else ""
158158 }
159159
160160
161161 func ab (ac) = [StringEntry(g, ac)]
162162
163163
164164 func ad () = {
165165 let D = getString(j)
166166 if ($isInstanceOf(D, "String"))
167167 then {
168168 let E = D
169169 E
170170 }
171171 else ""
172172 }
173173
174174
175175 func ae (af) = [StringEntry(j, af)]
176176
177177
178178 func ag (ah) = {
179179 let D = getBoolean(makeString([h, ah], a))
180180 if ($isInstanceOf(D, "Boolean"))
181181 then {
182182 let E = D
183183 E
184184 }
185185 else false
186186 }
187187
188188
189189 func ai (ah,G) = [BooleanEntry(makeString([h, ah], a), G)]
190190
191191
192192 func aj (ak) = {
193193 let D = getString(makeString([i, toBase58String(ak)], a))
194194 if ($isInstanceOf(D, "String"))
195195 then {
196196 let E = D
197197 parseBigIntValue(E)
198198 }
199199 else u
200200 }
201201
202202
203203 func al (ak,am) = [StringEntry(makeString([i, toBase58String(ak)], a), toString(am))]
204204
205205
206206 func an (ao) = if ((ao != this))
207207 then throw("_onlyThisContract: revert")
208208 else true
209209
210210
211211 func ap () = if ((R() == Address(base58'')))
212212 then throw("_whenMultisigSet: revert")
213213 else true
214214
215215
216216 func aq () = if (O())
217217 then throw("_whenNotInitialized: revert")
218218 else true
219219
220220
221221 func ar () = if (!(O()))
222222 then throw("_whenInitialized: revert")
223223 else true
224224
225225
226226 func as (at,C) = if ((U() != at))
227227 then throw(C)
228228 else true
229229
230230
231231 func au (av,aw,C) = if (if ((av != n))
232232 then (av != o)
233233 else false)
234234 then throw(C)
235235 else if ((aw != p))
236236 then throw(C)
237237 else true
238238
239239
240240 func ax (ah,C) = if (!(ag(ah)))
241241 then throw(C)
242242 else true
243243
244244
245245 func ay (az,C) = if (if ((az != q))
246246 then (az != r)
247247 else false)
248248 then throw(C)
249249 else true
250250
251251
252252 func aA (aB,aC,aD,aE,C) = {
253253 let aF = if ((aE == o))
254254 then true
255255 else if ((aD == q))
256256 then (aC >= aB)
257257 else if ((aD == r))
258258 then (aB >= aC)
259259 else false
260260 if (!(aF))
261261 then throw(C)
262262 else true
263263 }
264264
265265
266266 func aG (aH,aI,C) = if ((aI == s))
267267 then if ((size(aH) != 64))
268268 then throw(C)
269269 else true
270270 else if ((aI == t))
271271 then if ((size(aH) != 65))
272272 then throw(C)
273273 else true
274274 else throw((C + ": inv alg"))
275275
276276
277277 func aJ (aK,aI,C) = if ((aI == s))
278278 then if ((size(aK) != 32))
279279 then throw(C)
280280 else true
281281 else if ((aI == t))
282282 then if ((size(aK) != 20))
283283 then throw(C)
284284 else true
285285 else throw((C + ": inv alg"))
286286
287287
288288 func aL (aK,aI) = if ((aI == s))
289289 then toString(addressFromPublicKey(aK))
290290 else if ((aI == t))
291291 then ("0x" + toBase16String(aK))
292292 else throw("_convertWeb3IdToAddress: revert")
293293
294294
295295 func aM (ak,aH,aK,aI,C) = {
296296 let aF = if ((aI == s))
297297 then {
298- let aN = keccak256_16Kb((y + toBytes(toBase58String(ak))))
298+ let aN = (y + toBytes(toBase58String(ak)))
299299 sigVerify(aN, aH, aK)
300300 }
301301 else if ((aI == t))
302302 then {
303- let aN = keccak256_16Kb((z + ak))
304- (takeRight(keccak256_16Kb(ecrecover(aN, aH)), 20) == aK)
303+ let aO = keccak256_16Kb((z + ak))
304+ (takeRight(keccak256_16Kb(ecrecover(aO, aH)), 20) == aK)
305305 }
306306 else throw((C + ": inv alg"))
307307 if (!(aF))
308308 then throw(C)
309309 else true
310310 }
311311
312312
313-func aO (am,aP,C) = if ((aP > fraction(am, x, w, DOWN)))
313+func aP (am,aQ,C) = if ((aQ > fraction(am, x, w, DOWN)))
314314 then throw(C)
315315 else true
316316
317317
318-func aQ (aR,C) = {
319- let aS = split(aR, a)
320- let aT = valueOrErrorMessage(parseInt(aS[0]), (C + ": inv type"))
321- let aU = valueOrErrorMessage(parseInt(aS[1]), (C + ": inv version"))
322- let aV = aS[2]
323- let aW = valueOrErrorMessage(parseInt(aS[3]), (C + ": inv side"))
324- let aX = valueOrErrorMessage(parseInt(aS[4]), (C + ": inv ts"))
325- let aY = fromBase58String(aS[5])
326- let aZ = valueOrErrorMessage(parseInt(aS[6]), (C + ": inv alg"))
327- let ba = fromBase58String(aS[7])
328- let bb = if (if ((aT == n))
329- then (aU == p)
318+func aR (aS,C) = {
319+ let aT = split(aS, a)
320+ let aU = valueOrErrorMessage(parseInt(aT[0]), (C + ": inv type"))
321+ let aV = valueOrErrorMessage(parseInt(aT[1]), (C + ": inv version"))
322+ let aW = aT[2]
323+ let aX = valueOrErrorMessage(parseInt(aT[3]), (C + ": inv side"))
324+ let aY = valueOrErrorMessage(parseInt(aT[4]), (C + ": inv ts"))
325+ let aZ = fromBase58String(aT[5])
326+ let ba = valueOrErrorMessage(parseInt(aT[6]), (C + ": inv alg"))
327+ let bb = fromBase58String(aT[7])
328+ let bc = if (if ((aU == n))
329+ then (aV == p)
330330 else false)
331331 then {
332- let bc = valueOrErrorMessage(parseBigInt(aS[8]), (C + ": inv price"))
333- let bd = valueOrErrorMessage(parseBigInt(aS[9]), (C + ": inv amount"))
334- let be = (toBytes(bc) + toBytes(bd))
335- $Tuple4(bc, bd, u, be)
332+ let bd = valueOrErrorMessage(parseBigInt(aT[8]), (C + ": inv price"))
333+ let be = valueOrErrorMessage(parseBigInt(aT[9]), (C + ": inv amount"))
334+ let bf = (toBytes(bd) + toBytes(be))
335+ $Tuple4(bd, be, u, bf)
336336 }
337- else if (if ((aT == o))
338- then (aU == p)
337+ else if (if ((aU == o))
338+ then (aV == p)
339339 else false)
340340 then {
341- let bd = valueOrErrorMessage(parseBigInt(aS[8]), (C + ": inv amount"))
342- let bf = if ((valueOrErrorMessage(parseBigInt(aS[9]), (C + ": inv isBaseAmount")) == u))
341+ let be = valueOrErrorMessage(parseBigInt(aT[8]), (C + ": inv amount"))
342+ let bg = if ((valueOrErrorMessage(parseBigInt(aT[9]), (C + ": inv isBaseAmount")) == u))
343343 then false
344344 else true
345- if (bf)
346- then $Tuple4(u, bd, u, (toBytes(bd) + toBytes(v)))
347- else $Tuple4(u, u, bd, (toBytes(bd) + toBytes(u)))
345+ if (bg)
346+ then $Tuple4(u, be, u, (toBytes(be) + toBytes(v)))
347+ else $Tuple4(u, u, be, (toBytes(be) + toBytes(u)))
348348 }
349349 else throw((C + ": inv type & version"))
350- let bc = bb._1
351- let bg = bb._2
352- let bh = bb._3
353- let be = bb._4
354- let bi = ((((((((toBytes(aT) + toBytes(aU)) + toBytes(size(aV))) + toBytes(aV)) + toBytes(aW)) + toBytes(aX)) + aY) + toBytes(aZ)) + be)
355- let bj = keccak256_32Kb(bi)
356- let bk = if (if (if (if (if (if (if (au(aT, aU, (C + ": inv order type")))
357- then ax(aV, (C + ": inv order symbol"))
350+ let bd = bc._1
351+ let bh = bc._2
352+ let bi = bc._3
353+ let bf = bc._4
354+ let bj = ((((((((toBytes(aU) + toBytes(aV)) + toBytes(size(aW))) + toBytes(aW)) + toBytes(aX)) + toBytes(aY)) + aZ) + toBytes(ba)) + bf)
355+ let bk = keccak256_32Kb(bj)
356+ let bl = if (if (if (if (if (if (if (au(aU, aV, (C + ": inv order type")))
357+ then ax(aW, (C + ": inv order symbol"))
358358 else false)
359- then ay(aW, (C + ": inv order side"))
359+ then ay(aX, (C + ": inv order side"))
360360 else false)
361- then aJ(aY, aZ, (C + ": inv order web3Id"))
361+ then aJ(aZ, ba, (C + ": inv order web3Id"))
362362 else false)
363- then aG(ba, aZ, (C + ": inv sig format"))
363+ then aG(bb, ba, (C + ": inv sig format"))
364364 else false)
365- then F(bc, u, (C + ": neg price"))
365+ then F(bd, u, (C + ": neg price"))
366366 else false)
367- then F(bg, u, (C + ": neg base amount"))
367+ then F(bh, u, (C + ": neg base amount"))
368368 else false)
369- then F(bh, u, (C + ": neg quote amount"))
369+ then F(bi, u, (C + ": neg quote amount"))
370370 else false
371- if ((bk == bk))
372- then $Tuple10(aT, aV, aW, bc, bg, bh, bj, aY, aZ, ba)
371+ if ((bl == bl))
372+ then $Tuple10(aU, aW, aX, bd, bh, bi, bk, aZ, ba, bb)
373373 else throw("Strict value is not equal to itself.")
374374 }
375375
376376
377-@Callable(bl)
377+@Callable(bm)
378378 func init (W,Z,ac) = {
379- let bk = if (if (if (if (if (an(bl.caller))
379+ let bl = if (if (if (if (if (an(bm.caller))
380380 then aq()
381381 else false)
382382 then ap()
383383 else false)
384384 then A(W, "init: invalid sequencer")
385385 else false)
386386 then A(Z, "init: invalid accountStorage")
387387 else false)
388388 then M(ac, "init: invalid feeRecipient")
389389 else false
390- if ((bk == bk))
390+ if ((bl == bl))
391391 then $Tuple2((((P(true) ++ V(addressFromStringValue(W))) ++ Y(addressFromStringValue(Z))) ++ ab(ac)), unit)
392392 else throw("Strict value is not equal to itself.")
393393 }
394394
395395
396396
397-@Callable(bl)
398-func trade (bm,bn,bo,bp) = {
399- let bq = aQ(bm, "trade: invalid maker order")
400- let br = bq._1
401- let bs = bq._2
402- let bt = bq._3
403- let bu = bq._4
404- let bv = bq._5
405- let bw = bq._6
406- let bx = bq._7
407- let by = bq._8
408- let bz = bq._9
409- let bA = bq._10
410- let bB = aQ(bn, "trade: invalid taker order")
411- let bC = bB._1
412- let bD = bB._2
413- let bE = bB._3
414- let bF = bB._4
415- let bG = bB._5
416- let bH = bB._6
417- let bI = bB._7
418- let bJ = bB._8
419- let bK = bB._9
420- let bL = bB._10
421- let bM = valueOrErrorMessage(parseBigInt(bo), "trade: baseFee not int")
422- let bN = valueOrErrorMessage(parseBigInt(bp), "trade: quoteFee not int")
423- let bO = bu
424- let bP = aj(bx)
425- let bQ = (bv - bP)
426- let bR = aj(bI)
427- let bS = if ((bG == u))
428- then fraction((bH - bR), w, bO, DOWN)
429- else (bG - bR)
430- let bT = min([bQ, bS])
431- let bU = fraction(bT, bO, w, DOWN)
432- let bk = if (if (if (if (if (if (if (if (if (as(bl.caller, "trade: invalid sequencer"))
433- then F(bT, u, "trade: neg trade amount")
397+@Callable(bm)
398+func trade (bn,bo,bp,bq) = {
399+ let br = aR(bn, "trade: invalid maker order")
400+ let bs = br._1
401+ let bt = br._2
402+ let bu = br._3
403+ let bv = br._4
404+ let bw = br._5
405+ let bx = br._6
406+ let by = br._7
407+ let bz = br._8
408+ let bA = br._9
409+ let bB = br._10
410+ let bC = aR(bo, "trade: invalid taker order")
411+ let bD = bC._1
412+ let bE = bC._2
413+ let bF = bC._3
414+ let bG = bC._4
415+ let bH = bC._5
416+ let bI = bC._6
417+ let bJ = bC._7
418+ let bK = bC._8
419+ let bL = bC._9
420+ let bM = bC._10
421+ let bN = valueOrErrorMessage(parseBigInt(bp), "trade: baseFee not int")
422+ let bO = valueOrErrorMessage(parseBigInt(bq), "trade: quoteFee not int")
423+ let bP = bv
424+ let bQ = aj(by)
425+ let bR = (bw - bQ)
426+ let bS = aj(bJ)
427+ let bT = if ((bH == u))
428+ then fraction((bI - bS), w, bP, DOWN)
429+ else (bH - bS)
430+ let bU = min([bR, bT])
431+ let bV = fraction(bU, bP, w, DOWN)
432+ let bl = if (if (if (if (if (if (if (if (if (as(bm.caller, "trade: invalid sequencer"))
433+ then F(bU, u, "trade: neg trade amount")
434434 else false)
435- then I(br, n, "trade: maker is not limit")
435+ then I(bs, n, "trade: maker is not limit")
436436 else false)
437- then N(bs, bD, "trade: symbol mismatch")
437+ then N(bt, bE, "trade: symbol mismatch")
438438 else false)
439- then L(bt, bE, "trade: side mismatch")
439+ then L(bu, bF, "trade: side mismatch")
440440 else false)
441- then aM(bx, bA, by, bz, "trade: invalid maker sig")
441+ then aM(by, bB, bz, bA, "trade: invalid maker sig")
442442 else false)
443- then aM(bI, bL, bJ, bK, "trade: invalid taker sig")
443+ then aM(bJ, bM, bK, bL, "trade: invalid taker sig")
444444 else false)
445- then aO(bT, bM, "trade: base fee too much")
445+ then aP(bU, bN, "trade: base fee too much")
446446 else false)
447- then aO(bU, bN, "trade: quote fee too much")
447+ then aP(bV, bO, "trade: quote fee too much")
448448 else false)
449- then aA(bu, bF, bE, bC, "trade: prices mismatch")
449+ then aA(bv, bG, bF, bD, "trade: prices mismatch")
450450 else false
451- if ((bk == bk))
451+ if ((bl == bl))
452452 then {
453- let bV = aL(by, bz)
454- let bW = aL(bJ, bK)
455- let bX = if ((bt == q))
456- then $Tuple2(bV, bW)
457- else $Tuple2(bW, bV)
458- let bY = bX._1
459- let bZ = bX._2
460- let ca = split(bs, "-")
461- let cb = ca[0]
462- let cc = ca[1]
463- let cd = aa()
464- let ce = invoke(X(), k, [m, cb, bZ, bY, toString(bT), toString(bM), cd], nil)
465- if ((ce == ce))
453+ let bW = aL(bz, bA)
454+ let bX = aL(bK, bL)
455+ let bY = if ((bu == q))
456+ then $Tuple2(bW, bX)
457+ else $Tuple2(bX, bW)
458+ let bZ = bY._1
459+ let ca = bY._2
460+ let cb = split(bt, "-")
461+ let cc = cb[0]
462+ let cd = cb[1]
463+ let ce = aa()
464+ let cf = invoke(X(), k, [m, cc, ca, bZ, toString(bU), toString(bN), ce], nil)
465+ if ((cf == cf))
466466 then {
467- let cf = invoke(X(), k, [m, cc, bY, bZ, toString(bU), toString(bN), cd], nil)
468- if ((cf == cf))
467+ let cg = invoke(X(), k, [m, cd, bZ, ca, toString(bV), toString(bO), ce], nil)
468+ if ((cg == cg))
469469 then {
470- let cg = (bP + bT)
471- let ch = if ((bG == u))
472- then (bR + bU)
473- else (bR + bT)
474- $Tuple2((al(bx, cg) ++ al(bI, ch)), unit)
470+ let ch = (bQ + bU)
471+ let ci = if ((bH == u))
472+ then (bS + bV)
473+ else (bS + bU)
474+ $Tuple2((al(by, ch) ++ al(bJ, ci)), unit)
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
478478 else throw("Strict value is not equal to itself.")
479479 }
480480 else throw("Strict value is not equal to itself.")
481481 }
482482
483483
484484
485-@Callable(bl)
486-func claimReward (ci,cj,am) = {
487- let bd = valueOrErrorMessage(parseBigInt(am), "claimReward: amount not int")
488- let bk = if (if (if (as(bl.caller, "claimReward: invalid sequencer"))
489- then M(ci, "claimReward: invalid user")
485+@Callable(bm)
486+func claimReward (cj,ck,am) = {
487+ let be = valueOrErrorMessage(parseBigInt(am), "claimReward: amount not int")
488+ let bl = if (if (if (as(bm.caller, "claimReward: invalid sequencer"))
489+ then M(cj, "claimReward: invalid user")
490490 else false)
491- then M(cj, "claimReward: invalid currency")
491+ then M(ck, "claimReward: invalid currency")
492492 else false)
493- then F(bd, u, "claimReward: neg amount")
493+ then F(be, u, "claimReward: neg amount")
494494 else false
495- if ((bk == bk))
495+ if ((bl == bl))
496496 then {
497- let ce = invoke(X(), l, [ad(), ci, cj, am], nil)
498- if ((ce == ce))
497+ let cf = invoke(X(), l, [ad(), cj, ck, am], nil)
498+ if ((cf == cf))
499499 then $Tuple2(nil, unit)
500500 else throw("Strict value is not equal to itself.")
501501 }
502502 else throw("Strict value is not equal to itself.")
503503 }
504504
505505
506506
507-@Callable(bl)
508-func updateSymbol (ah,ck) = {
509- let bk = if (an(bl.caller))
507+@Callable(bm)
508+func updateSymbol (ah,cl) = {
509+ let bl = if (an(bm.caller))
510510 then M(ah, "updateSymbol: invalid symbol")
511511 else false
512- if ((bk == bk))
513- then $Tuple2(ai(ah, ck), unit)
512+ if ((bl == bl))
513+ then $Tuple2(ai(ah, cl), unit)
514514 else throw("Strict value is not equal to itself.")
515515 }
516516
517517
518518
519-@Callable(bl)
519+@Callable(bm)
520520 func updateFeeRecipient (ac) = {
521- let bk = if (if (an(bl.caller))
521+ let bl = if (if (an(bm.caller))
522522 then ar()
523523 else false)
524524 then M(ac, "updateFeeRecipient: invalid feeRecipient")
525525 else false
526- if ((bk == bk))
526+ if ((bl == bl))
527527 then $Tuple2(ab(ac), unit)
528528 else throw("Strict value is not equal to itself.")
529529 }
530530
531531
532532
533-@Callable(bl)
534-func updateRewardDistributor (cl) = {
535- let bk = if (if (an(bl.caller))
533+@Callable(bm)
534+func updateRewardDistributor (cm) = {
535+ let bl = if (if (an(bm.caller))
536536 then ar()
537537 else false)
538- then M(cl, "updateRewardDistributor: invalid rewardDistributor")
538+ then M(cm, "updateRewardDistributor: invalid rewardDistributor")
539539 else false
540- if ((bk == bk))
541- then $Tuple2(ae(cl), unit)
540+ if ((bl == bl))
541+ then $Tuple2(ae(cm), unit)
542542 else throw("Strict value is not equal to itself.")
543543 }
544544
545545
546546
547-@Callable(bl)
547+@Callable(bm)
548548 func setMultisig (T) = {
549- let bk = if (an(bl.caller))
549+ let bl = if (an(bm.caller))
550550 then A(T, "setMultisig: invalid multisig")
551551 else false
552- if ((bk == bk))
552+ if ((bl == bl))
553553 then $Tuple2(S(addressFromStringValue(T)), unit)
554554 else throw("Strict value is not equal to itself.")
555555 }
556556
557557
558-@Verifier(cm)
559-func cn () = {
558+@Verifier(cn)
559+func co () = {
560560 let D = getString(b)
561561 if ($isInstanceOf(D, "String"))
562562 then {
563- let co = D
564- valueOrElse(getBoolean(addressFromStringValue(co), makeString([c, toString(this), toBase58String(cm.id)], a)), false)
563+ let cp = D
564+ valueOrElse(getBoolean(addressFromStringValue(cp), makeString([c, toString(this), toBase58String(cn.id)], a)), false)
565565 }
566- else sigVerify(cm.bodyBytes, cm.proofs[0], cm.senderPublicKey)
566+ else sigVerify(cn.bodyBytes, cn.proofs[0], cn.senderPublicKey)
567567 }
568568

github/deemru/w8io/169f3d6 
100.54 ms