tx · FR9hkoL5DYtMkN9PmCmvHF2wymRKksghPECaUoje9zQS

3MxXA443AARoS3rQ9RNdPeBur74yBTCTyxJ:  -0.03400000 Waves

2023.01.09 11:30 [2397166] smart account 3MxXA443AARoS3rQ9RNdPeBur74yBTCTyxJ > SELF 0.00000000 Waves

{ "type": 13, "id": "FR9hkoL5DYtMkN9PmCmvHF2wymRKksghPECaUoje9zQS", "fee": 3400000, "feeAssetId": null, "timestamp": 1673253069684, "version": 2, "chainId": 84, "sender": "3MxXA443AARoS3rQ9RNdPeBur74yBTCTyxJ", "senderPublicKey": "Dhf95pPhxwKtWsqgf6tyeDW2xpQA7TvM8nTwbwgqKjkd", "proofs": [ "2gWp93xDhvLb8y6veTA5aypA4eTxEbZvN8jCnbJecPB15SKAJUKfE8chkGPoHf5s76MiNZHyP1d8tA3UCkGjpduW" ], "script": "base64:BgJeCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIECgIICBIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBsAE2tfaW5zdXJhbmNlX2FkZHJlc3MCE2tfaW5zdXJhbmNlX2FkZHJlc3MAD2tfdmF1bHRfYWRkcmVzcwIPa192YXVsdF9hZGRyZXNzAA9rX2FkbWluX2FkZHJlc3MCD2tfYWRtaW5fYWRkcmVzcwASa19hZG1pbl9wdWJsaWNfa2V5AhJrX2FkbWluX3B1YmxpY19rZXkADWtfcXVvdGVfYXNzZXQCDWtfcXVvdGVfYXNzZXQAD2tfcXVvdGVfc3Rha2luZwIPa19xdW90ZV9zdGFraW5nABFrX3N0YWtpbmdfYWRkcmVzcwIRa19zdGFraW5nX2FkZHJlc3MAEWtfZmFybWluZ19hZGRyZXNzAhFrX2Zhcm1pbmdfYWRkcmVzcwAQa19wcml6ZXNfYWRkcmVzcwIQa19wcml6ZXNfYWRkcmVzcwAVa19ob3VzZWtlZXBlcl9hZGRyZXNzAhVrX2hvdXNla2VlcGVyX2FkZHJlc3MABWtfYW1tAgVrX2FtbQAKa19hbW1fZGF0YQIKa19hbW1fZGF0YQASa19nb3Zlcm5hbmNlX2Fzc2V0AgtrX2dvdl9hc3NldAAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MAEGtfb3JkZXJzX2FkZHJlc3MCEGtfb3JkZXJzX2FkZHJlc3MAEmtfcmVmZXJyYWxfYWRkcmVzcwISa19yZWZlcnJhbF9hZGRyZXNzABFrX21hbmFnZXJfYWRkcmVzcwIRa19tYW5hZ2VyX2FkZHJlc3MAFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwIVa19uZnRfbWFuYWdlcl9hZGRyZXNzABRrX2NvbGxhdGVyYWxfYWRkcmVzcwIUa19jb2xsYXRlcmFsX2FkZHJlc3MAEmtfZXhjaGFuZ2VfYWRkcmVzcwISa19leGNoYW5nZV9hZGRyZXNzAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzARFnZXRBZGRyZXNzSWZWYWxpZAEHYWRkcmVzcwkApQgBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUHYWRkcmVzcwkArAICCQCsAgICDUNhbid0IHBhcnNlICIFB2FkZHJlc3MCDCIgYXMgYWRkcmVzcwEOYWRtaW5QdWJsaWNLZXkACQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRJrX2FkbWluX3B1YmxpY19rZXkBCWlzTm9BZG1pbgAJAAACCQCdCAIFBHRoaXMFD2tfYWRtaW5fYWRkcmVzcwUEdW5pdAEFYWRtaW4ACQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa19hZG1pbl9hZGRyZXNzAhFBZG1pbiBub3QgZGVmaW5lZAEQaXNOb0FkbWluT3JBZG1pbgEBaQMDCQEJaXNOb0FkbWluAAYJAAACCAUBaQZjYWxsZXIJAQVhZG1pbgAFBHVuaXQJAAIBAi5Pbmx5IHRoZSBBZG1pbiBpdHNlbGYgY2FuIGludm9rZSB0aGlzIGZ1bmN0aW9uAQdpc0FkbWluAQFpAwkAAAIIBQFpBmNhbGxlcgkBBWFkbWluAAUEdW5pdAkAAgECLk9ubHkgdGhlIEFkbWluIGl0c2VsZiBjYW4gaW52b2tlIHRoaXMgZnVuY3Rpb24SAWkBCHNldEFkbWluAQ9fYWRtaW5QdWJsaWNLZXkJAQt2YWx1ZU9yRWxzZQIJARBpc05vQWRtaW5PckFkbWluAQUBaQQFYnl0ZXMJANkEAQUPX2FkbWluUHVibGljS2V5BAdhZGRyZXNzCQCnCAEFBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tfYWRtaW5fYWRkcmVzcwkApQgBBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFEmtfYWRtaW5fcHVibGljX2tleQUPX2FkbWluUHVibGljS2V5BQNuaWwBaQEQc2V0SW5zdXJhbmNlRnVuZAEOX2luc3VyYW5jZUZ1bmQJAQt2YWx1ZU9yRWxzZQIJAQdpc0FkbWluAQUBaQQHYWRkcmVzcwkBEWdldEFkZHJlc3NJZlZhbGlkAQUOX2luc3VyYW5jZUZ1bmQJAMwIAgkBC1N0cmluZ0VudHJ5AgUTa19pbnN1cmFuY2VfYWRkcmVzcwUHYWRkcmVzcwUDbmlsAWkBEXNldExpcXVpZGl0eU1pbmVyAQ9fbGlxdWlkaXR5TWluZXIJAQt2YWx1ZU9yRWxzZQIJAQdpc0FkbWluAQUBaQQHYWRkcmVzcwkBEWdldEFkZHJlc3NJZlZhbGlkAQUPX2xpcXVpZGl0eU1pbmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tfbWluZXJfYWRkcmVzcwUHYWRkcmVzcwUDbmlsAWkBCXNldE9yZGVycwEHX29yZGVycwkBC3ZhbHVlT3JFbHNlAgkBB2lzQWRtaW4BBQFpBAdhZGRyZXNzCQERZ2V0QWRkcmVzc0lmVmFsaWQBBQdfb3JkZXJzCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGtfb3JkZXJzX2FkZHJlc3MFB2FkZHJlc3MFA25pbAFpAQtzZXRSZWZlcnJhbAEJX3JlZmVycmFsCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkEB2FkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFCV9yZWZlcnJhbAkAzAgCCQELU3RyaW5nRW50cnkCBRJrX3JlZmVycmFsX2FkZHJlc3MFB2FkZHJlc3MFA25pbAFpAQpzZXRGYXJtaW5nAQhfZmFybWluZwkBC3ZhbHVlT3JFbHNlAgkBB2lzQWRtaW4BBQFpBAdhZGRyZXNzCQERZ2V0QWRkcmVzc0lmVmFsaWQBBQhfZmFybWluZwkAzAgCCQELU3RyaW5nRW50cnkCBRFrX2Zhcm1pbmdfYWRkcmVzcwUHYWRkcmVzcwUDbmlsAWkBCnNldE1hbmFnZXIBCF9tYW5hZ2VyCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkEB2FkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFCF9tYW5hZ2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIFEWtfbWFuYWdlcl9hZGRyZXNzBQdhZGRyZXNzBQNuaWwBaQEOc2V0SG91c2VrZWVwZXIBDF9ob3VzZWtlZXBlcgkBC3ZhbHVlT3JFbHNlAgkBB2lzQWRtaW4BBQFpBAdhZGRyZXNzCQERZ2V0QWRkcmVzc0lmVmFsaWQBBQxfaG91c2VrZWVwZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUVa19ob3VzZWtlZXBlcl9hZGRyZXNzBQdhZGRyZXNzBQNuaWwBaQEJc2V0UHJpemVzAQdfcHJpemVzCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkEB2FkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFB19wcml6ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgUQa19wcml6ZXNfYWRkcmVzcwUHYWRkcmVzcwUDbmlsAWkBDXNldE5mdE1hbmFnZXIBC19uZnRNYW5hZ2VyCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkEB2FkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFC19uZnRNYW5hZ2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIFFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwUHYWRkcmVzcwUDbmlsAWkBDXNldFF1b3RlQXNzZXQCCF9hc3NldElkD19zdGFraW5nQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkBB2lzQWRtaW4BBQFpBA5zdGFraW5nQWRkcmVzcwkBEWdldEFkZHJlc3NJZlZhbGlkAQUPX3N0YWtpbmdBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfcXVvdGVfYXNzZXQFCF9hc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tfcXVvdGVfc3Rha2luZwUPX3N0YWtpbmdBZGRyZXNzBQNuaWwBaQERc2V0U3Rha2luZ0FkZHJlc3MBD19zdGFraW5nQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkBB2lzQWRtaW4BBQFpBA5zdGFraW5nQWRkcmVzcwkBEWdldEFkZHJlc3NJZlZhbGlkAQUPX3N0YWtpbmdBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFEWtfc3Rha2luZ19hZGRyZXNzBQ9fc3Rha2luZ0FkZHJlc3MFA25pbAFpARRzZXRDb2xsYXRlcmFsQWRkcmVzcwESX2NvbGxhdGVyYWxBZGRyZXNzCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkEEWNvbGxhdGVyYWxBZGRyZXNzCQERZ2V0QWRkcmVzc0lmVmFsaWQBBRJfY29sbGF0ZXJhbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgUUa19jb2xsYXRlcmFsX2FkZHJlc3MFEl9jb2xsYXRlcmFsQWRkcmVzcwUDbmlsAWkBEnNldEV4Y2hhbmdlQWRkcmVzcwEQX2V4Y2hhbmdlQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkBB2lzQWRtaW4BBQFpBA9leGNoYW5nZUFkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFEF9leGNoYW5nZUFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgUSa19leGNoYW5nZV9hZGRyZXNzBRBfZXhjaGFuZ2VBZGRyZXNzBQNuaWwBaQEPc2V0VmF1bHRBZGRyZXNzAQ1fdmF1bHRBZGRyZXNzCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkED2V4Y2hhbmdlQWRkcmVzcwkBEWdldEFkZHJlc3NJZlZhbGlkAQUNX3ZhdWx0QWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCBQ9rX3ZhdWx0X2FkZHJlc3MFDV92YXVsdEFkZHJlc3MFA25pbAFpAQZhZGRBbW0CC19hbW1BZGRyZXNzBV9kYXRhCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkECmFtbUFkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFC19hbW1BZGRyZXNzCQDMCAIJAQxCb29sZWFuRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQULX2FtbUFkZHJlc3MGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFCmtfYW1tX2RhdGEFC19hbW1BZGRyZXNzBQVfZGF0YQUDbmlsAWkBCXJlbW92ZUFtbQELX2FtbUFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAQdpc0FkbWluAQUBaQkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQULX2FtbUFkZHJlc3MFA25pbAFpARJzZXRHb3Zlcm5hbmNlQXNzZXQBCF9hc3NldElkCQELdmFsdWVPckVsc2UCCQEHaXNBZG1pbgEFAWkECmFzc2V0Qnl0ZXMJANkEAQUIX2Fzc2V0SWQEByRtYXRjaDAJAOwHAQUKYXNzZXRCeXRlcwMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDADCQECIT0CCAUFYXNzZXQIZGVjaW1hbHMACAkAAgECI0ludmFsaWQgYXNzZXQgZGVjaW1hbHMsIHNob3VsZCBiZSA4CQDMCAIJAQtTdHJpbmdFbnRyeQIFEmtfZ292ZXJuYW5jZV9hc3NldAUIX2Fzc2V0SWQFA25pbAkAAgECEENhbid0IGZpbmQgYXNzZXQBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQ5hZG1pblB1YmxpY0tleQBp6u4k", "height": 2397166, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Atujbkv7E2XksrY1XPzZ2U3C5VrLfbh4EGrAjzoTCvbM Next: GKcv2oYdn8wCF25xBedSsBRTsuUioj6NnBDzBdMNYQDy Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let k_insurance_address = "k_insurance_address"
5+
6+let k_vault_address = "k_vault_address"
57
68 let k_admin_address = "k_admin_address"
79
180182
181183
182184 @Callable(i)
185+func setVaultAddress (_vaultAddress) = valueOrElse(isAdmin(i), {
186+ let exchangeAddress = getAddressIfValid(_vaultAddress)
187+[StringEntry(k_vault_address, _vaultAddress)]
188+ })
189+
190+
191+
192+@Callable(i)
183193 func addAmm (_ammAddress,_data) = valueOrElse(isAdmin(i), {
184194 let ammAddress = getAddressIfValid(_ammAddress)
185195 [BooleanEntry(toCompositeKey(k_amm, _ammAddress), true), StringEntry(toCompositeKey(k_amm_data, _ammAddress), _data)]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let k_insurance_address = "k_insurance_address"
5+
6+let k_vault_address = "k_vault_address"
57
68 let k_admin_address = "k_admin_address"
79
810 let k_admin_public_key = "k_admin_public_key"
911
1012 let k_quote_asset = "k_quote_asset"
1113
1214 let k_quote_staking = "k_quote_staking"
1315
1416 let k_staking_address = "k_staking_address"
1517
1618 let k_farming_address = "k_farming_address"
1719
1820 let k_prizes_address = "k_prizes_address"
1921
2022 let k_housekeeper_address = "k_housekeeper_address"
2123
2224 let k_amm = "k_amm"
2325
2426 let k_amm_data = "k_amm_data"
2527
2628 let k_governance_asset = "k_gov_asset"
2729
2830 let k_miner_address = "k_miner_address"
2931
3032 let k_orders_address = "k_orders_address"
3133
3234 let k_referral_address = "k_referral_address"
3335
3436 let k_manager_address = "k_manager_address"
3537
3638 let k_nft_manager_address = "k_nft_manager_address"
3739
3840 let k_collateral_address = "k_collateral_address"
3941
4042 let k_exchange_address = "k_exchange_address"
4143
4244 func toCompositeKey (_key,_address) = ((_key + "_") + _address)
4345
4446
4547 func getAddressIfValid (address) = toString(valueOrErrorMessage(addressFromString(address), (("Can't parse \"" + address) + "\" as address")))
4648
4749
4850 func adminPublicKey () = getStringValue(this, k_admin_public_key)
4951
5052
5153 func isNoAdmin () = (getString(this, k_admin_address) == unit)
5254
5355
5456 func admin () = addressFromStringValue(valueOrErrorMessage(getString(this, k_admin_address), "Admin not defined"))
5557
5658
5759 func isNoAdminOrAdmin (i) = if (if (isNoAdmin())
5860 then true
5961 else (i.caller == admin()))
6062 then unit
6163 else throw("Only the Admin itself can invoke this function")
6264
6365
6466 func isAdmin (i) = if ((i.caller == admin()))
6567 then unit
6668 else throw("Only the Admin itself can invoke this function")
6769
6870
6971 @Callable(i)
7072 func setAdmin (_adminPublicKey) = valueOrElse(isNoAdminOrAdmin(i), {
7173 let bytes = fromBase58String(_adminPublicKey)
7274 let address = addressFromPublicKey(bytes)
7375 [StringEntry(k_admin_address, toString(address)), StringEntry(k_admin_public_key, _adminPublicKey)]
7476 })
7577
7678
7779
7880 @Callable(i)
7981 func setInsuranceFund (_insuranceFund) = valueOrElse(isAdmin(i), {
8082 let address = getAddressIfValid(_insuranceFund)
8183 [StringEntry(k_insurance_address, address)]
8284 })
8385
8486
8587
8688 @Callable(i)
8789 func setLiquidityMiner (_liquidityMiner) = valueOrElse(isAdmin(i), {
8890 let address = getAddressIfValid(_liquidityMiner)
8991 [StringEntry(k_miner_address, address)]
9092 })
9193
9294
9395
9496 @Callable(i)
9597 func setOrders (_orders) = valueOrElse(isAdmin(i), {
9698 let address = getAddressIfValid(_orders)
9799 [StringEntry(k_orders_address, address)]
98100 })
99101
100102
101103
102104 @Callable(i)
103105 func setReferral (_referral) = valueOrElse(isAdmin(i), {
104106 let address = getAddressIfValid(_referral)
105107 [StringEntry(k_referral_address, address)]
106108 })
107109
108110
109111
110112 @Callable(i)
111113 func setFarming (_farming) = valueOrElse(isAdmin(i), {
112114 let address = getAddressIfValid(_farming)
113115 [StringEntry(k_farming_address, address)]
114116 })
115117
116118
117119
118120 @Callable(i)
119121 func setManager (_manager) = valueOrElse(isAdmin(i), {
120122 let address = getAddressIfValid(_manager)
121123 [StringEntry(k_manager_address, address)]
122124 })
123125
124126
125127
126128 @Callable(i)
127129 func setHousekeeper (_housekeeper) = valueOrElse(isAdmin(i), {
128130 let address = getAddressIfValid(_housekeeper)
129131 [StringEntry(k_housekeeper_address, address)]
130132 })
131133
132134
133135
134136 @Callable(i)
135137 func setPrizes (_prizes) = valueOrElse(isAdmin(i), {
136138 let address = getAddressIfValid(_prizes)
137139 [StringEntry(k_prizes_address, address)]
138140 })
139141
140142
141143
142144 @Callable(i)
143145 func setNftManager (_nftManager) = valueOrElse(isAdmin(i), {
144146 let address = getAddressIfValid(_nftManager)
145147 [StringEntry(k_nft_manager_address, address)]
146148 })
147149
148150
149151
150152 @Callable(i)
151153 func setQuoteAsset (_assetId,_stakingAddress) = valueOrElse(isAdmin(i), {
152154 let stakingAddress = getAddressIfValid(_stakingAddress)
153155 [StringEntry(k_quote_asset, _assetId), StringEntry(k_quote_staking, _stakingAddress)]
154156 })
155157
156158
157159
158160 @Callable(i)
159161 func setStakingAddress (_stakingAddress) = valueOrElse(isAdmin(i), {
160162 let stakingAddress = getAddressIfValid(_stakingAddress)
161163 [StringEntry(k_staking_address, _stakingAddress)]
162164 })
163165
164166
165167
166168 @Callable(i)
167169 func setCollateralAddress (_collateralAddress) = valueOrElse(isAdmin(i), {
168170 let collateralAddress = getAddressIfValid(_collateralAddress)
169171 [StringEntry(k_collateral_address, _collateralAddress)]
170172 })
171173
172174
173175
174176 @Callable(i)
175177 func setExchangeAddress (_exchangeAddress) = valueOrElse(isAdmin(i), {
176178 let exchangeAddress = getAddressIfValid(_exchangeAddress)
177179 [StringEntry(k_exchange_address, _exchangeAddress)]
178180 })
179181
180182
181183
182184 @Callable(i)
185+func setVaultAddress (_vaultAddress) = valueOrElse(isAdmin(i), {
186+ let exchangeAddress = getAddressIfValid(_vaultAddress)
187+[StringEntry(k_vault_address, _vaultAddress)]
188+ })
189+
190+
191+
192+@Callable(i)
183193 func addAmm (_ammAddress,_data) = valueOrElse(isAdmin(i), {
184194 let ammAddress = getAddressIfValid(_ammAddress)
185195 [BooleanEntry(toCompositeKey(k_amm, _ammAddress), true), StringEntry(toCompositeKey(k_amm_data, _ammAddress), _data)]
186196 })
187197
188198
189199
190200 @Callable(i)
191201 func removeAmm (_ammAddress) = valueOrElse(isAdmin(i), [DeleteEntry(toCompositeKey(k_amm, _ammAddress))])
192202
193203
194204
195205 @Callable(i)
196206 func setGovernanceAsset (_assetId) = valueOrElse(isAdmin(i), {
197207 let assetBytes = fromBase58String(_assetId)
198208 match assetInfo(assetBytes) {
199209 case asset: Asset =>
200210 if ((asset.decimals != 8))
201211 then throw("Invalid asset decimals, should be 8")
202212 else [StringEntry(k_governance_asset, _assetId)]
203213 case _ =>
204214 throw("Can't find asset")
205215 }
206216 })
207217
208218
209219 @Verifier(tx)
210220 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(adminPublicKey()))
211221

github/deemru/w8io/3ef1775 
43.75 ms