tx · BDuazYs748gsY1LWuUZuPJ5RidSHLB8JQJz4zz7buEbf 3PNX5vxV7cpKcrfMhGHkSzv1wGTY3yvvJfH: -0.01000000 Waves 2023.09.15 15:07 [3822252] smart account 3PNX5vxV7cpKcrfMhGHkSzv1wGTY3yvvJfH > SELF 0.00000000 Waves
{ "type": 13, "id": "BDuazYs748gsY1LWuUZuPJ5RidSHLB8JQJz4zz7buEbf", "fee": 1000000, "feeAssetId": null, "timestamp": 1694779650954, "version": 2, "chainId": 87, "sender": "3PNX5vxV7cpKcrfMhGHkSzv1wGTY3yvvJfH", "senderPublicKey": "2oT2Sm9zDbTqBjBj9NRGKJDHJgSLDsvx1EV9TBU6su2C", "proofs": [ "RcL2eEGShz44ijKq2QLQ3F28DsneNxjs8u2R5WnN3LvFrg3VBX3sZvXLYdVhsNsHDaz83tkTJCTqxtG9WAV85tv" ], "script": "base64:BgIICAISBAoCGAEEAAx2ZXJpZmllcnNLZXkCCXZlcmlmaWVycwAUdmVyaWZpZXJzUmVxdWlyZWRLZXkCEXZlcmlmaWVyc1JlcXVpcmVkABBpc0NvbnN0cnVjdGVkS2V5Ag1pc0NvbnN0cnVjdGVkAANTRVACAl9fAQFpAQtjb25zdHJ1Y3RvcgIJdmVyaWZpZXJzEXJlcXVpcmVkVmVyaWZpZXJzAwkBCWlzRGVmaW5lZAEJAKAIAQUQaXNDb25zdHJ1Y3RlZEtleQkAAgECI0NvbnN0cnVjdG9yIGNhbiBiZSBjYWxsZWQganVzdCBvbmNlAwkAZgIJAJADAQUJdmVyaWZpZXJzAAgJAAIBAhlNYXggdmVyaWZpZXJzIG51bWJlciBpcyA4AwkAZgIFEXJlcXVpcmVkVmVyaWZpZXJzCQCQAwEFCXZlcmlmaWVycwkAAgECHldyb25nIHJlcXVpcmVkIHZlcmlmaWVycyBjb3VudAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUQaXNDb25zdHJ1Y3RlZEtleQYJAMwIAgkBC1N0cmluZ0VudHJ5AgUMdmVyaWZpZXJzS2V5CQC5CQIFCXZlcmlmaWVycwUDU0VQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRR2ZXJpZmllcnNSZXF1aXJlZEtleQURcmVxdWlyZWRWZXJpZmllcnMFA25pbAECdHgBBnZlcmlmeQAECXZlcmlmaWVycwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1OCkBBQx2ZXJpZmllcnNLZXkFA1NFUAQRdmVyaWZpZXJzUmVxdWlyZWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFFHZlcmlmaWVyc1JlcXVpcmVkS2V5CgEDc3VtAgVhY2N1bQRuZXh0BBR2YWxpZGF0ZWRQcm9vZnNDb3VudAgFBWFjY3VtAl8xBBJjdXJyZW50UHJvb2ZzSW5kZXgIBQVhY2N1bQJfMgQKaXNWZXJpZmllZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzBRJjdXJyZW50UHJvb2ZzSW5kZXgJANkEAQUEbmV4dAABAAAJAJQKAgkAZAIFFHZhbGlkYXRlZFByb29mc0NvdW50BQppc1ZlcmlmaWVkCQBkAgUSY3VycmVudFByb29mc0luZGV4AAEEDnZhbGlkYXRpb25EYXRhCgACJGwFCXZlcmlmaWVycwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA3N1bQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgJAGcCCAUOdmFsaWRhdGlvbkRhdGECXzEFEXZlcmlmaWVyc1JlcXVpcmVknFHjrA==", "height": 3822252, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let verifiersKey = "verifiers" | |
5 | + | ||
6 | + | let verifiersRequiredKey = "verifiersRequired" | |
7 | + | ||
8 | + | let isConstructedKey = "isConstructed" | |
9 | + | ||
10 | + | let SEP = "__" | |
11 | + | ||
12 | + | @Callable(i) | |
13 | + | func constructor (verifiers,requiredVerifiers) = if (isDefined(getBoolean(isConstructedKey))) | |
14 | + | then throw("Constructor can be called just once") | |
15 | + | else if ((size(verifiers) > 8)) | |
16 | + | then throw("Max verifiers number is 8") | |
17 | + | else if ((requiredVerifiers > size(verifiers))) | |
18 | + | then throw("Wrong required verifiers count") | |
19 | + | else [BooleanEntry(isConstructedKey, true), StringEntry(verifiersKey, makeString(verifiers, SEP)), IntegerEntry(verifiersRequiredKey, requiredVerifiers)] | |
20 | + | ||
21 | + | ||
22 | + | @Verifier(tx) | |
23 | + | func verify () = { | |
24 | + | let verifiers = split(getStringValue(verifiersKey), SEP) | |
25 | + | let verifiersRequired = getIntegerValue(verifiersRequiredKey) | |
26 | + | func sum (accum,next) = { | |
27 | + | let validatedProofsCount = accum._1 | |
28 | + | let currentProofsIndex = accum._2 | |
29 | + | let isVerified = if (sigVerify(tx.bodyBytes, tx.proofs[currentProofsIndex], fromBase58String(next))) | |
30 | + | then 1 | |
31 | + | else 0 | |
32 | + | $Tuple2((validatedProofsCount + isVerified), (currentProofsIndex + 1)) | |
33 | + | } | |
34 | + | ||
35 | + | let validationData = { | |
36 | + | let $l = verifiers | |
37 | + | let $s = size($l) | |
38 | + | let $acc0 = $Tuple2(0, 0) | |
39 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
40 | + | then $a | |
41 | + | else sum($a, $l[$i]) | |
42 | + | ||
43 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
44 | + | then $a | |
45 | + | else throw("List size exceeds 8") | |
46 | + | ||
47 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8) | |
48 | + | } | |
49 | + | (validationData._1 >= verifiersRequired) | |
50 | + | } | |
51 | + |
github/deemru/w8io/3ef1775 19.14 ms ◑