tx · CCPivsAn1wWAqA4x7u4Lzv9M23MJdKpyZLSqWzenEoaA

3PPQ1R9YonyFfVY5br5LVMZwHYYWVDakyjJ:  -0.01000000 Waves

2024.01.25 05:44 [4012211] smart account 3PPQ1R9YonyFfVY5br5LVMZwHYYWVDakyjJ > SELF 0.00000000 Waves

{ "type": 13, "id": "CCPivsAn1wWAqA4x7u4Lzv9M23MJdKpyZLSqWzenEoaA", "fee": 1000000, "feeAssetId": null, "timestamp": 1706150678307, "version": 2, "chainId": 87, "sender": "3PPQ1R9YonyFfVY5br5LVMZwHYYWVDakyjJ", "senderPublicKey": "3NDtXZ2EbtevtG86iPCUbdk7rtyVK9vwWwvPcyX4kXg7", "proofs": [ "hJNhRC7MKpg6Rv1vg5itUKBmbCcruk7jL36AWVtCczML8CCJfZ47XwrecZ4vBRbeLHcfPX5WYroMbH4PokxYLfN" ], "script": "base64:BgIOCAISAwoBCBIDCgEIEgABAAlzZW50aW5lbHMJAMwIAgkBB0FkZHJlc3MBARoBV9fhI1GOfKuIWtXXKJd12Ih104+uIwWm4QkAzAgCCQEHQWRkcmVzcwEBGgFX+Pr6AibAUYvsajtGM0nSHHGwdYv5pMqaCQDMCAIJAQdBZGRyZXNzAQEaAVdJARj2Q38/TGzhZ3Xlt+SXL95QLbKD3fEJAMwIAgkBB0FkZHJlc3MBARoBV0vDbM77M1hDWENREO7v7iEQF0vyeMt8MgUDbmlsAwFpAQ1pbml0TmV3TWFzdGVyAQZtYXN0ZXIECWFkZHJlc3NPSwQHJG1hdGNoMAkApggBBQZtYXN0ZXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYHAwkBASEBBQlhZGRyZXNzT0sJAAIBCQCsAgICEmluY29ycmVjdCBhZGRyZXNzIAUGbWFzdGVyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYXZhaWxhYmxlIGZvciBzZWxmIGNhbGwgb25seQkAzAgCCQELU3RyaW5nRW50cnkCAg92ZXJpZmllcl9tYXN0ZXIFBm1hc3RlcgUDbmlsAWkBEHJlcXVlc3ROZXdNYXN0ZXIBCW5ld01hc3RlcgQJYWRkcmVzc09LBAckbWF0Y2gwCQCmCAEFCW5ld01hc3RlcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgcDCQEBIQEFCWFkZHJlc3NPSwkAAgEJAKwCAgISaW5jb3JyZWN0IGFkZHJlc3MgBQluZXdNYXN0ZXIDCQAAAgkAzwgCBQlzZW50aW5lbHMIBQFpBmNhbGxlcgUEdW5pdAkAAgECDndoaXRlbGlzdCBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQICEnZlcmlmaWVyX25ld01hc3RlcgUJbmV3TWFzdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAh92ZXJpZmllcl9uZXdNYXN0ZXJFbGlnaWJsZUFmdGVyCQBkAgUGaGVpZ2h0AJBOBQNuaWwBaQERYWN0aXZhdGVOZXdNYXN0ZXIABA5lbGlnaWJsZUhlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIfdmVyaWZpZXJfbmV3TWFzdGVyRWxpZ2libGVBZnRlcgQJbmV3TWFzdGVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAhJ2ZXJpZmllcl9uZXdNYXN0ZXIDCQAAAgkAzwgCBQlzZW50aW5lbHMIBQFpBmNhbGxlcgUEdW5pdAkAAgECDndoaXRlbGlzdCBvbmx5AwkAZgIFDmVsaWdpYmxlSGVpZ2h0BQZoZWlnaHQJAAIBAiJuZXcgbWFzdGVyIGNhbm5vdCBiZSBhY3RpdmF0ZWQgeWV0CQDMCAIJAQtEZWxldGVFbnRyeQECEnZlcmlmaWVyX25ld01hc3RlcgkAzAgCCQELRGVsZXRlRW50cnkBAh92ZXJpZmllcl9uZXdNYXN0ZXJFbGlnaWJsZUFmdGVyCQDMCAIJAQtTdHJpbmdFbnRyeQICD3ZlcmlmaWVyX21hc3RlcgUJbmV3TWFzdGVyBQNuaWwBAnR4AQZ2ZXJpZnkABA1tYXN0ZXJBZGRyZXNzCQCiCAECD3ZlcmlmaWVyX21hc3RlcgQQYXBwcm92ZWRCeU1hc3RlcgQHJG1hdGNoMAUNbWFzdGVyQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAEByRtYXRjaDEJAJoIAgkBC3ZhbHVlT3JFbHNlAgkApggBBQF4CQCRAwIFCXNlbnRpbmVscwAACQCsAgICC2FwcHJvdmVkVHhfCQDYBAEIBQJ0eAJpZAMJAAECBQckbWF0Y2gxAgNJbnQEAXkFByRtYXRjaDEFAXkAAAABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQkAZgIFEGFwcHJvdmVkQnlNYXN0ZXIAAAfnVoHs", "height": 4012211, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let sentinels = [Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL'), Address(base58'3PQdNxynJy5mche2kxMVc5shXWzK8Gstq3o'), Address(base58'3P8auNWJkxxByyJtwErFXaxiXcGM45qQ1hA'), Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')]
5+
6+@Callable(i)
7+func initNewMaster (master) = {
8+ let addressOK = match addressFromString(master) {
9+ case a: Address =>
10+ true
11+ case _ =>
12+ false
13+ }
14+ if (!(addressOK))
15+ then throw(("incorrect address " + master))
16+ else if ((i.caller != this))
17+ then throw("available for self call only")
18+ else [StringEntry("verifier_master", master)]
19+ }
20+
21+
22+
23+@Callable(i)
24+func requestNewMaster (newMaster) = {
25+ let addressOK = match addressFromString(newMaster) {
26+ case a: Address =>
27+ true
28+ case _ =>
29+ false
30+ }
31+ if (!(addressOK))
32+ then throw(("incorrect address " + newMaster))
33+ else if ((indexOf(sentinels, i.caller) == unit))
34+ then throw("whitelist only")
35+ else [StringEntry("verifier_newMaster", newMaster), IntegerEntry("verifier_newMasterEligibleAfter", (height + 10000))]
36+ }
37+
38+
39+
40+@Callable(i)
41+func activateNewMaster () = {
42+ let eligibleHeight = getIntegerValue(this, "verifier_newMasterEligibleAfter")
43+ let newMaster = getStringValue(this, "verifier_newMaster")
44+ if ((indexOf(sentinels, i.caller) == unit))
45+ then throw("whitelist only")
46+ else if ((eligibleHeight > height))
47+ then throw("new master cannot be activated yet")
48+ else [DeleteEntry("verifier_newMaster"), DeleteEntry("verifier_newMasterEligibleAfter"), StringEntry("verifier_master", newMaster)]
49+ }
50+
51+
52+@Verifier(tx)
53+func verify () = {
54+ let masterAddress = getString("verifier_master")
55+ let approvedByMaster = match masterAddress {
56+ case x: String =>
57+ match getInteger(valueOrElse(addressFromString(x), sentinels[0]), ("approvedTx_" + toBase58String(tx.id))) {
58+ case y: Int =>
59+ y
60+ case _ =>
61+ 0
62+ }
63+ case _ =>
64+ 1
65+ }
66+ if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
67+ then (approvedByMaster > 0)
68+ else false
69+ }
70+

github/deemru/w8io/3ef1775 
18.99 ms