tx · 5uKFVgcabgMkNd7PdZLu98Bm43T5YYPZVnZjbvKgnsgn

3MrwiwvG6BeUNCyXBfSAHgaXHASsxbjYMVF:  -0.00900000 Waves

2023.02.13 10:16 [2447520] smart account 3MrwiwvG6BeUNCyXBfSAHgaXHASsxbjYMVF > SELF 0.00000000 Waves

{ "type": 13, "id": "5uKFVgcabgMkNd7PdZLu98Bm43T5YYPZVnZjbvKgnsgn", "fee": 900000, "feeAssetId": null, "timestamp": 1676272599547, "version": 2, "chainId": 84, "sender": "3MrwiwvG6BeUNCyXBfSAHgaXHASsxbjYMVF", "senderPublicKey": "7m7j9TNbV4vKeeJqy37XpMNH784X3GGN6acbgLwbBiDD", "proofs": [ "UryGByRgfJ5cSgyUTcuG5wrPvZRpDpgj19fLY3FmomfTPziwc6wnpsfnRc1iL5UonJ4S4rzrENDa8JL53XW6jpX", "2TjZYtvaxKAe9dUao23u5wJ96tux2WFdH7B41oJWBKZtTQkT6nYVySrX99yTLrcyb2aRDdY1VvQE3VpRT4iARB56" ], "script": "base64:BgIXCAISBwoFAQgIGBgSBAoCAQESBAoCAREfAA1rQWRtaW5QdWJLZXkxAgthZG1pbl9wdWJfMQANa0FkbWluUHViS2V5MgILYWRtaW5fcHViXzIADWtBZG1pblB1YktleTMCC2FkbWluX3B1Yl8zABJrQWRtaW5JbnZva2VQdWJLZXkCEGFkbWluX2ludm9rZV9wdWIAEGtNb25leUJveEFkZHJlc3MCEW1vbmV5X2JveF9hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzAAdrQWN0aXZlAgZhY3RpdmUAC2tBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwANa0xhc3RTdXJ2ZXlJZAIObGFzdF9zdXJ2ZXlfaWQAF2tTdXJ2ZXlIZWlnaHRDb21wbGV0aW9uAhlfc3VydmV5X2hlaWdodF9jb21wbGV0aW9uAAxrU3VydmV5VGl0bGUCDV9zdXJ2ZXlfdGl0bGUAEmtTdXJ2ZXlEZXNjcmlwdGlvbgITX3N1cnZleV9kZXNjcmlwdGlvbgARa1N1cnZleU9wdGlvbk5hbWUCE19zdXJ2ZXlfb3B0aW9uX25hbWUAEWtTdXJ2ZXlPcHRpb25UeXBlAhNfc3VydmV5X29wdGlvbl90eXBlAAlrVXNlclZvdGUCEV9zdXJ2ZXlfdXNlcl92b3RlAA9rVG90YWxTd29wVm90ZWQCH19zdXJ2ZXlfb3B0aW9uX3RvdGFsX3N3b3Bfdm90ZWQAD2tVc2VyR1N3b3BJbkdvdgINX0dTd29wX2Ftb3VudAAOa1VzZXJTd29wSW5Hb3YCDF9TV09QX2Ftb3VudAAGb3JhY2xlCQEHQWRkcmVzcwEBGgFUSBOXDMDTM8wlMoC2KfenZGiAq+PMe0uZARNnZXRCYXNlNThGcm9tT3JhY2xlAQNrZXkEByRtYXRjaDAJAJ0IAgUGb3JhY2xlBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQkArAICBQNrZXkCCGlzIGVtcHR5AAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzABFhZG1pblB1YktleUludm9rZQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwAGYWN0aXZlCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGAAphY3RpdmVHbG9iCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQULa0FjdGl2ZUdsb2IGAQhpc0FjdGl2ZQADAwUGYWN0aXZlBQphY3RpdmVHbG9iBwUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBC2lzQWRtaW5DYWxsAQFpAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMFA25pbAgFAWkPY2FsbGVyUHVibGljS2V5BQR1bml0CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ5pc01vbmV5Qm94Q2FsbAEBaQMJAAACBQ9tb25leUJveEFkZHJlc3MIBQFpBmNhbGxlcgUEdW5pdAkAAgECJU9ubHkgTW9uZXkgYm94IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DAWkBCmluaXRTdXJ2ZXkFEGhlaWdodENvbXBsZXRpb24Lc3VydmV5VGl0bGURc3VydmV5RGVzY3JpcHRpb24Hb3B0aW9ucwtvcHRpb25zVHlwZQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAGcCBQZoZWlnaHQFEGhlaWdodENvbXBsZXRpb24JAAIBAj9IZWlnaHQgb2Ygc3VydmV5IGNvbXBsZXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gY3Vycm5ldCBoZWlnaHQDCQBmAgkAkAMBBQdvcHRpb25zAAoJAAIBAiBNYXggMTAgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZAMJAQIhPQIJAJADAQUHb3B0aW9ucwkAkAMBBQtvcHRpb25zVHlwZQkAAgECLFNpemUgb2Ygb3B0aW9uc1R5cGVzIG11c3QgYmUgc2FtZSBhcyBvcHRpb25zBAtuZXdTdXJ2ZXlJZAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa0xhc3RTdXJ2ZXlJZAAAAAEKAQ5wcmVwYXJlT3B0aW9ucwIDYWNjBG5hbWUECyR0MDMxNzMzMjAxBQNhY2MEBXR5cGVzCAULJHQwMzE3MzMyMDECXzEEAWsIBQskdDAzMTczMzIwMQJfMgQGcmVzdWx0CAULJHQwMzE3MzMyMDECXzMEA3JlcwkAzQgCCQDNCAIFBnJlc3VsdAkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkApAMBBQtuZXdTdXJ2ZXlJZAIBXwkApAMBBQFrBRFrU3VydmV5T3B0aW9uTmFtZQUEbmFtZQkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkApAMBBQtuZXdTdXJ2ZXlJZAIBXwkApAMBBQFrBRFrU3VydmV5T3B0aW9uVHlwZQkAkQMCBQV0eXBlcwUBawkAlQoDBQV0eXBlcwkAZAIFAWsAAQUDcmVzBA5vcHRpb25zRW50cmllcwoAAiRsBQdvcHRpb25zCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQtvcHRpb25zVHlwZQAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDnByZXBhcmVPcHRpb25zAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtMYXN0U3VydmV5SWQFC25ld1N1cnZleUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbmV3U3VydmV5SWQFF2tTdXJ2ZXlIZWlnaHRDb21wbGV0aW9uBRBoZWlnaHRDb21wbGV0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkApAMBBQtuZXdTdXJ2ZXlJZAUMa1N1cnZleVRpdGxlBQtzdXJ2ZXlUaXRsZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQULbmV3U3VydmV5SWQFEmtTdXJ2ZXlEZXNjcmlwdGlvbgURc3VydmV5RGVzY3JpcHRpb24FA25pbAgFDm9wdGlvbnNFbnRyaWVzAl8zAWkBBHZvdGUCCHN1cnZleUlkBm9wdGlvbgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICCQCkAwEFCHN1cnZleUlkBQxrU3VydmV5VGl0bGUJAAIBCQCsAgICG1RoZXJlIGlzIG5vIHN1cnZleSB3aXRoIGlkIAkApAMBBQhzdXJ2ZXlJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApAMBBQhzdXJ2ZXlJZAIBXwkApAMBBQZvcHRpb24FEWtTdXJ2ZXlPcHRpb25OYW1lCQACAQkArAICCQCsAgIJAKwCAgITVGhlcmUgaXMgbm8gb3B0aW9uIAkApAMBBQZvcHRpb24CCyBpbiBzdXJ2ZXkgCQCkAwEFCHN1cnZleUlkAwkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApAMBBQhzdXJ2ZXlJZAIBXwkApQgBCAUBaQZjYWxsZXIFCWtVc2VyVm90ZQkAAgECFFlvdSBjYW4ndCB2b3RlIHR3aWNlAwkAZgIFBmhlaWdodAkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQUIc3VydmV5SWQFF2tTdXJ2ZXlIZWlnaHRDb21wbGV0aW9uCQACAQISU3VydmV5IGFscmVhZHkgZW5kAwkAZwIAAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQ9rVXNlckdTd29wSW5Hb3YJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEIBQFpBmNhbGxlcgUOa1VzZXJTd29wSW5Hb3YAAAkAAgECIlN0YWtlIHN3b3AgaW4gZ292ZXJuYW5jZSB0byBzdXJ2ZXkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKQDAQUIc3VydmV5SWQCAV8JAKUIAQgFAWkGY2FsbGVyBQlrVXNlclZvdGUFBm9wdGlvbgUDbmlsAWkBC3dyaXRlVG90YWxzAghzdXJ2ZXlJZAZ0b3RhbHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQ5pc01vbmV5Qm94Q2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkApAMBBQhzdXJ2ZXlJZAUMa1N1cnZleVRpdGxlCQACAQkArAICAhtUaGVyZSBpcyBubyBzdXJ2ZXkgd2l0aCBpZCAJAKQDAQUIc3VydmV5SWQDCQBmAgkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQUIc3VydmV5SWQFF2tTdXJ2ZXlIZWlnaHRDb21wbGV0aW9uBQZoZWlnaHQJAAIBAhdTdXJ2ZXkgaXMgbm90IGVuZGVkIHlldAoBDXByZXBhcmVUb3RhbHMCA2FjYwV0b3RhbAQLJHQwNTk0NTU5NzEFA2FjYwQGb3B0aW9uCAULJHQwNTk0NTU5NzECXzEEBnJlc3VsdAgFCyR0MDU5NDU1OTcxAl8yBANyZXMJAM0IAgUGcmVzdWx0CQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApAMBBQhzdXJ2ZXlJZAIBXwkApAMBBQZvcHRpb24FD2tUb3RhbFN3b3BWb3RlZAUFdG90YWwJAJQKAgkAZAIFBm9wdGlvbgABBQNyZXMEDm9wdGlvbnNFbnRyaWVzCgACJGwFBnRvdGFscwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDXByZXBhcmVUb3RhbHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoIBQ5vcHRpb25zRW50cmllcwJfMgECdHgBBnZlcmlmeQAEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgFAsTc=", "height": 2447520, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HPuxJXFWjys9TwyX4GvPpyq17rmLEPTc7CDY73AnkQRB Next: 54s5B1bRQ1y3W61BpnySFHZ3oL7ZEvYTe9tncYnwBeGM Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let kAdminPubKey1 = "admin_pub_1"
55
66 let kAdminPubKey2 = "admin_pub_2"
77
88 let kAdminPubKey3 = "admin_pub_3"
99
1010 let kAdminInvokePubKey = "admin_invoke_pub"
1111
1212 let kMoneyBoxAddress = "money_box_address"
1313
1414 let kGovAddress = "governance_address"
1515
1616 let kActive = "active"
1717
1818 let kActiveGlob = "active_all_contracts"
1919
2020 let kLastSurveyId = "last_survey_id"
2121
2222 let kSurveyHeightCompletion = "_survey_height_completion"
2323
2424 let kSurveyTitle = "_survey_title"
2525
2626 let kSurveyDescription = "_survey_description"
2727
2828 let kSurveyOptionName = "_survey_option_name"
2929
3030 let kSurveyOptionType = "_survey_option_type"
3131
3232 let kUserVote = "_survey_user_vote"
3333
3434 let kTotalSwopVoted = "_survey_option_total_swop_voted"
3535
3636 let kUserGSwopInGov = "_GSwop_amount"
3737
3838 let kUserSwopInGov = "_SWOP_amount"
3939
4040 let oracle = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
4141
4242 func getBase58FromOracle (key) = match getString(oracle, key) {
4343 case string: String =>
4444 fromBase58String(string)
4545 case nothing =>
4646 throw((key + "is empty"))
4747 }
4848
4949
5050 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
5151
5252 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
5353
5454 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
5555
5656 let adminPubKeyInvoke = getBase58FromOracle(kAdminInvokePubKey)
5757
5858 let moneyBoxAddress = Address(getBase58FromOracle(kMoneyBoxAddress))
5959
6060 let govAddress = Address(getBase58FromOracle(kGovAddress))
6161
6262 let active = valueOrElse(getBoolean(this, kActive), true)
6363
6464 let activeGlob = valueOrElse(getBoolean(oracle, kActiveGlob), true)
6565
6666 func isActive () = if (if (active)
6767 then activeGlob
6868 else false)
6969 then unit
7070 else throw("DApp is inactive at this moment")
7171
7272
7373 func isAdminCall (i) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
7474 then unit
7575 else throw("Only admin can call this function")
7676
7777
7878 func isMoneyBoxCall (i) = if ((moneyBoxAddress == i.caller))
7979 then unit
8080 else throw("Only Money box can call this function")
8181
8282
8383 @Callable(i)
8484 func initSurvey (heightCompletion,surveyTitle,surveyDescription,options,optionsType) = valueOrElse(isActive(), valueOrElse(isAdminCall(i), if ((height >= heightCompletion))
8585 then throw("Height of survey completion must be greater than currnet height")
8686 else if ((size(options) > 10))
8787 then throw("Max 10 options must be specified")
8888 else if ((size(options) != size(optionsType)))
8989 then throw("Size of optionsTypes must be same as options")
9090 else {
9191 let newSurveyId = (valueOrElse(getInteger(this, kLastSurveyId), 0) + 1)
9292 func prepareOptions (acc,name) = {
9393 let $t031733201 = acc
9494 let types = $t031733201._1
9595 let k = $t031733201._2
9696 let result = $t031733201._3
9797 let res = ((result :+ StringEntry((((toString(newSurveyId) + "_") + toString(k)) + kSurveyOptionName), name)) :+ StringEntry((((toString(newSurveyId) + "_") + toString(k)) + kSurveyOptionType), types[k]))
9898 $Tuple3(types, (k + 1), res)
9999 }
100100
101101 let optionsEntries = {
102102 let $l = options
103103 let $s = size($l)
104104 let $acc0 = $Tuple3(optionsType, 0, nil)
105105 func $f0_1 ($a,$i) = if (($i >= $s))
106106 then $a
107107 else prepareOptions($a, $l[$i])
108108
109109 func $f0_2 ($a,$i) = if (($i >= $s))
110110 then $a
111111 else throw("List size exceeds 10")
112112
113113 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
114114 }
115115 ([IntegerEntry(kLastSurveyId, newSurveyId), IntegerEntry((toString(newSurveyId) + kSurveyHeightCompletion), heightCompletion), StringEntry((toString(newSurveyId) + kSurveyTitle), surveyTitle), StringEntry((toString(newSurveyId) + kSurveyDescription), surveyDescription)] ++ optionsEntries._3)
116116 }))
117117
118118
119119
120120 @Callable(i)
121121 func vote (surveyId,option) = valueOrElse(isActive(), if (!(isDefined(getString(this, (toString(surveyId) + kSurveyTitle)))))
122122 then throw(("There is no survey with id " + toString(surveyId)))
123123 else if (!(isDefined(getString(this, (((toString(surveyId) + "_") + toString(option)) + kSurveyOptionName)))))
124124 then throw(((("There is no option " + toString(option)) + " in survey ") + toString(surveyId)))
125125 else if (isDefined(getInteger(this, (((toString(surveyId) + "_") + toString(i.caller)) + kUserVote))))
126126 then throw("You can't vote twice")
127127 else if ((height > value(getInteger(this, (toString(surveyId) + kSurveyHeightCompletion)))))
128128 then throw("Survey already end")
129129 else if ((0 >= valueOrElse(getInteger(govAddress, (toString(i.caller) + kUserGSwopInGov)), valueOrElse(getInteger(govAddress, (toString(i.caller) + kUserSwopInGov)), 0))))
130130 then throw("Stake swop in governance to survey")
131131 else [IntegerEntry((((toString(surveyId) + "_") + toString(i.caller)) + kUserVote), option)])
132132
133133
134134
135135 @Callable(i)
136136 func writeTotals (surveyId,totals) = valueOrElse(isActive(), valueOrElse(isMoneyBoxCall(i), if (!(isDefined(getString(this, (toString(surveyId) + kSurveyTitle)))))
137137 then throw(("There is no survey with id " + toString(surveyId)))
138138 else if ((value(getInteger(this, (toString(surveyId) + kSurveyHeightCompletion))) > height))
139139 then throw("Survey is not ended yet")
140140 else {
141141 func prepareTotals (acc,total) = {
142142 let $t059455971 = acc
143143 let option = $t059455971._1
144144 let result = $t059455971._2
145145 let res = (result :+ IntegerEntry((((toString(surveyId) + "_") + toString(option)) + kTotalSwopVoted), total))
146146 $Tuple2((option + 1), res)
147147 }
148148
149149 let optionsEntries = {
150150 let $l = totals
151151 let $s = size($l)
152152 let $acc0 = $Tuple2(0, nil)
153153 func $f0_1 ($a,$i) = if (($i >= $s))
154154 then $a
155155 else prepareTotals($a, $l[$i])
156156
157157 func $f0_2 ($a,$i) = if (($i >= $s))
158158 then $a
159159 else throw("List size exceeds 10")
160160
161161 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
162162 }
163163 optionsEntries._2
164164 }))
165165
166166
167167 @Verifier(tx)
168168 func verify () = {
169169 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
170170 then 1
171171 else 0
172172 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
173173 then 1
174174 else 0
175175 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
176176 then 1
177177 else 0
178178 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
179179 }
180180

github/deemru/w8io/169f3d6 
36.33 ms