tx · B1oLpBAkiLBcugRzVaNnxg8qu12ZrHZ4P5oyiQCeAwj

3N6VbAeiZ1dPMdSBSu5fDWhtvM2vvmZtUb6:  -0.01000000 Waves

2019.12.25 14:12 [824445] smart account 3N6VbAeiZ1dPMdSBSu5fDWhtvM2vvmZtUb6 > SELF 0.00000000 Waves

{ "type": 13, "id": "B1oLpBAkiLBcugRzVaNnxg8qu12ZrHZ4P5oyiQCeAwj", "fee": 1000000, "feeAssetId": null, "timestamp": 1577272368079, "version": 1, "sender": "3N6VbAeiZ1dPMdSBSu5fDWhtvM2vvmZtUb6", "senderPublicKey": "9yqWevzyLwXw8DrzDmHg7DRKTdJiTBnAMvu6siAMEWn3", "proofs": [ "5K4KMTq5MuwGe7aWeYBUMKFh6D6MuiiK8o2MnWp39JcacCvqwik6z3wAYJTNVM6WRG4umaDLihSvxgfHcy1RAuHs" ], "script": "base64:AAIDAAAAAAAAABMIARIICgYIAQEBAQESABIDCgEIAAAAEgAAAAASRHJhZ29uRnJ1aXRBZGRyZXNzAgAAACMzTXpERzlydDEzRXU1dXc0bVpxa0c1YXhEaWlqdlZTRGJqYwAAAAANZGl2UHJvZ3JhbVB1YgkAAlkAAAABAgAAACw5eXFXZXZ6eUx3WHc4RHJ6RG1IZzdEUktUZEppVEJuQU12dTZzaUFNRVduMwAAAAAIYWRtaW5QdWIJAAJZAAAAAQIAAAAsNXlqY2Z2SDZpdXdya0ZnaFh1V2FKZU1wcGFRODkzRlNzOEhDQWdWUXp1TlkAAAAADHdhdmVzQXNzZXRJZAUAAAAEdW5pdAAAAAAKYnRjQXNzZXRJZAEAAAAgbDay9tQcEtzHdt0STB4S0ADuIUgbcohuxXO8rQ852yoAAAAACmV0aEFzc2V0SWQBAAAAIDhuzkVW3sDH2wOtmv6JQ6ro5x6FVpACOmgC2/a56f4VAAAAAApsdGNBc3NldElkAQAAACDoIi/sdJtWLPdBhG4QLfxocGGv0n1LPYuk5MXk5PmgNAAAAAALd2VzdEFzc2V0SWQBAAAAIKPMH7K9UkJfSfT2ToivFljpygSe4aCd+tVbvF6RfUFQAAAAAAp3Y3RBc3NldElkAQAAACCK86a8B9SM024yQtpj2uAKQIjN+oQNcSlHnRS+pZZlsAEAAAANY2FsbGVySXNBZG1pbgAAAAEAAAAPY2FsbGVyUHVibGljS2V5AwkAAAAAAAACBQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAACGFkbWluUHViBQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAaWW91IGNhbm5vdCBjcmVhdGUgZGVwb3NpdHMBAAAAFGNhbGxlcklzRGVwb3NpdE93bmVyAAAAAgAAAAlhc3NldE5hbWUAAAAPY2FsbGVyUHVibGljS2V5BAAAAAxkZXBvc2l0T3duZXIJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0T3duZXIDCQAAAAAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAAMZGVwb3NpdE93bmVyBQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAArT25seSBkZXBvc2l0IG93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aXZpZGVuZHNUb3RhbEJhbGFuY2UJAABkAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAAdhc3NldElkBQAAABJkaXZpZGVuZHNXaXRoZHJhd24EAAAACXVzZXJTdGFrZQkAAGkAAAACCQAAaAAAAAIFAAAAFWRpdmlkZW5kc1RvdGFsQmFsYW5jZQUAAAAQZGl2aWRlbmRzUGVyY2VudAAAAAAAAAAAZAkAAGUAAAACBQAAAAl1c2VyU3Rha2UFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgAAAAMAAAABaQEAAAANY3JlYXRlRGVwb3NpdAAAAAYAAAAJYXNzZXROYW1lAAAABmFtb3VudAAAABBkZWl2aWRlbmRQZXJjZW50AAAAC3N0YXJ0SGVpZ2h0AAAADmR1cmF0aW9uQmxvY2tzAAAADnN0YXJ0VGltZXN0YW1wBAAAAAljYWxsZXJQdWIJAQAAAA1jYWxsZXJJc0FkbWluAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAABVkZXBvc2l0QWxyZWFkeUNyZWF0ZWQJAQAAABNkZXBvc2l0Q3JlYXRlZENoZWNrAAAAAQUAAAAJYXNzZXROYW1lAwUAAAAVZGVwb3NpdEFscmVhZHlDcmVhdGVkCQAAAgAAAAECAAAAGkRlcG9zaXQgaXMgYWxyZWFkeSBjcmVhdGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRTdGF0ZQIAAAAHQ3JlYXRlZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADl9EZXBvc2l0QW1vdW50BQAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABBfRGl2aWRlbmRQZXJjZW50BQAAABBkZWl2aWRlbmRQZXJjZW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAASX0RlcG9zaXRTdGFydEJsb2NrBQAAAAtzdGFydEhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAFl9EZXBvc2l0U3RhcnRUaW1lc3RhbXAFAAAADnN0YXJ0VGltZXN0YW1wCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAVX0RlcG9zaXREdXJhdGlvbkJsb2NrBQAAAA5kdXJhdGlvbkJsb2NrcwUAAAADbmlsAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAljYWxsZXJQdWIJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAJYXNzZXROYW1lCQEAAAARYXNzZXRCYXNlNThUb05hbWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABmFtb3VudAkBAAAAC2Ftb3VudENoZWNrAAAAAgUAAAAJYXNzZXROYW1lCAUAAAADcG10AAAABmFtb3VudAQAAAAMZGVwb3NpdFN0YXRlCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAA1fRGVwb3NpdFN0YXRlAwkAAAAAAAACBQAAAAxkZXBvc2l0U3RhdGUCAAAAB0NyZWF0ZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRPd25lcgUAAAAJY2FsbGVyUHViCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRTdGF0ZQIAAAAGQWN0aXZlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAASX0RpdmlkZW5kV2l0aGRyYXduAAAAAAAAAAAABQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAABJEcmFnb25GcnVpdEFkZHJlc3MFAAAABmFtb3VudAgFAAAAA3BtdAAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAWRGVwb3NpdCBpcyB1bmF2YWlsYWJsZQAAAAFpAQAAABF3aXRoZHJhd0RpdmlkZW5kcwAAAAEAAAAJYXNzZXROYW1lBAAAAAdhc3NldElkCQEAAAARYXNzZXROYW1lVG9CYXNlNTgAAAABBQAAAAlhc3NldE5hbWUEAAAADGRlcG9zaXRPd25lcgkBAAAAFGNhbGxlcklzRGVwb3NpdE93bmVyAAAAAgUAAAAJYXNzZXROYW1lCQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAQZGl2aWRlbmRzUGVyY2VudAkBAAAAE2dldERpdmlkZW5kc1BlcmNlbnQAAAABBQAAAAlhc3NldE5hbWUEAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgkBAAAAG2dldERpdmlkZW5kc1dpdGhkcmF3bkFtb3VudAAAAAEFAAAACWFzc2V0TmFtZQQAAAASZGl2aWRlbmRzQXZhbGlhYmxlCQEAAAASZ2V0RGl2aWRlbmRCYWxhbmNlAAAAAwUAAAAHYXNzZXRJZAUAAAASZGl2aWRlbmRzV2l0aGRyYXduBQAAABBkaXZpZGVuZHNQZXJjZW50CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAE19EaXZpZGVuZHNXaXRoZHJhd24JAABkAAAAAgUAAAASZGl2aWRlbmRzV2l0aGRyYXduBQAAABJkaXZpZGVuZHNBdmFsaWFibGUFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADGRlcG9zaXRPd25lcgUAAAASZGl2aWRlbmRzQXZhbGlhYmxlBQAAAAdhc3NldElkBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADWRpdlByb2dyYW1QdWIEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAAEc3N0eAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAQAAAAJYXNzZXROYW1lCQEAAAARYXNzZXRCYXNlNThUb05hbWUAAAABCAUAAAADdHR4AAAAB2Fzc2V0SWQEAAAAEGRpdmlkZW5kc1BlcmNlbnQJAQAAABNnZXREaXZpZGVuZHNQZXJjZW50AAAAAQUAAAAJYXNzZXROYW1lBAAAABJkaXZpZGVuZHNXaXRoZHJhd24JAQAAABtnZXREaXZpZGVuZHNXaXRoZHJhd25BbW91bnQAAAABBQAAAAlhc3NldE5hbWUEAAAACWRpdmlkZW5kcwkBAAAAEmdldERpdmlkZW5kQmFsYW5jZQAAAAMIBQAAAAN0dHgAAAAHYXNzZXRJZAUAAAASZGl2aWRlbmRzV2l0aGRyYXduBQAAABBkaXZpZGVuZHNQZXJjZW50BAAAAA5hY2NvdW50QmFsYW5jZQkAA+sAAAACBQAAAAR0aGlzCAUAAAADdHR4AAAAB2Fzc2V0SWQJAABnAAAAAgkAAGUAAAACBQAAAA5hY2NvdW50QmFsYW5jZQgFAAAAA3R0eAAAAAZhbW91bnQFAAAACWRpdmlkZW5kcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAA2l0eAUAAAAHJG1hdGNoMAYHB1Ut9F8=", "chainId": 84, "height": 824445, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let DragonFruitAddress = "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc"
5+
6+let divProgramPub = fromBase58String("9yqWevzyLwXw8DrzDmHg7DRKTdJiTBnAMvu6siAMEWn3")
7+
8+let adminPub = fromBase58String("5yjcfvH6iuwrkFghXuWaJeMppaQ893FSs8HCAgVQzuNY")
9+
10+let wavesAssetId = unit
11+
12+let btcAssetId = base58'8HRQdqJBBeqZvgMtg6we6sw11i5GzpFNs7onNeVRBmaq'
13+
14+let ethAssetId = base58'4oHq3C7ar7kmcRHEZBrgPyGtU6fkqJ1pHoRYboKeYSWQ'
15+
16+let ltcAssetId = base58'Gd9pdZw9muDBZwwsQLqyigRJCDABbiJaksmemzFCorsV'
17+
18+let westAssetId = base58'C2Pz1Q9QYaF9MkK9J9mX9vAMVc25R3w6Lr5g5B5Yje87'
19+
20+let wctAssetId = base58'AMQkRmWSWHEd1nMDvDZFkadoCFCxRkDzBsEbscJ9ZZ2P'
21+
22+func callerIsAdmin (callerPublicKey) = if ((callerPublicKey == adminPub))
23+ then callerPublicKey
24+ else throw("You cannot create deposits")
25+
26+
27+func callerIsDepositOwner (assetName,callerPublicKey) = {
28+ let depositOwner = getString(this, (assetName + "_DepositOwner"))
29+ if ((callerPublicKey == depositOwner))
30+ then callerPublicKey
31+ else throw("Only deposit owner can withdrawal dividends")
32+ }
33+
34+
35+func depositCreatedCheck (assetName) = {
36+ let key = (assetName + "_DepositOwner")
37+ let val = getString(this, key)
38+ match val {
39+ case a: String =>
40+ true
41+ case _ =>
42+ false
43+ }
44+ }
45+
46+
47+func amountCheck (assetName,pmtAmount) = {
48+ let key = (assetName + "_DepositAmount")
49+ let val = getInteger(this, key)
50+ let depositAmount = match val {
51+ case a: Int =>
52+ a
53+ case _ =>
54+ throw("Couldn't find deposit amount")
55+ }
56+ if ((pmtAmount == depositAmount))
57+ then pmtAmount
58+ else throw("Amount is incorrect")
59+ }
60+
61+
62+func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
63+ then "WAVES"
64+ else if ((assetId == btcAssetId))
65+ then "BTC"
66+ else if ((assetId == ethAssetId))
67+ then "ETH"
68+ else if ((assetId == ltcAssetId))
69+ then "LTC"
70+ else if ((assetId == westAssetId))
71+ then "WEST"
72+ else if ((assetId == wctAssetId))
73+ then "WCT"
74+ else throw("AssetId is incorrect")
75+
76+
77+func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
78+ then wavesAssetId
79+ else if ((assetName == "BTC"))
80+ then btcAssetId
81+ else if ((assetName == "ETH"))
82+ then ethAssetId
83+ else if ((assetName == "LTC"))
84+ then ltcAssetId
85+ else if ((assetName == "WEST"))
86+ then westAssetId
87+ else if ((assetName == "WCT"))
88+ then wctAssetId
89+ else throw("Asset name is incorrect")
90+
91+
92+func getDividendsPercent (assetName) = {
93+ let key = (assetName + "_DividendPercent")
94+ let val = getInteger(this, key)
95+ match val {
96+ case a: Int =>
97+ a
98+ case _ =>
99+ throw("Couldn't Find dividend percent")
100+ }
101+ }
102+
103+
104+func getDividendsWithdrawnAmount (assetName) = {
105+ let val = getInteger(this, (assetName + "_DividendsWithdrawn"))
106+ match val {
107+ case a: Int =>
108+ a
109+ case _ =>
110+ 0
111+ }
112+ }
113+
114+
115+func getDividendBalance (assetId,dividendsWithdrawn,dividendsPercent) = {
116+ let dividendsTotalBalance = (assetBalance(this, assetId) + dividendsWithdrawn)
117+ let userStake = ((dividendsTotalBalance * dividendsPercent) / 100)
118+ (userStake - dividendsWithdrawn)
119+ }
120+
121+
122+@Callable(i)
123+func createDeposit (assetName,amount,deividendPercent,startHeight,durationBlocks,startTimestamp) = {
124+ let callerPub = callerIsAdmin(i.callerPublicKey)
125+ let depositAlreadyCreated = depositCreatedCheck(assetName)
126+ if (depositAlreadyCreated)
127+ then throw("Deposit is already created")
128+ else WriteSet([DataEntry((assetName + "_DepositState"), "Created"), DataEntry((assetName + "_DepositAmount"), amount), DataEntry((assetName + "_DividendPercent"), deividendPercent), DataEntry((assetName + "_DepositStartBlock"), startHeight), DataEntry((assetName + "_DepositStartTimestamp"), startTimestamp), DataEntry((assetName + "_DepositDurationBlock"), durationBlocks)])
129+ }
130+
131+
132+
133+@Callable(i)
134+func deposit () = {
135+ let callerPub = toBase58String(i.callerPublicKey)
136+ let pmt = extract(i.payment)
137+ let assetName = assetBase58ToName(pmt.assetId)
138+ let amount = amountCheck(assetName, pmt.amount)
139+ let depositState = getString(this, (assetName + "_DepositState"))
140+ if ((depositState == "Created"))
141+ then ScriptResult(WriteSet([DataEntry((assetName + "_DepositOwner"), callerPub), DataEntry((assetName + "_DepositState"), "Active"), DataEntry((assetName + "_DividendWithdrawn"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(DragonFruitAddress), amount, pmt.assetId)]))
142+ else throw("Deposit is unavailable")
143+ }
144+
145+
146+
147+@Callable(i)
148+func withdrawDividends (assetName) = {
149+ let assetId = assetNameToBase58(assetName)
150+ let depositOwner = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
151+ let dividendsPercent = getDividendsPercent(assetName)
152+ let dividendsWithdrawn = getDividendsWithdrawnAmount(assetName)
153+ let dividendsAvaliable = getDividendBalance(assetId, dividendsWithdrawn, dividendsPercent)
154+ ScriptResult(WriteSet([DataEntry((assetName + "_DividendsWithdrawn"), (dividendsWithdrawn + dividendsAvaliable))]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(depositOwner)), dividendsAvaliable, assetId)]))
155+ }
156+
157+
158+@Verifier(tx)
159+func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], divProgramPub))
160+ then match tx {
161+ case sstx: SetScriptTransaction =>
162+ true
163+ case ttx: TransferTransaction =>
164+ let assetName = assetBase58ToName(ttx.assetId)
165+ let dividendsPercent = getDividendsPercent(assetName)
166+ let dividendsWithdrawn = getDividendsWithdrawnAmount(assetName)
167+ let dividends = getDividendBalance(ttx.assetId, dividendsWithdrawn, dividendsPercent)
168+ let accountBalance = assetBalance(this, ttx.assetId)
169+ ((accountBalance - ttx.amount) >= dividends)
170+ case itx: InvokeScriptTransaction =>
171+ true
172+ case _ =>
173+ false
174+ }
175+ else false
176+

github/deemru/w8io/026f985 
24.24 ms