2021.07.26 15:44 [2695397] smart account 3PMHsJn1G4ngd6A4dyZpaSMiQmr4XJiDuym > SELF 0.00000000 Waves

{ "type": 13, "id": "8dLB96b49gc1jV89zV5VXrcQFTikPhKoH3RTFYjxWMLR", "fee": 1000000, "feeAssetId": null, "timestamp": 1627302528900, "version": 1, "sender": "3PMHsJn1G4ngd6A4dyZpaSMiQmr4XJiDuym", "senderPublicKey": "B2eSMU79NZBWi8B1Su7fqZhJtcvZScjxpK5ZJqRVgqmR", "proofs": [ "4Bvat2uyxz72S7UzgjHcFAVPzGNCWjNyrj7dt2AGcmSATRVBF6z89GWTNvhGVFzpHF2SH2GR6cngDxakjbwZR977" ], "script": "base64:AAIFAAAAAAAAABcIAhIFCgMICAgSAwoBCBIAEgASAwoBAQAAAAcBAAAAEHdyaXRlQ29uc3RTdHJpbmcAAAACAAAAA2tleQAAAAV2YWx1ZQMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlCQAAAgAAAAEJAAEsAAAAAgIAAAAVYWxyZWFkeSBpbml0aWFsaXplZDogBQAAAANrZXkAAAAABWFkbWluCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAFYWRtaW4CAAAACG5vIGFkbWluAAAAAAdyZXNlcnZlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAHcmVzZXJ2ZQIAAAAKbm8gcmVzZXJ2ZQAAAAAEbm9kZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMCAAAABG5vZGUCAAAAB25vIG5vZGUAAAAAEWFjdGl2ZUxlYXNlQW1vdW50CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAAEWFjdGl2ZUxlYXNlQW1vdW50AAAAAAAAAAAAAAAAAA1hY3RpdmVMZWFzZUlkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMCAAAADWFjdGl2ZUxlYXNlSWQCAAAAAAEAAAALdXBkYXRlTGVhc2UAAAABAAAABm5ld0FtdAQAAAAIbmV3TGVhc2UJAAREAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAEbm9kZQUAAAAGbmV3QW10BAAAAApuZXdMZWFzZUlkCQAEOQAAAAEFAAAACG5ld0xlYXNlCQAETgAAAAIDCQEAAAACIT0AAAACBQAAAA1hY3RpdmVMZWFzZUlkAgAAAAAJAARMAAAAAgkBAAAAC0xlYXNlQ2FuY2VsAAAAAQkAAlkAAAABBQAAAA1hY3RpdmVMZWFzZUlkBQAAAANuaWwFAAAAA25pbAMJAABmAAAAAgUAAAAGbmV3QW10AAAAAAAAAAAACQAETAAAAAIFAAAACG5ld0xlYXNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADWFjdGl2ZUxlYXNlSWQJAAJYAAAAAQUAAAAKbmV3TGVhc2VJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARYWN0aXZlTGVhc2VBbW91bnQFAAAABm5ld0FtdAUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADWFjdGl2ZUxlYXNlSWQCAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARYWN0aXZlTGVhc2VBbW91bnQAAAAAAAAAAAAFAAAAA25pbAAAAAUAAAABaQEAAAAKaW5pdGlhbGl6ZQAAAAMAAAAFYWRtaW4AAAAHcmVzZXJ2ZQAAAARub2RlCQAETAAAAAIJAQAAABB3cml0ZUNvbnN0U3RyaW5nAAAAAgIAAAAFYWRtaW4FAAAABWFkbWluCQAETAAAAAIJAQAAABB3cml0ZUNvbnN0U3RyaW5nAAAAAgIAAAAHcmVzZXJ2ZQUAAAAHcmVzZXJ2ZQkABEwAAAACCQEAAAAQd3JpdGVDb25zdFN0cmluZwAAAAICAAAABG5vZGUFAAAABG5vZGUFAAAAA25pbAAAAAFpAQAAAApzZXRBZGRyZXNzAAAAAQAAAAFhAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABWFkbWluCQAAAgAAAAECAAAAEG9ubHkgc2VsZiBjYW4gZG8JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAEbm9kZQUAAAABYQUAAAADbmlsAAAAAWkBAAAAA3B1dAAAAAADCQEAAAACIT0AAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAHcmVzZXJ2ZQkAAAIAAAABAgAAAAxyZXNlcnZlIG9ubHkDCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBQAAAAR1bml0CQAAAgAAAAECAAAACndhdmVzIG9ubHkEAAAAC2FkZGVkQW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQJAQAAAAt1cGRhdGVMZWFzZQAAAAEJAABkAAAAAgUAAAARYWN0aXZlTGVhc2VBbW91bnQFAAAAC2FkZGVkQW1vdW50AAAAAWkBAAAAB3Vuc3Rha2UAAAAAAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABWFkbWluCQAAAgAAAAECAAAACmFkbWluIG9ubHkDCQEAAAACIT0AAAACBQAAAA1hY3RpdmVMZWFzZUlkAgAAAAAJAARMAAAAAgkBAAAAC0xlYXNlQ2FuY2VsAAAAAQkAAlkAAAABBQAAAA1hY3RpdmVMZWFzZUlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADWFjdGl2ZUxlYXNlSWQCAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARYWN0aXZlTGVhc2VBbW91bnQAAAAAAAAAAAAFAAAAA25pbAUAAAADbmlsAAAAAWkBAAAAA2dldAAAAAEAAAANcmVtb3ZlZEFtb3VudAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAdyZXNlcnZlCQAAAgAAAAECAAAADHJlc2VydmUgb25seQkABE4AAAACCQEAAAALdXBkYXRlTGVhc2UAAAABCQAAZQAAAAIFAAAAEWFjdGl2ZUxlYXNlQW1vdW50BQAAAA1yZW1vdmVkQW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANcmVtb3ZlZEFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAG54JLs=", "chainId": 87, "height": 2695397, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 2cKtdyGZHekJ8pFWKYR7CYXFdnCeCR9aEG8q1CCD7GzL Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
5+ then StringEntry(key, value)
6+ else throw(("already initialized: " + key))
7+
8+
9+let admin = valueOrErrorMessage(getString(this, "admin"), "no admin")
10+
11+let reserve = valueOrErrorMessage(getString(this, "reserve"), "no reserve")
12+
13+let node = valueOrErrorMessage(getString(this, "node"), "no node")
14+
15+let activeLeaseAmount = valueOrElse(getInteger(this, "activeLeaseAmount"), 0)
16+
17+let activeLeaseId = valueOrElse(getString(this, "activeLeaseId"), "")
18+
19+func updateLease (newAmt) = {
20+ let newLease = Lease(addressFromStringValue(node), newAmt)
21+ let newLeaseId = calculateLeaseId(newLease)
22+ ((if ((activeLeaseId != ""))
23+ then [LeaseCancel(fromBase58String(activeLeaseId))]
24+ else nil) ++ (if ((newAmt > 0))
25+ then [newLease, StringEntry("activeLeaseId", toBase58String(newLeaseId)), IntegerEntry("activeLeaseAmount", newAmt)]
26+ else [StringEntry("activeLeaseId", ""), IntegerEntry("activeLeaseAmount", 0)]))
27+ }
28+
29+
30+@Callable(i)
31+func initialize (admin,reserve,node) = [writeConstString("admin", admin), writeConstString("reserve", reserve), writeConstString("node", node)]
32+
33+
34+
35+@Callable(i)
36+func setAddress (a) = if ((toString(i.caller) != admin))
37+ then throw("only self can do")
38+ else [StringEntry("node", a)]
39+
40+
41+
42+@Callable(i)
43+func put () = if ((toString(i.caller) != reserve))
44+ then throw("reserve only")
45+ else if ((i.payments[0].assetId != unit))
46+ then throw("waves only")
47+ else {
48+ let addedAmount = i.payments[0].amount
49+ updateLease((activeLeaseAmount + addedAmount))
50+ }
51+
52+
53+
54+@Callable(i)
55+func unstake () = if ((toString(i.caller) != admin))
56+ then throw("admin only")
57+ else if ((activeLeaseId != ""))
58+ then [LeaseCancel(fromBase58String(activeLeaseId)), StringEntry("activeLeaseId", ""), IntegerEntry("activeLeaseAmount", 0)]
59+ else nil
60+
61+
62+
63+@Callable(i)
64+func get (removedAmount) = if ((toString(i.caller) != reserve))
65+ then throw("reserve only")
66+ else (updateLease((activeLeaseAmount - removedAmount)) ++ [ScriptTransfer(i.caller, removedAmount, unit)])
67+
68+

github/deemru/w8io/786bc32 
24.74 ms