tx · 7Nr11duY6psLb5GBSfYKBoLjccSAxT5cZDyBnJ2YPfKC

3MrmQcYkqD2NWZCPBPxJh9ecDeCSHJaGvTX:  -0.01400000 Waves

2020.10.22 14:50 [1231743] smart account 3MrmQcYkqD2NWZCPBPxJh9ecDeCSHJaGvTX > SELF 0.00000000 Waves

{ "type": 13, "id": "7Nr11duY6psLb5GBSfYKBoLjccSAxT5cZDyBnJ2YPfKC", "fee": 1400000, "feeAssetId": null, "timestamp": 1603367477032, "version": 1, "sender": "3MrmQcYkqD2NWZCPBPxJh9ecDeCSHJaGvTX", "senderPublicKey": "3jFYpyJ6e4HkngCSjP4y8XmWbp72HQExbfLDVKd4wZrr", "proofs": [ "2ZJmYxVRqy5yiTiidttWwfmLuVC7G4NrsjUqWo8X5HEDzYrtNi7tx1L35QBkiRawpVksG1rJ9TrE1t2PiJ2PjPcx" ], "script": "base64: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b2tlbkEFAAAAC2RpZ2l0VG9rZW5CAAAAAAAAAAACBAAAABdzaGFyZVRva2VuSW5pdGlhbEFtb3VudAkAAGsAAAADCQAAbAAAAAYFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEFAAAAC2RpZ2l0VG9rZW5BAAAAAAAAAAAFAAAAAAAAAAABBQAAAAtkaWdpdFRva2VuQQUAAAAISEFMRkRPV04JAABsAAAABgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgUAAAALZGlnaXRUb2tlbkIAAAAAAAAAAAUAAAAAAAAAAAEFAAAAC2RpZ2l0VG9rZW5CBQAAAAhIQUxGRE9XTgkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAABJkaWdpdHNJblNoYXJlVG9rZW4AAAAAAAAAAAAAAAAAAAAAAAAFAAAACEhBTEZET1dOBAAAABFzaGFyZVRva2VuQXNzZXRJZAkABDgAAAABCQAEQgAAAAUFAAAADnNoYXJlVG9rZW5OYW1lBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQFAAAAEmRpZ2l0c0luU2hhcmVUb2tlbgYEAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0EEAAAAByRtYXRjaDAFAAAAEGFzc2V0SWRSZWNlaXZlZEEDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDACAAAABVdBVkVTAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAEGFzc2V0SWRSZWNlaXZlZEEJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IEAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0IEAAAAByRtYXRjaDAFAAAAEGFzc2V0SWRSZWNlaXZlZEIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDACAAAABVdBVkVTAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAEGFzc2V0SWRSZWNlaXZlZEIJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CBQAAABN0b2tlblJlY2VpdmVBbW91bnRCCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADWFzc2V0SWRUb2tlbkEFAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0EJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAANYXNzZXRJZFRva2VuQgUAAAATYXNzZXRJZFRva2VuU3RyaW5nQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOZXhjaGFuZ2VfY291bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAICAAAABnN0YXR1cwYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAACWNvbWlzc2lvbgUAAAAJY29taXNzaW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABdjb21pc3Npb25TY2FsZURlbGltaXRlcgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHdmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQAEQgAAAAUFAAAADnNoYXJlVG9rZW5OYW1lBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQAAAAAAAAAAAgGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQFAAAAEXNoYXJlVG9rZW5Bc3NldElkCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAADnNoYXJlX3Rva2VuX2lkBQAAABFzaGFyZVRva2VuQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASc2hhcmVfdG9rZW5fc3VwcGx5BQAAABdzaGFyZVRva2VuSW5pdGlhbEFtb3VudAUAAAADbmlsAAAACmNvbnRleHRPYmoBAAAADXJlcGxlbmlzaG1lbnQAAAAABAAAAAhwYXltZW50QQkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAIcGF5bWVudEIJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAACmNvbnRleHRPYmoAAAAIcGF5bWVudHMAAAAAAAAAAAEEAAAAEGFzc2V0SWRSZWNlaXZlZEEIBQAAAAhwYXltZW50QQAAAAdhc3NldElkBAAAABN0b2tlblJlY2VpdmVBbW91bnRBCAUAAAAIcGF5bWVudEEAAAAGYW1vdW50BAAAABBhc3NldElkUmVjZWl2ZWRCCAUAAAAIcGF5bWVudEIAAAAHYXNzZXRJZAQAAAATdG9rZW5SZWNlaXZlQW1vdW50QggFAAAACHBheW1lbnRCAAAABmFtb3VudAQAAAARZEFwcFRva2Vuc0Ftb3VudEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQQAAAARZEFwcFRva2Vuc0Ftb3VudEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQgMDCQEAAAACIT0AAAACBQAAABBhc3NldElkUmVjZWl2ZWRBBQAAAA1hc3NldElkVG9rZW5BBgkBAAAAAiE9AAAAAgUAAAAQYXNzZXRJZFJlY2VpdmVkQgUAAAANYXNzZXRJZFRva2VuQgkAAAIAAAABAgAAABBpbmNvcnJlY3QgYXNzZXRzBAAAAAp0b2tlblJhdGlvCQAAaQAAAAIJAABrAAAAAwUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQkAAGgAAAACAAAAAOjUpRAAAAAAAAAAAYagBQAAABFkQXBwVG9rZW5zQW1vdW50QQkAAGsAAAADBQAAABFkQXBwVG9rZW5zQW1vdW50QgAAAADo1KUQAAUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgMJAQAAAAEhAAAAAQMJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwAAAAAAAAGGlgkAAGYAAAACAAAAAAAAAYaqBQAAAAp0b2tlblJhdGlvBwkAAAIAAAABAgAAABdpbmNvcnJlY3QgYXNzZXRzIGFtb3VudAQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEFAAAAEHRva2VuU2hhcmVTdXBwbHkFAAAAEWRBcHBUb2tlbnNBbW91bnRBAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAApeW91IHRyeSByZXBsYW5zaXNoIHdpdGggdmVyeSBzbWFsbCBhbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAABFhc3NldElkVG9rZW5TaGFyZQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAARYXNzZXRJZFRva2VuU2hhcmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnNoYXJlX3Rva2VuX3N1cHBseQkAAGQAAAACBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQkAAGQAAAACBQAAABFkQXBwVG9rZW5zQW1vdW50QQUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZAAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAABN0b2tlblJlY2VpdmVBbW91bnRCBQAAAANuaWwAAAAKY29udGV4dE9iagEAAAAId2l0aGRyYXcAAAAABAAAABFkQXBwVG9rZW5zQW1vdW50QQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5BBAAAABFkQXBwVG9rZW5zQW1vdW50QgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5CBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAApjb250ZXh0T2JqAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA9hc3NldElkUmVjZWl2ZWQIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAAEnRva2VuUmVjZWl2ZUFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50AwkBAAAAAiE9AAAAAgUAAAARYXNzZXRJZFRva2VuU2hhcmUFAAAAD2Fzc2V0SWRSZWNlaXZlZAkAAAIAAAABCQABLAAAAAICAAAALXlvdSBuZWVkIHRvIGF0dGFjaCBzaGFyZSB0b2tlbiBmb3IgdGhpcyBkQXBwIAkAAlgAAAABBQAAABFhc3NldElkVG9rZW5TaGFyZQQAAAAMdG9rZW5zVG9QYXlBCQAAawAAAAMFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAAEHRva2VuU2hhcmVTdXBwbHkEAAAADHRva2Vuc1RvUGF5QgkAAGsAAAADBQAAABJ0b2tlblJlY2VpdmVBbW91bnQFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAABB0b2tlblNoYXJlU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAMdG9rZW5zVG9QYXlBBQAAAA1hc3NldElkVG9rZW5BCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAMdG9rZW5zVG9QYXlCBQAAAA1hc3NldElkVG9rZW5CCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAADHRva2Vuc1RvUGF5QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZQAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAAAx0b2tlbnNUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnNoYXJlX3Rva2VuX3N1cHBseQkAAGUAAAACBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAABFhc3NldElkVG9rZW5TaGFyZQUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAANuaWwAAAAKY29udGV4dE9iagEAAAAJZXhjaGFuZ2VyAAAAAQAAAA9taW5Ub2tlblJlY2lldmUEAAAAB3BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAACmNvbnRleHRPYmoAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAD2Fzc2V0SWRSZWNlaXZlZAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAQAAAASdG9rZW5SZWNlaXZlQW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAABWNvdW50CQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAABHRoaXMCAAAADmV4Y2hhbmdlX2NvdW50AwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkIEAAAAD3Rva2VuU2VuZEFtb3VudAkAAGkAAAACCQAAaAAAAAIJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5BBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAABkAAAAAgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAAxhbW91bnRUb2tlbkIJAABlAAAAAgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACWNvbWlzc2lvbgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIFAAAAD21pblRva2VuUmVjaWV2ZQUAAAAPdG9rZW5TZW5kQW1vdW50CQAAAgAAAAECAAAAWVByaWNlIGhhcyBjaGFuZ2VkIGRyYW1hdGljYWx5LiBSZWNlaXZpbmcgdG9rZW4gYW1vdW50IGRvbid0IHNhdGlzZnkgc3BlY2lmaWVkIHByaWNlIGxldmVsBAAAAAthc3NldElkU2VudAUAAAANYXNzZXRJZFRva2VuQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZQAAAAIFAAAADGFtb3VudFRva2VuQQUAAAAPdG9rZW5TZW5kQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIJAABkAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADmV4Y2hhbmdlX2NvdW50CQAAZAAAAAIFAAAABWNvdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAPdG9rZW5TZW5kQW1vdW50BQAAAAthc3NldElkU2VudAUAAAADbmlsAwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkEEAAAAD3Rva2VuU2VuZEFtb3VudAkAAGkAAAACCQAAaAAAAAIJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5CBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAABkAAAAAgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACWNvbWlzc2lvbgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIFAAAAD21pblRva2VuUmVjaWV2ZQUAAAAPdG9rZW5TZW5kQW1vdW50CQAAAgAAAAECAAAAWVByaWNlIGhhcyBjaGFuZ2VkIGRyYW1hdGljYWx5LiBSZWNlaXZpbmcgdG9rZW4gYW1vdW50IGRvbid0IHNhdGlzZnkgc3BlY2lmaWVkIHByaWNlIGxldmVsBAAAAAthc3NldElkU2VudAUAAAANYXNzZXRJZFRva2VuQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZAAAAAIFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAAA90b2tlblNlbmRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADmV4Y2hhbmdlX2NvdW50CQAAZAAAAAIFAAAABWNvdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAPdG9rZW5TZW5kQW1vdW50BQAAAAthc3NldElkU2VudAUAAAADbmlsCQAAAgAAAAECAAAAFEFzc2V0IGlzIG5vdCBhbGxvd2VkAAAAAJfIOD4=", "chainId": 84, "height": 1231743, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: GzJUjiJvsf2WtTboTMtANKeQ32xedqNxCkuVaXb26m9Q Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let IdTokenA = getStringValue(this, "assetIdTokenA")
5+
6+let IdTokenB = getStringValue(this, "assetIdTokenB")
7+
8+let amountTokenB = getIntegerValue(this, "amountTokenB")
9+
10+let amountTokenA = getIntegerValue(this, "amountTokenA")
11+
12+let assetIdTokenShare = getBinaryValue(this, "share_token_id")
13+
14+let tokenShareSupply = getIntegerValue(this, "share_token_supply")
15+
16+let comission = 2000
17+
18+let comissionScaleDelimiter = 10000
19+
20+let version = "0.0.2"
21+
22+let scaleValue8 = 100000000
23+
24+let scaleValue8Digits = 8
25+
26+func assetId (asset) = if ((asset == "WAVES"))
27+ then unit
28+ else fromBase58String(asset)
29+
30+
31+let assetIdTokenA = assetId(IdTokenA)
32+
33+let assetIdTokenB = assetId(IdTokenB)
34+
35+@Callable(contextObj)
36+func fund () = {
37+ let paymentA = value(contextObj.payments[0])
38+ let paymentB = value(contextObj.payments[1])
39+ let assetIdReceivedA = paymentA.assetId
40+ let tokenReceiveAmountA = paymentA.amount
41+ let assetIdReceivedB = paymentB.assetId
42+ let tokenReceiveAmountB = paymentB.amount
43+ let digitTokenA = match assetIdReceivedA {
44+ case p: Unit =>
45+ 8
46+ case p: ByteVector =>
47+ value(assetInfo(p)).decimals
48+ case _ =>
49+ throw("Match error")
50+ }
51+ let digitTokenB = match assetIdReceivedB {
52+ case p: Unit =>
53+ 8
54+ case p: ByteVector =>
55+ value(assetInfo(p)).decimals
56+ case _ =>
57+ throw("Match error")
58+ }
59+ if (isDefined(getBoolean(this, "status")))
60+ then throw("already active")
61+ else {
62+ let shareTokenName = ("ShareT_" + takeRight(toString(this), 5))
63+ let digitsInShareToken = ((digitTokenA + digitTokenB) / 2)
64+ let shareTokenInitialAmount = fraction(pow(tokenReceiveAmountA, digitTokenA, 5, 1, digitTokenA, HALFDOWN), pow(tokenReceiveAmountB, digitTokenB, 5, 1, digitTokenB, HALFDOWN), pow(10, 0, digitsInShareToken, 0, 0, HALFDOWN))
65+ let shareTokenAssetId = calculateAssetId(Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, digitsInShareToken, true))
66+ let assetIdTokenStringA = match assetIdReceivedA {
67+ case t: Unit =>
68+ "WAVES"
69+ case t: ByteVector =>
70+ toBase58String(value(assetIdReceivedA))
71+ case _ =>
72+ throw("Match error")
73+ }
74+ let assetIdTokenStringB = match assetIdReceivedB {
75+ case t: Unit =>
76+ "WAVES"
77+ case t: ByteVector =>
78+ toBase58String(value(assetIdReceivedB))
79+ case _ =>
80+ throw("Match error")
81+ }
82+[IntegerEntry("amountTokenA", tokenReceiveAmountA), IntegerEntry("amountTokenB", tokenReceiveAmountB), StringEntry("assetIdTokenA", assetIdTokenStringA), StringEntry("assetIdTokenB", assetIdTokenStringB), IntegerEntry("exchange_count", 0), BooleanEntry("status", true), IntegerEntry("comission", comission), IntegerEntry("comissionScaleDelimiter", comissionScaleDelimiter), StringEntry("version", version), Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, 8, true), ScriptTransfer(contextObj.caller, shareTokenInitialAmount, shareTokenAssetId), BinaryEntry("share_token_id", shareTokenAssetId), IntegerEntry("share_token_supply", shareTokenInitialAmount)]
83+ }
84+ }
85+
86+
87+
88+@Callable(contextObj)
89+func replenishment () = {
90+ let paymentA = value(contextObj.payments[0])
91+ let paymentB = value(contextObj.payments[1])
92+ let assetIdReceivedA = paymentA.assetId
93+ let tokenReceiveAmountA = paymentA.amount
94+ let assetIdReceivedB = paymentB.assetId
95+ let tokenReceiveAmountB = paymentB.amount
96+ let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
97+ let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
98+ if (if ((assetIdReceivedA != assetIdTokenA))
99+ then true
100+ else (assetIdReceivedB != assetIdTokenB))
101+ then throw("incorrect assets")
102+ else {
103+ let tokenRatio = (fraction(tokenReceiveAmountA, (1000000000000 * 100000), dAppTokensAmountA) / fraction(dAppTokensAmountB, 1000000000000, tokenReceiveAmountB))
104+ if (!(if ((tokenRatio > 99990))
105+ then (100010 > tokenRatio)
106+ else false))
107+ then throw("incorrect assets amount")
108+ else {
109+ let shareTokenToPayAmount = fraction(tokenReceiveAmountA, tokenShareSupply, dAppTokensAmountA)
110+ if ((shareTokenToPayAmount == 0))
111+ then throw("you try replansish with very small amount")
112+ else [Reissue(assetIdTokenShare, shareTokenToPayAmount, true), ScriptTransfer(contextObj.caller, shareTokenToPayAmount, assetIdTokenShare), IntegerEntry("share_token_supply", (tokenShareSupply + shareTokenToPayAmount)), IntegerEntry("amountTokenA", (dAppTokensAmountA + tokenReceiveAmountA)), IntegerEntry("amountTokenB", (dAppTokensAmountB + tokenReceiveAmountB))]
113+ }
114+ }
115+ }
116+
117+
118+
119+@Callable(contextObj)
120+func withdraw () = {
121+ let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
122+ let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
123+ let payment = value(contextObj.payments[0])
124+ let assetIdReceived = payment.assetId
125+ let tokenReceiveAmount = payment.amount
126+ if ((assetIdTokenShare != assetIdReceived))
127+ then throw(("you need to attach share token for this dApp " + toBase58String(assetIdTokenShare)))
128+ else {
129+ let tokensToPayA = fraction(tokenReceiveAmount, dAppTokensAmountA, tokenShareSupply)
130+ let tokensToPayB = fraction(tokenReceiveAmount, dAppTokensAmountB, tokenShareSupply)
131+[ScriptTransfer(contextObj.caller, tokensToPayA, assetIdTokenA), ScriptTransfer(contextObj.caller, tokensToPayB, assetIdTokenB), IntegerEntry("amountTokenA", (dAppTokensAmountA - tokensToPayA)), IntegerEntry("amountTokenB", (dAppTokensAmountB - tokensToPayB)), IntegerEntry("share_token_supply", (tokenShareSupply - tokenReceiveAmount)), Burn(assetIdTokenShare, tokenReceiveAmount)]
132+ }
133+ }
134+
135+
136+
137+@Callable(contextObj)
138+func exchanger (minTokenRecieve) = {
139+ let payment = value(contextObj.payments[0])
140+ let assetIdReceived = payment.assetId
141+ let tokenReceiveAmount = payment.amount
142+ let count = value(getInteger(this, "exchange_count"))
143+ if ((assetIdReceived == assetIdTokenB))
144+ then {
145+ let tokenSendAmount = ((fraction(amountTokenA, tokenReceiveAmount, (tokenReceiveAmount + amountTokenB)) * (comissionScaleDelimiter - comission)) / comissionScaleDelimiter)
146+ if ((minTokenRecieve > tokenSendAmount))
147+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
148+ else {
149+ let assetIdSent = assetIdTokenA
150+[IntegerEntry("amountTokenA", (amountTokenA - tokenSendAmount)), IntegerEntry("amountTokenB", (amountTokenB + tokenReceiveAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
151+ }
152+ }
153+ else if ((assetIdReceived == assetIdTokenA))
154+ then {
155+ let tokenSendAmount = ((fraction(amountTokenB, tokenReceiveAmount, (tokenReceiveAmount + amountTokenA)) * (comissionScaleDelimiter - comission)) / comissionScaleDelimiter)
156+ if ((minTokenRecieve > tokenSendAmount))
157+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
158+ else {
159+ let assetIdSent = assetIdTokenB
160+[IntegerEntry("amountTokenA", (amountTokenA + tokenReceiveAmount)), IntegerEntry("amountTokenB", (amountTokenB - tokenSendAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
161+ }
162+ }
163+ else throw("Asset is not allowed")
164+ }
165+
166+

github/deemru/w8io/6500d08 
38.57 ms