tx · 31i2i9Fhn4KWnmeS8d3LGY5EX5cnfv7irQZFSfuCN3HY 3Mr7HCJPTazuYjJbfbbpRMvZX8xrNTjT1Kx: -0.01000000 Waves 2023.03.09 01:31 [2481715] smart account 3Mr7HCJPTazuYjJbfbbpRMvZX8xrNTjT1Kx > SELF 0.00000000 Waves
{ "type": 13, "id": "31i2i9Fhn4KWnmeS8d3LGY5EX5cnfv7irQZFSfuCN3HY", "fee": 1000000, "feeAssetId": null, "timestamp": 1678314674174, "version": 2, "chainId": 84, "sender": "3Mr7HCJPTazuYjJbfbbpRMvZX8xrNTjT1Kx", "senderPublicKey": "D35PGQCSSdrp9pvujggj7b2DaCK1BhcU3kho7tikKJYs", "proofs": [ "5ryQTpeB3dCxGmqmnzJUkN3Axfrzs3enNZtrbjNrQgccBdEdjgTvSFV4YsshpRgbGRTzR4j7mwFu2HezWR85pjvc" ], "script": "base64:BgIiCAISABIECgIBARIAEgMKAQESBAoCGBESBAoCCAgSAwoBCAMADG9wdGlvbnNfYWRkcgkBB0FkZHJlc3MBARoBVEFb+Cv2F+oqocvEivH7x7uyIGEx/ocgwQAEdFJVQgEgv7I1LEj/fS4nZAGEmW42z/vK94nfeiKN08fw7a6U2ZsABHRVU0QBIKskSmq2Qkbr0vzjebBhusOuaVdNUnrKRRynQB0RsCkOBwFpARRyZWlzc3VlVG9rZW5zTG95YWx0eQADCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUUGF5bWVudCBub3QgYXR0YWNoZWQECGFzc2V0X2lkBAckbWF0Y2gwCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAFAmlkCQACAQIQQ2FuJ3QgZmluZCBhc3NldAQKYXNzZXRfaW5mbwQHJG1hdGNoMAkA7AcBBQhhc3NldF9pZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAFBWFzc2V0CQACAQIbQ2FuJ3QgZ2V0IGluZm8gZnJvbSBwYXltZW50BAhxdWFudGl0eQQHJG1hdGNoMAkAtgkBCQCRAwIJALUJAggFCmFzc2V0X2luZm8LZGVzY3JpcHRpb24CAToAAQMJAAECBQckbWF0Y2gwAgNJbnQEAXEFByRtYXRjaDAFAXEJAAIBAh9DYW4ndCBnZXQgcXVhbnRpdHkgZnJvbSBwYXltZW50BAtpc19vcHRfYWRkcgQHJG1hdGNoMAgFCmFzc2V0X2luZm8GaXNzdWVyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmlzc3VlcgUHJG1hdGNoMAUGaXNzdWVyCQACAQIdQ2FuJ3QgZ2V0IGlzc3VlciBmcm9tIHBheW1lbnQDCQECIT0CCQClCAEFC2lzX29wdF9hZGRyCQClCAEFBHRoaXMJAAIBAhdJc3N1ZXIgbm90IG9wdGlvbnNfYWRkcgQDcmVzCQD8BwQFDG9wdGlvbnNfYWRkcgIRcmVpc3N1ZUZvckRlcEFkZHIJAMwIAgUIcXVhbnRpdHkFA25pbAUDbmlsAwkAAAIFA3JlcwUDcmVzBAckbWF0Y2gwBQNyZXMDCQABAgUHJG1hdGNoMAIDSW50BAFyBQckbWF0Y2gwCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQhxdWFudGl0eQUEdFJVQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAgRsX2JfCQDYBAEFCGFzc2V0X2lkBQhxdWFudGl0eQUDbmlsBQR1bml0CQACAQIXSW5jb3JyZWN0IGludm9rZSByZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJaXNzdWVCaWxsAglwcm92aWRpbmcEc2l6ZQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCmN1cnJlbnRLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEW1pbkJpbGxEZXBvc2l0U3RyBAckbWF0Y2gwCQCdCAIFDG9wdGlvbnNfYWRkcgIQbWluX2JpbGxfZGVwb3NpdAMJAAECBQckbWF0Y2gwAgRVbml0AgEwAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yBA5taW5CaWxsRGVwb3NpdAQHJG1hdGNoMAkAtgkBCQCRAwIJALUJAgURbWluQmlsbERlcG9zaXRTdHICAS4AAAMJAAECBQckbWF0Y2gwAgRVbml0AAADCQABAgUHJG1hdGNoMAIDSW50BAF0BQckbWF0Y2gwBQF0CQACAQILTWF0Y2ggZXJyb3IED2V4Y2hhbmdlUmF0ZVN0cgQHJG1hdGNoMAkAnQgCBQxvcHRpb25zX2FkZHICDWV4Y2hhbmdlX3JhdGUDCQABAgUHJG1hdGNoMAIEVW5pdAIBMAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAgtNYXRjaCBlcnJvcgQMZXhjaGFuZ2VSYXRlBAckbWF0Y2gwCQC2CQEFD2V4Y2hhbmdlUmF0ZVN0cgMJAAECBQckbWF0Y2gwAgRVbml0AAADCQABAgUHJG1hdGNoMAIDSW50BAF0BQckbWF0Y2gwBQF0CQACAQILTWF0Y2ggZXJyb3IEFHNoYXJlR3VhcmFudGVlRmVlU3RyBAckbWF0Y2gwCQCdCAIFDG9wdGlvbnNfYWRkcgITc2hhcmVfZ3VhcmFudGVlX2ZlZQMJAAECBQckbWF0Y2gwAgRVbml0AgEwAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yBBFzaGFyZUd1YXJhbnRlZUZlZQQHJG1hdGNoMAkAtgkBBRRzaGFyZUd1YXJhbnRlZUZlZVN0cgMJAAECBQckbWF0Y2gwAgRVbml0AAADCQABAgUHJG1hdGNoMAIDSW50BAF0BQckbWF0Y2gwBQF0CQACAQILTWF0Y2ggZXJyb3IECHRSVUJfbWluCQBpAgkAaAIJAGgCBQ5taW5CaWxsRGVwb3NpdAUMZXhjaGFuZ2VSYXRlAGQFEXNoYXJlR3VhcmFudGVlRmVlBAh0UlVCX21heAkAaQIJAGgCBQlwcm92aWRpbmcFDGV4Y2hhbmdlUmF0ZQURc2hhcmVHdWFyYW50ZWVGZWUECW5ld0Ftb3VudAkAZQIFDWN1cnJlbnRBbW91bnQFCXByb3ZpZGluZwMJAGYCCQBoAgUObWluQmlsbERlcG9zaXQAZAUJcHJvdmlkaW5nCQACAQkArAICCQCsAgIJAKwCAgkArAICAidUaGUgc2VjdXJpdHkgZGVwb3NpdCBtdXN0IGJlIG1vcmUgdGhhbiAFEW1pbkJpbGxEZXBvc2l0U3RyAhQuIFlvdSBzZXQgdGhlIHNpemU6IAkApAMBCQBpAgUJcHJvdmlkaW5nAGQCAy4wMAMJAGYCAAAFCW5ld0Ftb3VudAkAAgECEk5vdCBlbm91Z2ggYmFsYW5jZQMJAGYCBQh0UlVCX21pbgUEc2l6ZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgJIVGhlIG5vbWluYWwgdmFsdWUgb2YgdGhlIHByb21pc3NvcnkgYmlsbCBleGNlZWRzIHRoZSBjb2xsYXRlcmFsIG1pbmltdW0gCQCkAwEFCHRSVUJfbWluAgXigr0gKAURbWluQmlsbERlcG9zaXRTdHICBXRVU0QpAwkAZgIFBHNpemUFCHRSVUJfbWF4CQACAQkArAICCQCsAgIJAKwCAgkArAICAjFUaGUgdmFsdWUgb2YgdGhlIHRva2VuIGNhbm5vdCBleGNlZWQgdGhlIG1heGltdW0gCQCkAwEFCHRSVUJfbWF4Ah7igr0gb2YgdGhlIGd1YXJhbnRlZSBkZXBvc2l0ICgJAKQDAQkAaQIFCXByb3ZpZGluZwBkAgV0VVNEKQQFaXNzdWUJAMIIBQkArAICAgliaWxsIGZvcjoJAKQDAQkAaQIFCXByb3ZpZGluZwBkCQCsAgIJAKwCAgUKY3VycmVudEtleQIBOgkApAMBBQRzaXplAAEAAAcEAmlkCQC4CAEFBWlzc3VlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAkAzAgCBQVpc3N1ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUCaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIEbF91XwkA2AQBBQJpZAUJcHJvdmlkaW5nBQNuaWwFBHVuaXQBaQEHZGVwb3NpdAADCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUUGF5bWVudCBub3QgYXR0YWNoZWQEA3BtdAkAkQMCCQEFdmFsdWUBCAUBaQhwYXltZW50cwAABA1taW5EZXBvc2l0U3RyBAckbWF0Y2gwCQCdCAIFDG9wdGlvbnNfYWRkcgILbWluX2RlcG9zaXQDCQABAgUHJG1hdGNoMAIEVW5pdAIBMAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAgtNYXRjaCBlcnJvcgQKbWluRGVwb3NpdAQHJG1hdGNoMAkAtgkBCQCRAwIJALUJAgUNbWluRGVwb3NpdFN0cgIBLgAAAwkAAQIFByRtYXRjaDACBFVuaXQAAAMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAFAXQJAAIBAgtNYXRjaCBlcnJvcgMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdFVTRAkAAgECF2hvbGRlZCBwYXltZW50IG5vdCB0VVNEAwkAZgIJAGgCBQptaW5EZXBvc2l0AGQIBQNwbXQGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICAiNZb3UgaGF2ZSBzZXQgdGhlIGRlcG9zaXQgYW1vdW50IHRvIAkApAMBCQBpAggFA3BtdAZhbW91bnQAZAIlLjAwLCB3aGljaCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gKAUNbWluRGVwb3NpdFN0cgIBKQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCmN1cnJlbnRLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZAIFDWN1cnJlbnRBbW91bnQIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQFA25pbAFpAQh3aXRoZHJhdwEGYW1vdW50BApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50AwkAZgIAAAUGYW1vdW50CQACAQIeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUEdFVTRAUDbmlsBQR1bml0AWkBCnNldE9wdGlvbnMCBG9wdHMEdmFscwQIb3B0X3NpemUJAJADAQUEb3B0cwMJAGcCAGQFCG9wdF9zaXplBAlhZG1pbkxpc3QEByRtYXRjaDAJAJ0IAgUMb3B0aW9uc19hZGRyAgphZG1pbl9saXN0AwkAAQIFByRtYXRjaDACBFVuaXQCBXVuc2V0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yCgEOYWRkU3RyaW5nRW50cnkCBWFjY3VtCW5leHRWYWx1ZQQLJHQwNzY3Mjc2OTUF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CWFkbWluTGlzdAILLCBpc0FkbWluOiAFB2lzQWRtaW4CFCwgY2FsbGVyQWRkcmVzc1N0cjogBRBjYWxsZXJBZGRyZXNzU3RyAgIsIAkAAgECEFVuc2V0IGFkbWluIGxpc3QJAAIBAi9UaGUgbnVtYmVyIG9mIGxpc3QgZWxlbWVudHMgbXVzdCBub3QgZXhjZWVkIDEwMAFpAQlzZXRPcHRpb24CCHZhcmlhYmxlBXZhbHVlBAlhZG1pbkxpc3QEByRtYXRjaDAJAJ0IAgUMb3B0aW9uc19hZGRyAgphZG1pbl9saXN0AwkAAQIFByRtYXRjaDACBFVuaXQCBXVuc2V0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yBBBjYWxsZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIFCWFkbWluTGlzdAIFdW5zZXQEBHRlc3QJAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUJYWRtaW5MaXN0BRBjYWxsZXJBZGRyZXNzU3RyBAdpc0FkbWluBAckbWF0Y2gwBQR0ZXN0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAMJAAECBQckbWF0Y2gwAgRVbml0AghubyBhZG1pbgkAAgECC01hdGNoIGVycm9yAwkBAiE9AgUHaXNBZG1pbgIIbm8gYWRtaW4JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQh2YXJpYWJsZQUFdmFsdWUFA25pbAUEdW5pdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD1lvdSBub3QgYWRtaW46IAUJYWRtaW5MaXN0AgssIGlzQWRtaW46IAUHaXNBZG1pbgIULCBjYWxsZXJBZGRyZXNzU3RyOiAFEGNhbGxlckFkZHJlc3NTdHICAiwgCQACAQIQVW5zZXQgYWRtaW4gbGlzdAFpAQlkZWxPcHRpb24BCHZhcmlhYmxlBAlhZG1pbkxpc3QEByRtYXRjaDAJAJ0IAgUMb3B0aW9uc19hZGRyAgphZG1pbl9saXN0AwkAAQIFByRtYXRjaDACBFVuaXQCBXVuc2V0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yBBBjYWxsZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIFCWFkbWluTGlzdAIFdW5zZXQEBHRlc3QJAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUJYWRtaW5MaXN0BRBjYWxsZXJBZGRyZXNzU3RyBAdpc0FkbWluBAckbWF0Y2gwBQR0ZXN0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAMJAAECBQckbWF0Y2gwAgRVbml0AghubyBhZG1pbgkAAgECC01hdGNoIGVycm9yAwkBAiE9AgUHaXNBZG1pbgIIbm8gYWRtaW4JAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBQh2YXJpYWJsZQUDbmlsBQR1bml0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPWW91IG5vdCBhZG1pbjogBQlhZG1pbkxpc3QCCywgaXNBZG1pbjogBQdpc0FkbWluAhQsIGNhbGxlckFkZHJlc3NTdHI6IAUQY2FsbGVyQWRkcmVzc1N0cgICLCAJAAIBAhBVbnNldCBhZG1pbiBsaXN0AQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleUJVNzM=", "height": 2481715, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9ejxPqM7ZP431yqGmetUrpen9jLQYRtHtsCJoqDzP8uT Next: 7J7uoWgHq71coxdhgtzi6qdNK1wgHG2cWKgaompgievq Diff:
Old | New | Differences | |
---|---|---|---|
5 | 5 | ||
6 | 6 | let b = base58'DuJUjEZJWmpFUo3bubFX8tomUVitqZZNAPuhd6KWgJNE' | |
7 | 7 | ||
8 | - | let c = | |
8 | + | let c = base58'CX4p6XcuSBUvv44r1avCqYka5PYAVzBK5hSXaT7maU85' | |
9 | 9 | ||
10 | - | let d = base58'CX4p6XcuSBUvv44r1avCqYka5PYAVzBK5hSXaT7maU85' | |
11 | - | ||
12 | - | @Callable(e) | |
13 | - | func reissueTokensLoyalty () = if ((size(e.payments) == 0)) | |
10 | + | @Callable(d) | |
11 | + | func reissueTokensLoyalty () = if ((size(d.payments) == 0)) | |
14 | 12 | then throw("Payment not attached") | |
15 | 13 | else { | |
16 | - | let | |
17 | - | let | |
18 | - | if ($isInstanceOf( | |
14 | + | let e = { | |
15 | + | let f = d.payments[0].assetId | |
16 | + | if ($isInstanceOf(f, "ByteVector")) | |
19 | 17 | then { | |
20 | - | let | |
21 | - | | |
18 | + | let g = f | |
19 | + | g | |
22 | 20 | } | |
23 | 21 | else throw("Can't find asset") | |
24 | 22 | } | |
25 | - | let | |
26 | - | let | |
27 | - | if ($isInstanceOf( | |
23 | + | let h = { | |
24 | + | let f = assetInfo(e) | |
25 | + | if ($isInstanceOf(f, "Asset")) | |
28 | 26 | then { | |
29 | - | let | |
30 | - | | |
27 | + | let i = f | |
28 | + | i | |
31 | 29 | } | |
32 | 30 | else throw("Can't get info from payment") | |
33 | 31 | } | |
34 | - | let | |
35 | - | let | |
36 | - | if ($isInstanceOf( | |
32 | + | let j = { | |
33 | + | let f = parseInt(split(h.description, ":")[1]) | |
34 | + | if ($isInstanceOf(f, "Int")) | |
37 | 35 | then { | |
38 | - | let | |
39 | - | | |
36 | + | let k = f | |
37 | + | k | |
40 | 38 | } | |
41 | 39 | else throw("Can't get quantity from payment") | |
42 | 40 | } | |
43 | - | let | |
44 | - | let | |
45 | - | if ($isInstanceOf( | |
41 | + | let l = { | |
42 | + | let f = h.issuer | |
43 | + | if ($isInstanceOf(f, "Address")) | |
46 | 44 | then { | |
47 | - | let | |
48 | - | | |
45 | + | let m = f | |
46 | + | m | |
49 | 47 | } | |
50 | 48 | else throw("Can't get issuer from payment") | |
51 | 49 | } | |
52 | - | if ((toString( | |
50 | + | if ((toString(l) != toString(this))) | |
53 | 51 | then throw("Issuer not options_addr") | |
54 | 52 | else { | |
55 | - | let | |
56 | - | if (( | |
53 | + | let n = invoke(a, "reissueForDepAddr", [j], nil) | |
54 | + | if ((n == n)) | |
57 | 55 | then { | |
58 | - | let | |
59 | - | if ($isInstanceOf( | |
56 | + | let f = n | |
57 | + | if ($isInstanceOf(f, "Int")) | |
60 | 58 | then { | |
61 | - | let | |
62 | - | $Tuple2([ScriptTransfer( | |
59 | + | let o = f | |
60 | + | $Tuple2([ScriptTransfer(d.caller, j, b), IntegerEntry(("l_b_" + toBase58String(e)), j)], unit) | |
63 | 61 | } | |
64 | - | else throw({ | |
65 | - | let q = o | |
66 | - | if ($isInstanceOf(q, "String")) | |
67 | - | then q | |
68 | - | else throw(($getType(q) + " couldn't be cast to String")) | |
69 | - | }) | |
62 | + | else throw("Incorrect invoke result") | |
70 | 63 | } | |
71 | 64 | else throw("Strict value is not equal to itself.") | |
72 | 65 | } | |
74 | 67 | ||
75 | 68 | ||
76 | 69 | ||
77 | - | @Callable( | |
78 | - | func issueBill ( | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | if ($isInstanceOf( | |
70 | + | @Callable(d) | |
71 | + | func issueBill (p,q) = { | |
72 | + | let r = toBase58String(d.caller.bytes) | |
73 | + | let s = { | |
74 | + | let f = getInteger(this, r) | |
75 | + | if ($isInstanceOf(f, "Int")) | |
83 | 76 | then { | |
84 | - | let | |
85 | - | | |
77 | + | let t = f | |
78 | + | t | |
86 | 79 | } | |
87 | 80 | else 0 | |
88 | 81 | } | |
82 | + | let u = { | |
83 | + | let f = getString(a, "min_bill_deposit") | |
84 | + | if ($isInstanceOf(f, "Unit")) | |
85 | + | then "0" | |
86 | + | else if ($isInstanceOf(f, "String")) | |
87 | + | then { | |
88 | + | let v = f | |
89 | + | v | |
90 | + | } | |
91 | + | else throw("Match error") | |
92 | + | } | |
89 | 93 | let w = { | |
90 | - | let | |
91 | - | if ($isInstanceOf( | |
92 | - | then | |
93 | - | else if ($isInstanceOf( | |
94 | + | let f = parseInt(split(u, ".")[0]) | |
95 | + | if ($isInstanceOf(f, "Unit")) | |
96 | + | then 0 | |
97 | + | else if ($isInstanceOf(f, "Int")) | |
94 | 98 | then { | |
95 | - | let x = | |
99 | + | let x = f | |
96 | 100 | x | |
97 | 101 | } | |
98 | 102 | else throw("Match error") | |
99 | 103 | } | |
100 | 104 | let y = { | |
101 | - | let g = parseInt(split(w, ".")[0]) | |
102 | - | if ($isInstanceOf(g, "Unit")) | |
105 | + | let f = getString(a, "exchange_rate") | |
106 | + | if ($isInstanceOf(f, "Unit")) | |
107 | + | then "0" | |
108 | + | else if ($isInstanceOf(f, "String")) | |
109 | + | then { | |
110 | + | let v = f | |
111 | + | v | |
112 | + | } | |
113 | + | else throw("Match error") | |
114 | + | } | |
115 | + | let z = { | |
116 | + | let f = parseInt(y) | |
117 | + | if ($isInstanceOf(f, "Unit")) | |
103 | 118 | then 0 | |
104 | - | else if ($isInstanceOf( | |
119 | + | else if ($isInstanceOf(f, "Int")) | |
105 | 120 | then { | |
106 | - | let | |
107 | - | | |
121 | + | let x = f | |
122 | + | x | |
108 | 123 | } | |
109 | 124 | else throw("Match error") | |
110 | 125 | } | |
111 | 126 | let A = { | |
112 | - | let | |
113 | - | if ($isInstanceOf( | |
127 | + | let f = getString(a, "share_guarantee_fee") | |
128 | + | if ($isInstanceOf(f, "Unit")) | |
114 | 129 | then "0" | |
115 | - | else if ($isInstanceOf( | |
130 | + | else if ($isInstanceOf(f, "String")) | |
116 | 131 | then { | |
117 | - | let x = g | |
132 | + | let v = f | |
133 | + | v | |
134 | + | } | |
135 | + | else throw("Match error") | |
136 | + | } | |
137 | + | let B = { | |
138 | + | let f = parseInt(A) | |
139 | + | if ($isInstanceOf(f, "Unit")) | |
140 | + | then 0 | |
141 | + | else if ($isInstanceOf(f, "Int")) | |
142 | + | then { | |
143 | + | let x = f | |
118 | 144 | x | |
119 | 145 | } | |
120 | 146 | else throw("Match error") | |
121 | 147 | } | |
122 | - | let B = { | |
123 | - | let g = parseInt(A) | |
124 | - | if ($isInstanceOf(g, "Unit")) | |
125 | - | then 0 | |
126 | - | else if ($isInstanceOf(g, "Int")) | |
127 | - | then { | |
128 | - | let z = g | |
129 | - | z | |
130 | - | } | |
131 | - | else throw("Match error") | |
132 | - | } | |
133 | - | let C = { | |
134 | - | let g = getString(a, "share_guarantee_fee") | |
135 | - | if ($isInstanceOf(g, "Unit")) | |
136 | - | then "0" | |
137 | - | else if ($isInstanceOf(g, "String")) | |
138 | - | then { | |
139 | - | let x = g | |
140 | - | x | |
141 | - | } | |
142 | - | else throw("Match error") | |
143 | - | } | |
144 | - | let D = { | |
145 | - | let g = parseInt(C) | |
146 | - | if ($isInstanceOf(g, "Unit")) | |
147 | - | then 0 | |
148 | - | else if ($isInstanceOf(g, "Int")) | |
149 | - | then { | |
150 | - | let z = g | |
151 | - | z | |
152 | - | } | |
153 | - | else throw("Match error") | |
154 | - | } | |
155 | - | let E = (((y * B) * 100) / D) | |
156 | - | let F = ((r * B) / D) | |
157 | - | let G = (u - r) | |
158 | - | if (((y * 100) > r)) | |
159 | - | then throw((((("The security deposit must be more than " + w) + ". You set the size: ") + toString((r / 100))) + ".00")) | |
160 | - | else if ((0 > G)) | |
148 | + | let C = (((w * z) * 100) / B) | |
149 | + | let D = ((p * z) / B) | |
150 | + | let E = (s - p) | |
151 | + | if (((w * 100) > p)) | |
152 | + | then throw((((("The security deposit must be more than " + u) + ". You set the size: ") + toString((p / 100))) + ".00")) | |
153 | + | else if ((0 > E)) | |
161 | 154 | then throw("Not enough balance") | |
162 | - | else if (( | |
163 | - | then throw((((("The nominal value of the promissory bill exceeds the collateral minimum " + toString( | |
164 | - | else if (( | |
165 | - | then throw((((("The value of the token cannot exceed the maximum " + toString( | |
155 | + | else if ((C > q)) | |
156 | + | then throw((((("The nominal value of the promissory bill exceeds the collateral minimum " + toString(C)) + "₽ (") + u) + "tUSD)")) | |
157 | + | else if ((q > D)) | |
158 | + | then throw((((("The value of the token cannot exceed the maximum " + toString(D)) + "₽ of the guarantee deposit (") + toString((p / 100))) + "tUSD)")) | |
166 | 159 | else { | |
167 | - | let | |
168 | - | let | |
169 | - | $Tuple2([IntegerEntry( | |
160 | + | let F = Issue(("bill for:" + toString((p / 100))), ((r + ":") + toString(q)), 1, 0, false) | |
161 | + | let g = calculateAssetId(F) | |
162 | + | $Tuple2([IntegerEntry(r, E), F, ScriptTransfer(d.caller, 1, g), IntegerEntry(("l_u_" + toBase58String(g)), p)], unit) | |
170 | 163 | } | |
171 | 164 | } | |
172 | 165 | ||
173 | 166 | ||
174 | 167 | ||
175 | - | @Callable( | |
176 | - | func deposit () = if ((size( | |
168 | + | @Callable(d) | |
169 | + | func deposit () = if ((size(d.payments) == 0)) | |
177 | 170 | then throw("Payment not attached") | |
178 | 171 | else { | |
179 | - | let | |
180 | - | let | |
181 | - | let | |
182 | - | if ($isInstanceOf( | |
172 | + | let G = value(d.payments)[0] | |
173 | + | let H = { | |
174 | + | let f = getString(a, "min_deposit") | |
175 | + | if ($isInstanceOf(f, "Unit")) | |
183 | 176 | then "0" | |
184 | - | else if ($isInstanceOf( | |
177 | + | else if ($isInstanceOf(f, "String")) | |
185 | 178 | then { | |
186 | - | let x = g | |
179 | + | let v = f | |
180 | + | v | |
181 | + | } | |
182 | + | else throw("Match error") | |
183 | + | } | |
184 | + | let I = { | |
185 | + | let f = parseInt(split(H, ".")[0]) | |
186 | + | if ($isInstanceOf(f, "Unit")) | |
187 | + | then 0 | |
188 | + | else if ($isInstanceOf(f, "Int")) | |
189 | + | then { | |
190 | + | let x = f | |
187 | 191 | x | |
188 | 192 | } | |
189 | 193 | else throw("Match error") | |
190 | 194 | } | |
191 | - | let K = { | |
192 | - | let g = parseInt(split(J, ".")[0]) | |
193 | - | if ($isInstanceOf(g, "Unit")) | |
194 | - | then 0 | |
195 | - | else if ($isInstanceOf(g, "Int")) | |
196 | - | then { | |
197 | - | let z = g | |
198 | - | z | |
199 | - | } | |
200 | - | else throw("Match error") | |
201 | - | } | |
202 | - | if ((I.assetId != d)) | |
195 | + | if ((G.assetId != c)) | |
203 | 196 | then throw("holded payment not tUSD") | |
204 | - | else if ((( | |
205 | - | then throw((((("You have set the deposit amount to " + toString(( | |
197 | + | else if (((I * 100) > G.amount)) | |
198 | + | then throw((((("You have set the deposit amount to " + toString((G.amount / 100))) + ".00, which is less than the minimum (") + H) + ")")) | |
206 | 199 | else { | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | if ($isInstanceOf( | |
200 | + | let r = toBase58String(d.caller.bytes) | |
201 | + | let s = { | |
202 | + | let f = getInteger(this, r) | |
203 | + | if ($isInstanceOf(f, "Int")) | |
211 | 204 | then { | |
212 | - | let | |
213 | - | | |
205 | + | let t = f | |
206 | + | t | |
214 | 207 | } | |
215 | 208 | else 0 | |
216 | 209 | } | |
217 | - | let | |
218 | - | [IntegerEntry( | |
210 | + | let E = (s + G.amount) | |
211 | + | [IntegerEntry(r, E)] | |
219 | 212 | } | |
220 | 213 | } | |
221 | 214 | ||
222 | 215 | ||
223 | 216 | ||
224 | - | @Callable( | |
225 | - | func withdraw ( | |
226 | - | let | |
227 | - | let | |
228 | - | let | |
229 | - | if ($isInstanceOf( | |
217 | + | @Callable(d) | |
218 | + | func withdraw (J) = { | |
219 | + | let r = toBase58String(d.caller.bytes) | |
220 | + | let s = { | |
221 | + | let f = getInteger(this, r) | |
222 | + | if ($isInstanceOf(f, "Int")) | |
230 | 223 | then { | |
231 | - | let | |
232 | - | | |
224 | + | let t = f | |
225 | + | t | |
233 | 226 | } | |
234 | 227 | else 0 | |
235 | 228 | } | |
236 | - | let | |
237 | - | if ((0 > | |
229 | + | let E = (s - J) | |
230 | + | if ((0 > J)) | |
238 | 231 | then throw("Can't withdraw negative amount") | |
239 | - | else if ((0 > | |
232 | + | else if ((0 > E)) | |
240 | 233 | then throw("Not enough balance") | |
241 | - | else $Tuple2([IntegerEntry( | |
234 | + | else $Tuple2([IntegerEntry(r, E), ScriptTransfer(d.caller, J, c)], unit) | |
242 | 235 | } | |
243 | 236 | ||
244 | 237 | ||
245 | 238 | ||
246 | - | @Callable( | |
247 | - | func setOptions ( | |
248 | - | let | |
249 | - | if ((100 >= | |
239 | + | @Callable(d) | |
240 | + | func setOptions (K,L) = { | |
241 | + | let M = size(K) | |
242 | + | if ((100 >= M)) | |
250 | 243 | then { | |
251 | - | let | |
252 | - | let | |
253 | - | if ($isInstanceOf( | |
244 | + | let N = { | |
245 | + | let f = getString(a, "admin_list") | |
246 | + | if ($isInstanceOf(f, "Unit")) | |
254 | 247 | then "unset" | |
255 | - | else if ($isInstanceOf( | |
248 | + | else if ($isInstanceOf(f, "String")) | |
256 | 249 | then { | |
257 | - | let | |
258 | - | | |
250 | + | let v = f | |
251 | + | v | |
259 | 252 | } | |
260 | 253 | else throw("Match error") | |
261 | 254 | } | |
262 | - | func | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | $Tuple2(( | |
255 | + | func O (P,Q) = { | |
256 | + | let R = P | |
257 | + | let S = R._1 | |
258 | + | let T = R._2 | |
259 | + | $Tuple2((S :+ IntegerEntry(K[T], Q)), (T + 1)) | |
267 | 260 | } | |
268 | 261 | ||
269 | - | let | |
270 | - | let | |
271 | - | let | |
272 | - | let | |
273 | - | func | |
274 | - | then | |
275 | - | else | |
262 | + | let o = { | |
263 | + | let U = L | |
264 | + | let V = size(U) | |
265 | + | let W = $Tuple2(nil, 0) | |
266 | + | func X (Y,Z) = if ((Z >= V)) | |
267 | + | then Y | |
268 | + | else O(Y, U[Z]) | |
276 | 269 | ||
277 | - | func | |
278 | - | then | |
270 | + | func aa (Y,Z) = if ((Z >= V)) | |
271 | + | then Y | |
279 | 272 | else throw("List size exceeds 100") | |
280 | 273 | ||
281 | - | | |
274 | + | aa(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(W, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
282 | 275 | } | |
283 | - | let | |
284 | - | if (( | |
276 | + | let ab = toString(d.caller) | |
277 | + | if ((N != "unset")) | |
285 | 278 | then { | |
286 | - | let | |
287 | - | let | |
288 | - | let | |
289 | - | if ($isInstanceOf( | |
279 | + | let ac = getString(addressFromStringValue(N), ab) | |
280 | + | let ad = { | |
281 | + | let f = ac | |
282 | + | if ($isInstanceOf(f, "String")) | |
290 | 283 | then { | |
291 | - | let | |
292 | - | | |
284 | + | let v = f | |
285 | + | v | |
293 | 286 | } | |
294 | - | else if ($isInstanceOf( | |
287 | + | else if ($isInstanceOf(f, "Unit")) | |
295 | 288 | then "no admin" | |
296 | 289 | else throw("Match error") | |
297 | 290 | } | |
298 | - | func | |
299 | - | let | |
300 | - | StringEntry( | |
291 | + | func ae (af) = { | |
292 | + | let ag = split(af, "|") | |
293 | + | StringEntry(ag[0], ag[1]) | |
301 | 294 | } | |
302 | 295 | ||
303 | - | if (( | |
304 | - | then | |
305 | - | else throw((((((("You not admin: " + | |
296 | + | if ((ad != "no admin")) | |
297 | + | then o | |
298 | + | else throw((((((("You not admin: " + N) + ", isAdmin: ") + ad) + ", callerAddressStr: ") + ab) + ", ")) | |
306 | 299 | } | |
307 | 300 | else throw("Unset admin list") | |
308 | 301 | } | |
311 | 304 | ||
312 | 305 | ||
313 | 306 | ||
314 | - | @Callable( | |
315 | - | func setOption ( | |
316 | - | let | |
317 | - | let | |
318 | - | if ($isInstanceOf( | |
307 | + | @Callable(d) | |
308 | + | func setOption (ah,ai) = { | |
309 | + | let N = { | |
310 | + | let f = getString(a, "admin_list") | |
311 | + | if ($isInstanceOf(f, "Unit")) | |
319 | 312 | then "unset" | |
320 | - | else if ($isInstanceOf( | |
313 | + | else if ($isInstanceOf(f, "String")) | |
321 | 314 | then { | |
322 | - | let | |
323 | - | | |
315 | + | let v = f | |
316 | + | v | |
324 | 317 | } | |
325 | 318 | else throw("Match error") | |
326 | 319 | } | |
327 | - | let | |
328 | - | if (( | |
320 | + | let ab = toString(d.caller) | |
321 | + | if ((N != "unset")) | |
329 | 322 | then { | |
330 | - | let | |
331 | - | let | |
332 | - | let | |
333 | - | if ($isInstanceOf( | |
323 | + | let ac = getString(addressFromStringValue(N), ab) | |
324 | + | let ad = { | |
325 | + | let f = ac | |
326 | + | if ($isInstanceOf(f, "String")) | |
334 | 327 | then { | |
335 | - | let | |
336 | - | | |
328 | + | let v = f | |
329 | + | v | |
337 | 330 | } | |
338 | - | else if ($isInstanceOf( | |
331 | + | else if ($isInstanceOf(f, "Unit")) | |
339 | 332 | then "no admin" | |
340 | 333 | else throw("Match error") | |
341 | 334 | } | |
342 | - | if (( | |
343 | - | then $Tuple2([StringEntry( | |
344 | - | else throw((((((("You not admin: " + | |
335 | + | if ((ad != "no admin")) | |
336 | + | then $Tuple2([StringEntry(ah, ai)], unit) | |
337 | + | else throw((((((("You not admin: " + N) + ", isAdmin: ") + ad) + ", callerAddressStr: ") + ab) + ", ")) | |
345 | 338 | } | |
346 | 339 | else throw("Unset admin list") | |
347 | 340 | } | |
348 | 341 | ||
349 | 342 | ||
350 | 343 | ||
351 | - | @Callable( | |
352 | - | func delOption ( | |
353 | - | let | |
354 | - | let | |
355 | - | if ($isInstanceOf( | |
344 | + | @Callable(d) | |
345 | + | func delOption (ah) = { | |
346 | + | let N = { | |
347 | + | let f = getString(a, "admin_list") | |
348 | + | if ($isInstanceOf(f, "Unit")) | |
356 | 349 | then "unset" | |
357 | - | else if ($isInstanceOf( | |
350 | + | else if ($isInstanceOf(f, "String")) | |
358 | 351 | then { | |
359 | - | let | |
360 | - | | |
352 | + | let v = f | |
353 | + | v | |
361 | 354 | } | |
362 | 355 | else throw("Match error") | |
363 | 356 | } | |
364 | - | let | |
365 | - | if (( | |
357 | + | let ab = toString(d.caller) | |
358 | + | if ((N != "unset")) | |
366 | 359 | then { | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | if ($isInstanceOf( | |
360 | + | let ac = getString(addressFromStringValue(N), ab) | |
361 | + | let ad = { | |
362 | + | let f = ac | |
363 | + | if ($isInstanceOf(f, "String")) | |
371 | 364 | then { | |
372 | - | let | |
373 | - | | |
365 | + | let v = f | |
366 | + | v | |
374 | 367 | } | |
375 | - | else if ($isInstanceOf( | |
368 | + | else if ($isInstanceOf(f, "Unit")) | |
376 | 369 | then "no admin" | |
377 | 370 | else throw("Match error") | |
378 | 371 | } | |
379 | - | if (( | |
380 | - | then $Tuple2([DeleteEntry( | |
381 | - | else throw((((((("You not admin: " + | |
372 | + | if ((ad != "no admin")) | |
373 | + | then $Tuple2([DeleteEntry(ah)], unit) | |
374 | + | else throw((((((("You not admin: " + N) + ", isAdmin: ") + ad) + ", callerAddressStr: ") + ab) + ", ")) | |
382 | 375 | } | |
383 | 376 | else throw("Unset admin list") | |
384 | 377 | } | |
385 | 378 | ||
386 | 379 | ||
387 | - | @Verifier( | |
388 | - | func | |
380 | + | @Verifier(aj) | |
381 | + | func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey) | |
389 | 382 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = Address(base58'3MusfsY6PqDh1YnF7YyTi5ffVT16Dm2bqf6') | |
5 | 5 | ||
6 | 6 | let b = base58'DuJUjEZJWmpFUo3bubFX8tomUVitqZZNAPuhd6KWgJNE' | |
7 | 7 | ||
8 | - | let c = | |
8 | + | let c = base58'CX4p6XcuSBUvv44r1avCqYka5PYAVzBK5hSXaT7maU85' | |
9 | 9 | ||
10 | - | let d = base58'CX4p6XcuSBUvv44r1avCqYka5PYAVzBK5hSXaT7maU85' | |
11 | - | ||
12 | - | @Callable(e) | |
13 | - | func reissueTokensLoyalty () = if ((size(e.payments) == 0)) | |
10 | + | @Callable(d) | |
11 | + | func reissueTokensLoyalty () = if ((size(d.payments) == 0)) | |
14 | 12 | then throw("Payment not attached") | |
15 | 13 | else { | |
16 | - | let | |
17 | - | let | |
18 | - | if ($isInstanceOf( | |
14 | + | let e = { | |
15 | + | let f = d.payments[0].assetId | |
16 | + | if ($isInstanceOf(f, "ByteVector")) | |
19 | 17 | then { | |
20 | - | let | |
21 | - | | |
18 | + | let g = f | |
19 | + | g | |
22 | 20 | } | |
23 | 21 | else throw("Can't find asset") | |
24 | 22 | } | |
25 | - | let | |
26 | - | let | |
27 | - | if ($isInstanceOf( | |
23 | + | let h = { | |
24 | + | let f = assetInfo(e) | |
25 | + | if ($isInstanceOf(f, "Asset")) | |
28 | 26 | then { | |
29 | - | let | |
30 | - | | |
27 | + | let i = f | |
28 | + | i | |
31 | 29 | } | |
32 | 30 | else throw("Can't get info from payment") | |
33 | 31 | } | |
34 | - | let | |
35 | - | let | |
36 | - | if ($isInstanceOf( | |
32 | + | let j = { | |
33 | + | let f = parseInt(split(h.description, ":")[1]) | |
34 | + | if ($isInstanceOf(f, "Int")) | |
37 | 35 | then { | |
38 | - | let | |
39 | - | | |
36 | + | let k = f | |
37 | + | k | |
40 | 38 | } | |
41 | 39 | else throw("Can't get quantity from payment") | |
42 | 40 | } | |
43 | - | let | |
44 | - | let | |
45 | - | if ($isInstanceOf( | |
41 | + | let l = { | |
42 | + | let f = h.issuer | |
43 | + | if ($isInstanceOf(f, "Address")) | |
46 | 44 | then { | |
47 | - | let | |
48 | - | | |
45 | + | let m = f | |
46 | + | m | |
49 | 47 | } | |
50 | 48 | else throw("Can't get issuer from payment") | |
51 | 49 | } | |
52 | - | if ((toString( | |
50 | + | if ((toString(l) != toString(this))) | |
53 | 51 | then throw("Issuer not options_addr") | |
54 | 52 | else { | |
55 | - | let | |
56 | - | if (( | |
53 | + | let n = invoke(a, "reissueForDepAddr", [j], nil) | |
54 | + | if ((n == n)) | |
57 | 55 | then { | |
58 | - | let | |
59 | - | if ($isInstanceOf( | |
56 | + | let f = n | |
57 | + | if ($isInstanceOf(f, "Int")) | |
60 | 58 | then { | |
61 | - | let | |
62 | - | $Tuple2([ScriptTransfer( | |
59 | + | let o = f | |
60 | + | $Tuple2([ScriptTransfer(d.caller, j, b), IntegerEntry(("l_b_" + toBase58String(e)), j)], unit) | |
63 | 61 | } | |
64 | - | else throw({ | |
65 | - | let q = o | |
66 | - | if ($isInstanceOf(q, "String")) | |
67 | - | then q | |
68 | - | else throw(($getType(q) + " couldn't be cast to String")) | |
69 | - | }) | |
62 | + | else throw("Incorrect invoke result") | |
70 | 63 | } | |
71 | 64 | else throw("Strict value is not equal to itself.") | |
72 | 65 | } | |
73 | 66 | } | |
74 | 67 | ||
75 | 68 | ||
76 | 69 | ||
77 | - | @Callable( | |
78 | - | func issueBill ( | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | if ($isInstanceOf( | |
70 | + | @Callable(d) | |
71 | + | func issueBill (p,q) = { | |
72 | + | let r = toBase58String(d.caller.bytes) | |
73 | + | let s = { | |
74 | + | let f = getInteger(this, r) | |
75 | + | if ($isInstanceOf(f, "Int")) | |
83 | 76 | then { | |
84 | - | let | |
85 | - | | |
77 | + | let t = f | |
78 | + | t | |
86 | 79 | } | |
87 | 80 | else 0 | |
88 | 81 | } | |
82 | + | let u = { | |
83 | + | let f = getString(a, "min_bill_deposit") | |
84 | + | if ($isInstanceOf(f, "Unit")) | |
85 | + | then "0" | |
86 | + | else if ($isInstanceOf(f, "String")) | |
87 | + | then { | |
88 | + | let v = f | |
89 | + | v | |
90 | + | } | |
91 | + | else throw("Match error") | |
92 | + | } | |
89 | 93 | let w = { | |
90 | - | let | |
91 | - | if ($isInstanceOf( | |
92 | - | then | |
93 | - | else if ($isInstanceOf( | |
94 | + | let f = parseInt(split(u, ".")[0]) | |
95 | + | if ($isInstanceOf(f, "Unit")) | |
96 | + | then 0 | |
97 | + | else if ($isInstanceOf(f, "Int")) | |
94 | 98 | then { | |
95 | - | let x = | |
99 | + | let x = f | |
96 | 100 | x | |
97 | 101 | } | |
98 | 102 | else throw("Match error") | |
99 | 103 | } | |
100 | 104 | let y = { | |
101 | - | let g = parseInt(split(w, ".")[0]) | |
102 | - | if ($isInstanceOf(g, "Unit")) | |
105 | + | let f = getString(a, "exchange_rate") | |
106 | + | if ($isInstanceOf(f, "Unit")) | |
107 | + | then "0" | |
108 | + | else if ($isInstanceOf(f, "String")) | |
109 | + | then { | |
110 | + | let v = f | |
111 | + | v | |
112 | + | } | |
113 | + | else throw("Match error") | |
114 | + | } | |
115 | + | let z = { | |
116 | + | let f = parseInt(y) | |
117 | + | if ($isInstanceOf(f, "Unit")) | |
103 | 118 | then 0 | |
104 | - | else if ($isInstanceOf( | |
119 | + | else if ($isInstanceOf(f, "Int")) | |
105 | 120 | then { | |
106 | - | let | |
107 | - | | |
121 | + | let x = f | |
122 | + | x | |
108 | 123 | } | |
109 | 124 | else throw("Match error") | |
110 | 125 | } | |
111 | 126 | let A = { | |
112 | - | let | |
113 | - | if ($isInstanceOf( | |
127 | + | let f = getString(a, "share_guarantee_fee") | |
128 | + | if ($isInstanceOf(f, "Unit")) | |
114 | 129 | then "0" | |
115 | - | else if ($isInstanceOf( | |
130 | + | else if ($isInstanceOf(f, "String")) | |
116 | 131 | then { | |
117 | - | let x = g | |
132 | + | let v = f | |
133 | + | v | |
134 | + | } | |
135 | + | else throw("Match error") | |
136 | + | } | |
137 | + | let B = { | |
138 | + | let f = parseInt(A) | |
139 | + | if ($isInstanceOf(f, "Unit")) | |
140 | + | then 0 | |
141 | + | else if ($isInstanceOf(f, "Int")) | |
142 | + | then { | |
143 | + | let x = f | |
118 | 144 | x | |
119 | 145 | } | |
120 | 146 | else throw("Match error") | |
121 | 147 | } | |
122 | - | let B = { | |
123 | - | let g = parseInt(A) | |
124 | - | if ($isInstanceOf(g, "Unit")) | |
125 | - | then 0 | |
126 | - | else if ($isInstanceOf(g, "Int")) | |
127 | - | then { | |
128 | - | let z = g | |
129 | - | z | |
130 | - | } | |
131 | - | else throw("Match error") | |
132 | - | } | |
133 | - | let C = { | |
134 | - | let g = getString(a, "share_guarantee_fee") | |
135 | - | if ($isInstanceOf(g, "Unit")) | |
136 | - | then "0" | |
137 | - | else if ($isInstanceOf(g, "String")) | |
138 | - | then { | |
139 | - | let x = g | |
140 | - | x | |
141 | - | } | |
142 | - | else throw("Match error") | |
143 | - | } | |
144 | - | let D = { | |
145 | - | let g = parseInt(C) | |
146 | - | if ($isInstanceOf(g, "Unit")) | |
147 | - | then 0 | |
148 | - | else if ($isInstanceOf(g, "Int")) | |
149 | - | then { | |
150 | - | let z = g | |
151 | - | z | |
152 | - | } | |
153 | - | else throw("Match error") | |
154 | - | } | |
155 | - | let E = (((y * B) * 100) / D) | |
156 | - | let F = ((r * B) / D) | |
157 | - | let G = (u - r) | |
158 | - | if (((y * 100) > r)) | |
159 | - | then throw((((("The security deposit must be more than " + w) + ". You set the size: ") + toString((r / 100))) + ".00")) | |
160 | - | else if ((0 > G)) | |
148 | + | let C = (((w * z) * 100) / B) | |
149 | + | let D = ((p * z) / B) | |
150 | + | let E = (s - p) | |
151 | + | if (((w * 100) > p)) | |
152 | + | then throw((((("The security deposit must be more than " + u) + ". You set the size: ") + toString((p / 100))) + ".00")) | |
153 | + | else if ((0 > E)) | |
161 | 154 | then throw("Not enough balance") | |
162 | - | else if (( | |
163 | - | then throw((((("The nominal value of the promissory bill exceeds the collateral minimum " + toString( | |
164 | - | else if (( | |
165 | - | then throw((((("The value of the token cannot exceed the maximum " + toString( | |
155 | + | else if ((C > q)) | |
156 | + | then throw((((("The nominal value of the promissory bill exceeds the collateral minimum " + toString(C)) + "₽ (") + u) + "tUSD)")) | |
157 | + | else if ((q > D)) | |
158 | + | then throw((((("The value of the token cannot exceed the maximum " + toString(D)) + "₽ of the guarantee deposit (") + toString((p / 100))) + "tUSD)")) | |
166 | 159 | else { | |
167 | - | let | |
168 | - | let | |
169 | - | $Tuple2([IntegerEntry( | |
160 | + | let F = Issue(("bill for:" + toString((p / 100))), ((r + ":") + toString(q)), 1, 0, false) | |
161 | + | let g = calculateAssetId(F) | |
162 | + | $Tuple2([IntegerEntry(r, E), F, ScriptTransfer(d.caller, 1, g), IntegerEntry(("l_u_" + toBase58String(g)), p)], unit) | |
170 | 163 | } | |
171 | 164 | } | |
172 | 165 | ||
173 | 166 | ||
174 | 167 | ||
175 | - | @Callable( | |
176 | - | func deposit () = if ((size( | |
168 | + | @Callable(d) | |
169 | + | func deposit () = if ((size(d.payments) == 0)) | |
177 | 170 | then throw("Payment not attached") | |
178 | 171 | else { | |
179 | - | let | |
180 | - | let | |
181 | - | let | |
182 | - | if ($isInstanceOf( | |
172 | + | let G = value(d.payments)[0] | |
173 | + | let H = { | |
174 | + | let f = getString(a, "min_deposit") | |
175 | + | if ($isInstanceOf(f, "Unit")) | |
183 | 176 | then "0" | |
184 | - | else if ($isInstanceOf( | |
177 | + | else if ($isInstanceOf(f, "String")) | |
185 | 178 | then { | |
186 | - | let x = g | |
179 | + | let v = f | |
180 | + | v | |
181 | + | } | |
182 | + | else throw("Match error") | |
183 | + | } | |
184 | + | let I = { | |
185 | + | let f = parseInt(split(H, ".")[0]) | |
186 | + | if ($isInstanceOf(f, "Unit")) | |
187 | + | then 0 | |
188 | + | else if ($isInstanceOf(f, "Int")) | |
189 | + | then { | |
190 | + | let x = f | |
187 | 191 | x | |
188 | 192 | } | |
189 | 193 | else throw("Match error") | |
190 | 194 | } | |
191 | - | let K = { | |
192 | - | let g = parseInt(split(J, ".")[0]) | |
193 | - | if ($isInstanceOf(g, "Unit")) | |
194 | - | then 0 | |
195 | - | else if ($isInstanceOf(g, "Int")) | |
196 | - | then { | |
197 | - | let z = g | |
198 | - | z | |
199 | - | } | |
200 | - | else throw("Match error") | |
201 | - | } | |
202 | - | if ((I.assetId != d)) | |
195 | + | if ((G.assetId != c)) | |
203 | 196 | then throw("holded payment not tUSD") | |
204 | - | else if ((( | |
205 | - | then throw((((("You have set the deposit amount to " + toString(( | |
197 | + | else if (((I * 100) > G.amount)) | |
198 | + | then throw((((("You have set the deposit amount to " + toString((G.amount / 100))) + ".00, which is less than the minimum (") + H) + ")")) | |
206 | 199 | else { | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | if ($isInstanceOf( | |
200 | + | let r = toBase58String(d.caller.bytes) | |
201 | + | let s = { | |
202 | + | let f = getInteger(this, r) | |
203 | + | if ($isInstanceOf(f, "Int")) | |
211 | 204 | then { | |
212 | - | let | |
213 | - | | |
205 | + | let t = f | |
206 | + | t | |
214 | 207 | } | |
215 | 208 | else 0 | |
216 | 209 | } | |
217 | - | let | |
218 | - | [IntegerEntry( | |
210 | + | let E = (s + G.amount) | |
211 | + | [IntegerEntry(r, E)] | |
219 | 212 | } | |
220 | 213 | } | |
221 | 214 | ||
222 | 215 | ||
223 | 216 | ||
224 | - | @Callable( | |
225 | - | func withdraw ( | |
226 | - | let | |
227 | - | let | |
228 | - | let | |
229 | - | if ($isInstanceOf( | |
217 | + | @Callable(d) | |
218 | + | func withdraw (J) = { | |
219 | + | let r = toBase58String(d.caller.bytes) | |
220 | + | let s = { | |
221 | + | let f = getInteger(this, r) | |
222 | + | if ($isInstanceOf(f, "Int")) | |
230 | 223 | then { | |
231 | - | let | |
232 | - | | |
224 | + | let t = f | |
225 | + | t | |
233 | 226 | } | |
234 | 227 | else 0 | |
235 | 228 | } | |
236 | - | let | |
237 | - | if ((0 > | |
229 | + | let E = (s - J) | |
230 | + | if ((0 > J)) | |
238 | 231 | then throw("Can't withdraw negative amount") | |
239 | - | else if ((0 > | |
232 | + | else if ((0 > E)) | |
240 | 233 | then throw("Not enough balance") | |
241 | - | else $Tuple2([IntegerEntry( | |
234 | + | else $Tuple2([IntegerEntry(r, E), ScriptTransfer(d.caller, J, c)], unit) | |
242 | 235 | } | |
243 | 236 | ||
244 | 237 | ||
245 | 238 | ||
246 | - | @Callable( | |
247 | - | func setOptions ( | |
248 | - | let | |
249 | - | if ((100 >= | |
239 | + | @Callable(d) | |
240 | + | func setOptions (K,L) = { | |
241 | + | let M = size(K) | |
242 | + | if ((100 >= M)) | |
250 | 243 | then { | |
251 | - | let | |
252 | - | let | |
253 | - | if ($isInstanceOf( | |
244 | + | let N = { | |
245 | + | let f = getString(a, "admin_list") | |
246 | + | if ($isInstanceOf(f, "Unit")) | |
254 | 247 | then "unset" | |
255 | - | else if ($isInstanceOf( | |
248 | + | else if ($isInstanceOf(f, "String")) | |
256 | 249 | then { | |
257 | - | let | |
258 | - | | |
250 | + | let v = f | |
251 | + | v | |
259 | 252 | } | |
260 | 253 | else throw("Match error") | |
261 | 254 | } | |
262 | - | func | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | $Tuple2(( | |
255 | + | func O (P,Q) = { | |
256 | + | let R = P | |
257 | + | let S = R._1 | |
258 | + | let T = R._2 | |
259 | + | $Tuple2((S :+ IntegerEntry(K[T], Q)), (T + 1)) | |
267 | 260 | } | |
268 | 261 | ||
269 | - | let | |
270 | - | let | |
271 | - | let | |
272 | - | let | |
273 | - | func | |
274 | - | then | |
275 | - | else | |
262 | + | let o = { | |
263 | + | let U = L | |
264 | + | let V = size(U) | |
265 | + | let W = $Tuple2(nil, 0) | |
266 | + | func X (Y,Z) = if ((Z >= V)) | |
267 | + | then Y | |
268 | + | else O(Y, U[Z]) | |
276 | 269 | ||
277 | - | func | |
278 | - | then | |
270 | + | func aa (Y,Z) = if ((Z >= V)) | |
271 | + | then Y | |
279 | 272 | else throw("List size exceeds 100") | |
280 | 273 | ||
281 | - | | |
274 | + | aa(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X(W, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
282 | 275 | } | |
283 | - | let | |
284 | - | if (( | |
276 | + | let ab = toString(d.caller) | |
277 | + | if ((N != "unset")) | |
285 | 278 | then { | |
286 | - | let | |
287 | - | let | |
288 | - | let | |
289 | - | if ($isInstanceOf( | |
279 | + | let ac = getString(addressFromStringValue(N), ab) | |
280 | + | let ad = { | |
281 | + | let f = ac | |
282 | + | if ($isInstanceOf(f, "String")) | |
290 | 283 | then { | |
291 | - | let | |
292 | - | | |
284 | + | let v = f | |
285 | + | v | |
293 | 286 | } | |
294 | - | else if ($isInstanceOf( | |
287 | + | else if ($isInstanceOf(f, "Unit")) | |
295 | 288 | then "no admin" | |
296 | 289 | else throw("Match error") | |
297 | 290 | } | |
298 | - | func | |
299 | - | let | |
300 | - | StringEntry( | |
291 | + | func ae (af) = { | |
292 | + | let ag = split(af, "|") | |
293 | + | StringEntry(ag[0], ag[1]) | |
301 | 294 | } | |
302 | 295 | ||
303 | - | if (( | |
304 | - | then | |
305 | - | else throw((((((("You not admin: " + | |
296 | + | if ((ad != "no admin")) | |
297 | + | then o | |
298 | + | else throw((((((("You not admin: " + N) + ", isAdmin: ") + ad) + ", callerAddressStr: ") + ab) + ", ")) | |
306 | 299 | } | |
307 | 300 | else throw("Unset admin list") | |
308 | 301 | } | |
309 | 302 | else throw("The number of list elements must not exceed 100") | |
310 | 303 | } | |
311 | 304 | ||
312 | 305 | ||
313 | 306 | ||
314 | - | @Callable( | |
315 | - | func setOption ( | |
316 | - | let | |
317 | - | let | |
318 | - | if ($isInstanceOf( | |
307 | + | @Callable(d) | |
308 | + | func setOption (ah,ai) = { | |
309 | + | let N = { | |
310 | + | let f = getString(a, "admin_list") | |
311 | + | if ($isInstanceOf(f, "Unit")) | |
319 | 312 | then "unset" | |
320 | - | else if ($isInstanceOf( | |
313 | + | else if ($isInstanceOf(f, "String")) | |
321 | 314 | then { | |
322 | - | let | |
323 | - | | |
315 | + | let v = f | |
316 | + | v | |
324 | 317 | } | |
325 | 318 | else throw("Match error") | |
326 | 319 | } | |
327 | - | let | |
328 | - | if (( | |
320 | + | let ab = toString(d.caller) | |
321 | + | if ((N != "unset")) | |
329 | 322 | then { | |
330 | - | let | |
331 | - | let | |
332 | - | let | |
333 | - | if ($isInstanceOf( | |
323 | + | let ac = getString(addressFromStringValue(N), ab) | |
324 | + | let ad = { | |
325 | + | let f = ac | |
326 | + | if ($isInstanceOf(f, "String")) | |
334 | 327 | then { | |
335 | - | let | |
336 | - | | |
328 | + | let v = f | |
329 | + | v | |
337 | 330 | } | |
338 | - | else if ($isInstanceOf( | |
331 | + | else if ($isInstanceOf(f, "Unit")) | |
339 | 332 | then "no admin" | |
340 | 333 | else throw("Match error") | |
341 | 334 | } | |
342 | - | if (( | |
343 | - | then $Tuple2([StringEntry( | |
344 | - | else throw((((((("You not admin: " + | |
335 | + | if ((ad != "no admin")) | |
336 | + | then $Tuple2([StringEntry(ah, ai)], unit) | |
337 | + | else throw((((((("You not admin: " + N) + ", isAdmin: ") + ad) + ", callerAddressStr: ") + ab) + ", ")) | |
345 | 338 | } | |
346 | 339 | else throw("Unset admin list") | |
347 | 340 | } | |
348 | 341 | ||
349 | 342 | ||
350 | 343 | ||
351 | - | @Callable( | |
352 | - | func delOption ( | |
353 | - | let | |
354 | - | let | |
355 | - | if ($isInstanceOf( | |
344 | + | @Callable(d) | |
345 | + | func delOption (ah) = { | |
346 | + | let N = { | |
347 | + | let f = getString(a, "admin_list") | |
348 | + | if ($isInstanceOf(f, "Unit")) | |
356 | 349 | then "unset" | |
357 | - | else if ($isInstanceOf( | |
350 | + | else if ($isInstanceOf(f, "String")) | |
358 | 351 | then { | |
359 | - | let | |
360 | - | | |
352 | + | let v = f | |
353 | + | v | |
361 | 354 | } | |
362 | 355 | else throw("Match error") | |
363 | 356 | } | |
364 | - | let | |
365 | - | if (( | |
357 | + | let ab = toString(d.caller) | |
358 | + | if ((N != "unset")) | |
366 | 359 | then { | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | if ($isInstanceOf( | |
360 | + | let ac = getString(addressFromStringValue(N), ab) | |
361 | + | let ad = { | |
362 | + | let f = ac | |
363 | + | if ($isInstanceOf(f, "String")) | |
371 | 364 | then { | |
372 | - | let | |
373 | - | | |
365 | + | let v = f | |
366 | + | v | |
374 | 367 | } | |
375 | - | else if ($isInstanceOf( | |
368 | + | else if ($isInstanceOf(f, "Unit")) | |
376 | 369 | then "no admin" | |
377 | 370 | else throw("Match error") | |
378 | 371 | } | |
379 | - | if (( | |
380 | - | then $Tuple2([DeleteEntry( | |
381 | - | else throw((((((("You not admin: " + | |
372 | + | if ((ad != "no admin")) | |
373 | + | then $Tuple2([DeleteEntry(ah)], unit) | |
374 | + | else throw((((((("You not admin: " + N) + ", isAdmin: ") + ad) + ", callerAddressStr: ") + ab) + ", ")) | |
382 | 375 | } | |
383 | 376 | else throw("Unset admin list") | |
384 | 377 | } | |
385 | 378 | ||
386 | 379 | ||
387 | - | @Verifier( | |
388 | - | func | |
380 | + | @Verifier(aj) | |
381 | + | func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey) | |
389 | 382 |
github/deemru/w8io/169f3d6 239.02 ms ◑![]()