tx · 4Sjx5AjS1w4oTGPZdBtH1QM6DcDSrTjseCXywWPfD7vD

3Muq5wV3BDmwMhJVZYV29DzxmK1omjyuibx:  -0.01400000 Waves

2019.12.30 15:41 [831830] smart account 3Muq5wV3BDmwMhJVZYV29DzxmK1omjyuibx > SELF 0.00000000 Waves

{ "type": 13, "id": "4Sjx5AjS1w4oTGPZdBtH1QM6DcDSrTjseCXywWPfD7vD", "fee": 1400000, "feeAssetId": null, "timestamp": 1577709666220, "version": 1, "sender": "3Muq5wV3BDmwMhJVZYV29DzxmK1omjyuibx", "senderPublicKey": "2VedaSDtTc2zJEQPTDwrUiyjjbQAbFbjtyuFWe5HSt4S", "proofs": [ "fqBuJ7VTRMRCUFHtLYqYTTgSEqHSezS44DtznTx3SLMkb3gAjrBVpiQvspxyiRvzRKNUv6H8t4MS2DqxUQ29WcG" ], "script": "base64:AAIDAAAAAAAAABMIARIICgYIAQEBAQESABIDCgEIAAAAEgAAAAASRHJhZ29uRnJ1aXRBZGRyZXNzAgAAACMzTXpERzlydDEzRXU1dXc0bVpxa0c1YXhEaWlqdlZTRGJqYwAAAAANZGl2UHJvZ3JhbVB1YgkAAlkAAAABAgAAACwyVmVkYVNEdFRjMnpKRVFQVER3clVpeWpqYlFBYkZianR5dUZXZTVIU3Q0UwAAAAAIYWRtaW5QdWIJAAJZAAAAAQIAAAAsNXlqY2Z2SDZpdXdya0ZnaFh1V2FKZU1wcGFRODkzRlNzOEhDQWdWUXp1TlkAAAAADHdhdmVzQXNzZXRJZAUAAAAEdW5pdAAAAAAKYnRjQXNzZXRJZAEAAAAgbDay9tQcEtzHdt0STB4S0ADuIUgbcohuxXO8rQ852yoAAAAACmV0aEFzc2V0SWQBAAAAIDhuzkVW3sDH2wOtmv6JQ6ro5x6FVpACOmgC2/a56f4VAAAAAApsdGNBc3NldElkAQAAACDoIi/sdJtWLPdBhG4QLfxocGGv0n1LPYuk5MXk5PmgNAAAAAALd2VzdEFzc2V0SWQBAAAAIKPMH7K9UkJfSfT2ToivFljpygSe4aCd+tVbvF6RfUFQAAAAAAp3Y3RBc3NldElkAQAAACCK86a8B9SM024yQtpj2uAKQIjN+oQNcSlHnRS+pZZlsAEAAAANY2FsbGVySXNBZG1pbgAAAAEAAAAPY2FsbGVyUHVibGljS2V5AwkAAAAAAAACBQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAACGFkbWluUHViBQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAaWW91IGNhbm5vdCBjcmVhdGUgZGVwb3NpdHMBAAAAFGNhbGxlcklzRGVwb3NpdE93bmVyAAAAAgAAAAlhc3NldE5hbWUAAAAPY2FsbGVyUHVibGljS2V5BAAAAAxkZXBvc2l0T3duZXIJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0T3duZXIDCQAAAAAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAAMZGVwb3NpdE93bmVyBQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAArT25seSBkZXBvc2l0IG93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dmlkZW5kc1RvdGFsQmFsYW5jZQkAAGQAAAACCQAD6wAAAAIFAAAABHRoaXMFAAAAB2Fzc2V0SWQFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgQAAAAJdXNlclN0YWtlCQAAaQAAAAIJAABoAAAAAgUAAAAVZGl2aWRlbmRzVG90YWxCYWxhbmNlBQAAABBkaXZpZGVuZHNQZXJjZW50AAAAAAAAAABkCQAAZQAAAAIFAAAACXVzZXJTdGFrZQUAAAASZGl2aWRlbmRzV2l0aGRyYXduAAAAAwAAAAFpAQAAAA1jcmVhdGVEZXBvc2l0AAAABgAAAAlhc3NldE5hbWUAAAAGYW1vdW50AAAAEGRlaXZpZGVuZFBlcmNlbnQAAAALc3RhcnRIZWlnaHQAAAAOZHVyYXRpb25CbG9ja3MAAAAOc3RhcnRUaW1lc3RhbXAEAAAACWNhbGxlclB1YgkBAAAADWNhbGxlcklzQWRtaW4AAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAFWRlcG9zaXRBbHJlYWR5Q3JlYXRlZAkBAAAAE2RlcG9zaXRDcmVhdGVkQ2hlY2sAAAABBQAAAAlhc3NldE5hbWUDBQAAABVkZXBvc2l0QWxyZWFkeUNyZWF0ZWQJAAACAAAAAQIAAAAaRGVwb3NpdCBpcyBhbHJlYWR5IGNyZWF0ZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAA1fRGVwb3NpdFN0YXRlAgAAAAdDcmVhdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAOX0RlcG9zaXRBbW91bnQFAAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAEF9EaXZpZGVuZFBlcmNlbnQFAAAAEGRlaXZpZGVuZFBlcmNlbnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABJfRGVwb3NpdFN0YXJ0QmxvY2sFAAAAC3N0YXJ0SGVpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAWX0RlcG9zaXRTdGFydFRpbWVzdGFtcAUAAAAOc3RhcnRUaW1lc3RhbXAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABVfRGVwb3NpdER1cmF0aW9uQmxvY2sFAAAADmR1cmF0aW9uQmxvY2tzBQAAAANuaWwAAAABaQEAAAAHZGVwb3NpdAAAAAAEAAAACWNhbGxlclB1YgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAlhc3NldE5hbWUJAQAAABFhc3NldEJhc2U1OFRvTmFtZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAGYW1vdW50CQEAAAALYW1vdW50Q2hlY2sAAAACBQAAAAlhc3NldE5hbWUIBQAAAANwbXQAAAAGYW1vdW50BAAAAAxkZXBvc2l0U3RhdGUJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0U3RhdGUDCQAAAAAAAAIFAAAADGRlcG9zaXRTdGF0ZQIAAAAHQ3JlYXRlZAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAACl9PcGVyYXRpb24FAAAABmhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0T3duZXIFAAAACWNhbGxlclB1YgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0U3RhdGUCAAAABkFjdGl2ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAEl9EaXZpZGVuZFdpdGhkcmF3bgAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAASRHJhZ29uRnJ1aXRBZGRyZXNzBQAAAAZhbW91bnQIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAFkRlcG9zaXQgaXMgdW5hdmFpbGFibGUAAAABaQEAAAARd2l0aGRyYXdEaXZpZGVuZHMAAAABAAAACWFzc2V0TmFtZQQAAAAHYXNzZXRJZAkBAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAAAxkZXBvc2l0T3duZXIJAQAAABRjYWxsZXJJc0RlcG9zaXRPd25lcgAAAAIFAAAACWFzc2V0TmFtZQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAEGRpdmlkZW5kc1BlcmNlbnQJAQAAABNnZXREaXZpZGVuZHNQZXJjZW50AAAAAQUAAAAJYXNzZXROYW1lBAAAABJkaXZpZGVuZHNXaXRoZHJhd24JAQAAABtnZXREaXZpZGVuZHNXaXRoZHJhd25BbW91bnQAAAABBQAAAAlhc3NldE5hbWUEAAAAEmRpdmlkZW5kc0F2YWxpYWJsZQkBAAAAEmdldERpdmlkZW5kQmFsYW5jZQAAAAMFAAAAB2Fzc2V0SWQFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgUAAAAQZGl2aWRlbmRzUGVyY2VudAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABJfRGl2aWRlbmRXaXRoZHJhd24JAABkAAAAAgUAAAASZGl2aWRlbmRzV2l0aGRyYXduBQAAABJkaXZpZGVuZHNBdmFsaWFibGUFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADGRlcG9zaXRPd25lcgUAAAASZGl2aWRlbmRzQXZhbGlhYmxlBQAAAAdhc3NldElkBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABm8qkLA=", "chainId": 84, "height": 831830, "spentComplexity": 0 } View: original | compacted Prev: 5WRfPAjMKVa1muX9pEvCqLCgL64af87Se3kAgxbSuqdp Next: 6WZjsTb3UjQnBUi7rMF7p7Hb7XXYnc8KUeWiQHHeUhu Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let DragonFruitAddress = "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc"
55
6-let divProgramPub = fromBase58String("A4bJfnBhBTVh7GRNr1hHz6iqJta6eBbaExPDG7UapoaD")
6+let divProgramPub = fromBase58String("2VedaSDtTc2zJEQPTDwrUiyjjbQAbFbjtyuFWe5HSt4S")
77
88 let adminPub = fromBase58String("5yjcfvH6iuwrkFghXuWaJeMppaQ893FSs8HCAgVQzuNY")
99
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let DragonFruitAddress = "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc"
55
6-let divProgramPub = fromBase58String("A4bJfnBhBTVh7GRNr1hHz6iqJta6eBbaExPDG7UapoaD")
6+let divProgramPub = fromBase58String("2VedaSDtTc2zJEQPTDwrUiyjjbQAbFbjtyuFWe5HSt4S")
77
88 let adminPub = fromBase58String("5yjcfvH6iuwrkFghXuWaJeMppaQ893FSs8HCAgVQzuNY")
99
1010 let wavesAssetId = unit
1111
1212 let btcAssetId = base58'8HRQdqJBBeqZvgMtg6we6sw11i5GzpFNs7onNeVRBmaq'
1313
1414 let ethAssetId = base58'4oHq3C7ar7kmcRHEZBrgPyGtU6fkqJ1pHoRYboKeYSWQ'
1515
1616 let ltcAssetId = base58'Gd9pdZw9muDBZwwsQLqyigRJCDABbiJaksmemzFCorsV'
1717
1818 let westAssetId = base58'C2Pz1Q9QYaF9MkK9J9mX9vAMVc25R3w6Lr5g5B5Yje87'
1919
2020 let wctAssetId = base58'AMQkRmWSWHEd1nMDvDZFkadoCFCxRkDzBsEbscJ9ZZ2P'
2121
2222 func callerIsAdmin (callerPublicKey) = if ((callerPublicKey == adminPub))
2323 then callerPublicKey
2424 else throw("You cannot create deposits")
2525
2626
2727 func callerIsDepositOwner (assetName,callerPublicKey) = {
2828 let depositOwner = getString(this, (assetName + "_DepositOwner"))
2929 if ((callerPublicKey == depositOwner))
3030 then callerPublicKey
3131 else throw("Only deposit owner can withdrawal dividends")
3232 }
3333
3434
3535 func depositCreatedCheck (assetName) = {
3636 let key = (assetName + "_DepositOwner")
3737 let val = getString(this, key)
3838 match val {
3939 case a: String =>
4040 true
4141 case _ =>
4242 false
4343 }
4444 }
4545
4646
4747 func amountCheck (assetName,pmtAmount) = {
4848 let key = (assetName + "_DepositAmount")
4949 let val = getInteger(this, key)
5050 let depositAmount = match val {
5151 case a: Int =>
5252 a
5353 case _ =>
5454 throw("Couldn't find deposit amount")
5555 }
5656 if ((pmtAmount == depositAmount))
5757 then pmtAmount
5858 else throw("Amount is incorrect")
5959 }
6060
6161
6262 func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
6363 then "WAVES"
6464 else if ((assetId == btcAssetId))
6565 then "BTC"
6666 else if ((assetId == ethAssetId))
6767 then "ETH"
6868 else if ((assetId == ltcAssetId))
6969 then "LTC"
7070 else if ((assetId == westAssetId))
7171 then "WEST"
7272 else if ((assetId == wctAssetId))
7373 then "WCT"
7474 else throw("AssetId is incorrect")
7575
7676
7777 func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
7878 then wavesAssetId
7979 else if ((assetName == "BTC"))
8080 then btcAssetId
8181 else if ((assetName == "ETH"))
8282 then ethAssetId
8383 else if ((assetName == "LTC"))
8484 then ltcAssetId
8585 else if ((assetName == "WEST"))
8686 then westAssetId
8787 else if ((assetName == "WCT"))
8888 then wctAssetId
8989 else throw("Asset name is incorrect")
9090
9191
9292 func getDividendsPercent (assetName) = {
9393 let key = (assetName + "_DividendPercent")
9494 let val = getInteger(this, key)
9595 match val {
9696 case a: Int =>
9797 a
9898 case _ =>
9999 throw("Couldn't Find dividend percent")
100100 }
101101 }
102102
103103
104104 func getDividendsWithdrawnAmount (assetName) = {
105105 let val = getInteger(this, (assetName + "_DividendWithdrawn"))
106106 match val {
107107 case a: Int =>
108108 a
109109 case _ =>
110110 0
111111 }
112112 }
113113
114114
115115 func getDividendBalance (assetId,dividendsWithdrawn,dividendsPercent) = {
116116 let dividendsTotalBalance = (assetBalance(this, assetId) + dividendsWithdrawn)
117117 let userStake = ((dividendsTotalBalance * dividendsPercent) / 100)
118118 (userStake - dividendsWithdrawn)
119119 }
120120
121121
122122 @Callable(i)
123123 func createDeposit (assetName,amount,deividendPercent,startHeight,durationBlocks,startTimestamp) = {
124124 let callerPub = callerIsAdmin(i.callerPublicKey)
125125 let depositAlreadyCreated = depositCreatedCheck(assetName)
126126 if (depositAlreadyCreated)
127127 then throw("Deposit is already created")
128128 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)])
129129 }
130130
131131
132132
133133 @Callable(i)
134134 func deposit () = {
135135 let callerPub = toBase58String(i.callerPublicKey)
136136 let pmt = extract(i.payment)
137137 let assetName = assetBase58ToName(pmt.assetId)
138138 let amount = amountCheck(assetName, pmt.amount)
139139 let depositState = getString(this, (assetName + "_DepositState"))
140140 if ((depositState == "Created"))
141141 then ScriptResult(WriteSet([DataEntry("_Operation", height), DataEntry((assetName + "_DepositOwner"), callerPub), DataEntry((assetName + "_DepositState"), "Active"), DataEntry((assetName + "_DividendWithdrawn"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(DragonFruitAddress), amount, pmt.assetId)]))
142142 else throw("Deposit is unavailable")
143143 }
144144
145145
146146
147147 @Callable(i)
148148 func withdrawDividends (assetName) = {
149149 let assetId = assetNameToBase58(assetName)
150150 let depositOwner = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
151151 let dividendsPercent = getDividendsPercent(assetName)
152152 let dividendsWithdrawn = getDividendsWithdrawnAmount(assetName)
153153 let dividendsAvaliable = getDividendBalance(assetId, dividendsWithdrawn, dividendsPercent)
154154 ScriptResult(WriteSet([DataEntry((assetName + "_DividendWithdrawn"), (dividendsWithdrawn + dividendsAvaliable))]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(depositOwner)), dividendsAvaliable, assetId)]))
155155 }
156156
157157
158158 @Verifier(tx)
159159 func verify () = true
160160

github/deemru/w8io/6500d08 
42.52 ms