tx · 4tAFdtWtx24NrvTB3nY8y47DxRNVcHkMgEmjNRGz9EPJ

3MsH5PGAzchQox92fKoATyqvbbZGtCnM7HL:  -0.01000000 Waves

2022.10.11 16:23 [2267734] smart account 3MsH5PGAzchQox92fKoATyqvbbZGtCnM7HL > SELF 0.00000000 Waves

{ "type": 13, "id": "4tAFdtWtx24NrvTB3nY8y47DxRNVcHkMgEmjNRGz9EPJ", "fee": 1000000, "feeAssetId": null, "timestamp": 1665494673105, "version": 2, "chainId": 84, "sender": "3MsH5PGAzchQox92fKoATyqvbbZGtCnM7HL", "senderPublicKey": "6hLKKefEEN4wfGHMRuQoWStMfcXVjfTvah6x2UCEi9P9", "proofs": [ "5vsH7FC33qLzX2zLrjA2ZdxzHXqau1xEb4uFwumBQbBYqDZMgZwSHYf75YZakhdnqURrVF1Phq8qDHH49sWrEER6" ], "script": "base64:AAIEAAAAAAAAAAQIAhIAAAAAEgAAAAARa2V5QWN0aXZhdGVIZWlnaHQCAAAAD2FjdGl2YXRlX2hlaWdodAAAAAAPa2V5RmluaXNoSGVpZ2h0AgAAAA1maW5pc2hfaGVpZ2h0AAAAAA5hY3RpdmF0ZUhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAARa2V5QWN0aXZhdGVIZWlnaHQAAAAADGZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPa2V5RmluaXNoSGVpZ2h0AAAAAA50b3RhbFNoYXJlU1dPUAAAAFrzEHpAAAAAAAAEU1dPUAEAAAAgEv+BIJFIbrNA9tN9ExhCV/1vofsy06rszWo/nWl9O/gAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50AgAAABRfU1dPUF9jbGFpbWVkX2Ftb3VudAAAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAIAAAAZX1NXT1BfbGFzdF9jbGFpbWVkX2Ftb3VudAAAAAAPa2V5QWRtaW5QdWJLZXkxAgAAAAthZG1pbl9wdWJfMQAAAAAPa2V5QWRtaW5QdWJLZXkyAgAAAAthZG1pbl9wdWJfMgAAAAAPa2V5QWRtaW5QdWJLZXkzAgAAAAthZG1pbl9wdWJfMwEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tleUFkbWluUHViBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAALa2V5QWRtaW5QdWIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAABlBZG1pbiBwdWJsaWMga2V5IGlzIGVtcHR5AAAAAAxhZG1pblB1YktleTEJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MQAAAAAMYWRtaW5QdWJLZXkyCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTIAAAAADGFkbWluUHViS2V5MwkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkzAQAAAA5nZXRDYWxsZXJTaGFyZQAAAAEAAAAGY2FsbGVyBAAAAAtjYWxsZXJTaGFyZQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABnNoYXJlXwkABCUAAAABBQAAAAZjYWxsZXIEAAAAEWNhbGxlclNoYXJlQW1vdW50BAAAAAckbWF0Y2gwBQAAAAtjYWxsZXJTaGFyZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVzaGFyZQUAAAAHJG1hdGNoMAUAAAAFc2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXNoYXJlBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAANU9ubHkgZWFybHkgbGlxdWlkaXR5IHByb3ZpZGVycyBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAAAgAAAAECAAAAC01hdGNoIGVycm9yBQAAABFjYWxsZXJTaGFyZUFtb3VudAEAAAAQZ2V0Q2xhaW1lZEFtb3VudAAAAAEAAAAGY2FsbGVyBAAAAA9jYWxsZXJXaXRoZHJhd24JAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQAEJQAAAAEFAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BAAAABVjYWxsZXJXaXRoZHJhd25BbW91bnQEAAAAByRtYXRjaDAFAAAAD2NhbGxlcldpdGhkcmF3bgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVzaGFyZQUAAAAHJG1hdGNoMAUAAAAFc2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXNoYXJlBQAAAAckbWF0Y2gwAAAAAAAAAAAACQAAAgAAAAECAAAAC01hdGNoIGVycm9yBQAAABVjYWxsZXJXaXRoZHJhd25BbW91bnQAAAABAAAAAWkBAAAACWNsYWltU1dPUAAAAAAEAAAADWJsb2NrRHVyYXRpb24JAABlAAAAAgUAAAAMZmluaXNoSGVpZ2h0BQAAAA5hY3RpdmF0ZUhlaWdodAQAAAAPY3VycmVudER1cmF0aW9uAwkAAGYAAAACBQAAAAxmaW5pc2hIZWlnaHQFAAAABmhlaWdodAUAAAAGaGVpZ2h0BQAAAAxmaW5pc2hIZWlnaHQEAAAACXVzZXJTaGFyZQkBAAAADmdldENhbGxlclNoYXJlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAEGdldENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAC2NsYWltQW1vdW50CQAAZQAAAAIJAABrAAAAAwkAAGUAAAACBQAAAA9jdXJyZW50RHVyYXRpb24FAAAADmFjdGl2YXRlSGVpZ2h0BQAAAAl1c2VyU2hhcmUFAAAADWJsb2NrRHVyYXRpb24FAAAAEXVzZXJDbGFpbWVkQW1vdW50BAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAUAAAAEU1dPUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4BAAAABJhZG1pblB1YktleTFTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTNTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAMYWRtaW5QdWJLZXkzAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABJhZG1pblB1YktleTFTaWduZWQFAAAAEmFkbWluUHViS2V5MlNpZ25lZAUAAAASYWRtaW5QdWJLZXkzU2lnbmVkAAAAAAAAAAACoL4Ytw==", "height": 2267734, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let keyActivateHeight = "activate_height"
5+
6+let keyFinishHeight = "finish_height"
7+
8+let activateHeight = getIntegerValue(this, keyActivateHeight)
9+
10+let finishHeight = getIntegerValue(this, keyFinishHeight)
11+
12+let totalShareSWOP = 100000000000000
13+
14+let SWOP = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
15+
16+let oracle = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
17+
18+let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
19+
20+let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
21+
22+let keyAdminPubKey1 = "admin_pub_1"
23+
24+let keyAdminPubKey2 = "admin_pub_2"
25+
26+let keyAdminPubKey3 = "admin_pub_3"
27+
28+func getAdminPub (keyAdminPub) = match getString(oracle, keyAdminPub) {
29+ case string: String =>
30+ fromBase58String(string)
31+ case nothing =>
32+ throw("Admin public key is empty")
33+}
34+
35+
36+let adminPubKey1 = getAdminPub(keyAdminPubKey1)
37+
38+let adminPubKey2 = getAdminPub(keyAdminPubKey2)
39+
40+let adminPubKey3 = getAdminPub(keyAdminPubKey3)
41+
42+func getCallerShare (caller) = {
43+ let callerShare = getInteger(this, ("share_" + toString(caller)))
44+ let callerShareAmount = match callerShare {
45+ case share: Int =>
46+ share
47+ case share: Unit =>
48+ throw("Only early liquidity providers can call this function")
49+ case _ =>
50+ throw("Match error")
51+ }
52+ callerShareAmount
53+ }
54+
55+
56+func getClaimedAmount (caller) = {
57+ let callerWithdrawn = getInteger(this, (toString(caller) + keyUserSWOPClaimedAmount))
58+ let callerWithdrawnAmount = match callerWithdrawn {
59+ case share: Int =>
60+ share
61+ case share: Unit =>
62+ 0
63+ case _ =>
64+ throw("Match error")
65+ }
66+ callerWithdrawnAmount
67+ }
68+
69+
70+@Callable(i)
71+func claimSWOP () = {
72+ let blockDuration = (finishHeight - activateHeight)
73+ let currentDuration = if ((finishHeight > height))
74+ then height
75+ else finishHeight
76+ let userShare = getCallerShare(i.caller)
77+ let userClaimedAmount = getClaimedAmount(i.caller)
78+ let claimAmount = (fraction((currentDuration - activateHeight), userShare, blockDuration) - userClaimedAmount)
79+ let userClaimedAmountNew = (userClaimedAmount + claimAmount)
80+[ScriptTransfer(i.caller, claimAmount, SWOP), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
81+ }
82+
83+
84+@Verifier(tx)
85+func verify () = match tx {
86+ case _ =>
87+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
88+ then 1
89+ else 0
90+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
91+ then 1
92+ else 0
93+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
94+ then 1
95+ else 0
96+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
97+}
98+

github/deemru/w8io/873ac7e 
29.83 ms