tx · 9FvKkQGRPNTVrsFj4ePJahaRdgCyQphug6NiDj3TNu7T

3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ:  -0.01000000 Waves

2022.08.28 15:52 [2204352] smart account 3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ > SELF 0.00000000 Waves

{ "type": 13, "id": "9FvKkQGRPNTVrsFj4ePJahaRdgCyQphug6NiDj3TNu7T", "fee": 1000000, "feeAssetId": null, "timestamp": 1661691162740, "version": 2, "chainId": 84, "sender": "3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ", "senderPublicKey": "6ftcjfxzkWUUwSQuuRg45YwriXgjJ5RMUoG9etzbvvs3", "proofs": [ "6789UzawXqcXYEJUDwKLN1Teta5bFPAzZSqU4fRKACzHVgnQ8SMzEJsfbM8hasY859JebF5BpLSWkW8cRaFXfvrp" ], "script": "base64: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AAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAhfYW1vdW50MAIAAAATQ2Fubm90IGZpbmQgYW1vdW50MAQAAAAPb3JkZXJGdWxmaWxsZWQwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDACAAAAFkNhbm5vdCBmaW5kIGZ1bGZpbGxlZDAEAAAAEG9yZGVyQW1vdW50MExlZnQJAABlAAAAAgUAAAAMb3JkZXJBbW91bnQwBQAAAA9vcmRlckZ1bGZpbGxlZDAEAAAAC29yZGVyQXNzZXQxCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAHX3Rva2VuMQIAAAASQ2Fubm90IGZpbmQgdG9rZW4xBAAAAAxvcmRlckFtb3VudDEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAhfYW1vdW50MQIAAAATQ2Fubm90IGZpbmQgYW1vdW50MQQAAAAPb3JkZXJGdWxmaWxsZWQxCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDECAAAAFkNhbm5vdCBmaW5kIGZ1bGZpbGxlZDEEAAAAEG9yZGVyQW1vdW50MUxlZnQJAABlAAAAAgUAAAAMb3JkZXJBbW91bnQxBQAAAA9vcmRlckZ1bGZpbGxlZDEDCQEAAAACIT0AAAACBQAAAAtvcmRlclN0YXR1cwIAAAAGYWN0aXZlCQAAAgAAAAECAAAAIE9yZGVyIGFscmVhZHkgY2xvc2VkIG9yIGNhbmNlbGVkAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1Zb3Ugc2hvdWxkIHRvIHByb3ZpZGUgcGF5bWVudAQAAAANY2FsbGVyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAAxvd25lckFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACm9yZGVyT3duZXIEAAAADXBheW1lbnRBc3NldDEJAQAAAA5nZXRBc3NldFN0cmluZwAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAADnBheW1lbnRBbW91bnQxCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQDCQEAAAACIT0AAAACBQAAAA1wYXltZW50QXNzZXQxBQAAAAtvcmRlckFzc2V0MQkAAAIAAAABAgAAABNXcm9uZyBwYXltZW50IGFzc2V0AwkAAGcAAAACBQAAAA5wYXltZW50QW1vdW50MQUAAAAQb3JkZXJBbW91bnQxTGVmdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA1jYWxsZXJBZGRyZXNzCQAAZQAAAAIFAAAADnBheW1lbnRBbW91bnQxBQAAABBvcmRlckFtb3VudDFMZWZ0CQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAAC29yZGVyQXNzZXQxCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADWNhbGxlckFkZHJlc3MFAAAAEG9yZGVyQW1vdW50MExlZnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAALb3JkZXJBc3NldDAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMb3duZXJBZGRyZXNzBQAAABBvcmRlckFtb3VudDFMZWZ0CQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAADXBheW1lbnRBc3NldDEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQwCQAAZAAAAAIFAAAAD29yZGVyRnVsZmlsbGVkMAUAAAAQb3JkZXJBbW91bnQwTGVmdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDEJAABkAAAAAgUAAAAPb3JkZXJGdWxmaWxsZWQxBQAAABBvcmRlckFtb3VudDFMZWZ0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB19zdGF0dXMCAAAABmNsb3NlZAUAAAADbmlsBAAAAAdhbW91bnQwCQEAAAAIZnJhY3Rpb24AAAAEBQAAAAxvcmRlckFtb3VudDAFAAAADnBheW1lbnRBbW91bnQxBQAAAAxvcmRlckFtb3VudDEFAAAABUZMT09SCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADG93bmVyQWRkcmVzcwUAAAAOcGF5bWVudEFtb3VudDEJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAANcGF5bWVudEFzc2V0MQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAdhbW91bnQwCQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAAC29yZGVyQXNzZXQwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMAkAAGQAAAACBQAAAA9vcmRlckZ1bGZpbGxlZDAFAAAAB2Ftb3VudDAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQxCQAAZAAAAAIFAAAAD29yZGVyRnVsZmlsbGVkMQUAAAAOcGF5bWVudEFtb3VudDEFAAAAA25pbAAAAAFpAQAAAAtjYW5jZWxPcmRlcgAAAAEAAAAHb3JkZXJJZAQAAAAKb3JkZXJPd25lcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAABl9vd25lcgIAAAAXQ2Fubm90IGZpbmQgb3JkZXIgb3duZXIEAAAAC29yZGVyU3RhdHVzCQAEIgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB19zdGF0dXMEAAAAC29yZGVyQXNzZXQwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAHX3Rva2VuMAIAAAASQ2Fubm90IGZpbmQgdG9rZW4wBAAAAAxvcmRlckFtb3VudDAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAhfYW1vdW50MAIAAAATQ2Fubm90IGZpbmQgYW1vdW50MAQAAAAPb3JkZXJGdWxmaWxsZWQwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDACAAAAFkNhbm5vdCBmaW5kIGZ1bGZpbGxlZDAEAAAAEG9yZGVyQW1vdW50MExlZnQJAABlAAAAAgUAAAAMb3JkZXJBbW91bnQwBQAAAA9vcmRlckZ1bGZpbGxlZDADCQEAAAACIT0AAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAACm9yZGVyT3duZXIJAAACAAAAAQIAAAAXWW91IGNhbm5vdCBjYW5jZWwgb3JkZXIDCQEAAAACIT0AAAACBQAAAAtvcmRlclN0YXR1cwIAAAAGYWN0aXZlCQAAAgAAAAECAAAAG29yZGVyIGlzIGNsb3NlZCBvciBjYW5jZWxlZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAApvcmRlck93bmVyBQAAABBvcmRlckFtb3VudDBMZWZ0CQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAAC29yZGVyQXNzZXQwCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB19zdGF0dXMCAAAACGNhbmNlbGVkBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleWhiAU8=", "height": 2204352, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HFyE68Rea1U1CWQSjXh8cBDxQiHWmCKd3eAAB65VYNfV Next: EZ2QjjJKUQReBJBXfu1LGkcFscfTE4YP2ztzePbN5r5X Diff:
OldNewDifferences
3030
3131 @Callable(i)
3232 func fulfillOrder (orderId) = {
33- let orderOwner = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_owner")), "Cannot find order owner")
34- let orderStatus = getStringValue((("order_" + orderId) + "_status"))
35- let orderAsset0 = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_token0")), "Cannot find token0")
36- let orderAmount0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_amount0")), "Cannot find amount0")
37- let orderFulfilled0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
33+ let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
34+ let orderStatus = getString((("order_" + orderId) + "_status"))
35+ let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
36+ let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
37+ let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
3838 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
39- let orderAsset1 = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_token1")), "Cannot find token1")
40- let orderAmount1 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_amount1")), "Cannot find amount1")
41- let orderFulfilled1 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
39+ let orderAsset1 = valueOrErrorMessage(getString((("order_" + orderId) + "_token1")), "Cannot find token1")
40+ let orderAmount1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount1")), "Cannot find amount1")
41+ let orderFulfilled1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
4242 let orderAmount1Left = (orderAmount1 - orderFulfilled1)
4343 if ((orderStatus != "active"))
4444 then throw("Order already closed or canceled")
6464
6565 @Callable(i)
6666 func cancelOrder (orderId) = {
67- let orderOwner = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_owner")), "Cannot find order owner")
68- let orderStatus = getStringValue((("order_" + orderId) + "_status"))
69- let orderAsset0 = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_token0")), "Cannot find token0")
70- let orderAmount0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_amount0")), "Cannot find amount0")
71- let orderFulfilled0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
67+ let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
68+ let orderStatus = getString((("order_" + orderId) + "_status"))
69+ let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
70+ let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
71+ let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
7272 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
7373 if ((toBase58String(i.caller.bytes) != orderOwner))
7474 then throw("You cannot cancel order")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getAssetString (assetId) = match assetId {
55 case b: ByteVector =>
66 toBase58String(b)
77 case _ =>
88 "WAVES"
99 }
1010
1111
1212 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
1313 then unit
1414 else fromBase58String(assetIdStr)
1515
1616
1717 @Callable(i)
1818 func createOrder (asset1,amount1) = {
1919 let orderId = toBase58String(i.transactionId)
2020 if ((size(i.payments) != 1))
2121 then throw("You should to provide payment")
2222 else {
2323 let asset0 = getAssetString(i.payments[0].assetId)
2424 let amount0 = i.payments[0].amount
2525 [StringEntry((("order_" + orderId) + "_token0"), asset0), IntegerEntry((("order_" + orderId) + "_amount0"), amount0), IntegerEntry((("order_" + orderId) + "_amount1"), amount1), StringEntry((("order_" + orderId) + "_token1"), asset1), IntegerEntry((("order_" + orderId) + "_fulfilled0"), 0), IntegerEntry((("order_" + orderId) + "_fulfilled1"), 0), StringEntry((("order_" + orderId) + "_owner"), toString(i.caller)), StringEntry((("order_" + orderId) + "_status"), "active")]
2626 }
2727 }
2828
2929
3030
3131 @Callable(i)
3232 func fulfillOrder (orderId) = {
33- let orderOwner = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_owner")), "Cannot find order owner")
34- let orderStatus = getStringValue((("order_" + orderId) + "_status"))
35- let orderAsset0 = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_token0")), "Cannot find token0")
36- let orderAmount0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_amount0")), "Cannot find amount0")
37- let orderFulfilled0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
33+ let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
34+ let orderStatus = getString((("order_" + orderId) + "_status"))
35+ let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
36+ let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
37+ let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
3838 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
39- let orderAsset1 = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_token1")), "Cannot find token1")
40- let orderAmount1 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_amount1")), "Cannot find amount1")
41- let orderFulfilled1 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
39+ let orderAsset1 = valueOrErrorMessage(getString((("order_" + orderId) + "_token1")), "Cannot find token1")
40+ let orderAmount1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount1")), "Cannot find amount1")
41+ let orderFulfilled1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
4242 let orderAmount1Left = (orderAmount1 - orderFulfilled1)
4343 if ((orderStatus != "active"))
4444 then throw("Order already closed or canceled")
4545 else if ((size(i.payments) != 1))
4646 then throw("You should to provide payment")
4747 else {
4848 let callerAddress = i.caller
4949 let ownerAddress = addressFromStringValue(orderOwner)
5050 let paymentAsset1 = getAssetString(i.payments[0].assetId)
5151 let paymentAmount1 = i.payments[0].amount
5252 if ((paymentAsset1 != orderAsset1))
5353 then throw("Wrong payment asset")
5454 else if ((paymentAmount1 >= orderAmount1Left))
5555 then [ScriptTransfer(callerAddress, (paymentAmount1 - orderAmount1Left), getAssetBytes(orderAsset1)), ScriptTransfer(callerAddress, orderAmount0Left, getAssetBytes(orderAsset0)), ScriptTransfer(ownerAddress, orderAmount1Left, getAssetBytes(paymentAsset1)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + orderAmount0Left)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + orderAmount1Left)), StringEntry((("order_" + orderId) + "_status"), "closed")]
5656 else {
5757 let amount0 = fraction(orderAmount0, paymentAmount1, orderAmount1, FLOOR)
5858 [ScriptTransfer(ownerAddress, paymentAmount1, getAssetBytes(paymentAsset1)), ScriptTransfer(callerAddress, amount0, getAssetBytes(orderAsset0)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + amount0)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + paymentAmount1))]
5959 }
6060 }
6161 }
6262
6363
6464
6565 @Callable(i)
6666 func cancelOrder (orderId) = {
67- let orderOwner = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_owner")), "Cannot find order owner")
68- let orderStatus = getStringValue((("order_" + orderId) + "_status"))
69- let orderAsset0 = valueOrErrorMessage(getStringValue((("order_" + orderId) + "_token0")), "Cannot find token0")
70- let orderAmount0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_amount0")), "Cannot find amount0")
71- let orderFulfilled0 = valueOrErrorMessage(getIntegerValue((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
67+ let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
68+ let orderStatus = getString((("order_" + orderId) + "_status"))
69+ let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
70+ let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
71+ let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
7272 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
7373 if ((toBase58String(i.caller.bytes) != orderOwner))
7474 then throw("You cannot cancel order")
7575 else if ((orderStatus != "active"))
7676 then throw("order is closed or canceled")
7777 else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
7878 }
7979
8080
8181 @Verifier(tx)
8282 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8383

github/deemru/w8io/873ac7e 
37.79 ms