2022.04.14 12:31 [3073356] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves
{
"type": 13,
"id": "BFcjEhZV4Sw7aH5hSe2QyASFmt7BSBV5uAj3PFvWxuKm",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1649928508571,
"version": 2,
"chainId": 87,
"sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp",
"senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw",
"proofs": [
"",
"4cqnRWUp2B6NCg9cRbMaxSDbDo8CKRkRcHjKfaZMowf3f6c2erJj3sE7SwQ8D9x8cLxMexjnEUR3TDtaBa2gVLUJ",
"5gqZBNPHiVX5v8UPmyf8obSxFEevRuLRHuw5B7p6mAi4P7KNRwXjqA4w3E7ei5WBW8buvshEzU4MmMPqw68XhtU4"
],
"script": "base64:AAIFAAAAAAAAAAIIAgAAABEAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBV4r/CGiaNbpAzWF08hI33qY38Po4zugeOAEAAAATZ2V0QmFzZTU4RnJvbU9yYWNsZQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAZzdHJpbmcEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAJAAACAAAAAQkAASwAAAACBQAAAANrZXkCAAAACGlzIGVtcHR5AAAAAA1rQWRtaW5QdWJLZXkxAgAAAAthZG1pbl9wdWJfMQAAAAANa0FkbWluUHViS2V5MgIAAAALYWRtaW5fcHViXzIAAAAADWtBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAABJrQWRtaW5JbnZva2VQdWJLZXkCAAAAEGFkbWluX2ludm9rZV9wdWIAAAAAC2tHb3ZBZGRyZXNzAgAAABJnb3Zlcm5hbmNlX2FkZHJlc3MAAAAADGtGYXJtQWRkcmVzcwIAAAAPZmFybWluZ19hZGRyZXNzAAAAAA9rU3VydmV5c0FkZHJlc3MCAAAAD3N1cnZleXNfYWRkcmVzcwAAAAAMYWRtaW5QdWJLZXkxCQEAAAATZ2V0QmFzZTU4RnJvbU9yYWNsZQAAAAEFAAAADWtBZG1pblB1YktleTEAAAAADGFkbWluUHViS2V5MgkBAAAAE2dldEJhc2U1OEZyb21PcmFjbGUAAAABBQAAAA1rQWRtaW5QdWJLZXkyAAAAAAxhZG1pblB1YktleTMJAQAAABNnZXRCYXNlNThGcm9tT3JhY2xlAAAAAQUAAAANa0FkbWluUHViS2V5MwAAAAALYWRtaW5JbnZva2UJAQAAABNnZXRCYXNlNThGcm9tT3JhY2xlAAAAAQUAAAASa0FkbWluSW52b2tlUHViS2V5AAAAABFnb3Zlcm5hbmNlQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABCQEAAAATZ2V0QmFzZTU4RnJvbU9yYWNsZQAAAAEFAAAAC2tHb3ZBZGRyZXNzAAAAAA5mYXJt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",
"height": 3073356,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 6UVYzr5hs3QArauPgqXXCYawkzEjUgTKDDxU2EteLood
Next: 7NUVt96p7snVmLDZmped7GLssoftvRd9NoaHUSJQr8kq
Diff:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 4 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let governanceAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS') |
---|
| 4 | + | let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') |
---|
5 | 5 | | |
---|
6 | | - | let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw') |
---|
| 6 | + | func getBase58FromOracle (key) = match getString(oracle, key) { |
---|
| 7 | + | case string: String => |
---|
| 8 | + | fromBase58String(string) |
---|
| 9 | + | case nothing => |
---|
| 10 | + | throw((key + "is empty")) |
---|
| 11 | + | } |
---|
7 | 12 | | |
---|
8 | | - | let oracleAddress = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') |
---|
9 | 13 | | |
---|
10 | | - | let adminInvoke = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h' |
---|
| 14 | + | let kAdminPubKey1 = "admin_pub_1" |
---|
11 | 15 | | |
---|
12 | | - | let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA' |
---|
| 16 | + | let kAdminPubKey2 = "admin_pub_2" |
---|
13 | 17 | | |
---|
14 | | - | let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7' |
---|
| 18 | + | let kAdminPubKey3 = "admin_pub_3" |
---|
15 | 19 | | |
---|
16 | | - | let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ' |
---|
| 20 | + | let kAdminInvokePubKey = "admin_invoke_pub" |
---|
| 21 | + | |
---|
| 22 | + | let kGovAddress = "governance_address" |
---|
| 23 | + | |
---|
| 24 | + | let kFarmAddress = "farming_address" |
---|
| 25 | + | |
---|
| 26 | + | let kSurveysAddress = "surveys_address" |
---|
| 27 | + | |
---|
| 28 | + | let adminPubKey1 = getBase58FromOracle(kAdminPubKey1) |
---|
| 29 | + | |
---|
| 30 | + | let adminPubKey2 = getBase58FromOracle(kAdminPubKey2) |
---|
| 31 | + | |
---|
| 32 | + | let adminPubKey3 = getBase58FromOracle(kAdminPubKey3) |
---|
| 33 | + | |
---|
| 34 | + | let adminInvoke = getBase58FromOracle(kAdminInvokePubKey) |
---|
| 35 | + | |
---|
| 36 | + | let governanceAddress = Address(getBase58FromOracle(kGovAddress)) |
---|
| 37 | + | |
---|
| 38 | + | let farmingAddress = Address(getBase58FromOracle(kFarmAddress)) |
---|
| 39 | + | |
---|
| 40 | + | let surveysAddress = Address(getBase58FromOracle(kSurveysAddress)) |
---|
17 | 41 | | |
---|
18 | 42 | | let keyPrefixPoolName = "pool_" |
---|
19 | 43 | | |
---|
20 | 44 | | |
---|
21 | 45 | | @Verifier(tx) |
---|
22 | 46 | | func verify () = match tx { |
---|
23 | | - | case invoke: InvokeScriptTransaction => |
---|
24 | | - | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
25 | | - | then (invoke.function == "exchange") |
---|
| 47 | + | case inv: InvokeScriptTransaction => |
---|
| 48 | + | let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp)))))) |
---|
| 49 | + | then (inv.function == "exchange") |
---|
26 | 50 | | else false |
---|
27 | | - | let isAirdropCall = if ((invoke.dApp == governanceAddress)) |
---|
28 | | - | then (invoke.function == "airDrop") |
---|
| 51 | + | let isAirdropCall = if ((inv.dApp == governanceAddress)) |
---|
| 52 | + | then (inv.function == "airDrop") |
---|
29 | 53 | | else false |
---|
30 | | - | let isUpdateWeightsCall = if ((invoke.dApp == governanceAddress)) |
---|
31 | | - | then (invoke.function == "updateWeights") |
---|
| 54 | + | let isUpdateWeightsCall = if ((inv.dApp == governanceAddress)) |
---|
| 55 | + | then (inv.function == "updateWeights") |
---|
32 | 56 | | else false |
---|
33 | | - | let isUpdatePoolInterest = if ((invoke.dApp == farmingAddress)) |
---|
34 | | - | then (invoke.function == "updatePoolInterest") |
---|
| 57 | + | let isUpdatePoolInterest = if ((inv.dApp == farmingAddress)) |
---|
| 58 | + | then (inv.function == "updatePoolInterest") |
---|
35 | 59 | | else false |
---|
36 | | - | let isTakenIntoAccount = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
37 | | - | then (invoke.function == "takeIntoAccountExtraFunds") |
---|
| 60 | + | let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp)))))) |
---|
| 61 | + | then (inv.function == "takeIntoAccountExtraFunds") |
---|
| 62 | + | else false |
---|
| 63 | + | let isWriteTotal = if ((inv.dApp == surveysAddress)) |
---|
| 64 | + | then (inv.function == "writeTotals") |
---|
38 | 65 | | else false |
---|
39 | 66 | | let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke) |
---|
40 | 67 | | if (if (if (if (isExchangeCall) |
---|
41 | 68 | | then true |
---|
42 | 69 | | else isAirdropCall) |
---|
43 | | - | then (size(invoke.payments) == 1) |
---|
| 70 | + | then (size(inv.payments) == 1) |
---|
44 | 71 | | else false) |
---|
45 | 72 | | then true |
---|
46 | | - | else if (if (if (isUpdateWeightsCall) |
---|
| 73 | + | else if (if (if (if (isUpdateWeightsCall) |
---|
47 | 74 | | then true |
---|
48 | 75 | | else isUpdatePoolInterest) |
---|
49 | 76 | | then true |
---|
50 | 77 | | else isTakenIntoAccount) |
---|
51 | | - | then (size(invoke.payments) == 0) |
---|
| 78 | + | then true |
---|
| 79 | + | else isWriteTotal) |
---|
| 80 | + | then (size(inv.payments) == 0) |
---|
52 | 81 | | else false) |
---|
53 | 82 | | then signedByAdmin |
---|
54 | 83 | | else false |
---|
Full:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 4 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let governanceAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS') |
---|
| 4 | + | let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') |
---|
5 | 5 | | |
---|
6 | | - | let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw') |
---|
| 6 | + | func getBase58FromOracle (key) = match getString(oracle, key) { |
---|
| 7 | + | case string: String => |
---|
| 8 | + | fromBase58String(string) |
---|
| 9 | + | case nothing => |
---|
| 10 | + | throw((key + "is empty")) |
---|
| 11 | + | } |
---|
7 | 12 | | |
---|
8 | | - | let oracleAddress = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') |
---|
9 | 13 | | |
---|
10 | | - | let adminInvoke = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h' |
---|
| 14 | + | let kAdminPubKey1 = "admin_pub_1" |
---|
11 | 15 | | |
---|
12 | | - | let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA' |
---|
| 16 | + | let kAdminPubKey2 = "admin_pub_2" |
---|
13 | 17 | | |
---|
14 | | - | let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7' |
---|
| 18 | + | let kAdminPubKey3 = "admin_pub_3" |
---|
15 | 19 | | |
---|
16 | | - | let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ' |
---|
| 20 | + | let kAdminInvokePubKey = "admin_invoke_pub" |
---|
| 21 | + | |
---|
| 22 | + | let kGovAddress = "governance_address" |
---|
| 23 | + | |
---|
| 24 | + | let kFarmAddress = "farming_address" |
---|
| 25 | + | |
---|
| 26 | + | let kSurveysAddress = "surveys_address" |
---|
| 27 | + | |
---|
| 28 | + | let adminPubKey1 = getBase58FromOracle(kAdminPubKey1) |
---|
| 29 | + | |
---|
| 30 | + | let adminPubKey2 = getBase58FromOracle(kAdminPubKey2) |
---|
| 31 | + | |
---|
| 32 | + | let adminPubKey3 = getBase58FromOracle(kAdminPubKey3) |
---|
| 33 | + | |
---|
| 34 | + | let adminInvoke = getBase58FromOracle(kAdminInvokePubKey) |
---|
| 35 | + | |
---|
| 36 | + | let governanceAddress = Address(getBase58FromOracle(kGovAddress)) |
---|
| 37 | + | |
---|
| 38 | + | let farmingAddress = Address(getBase58FromOracle(kFarmAddress)) |
---|
| 39 | + | |
---|
| 40 | + | let surveysAddress = Address(getBase58FromOracle(kSurveysAddress)) |
---|
17 | 41 | | |
---|
18 | 42 | | let keyPrefixPoolName = "pool_" |
---|
19 | 43 | | |
---|
20 | 44 | | |
---|
21 | 45 | | @Verifier(tx) |
---|
22 | 46 | | func verify () = match tx { |
---|
23 | | - | case invoke: InvokeScriptTransaction => |
---|
24 | | - | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
25 | | - | then (invoke.function == "exchange") |
---|
| 47 | + | case inv: InvokeScriptTransaction => |
---|
| 48 | + | let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp)))))) |
---|
| 49 | + | then (inv.function == "exchange") |
---|
26 | 50 | | else false |
---|
27 | | - | let isAirdropCall = if ((invoke.dApp == governanceAddress)) |
---|
28 | | - | then (invoke.function == "airDrop") |
---|
| 51 | + | let isAirdropCall = if ((inv.dApp == governanceAddress)) |
---|
| 52 | + | then (inv.function == "airDrop") |
---|
29 | 53 | | else false |
---|
30 | | - | let isUpdateWeightsCall = if ((invoke.dApp == governanceAddress)) |
---|
31 | | - | then (invoke.function == "updateWeights") |
---|
| 54 | + | let isUpdateWeightsCall = if ((inv.dApp == governanceAddress)) |
---|
| 55 | + | then (inv.function == "updateWeights") |
---|
32 | 56 | | else false |
---|
33 | | - | let isUpdatePoolInterest = if ((invoke.dApp == farmingAddress)) |
---|
34 | | - | then (invoke.function == "updatePoolInterest") |
---|
| 57 | + | let isUpdatePoolInterest = if ((inv.dApp == farmingAddress)) |
---|
| 58 | + | then (inv.function == "updatePoolInterest") |
---|
35 | 59 | | else false |
---|
36 | | - | let isTakenIntoAccount = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
37 | | - | then (invoke.function == "takeIntoAccountExtraFunds") |
---|
| 60 | + | let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp)))))) |
---|
| 61 | + | then (inv.function == "takeIntoAccountExtraFunds") |
---|
| 62 | + | else false |
---|
| 63 | + | let isWriteTotal = if ((inv.dApp == surveysAddress)) |
---|
| 64 | + | then (inv.function == "writeTotals") |
---|
38 | 65 | | else false |
---|
39 | 66 | | let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke) |
---|
40 | 67 | | if (if (if (if (isExchangeCall) |
---|
41 | 68 | | then true |
---|
42 | 69 | | else isAirdropCall) |
---|
43 | | - | then (size(invoke.payments) == 1) |
---|
| 70 | + | then (size(inv.payments) == 1) |
---|
44 | 71 | | else false) |
---|
45 | 72 | | then true |
---|
46 | | - | else if (if (if (isUpdateWeightsCall) |
---|
| 73 | + | else if (if (if (if (isUpdateWeightsCall) |
---|
47 | 74 | | then true |
---|
48 | 75 | | else isUpdatePoolInterest) |
---|
49 | 76 | | then true |
---|
50 | 77 | | else isTakenIntoAccount) |
---|
51 | | - | then (size(invoke.payments) == 0) |
---|
| 78 | + | then true |
---|
| 79 | + | else isWriteTotal) |
---|
| 80 | + | then (size(inv.payments) == 0) |
---|
52 | 81 | | else false) |
---|
53 | 82 | | then signedByAdmin |
---|
54 | 83 | | else false |
---|
55 | 84 | | case _ => |
---|
56 | 85 | | let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1)) |
---|
57 | 86 | | then 1 |
---|
58 | 87 | | else 0 |
---|
59 | 88 | | let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2)) |
---|
60 | 89 | | then 1 |
---|
61 | 90 | | else 0 |
---|
62 | 91 | | let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3)) |
---|
63 | 92 | | then 1 |
---|
64 | 93 | | else 0 |
---|
65 | 94 | | (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2) |
---|
66 | 95 | | } |
---|
67 | 96 | | |
---|