tx · HJ9G3mZog1J8YYE5wAhod9juvn9GQb1MoJ8uPvBGcee

3MrmQcYkqD2NWZCPBPxJh9ecDeCSHJaGvTX:  -0.01400000 Waves

2020.10.22 14:56 [1231748] smart account 3MrmQcYkqD2NWZCPBPxJh9ecDeCSHJaGvTX > SELF 0.00000000 Waves

{ "type": 13, "id": "HJ9G3mZog1J8YYE5wAhod9juvn9GQb1MoJ8uPvBGcee", "fee": 1400000, "feeAssetId": null, "timestamp": 1603367772573, "version": 1, "sender": "3MrmQcYkqD2NWZCPBPxJh9ecDeCSHJaGvTX", "senderPublicKey": "3jFYpyJ6e4HkngCSjP4y8XmWbp72HQExbfLDVKd4wZrr", "proofs": [ "2VZ2BKT7aEtg1oTBUVjVWJfuKjEe1rnWxetTLGvDGoDDPxffSaGsGPP7LH9WoSAzf8W22QsfXLbhy46zpqgGNNse" ], "script": "base64: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b2tlbkEFAAAAC2RpZ2l0VG9rZW5CAAAAAAAAAAACBAAAABdzaGFyZVRva2VuSW5pdGlhbEFtb3VudAkAAGsAAAADCQAAbAAAAAYFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEFAAAAC2RpZ2l0VG9rZW5BAAAAAAAAAAAFAAAAAAAAAAABBQAAAAtkaWdpdFRva2VuQQUAAAAISEFMRkRPV04JAABsAAAABgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgUAAAALZGlnaXRUb2tlbkIAAAAAAAAAAAUAAAAAAAAAAAEFAAAAC2RpZ2l0VG9rZW5CBQAAAAhIQUxGRE9XTgkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAABJkaWdpdHNJblNoYXJlVG9rZW4AAAAAAAAAAAAAAAAAAAAAAAAFAAAACEhBTEZET1dOBAAAABFzaGFyZVRva2VuQXNzZXRJZAkABDgAAAABCQAEQgAAAAUFAAAADnNoYXJlVG9rZW5OYW1lBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQFAAAAEmRpZ2l0c0luU2hhcmVUb2tlbgYEAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0EEAAAAByRtYXRjaDAFAAAAEGFzc2V0SWRSZWNlaXZlZEEDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDACAAAABVdBVkVTAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAEGFzc2V0SWRSZWNlaXZlZEEJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IEAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0IEAAAAByRtYXRjaDAFAAAAEGFzc2V0SWRSZWNlaXZlZEIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDACAAAABVdBVkVTAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAEGFzc2V0SWRSZWNlaXZlZEIJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CBQAAABN0b2tlblJlY2VpdmVBbW91bnRCCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADWFzc2V0SWRUb2tlbkEFAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0EJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAANYXNzZXRJZFRva2VuQgUAAAATYXNzZXRJZFRva2VuU3RyaW5nQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOZXhjaGFuZ2VfY291bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAICAAAABnN0YXR1cwYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAACWNvbWlzc2lvbgUAAAAJY29taXNzaW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABdjb21pc3Npb25TY2FsZURlbGltaXRlcgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHdmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQAEQgAAAAUFAAAADnNoYXJlVG9rZW5OYW1lBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQAAAAAAAAAAAgGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQFAAAAEXNoYXJlVG9rZW5Bc3NldElkCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAADnNoYXJlX3Rva2VuX2lkBQAAABFzaGFyZVRva2VuQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASc2hhcmVfdG9rZW5fc3VwcGx5BQAAABdzaGFyZVRva2VuSW5pdGlhbEFtb3VudAUAAAADbmlsAAAACmNvbnRleHRPYmoBAAAADXJlcGxlbmlzaG1lbnQAAAAABAAAAAhwYXltZW50QQkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAIcGF5bWVudEIJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAACmNvbnRleHRPYmoAAAAIcGF5bWVudHMAAAAAAAAAAAEEAAAAEGFzc2V0SWRSZWNlaXZlZEEIBQAAAAhwYXltZW50QQAAAAdhc3NldElkBAAAABN0b2tlblJlY2VpdmVBbW91bnRBCAUAAAAIcGF5bWVudEEAAAAGYW1vdW50BAAAABBhc3NldElkUmVjZWl2ZWRCCAUAAAAIcGF5bWVudEIAAAAHYXNzZXRJZAQAAAATdG9rZW5SZWNlaXZlQW1vdW50QggFAAAACHBheW1lbnRCAAAABmFtb3VudAQAAAARZEFwcFRva2Vuc0Ftb3VudEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQQAAAARZEFwcFRva2Vuc0Ftb3VudEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQgMDCQEAAAACIT0AAAACBQAAABBhc3NldElkUmVjZWl2ZWRBBQAAAA1hc3NldElkVG9rZW5BBgkBAAAAAiE9AAAAAgUAAAAQYXNzZXRJZFJlY2VpdmVkQgUAAAANYXNzZXRJZFRva2VuQgkAAAIAAAABAgAAABBpbmNvcnJlY3QgYXNzZXRzBAAAAAp0b2tlblJhdGlvCQAAaQAAAAIJAABrAAAAAwUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQkAAGgAAAACAAAAAOjUpRAAAAAAAAAAAYagBQAAABFkQXBwVG9rZW5zQW1vdW50QQkAAGsAAAADBQAAABFkQXBwVG9rZW5zQW1vdW50QgAAAADo1KUQAAUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgMJAQAAAAEhAAAAAQMJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwAAAAAAAAGGlgkAAGYAAAACAAAAAAAAAYaqBQAAAAp0b2tlblJhdGlvBwkAAAIAAAABAgAAABdpbmNvcnJlY3QgYXNzZXRzIGFtb3VudAQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEFAAAAEHRva2VuU2hhcmVTdXBwbHkFAAAAEWRBcHBUb2tlbnNBbW91bnRBAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAApeW91IHRyeSByZXBsYW5zaXNoIHdpdGggdmVyeSBzbWFsbCBhbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAABFhc3NldElkVG9rZW5TaGFyZQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAARYXNzZXRJZFRva2VuU2hhcmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnNoYXJlX3Rva2VuX3N1cHBseQkAAGQAAAACBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQkAAGQAAAACBQAAABFkQXBwVG9rZW5zQW1vdW50QQUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZAAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAABN0b2tlblJlY2VpdmVBbW91bnRCBQAAAANuaWwAAAAKY29udGV4dE9iagEAAAAId2l0aGRyYXcAAAAABAAAABFkQXBwVG9rZW5zQW1vdW50QQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5BBAAAABFkQXBwVG9rZW5zQW1vdW50QgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5CBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAApjb250ZXh0T2JqAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA9hc3NldElkUmVjZWl2ZWQIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAAEnRva2VuUmVjZWl2ZUFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50AwkBAAAAAiE9AAAAAgUAAAARYXNzZXRJZFRva2VuU2hhcmUFAAAAD2Fzc2V0SWRSZWNlaXZlZAkAAAIAAAABCQABLAAAAAICAAAALXlvdSBuZWVkIHRvIGF0dGFjaCBzaGFyZSB0b2tlbiBmb3IgdGhpcyBkQXBwIAkAAlgAAAABBQAAABFhc3NldElkVG9rZW5TaGFyZQQAAAAMdG9rZW5zVG9QYXlBCQAAawAAAAMFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAAEHRva2VuU2hhcmVTdXBwbHkEAAAADHRva2Vuc1RvUGF5QgkAAGsAAAADBQAAABJ0b2tlblJlY2VpdmVBbW91bnQFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAABB0b2tlblNoYXJlU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAMdG9rZW5zVG9QYXlBBQAAAA1hc3NldElkVG9rZW5BCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAMdG9rZW5zVG9QYXlCBQAAAA1hc3NldElkVG9rZW5CCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAADHRva2Vuc1RvUGF5QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZQAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAAAx0b2tlbnNUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnNoYXJlX3Rva2VuX3N1cHBseQkAAGUAAAACBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAABFhc3NldElkVG9rZW5TaGFyZQUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAANuaWwAAAAKY29udGV4dE9iagEAAAAJZXhjaGFuZ2VyAAAAAQAAAA9taW5Ub2tlblJlY2lldmUEAAAAB3BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAACmNvbnRleHRPYmoAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAD2Fzc2V0SWRSZWNlaXZlZAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAQAAAASdG9rZW5SZWNlaXZlQW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAABWNvdW50CQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAABHRoaXMCAAAADmV4Y2hhbmdlX2NvdW50AwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkIEAAAAD3Rva2VuU2VuZEFtb3VudAkAAGkAAAACCQAAaAAAAAIJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5BBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAABkAAAAAgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAAxhbW91bnRUb2tlbkIJAABlAAAAAgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACWNvbWlzc2lvbgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIFAAAAD21pblRva2VuUmVjaWV2ZQUAAAAPdG9rZW5TZW5kQW1vdW50CQAAAgAAAAECAAAAWVByaWNlIGhhcyBjaGFuZ2VkIGRyYW1hdGljYWx5LiBSZWNlaXZpbmcgdG9rZW4gYW1vdW50IGRvbid0IHNhdGlzZnkgc3BlY2lmaWVkIHByaWNlIGxldmVsBAAAAAthc3NldElkU2VudAUAAAANYXNzZXRJZFRva2VuQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZQAAAAIFAAAADGFtb3VudFRva2VuQQUAAAAPdG9rZW5TZW5kQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIJAABkAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADmV4Y2hhbmdlX2NvdW50CQAAZAAAAAIFAAAABWNvdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAPdG9rZW5TZW5kQW1vdW50BQAAAAthc3NldElkU2VudAUAAAADbmlsAwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkEEAAAAD3Rva2VuU2VuZEFtb3VudAkAAGkAAAACCQAAaAAAAAIJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5CBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAABkAAAAAgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACWNvbWlzc2lvbgUAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIFAAAAD21pblRva2VuUmVjaWV2ZQUAAAAPdG9rZW5TZW5kQW1vdW50CQAAAgAAAAECAAAAWVByaWNlIGhhcyBjaGFuZ2VkIGRyYW1hdGljYWx5LiBSZWNlaXZpbmcgdG9rZW4gYW1vdW50IGRvbid0IHNhdGlzZnkgc3BlY2lmaWVkIHByaWNlIGxldmVsBAAAAAthc3NldElkU2VudAUAAAANYXNzZXRJZFRva2VuQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZAAAAAIFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAAA90b2tlblNlbmRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADmV4Y2hhbmdlX2NvdW50CQAAZAAAAAIFAAAABWNvdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAPdG9rZW5TZW5kQW1vdW50BQAAAAthc3NldElkU2VudAUAAAADbmlsCQAAAgAAAAECAAAAFEFzc2V0IGlzIG5vdCBhbGxvd2VkAAAAAJfIOD4=", "chainId": 84, "height": 1231748, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GzJUjiJvsf2WtTboTMtANKeQ32xedqNxCkuVaXb26m9Q Next: A36CzN5PtZoatuZk8B5r2K4kCdPVyE9dro8BRtR9pn2N Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let IdTokenA = getStringValue(this, "assetIdTokenA")
55
66 let IdTokenB = getStringValue(this, "assetIdTokenB")
77
88 let amountTokenB = getIntegerValue(this, "amountTokenB")
99
1010 let amountTokenA = getIntegerValue(this, "amountTokenA")
1111
1212 let assetIdTokenShare = getBinaryValue(this, "share_token_id")
1313
1414 let tokenShareSupply = getIntegerValue(this, "share_token_supply")
1515
1616 let comission = 2000
1717
1818 let comissionScaleDelimiter = 10000
1919
2020 let version = "0.0.2"
2121
2222 let scaleValue8 = 100000000
2323
2424 let scaleValue8Digits = 8
2525
2626 func assetId (asset) = if ((asset == "WAVES"))
2727 then unit
2828 else fromBase58String(asset)
2929
3030
3131 let assetIdTokenA = assetId(IdTokenA)
3232
3333 let assetIdTokenB = assetId(IdTokenB)
3434
3535 @Callable(contextObj)
3636 func fund () = {
3737 let paymentA = value(contextObj.payments[0])
3838 let paymentB = value(contextObj.payments[1])
3939 let assetIdReceivedA = paymentA.assetId
4040 let tokenReceiveAmountA = paymentA.amount
4141 let assetIdReceivedB = paymentB.assetId
4242 let tokenReceiveAmountB = paymentB.amount
4343 let digitTokenA = match assetIdReceivedA {
4444 case p: Unit =>
4545 8
4646 case p: ByteVector =>
4747 value(assetInfo(p)).decimals
4848 case _ =>
4949 throw("Match error")
5050 }
5151 let digitTokenB = match assetIdReceivedB {
5252 case p: Unit =>
5353 8
5454 case p: ByteVector =>
5555 value(assetInfo(p)).decimals
5656 case _ =>
5757 throw("Match error")
5858 }
5959 if (isDefined(getBoolean(this, "status")))
6060 then throw("already active")
6161 else {
6262 let shareTokenName = ("ShareT_" + takeRight(toString(this), 5))
6363 let digitsInShareToken = ((digitTokenA + digitTokenB) / 2)
6464 let shareTokenInitialAmount = fraction(pow(tokenReceiveAmountA, digitTokenA, 5, 1, digitTokenA, HALFDOWN), pow(tokenReceiveAmountB, digitTokenB, 5, 1, digitTokenB, HALFDOWN), pow(10, 0, digitsInShareToken, 0, 0, HALFDOWN))
6565 let shareTokenAssetId = calculateAssetId(Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, digitsInShareToken, true))
6666 let assetIdTokenStringA = match assetIdReceivedA {
6767 case t: Unit =>
6868 "WAVES"
6969 case t: ByteVector =>
7070 toBase58String(value(assetIdReceivedA))
7171 case _ =>
7272 throw("Match error")
7373 }
7474 let assetIdTokenStringB = match assetIdReceivedB {
7575 case t: Unit =>
7676 "WAVES"
7777 case t: ByteVector =>
7878 toBase58String(value(assetIdReceivedB))
7979 case _ =>
8080 throw("Match error")
8181 }
8282 [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)]
8383 }
8484 }
8585
8686
8787
8888 @Callable(contextObj)
8989 func replenishment () = {
9090 let paymentA = value(contextObj.payments[0])
9191 let paymentB = value(contextObj.payments[1])
9292 let assetIdReceivedA = paymentA.assetId
9393 let tokenReceiveAmountA = paymentA.amount
9494 let assetIdReceivedB = paymentB.assetId
9595 let tokenReceiveAmountB = paymentB.amount
9696 let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
9797 let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
9898 if (if ((assetIdReceivedA != assetIdTokenA))
9999 then true
100100 else (assetIdReceivedB != assetIdTokenB))
101101 then throw("incorrect assets")
102102 else {
103103 let tokenRatio = (fraction(tokenReceiveAmountA, (1000000000000 * 100000), dAppTokensAmountA) / fraction(dAppTokensAmountB, 1000000000000, tokenReceiveAmountB))
104104 if (!(if ((tokenRatio > 99990))
105105 then (100010 > tokenRatio)
106106 else false))
107107 then throw("incorrect assets amount")
108108 else {
109109 let shareTokenToPayAmount = fraction(tokenReceiveAmountA, tokenShareSupply, dAppTokensAmountA)
110110 if ((shareTokenToPayAmount == 0))
111111 then throw("you try replansish with very small amount")
112112 else [Reissue(assetIdTokenShare, shareTokenToPayAmount, true), ScriptTransfer(contextObj.caller, shareTokenToPayAmount, assetIdTokenShare), IntegerEntry("share_token_supply", (tokenShareSupply + shareTokenToPayAmount)), IntegerEntry("amountTokenA", (dAppTokensAmountA + tokenReceiveAmountA)), IntegerEntry("amountTokenB", (dAppTokensAmountB + tokenReceiveAmountB))]
113113 }
114114 }
115115 }
116116
117117
118118
119119 @Callable(contextObj)
120120 func withdraw () = {
121121 let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
122122 let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
123123 let payment = value(contextObj.payments[0])
124124 let assetIdReceived = payment.assetId
125125 let tokenReceiveAmount = payment.amount
126126 if ((assetIdTokenShare != assetIdReceived))
127127 then throw(("you need to attach share token for this dApp " + toBase58String(assetIdTokenShare)))
128128 else {
129129 let tokensToPayA = fraction(tokenReceiveAmount, dAppTokensAmountA, tokenShareSupply)
130130 let tokensToPayB = fraction(tokenReceiveAmount, dAppTokensAmountB, tokenShareSupply)
131131 [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)]
132132 }
133133 }
134134
135135
136136
137137 @Callable(contextObj)
138138 func exchanger (minTokenRecieve) = {
139139 let payment = value(contextObj.payments[0])
140140 let assetIdReceived = payment.assetId
141141 let tokenReceiveAmount = payment.amount
142142 let count = value(getInteger(this, "exchange_count"))
143143 if ((assetIdReceived == assetIdTokenB))
144144 then {
145145 let tokenSendAmount = ((fraction(amountTokenA, tokenReceiveAmount, (tokenReceiveAmount + amountTokenB)) * (comissionScaleDelimiter - comission)) / comissionScaleDelimiter)
146146 if ((minTokenRecieve > tokenSendAmount))
147147 then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
148148 else {
149149 let assetIdSent = assetIdTokenA
150150 [IntegerEntry("amountTokenA", (amountTokenA - tokenSendAmount)), IntegerEntry("amountTokenB", (amountTokenB + tokenReceiveAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
151151 }
152152 }
153153 else if ((assetIdReceived == assetIdTokenA))
154154 then {
155155 let tokenSendAmount = ((fraction(amountTokenB, tokenReceiveAmount, (tokenReceiveAmount + amountTokenA)) * (comissionScaleDelimiter - comission)) / comissionScaleDelimiter)
156156 if ((minTokenRecieve > tokenSendAmount))
157157 then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
158158 else {
159159 let assetIdSent = assetIdTokenB
160160 [IntegerEntry("amountTokenA", (amountTokenA + tokenReceiveAmount)), IntegerEntry("amountTokenB", (amountTokenB - tokenSendAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
161161 }
162162 }
163163 else throw("Asset is not allowed")
164164 }
165165
166166

github/deemru/w8io/6500d08 
51.98 ms