tx · 3N4ffp7GmyG7iZNusRdnNB498uB2MFy7eKMxSwYY2PYW

3N7a7sTSKaE621QewSqQcL1mUbknJjnLkZc:  -0.01000000 Waves

2021.10.21 23:28 [1756535] smart account 3N7a7sTSKaE621QewSqQcL1mUbknJjnLkZc > SELF 0.00000000 Waves

{ "type": 13, "id": "3N4ffp7GmyG7iZNusRdnNB498uB2MFy7eKMxSwYY2PYW", "fee": 1000000, "feeAssetId": null, "timestamp": 1634848130076, "version": 2, "chainId": 84, "sender": "3N7a7sTSKaE621QewSqQcL1mUbknJjnLkZc", "senderPublicKey": "6LrPmGtwuADhwHYcxBouLzwfSTGgucbwYG5Pja7LUrcd", "proofs": [ "3VcRRyrdREdq9T7KZBY9jZ4fXvLa9TSHiC5K1QVwnDHaJpDuHsA9HCQa4Bi7dKTBADwqAWuY4UQZ8McPQt6YNwLH" ], "script": "base64:AAIFAAAAAAAAABcIAhIECgIIGBIDCgEBEgMKAQESAwoBAQAAAA4AAAAACm9mZmVySWRLZXkCAAAADSRPRkZFUl9OVU1CRVIAAAAAB3Rlc3RLZXkCAAAABSRURVNUAAAAAA9vZmZlck9wZW5TdGF0dXMAAAAAAAAAAAEAAAAAE29mZmVyQ2FuY2VsZWRTdGF0dXMAAAAAAAAAAAIAAAAAE29mZmVyQWNjZXB0ZWRTdGF0dXMAAAAAAAAAAAMAAAAAE29mZmVyUmVqZWN0ZWRTdGF0dXMAAAAAAAAAAAQBAAAAEWdldE9mZmVyU3RhdHVzS2V5AAAAAQAAAAdvZmZlcklkCQABLAAAAAIJAAGkAAAAAQUAAAAHb2ZmZXJJZAIAAAAHX3N0YXR1cwEAAAAWZ2V0T2ZmZXJBZGRyZXNzRnJvbUtleQAAAAEAAAAHb2ZmZXJJZAkAASwAAAACCQABpAAAAAEFAAAAB29mZmVySWQCAAAABV9mcm9tAQAAABRnZXRPZmZlckFkZHJlc3NUb0tleQAAAAEAAAAHb2ZmZXJJZAkAASwAAAACCQABpAAAAAEFAAAAB29mZmVySWQCAAAAA190bwEAAAAXZ2V0T2ZmZXJPZmZlcmVkQXNzZXRLZXkAAAACAAAAB29mZmVySWQAAAAKaXRlbU51bWJlcgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHb2ZmZXJJZAkAAaQAAAABBQAAAAppdGVtTnVtYmVyAgAAABFfb2ZmZXJlZF9hc3NldF9pZAEAAAAYZ2V0T2ZmZXJPZmZlcmVkQW1vdW50S2V5AAAAAgAAAAdvZmZlcklkAAAACml0ZW1OdW1iZXIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB29mZmVySWQJAAGkAAAAAQUAAAAKaXRlbU51bWJlcgIAAAAVX29mZmVyZWRfYXNzZXRfYW1vdW50AQAAABVnZXRPZmZlckFza2VkQXNzZXRLZXkAAAACAAAAB29mZmVySWQAAAAKaXRlbU51bWJlcgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHb2ZmZXJJZAkAAaQAAAABBQAAAAppdGVtTnVtYmVyAgAAAA9fYXNrZWRfYXNzZXRfaWQBAAAAFmdldE9mZmVyQXNrZWRBbW91bnRLZXkAAAACAAAAB29mZmVySWQAAAAKaXRlbU51bWJlcgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHb2ZmZXJJZAkAAaQAAAABBQAAAAppdGVtTnVtYmVyAgAAABNfYXNrZWRfYXNzZXRfYW1vdW50AQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAA3ZhbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAUAAAADdmFsAAAABAAAAAFpAQAAAAtjcmVhdGVPZmZlcgAAAAIAAAAJdG9BZGRyZXNzAAAABWFzc2V0BAAAAAdvZmZlcklkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAACm9mZmVySWRLZXkEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAADGZpcnN0UGF5bWVudAkAAAIAAAABAgAAAApubyBwYXltZW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0T2ZmZXJTdGF0dXNLZXkAAAABBQAAAAdvZmZlcklkBQAAAA9vZmZlck9wZW5TdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFmdldE9mZmVyQWRkcmVzc0Zyb21LZXkAAAABBQAAAAdvZmZlcklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGdldE9mZmVyQWRkcmVzc1RvS2V5AAAAAQUAAAAHb2ZmZXJJZAUAAAAJdG9BZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABdnZXRPZmZlck9mZmVyZWRBc3NldEtleQAAAAIFAAAAB29mZmVySWQAAAAAAAAAAAAJAAJYAAAAAQkBAAAAC3ZhbHVlT3JFbHNlAAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkCQABmwAAAAECAAAABVdBVkVTCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAYZ2V0T2ZmZXJPZmZlcmVkQW1vdW50S2V5AAAAAgUAAAAHb2ZmZXJJZAAAAAAAAAAAAAgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAAtjYW5jZWxPZmZlcgAAAAEAAAAHb2ZmZXJJZAQAAAALb2ZmZXJTdGF0dXMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEWdldE9mZmVyU3RhdHVzS2V5AAAAAQUAAAAHb2ZmZXJJZAMJAQAAAAIhPQAAAAIFAAAAC29mZmVyU3RhdHVzBQAAAA9vZmZlck9wZW5TdGF0dXMJAAACAAAAAQIAAAAZb2ZmZXIgc3RhdHVzIG11c3QgYmUgb3BlbgQAAAALYWRkcmVzc0Zyb20JAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAQAAABZnZXRPZmZlckFkZHJlc3NGcm9tS2V5AAAAAQUAAAAHb2ZmZXJJZAQAAAAJY2FsbGVyU3RyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACBQAAAAthZGRyZXNzRnJvbQUAAAAJY2FsbGVyU3RyCQAAAgAAAAECAAAAHG9mZmVyIG11c3QgYmUgbWFkZSBieSBjYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRPZmZlclN0YXR1c0tleQAAAAEFAAAAB29mZmVySWQFAAAAE29mZmVyQ2FuY2VsZWRTdGF0dXMFAAAAA25pbAAAAAFpAQAAAAthY2NlcHRPZmZlcgAAAAEAAAAHb2ZmZXJJZAQAAAALb2ZmZXJTdGF0dXMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEWdldE9mZmVyU3RhdHVzS2V5AAAAAQUAAAAHb2ZmZXJJZAMJAQAAAAIhPQAAAAIFAAAAC29mZmVyU3RhdHVzBQAAAA9vZmZlck9wZW5TdGF0dXMJAAACAAAAAQIAAAAZb2ZmZXIgc3RhdHVzIG11c3QgYmUgb3BlbgQAAAAJYWRkcmVzc1RvCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAAUZ2V0T2ZmZXJBZGRyZXNzVG9LZXkAAAABBQAAAAdvZmZlcklkBAAAAAljYWxsZXJTdHIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAIhPQAAAAIFAAAACWFkZHJlc3NUbwUAAAAJY2FsbGVyU3RyCQAAAgAAAAECAAAAHG9mZmVyIG11c3QgYmUgbWFkZSB0byBjYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRPZmZlclN0YXR1c0tleQAAAAEFAAAAB29mZmVySWQFAAAAE29mZmVyQWNjZXB0ZWRTdGF0dXMFAAAAA25pbAAAAAFpAQAAAAtyZWplY3RPZmZlcgAAAAEAAAAHb2ZmZXJJZAQAAAALb2ZmZXJTdGF0dXMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEWdldE9mZmVyU3RhdHVzS2V5AAAAAQUAAAAHb2ZmZXJJZAMJAQAAAAIhPQAAAAIFAAAAC29mZmVyU3RhdHVzBQAAAA9vZmZlck9wZW5TdGF0dXMJAAACAAAAAQIAAAAZb2ZmZXIgc3RhdHVzIG11c3QgYmUgb3BlbgQAAAAJYWRkcmVzc1RvCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAAUZ2V0T2ZmZXJBZGRyZXNzVG9LZXkAAAABBQAAAAdvZmZlcklkBAAAAAljYWxsZXJTdHIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAIhPQAAAAIFAAAACWFkZHJlc3NUbwUAAAAJY2FsbGVyU3RyCQAAAgAAAAECAAAAHG9mZmVyIG11c3QgYmUgbWFkZSB0byBjYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRPZmZlclN0YXR1c0tleQAAAAEFAAAAB29mZmVySWQFAAAAE29mZmVyUmVqZWN0ZWRTdGF0dXMFAAAAA25pbAAAAADo8as0", "height": 1756535, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A7Di3hxQ7VzmTaFLhFKBTLZ4t2k4taa7bg2VeXCStrBs Next: AshK3p7zNscKXJwKwy5AH9Zk25mqgcq55zf9ztdZvjnH Diff:
OldNewDifferences
4949 func createOffer (toAddress,asset) = {
5050 let offerId = tryGetInteger(offerIdKey)
5151 let firstPayment = value(i.payments[0])
52- if (if (!(isDefined(firstPayment)))
53- then !(isDefined(firstPayment.assetId))
54- else false)
52+ if (!(isDefined(firstPayment)))
5553 then throw("no payment")
56- else [IntegerEntry(getOfferStatusKey(offerId), offerOpenStatus), StringEntry(getOfferAddressFromKey(offerId), toBase58String(i.caller.bytes)), StringEntry(getOfferAddressToKey(offerId), toAddress), StringEntry(getOfferOfferedAssetKey(offerId, 0), toBase58String(value(firstPayment.assetId))), IntegerEntry(getOfferOfferedAmountKey(offerId, 0), firstPayment.amount)]
54+ else [IntegerEntry(getOfferStatusKey(offerId), offerOpenStatus), StringEntry(getOfferAddressFromKey(offerId), toBase58String(i.caller.bytes)), StringEntry(getOfferAddressToKey(offerId), toAddress), StringEntry(getOfferOfferedAssetKey(offerId, 0), toBase58String(valueOrElse(firstPayment.assetId, toBytes("WAVES")))), IntegerEntry(getOfferOfferedAmountKey(offerId, 0), firstPayment.amount)]
5755 }
5856
5957
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let offerIdKey = "$OFFER_NUMBER"
55
66 let testKey = "$TEST"
77
88 let offerOpenStatus = 1
99
1010 let offerCanceledStatus = 2
1111
1212 let offerAcceptedStatus = 3
1313
1414 let offerRejectedStatus = 4
1515
1616 func getOfferStatusKey (offerId) = (toString(offerId) + "_status")
1717
1818
1919 func getOfferAddressFromKey (offerId) = (toString(offerId) + "_from")
2020
2121
2222 func getOfferAddressToKey (offerId) = (toString(offerId) + "_to")
2323
2424
2525 func getOfferOfferedAssetKey (offerId,itemNumber) = ((toString(offerId) + toString(itemNumber)) + "_offered_asset_id")
2626
2727
2828 func getOfferOfferedAmountKey (offerId,itemNumber) = ((toString(offerId) + toString(itemNumber)) + "_offered_asset_amount")
2929
3030
3131 func getOfferAskedAssetKey (offerId,itemNumber) = ((toString(offerId) + toString(itemNumber)) + "_asked_asset_id")
3232
3333
3434 func getOfferAskedAmountKey (offerId,itemNumber) = ((toString(offerId) + toString(itemNumber)) + "_asked_asset_amount")
3535
3636
3737 func tryGetInteger (key) = {
3838 let val = match getInteger(this, key) {
3939 case b: Int =>
4040 b
4141 case _ =>
4242 0
4343 }
4444 val
4545 }
4646
4747
4848 @Callable(i)
4949 func createOffer (toAddress,asset) = {
5050 let offerId = tryGetInteger(offerIdKey)
5151 let firstPayment = value(i.payments[0])
52- if (if (!(isDefined(firstPayment)))
53- then !(isDefined(firstPayment.assetId))
54- else false)
52+ if (!(isDefined(firstPayment)))
5553 then throw("no payment")
56- else [IntegerEntry(getOfferStatusKey(offerId), offerOpenStatus), StringEntry(getOfferAddressFromKey(offerId), toBase58String(i.caller.bytes)), StringEntry(getOfferAddressToKey(offerId), toAddress), StringEntry(getOfferOfferedAssetKey(offerId, 0), toBase58String(value(firstPayment.assetId))), IntegerEntry(getOfferOfferedAmountKey(offerId, 0), firstPayment.amount)]
54+ else [IntegerEntry(getOfferStatusKey(offerId), offerOpenStatus), StringEntry(getOfferAddressFromKey(offerId), toBase58String(i.caller.bytes)), StringEntry(getOfferAddressToKey(offerId), toAddress), StringEntry(getOfferOfferedAssetKey(offerId, 0), toBase58String(valueOrElse(firstPayment.assetId, toBytes("WAVES")))), IntegerEntry(getOfferOfferedAmountKey(offerId, 0), firstPayment.amount)]
5755 }
5856
5957
6058
6159 @Callable(i)
6260 func cancelOffer (offerId) = {
6361 let offerStatus = tryGetInteger(getOfferStatusKey(offerId))
6462 if ((offerStatus != offerOpenStatus))
6563 then throw("offer status must be open")
6664 else {
6765 let addressFrom = getStringValue(this, getOfferAddressFromKey(offerId))
6866 let callerStr = toBase58String(i.caller.bytes)
6967 if ((addressFrom != callerStr))
7068 then throw("offer must be made by caller")
7169 else [IntegerEntry(getOfferStatusKey(offerId), offerCanceledStatus)]
7270 }
7371 }
7472
7573
7674
7775 @Callable(i)
7876 func acceptOffer (offerId) = {
7977 let offerStatus = tryGetInteger(getOfferStatusKey(offerId))
8078 if ((offerStatus != offerOpenStatus))
8179 then throw("offer status must be open")
8280 else {
8381 let addressTo = getStringValue(this, getOfferAddressToKey(offerId))
8482 let callerStr = toBase58String(i.caller.bytes)
8583 if ((addressTo != callerStr))
8684 then throw("offer must be made to caller")
8785 else [IntegerEntry(getOfferStatusKey(offerId), offerAcceptedStatus)]
8886 }
8987 }
9088
9189
9290
9391 @Callable(i)
9492 func rejectOffer (offerId) = {
9593 let offerStatus = tryGetInteger(getOfferStatusKey(offerId))
9694 if ((offerStatus != offerOpenStatus))
9795 then throw("offer status must be open")
9896 else {
9997 let addressTo = getStringValue(this, getOfferAddressToKey(offerId))
10098 let callerStr = toBase58String(i.caller.bytes)
10199 if ((addressTo != callerStr))
102100 then throw("offer must be made to caller")
103101 else [IntegerEntry(getOfferStatusKey(offerId), offerRejectedStatus)]
104102 }
105103 }
106104
107105

github/deemru/w8io/873ac7e 
165.47 ms