tx · EtStUFoRsUiYHbYGPnQ4So1MwA4sGJro1LevbuFiJ1yC

3N4mqXUjxptBZjVAxzVzpVM1wuEaUUgHTvv:  -0.01000000 Waves

2022.11.05 20:46 [2304125] smart account 3N4mqXUjxptBZjVAxzVzpVM1wuEaUUgHTvv > SELF 0.00000000 Waves

{ "type": 13, "id": "EtStUFoRsUiYHbYGPnQ4So1MwA4sGJro1LevbuFiJ1yC", "fee": 1000000, "feeAssetId": null, "timestamp": 1667670402528, "version": 2, "chainId": 84, "sender": "3N4mqXUjxptBZjVAxzVzpVM1wuEaUUgHTvv", "senderPublicKey": "H1FGfDcEKnEVXPc72M4ceEovmdZrgivmJePjDiJ1rYQW", "proofs": [ "3HpogfFg88eBetYdwWEhDHzp2fuH6rTeLeymXNqg9fKzoZ1vuJQ1BtFLxaNcZsQuu5vNHM86juxcox8ex9XYxnXT" ], "script": "base64:AAIFAAAAAAAAAAsIAhIDCgEIEgASAAAAAAUAAAAACXByZWNpc2lvbgAN4Lazp2QAAAEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAQiAAAAAQIAAAAQbWFuYWdlclB1YmxpY0tleQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAC211c3RNYW5hZ2VyAAAAAQAAAAFpBAAAAAJwZAkAAAIAAAABAgAAABFwZXJtaXNzaW9uIGRlbmllZAQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAAJwawYFAAAAAnBkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMGBQAAAAJwZAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAANbXVzdE5vdEluaXRlZAAAAAAEAAAAByRtYXRjaDAJAAQgAAAAAQIAAAAGaW5pdGVkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAZpbml0ZWQFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAABmluaXRlZAcGCQAAAgAAAAECAAAADkFscmVhZHkgaW5pdGVkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAMAAAABaQEAAAAEaW5pdAAAAAEAAAANbGVhc2VyQWRkcmVzcwQAAAAGY2hlY2tzCQAETAAAAAIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkJAARMAAAAAgkBAAAADW11c3ROb3RJbml0ZWQAAAAABQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzBAAAAAZzV2F2ZXMJAARDAAAABwIAAAAGc1dhdmVzAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGBQAAAAR1bml0AAAAAAAAAAAABAAAAA1zV2F2ZXNBc3NldElkCQAEOAAAAAEFAAAABnNXYXZlcwkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgIAAAAGaW5pdGVkBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA1zV2F2ZXNBc3NldElkCQACWAAAAAEFAAAADXNXYXZlc0Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAANbGVhc2VyQWRkcmVzcwUAAAANbGVhc2VyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAFcmF0aW8FAAAACXByZWNpc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMbGVhc2VkQW1vdW50AAAAAAAAAAAACQAETAAAAAIFAAAABnNXYXZlcwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAVzdGFrZQAAAAAEAAAAB3BheW1lbnQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAR1bml0CQAAAgAAAAECAAAAFE9ubHkgV0FWRVMgc3VwcG9ydGVkAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAABVXcm9uZyBwYXltZW50cyBhbW91bnQEAAAABXJhdGlvCQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABAgAAAAVyYXRpbwQAAAAJdG9SZWlzc3VlCQAAawAAAAMIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJcHJlY2lzaW9uBQAAAAVyYXRpbwQAAAANc1dhdmVzQXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABAgAAAA1zV2F2ZXNBc3NldElkBAAAAAxsZWFzZWRBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAECAAAADGxlYXNlZEFtb3VudAQAAAAJbmV3QW1vdW50CQAAZAAAAAIFAAAADGxlYXNlZEFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAA1sZWFzZXJBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQIAAAANbGVhc2VyQWRkcmVzcwQAAAAFbGVhc2UJAAREAAAAAgUAAAANbGVhc2VyQWRkcmVzcwUAAAAJbmV3QW1vdW50BAAAAApuZXdMZWFzZUlkCQAEOQAAAAEFAAAABWxlYXNlBAAAAAdyZXN1bHRzCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAAB2xlYXNlSWQFAAAACm5ld0xlYXNlSWQJAARMAAAAAgUAAAAFbGVhc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGxlYXNlZEFtb3VudAUAAAAJbmV3QW1vdW50CQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAANc1dhdmVzQXNzZXRJZAUAAAAJdG9SZWlzc3VlBgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACXRvUmVpc3N1ZQUAAAANc1dhdmVzQXNzZXRJZAUAAAADbmlsBAAAAAckbWF0Y2gwCQAEIQAAAAECAAAAB2xlYXNlSWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAB2xlYXNlSWQFAAAAByRtYXRjaDAJAARMAAAAAgkBAAAAC0xlYXNlQ2FuY2VsAAAAAQUAAAAHbGVhc2VJZAUAAAAHcmVzdWx0cwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAHcmVzdWx0cwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAFpAQAAAAd1bnN0YWtlAAAAAAQAAAAHcGF5bWVudAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAANc1dhdmVzQXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABAgAAAA1zV2F2ZXNBc3NldElkAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAANc1dhdmVzQXNzZXRJZAkAAAIAAAABAgAAABVPbmx5IHNXQVZFUyBzdXBwb3J0ZWQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAFVdyb25nIHBheW1lbnRzIGFtb3VudAQAAAAFcmF0aW8JAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAECAAAABXJhdGlvBAAAAAp0b1RyYW5zZmVyCQAAawAAAAMIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAFcmF0aW8FAAAACXByZWNpc2lvbgQAAAAHYXNzZXRJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQIAAAAPaW50ZXJuYWxBc3NldElkBAAAAAxsZWFzZWRBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAECAAAADGxlYXNlZEFtb3VudAQAAAAJbmV3QW1vdW50CQAAZQAAAAIFAAAADGxlYXNlZEFtb3VudAUAAAAKdG9UcmFuc2ZlcgQAAAAHbGVhc2VJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTcpAAAAAQIAAAAHbGVhc2VJZAQAAAAMbGVhc2VSZXN1bHRzAwkAAGYAAAACBQAAAAluZXdBbW91bnQAAAAAAAAAAAAEAAAADWxlYXNlckFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABAgAAAA1sZWFzZXJBZGRyZXNzBAAAAAVsZWFzZQkABEQAAAACBQAAAA1sZWFzZXJBZGRyZXNzBQAAAAluZXdBbW91bnQEAAAACm5ld0xlYXNlSWQJAAQ5AAAAAQUAAAAFbGVhc2UJAARMAAAAAgUAAAAFbGVhc2UJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgIAAAAHbGVhc2VJZAUAAAAKbmV3TGVhc2VJZAUAAAADbmlsCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAB2xlYXNlSWQFAAAAA25pbAQAAAAHcmVzdWx0cwkABEwAAAACCQEAAAALTGVhc2VDYW5jZWwAAAABBQAAAAdsZWFzZUlkCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAANc1dhdmVzQXNzZXRJZAgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKdG9UcmFuc2ZlcgUAAAAEdW5pdAUAAAADbmlsCQAETgAAAAIFAAAAB3Jlc3VsdHMFAAAADGxlYXNlUmVzdWx0cwAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5gNUKHg==", "height": 2304125, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let precision = 1000000000000000000
5+
6+func keyManagerPublicKey () = getString("managerPublicKey")
7+
8+
9+func managerPublicKeyOrUnit () = match keyManagerPublicKey() {
10+ case s: String =>
11+ fromBase58String(s)
12+ case _: Unit =>
13+ unit
14+ case _ =>
15+ throw("Match error")
16+}
17+
18+
19+func mustManager (i) = {
20+ let pd = throw("permission denied")
21+ match managerPublicKeyOrUnit() {
22+ case pk: ByteVector =>
23+ if ((i.callerPublicKey == pk))
24+ then true
25+ else pd
26+ case _: Unit =>
27+ if ((i.caller == this))
28+ then true
29+ else pd
30+ case _ =>
31+ throw("Match error")
32+ }
33+ }
34+
35+
36+func mustNotInited () = match getBoolean("inited") {
37+ case inited: Boolean =>
38+ if ((inited == false))
39+ then true
40+ else throw("Already inited")
41+ case _: Unit =>
42+ false
43+ case _ =>
44+ throw("Match error")
45+}
46+
47+
48+@Callable(i)
49+func init (leaserAddress) = {
50+ let checks = [mustManager(i), mustNotInited()]
51+ if ((checks == checks))
52+ then {
53+ let sWaves = Issue("sWaves", "", 0, 8, true, unit, 0)
54+ let sWavesAssetId = calculateAssetId(sWaves)
55+[BooleanEntry("inited", true), StringEntry("sWavesAssetId", toBase58String(sWavesAssetId)), StringEntry("leaserAddress", leaserAddress), IntegerEntry("ratio", precision), IntegerEntry("leasedAmount", 0), sWaves]
56+ }
57+ else throw("Strict value is not equal to itself.")
58+ }
59+
60+
61+
62+@Callable(i)
63+func stake () = {
64+ let payment = i.payments[0]
65+ if ((payment.assetId != unit))
66+ then throw("Only WAVES supported")
67+ else if ((size(i.payments) != 1))
68+ then throw("Wrong payments amount")
69+ else {
70+ let ratio = getIntegerValue("ratio")
71+ let toReissue = fraction(payment.amount, precision, ratio)
72+ let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
73+ let leasedAmount = getIntegerValue("leasedAmount")
74+ let newAmount = (leasedAmount + payment.amount)
75+ let leaserAddress = Address(fromBase58String(getStringValue("leaserAddress")))
76+ let lease = Lease(leaserAddress, newAmount)
77+ let newLeaseId = calculateLeaseId(lease)
78+ let results = [BinaryEntry("leaseId", newLeaseId), lease, IntegerEntry("leasedAmount", newAmount), Reissue(sWavesAssetId, toReissue, true), ScriptTransfer(i.caller, toReissue, sWavesAssetId)]
79+ match getBinary("leaseId") {
80+ case leaseId: ByteVector =>
81+LeaseCancel(leaseId) :: results
82+ case _: Unit =>
83+ results
84+ case _ =>
85+ throw("Match error")
86+ }
87+ }
88+ }
89+
90+
91+
92+@Callable(i)
93+func unstake () = {
94+ let payment = i.payments[0]
95+ let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
96+ if ((payment.assetId != sWavesAssetId))
97+ then throw("Only sWAVES supported")
98+ else if ((size(i.payments) != 1))
99+ then throw("Wrong payments amount")
100+ else {
101+ let ratio = getIntegerValue("ratio")
102+ let toTransfer = fraction(payment.amount, ratio, precision)
103+ let assetId = getStringValue("internalAssetId")
104+ let leasedAmount = getIntegerValue("leasedAmount")
105+ let newAmount = (leasedAmount - toTransfer)
106+ let leaseId = getBinaryValue("leaseId")
107+ let leaseResults = if ((newAmount > 0))
108+ then {
109+ let leaserAddress = Address(fromBase58String(getStringValue("leaserAddress")))
110+ let lease = Lease(leaserAddress, newAmount)
111+ let newLeaseId = calculateLeaseId(lease)
112+[lease, BinaryEntry("leaseId", newLeaseId)]
113+ }
114+ else [DeleteEntry("leaseId")]
115+ let results = [LeaseCancel(leaseId), Burn(sWavesAssetId, payment.amount), ScriptTransfer(i.caller, toTransfer, unit)]
116+ (results ++ leaseResults)
117+ }
118+ }
119+
120+
121+@Verifier(tx)
122+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
123+

github/deemru/w8io/873ac7e 
19.80 ms