tx · DwaGfQqDhed3uj4fRCekMjgqypBLwjWCevY9RPG6uQGV

3MuADE2ryaHKiVHXg5uFLyB4NYnvQJLZBUv:  -0.01400000 Waves

2019.12.25 12:44 [824364] smart account 3MuADE2ryaHKiVHXg5uFLyB4NYnvQJLZBUv > SELF 0.00000000 Waves

{ "type": 13, "id": "DwaGfQqDhed3uj4fRCekMjgqypBLwjWCevY9RPG6uQGV", "fee": 1400000, "feeAssetId": null, "timestamp": 1577267064293, "version": 1, "sender": "3MuADE2ryaHKiVHXg5uFLyB4NYnvQJLZBUv", "senderPublicKey": "A4bJfnBhBTVh7GRNr1hHz6iqJta6eBbaExPDG7UapoaD", "proofs": [ "5Qa9icGzdVP2sj2o7pFZXKovi9PD9rALkQQTLuZfwxubdtxSJMFCfNJDBHJjfBoQCS6Dq9Ktfz5EwrstMqTkLTLg" ], "script": "base64:AAIDAAAAAAAAABMIARIICgYIAQEBAQESABIDCgEIAAAAGQAAAAAHd2F2ZWxldAAAAAAABfXhAAAAAAAPd2F2ZXNEZXBvc2l0QW10CQAAaAAAAAIAAAAAAAAACigFAAAAB3dhdmVsZXQAAAAADWJ0Y0RlcG9zaXRBbXQJAABpAAAAAgkAAGgAAAACAAAAAAAAAAooBQAAAAd3YXZlbGV0AAAAAAAAACcQAAAAAA1ldGhEZXBvc2l0QW10CQAAaAAAAAIAAAAAAAAAAA0FAAAAB3dhdmVsZXQAAAAADWx0Y0RlcG9zaXRBbXQJAABoAAAAAgAAAAAAAAAAJwUAAAAHd2F2ZWxldAAAAAAOd2VzdERlcG9zaXRBbXQJAABoAAAAAgAAAAAAAABlkAUAAAAHd2F2ZWxldAAAAAANd2N0RGVwb3NpdEFtdAkAAGgAAAACAAAAAAAAAGWQBQAAAAd3YXZlbGV0AAAAABJEcmFnb25GcnVpdEFkZHJlc3MCAAAAIzNNekRHOXJ0MTNFdTV1dzRtWnFrRzVheERpaWp2VlNEYmpjAAAAAA1kaXZQcm9ncmFtUHViCQACWQAAAAECAAAALEE0YkpmbkJoQlRWaDdHUk5yMWhIejZpcUp0YTZlQmJhRXhQREc3VWFwb2FEAAAAAAhhZG1pblB1YgkAAlkAAAABAgAAACw1eWpjZnZINml1d3JrRmdoWHVXYUplTXBwYVE4OTNGU3M4SENBZ1ZRenVOWQAAAAAMd2F2ZXNBc3NldElkBQAAAAR1bml0AAAAAApidGNBc3NldElkAQAAACBsNrL21BwS3Md23RJMHhLQAO4hSBtyiG7Fc7ytDznbKgAAAAAKZXRoQXNzZXRJZAEAAAAgOG7ORVbewMfbA62a/olDqujnHoVWkAI6aALb9rnp/hUAAAAACmx0Y0Fzc2V0SWQBAAAAIOgiL+x0m1Ys90GEbhAt/GhwYa/SfUs9i6TkxeTk+aA0AAAAAAt3ZXN0QXNzZXRJZAEAAAAgo8wfsr1SQl9J9PZOiK8WWOnKBJ7hoJ361Vu8XpF9QVAAAAAACndjdEFzc2V0SWQBAAAAIIrzprwH1IzTbjJC2mPa4ApAiM36hA1xKUedFL6llmWwAQAAAA1jYWxsZXJJc0FkbWluAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAAIYWRtaW5QdWIFAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAABpZb3UgY2Fubm90IGNyZWF0ZSBkZXBvc2l0cwEAAAAUY2FsbGVySXNEZXBvc2l0T3duZXIAAAACAAAACWFzc2V0TmFtZQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADGRlcG9zaXRPd25lcgkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRPd25lcgMJAAAAAAAAAgUAAAAPY2FsbGVyUHVibGljS2V5BQAAAAxkZXBvc2l0T3duZXIFAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACtPbmx5IGRlcG9zaXQgb3duZXIgY2FuIHdpdGhkcmF3YWwgZGl2aWRlbmRzAQAAABNkZXBvc2l0Q3JlYXRlZENoZWNrAAAAAQAAAAlhc3NldE5hbWUEAAAAA2tleQkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0T3duZXIEAAAAA3ZhbAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBgcBAAAAC2Ftb3VudENoZWNrAAAAAgAAAAlhc3NldE5hbWUAAAAJcG10QW1vdW50BAAAAANrZXkJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAA5fRGVwb3NpdEFtb3VudAQAAAADdmFsCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQQAAAANZGVwb3NpdEFtb3VudAQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAcQ291bGRuJ3QgZmluZCBkZXBvc2l0IGFtb3VudAMJAAAAAAAAAgUAAAAJcG10QW1vdW50BQAAAA1kZXBvc2l0QW1vdW50BQAAAAlwbXRBbW91bnQJAAACAAAAAQIAAAATQW1vdW50IGlzIGluY29ycmVjdAEAAAARYXNzZXRCYXNlNThUb05hbWUAAAABAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAdhc3NldElkAgAAAAVXQVZFUwMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAKYnRjQXNzZXRJZAIAAAADQlRDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAApldGhBc3NldElkAgAAAANFVEgDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAACmx0Y0Fzc2V0SWQCAAAAA0xUQwMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAALd2VzdEFzc2V0SWQCAAAAA1ZTVAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAKd2N0QXNzZXRJZAIAAAADV0NUCQAAAgAAAAECAAAAFEFzc2V0SWQgaXMgaW5jb3JyZWN0AQAAABFhc3NldE5hbWVUb0Jhc2U1OAAAAAEAAAAJYXNzZXROYW1lAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAABVdBVkVTBQAAAAx3YXZlc0Fzc2V0SWQDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAADQlRDBQAAAApidGNBc3NldElkAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAAA0VUSAUAAAAKZXRoQXNzZXRJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAANMVEMFAAAACmx0Y0Fzc2V0SWQDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAADVlNUBQAAAAt3ZXN0QXNzZXRJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAANXQ1QFAAAACndjdEFzc2V0SWQJAAACAAAAAQIAAAAXQXNzZXQgbmFtZSBpcyBpbmNvcnJlY3QBAAAAE2dldERpdmlkZW5kc1BlcmNlbnQAAAABAAAACWFzc2V0TmFtZQQAAAADa2V5CQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAQX0RpdmlkZW5kUGVyY2VudAQAAAADdmFsCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAeQ291bGRuJ3QgRmluZCBkaXZpZGVuZCBwZXJjZW50AQAAABtnZXREaXZpZGVuZHNXaXRoZHJhd25BbW91bnQAAAABAAAACWFzc2V0TmFtZQQAAAADdmFsCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABNfRGl2aWRlbmRzV2l0aGRyYXduBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAASZ2V0RGl2aWRlbmRCYWxhbmNlAAAAAwAAAAdhc3NldElkAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgAAABBkaXZpZGVuZHNQZXJjZW50BAAAABVkaXZpZGVuZHNUb3RhbEJhbGFuY2UJAABkAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAAdhc3NldElkBQAAABJkaXZpZGVuZHNXaXRoZHJhd24EAAAACXVzZXJTdGFrZQkAAGkAAAACCQAAaAAAAAIFAAAAFWRpdmlkZW5kc1RvdGFsQmFsYW5jZQUAAAAQZGl2aWRlbmRzUGVyY2VudAAAAAAAAAAAZAkAAGUAAAACBQAAAAl1c2VyU3Rha2UFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgAAAAMAAAABaQEAAAANY3JlYXRlRGVwb3NpdAAAAAYAAAAJYXNzZXROYW1lAAAABmFtb3VudAAAABBkZWl2aWRlbmRQZXJjZW50AAAAC3N0YXJ0SGVpZ2h0AAAADmR1cmF0aW9uQmxvY2tzAAAADnN0YXJ0VGltZXN0YW1wBAAAAAljYWxsZXJQdWIJAQAAAA1jYWxsZXJJc0FkbWluAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAABVkZXBvc2l0QWxyZWFkeUNyZWF0ZWQJAQAAABNkZXBvc2l0Q3JlYXRlZENoZWNrAAAAAQUAAAAJYXNzZXROYW1lAwUAAAAVZGVwb3NpdEFscmVhZHlDcmVhdGVkCQAAAgAAAAECAAAAGkRlcG9zaXQgaXMgYWxyZWFkeSBjcmVhdGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRTdGF0ZQIAAAAHQ3JlYXRlZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADl9EZXBvc2l0QW1vdW50BQAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABBfRGl2aWRlbmRQZXJjZW50BQAAABBkZWl2aWRlbmRQZXJjZW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAASX0RlcG9zaXRTdGFydEJsb2NrBQAAAAtzdGFydEhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAFl9EZXBvc2l0U3RhcnRUaW1lc3RhbXAFAAAADnN0YXJ0VGltZXN0YW1wCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAVX0RlcG9zaXREdXJhdGlvbkJsb2NrBQAAAA5kdXJhdGlvbkJsb2NrcwUAAAADbmlsAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAljYWxsZXJQdWIJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAJYXNzZXROYW1lCQEAAAARYXNzZXRCYXNlNThUb05hbWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABmFtb3VudAkBAAAAC2Ftb3VudENoZWNrAAAAAgUAAAAJYXNzZXROYW1lCAUAAAADcG10AAAABmFtb3VudAQAAAAMZGVwb3NpdFN0YXRlCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAA1fRGVwb3NpdFN0YXRlAwkAAAAAAAACBQAAAAxkZXBvc2l0U3RhdGUCAAAAB0NyZWF0ZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRPd25lcgUAAAAJY2FsbGVyUHViCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRTdGF0ZQIAAAAGQWN0aXZlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAATX0RpdmlkZW5kc1dpdGhkcmF3bgAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAASRHJhZ29uRnJ1aXRBZGRyZXNzBQAAAAZhbW91bnQIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAFkRlcG9zaXQgaXMgdW5hdmFpbGFibGUAAAABaQEAAAARd2l0aGRyYXdEaXZpZGVuZHMAAAABAAAACWFzc2V0TmFtZQQAAAAHYXNzZXRJZAkBAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAAAxkZXBvc2l0T3duZXIJAQAAABRjYWxsZXJJc0RlcG9zaXRPd25lcgAAAAIFAAAACWFzc2V0TmFtZQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAEGRpdmlkZW5kc1BlcmNlbnQJAQAAABNnZXREaXZpZGVuZHNQZXJjZW50AAAAAQUAAAAJYXNzZXROYW1lBAAAABJkaXZpZGVuZHNXaXRoZHJhd24JAQAAABtnZXREaXZpZGVuZHNXaXRoZHJhd25BbW91bnQAAAABBQAAAAlhc3NldE5hbWUEAAAAEmRpdmlkZW5kc0F2YWxpYWJsZQkBAAAAEmdldERpdmlkZW5kQmFsYW5jZQAAAAMFAAAAB2Fzc2V0SWQFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgUAAAAQZGl2aWRlbmRzUGVyY2VudAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAABNfRGl2aWRlbmRzV2l0aGRyYXduCQAAZAAAAAIFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgUAAAASZGl2aWRlbmRzQXZhbGlhYmxlBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAxkZXBvc2l0T3duZXIFAAAAEmRpdmlkZW5kc0F2YWxpYWJsZQUAAAAHYXNzZXRJZAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAA1kaXZQcm9ncmFtUHViBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAABHNzdHgFAAAAByRtYXRjaDAGAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAN0dHgFAAAAByRtYXRjaDAEAAAACWFzc2V0TmFtZQkBAAAAEWFzc2V0QmFzZTU4VG9OYW1lAAAAAQgFAAAAA3R0eAAAAAdhc3NldElkBAAAABBkaXZpZGVuZHNQZXJjZW50CQEAAAATZ2V0RGl2aWRlbmRzUGVyY2VudAAAAAEFAAAACWFzc2V0TmFtZQQAAAASZGl2aWRlbmRzV2l0aGRyYXduCQEAAAAbZ2V0RGl2aWRlbmRzV2l0aGRyYXduQW1vdW50AAAAAQUAAAAJYXNzZXROYW1lBAAAAAlkaXZpZGVuZHMJAQAAABJnZXREaXZpZGVuZEJhbGFuY2UAAAADCAUAAAADdHR4AAAAB2Fzc2V0SWQFAAAAEmRpdmlkZW5kc1dpdGhkcmF3bgUAAAAQZGl2aWRlbmRzUGVyY2VudAQAAAAOYWNjb3VudEJhbGFuY2UJAAPrAAAAAgUAAAAEdGhpcwgFAAAAA3R0eAAAAAdhc3NldElkCQAAZwAAAAIJAABlAAAAAgUAAAAOYWNjb3VudEJhbGFuY2UIBQAAAAN0dHgAAAAGYW1vdW50BQAAAAlkaXZpZGVuZHMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAAAAANpdHgFAAAAByRtYXRjaDAGBwf6E7fH", "chainId": 84, "height": 824364, "spentComplexity": 0 } View: original | compacted Prev: BuJqY8mhyJ9CmEnJAVCpLcCgJeNkwhPSQSu4cnmHcfFk Next: 36569vB25gWNF8iX8UV3DSLYTLCoET3kLshoGv8c1tq7 Diff:
OldNewDifferences
152152 let amount = amountCheck(assetName, pmt.amount)
153153 let depositState = getString(this, (assetName + "_DepositState"))
154154 if ((depositState == "Created"))
155- then ScriptResult(WriteSet([DataEntry((assetName + "_DepositOwner"), callerPub), DataEntry((assetName + "_DepositState"), "Active"), DataEntry((callerPub + "_DividendsWithdrawn"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(DragonFruitAddress), amount, pmt.assetId)]))
155+ then ScriptResult(WriteSet([DataEntry((assetName + "_DepositOwner"), callerPub), DataEntry((assetName + "_DepositState"), "Active"), DataEntry((assetName + "_DividendsWithdrawn"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(DragonFruitAddress), amount, pmt.assetId)]))
156156 else throw("Deposit is unavailable")
157157 }
158158
165165 let dividendsPercent = getDividendsPercent(assetName)
166166 let dividendsWithdrawn = getDividendsWithdrawnAmount(assetName)
167167 let dividendsAvaliable = getDividendBalance(assetId, dividendsWithdrawn, dividendsPercent)
168- ScriptResult(WriteSet([DataEntry((depositOwner + "_DividendsWithdrawn"), (dividendsWithdrawn + dividendsAvaliable))]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(depositOwner)), dividendsAvaliable, assetId)]))
168+ ScriptResult(WriteSet([DataEntry((assetName + "_DividendsWithdrawn"), (dividendsWithdrawn + dividendsAvaliable))]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(depositOwner)), dividendsAvaliable, assetId)]))
169169 }
170170
171171
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wavelet = 100000000
55
66 let wavesDepositAmt = (2600 * wavelet)
77
88 let btcDepositAmt = ((2600 * wavelet) / 10000)
99
1010 let ethDepositAmt = (13 * wavelet)
1111
1212 let ltcDepositAmt = (39 * wavelet)
1313
1414 let westDepositAmt = (26000 * wavelet)
1515
1616 let wctDepositAmt = (26000 * wavelet)
1717
1818 let DragonFruitAddress = "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc"
1919
2020 let divProgramPub = fromBase58String("A4bJfnBhBTVh7GRNr1hHz6iqJta6eBbaExPDG7UapoaD")
2121
2222 let adminPub = fromBase58String("5yjcfvH6iuwrkFghXuWaJeMppaQ893FSs8HCAgVQzuNY")
2323
2424 let wavesAssetId = unit
2525
2626 let btcAssetId = base58'8HRQdqJBBeqZvgMtg6we6sw11i5GzpFNs7onNeVRBmaq'
2727
2828 let ethAssetId = base58'4oHq3C7ar7kmcRHEZBrgPyGtU6fkqJ1pHoRYboKeYSWQ'
2929
3030 let ltcAssetId = base58'Gd9pdZw9muDBZwwsQLqyigRJCDABbiJaksmemzFCorsV'
3131
3232 let westAssetId = base58'C2Pz1Q9QYaF9MkK9J9mX9vAMVc25R3w6Lr5g5B5Yje87'
3333
3434 let wctAssetId = base58'AMQkRmWSWHEd1nMDvDZFkadoCFCxRkDzBsEbscJ9ZZ2P'
3535
3636 func callerIsAdmin (callerPublicKey) = if ((callerPublicKey == adminPub))
3737 then callerPublicKey
3838 else throw("You cannot create deposits")
3939
4040
4141 func callerIsDepositOwner (assetName,callerPublicKey) = {
4242 let depositOwner = getString(this, (assetName + "_DepositOwner"))
4343 if ((callerPublicKey == depositOwner))
4444 then callerPublicKey
4545 else throw("Only deposit owner can withdrawal dividends")
4646 }
4747
4848
4949 func depositCreatedCheck (assetName) = {
5050 let key = (assetName + "_DepositOwner")
5151 let val = getString(this, key)
5252 match val {
5353 case a: String =>
5454 true
5555 case _ =>
5656 false
5757 }
5858 }
5959
6060
6161 func amountCheck (assetName,pmtAmount) = {
6262 let key = (assetName + "_DepositAmount")
6363 let val = getInteger(this, key)
6464 let depositAmount = match val {
6565 case a: Int =>
6666 a
6767 case _ =>
6868 throw("Couldn't find deposit amount")
6969 }
7070 if ((pmtAmount == depositAmount))
7171 then pmtAmount
7272 else throw("Amount is incorrect")
7373 }
7474
7575
7676 func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
7777 then "WAVES"
7878 else if ((assetId == btcAssetId))
7979 then "BTC"
8080 else if ((assetId == ethAssetId))
8181 then "ETH"
8282 else if ((assetId == ltcAssetId))
8383 then "LTC"
8484 else if ((assetId == westAssetId))
8585 then "VST"
8686 else if ((assetId == wctAssetId))
8787 then "WCT"
8888 else throw("AssetId is incorrect")
8989
9090
9191 func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
9292 then wavesAssetId
9393 else if ((assetName == "BTC"))
9494 then btcAssetId
9595 else if ((assetName == "ETH"))
9696 then ethAssetId
9797 else if ((assetName == "LTC"))
9898 then ltcAssetId
9999 else if ((assetName == "VST"))
100100 then westAssetId
101101 else if ((assetName == "WCT"))
102102 then wctAssetId
103103 else throw("Asset name is incorrect")
104104
105105
106106 func getDividendsPercent (assetName) = {
107107 let key = (assetName + "_DividendPercent")
108108 let val = getInteger(this, key)
109109 match val {
110110 case a: Int =>
111111 a
112112 case _ =>
113113 throw("Couldn't Find dividend percent")
114114 }
115115 }
116116
117117
118118 func getDividendsWithdrawnAmount (assetName) = {
119119 let val = getInteger(this, (assetName + "_DividendsWithdrawn"))
120120 match val {
121121 case a: Int =>
122122 a
123123 case _ =>
124124 0
125125 }
126126 }
127127
128128
129129 func getDividendBalance (assetId,dividendsWithdrawn,dividendsPercent) = {
130130 let dividendsTotalBalance = (assetBalance(this, assetId) + dividendsWithdrawn)
131131 let userStake = ((dividendsTotalBalance * dividendsPercent) / 100)
132132 (userStake - dividendsWithdrawn)
133133 }
134134
135135
136136 @Callable(i)
137137 func createDeposit (assetName,amount,deividendPercent,startHeight,durationBlocks,startTimestamp) = {
138138 let callerPub = callerIsAdmin(i.callerPublicKey)
139139 let depositAlreadyCreated = depositCreatedCheck(assetName)
140140 if (depositAlreadyCreated)
141141 then throw("Deposit is already created")
142142 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)])
143143 }
144144
145145
146146
147147 @Callable(i)
148148 func deposit () = {
149149 let callerPub = toBase58String(i.callerPublicKey)
150150 let pmt = extract(i.payment)
151151 let assetName = assetBase58ToName(pmt.assetId)
152152 let amount = amountCheck(assetName, pmt.amount)
153153 let depositState = getString(this, (assetName + "_DepositState"))
154154 if ((depositState == "Created"))
155- then ScriptResult(WriteSet([DataEntry((assetName + "_DepositOwner"), callerPub), DataEntry((assetName + "_DepositState"), "Active"), DataEntry((callerPub + "_DividendsWithdrawn"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(DragonFruitAddress), amount, pmt.assetId)]))
155+ then ScriptResult(WriteSet([DataEntry((assetName + "_DepositOwner"), callerPub), DataEntry((assetName + "_DepositState"), "Active"), DataEntry((assetName + "_DividendsWithdrawn"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(DragonFruitAddress), amount, pmt.assetId)]))
156156 else throw("Deposit is unavailable")
157157 }
158158
159159
160160
161161 @Callable(i)
162162 func withdrawDividends (assetName) = {
163163 let assetId = assetNameToBase58(assetName)
164164 let depositOwner = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
165165 let dividendsPercent = getDividendsPercent(assetName)
166166 let dividendsWithdrawn = getDividendsWithdrawnAmount(assetName)
167167 let dividendsAvaliable = getDividendBalance(assetId, dividendsWithdrawn, dividendsPercent)
168- ScriptResult(WriteSet([DataEntry((depositOwner + "_DividendsWithdrawn"), (dividendsWithdrawn + dividendsAvaliable))]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(depositOwner)), dividendsAvaliable, assetId)]))
168+ ScriptResult(WriteSet([DataEntry((assetName + "_DividendsWithdrawn"), (dividendsWithdrawn + dividendsAvaliable))]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(depositOwner)), dividendsAvaliable, assetId)]))
169169 }
170170
171171
172172 @Verifier(tx)
173173 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], divProgramPub))
174174 then match tx {
175175 case sstx: SetScriptTransaction =>
176176 true
177177 case ttx: TransferTransaction =>
178178 let assetName = assetBase58ToName(ttx.assetId)
179179 let dividendsPercent = getDividendsPercent(assetName)
180180 let dividendsWithdrawn = getDividendsWithdrawnAmount(assetName)
181181 let dividends = getDividendBalance(ttx.assetId, dividendsWithdrawn, dividendsPercent)
182182 let accountBalance = assetBalance(this, ttx.assetId)
183183 ((accountBalance - ttx.amount) >= dividends)
184184 case itx: InvokeScriptTransaction =>
185185 true
186186 case _ =>
187187 false
188188 }
189189 else false
190190

github/deemru/w8io/026f985 
41.94 ms