tx · Exo8PB22f9AnwJSjjA2gswx37ocx14AcXPjea4kDT3rL

3N61Xs9cTetvoP1uZSrtuRxxJ4A4RCR7a4G:  -0.01400000 Waves

2020.10.02 17:59 [1203081] smart account 3N61Xs9cTetvoP1uZSrtuRxxJ4A4RCR7a4G > SELF 0.00000000 Waves

{ "type": 13, "id": "Exo8PB22f9AnwJSjjA2gswx37ocx14AcXPjea4kDT3rL", "fee": 1400000, "feeAssetId": null, "timestamp": 1601650790955, "version": 2, "chainId": 84, "sender": "3N61Xs9cTetvoP1uZSrtuRxxJ4A4RCR7a4G", "senderPublicKey": "DjYkFAzpGaY6gNruMz81SkVbRsemgpfr6KJbXXgyH3UM", "proofs": [ "L9zgxWAbUoaeD45BLN5FoBsynTbosgAWUeosXBiMNB3bezz1ycS84Kcz4TK84RL5bb2sNCF1PUMjMLimrTzNuki" ], "script": "base64:AAIDAAAAAAAAABkIARIDCgEIEgQKAggIEgQKAggIEgQKAggIAAAAEQAAAAAETk9ORQIAAAAETk9ORQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQD//////////wEAAAALZ2V0S2V5T3JkZXIAAAACAAAAC3Nob3BBZGRyZXNzAAAAB29yZGVySWQEAAAAFXNob3BBZGRyZXNzQW5kT3JkZXJJZAkAASwAAAACBQAAAAtzaG9wQWRkcmVzcwUAAAAHb3JkZXJJZAkAASwAAAACAgAAAAZvcmRlcl8JAAJYAAAAAQkAAfcAAAABCQABmwAAAAEFAAAAFXNob3BBZGRyZXNzQW5kT3JkZXJJZAEAAAAWZ2V0S2V5T3JkZXJTaG9wQWRkcmVzcwAAAAEAAAAFb3JkZXIJAAEsAAAAAgUAAAAFb3JkZXICAAAABV9zaG9wAQAAABhnZXRLZXlPcmRlclNoaXBwaW5nQ29zdHMAAAABAAAABW9yZGVyCQABLAAAAAIFAAAABW9yZGVyAgAAAAlfc2hpcHBpbmcBAAAAEmdldEtleU9yZGVyT3JkZXJJZAAAAAEAAAAFb3JkZXIJAAEsAAAAAgUAAAAFb3JkZXICAAAACF9vcmRlcklkAQAAABJnZXRLZXlPcmRlckNvdXJpZXIAAAABAAAABW9yZGVyCQABLAAAAAIFAAAABW9yZGVyAgAAAApfY291cmllcklkAQAAABVnZXRLZXlPcmRlcklzQWNjZXB0ZWQAAAABAAAABW9yZGVyCQABLAAAAAIFAAAABW9yZGVyAgAAAAtfaXNBY2NlcHRlZAEAAAAXZ2V0S2V5T3JkZXJJc0luRGVsaXZlcnkAAAABAAAABW9yZGVyCQABLAAAAAIFAAAABW9yZGVyAgAAAA1faXNJbkRlbGl2ZXJ5AQAAABZnZXRLZXlPcmRlcklzRGVsaXZlcmVkAAAAAQAAAAVvcmRlcgkAASwAAAACBQAAAAVvcmRlcgIAAAAMX2lzRGVsaXZlcmVkAQAAABpnZXRWYWx1ZVNob3BBZGRyZXNzT2ZPcmRlcgAAAAEAAAAFb3JkZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABZnZXRLZXlPcmRlclNob3BBZGRyZXNzAAAAAQUAAAAFb3JkZXIBAAAAGGdldFZhbHVlSXNBY2NlcHRlT2ZPcmRlcgAAAAEAAAAFb3JkZXIJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABCQEAAAAVZ2V0S2V5T3JkZXJJc0FjY2VwdGVkAAAAAQUAAAAFb3JkZXIBAAAAG2dldFZhbHVlSXNJbkRlbGl2ZXJ5T2ZPcmRlcgAAAAEAAAAFb3JkZXIJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABCQEAAAAXZ2V0S2V5T3JkZXJJc0luRGVsaXZlcnkAAAABBQAAAAVvcmRlcgEAAAAaZ2V0VmFsdWVJc0RlbGl2ZXJlZE9mT3JkZXIAAAABAAAABW9yZGVyCQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQkBAAAAFmdldEtleU9yZGVySXNEZWxpdmVyZWQAAAABBQAAAAVvcmRlcgEAAAAcZ2V0VmFsdWVTaGlwcGluZ0Nvc3RzT2ZPcmRlcgAAAAEAAAAFb3JkZXIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAYZ2V0S2V5T3JkZXJTaGlwcGluZ0Nvc3RzAAAAAQUAAAAFb3JkZXIAAAAEAAAAAWkBAAAACGFkZE9yZGVyAAAAAQAAAAdvcmRlcklkBAAAAAtzaG9wQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAANc2hpcHBpbmdDb3N0cwgFAAAAA3BtdAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAANUN1cnJlbnRseSB5b3UgY2FuIHBsYWNlIG9yZGVycyBvbmx5IHdpdGggV2F2ZXMgdG9rZW5zBAAAAAVvcmRlcgkBAAAAC2dldEtleU9yZGVyAAAAAgUAAAALc2hvcEFkZHJlc3MFAAAAB29yZGVySWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAADXNoaXBwaW5nQ29zdHMJAAACAAAAAQIAAAA7WW91IGNhbm5vdCBjcmVhdGUgYW4gb3JkZXIgd2l0aCBzaGlwcGluZyBjb3N0cyBsb3dlciB0aGFuIDADCQEAAAACIT0AAAACCQEAAAAaZ2V0VmFsdWVTaG9wQWRkcmVzc09mT3JkZXIAAAABBQAAAAVvcmRlcgUAAAAETk9ORQkAAAIAAAABAgAAAChBbiBvcmRlciB3aXRoIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0S2V5T3JkZXJTaG9wQWRkcmVzcwAAAAEFAAAABW9yZGVyBQAAAAtzaG9wQWRkcmVzcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAGGdldEtleU9yZGVyU2hpcHBpbmdDb3N0cwAAAAEFAAAABW9yZGVyBQAAAA1zaGlwcGluZ0Nvc3RzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5T3JkZXJPcmRlcklkAAAAAQUAAAAFb3JkZXIFAAAAB29yZGVySWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRLZXlPcmRlckNvdXJpZXIAAAABBQAAAAVvcmRlcgUAAAAETk9ORQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleU9yZGVySXNBY2NlcHRlZAAAAAEFAAAABW9yZGVyBwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAF2dldEtleU9yZGVySXNJbkRlbGl2ZXJ5AAAAAQUAAAAFb3JkZXIHCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0S2V5T3JkZXJJc0RlbGl2ZXJlZAAAAAEFAAAABW9yZGVyBwUAAAADbmlsAAAAAWkBAAAAEnNldE9yZGVySXNBY2NlcHRlZAAAAAIAAAALc2hvcEFkZHJlc3MAAAAHb3JkZXJJZAQAAAAFb3JkZXIJAQAAAAtnZXRLZXlPcmRlcgAAAAIFAAAAC3Nob3BBZGRyZXNzBQAAAAdvcmRlcklkAwkBAAAAAiE9AAAAAgkBAAAAGmdldFZhbHVlU2hvcEFkZHJlc3NPZk9yZGVyAAAAAQUAAAAFb3JkZXIFAAAAC3Nob3BBZGRyZXNzCQAAAgAAAAECAAAAIlRoZSByZXF1ZXN0ZWQgb3JkZXIgZG9lcyBub3QgZXhpc3QDCQEAAAACIT0AAAACCQEAAAAYZ2V0VmFsdWVJc0FjY2VwdGVPZk9yZGVyAAAAAQUAAAAFb3JkZXIHCQAAAgAAAAECAAAAKlRoZSByZXF1ZXN0ZWQgb3JkZXIgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleU9yZGVySXNBY2NlcHRlZAAAAAEFAAAABW9yZGVyBgUAAAADbmlsAAAAAWkBAAAAFHNldE9yZGVySXNJbkRlbGl2ZXJ5AAAAAgAAAAtzaG9wQWRkcmVzcwAAAAdvcmRlcklkBAAAAAVvcmRlcgkBAAAAC2dldEtleU9yZGVyAAAAAgUAAAALc2hvcEFkZHJlc3MFAAAAB29yZGVySWQDCQEAAAACIT0AAAACCQEAAAAaZ2V0VmFsdWVTaG9wQWRkcmVzc09mT3JkZXIAAAABBQAAAAVvcmRlcgUAAAALc2hvcEFkZHJlc3MJAAACAAAAAQIAAAAiVGhlIHJlcXVlc3RlZCBvcmRlciBkb2VzIG5vdCBleGlzdAMJAQAAAAIhPQAAAAIJAQAAABtnZXRWYWx1ZUlzSW5EZWxpdmVyeU9mT3JkZXIAAAABBQAAAAVvcmRlcgcJAAACAAAAAQIAAAAqVGhlIHJlcXVlc3RlZCBvcmRlciBpcyBubyBsb25nZXIgYXZhaWxhYmxlCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAXZ2V0S2V5T3JkZXJJc0luRGVsaXZlcnkAAAABBQAAAAVvcmRlcgYFAAAAA25pbAAAAAFpAQAAABNzZXRPcmRlcklzRGVsaXZlcmVkAAAAAgAAAAtzaG9wQWRkcmVzcwAAAAdvcmRlcklkBAAAAAVvcmRlcgkBAAAAC2dldEtleU9yZGVyAAAAAgUAAAALc2hvcEFkZHJlc3MFAAAAB29yZGVySWQDCQEAAAACIT0AAAACCQEAAAAaZ2V0VmFsdWVTaG9wQWRkcmVzc09mT3JkZXIAAAABBQAAAAVvcmRlcgUAAAALc2hvcEFkZHJlc3MJAAACAAAAAQIAAAAiVGhlIHJlcXVlc3RlZCBvcmRlciBkb2VzIG5vdCBleGlzdAMJAQAAAAIhPQAAAAIJAQAAABpnZXRWYWx1ZUlzRGVsaXZlcmVkT2ZPcmRlcgAAAAEFAAAABW9yZGVyBwkAAAIAAAABAgAAACpUaGUgcmVxdWVzdGVkIG9yZGVyIGlzIG5vIGxvbmdlciBhdmFpbGFibGUJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0S2V5T3JkZXJJc0RlbGl2ZXJlZAAAAAEFAAAABW9yZGVyBgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgkBAAAAHGdldFZhbHVlU2hpcHBpbmdDb3N0c09mT3JkZXIAAAABBQAAAAVvcmRlcgUAAAAEdW5pdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXk8cDdB", "height": 1203081, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FKPzCgaWW9AqADAvfiqvjopbXH4exSxjaGjYbMhzCApW Next: Gyc3o4JPaBo57QNQWiNCY8LzjcbHH5pvWSHgUD4yWqha Diff:
OldNewDifferences
1616 a
1717 case _ =>
1818 NONE
19+}
20+
21+
22+func getIntegerByKey (key) = match getInteger(this, key) {
23+ case a: Int =>
24+ a
25+ case _ =>
26+ -1
1927 }
2028
2129
5260 func getValueIsAccepteOfOrder (order) = getBooleanByKey(getKeyOrderIsAccepted(order))
5361
5462
55-func getValueIsInDelivery (order) = getBooleanByKey(getKeyOrderIsInDelivery(order))
63+func getValueIsInDeliveryOfOrder (order) = getBooleanByKey(getKeyOrderIsInDelivery(order))
5664
5765
58-func getValueIsDelivered (order) = getBooleanByKey(getKeyOrderIsDelivered(order))
66+func getValueIsDeliveredOfOrder (order) = getBooleanByKey(getKeyOrderIsDelivered(order))
67+
68+
69+func getValueShippingCostsOfOrder (order) = getIntegerByKey(getKeyOrderShippingCosts(order))
5970
6071
6172 @Callable(i)
94105 let order = getKeyOrder(shopAddress, orderId)
95106 if ((getValueShopAddressOfOrder(order) != shopAddress))
96107 then throw("The requested order does not exist")
97- else if ((getValueIsInDelivery(order) != false))
108+ else if ((getValueIsInDeliveryOfOrder(order) != false))
98109 then throw("The requested order is no longer available")
99110 else WriteSet([DataEntry(getKeyOrderIsInDelivery(order), true)])
100111 }
106117 let order = getKeyOrder(shopAddress, orderId)
107118 if ((getValueShopAddressOfOrder(order) != shopAddress))
108119 then throw("The requested order does not exist")
109- else if ((getValueIsDelivered(order) != false))
120+ else if ((getValueIsDeliveredOfOrder(order) != false))
110121 then throw("The requested order is no longer available")
111- else WriteSet([DataEntry(getKeyOrderIsDelivered(order), true)])
122+ else ScriptResult(WriteSet([DataEntry(getKeyOrderIsDelivered(order), true)]), TransferSet([ScriptTransfer(i.caller, getValueShippingCostsOfOrder(order), unit)]))
112123 }
113124
114125
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "NONE"
55
66 func getStringByKey (key) = match getString(this, key) {
77 case a: String =>
88 a
99 case _ =>
1010 NONE
1111 }
1212
1313
1414 func getBooleanByKey (key) = match getBoolean(this, key) {
1515 case a: Boolean =>
1616 a
1717 case _ =>
1818 NONE
19+}
20+
21+
22+func getIntegerByKey (key) = match getInteger(this, key) {
23+ case a: Int =>
24+ a
25+ case _ =>
26+ -1
1927 }
2028
2129
2230 func getKeyOrder (shopAddress,orderId) = {
2331 let shopAddressAndOrderId = (shopAddress + orderId)
2432 ("order_" + toBase58String(sha256(toBytes(shopAddressAndOrderId))))
2533 }
2634
2735
2836 func getKeyOrderShopAddress (order) = (order + "_shop")
2937
3038
3139 func getKeyOrderShippingCosts (order) = (order + "_shipping")
3240
3341
3442 func getKeyOrderOrderId (order) = (order + "_orderId")
3543
3644
3745 func getKeyOrderCourier (order) = (order + "_courierId")
3846
3947
4048 func getKeyOrderIsAccepted (order) = (order + "_isAccepted")
4149
4250
4351 func getKeyOrderIsInDelivery (order) = (order + "_isInDelivery")
4452
4553
4654 func getKeyOrderIsDelivered (order) = (order + "_isDelivered")
4755
4856
4957 func getValueShopAddressOfOrder (order) = getStringByKey(getKeyOrderShopAddress(order))
5058
5159
5260 func getValueIsAccepteOfOrder (order) = getBooleanByKey(getKeyOrderIsAccepted(order))
5361
5462
55-func getValueIsInDelivery (order) = getBooleanByKey(getKeyOrderIsInDelivery(order))
63+func getValueIsInDeliveryOfOrder (order) = getBooleanByKey(getKeyOrderIsInDelivery(order))
5664
5765
58-func getValueIsDelivered (order) = getBooleanByKey(getKeyOrderIsDelivered(order))
66+func getValueIsDeliveredOfOrder (order) = getBooleanByKey(getKeyOrderIsDelivered(order))
67+
68+
69+func getValueShippingCostsOfOrder (order) = getIntegerByKey(getKeyOrderShippingCosts(order))
5970
6071
6172 @Callable(i)
6273 func addOrder (orderId) = {
6374 let shopAddress = toBase58String(i.caller.bytes)
6475 let pmt = extract(i.payment)
6576 let shippingCosts = pmt.amount
6677 if (isDefined(pmt.assetId))
6778 then throw("Currently you can place orders only with Waves tokens")
6879 else {
6980 let order = getKeyOrder(shopAddress, orderId)
7081 if ((0 >= shippingCosts))
7182 then throw("You cannot create an order with shipping costs lower than 0")
7283 else if ((getValueShopAddressOfOrder(order) != NONE))
7384 then throw("An order with the same id already exists")
7485 else WriteSet([DataEntry(getKeyOrderShopAddress(order), shopAddress), DataEntry(getKeyOrderShippingCosts(order), shippingCosts), DataEntry(getKeyOrderOrderId(order), orderId), DataEntry(getKeyOrderCourier(order), NONE), DataEntry(getKeyOrderIsAccepted(order), false), DataEntry(getKeyOrderIsInDelivery(order), false), DataEntry(getKeyOrderIsDelivered(order), false)])
7586 }
7687 }
7788
7889
7990
8091 @Callable(i)
8192 func setOrderIsAccepted (shopAddress,orderId) = {
8293 let order = getKeyOrder(shopAddress, orderId)
8394 if ((getValueShopAddressOfOrder(order) != shopAddress))
8495 then throw("The requested order does not exist")
8596 else if ((getValueIsAccepteOfOrder(order) != false))
8697 then throw("The requested order is no longer available")
8798 else WriteSet([DataEntry(getKeyOrderIsAccepted(order), true)])
8899 }
89100
90101
91102
92103 @Callable(i)
93104 func setOrderIsInDelivery (shopAddress,orderId) = {
94105 let order = getKeyOrder(shopAddress, orderId)
95106 if ((getValueShopAddressOfOrder(order) != shopAddress))
96107 then throw("The requested order does not exist")
97- else if ((getValueIsInDelivery(order) != false))
108+ else if ((getValueIsInDeliveryOfOrder(order) != false))
98109 then throw("The requested order is no longer available")
99110 else WriteSet([DataEntry(getKeyOrderIsInDelivery(order), true)])
100111 }
101112
102113
103114
104115 @Callable(i)
105116 func setOrderIsDelivered (shopAddress,orderId) = {
106117 let order = getKeyOrder(shopAddress, orderId)
107118 if ((getValueShopAddressOfOrder(order) != shopAddress))
108119 then throw("The requested order does not exist")
109- else if ((getValueIsDelivered(order) != false))
120+ else if ((getValueIsDeliveredOfOrder(order) != false))
110121 then throw("The requested order is no longer available")
111- else WriteSet([DataEntry(getKeyOrderIsDelivered(order), true)])
122+ else ScriptResult(WriteSet([DataEntry(getKeyOrderIsDelivered(order), true)]), TransferSet([ScriptTransfer(i.caller, getValueShippingCostsOfOrder(order), unit)]))
112123 }
113124
114125
115126 @Verifier(tx)
116127 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
117128

github/deemru/w8io/3ef1775 
48.53 ms