tx · 3XQTdkT9vwstyExYtVmb4X6CNQ9ENdDo61WLcryyndAC
3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM: -0.01000000 Waves
2023.11.02 12:38 [2825548] smart account 3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM > SELF 0.00000000 Waves
{
"type": 13,
"id": "3XQTdkT9vwstyExYtVmb4X6CNQ9ENdDo61WLcryyndAC",
"fee": 1000000,
"feeAssetId": null,
"timestamp": 1698917936940,
"version": 2,
"chainId": 84,
"sender": "3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM",
"senderPublicKey": "6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM",
"proofs": [
"36gK1aAdkLH2kMrR4nQe97oPVWHVmkbhEc4jCYmtUmX2G7X3vPTdHYvRHiQGrDcgWc4AJEhE18Vn2yxdqCjAKJHa"
],
"script": "base64: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dE51bGxpZmllcktleQEJbnVsbGlmaWVyCQCsAgICAk46CQDYBAEFCW51bGxpZmllcgENZ2V0RGVwb3NpdEtleQEHYWRkcmVzcwkArAICAgJEOgkA2AQBBQdhZGRyZXNzAAxwb29sSW5kZXhLZXkCCVBvb2xJbmRleAASYWxsTWVzc2FnZXNIYXNoS2V5Ag9BbGxNZXNzYWdlc0hhc2gAC29wZXJhdG9yS2V5AgpPcGVyYXRvclBrAQd0YWtlRXh0AwF2BGZyb20CdG8JAMoBAgkAyQECBQF2BQJ0bwUEZnJvbQEMc3BlbmREZXBvc2l0AgdhZGRyZXNzBmFtb3VudAQKY3VycmVudEtleQkBDWdldERlcG9zaXRLZXkBCAUHYWRkcmVzcwVieXRlcwQNY3VycmVudEFtb3VudAQHJG1hdGNoMAkAnwgBBQpjdXJyZW50S2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAluZXdBbW91bnQJAGUCBQ1jdXJyZW50QW1vdW50BQZhbW91bnQDCQBmAgAABQZhbW91bnQJAAIBAhtDYW4ndCBzcGVuZCBuZWdhdGl2ZSBhbW91bnQDCQBmAgAABQluZXdBbW91bnQJAAIBAhJOb3QgZW5vdWdoIGJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAUDbmlsAQ1nZXRPcGVyYXRvclBrAAQHJG1hdGNoMAkAoQgBBQtvcGVyYXRvcktleQMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwBQFhBQdvd25lclBrBAFpAQ1zZXRPcGVyYXRvclBrAQJwawMJAQIhPQIJAMgBAQUCcGsAIAkAAgECKU9wZXJhdG9yIHB1YmxpYyBrZXkgbXVzdCBiZSAzMiBieXRlcyBsb25nCQDMCAIJAQtCaW5hcnlFbnRyeQIFC29wZXJhdG9yS2V5BQJwawUDbmlsAWkBB2RlcG9zaXQABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQJAAIBAiNPbmx5IFdBVkVTIGlzIGFsbG93ZWQgYXQgdGhlIG1vbWVudAQKY3VycmVudEtleQkBDWdldERlcG9zaXRLZXkBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCmN1cnJlbnRLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZAIFDWN1cnJlbnRBbW91bnQIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQFA25pbAFpAQh3aXRoZHJhdwEGYW1vdW50BApjdXJyZW50S2V5CQENZ2V0RGVwb3NpdEtleQEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50AwkAZgIAAAUGYW1vdW50CQACAQIeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFBHVuaXQFA25pbAFpAQh0cmFuc2FjdAECdHgECm9wZXJhdG9yUGsJAQ1nZXRPcGVyYXRvclBrAAQPb3BlcmF0b3JBZGRyZXNzCQCnCAEFCm9wZXJhdG9yUGsECW51bGxpZmllcgkBB3Rha2VFeHQDBQJ0eAAAACAECW91dENvbW1pdAkBB3Rha2VFeHQDBQJ0eAAgAEAEB2Fzc2V0SWQJAQd0YWtlRXh0AwUCdHgAQABgBAVkZWx0YQkBB3Rha2VFeHQDBQJ0eABgAIABBAxuYXRpdmVBbW91bnQJALEJAQkBB3Rha2VFeHQDBQVkZWx0YQAAAAgEDG5hdGl2ZUVuZXJneQkAsQkBCQEHdGFrZUV4dAMFBWRlbHRhAAgAFgQHdHhJbmRleAkAsQkBCQEHdGFrZUV4dAMFBWRlbHRhABYAHAQHX3Bvb2xJZAkBB3Rha2VFeHQDBQVkZWx0YQAcAB8EB3R4UHJvb2YJAQd0YWtlRXh0AwUCdHgAgAEAgAMECXRyZWVQcm9vZgkBB3Rha2VFeHQDBQJ0eACAAwCABQQJcm9vdEFmdGVyCQEHdGFrZUV4dAMFAnR4AIAFAKAFBAZ0eFR5cGUJALEJAQkBB3Rha2VFeHQDBQJ0eACgBQCiBQQLJHQwNjAzOTY0MDEDCQAAAgUGdHhUeXBlAAAED2RlcG9zaXREYXRhU2l6ZQkAZAIAIABABAlkZXBvc2l0UGsJAM0BAgkAzAECBQJ0eAUPZGVwb3NpdERhdGFTaXplAEAEEGRlcG9zaXRTaWduYXR1cmUJAMwBAgUCdHgAQAkAlQoDCQEHdGFrZUV4dAMFAnR4AKIFCQBlAgkAyAEBBQJ0eAUPZGVwb3NpdERhdGFTaXplBQlkZXBvc2l0UGsFEGRlcG9zaXRTaWduYXR1cmUJAJUKAwkBB3Rha2VFeHQDBQJ0eACiBQkAyAEBBQJ0eAUEdW5pdAUEdW5pdAQEbWVtbwgFCyR0MDYwMzk2NDAxAl8xBAlkZXBvc2l0UGsIBQskdDA2MDM5NjQwMQJfMgQQZGVwb3NpdFNpZ25hdHVyZQgFCyR0MDYwMzk2NDAxAl8zBANmZWUJALEJAQkBB3Rha2VFeHQDBQRtZW1vAAAACAQPYWxsTWVzc2FnZXNIYXNoCQELdmFsdWVPckVsc2UCCQChCAEFEmFsbE1lc3NhZ2VzSGFzaEtleQkAnQMBCQC2AgEAAAQIbWVtb0hhc2gJAPUDAQUEbWVtbwQGaGFzaGVzCQDLAQIFD2FsbE1lc3NhZ2VzSGFzaAUIbWVtb0hhc2gEEm5ld0FsbE1lc3NhZ2VzSGFzaAkA9QMBBQZoYXNoZXMECnJvb3RCZWZvcmUJAQt2YWx1ZU9yRWxzZQIJAKEIAQkBCmdldFJvb3RLZXkBBQd0eEluZGV4BQtpbml0aWFsUm9vdAMJAAACBQpyb290QmVmb3JlBQpyb290QmVmb3JlBAlwb29sSW5kZXgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUMcG9vbEluZGV4S2V5AAAECHBvb2xSb290CQELdmFsdWVPckVsc2UCCQChCAEJAQpnZXRSb290S2V5AQUJcG9vbEluZGV4BQtpbml0aWFsUm9vdAQPbnVsbGlmaWVyRXhpc3RzBAckbWF0Y2gwCQChCAEJAQ9nZXROdWxsaWZpZXJLZXkBBQludWxsaWZpZXIDCQABAgUHJG1hdGNoMAIEVW5pdAQBYQUHJG1hdGNoMAcGBA50cmFuc2ZlcklucHV0cwkAywECCQDLAQIJAMsBAgkAywECBQhtZW1vSGFzaAUJbnVsbGlmaWVyBQlvdXRDb21taXQFBWRlbHRhBQhtZW1vSGFzaAQKdHJlZUlucHV0cwkAywECCQDLAQIFCHBvb2xSb290BQlyb290QWZ0ZXIFCW91dENvbW1pdAQHZGF0YU9wcwkAzAgCCQELQmluYXJ5RW50cnkCCQEKZ2V0Um9vdEtleQEFB3R4SW5kZXgFCXJvb3RBZnRlcgkAzAgCCQELQmluYXJ5RW50cnkCCQEPZ2V0TnVsbGlmaWVyS2V5AQUJbnVsbGlmaWVyCQD1AwEJAMsBAgUJb3V0Q29tbWl0BQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgUMcG9vbEluZGV4S2V5CQBkAgUJcG9vbEluZGV4AIABCQDMCAIJAQtCaW5hcnlFbnRyeQIFEmFsbE1lc3NhZ2VzSGFzaEtleQUSbmV3QWxsTWVzc2FnZXNIYXNoBQNuaWwEBXR4T3BzBAckbWF0Y2gwBQZ0eFR5cGUDCQAAAgAABQckbWF0Y2gwBA5kZXBvc2l0UGtWYWx1ZQkBBXZhbHVlAQUJZGVwb3NpdFBrBA5kZXBvc2l0QWRkcmVzcwkApwgBBQ5kZXBvc2l0UGtWYWx1ZQMJAGYCAAAFDG5hdGl2ZUFtb3VudAkAAgECHUNhbid0IGRlcG9zaXQgbmVnYXRpdmUgYW1vdW50AwkBASEBCQDEEwMJAMsBAgUJbnVsbGlmaWVyBQ5kZXBvc2l0UGtWYWx1ZQkBBXZhbHVlAQUQZGVwb3NpdFNpZ25hdHVyZQUOZGVwb3NpdFBrVmFsdWUJAAIBAhlJbnZhbGlkIGRlcG9zaXQgc2lnbmF0dXJlCQEMc3BlbmREZXBvc2l0AgUOZGVwb3NpdEFkZHJlc3MJAGgCBQxuYXRpdmVBbW91bnQFC2Rlbm9taW5hdG9yAwkAAAIAAQUHJG1hdGNoMAMJAQIhPQIFDG5hdGl2ZUFtb3VudAAACQACAQIoTmF0aXZlIGFtb3VudCBtdXN0IGJlIHplcm8gZm9yIHRyYW5zZmVycwUDbmlsAwkAAAIAAgUHJG1hdGNoMAQOd2l0aGRyYXdBbW91bnQJAGgCCQCxCQEJAQd0YWtlRXh0AwUEbWVtbwAIABAFC2Rlbm9taW5hdG9yAwkAZgIFDndpdGhkcmF3QW1vdW50AAAJAAIBAiBXaXRoZHJhdyBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAQEtAQUOd2l0aGRyYXdBbW91bnQFBHVuaXQFA25pbAkAAgECD1Vua25vd24gdHggdHlwZQQGZmVlT3BzAwkAZgIFA2ZlZQAABAh0b3RhbEZlZQkAaAIFA2ZlZQULZGVub21pbmF0b3IJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPb3BlcmF0b3JBZGRyZXNzBQNmZWUFBHVuaXQFA25pbAUDbmlsAwkAZgIFB3R4SW5kZXgFCXBvb2xJbmRleAkAAgECGUludmFsaWQgdHJhbnNhY3Rpb24gaW5kZXgDCQEBIQEJAJYTAwUKdHJhbnNmZXJWawUHdHhQcm9vZgUOdHJhbnNmZXJJbnB1dHMJAAIBAhNUeCBwcm9vZiBpcyBpbnZhbGlkAwkBASEBCQCUEwMFBnRyZWVWawUJdHJlZVByb29mBQp0cmVlSW5wdXRzCQACAQIVVHJlZSBwcm9vZiBpcyBpbnZhbGlkAwUPbnVsbGlmaWVyRXhpc3RzCQACAQIMRG91YmxlIHNwZW5kCQDOCAIJAM4IAgUFdHhPcHMFB2RhdGFPcHMFBmZlZU9wcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAFkBQckbWF0Y2gwCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQdvd25lclBrAwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAFkBQckbWF0Y2gwBAckbWF0Y2gxCAUBZAhmdW5jdGlvbgMJAAACAg1zZXRPcGVyYXRvclBrBQckbWF0Y2gxCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQdvd25lclBrAwkAAAICCHRyYW5zYWN0BQckbWF0Y2gxBApvcGVyYXRvclBrCQENZ2V0T3BlcmF0b3JQawAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCm9wZXJhdG9yUGsJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkHFmmpng==",
"height": 2825548,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 6VnwRiznJbm2wm3FFpwUmQi9fN8Bo25so8dhNKFFaoJo
Next: 9bgCno2uV9NBNaan1MSRAjVzoY9Yidpe6MKPf2XUEbae
Diff:
Old | New | | Differences |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = base58'6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM' |
---|
5 | 5 | | |
---|
6 | | - | let b = addressFromPublicKey(a) |
---|
| 6 | + | let b = 100000000 |
---|
7 | 7 | | |
---|
8 | | - | let c = 100000000 |
---|
| 8 | + | let c = base64'SYrHhkeDrw+dFMD6Yr/Vrvr2pPyDHCWoMO8w9LxFaQABrVkxqK1PRfgZw0t9bDNsxFEJNHhErc9XHTkkU1OiEYYWiz2VdqW6jQewS86Z3lshxW6Fdf1MU0MDPt1NoikSf2YEIBvI+gscAfqmtvJxZbkVA/Lrr7r+HyVUoZGt1QB46Zv9umeZBwmTWiDHaLPPgOVOWQAVYLMCwpEzEzIdF2C8KzI/CsCeCv3raf56RXmhFAWuJCbMtO6My12PxFQDRv98IWP0FGhY/m6sQ/9r58GInq4bSVYWKlGucbXbayaYF35Fp3o6VaRXVWzJ6FesrH8dS+DxeadscnAN4IQEB4J5YcwZvAX/fjE5JEHNC4WrNfiUe+fe6FAQ4ttHlRgKS+PbN1butH1dDkfQkBKC5Om0WI3D45eaRbN6Taxt7ha5xCUwGVh0LQ+Wf/j9bY+un1Cwur9wx+HmB6PPGC2pEFLSQhkZjtvNJTs6e1c0i3FAOhFDSNqEjcqORSer2aUGdJMXhB6YEv/XcumUDyQbem+f0wX2qOgtwVFLtGOq7S65sHzNcHpdJP/htHnhqkQErwmjDG/JTs9oc1mu5jOsGAYAAAAovMt7vHGhKq+EA+6JlSFfVMj7aU/V67EpBI64f73xJKTpnqCOEMhaQMegFHTJ/W5Cp9iTd4i3AqnoTQj+L1UOXKmddpvHhg0WJHFbosaPhv8EY7+cAaHmn1JPO30BBRPqTsN53lfykgE2oF9vGPyU4u0Y3Oh8YG2p7I2Oz+NaKkzrJo2SamjhbLOofkEX14HbjdZLWD5T07/J4qfaYb8Eervvcr/H2IS0GJ7UFTdqJGwWa/1IZZF6RN8rj5y8xg2BoioqwyhpS3I7gROorvBg6hMSFh4eYXROfzISFgWiF5eouqLDFV3P8geZwxSRDnzOaDyCe3Y7EaxhPBjHbtYA/DLJnfWLC6H6AnAA+fLxTZHjtEL/7Mcc+8MYPzH1mAf9gA0UiXxfzFWLSiAzWDBF+Uzpxn2XO25DNREAiZeYIHqYaq6iaMlcNtk5iiSMm+aO6VPqh1tuPoIND/ry5aALN3TlgjnOoDOTGpJIlakKGfGnRHaM/Jd0vbiJ723UUAM=' |
---|
9 | 9 | | |
---|
10 | | - | let d = base64'SYrHhkeDrw+dFMD6Yr/Vrvr2pPyDHCWoMO8w9LxFaQABrVkxqK1PRfgZw0t9bDNsxFEJNHhErc9XHTkkU1OiEYYWiz2VdqW6jQewS86Z3lshxW6Fdf1MU0MDPt1NoikSf2YEIBvI+gscAfqmtvJxZbkVA/Lrr7r+HyVUoZGt1QB46Zv9umeZBwmTWiDHaLPPgOVOWQAVYLMCwpEzEzIdF2C8KzI/CsCeCv3raf56RXmhFAWuJCbMtO6My12PxFQDRv98IWP0FGhY/m6sQ/9r58GInq4bSVYWKlGucbXbayaYF35Fp3o6VaRXVWzJ6FesrH8dS+DxeadscnAN4IQEB4J5YcwZvAX/fjE5JEHNC4WrNfiUe+fe6FAQ4ttHlRgKS+PbN1butH1dDkfQkBKC5Om0WI3D45eaRbN6Taxt7ha5xCUwGVh0LQ+Wf/j9bY+un1Cwur9wx+HmB6PPGC2pEFLSQhkZjtvNJTs6e1c0i3FAOhFDSNqEjcqORSer2aUGdJMXhB6YEv/XcumUDyQbem+f0wX2qOgtwVFLtGOq7S65sHzNcHpdJP/htHnhqkQErwmjDG/JTs9oc1mu5jOsGAYAAAAovMt7vHGhKq+EA+6JlSFfVMj7aU/V67EpBI64f73xJKTpnqCOEMhaQMegFHTJ/W5Cp9iTd4i3AqnoTQj+L1UOXKmddpvHhg0WJHFbosaPhv8EY7+cAaHmn1JPO30BBRPqTsN53lfykgE2oF9vGPyU4u0Y3Oh8YG2p7I2Oz+NaKkzrJo2SamjhbLOofkEX14HbjdZLWD5T07/J4qfaYb8Eervvcr/H2IS0GJ7UFTdqJGwWa/1IZZF6RN8rj5y8xg2BoioqwyhpS3I7gROorvBg6hMSFh4eYXROfzISFgWiF5eouqLDFV3P8geZwxSRDnzOaDyCe3Y7EaxhPBjHbtYA/DLJnfWLC6H6AnAA+fLxTZHjtEL/7Mcc+8MYPzH1mAf9gA0UiXxfzFWLSiAzWDBF+Uzpxn2XO25DNREAiZeYIHqYaq6iaMlcNtk5iiSMm+aO6VPqh1tuPoIND/ry5aALN3TlgjnOoDOTGpJIlakKGfGnRHaM/Jd0vbiJ723UUAM=' |
---|
| 10 | + | let d = base64'qGBPhudr70q2hdpdMHxxPVdk+MJDazUwWbBTl+eJCx/zUEagbSAhrTUc40Jajsexh+ThMSv1ZlKhNgbjvc8GFwfScaiOtcM0fDjNcUeChr2NpgbQV+y4XTvC8sjwVXEareR6FvrGlyEdKcFx+vIagiT77lQ3MK/EfxwlNHsEdAy0sWThEjpDykFPiYWG6T5IJWIGtdhrcPdePYv1GX0wCakWmTMh9NWYby1erGRPnDxWxeFcOBN4DPhkSQKg/DMH1LkY/GlCqIdfdX5Mr+0CMQWnmr8oECA5QgeOJ1ZnSQmO18Jg9rclNx9mhqD3iux0b+o293HkYg4d75ZOBeUqLdx63/eIe/VEuwIkGFBs4sU9WHEsdqpx8QKpByl6ZKgiOcx/wrW0cwTvm34cq5pRVGunz+qu90se2PqAjOjiIRoDvrcCR7qlN0iTvBedZRTlOtbOxAiXOb/nwFrsmf8wFiebpKkjbNkNvTiLGRiea53xusmuNwANOZtfYMT03Kwf1bgRFrkM6TqgEVZq1Vl7wjFhGu3CFrk5popRZ0X8zhJqn5IPLt6g/0ImUPee8frB6VtMYYkmQ7ZCWTwKEPGDIgQAAACMoBtyPY40yogNVj5bF/LbEe5QGKZjwyfMj58AY5ocK00CEsC3Nm1wSKR6xi8NSbjhPZRw0/zChVK9K8ceAO4ijNFpOFuOpTO6aEq0o7spO/E0JTwTStxF0jdD9NCydSTLZi4DdtHHkcph4Sao8AwV4qd50wavb0/hxCXkVWTvErgnIWCgjrfgzQBDfa99z0alUbwyBBd8odwfJU7bERsH/SfhNempxiwEU1uq6TPQ2NxgN3fgXo5i9dHrSaI2ZQd7R9hyJVeMlBaz6uP4gS1XYlt5LkT+TFGT/vidKlcMHQx945x1Iivq728eKgJ4aBI5Ja1nxj7QC7d98xukukQl' |
---|
11 | 11 | | |
---|
12 | | - | let e = base64'qGBPhudr70q2hdpdMHxxPVdk+MJDazUwWbBTl+eJCx/zUEagbSAhrTUc40Jajsexh+ThMSv1ZlKhNgbjvc8GFwfScaiOtcM0fDjNcUeChr2NpgbQV+y4XTvC8sjwVXEareR6FvrGlyEdKcFx+vIagiT77lQ3MK/EfxwlNHsEdAy0sWThEjpDykFPiYWG6T5IJWIGtdhrcPdePYv1GX0wCakWmTMh9NWYby1erGRPnDxWxeFcOBN4DPhkSQKg/DMH1LkY/GlCqIdfdX5Mr+0CMQWnmr8oECA5QgeOJ1ZnSQmO18Jg9rclNx9mhqD3iux0b+o293HkYg4d75ZOBeUqLdx63/eIe/VEuwIkGFBs4sU9WHEsdqpx8QKpByl6ZKgiOcx/wrW0cwTvm34cq5pRVGunz+qu90se2PqAjOjiIRoDvrcCR7qlN0iTvBedZRTlOtbOxAiXOb/nwFrsmf8wFiebpKkjbNkNvTiLGRiea53xusmuNwANOZtfYMT03Kwf1bgRFrkM6TqgEVZq1Vl7wjFhGu3CFrk5popRZ0X8zhJqn5IPLt6g/0ImUPee8frB6VtMYYkmQ7ZCWTwKEPGDIgQAAACMoBtyPY40yogNVj5bF/LbEe5QGKZjwyfMj58AY5ocK00CEsC3Nm1wSKR6xi8NSbjhPZRw0/zChVK9K8ceAO4ijNFpOFuOpTO6aEq0o7spO/E0JTwTStxF0jdD9NCydSTLZi4DdtHHkcph4Sao8AwV4qd50wavb0/hxCXkVWTvErgnIWCgjrfgzQBDfa99z0alUbwyBBd8odwfJU7bERsH/SfhNempxiwEU1uq6TPQ2NxgN3fgXo5i9dHrSaI2ZQd7R9hyJVeMlBaz6uP4gS1XYlt5LkT+TFGT/vidKlcMHQx945x1Iivq728eKgJ4aBI5Ja1nxj7QC7d98xukukQl' |
---|
| 12 | + | let e = toBytes(parseBigIntValue("11469701942666298368112882412133877458305516134926649826543144744382391691533")) |
---|
13 | 13 | | |
---|
14 | | - | let f = toBytes(parseBigIntValue("11469701942666298368112882412133877458305516134926649826543144744382391691533")) |
---|
15 | | - | |
---|
16 | | - | func g (h) = ("R:" + toString(h)) |
---|
| 14 | + | func f (g) = ("R:" + toString(g)) |
---|
17 | 15 | | |
---|
18 | 16 | | |
---|
19 | | - | func i (j) = ("N:" + toBase58String(j)) |
---|
| 17 | + | func h (i) = ("N:" + toBase58String(i)) |
---|
20 | 18 | | |
---|
21 | 19 | | |
---|
22 | | - | func k (l) = ("D:" + toBase58String(l)) |
---|
| 20 | + | func j (k) = ("D:" + toBase58String(k)) |
---|
23 | 21 | | |
---|
24 | 22 | | |
---|
25 | | - | let m = "PoolIndex" |
---|
| 23 | + | let l = "PoolIndex" |
---|
26 | 24 | | |
---|
27 | | - | let n = "AllMessagesHash" |
---|
| 25 | + | let m = "AllMessagesHash" |
---|
| 26 | + | |
---|
| 27 | + | let n = "OperatorPk" |
---|
28 | 28 | | |
---|
29 | 29 | | func o (p,q,r) = drop(take(p, r), q) |
---|
30 | 30 | | |
---|
31 | 31 | | |
---|
32 | | - | func s (l,t) = { |
---|
33 | | - | let u = k(l.bytes) |
---|
| 32 | + | func s (k,t) = { |
---|
| 33 | + | let u = j(k.bytes) |
---|
34 | 34 | | let v = { |
---|
35 | 35 | | let w = getInteger(u) |
---|
36 | 36 | | if ($isInstanceOf(w, "Int")) |
---|
|
49 | 49 | | } |
---|
50 | 50 | | |
---|
51 | 51 | | |
---|
52 | | - | @Callable(z) |
---|
| 52 | + | func z () = { |
---|
| 53 | + | let w = getBinary(n) |
---|
| 54 | + | if ($isInstanceOf(w, "ByteVector")) |
---|
| 55 | + | then { |
---|
| 56 | + | let x = w |
---|
| 57 | + | x |
---|
| 58 | + | } |
---|
| 59 | + | else a |
---|
| 60 | + | } |
---|
| 61 | + | |
---|
| 62 | + | |
---|
| 63 | + | @Callable(A) |
---|
| 64 | + | func setOperatorPk (B) = if ((size(B) != 32)) |
---|
| 65 | + | then throw("Operator public key must be 32 bytes long") |
---|
| 66 | + | else [BinaryEntry(n, B)] |
---|
| 67 | + | |
---|
| 68 | + | |
---|
| 69 | + | |
---|
| 70 | + | @Callable(A) |
---|
53 | 71 | | func deposit () = { |
---|
54 | | - | let A = value(z.payments[0]) |
---|
55 | | - | if (isDefined(A.assetId)) |
---|
| 72 | + | let C = value(A.payments[0]) |
---|
| 73 | + | if (isDefined(C.assetId)) |
---|
56 | 74 | | then throw("Only WAVES is allowed at the moment") |
---|
57 | 75 | | else { |
---|
58 | | - | let u = k(z.caller.bytes) |
---|
| 76 | + | let u = j(A.caller.bytes) |
---|
59 | 77 | | let v = { |
---|
60 | 78 | | let w = getInteger(this, u) |
---|
61 | 79 | | if ($isInstanceOf(w, "Int")) |
---|
|
65 | 83 | | } |
---|
66 | 84 | | else 0 |
---|
67 | 85 | | } |
---|
68 | | - | let y = (v + A.amount) |
---|
| 86 | + | let y = (v + C.amount) |
---|
69 | 87 | | [IntegerEntry(u, y)] |
---|
70 | 88 | | } |
---|
71 | 89 | | } |
---|
72 | 90 | | |
---|
73 | 91 | | |
---|
74 | 92 | | |
---|
75 | | - | @Callable(z) |
---|
| 93 | + | @Callable(A) |
---|
76 | 94 | | func withdraw (t) = { |
---|
77 | | - | let u = k(z.caller.bytes) |
---|
| 95 | + | let u = j(A.caller.bytes) |
---|
78 | 96 | | let v = { |
---|
79 | 97 | | let w = getInteger(this, u) |
---|
80 | 98 | | if ($isInstanceOf(w, "Int")) |
---|
|
89 | 107 | | then throw("Can't withdraw negative amount") |
---|
90 | 108 | | else if ((0 > y)) |
---|
91 | 109 | | then throw("Not enough balance") |
---|
92 | | - | else [IntegerEntry(u, y), ScriptTransfer(z.caller, t, unit)] |
---|
| 110 | + | else [IntegerEntry(u, y), ScriptTransfer(A.caller, t, unit)] |
---|
93 | 111 | | } |
---|
94 | 112 | | |
---|
95 | 113 | | |
---|
96 | 114 | | |
---|
97 | | - | @Callable(z) |
---|
98 | | - | func transact (B) = { |
---|
99 | | - | let j = o(B, 0, 32) |
---|
100 | | - | let C = o(B, 32, 64) |
---|
101 | | - | let D = o(B, 64, 96) |
---|
102 | | - | let E = o(B, 96, 128) |
---|
103 | | - | let F = toInt(o(E, 0, 8)) |
---|
104 | | - | let G = toInt(o(E, 8, 22)) |
---|
105 | | - | let H = toInt(o(E, 22, 28)) |
---|
106 | | - | let I = o(E, 28, 31) |
---|
107 | | - | let J = o(B, 128, 384) |
---|
108 | | - | let K = o(B, 384, 640) |
---|
109 | | - | let L = o(B, 640, 672) |
---|
110 | | - | let M = toInt(o(B, 672, 674)) |
---|
111 | | - | let N = if ((M == 0)) |
---|
| 115 | + | @Callable(A) |
---|
| 116 | + | func transact (D) = { |
---|
| 117 | + | let E = z() |
---|
| 118 | + | let F = addressFromPublicKey(E) |
---|
| 119 | + | let i = o(D, 0, 32) |
---|
| 120 | + | let G = o(D, 32, 64) |
---|
| 121 | + | let H = o(D, 64, 96) |
---|
| 122 | + | let I = o(D, 96, 128) |
---|
| 123 | + | let J = toInt(o(I, 0, 8)) |
---|
| 124 | + | let K = toInt(o(I, 8, 22)) |
---|
| 125 | + | let L = toInt(o(I, 22, 28)) |
---|
| 126 | + | let M = o(I, 28, 31) |
---|
| 127 | + | let N = o(D, 128, 384) |
---|
| 128 | + | let O = o(D, 384, 640) |
---|
| 129 | + | let P = o(D, 640, 672) |
---|
| 130 | + | let Q = toInt(o(D, 672, 674)) |
---|
| 131 | + | let R = if ((Q == 0)) |
---|
112 | 132 | | then { |
---|
113 | | - | let O = (32 + 64) |
---|
114 | | - | let P = dropRight(takeRight(B, O), 64) |
---|
115 | | - | let Q = takeRight(B, 64) |
---|
116 | | - | $Tuple3(o(B, 674, (size(B) - O)), P, Q) |
---|
| 133 | + | let S = (32 + 64) |
---|
| 134 | + | let T = dropRight(takeRight(D, S), 64) |
---|
| 135 | + | let U = takeRight(D, 64) |
---|
| 136 | + | $Tuple3(o(D, 674, (size(D) - S)), T, U) |
---|
117 | 137 | | } |
---|
118 | | - | else $Tuple3(o(B, 674, size(B)), unit, unit) |
---|
119 | | - | let R = N._1 |
---|
120 | | - | let P = N._2 |
---|
121 | | - | let Q = N._3 |
---|
122 | | - | let S = toInt(o(R, 0, 8)) |
---|
123 | | - | let T = valueOrElse(getBinary(n), toBytes(toBigInt(0))) |
---|
124 | | - | let U = keccak256(R) |
---|
125 | | - | let V = (T + U) |
---|
126 | | - | let W = keccak256(V) |
---|
127 | | - | let X = valueOrElse(getBinary(g(H)), f) |
---|
128 | | - | if ((X == X)) |
---|
| 138 | + | else $Tuple3(o(D, 674, size(D)), unit, unit) |
---|
| 139 | + | let V = R._1 |
---|
| 140 | + | let T = R._2 |
---|
| 141 | + | let U = R._3 |
---|
| 142 | + | let W = toInt(o(V, 0, 8)) |
---|
| 143 | + | let X = valueOrElse(getBinary(m), toBytes(toBigInt(0))) |
---|
| 144 | + | let Y = keccak256(V) |
---|
| 145 | + | let Z = (X + Y) |
---|
| 146 | + | let aa = keccak256(Z) |
---|
| 147 | + | let ab = valueOrElse(getBinary(f(L)), e) |
---|
| 148 | + | if ((ab == ab)) |
---|
129 | 149 | | then { |
---|
130 | | - | let Y = valueOrElse(getInteger(m), 0) |
---|
131 | | - | let Z = valueOrElse(getBinary(g(Y)), f) |
---|
132 | | - | let aa = { |
---|
133 | | - | let w = getBinary(i(j)) |
---|
| 150 | + | let ac = valueOrElse(getInteger(l), 0) |
---|
| 151 | + | let ad = valueOrElse(getBinary(f(ac)), e) |
---|
| 152 | + | let ae = { |
---|
| 153 | + | let w = getBinary(h(i)) |
---|
134 | 154 | | if ($isInstanceOf(w, "Unit")) |
---|
135 | 155 | | then { |
---|
136 | 156 | | let x = w |
---|
|
138 | 158 | | } |
---|
139 | 159 | | else true |
---|
140 | 160 | | } |
---|
141 | | - | let ab = ((((U + j) + C) + E) + U) |
---|
142 | | - | let ac = ((Z + L) + C) |
---|
143 | | - | let ad = [BinaryEntry(g(H), L), BinaryEntry(i(j), keccak256((C + E))), IntegerEntry(m, (Y + 128)), BinaryEntry(n, W)] |
---|
144 | | - | let ae = { |
---|
145 | | - | let w = M |
---|
| 161 | + | let af = ((((Y + i) + G) + I) + Y) |
---|
| 162 | + | let ag = ((ad + P) + G) |
---|
| 163 | + | let ah = [BinaryEntry(f(L), P), BinaryEntry(h(i), keccak256((G + I))), IntegerEntry(l, (ac + 128)), BinaryEntry(m, aa)] |
---|
| 164 | + | let ai = { |
---|
| 165 | + | let w = Q |
---|
146 | 166 | | if ((0 == w)) |
---|
147 | 167 | | then { |
---|
148 | | - | let af = value(P) |
---|
149 | | - | let ag = addressFromPublicKey(af) |
---|
150 | | - | if ((0 > F)) |
---|
| 168 | + | let aj = value(T) |
---|
| 169 | + | let ak = addressFromPublicKey(aj) |
---|
| 170 | + | if ((0 > J)) |
---|
151 | 171 | | then throw("Can't deposit negative amount") |
---|
152 | | - | else if (!(sigVerify_8Kb((j + af), value(Q), af))) |
---|
| 172 | + | else if (!(sigVerify_8Kb((i + aj), value(U), aj))) |
---|
153 | 173 | | then throw("Invalid deposit signature") |
---|
154 | | - | else s(ag, (F * c)) |
---|
| 174 | + | else s(ak, (J * b)) |
---|
155 | 175 | | } |
---|
156 | 176 | | else if ((1 == w)) |
---|
157 | | - | then if ((F != 0)) |
---|
| 177 | + | then if ((J != 0)) |
---|
158 | 178 | | then throw("Native amount must be zero for transfers") |
---|
159 | 179 | | else nil |
---|
160 | 180 | | else if ((2 == w)) |
---|
161 | 181 | | then { |
---|
162 | | - | let ah = (toInt(o(R, 8, 16)) * c) |
---|
163 | | - | if ((ah > 0)) |
---|
| 182 | + | let al = (toInt(o(V, 8, 16)) * b) |
---|
| 183 | + | if ((al > 0)) |
---|
164 | 184 | | then throw("Withdraw amount must be positive") |
---|
165 | | - | else [ScriptTransfer(z.caller, -(ah), unit)] |
---|
| 185 | + | else [ScriptTransfer(A.caller, -(al), unit)] |
---|
166 | 186 | | } |
---|
167 | 187 | | else throw("Unknown tx type") |
---|
168 | 188 | | } |
---|
169 | | - | let ai = if ((S > 0)) |
---|
| 189 | + | let am = if ((W > 0)) |
---|
170 | 190 | | then { |
---|
171 | | - | let aj = (S * c) |
---|
172 | | - | [ScriptTransfer(b, S, unit)] |
---|
| 191 | + | let an = (W * b) |
---|
| 192 | + | [ScriptTransfer(F, W, unit)] |
---|
173 | 193 | | } |
---|
174 | 194 | | else nil |
---|
175 | | - | if ((H > Y)) |
---|
176 | | - | then throw("Transaction index is too big") |
---|
177 | | - | else if (!(bn256Groth16Verify_5inputs(d, J, ab))) |
---|
| 195 | + | if ((L > ac)) |
---|
| 196 | + | then throw("Invalid transaction index") |
---|
| 197 | + | else if (!(bn256Groth16Verify_5inputs(c, N, af))) |
---|
178 | 198 | | then throw("Tx proof is invalid") |
---|
179 | | - | else if (!(bn256Groth16Verify_3inputs(e, K, ac))) |
---|
| 199 | + | else if (!(bn256Groth16Verify_3inputs(d, O, ag))) |
---|
180 | 200 | | then throw("Tree proof is invalid") |
---|
181 | | - | else if (aa) |
---|
| 201 | + | else if (ae) |
---|
182 | 202 | | then throw("Double spend") |
---|
183 | | - | else ((ae ++ ad) ++ ai) |
---|
| 203 | + | else ((ai ++ ah) ++ am) |
---|
184 | 204 | | } |
---|
185 | 205 | | else throw("Strict value is not equal to itself.") |
---|
186 | 206 | | } |
---|
187 | 207 | | |
---|
188 | 208 | | |
---|
189 | | - | @Verifier(B) |
---|
190 | | - | func ak () = { |
---|
191 | | - | let w = B |
---|
| 209 | + | @Verifier(D) |
---|
| 210 | + | func ao () = { |
---|
| 211 | + | let w = D |
---|
192 | 212 | | if ($isInstanceOf(w, "SetScriptTransaction")) |
---|
193 | 213 | | then { |
---|
194 | | - | let al = w |
---|
195 | | - | sigVerify(B.bodyBytes, B.proofs[0], a) |
---|
| 214 | + | let ap = w |
---|
| 215 | + | sigVerify(D.bodyBytes, D.proofs[0], a) |
---|
196 | 216 | | } |
---|
197 | | - | else false |
---|
| 217 | + | else if ($isInstanceOf(w, "InvokeScriptTransaction")) |
---|
| 218 | + | then { |
---|
| 219 | + | let ap = w |
---|
| 220 | + | let aq = ap.function |
---|
| 221 | + | if (("setOperatorPk" == aq)) |
---|
| 222 | + | then sigVerify(D.bodyBytes, D.proofs[0], a) |
---|
| 223 | + | else if (("transact" == aq)) |
---|
| 224 | + | then { |
---|
| 225 | + | let E = z() |
---|
| 226 | + | sigVerify(D.bodyBytes, D.proofs[0], E) |
---|
| 227 | + | } |
---|
| 228 | + | else sigVerify(D.bodyBytes, D.proofs[0], D.senderPublicKey) |
---|
| 229 | + | } |
---|
| 230 | + | else false |
---|
198 | 231 | | } |
---|
199 | 232 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = base58'6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM' |
---|
5 | 5 | | |
---|
6 | | - | let b = addressFromPublicKey(a) |
---|
| 6 | + | let b = 100000000 |
---|
7 | 7 | | |
---|
8 | | - | let c = 100000000 |
---|
| 8 | + | let c = base64'SYrHhkeDrw+dFMD6Yr/Vrvr2pPyDHCWoMO8w9LxFaQABrVkxqK1PRfgZw0t9bDNsxFEJNHhErc9XHTkkU1OiEYYWiz2VdqW6jQewS86Z3lshxW6Fdf1MU0MDPt1NoikSf2YEIBvI+gscAfqmtvJxZbkVA/Lrr7r+HyVUoZGt1QB46Zv9umeZBwmTWiDHaLPPgOVOWQAVYLMCwpEzEzIdF2C8KzI/CsCeCv3raf56RXmhFAWuJCbMtO6My12PxFQDRv98IWP0FGhY/m6sQ/9r58GInq4bSVYWKlGucbXbayaYF35Fp3o6VaRXVWzJ6FesrH8dS+DxeadscnAN4IQEB4J5YcwZvAX/fjE5JEHNC4WrNfiUe+fe6FAQ4ttHlRgKS+PbN1butH1dDkfQkBKC5Om0WI3D45eaRbN6Taxt7ha5xCUwGVh0LQ+Wf/j9bY+un1Cwur9wx+HmB6PPGC2pEFLSQhkZjtvNJTs6e1c0i3FAOhFDSNqEjcqORSer2aUGdJMXhB6YEv/XcumUDyQbem+f0wX2qOgtwVFLtGOq7S65sHzNcHpdJP/htHnhqkQErwmjDG/JTs9oc1mu5jOsGAYAAAAovMt7vHGhKq+EA+6JlSFfVMj7aU/V67EpBI64f73xJKTpnqCOEMhaQMegFHTJ/W5Cp9iTd4i3AqnoTQj+L1UOXKmddpvHhg0WJHFbosaPhv8EY7+cAaHmn1JPO30BBRPqTsN53lfykgE2oF9vGPyU4u0Y3Oh8YG2p7I2Oz+NaKkzrJo2SamjhbLOofkEX14HbjdZLWD5T07/J4qfaYb8Eervvcr/H2IS0GJ7UFTdqJGwWa/1IZZF6RN8rj5y8xg2BoioqwyhpS3I7gROorvBg6hMSFh4eYXROfzISFgWiF5eouqLDFV3P8geZwxSRDnzOaDyCe3Y7EaxhPBjHbtYA/DLJnfWLC6H6AnAA+fLxTZHjtEL/7Mcc+8MYPzH1mAf9gA0UiXxfzFWLSiAzWDBF+Uzpxn2XO25DNREAiZeYIHqYaq6iaMlcNtk5iiSMm+aO6VPqh1tuPoIND/ry5aALN3TlgjnOoDOTGpJIlakKGfGnRHaM/Jd0vbiJ723UUAM=' |
---|
9 | 9 | | |
---|
10 | | - | let d = base64'SYrHhkeDrw+dFMD6Yr/Vrvr2pPyDHCWoMO8w9LxFaQABrVkxqK1PRfgZw0t9bDNsxFEJNHhErc9XHTkkU1OiEYYWiz2VdqW6jQewS86Z3lshxW6Fdf1MU0MDPt1NoikSf2YEIBvI+gscAfqmtvJxZbkVA/Lrr7r+HyVUoZGt1QB46Zv9umeZBwmTWiDHaLPPgOVOWQAVYLMCwpEzEzIdF2C8KzI/CsCeCv3raf56RXmhFAWuJCbMtO6My12PxFQDRv98IWP0FGhY/m6sQ/9r58GInq4bSVYWKlGucbXbayaYF35Fp3o6VaRXVWzJ6FesrH8dS+DxeadscnAN4IQEB4J5YcwZvAX/fjE5JEHNC4WrNfiUe+fe6FAQ4ttHlRgKS+PbN1butH1dDkfQkBKC5Om0WI3D45eaRbN6Taxt7ha5xCUwGVh0LQ+Wf/j9bY+un1Cwur9wx+HmB6PPGC2pEFLSQhkZjtvNJTs6e1c0i3FAOhFDSNqEjcqORSer2aUGdJMXhB6YEv/XcumUDyQbem+f0wX2qOgtwVFLtGOq7S65sHzNcHpdJP/htHnhqkQErwmjDG/JTs9oc1mu5jOsGAYAAAAovMt7vHGhKq+EA+6JlSFfVMj7aU/V67EpBI64f73xJKTpnqCOEMhaQMegFHTJ/W5Cp9iTd4i3AqnoTQj+L1UOXKmddpvHhg0WJHFbosaPhv8EY7+cAaHmn1JPO30BBRPqTsN53lfykgE2oF9vGPyU4u0Y3Oh8YG2p7I2Oz+NaKkzrJo2SamjhbLOofkEX14HbjdZLWD5T07/J4qfaYb8Eervvcr/H2IS0GJ7UFTdqJGwWa/1IZZF6RN8rj5y8xg2BoioqwyhpS3I7gROorvBg6hMSFh4eYXROfzISFgWiF5eouqLDFV3P8geZwxSRDnzOaDyCe3Y7EaxhPBjHbtYA/DLJnfWLC6H6AnAA+fLxTZHjtEL/7Mcc+8MYPzH1mAf9gA0UiXxfzFWLSiAzWDBF+Uzpxn2XO25DNREAiZeYIHqYaq6iaMlcNtk5iiSMm+aO6VPqh1tuPoIND/ry5aALN3TlgjnOoDOTGpJIlakKGfGnRHaM/Jd0vbiJ723UUAM=' |
---|
| 10 | + | let d = base64'qGBPhudr70q2hdpdMHxxPVdk+MJDazUwWbBTl+eJCx/zUEagbSAhrTUc40Jajsexh+ThMSv1ZlKhNgbjvc8GFwfScaiOtcM0fDjNcUeChr2NpgbQV+y4XTvC8sjwVXEareR6FvrGlyEdKcFx+vIagiT77lQ3MK/EfxwlNHsEdAy0sWThEjpDykFPiYWG6T5IJWIGtdhrcPdePYv1GX0wCakWmTMh9NWYby1erGRPnDxWxeFcOBN4DPhkSQKg/DMH1LkY/GlCqIdfdX5Mr+0CMQWnmr8oECA5QgeOJ1ZnSQmO18Jg9rclNx9mhqD3iux0b+o293HkYg4d75ZOBeUqLdx63/eIe/VEuwIkGFBs4sU9WHEsdqpx8QKpByl6ZKgiOcx/wrW0cwTvm34cq5pRVGunz+qu90se2PqAjOjiIRoDvrcCR7qlN0iTvBedZRTlOtbOxAiXOb/nwFrsmf8wFiebpKkjbNkNvTiLGRiea53xusmuNwANOZtfYMT03Kwf1bgRFrkM6TqgEVZq1Vl7wjFhGu3CFrk5popRZ0X8zhJqn5IPLt6g/0ImUPee8frB6VtMYYkmQ7ZCWTwKEPGDIgQAAACMoBtyPY40yogNVj5bF/LbEe5QGKZjwyfMj58AY5ocK00CEsC3Nm1wSKR6xi8NSbjhPZRw0/zChVK9K8ceAO4ijNFpOFuOpTO6aEq0o7spO/E0JTwTStxF0jdD9NCydSTLZi4DdtHHkcph4Sao8AwV4qd50wavb0/hxCXkVWTvErgnIWCgjrfgzQBDfa99z0alUbwyBBd8odwfJU7bERsH/SfhNempxiwEU1uq6TPQ2NxgN3fgXo5i9dHrSaI2ZQd7R9hyJVeMlBaz6uP4gS1XYlt5LkT+TFGT/vidKlcMHQx945x1Iivq728eKgJ4aBI5Ja1nxj7QC7d98xukukQl' |
---|
11 | 11 | | |
---|
12 | | - | let e = base64'qGBPhudr70q2hdpdMHxxPVdk+MJDazUwWbBTl+eJCx/zUEagbSAhrTUc40Jajsexh+ThMSv1ZlKhNgbjvc8GFwfScaiOtcM0fDjNcUeChr2NpgbQV+y4XTvC8sjwVXEareR6FvrGlyEdKcFx+vIagiT77lQ3MK/EfxwlNHsEdAy0sWThEjpDykFPiYWG6T5IJWIGtdhrcPdePYv1GX0wCakWmTMh9NWYby1erGRPnDxWxeFcOBN4DPhkSQKg/DMH1LkY/GlCqIdfdX5Mr+0CMQWnmr8oECA5QgeOJ1ZnSQmO18Jg9rclNx9mhqD3iux0b+o293HkYg4d75ZOBeUqLdx63/eIe/VEuwIkGFBs4sU9WHEsdqpx8QKpByl6ZKgiOcx/wrW0cwTvm34cq5pRVGunz+qu90se2PqAjOjiIRoDvrcCR7qlN0iTvBedZRTlOtbOxAiXOb/nwFrsmf8wFiebpKkjbNkNvTiLGRiea53xusmuNwANOZtfYMT03Kwf1bgRFrkM6TqgEVZq1Vl7wjFhGu3CFrk5popRZ0X8zhJqn5IPLt6g/0ImUPee8frB6VtMYYkmQ7ZCWTwKEPGDIgQAAACMoBtyPY40yogNVj5bF/LbEe5QGKZjwyfMj58AY5ocK00CEsC3Nm1wSKR6xi8NSbjhPZRw0/zChVK9K8ceAO4ijNFpOFuOpTO6aEq0o7spO/E0JTwTStxF0jdD9NCydSTLZi4DdtHHkcph4Sao8AwV4qd50wavb0/hxCXkVWTvErgnIWCgjrfgzQBDfa99z0alUbwyBBd8odwfJU7bERsH/SfhNempxiwEU1uq6TPQ2NxgN3fgXo5i9dHrSaI2ZQd7R9hyJVeMlBaz6uP4gS1XYlt5LkT+TFGT/vidKlcMHQx945x1Iivq728eKgJ4aBI5Ja1nxj7QC7d98xukukQl' |
---|
| 12 | + | let e = toBytes(parseBigIntValue("11469701942666298368112882412133877458305516134926649826543144744382391691533")) |
---|
13 | 13 | | |
---|
14 | | - | let f = toBytes(parseBigIntValue("11469701942666298368112882412133877458305516134926649826543144744382391691533")) |
---|
15 | | - | |
---|
16 | | - | func g (h) = ("R:" + toString(h)) |
---|
| 14 | + | func f (g) = ("R:" + toString(g)) |
---|
17 | 15 | | |
---|
18 | 16 | | |
---|
19 | | - | func i (j) = ("N:" + toBase58String(j)) |
---|
| 17 | + | func h (i) = ("N:" + toBase58String(i)) |
---|
20 | 18 | | |
---|
21 | 19 | | |
---|
22 | | - | func k (l) = ("D:" + toBase58String(l)) |
---|
| 20 | + | func j (k) = ("D:" + toBase58String(k)) |
---|
23 | 21 | | |
---|
24 | 22 | | |
---|
25 | | - | let m = "PoolIndex" |
---|
| 23 | + | let l = "PoolIndex" |
---|
26 | 24 | | |
---|
27 | | - | let n = "AllMessagesHash" |
---|
| 25 | + | let m = "AllMessagesHash" |
---|
| 26 | + | |
---|
| 27 | + | let n = "OperatorPk" |
---|
28 | 28 | | |
---|
29 | 29 | | func o (p,q,r) = drop(take(p, r), q) |
---|
30 | 30 | | |
---|
31 | 31 | | |
---|
32 | | - | func s (l,t) = { |
---|
33 | | - | let u = k(l.bytes) |
---|
| 32 | + | func s (k,t) = { |
---|
| 33 | + | let u = j(k.bytes) |
---|
34 | 34 | | let v = { |
---|
35 | 35 | | let w = getInteger(u) |
---|
36 | 36 | | if ($isInstanceOf(w, "Int")) |
---|
37 | 37 | | then { |
---|
38 | 38 | | let x = w |
---|
39 | 39 | | x |
---|
40 | 40 | | } |
---|
41 | 41 | | else 0 |
---|
42 | 42 | | } |
---|
43 | 43 | | let y = (v - t) |
---|
44 | 44 | | if ((0 > t)) |
---|
45 | 45 | | then throw("Can't spend negative amount") |
---|
46 | 46 | | else if ((0 > y)) |
---|
47 | 47 | | then throw("Not enough balance") |
---|
48 | 48 | | else [IntegerEntry(u, y)] |
---|
49 | 49 | | } |
---|
50 | 50 | | |
---|
51 | 51 | | |
---|
52 | | - | @Callable(z) |
---|
| 52 | + | func z () = { |
---|
| 53 | + | let w = getBinary(n) |
---|
| 54 | + | if ($isInstanceOf(w, "ByteVector")) |
---|
| 55 | + | then { |
---|
| 56 | + | let x = w |
---|
| 57 | + | x |
---|
| 58 | + | } |
---|
| 59 | + | else a |
---|
| 60 | + | } |
---|
| 61 | + | |
---|
| 62 | + | |
---|
| 63 | + | @Callable(A) |
---|
| 64 | + | func setOperatorPk (B) = if ((size(B) != 32)) |
---|
| 65 | + | then throw("Operator public key must be 32 bytes long") |
---|
| 66 | + | else [BinaryEntry(n, B)] |
---|
| 67 | + | |
---|
| 68 | + | |
---|
| 69 | + | |
---|
| 70 | + | @Callable(A) |
---|
53 | 71 | | func deposit () = { |
---|
54 | | - | let A = value(z.payments[0]) |
---|
55 | | - | if (isDefined(A.assetId)) |
---|
| 72 | + | let C = value(A.payments[0]) |
---|
| 73 | + | if (isDefined(C.assetId)) |
---|
56 | 74 | | then throw("Only WAVES is allowed at the moment") |
---|
57 | 75 | | else { |
---|
58 | | - | let u = k(z.caller.bytes) |
---|
| 76 | + | let u = j(A.caller.bytes) |
---|
59 | 77 | | let v = { |
---|
60 | 78 | | let w = getInteger(this, u) |
---|
61 | 79 | | if ($isInstanceOf(w, "Int")) |
---|
62 | 80 | | then { |
---|
63 | 81 | | let x = w |
---|
64 | 82 | | x |
---|
65 | 83 | | } |
---|
66 | 84 | | else 0 |
---|
67 | 85 | | } |
---|
68 | | - | let y = (v + A.amount) |
---|
| 86 | + | let y = (v + C.amount) |
---|
69 | 87 | | [IntegerEntry(u, y)] |
---|
70 | 88 | | } |
---|
71 | 89 | | } |
---|
72 | 90 | | |
---|
73 | 91 | | |
---|
74 | 92 | | |
---|
75 | | - | @Callable(z) |
---|
| 93 | + | @Callable(A) |
---|
76 | 94 | | func withdraw (t) = { |
---|
77 | | - | let u = k(z.caller.bytes) |
---|
| 95 | + | let u = j(A.caller.bytes) |
---|
78 | 96 | | let v = { |
---|
79 | 97 | | let w = getInteger(this, u) |
---|
80 | 98 | | if ($isInstanceOf(w, "Int")) |
---|
81 | 99 | | then { |
---|
82 | 100 | | let x = w |
---|
83 | 101 | | x |
---|
84 | 102 | | } |
---|
85 | 103 | | else 0 |
---|
86 | 104 | | } |
---|
87 | 105 | | let y = (v - t) |
---|
88 | 106 | | if ((0 > t)) |
---|
89 | 107 | | then throw("Can't withdraw negative amount") |
---|
90 | 108 | | else if ((0 > y)) |
---|
91 | 109 | | then throw("Not enough balance") |
---|
92 | | - | else [IntegerEntry(u, y), ScriptTransfer(z.caller, t, unit)] |
---|
| 110 | + | else [IntegerEntry(u, y), ScriptTransfer(A.caller, t, unit)] |
---|
93 | 111 | | } |
---|
94 | 112 | | |
---|
95 | 113 | | |
---|
96 | 114 | | |
---|
97 | | - | @Callable(z) |
---|
98 | | - | func transact (B) = { |
---|
99 | | - | let j = o(B, 0, 32) |
---|
100 | | - | let C = o(B, 32, 64) |
---|
101 | | - | let D = o(B, 64, 96) |
---|
102 | | - | let E = o(B, 96, 128) |
---|
103 | | - | let F = toInt(o(E, 0, 8)) |
---|
104 | | - | let G = toInt(o(E, 8, 22)) |
---|
105 | | - | let H = toInt(o(E, 22, 28)) |
---|
106 | | - | let I = o(E, 28, 31) |
---|
107 | | - | let J = o(B, 128, 384) |
---|
108 | | - | let K = o(B, 384, 640) |
---|
109 | | - | let L = o(B, 640, 672) |
---|
110 | | - | let M = toInt(o(B, 672, 674)) |
---|
111 | | - | let N = if ((M == 0)) |
---|
| 115 | + | @Callable(A) |
---|
| 116 | + | func transact (D) = { |
---|
| 117 | + | let E = z() |
---|
| 118 | + | let F = addressFromPublicKey(E) |
---|
| 119 | + | let i = o(D, 0, 32) |
---|
| 120 | + | let G = o(D, 32, 64) |
---|
| 121 | + | let H = o(D, 64, 96) |
---|
| 122 | + | let I = o(D, 96, 128) |
---|
| 123 | + | let J = toInt(o(I, 0, 8)) |
---|
| 124 | + | let K = toInt(o(I, 8, 22)) |
---|
| 125 | + | let L = toInt(o(I, 22, 28)) |
---|
| 126 | + | let M = o(I, 28, 31) |
---|
| 127 | + | let N = o(D, 128, 384) |
---|
| 128 | + | let O = o(D, 384, 640) |
---|
| 129 | + | let P = o(D, 640, 672) |
---|
| 130 | + | let Q = toInt(o(D, 672, 674)) |
---|
| 131 | + | let R = if ((Q == 0)) |
---|
112 | 132 | | then { |
---|
113 | | - | let O = (32 + 64) |
---|
114 | | - | let P = dropRight(takeRight(B, O), 64) |
---|
115 | | - | let Q = takeRight(B, 64) |
---|
116 | | - | $Tuple3(o(B, 674, (size(B) - O)), P, Q) |
---|
| 133 | + | let S = (32 + 64) |
---|
| 134 | + | let T = dropRight(takeRight(D, S), 64) |
---|
| 135 | + | let U = takeRight(D, 64) |
---|
| 136 | + | $Tuple3(o(D, 674, (size(D) - S)), T, U) |
---|
117 | 137 | | } |
---|
118 | | - | else $Tuple3(o(B, 674, size(B)), unit, unit) |
---|
119 | | - | let R = N._1 |
---|
120 | | - | let P = N._2 |
---|
121 | | - | let Q = N._3 |
---|
122 | | - | let S = toInt(o(R, 0, 8)) |
---|
123 | | - | let T = valueOrElse(getBinary(n), toBytes(toBigInt(0))) |
---|
124 | | - | let U = keccak256(R) |
---|
125 | | - | let V = (T + U) |
---|
126 | | - | let W = keccak256(V) |
---|
127 | | - | let X = valueOrElse(getBinary(g(H)), f) |
---|
128 | | - | if ((X == X)) |
---|
| 138 | + | else $Tuple3(o(D, 674, size(D)), unit, unit) |
---|
| 139 | + | let V = R._1 |
---|
| 140 | + | let T = R._2 |
---|
| 141 | + | let U = R._3 |
---|
| 142 | + | let W = toInt(o(V, 0, 8)) |
---|
| 143 | + | let X = valueOrElse(getBinary(m), toBytes(toBigInt(0))) |
---|
| 144 | + | let Y = keccak256(V) |
---|
| 145 | + | let Z = (X + Y) |
---|
| 146 | + | let aa = keccak256(Z) |
---|
| 147 | + | let ab = valueOrElse(getBinary(f(L)), e) |
---|
| 148 | + | if ((ab == ab)) |
---|
129 | 149 | | then { |
---|
130 | | - | let Y = valueOrElse(getInteger(m), 0) |
---|
131 | | - | let Z = valueOrElse(getBinary(g(Y)), f) |
---|
132 | | - | let aa = { |
---|
133 | | - | let w = getBinary(i(j)) |
---|
| 150 | + | let ac = valueOrElse(getInteger(l), 0) |
---|
| 151 | + | let ad = valueOrElse(getBinary(f(ac)), e) |
---|
| 152 | + | let ae = { |
---|
| 153 | + | let w = getBinary(h(i)) |
---|
134 | 154 | | if ($isInstanceOf(w, "Unit")) |
---|
135 | 155 | | then { |
---|
136 | 156 | | let x = w |
---|
137 | 157 | | false |
---|
138 | 158 | | } |
---|
139 | 159 | | else true |
---|
140 | 160 | | } |
---|
141 | | - | let ab = ((((U + j) + C) + E) + U) |
---|
142 | | - | let ac = ((Z + L) + C) |
---|
143 | | - | let ad = [BinaryEntry(g(H), L), BinaryEntry(i(j), keccak256((C + E))), IntegerEntry(m, (Y + 128)), BinaryEntry(n, W)] |
---|
144 | | - | let ae = { |
---|
145 | | - | let w = M |
---|
| 161 | + | let af = ((((Y + i) + G) + I) + Y) |
---|
| 162 | + | let ag = ((ad + P) + G) |
---|
| 163 | + | let ah = [BinaryEntry(f(L), P), BinaryEntry(h(i), keccak256((G + I))), IntegerEntry(l, (ac + 128)), BinaryEntry(m, aa)] |
---|
| 164 | + | let ai = { |
---|
| 165 | + | let w = Q |
---|
146 | 166 | | if ((0 == w)) |
---|
147 | 167 | | then { |
---|
148 | | - | let af = value(P) |
---|
149 | | - | let ag = addressFromPublicKey(af) |
---|
150 | | - | if ((0 > F)) |
---|
| 168 | + | let aj = value(T) |
---|
| 169 | + | let ak = addressFromPublicKey(aj) |
---|
| 170 | + | if ((0 > J)) |
---|
151 | 171 | | then throw("Can't deposit negative amount") |
---|
152 | | - | else if (!(sigVerify_8Kb((j + af), value(Q), af))) |
---|
| 172 | + | else if (!(sigVerify_8Kb((i + aj), value(U), aj))) |
---|
153 | 173 | | then throw("Invalid deposit signature") |
---|
154 | | - | else s(ag, (F * c)) |
---|
| 174 | + | else s(ak, (J * b)) |
---|
155 | 175 | | } |
---|
156 | 176 | | else if ((1 == w)) |
---|
157 | | - | then if ((F != 0)) |
---|
| 177 | + | then if ((J != 0)) |
---|
158 | 178 | | then throw("Native amount must be zero for transfers") |
---|
159 | 179 | | else nil |
---|
160 | 180 | | else if ((2 == w)) |
---|
161 | 181 | | then { |
---|
162 | | - | let ah = (toInt(o(R, 8, 16)) * c) |
---|
163 | | - | if ((ah > 0)) |
---|
| 182 | + | let al = (toInt(o(V, 8, 16)) * b) |
---|
| 183 | + | if ((al > 0)) |
---|
164 | 184 | | then throw("Withdraw amount must be positive") |
---|
165 | | - | else [ScriptTransfer(z.caller, -(ah), unit)] |
---|
| 185 | + | else [ScriptTransfer(A.caller, -(al), unit)] |
---|
166 | 186 | | } |
---|
167 | 187 | | else throw("Unknown tx type") |
---|
168 | 188 | | } |
---|
169 | | - | let ai = if ((S > 0)) |
---|
| 189 | + | let am = if ((W > 0)) |
---|
170 | 190 | | then { |
---|
171 | | - | let aj = (S * c) |
---|
172 | | - | [ScriptTransfer(b, S, unit)] |
---|
| 191 | + | let an = (W * b) |
---|
| 192 | + | [ScriptTransfer(F, W, unit)] |
---|
173 | 193 | | } |
---|
174 | 194 | | else nil |
---|
175 | | - | if ((H > Y)) |
---|
176 | | - | then throw("Transaction index is too big") |
---|
177 | | - | else if (!(bn256Groth16Verify_5inputs(d, J, ab))) |
---|
| 195 | + | if ((L > ac)) |
---|
| 196 | + | then throw("Invalid transaction index") |
---|
| 197 | + | else if (!(bn256Groth16Verify_5inputs(c, N, af))) |
---|
178 | 198 | | then throw("Tx proof is invalid") |
---|
179 | | - | else if (!(bn256Groth16Verify_3inputs(e, K, ac))) |
---|
| 199 | + | else if (!(bn256Groth16Verify_3inputs(d, O, ag))) |
---|
180 | 200 | | then throw("Tree proof is invalid") |
---|
181 | | - | else if (aa) |
---|
| 201 | + | else if (ae) |
---|
182 | 202 | | then throw("Double spend") |
---|
183 | | - | else ((ae ++ ad) ++ ai) |
---|
| 203 | + | else ((ai ++ ah) ++ am) |
---|
184 | 204 | | } |
---|
185 | 205 | | else throw("Strict value is not equal to itself.") |
---|
186 | 206 | | } |
---|
187 | 207 | | |
---|
188 | 208 | | |
---|
189 | | - | @Verifier(B) |
---|
190 | | - | func ak () = { |
---|
191 | | - | let w = B |
---|
| 209 | + | @Verifier(D) |
---|
| 210 | + | func ao () = { |
---|
| 211 | + | let w = D |
---|
192 | 212 | | if ($isInstanceOf(w, "SetScriptTransaction")) |
---|
193 | 213 | | then { |
---|
194 | | - | let al = w |
---|
195 | | - | sigVerify(B.bodyBytes, B.proofs[0], a) |
---|
| 214 | + | let ap = w |
---|
| 215 | + | sigVerify(D.bodyBytes, D.proofs[0], a) |
---|
196 | 216 | | } |
---|
197 | | - | else false |
---|
| 217 | + | else if ($isInstanceOf(w, "InvokeScriptTransaction")) |
---|
| 218 | + | then { |
---|
| 219 | + | let ap = w |
---|
| 220 | + | let aq = ap.function |
---|
| 221 | + | if (("setOperatorPk" == aq)) |
---|
| 222 | + | then sigVerify(D.bodyBytes, D.proofs[0], a) |
---|
| 223 | + | else if (("transact" == aq)) |
---|
| 224 | + | then { |
---|
| 225 | + | let E = z() |
---|
| 226 | + | sigVerify(D.bodyBytes, D.proofs[0], E) |
---|
| 227 | + | } |
---|
| 228 | + | else sigVerify(D.bodyBytes, D.proofs[0], D.senderPublicKey) |
---|
| 229 | + | } |
---|
| 230 | + | else false |
---|
198 | 231 | | } |
---|
199 | 232 | | |
---|