tx · 6afjE2GJ9yrFhZynkCRYQMpTg4h59YgJNMsjumUhWxLP
3N4aFcsnij7Y1qGaQTLFNN2px73fHsXQHe9: -0.03700000 Waves
2022.10.06 10:42 [2260170] smart account 3N4aFcsnij7Y1qGaQTLFNN2px73fHsXQHe9 > SELF 0.00000000 Waves
{
"type": 13,
"id": "6afjE2GJ9yrFhZynkCRYQMpTg4h59YgJNMsjumUhWxLP",
"fee": 3700000,
"feeAssetId": null,
"timestamp": 1665042166528,
"version": 2,
"chainId": 84,
"sender": "3N4aFcsnij7Y1qGaQTLFNN2px73fHsXQHe9",
"senderPublicKey": "9tSn5bcPwQj2eR4oxkB2oUpmEoBqc2on24JrNhCgFoTK",
"proofs": [
"59uBek37EHVRJALjpxCxh6VNHXgWD5a81ia3gCK4qaBimNiskjqR3J2JpzpJem54yBCvLN3FM8fWE9UW1fabTezZ"
],
"script": "base64:BgIQCAISAwoBCBIDCgEBEgASABQAC2tfaW5zdXJhbmNlAgtrX2luc3VyYW5jZQAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzAAVrX2FtbQIFa19hbW0AD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfbWFuYWdlcl9hZGRyZXNzAhFrX21hbmFnZXJfYWRkcmVzcwANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAEOdG9Db21wb3NpdGVLZXkCBF9rZXkIX2FkZHJlc3MJAKwCAgkArAICBQRfa2V5AgFfBQhfYWRkcmVzcwEJaW5zdXJhbmNlAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrX2luc3VyYW5jZQAAAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MCE0Nvb3JkaW5hdG9yIG5vdCBzZXQCE0Nvb3JkaW5hdG9yIG5vdCBzZXQBC2lzV2hpdGVsaXN0AQhfYWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmwgCCQELY29vcmRpbmF0b3IACQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQUIX2FkZHJlc3MHAQtpbml0aWFsaXplZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUNa19pbml0aWFsaXplZAcBDGFkbWluQWRkcmVzcwAJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwIVQWRtaW4gYWRkcmVzcyBub3Qgc2V0AQ5hZG1pblB1YmxpY0tleQAJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQIYQWRtaW4gcHVibGljIGtleSBub3Qgc2V0AQpxdW90ZUFzc2V0AAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUNa19xdW90ZV9hc3NldAITUXVvdGUgYXNzZXQgbm90IHNldAERcXVvdGVBc3NldFN0YWtpbmcACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFD2tfcXVvdGVfc3Rha2luZwIbUXVvdGUgYXNzZXQgc3Rha2luZyBub3Qgc2V0AhtRdW90ZSBhc3NldCBzdGFraW5nIG5vdCBzZXQBDm1hbmFnZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABRFrX21hbmFnZXJfYWRkcmVzcwIPTWFuYWdlciBub3Qgc2V0Ag9NYW5hZ2VyIG5vdCBzZXQBD3VwZGF0ZUluc3VyYW5jZQEBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgULa19pbnN1cmFuY2UFAWkFA25pbAQBaQEKaW5pdGlhbGl6ZQEMX2Nvb3JkaW5hdG9yAwkBC2luaXRpYWxpemVkAAkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUUa19jb29yZGluYXRvckFkZHJlc3MFDF9jb29yZGluYXRvcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYFA25pbAFpAQh3aXRoZHJhdwEHX2Ftb3VudAMDAwkBASEBCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAGYCBQdfYW1vdW50CQEJaW5zdXJhbmNlAAkAAgEJAKwCAgkArAICCQCsAgICGEludmFsaWQgd2l0aGRyYXcgcGFyYW1zIAkApAMBBQdfYW1vdW50AgMgPiAJAKQDAQkBCWluc3VyYW5jZQAEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgUHX2Ftb3VudAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAzggCCQEPdXBkYXRlSW5zdXJhbmNlAQkAZQIJAQlpbnN1cmFuY2UABQdfYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHX2Ftb3VudAkBCnF1b3RlQXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZGVwb3NpdAAEB19hbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAYJAQEhAQkBC2luaXRpYWxpemVkAAYDCQEBIQEJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MABwkAAgECFkludmFsaWQgZGVwb3NpdCBwYXJhbXMEBXN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQdfYW1vdW50BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlCQEPdXBkYXRlSW5zdXJhbmNlAQkAZAIJAQlpbnN1cmFuY2UABQdfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEG1pZ3JhdGVMaXF1aWRpdHkABAZhbW91bnQJAQlpbnN1cmFuY2UABAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIFBmFtb3VudAkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFBmFtb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkBDmFkbWluUHVibGljS2V5AJp4IHE=",
"height": 2260170,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: AzwYdTNQpQJC2qTbgndBAFuYFZhPrpWnETmrS1Hrh2or
Next: 2X8Wi8q659CMUgK4Uc9UTxRzqBFzq7MyFUkiw9Vag4Ad
Diff:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 5 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let k_insurance = "k_insurance" |
---|
|
15 | 15 | | |
---|
16 | 16 | | let k_quote_staking = "k_quote_staking" |
---|
17 | 17 | | |
---|
18 | | - | let k_staking_address = "k_staking_address" |
---|
| 18 | + | let k_manager_address = "k_manager_address" |
---|
19 | 19 | | |
---|
20 | 20 | | let k_initialized = "k_initialized" |
---|
21 | 21 | | |
---|
|
25 | 25 | | func insurance () = valueOrElse(getInteger(this, k_insurance), 0) |
---|
26 | 26 | | |
---|
27 | 27 | | |
---|
28 | | - | func coordinator () = valueOrErrorMessage(addressFromString(getStringValue(this, k_coordinatorAddress)), "Coordinator not set") |
---|
| 28 | + | func coordinator () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k_coordinatorAddress), "Coordinator not set")), "Coordinator not set") |
---|
29 | 29 | | |
---|
30 | 30 | | |
---|
31 | 31 | | func isWhitelist (_address) = valueOrElse(getBoolean(coordinator(), toCompositeKey(k_amm, _address)), false) |
---|
|
34 | 34 | | func initialized () = valueOrElse(getBoolean(this, k_initialized), false) |
---|
35 | 35 | | |
---|
36 | 36 | | |
---|
37 | | - | func adminAddress () = addressFromString(getStringValue(coordinator(), k_admin_address)) |
---|
| 37 | + | func adminAddress () = addressFromString(valueOrErrorMessage(getString(coordinator(), k_admin_address), "Admin address not set")) |
---|
38 | 38 | | |
---|
39 | 39 | | |
---|
40 | | - | func adminPublicKey () = fromBase58String(getStringValue(coordinator(), k_admin_public_key)) |
---|
| 40 | + | func adminPublicKey () = fromBase58String(valueOrErrorMessage(getString(coordinator(), k_admin_public_key), "Admin public key not set")) |
---|
41 | 41 | | |
---|
42 | 42 | | |
---|
43 | | - | func quoteAsset () = fromBase58String(getStringValue(coordinator(), k_quote_asset)) |
---|
| 43 | + | func quoteAsset () = fromBase58String(valueOrErrorMessage(getString(coordinator(), k_quote_asset), "Quote asset not set")) |
---|
44 | 44 | | |
---|
45 | 45 | | |
---|
46 | | - | func quoteAssetStaking () = valueOrErrorMessage(addressFromString(getStringValue(coordinator(), k_quote_staking)), "Quote asset staking not set") |
---|
| 46 | + | func quoteAssetStaking () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(coordinator(), k_quote_staking), "Quote asset staking not set")), "Quote asset staking not set") |
---|
47 | 47 | | |
---|
48 | 48 | | |
---|
49 | | - | func stakingAddress () = valueOrErrorMessage(addressFromString(getStringValue(coordinator(), k_staking_address)), "Insurance not set") |
---|
| 49 | + | func managerAddress () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(coordinator(), k_manager_address), "Manager not set")), "Manager not set") |
---|
50 | 50 | | |
---|
51 | 51 | | |
---|
52 | 52 | | func updateInsurance (i) = [IntegerEntry(k_insurance, i)] |
---|
|
67 | 67 | | else (_amount > insurance())) |
---|
68 | 68 | | then throw(((("Invalid withdraw params " + toString(_amount)) + " > ") + toString(insurance()))) |
---|
69 | 69 | | else { |
---|
70 | | - | let unstake = invoke(quoteAssetStaking(), "unlockNeutrino", [_amount, toBase58String(quoteAsset())], nil) |
---|
| 70 | + | let unstake = invoke(managerAddress(), "withdraw", [toBase58String(quoteAsset()), _amount], nil) |
---|
71 | 71 | | if ((unstake == unstake)) |
---|
72 | 72 | | then (updateInsurance((insurance() - _amount)) ++ [ScriptTransfer(i.caller, _amount, quoteAsset())]) |
---|
73 | 73 | | else throw("Strict value is not equal to itself.") |
---|
|
87 | 87 | | else false) |
---|
88 | 88 | | then throw("Invalid deposit params") |
---|
89 | 89 | | else { |
---|
90 | | - | let stake = invoke(quoteAssetStaking(), "lockNeutrino", nil, [AttachedPayment(quoteAsset(), _amount)]) |
---|
| 90 | + | let stake = invoke(managerAddress(), "deposit", nil, [AttachedPayment(quoteAsset(), _amount)]) |
---|
91 | 91 | | if ((stake == stake)) |
---|
92 | 92 | | then updateInsurance((insurance() + _amount)) |
---|
93 | 93 | | else throw("Strict value is not equal to itself.") |
---|
94 | 94 | | } |
---|
| 95 | + | } |
---|
| 96 | + | |
---|
| 97 | + | |
---|
| 98 | + | |
---|
| 99 | + | @Callable(i) |
---|
| 100 | + | func migrateLiquidity () = { |
---|
| 101 | + | let amount = insurance() |
---|
| 102 | + | let unstake = invoke(quoteAssetStaking(), "unlockNeutrino", [amount, toBase58String(quoteAsset())], nil) |
---|
| 103 | + | if ((unstake == unstake)) |
---|
| 104 | + | then { |
---|
| 105 | + | let stake = invoke(managerAddress(), "deposit", nil, [AttachedPayment(quoteAsset(), amount)]) |
---|
| 106 | + | if ((stake == stake)) |
---|
| 107 | + | then nil |
---|
| 108 | + | else throw("Strict value is not equal to itself.") |
---|
| 109 | + | } |
---|
| 110 | + | else throw("Strict value is not equal to itself.") |
---|
95 | 111 | | } |
---|
96 | 112 | | |
---|
97 | 113 | | |
---|
Full:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 5 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let k_insurance = "k_insurance" |
---|
5 | 5 | | |
---|
6 | 6 | | let k_coordinatorAddress = "k_coordinatorAddress" |
---|
7 | 7 | | |
---|
8 | 8 | | let k_amm = "k_amm" |
---|
9 | 9 | | |
---|
10 | 10 | | let k_admin_address = "k_admin_address" |
---|
11 | 11 | | |
---|
12 | 12 | | let k_admin_public_key = "k_admin_public_key" |
---|
13 | 13 | | |
---|
14 | 14 | | let k_quote_asset = "k_quote_asset" |
---|
15 | 15 | | |
---|
16 | 16 | | let k_quote_staking = "k_quote_staking" |
---|
17 | 17 | | |
---|
18 | | - | let k_staking_address = "k_staking_address" |
---|
| 18 | + | let k_manager_address = "k_manager_address" |
---|
19 | 19 | | |
---|
20 | 20 | | let k_initialized = "k_initialized" |
---|
21 | 21 | | |
---|
22 | 22 | | func toCompositeKey (_key,_address) = ((_key + "_") + _address) |
---|
23 | 23 | | |
---|
24 | 24 | | |
---|
25 | 25 | | func insurance () = valueOrElse(getInteger(this, k_insurance), 0) |
---|
26 | 26 | | |
---|
27 | 27 | | |
---|
28 | | - | func coordinator () = valueOrErrorMessage(addressFromString(getStringValue(this, k_coordinatorAddress)), "Coordinator not set") |
---|
| 28 | + | func coordinator () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k_coordinatorAddress), "Coordinator not set")), "Coordinator not set") |
---|
29 | 29 | | |
---|
30 | 30 | | |
---|
31 | 31 | | func isWhitelist (_address) = valueOrElse(getBoolean(coordinator(), toCompositeKey(k_amm, _address)), false) |
---|
32 | 32 | | |
---|
33 | 33 | | |
---|
34 | 34 | | func initialized () = valueOrElse(getBoolean(this, k_initialized), false) |
---|
35 | 35 | | |
---|
36 | 36 | | |
---|
37 | | - | func adminAddress () = addressFromString(getStringValue(coordinator(), k_admin_address)) |
---|
| 37 | + | func adminAddress () = addressFromString(valueOrErrorMessage(getString(coordinator(), k_admin_address), "Admin address not set")) |
---|
38 | 38 | | |
---|
39 | 39 | | |
---|
40 | | - | func adminPublicKey () = fromBase58String(getStringValue(coordinator(), k_admin_public_key)) |
---|
| 40 | + | func adminPublicKey () = fromBase58String(valueOrErrorMessage(getString(coordinator(), k_admin_public_key), "Admin public key not set")) |
---|
41 | 41 | | |
---|
42 | 42 | | |
---|
43 | | - | func quoteAsset () = fromBase58String(getStringValue(coordinator(), k_quote_asset)) |
---|
| 43 | + | func quoteAsset () = fromBase58String(valueOrErrorMessage(getString(coordinator(), k_quote_asset), "Quote asset not set")) |
---|
44 | 44 | | |
---|
45 | 45 | | |
---|
46 | | - | func quoteAssetStaking () = valueOrErrorMessage(addressFromString(getStringValue(coordinator(), k_quote_staking)), "Quote asset staking not set") |
---|
| 46 | + | func quoteAssetStaking () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(coordinator(), k_quote_staking), "Quote asset staking not set")), "Quote asset staking not set") |
---|
47 | 47 | | |
---|
48 | 48 | | |
---|
49 | | - | func stakingAddress () = valueOrErrorMessage(addressFromString(getStringValue(coordinator(), k_staking_address)), "Insurance not set") |
---|
| 49 | + | func managerAddress () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(coordinator(), k_manager_address), "Manager not set")), "Manager not set") |
---|
50 | 50 | | |
---|
51 | 51 | | |
---|
52 | 52 | | func updateInsurance (i) = [IntegerEntry(k_insurance, i)] |
---|
53 | 53 | | |
---|
54 | 54 | | |
---|
55 | 55 | | @Callable(i) |
---|
56 | 56 | | func initialize (_coordinator) = if (initialized()) |
---|
57 | 57 | | then throw("Already initialized") |
---|
58 | 58 | | else [StringEntry(k_coordinatorAddress, _coordinator), BooleanEntry(k_initialized, true)] |
---|
59 | 59 | | |
---|
60 | 60 | | |
---|
61 | 61 | | |
---|
62 | 62 | | @Callable(i) |
---|
63 | 63 | | func withdraw (_amount) = if (if (if (!(isWhitelist(toString(i.caller)))) |
---|
64 | 64 | | then true |
---|
65 | 65 | | else !(initialized())) |
---|
66 | 66 | | then true |
---|
67 | 67 | | else (_amount > insurance())) |
---|
68 | 68 | | then throw(((("Invalid withdraw params " + toString(_amount)) + " > ") + toString(insurance()))) |
---|
69 | 69 | | else { |
---|
70 | | - | let unstake = invoke(quoteAssetStaking(), "unlockNeutrino", [_amount, toBase58String(quoteAsset())], nil) |
---|
| 70 | + | let unstake = invoke(managerAddress(), "withdraw", [toBase58String(quoteAsset()), _amount], nil) |
---|
71 | 71 | | if ((unstake == unstake)) |
---|
72 | 72 | | then (updateInsurance((insurance() - _amount)) ++ [ScriptTransfer(i.caller, _amount, quoteAsset())]) |
---|
73 | 73 | | else throw("Strict value is not equal to itself.") |
---|
74 | 74 | | } |
---|
75 | 75 | | |
---|
76 | 76 | | |
---|
77 | 77 | | |
---|
78 | 78 | | @Callable(i) |
---|
79 | 79 | | func deposit () = { |
---|
80 | 80 | | let _amount = i.payments[0].amount |
---|
81 | 81 | | if (if (if ((i.payments[0].assetId != quoteAsset())) |
---|
82 | 82 | | then true |
---|
83 | 83 | | else !(initialized())) |
---|
84 | 84 | | then true |
---|
85 | 85 | | else if (!(isWhitelist(toString(i.caller)))) |
---|
86 | 86 | | then (i.caller != adminAddress()) |
---|
87 | 87 | | else false) |
---|
88 | 88 | | then throw("Invalid deposit params") |
---|
89 | 89 | | else { |
---|
90 | | - | let stake = invoke(quoteAssetStaking(), "lockNeutrino", nil, [AttachedPayment(quoteAsset(), _amount)]) |
---|
| 90 | + | let stake = invoke(managerAddress(), "deposit", nil, [AttachedPayment(quoteAsset(), _amount)]) |
---|
91 | 91 | | if ((stake == stake)) |
---|
92 | 92 | | then updateInsurance((insurance() + _amount)) |
---|
93 | 93 | | else throw("Strict value is not equal to itself.") |
---|
94 | 94 | | } |
---|
| 95 | + | } |
---|
| 96 | + | |
---|
| 97 | + | |
---|
| 98 | + | |
---|
| 99 | + | @Callable(i) |
---|
| 100 | + | func migrateLiquidity () = { |
---|
| 101 | + | let amount = insurance() |
---|
| 102 | + | let unstake = invoke(quoteAssetStaking(), "unlockNeutrino", [amount, toBase58String(quoteAsset())], nil) |
---|
| 103 | + | if ((unstake == unstake)) |
---|
| 104 | + | then { |
---|
| 105 | + | let stake = invoke(managerAddress(), "deposit", nil, [AttachedPayment(quoteAsset(), amount)]) |
---|
| 106 | + | if ((stake == stake)) |
---|
| 107 | + | then nil |
---|
| 108 | + | else throw("Strict value is not equal to itself.") |
---|
| 109 | + | } |
---|
| 110 | + | else throw("Strict value is not equal to itself.") |
---|
95 | 111 | | } |
---|
96 | 112 | | |
---|
97 | 113 | | |
---|
98 | 114 | | @Verifier(tx) |
---|
99 | 115 | | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], adminPublicKey()) |
---|
100 | 116 | | |
---|