tx · 3JyvVexJAg7yTwqPJGPyVDigVgXafJq8mULgu5T62eat

3MrDcz4LFFjPhXdtu7YCqFSnHc3pD1tcWLa:  -0.01400000 Waves

2019.08.17 12:31 [634920] smart account 3MrDcz4LFFjPhXdtu7YCqFSnHc3pD1tcWLa > SELF 0.00000000 Waves

{ "type": 13, "id": "3JyvVexJAg7yTwqPJGPyVDigVgXafJq8mULgu5T62eat", "fee": 1400000, "feeAssetId": null, "timestamp": 1566034329651, "version": 1, "sender": "3MrDcz4LFFjPhXdtu7YCqFSnHc3pD1tcWLa", "senderPublicKey": "DMndfYeRYfHnVPek52VfuzXJS3A6UJRZrSJX6PMqMMjD", "proofs": [ "2Fy1Hppi2dodYnc8AAKah1YQxzXXkFdFYCXBntbR7fZMq6Rwq6TGS2UwPTVSeUYZ5gmBpRBuSss5UbMy9z3qEggo" ], "script": "base64:AAIDAAAAAAAAAAAAAAAHAAAAAAx3YXZlc0Fzc2V0SWQBAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAhnZXRQcmljZQAAAAEAAAAEZGF0YQkABLEAAAABCQAAyQAAAAIFAAAABGRhdGEAAAAAAAAAAAgBAAAACGdldFN0b2NrAAAAAQAAAARkYXRhCQAEsQAAAAEJAADJAAAAAgkAAMoAAAACBQAAAARkYXRhAAAAAAAAAAAIAAAAAAAAAAAIAQAAAA5nZXRBbW91bnRBc3NldAAAAAEAAAAEZGF0YQkAAMkAAAACCQAAygAAAAIFAAAABGRhdGEJAABkAAAAAgkAAGQAAAACAAAAAAAAAAAIAAAAAAAAAAAIAAAAAAAAAAAgAAAAAAAAAAAgAQAAAAlnZXRTZWxsZXIAAAABAAAABGRhdGEJAADKAAAAAgUAAAAEZGF0YQkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgAAAAAAAAAACAAAAAAAAAAACAAAAAAAAAAAIAAAAAAAAAAAIAEAAAANZ2V0UHJpY2VBc3NldAAAAAEAAAAEZGF0YQQAAAACcHIJAADJAAAAAgkAAMoAAAACBQAAAARkYXRhCQAAZAAAAAIAAAAAAAAAAAgAAAAAAAAAAAgAAAAAAAAAACADCQAAAAAAAAIFAAAAAnByBQAAAAx3YXZlc0Fzc2V0SWQFAAAABHVuaXQFAAAAAnByAQAAAAlzZXJpYWxpemUAAAAGAAAABWxvdElkAAAABXByaWNlAAAABXN0b2NrAAAACnByaWNlQXNzZXQAAAALYW1vdW50QXNzZXQAAAAGc2VsbGVyBAAAAAppZEFzU3RyaW5nBAAAAAckbWF0Y2gwBQAAAAVsb3RJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJidgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAJidgkBAAAABXRocm93AAAAAAQAAAAPcHJpY2VBc3NldEJ5dGVzBAAAAAckbWF0Y2gwBQAAAApwcmljZUFzc2V0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF1BQAAAAckbWF0Y2gwBQAAAAx3YXZlc0Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmJ2BQAAAAckbWF0Y2gwBQAAAAJidgkBAAAABXRocm93AAAAAAkBAAAACURhdGFFbnRyeQAAAAIFAAAACmlkQXNTdHJpbmcJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAZoAAAABBQAAAAVwcmljZQkAAZoAAAABBQAAAAVzdG9jawUAAAAPcHJpY2VBc3NldEJ5dGVzBQAAAAthbW91bnRBc3NldAUAAAAGc2VsbGVyAAAAAwAAAAFpAQAAAARzZWxsAAAAAgAAAAVwcmljZQAAAApwcmljZUFzc2V0BAAAAAFwCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDAwkAAAAAAAACCAUAAAABcAAAAAdhc3NldElkBQAAAAR1bml0BgkAAAAAAAACCAUAAAABcAAAAAdhc3NldElkBQAAAAx3YXZlc0Fzc2V0SWQJAAACAAAAAQIAAAAWSW52YWxpZCBhc3NldCB0byBzZWxsLgMJAQAAAAIhPQAAAAIJAADIAAAAAQUAAAAKcHJpY2VBc3NldAAAAAAAAAAAIAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAPSW52YWxpZCBhc3NldDogCQACWAAAAAEFAAAACnByaWNlQXNzZXQCAAAAKSwgZXhwZWN0ZWQgcHJpY2UgYXNzZXQgc2l6ZSBzaG91bGQgYmUgMzIuAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAPSW52YWxpZCBwcmljZTogCQABpAAAAAEFAAAABXByaWNlAgAAAC0sIGV4cGVjdGVkIHByaWNlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyby4DCQAAZwAAAAIAAAAAAAAAAAAIBQAAAAFwAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAZSW52YWxpZCBhbW91bnQgZm9yIHNlbGw6IAkAAaQAAAABCAUAAAABcAAAAAZhbW91bnQCAAAALiwgZXhwZWN0ZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyby4JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACXNlcmlhbGl6ZQAAAAYIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAABXByaWNlCAUAAAABcAAAAAZhbW91bnQFAAAACnByaWNlQXNzZXQJAQAAAAdleHRyYWN0AAAAAQgJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAAAAAdhc3NldElkCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAA25pbAAAAAFpAQAAAAZjYW5jZWwAAAABAAAABWxvdElkBAAAAARkYXRhCQEAAAAHZXh0cmFjdAAAAAEJAAQcAAAAAgUAAAAEdGhpcwUAAAAFbG90SWQEAAAABXByaWNlCQEAAAAIZ2V0UHJpY2UAAAABBQAAAARkYXRhBAAAAAVzdG9jawkBAAAACGdldFN0b2NrAAAAAQUAAAAEZGF0YQQAAAAKcHJpY2VBc3NldAkBAAAADWdldFByaWNlQXNzZXQAAAABBQAAAARkYXRhBAAAAAthbW91bnRBc3NldAkBAAAADmdldEFtb3VudEFzc2V0AAAAAQUAAAAEZGF0YQQAAAAGc2VsbGVyCQEAAAAJZ2V0U2VsbGVyAAAAAQUAAAAEZGF0YQMJAQAAAAIhPQAAAAIFAAAABnNlbGxlcggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAH09ubHkgc2VsbGVyIGNhbiBjYW5jZWwgdGhlIGxvdC4JAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlzZXJpYWxpemUAAAAGBQAAAAVsb3RJZAUAAAAFcHJpY2UAAAAAAAAAAAAFAAAACnByaWNlQXNzZXQFAAAAC2Ftb3VudEFzc2V0BQAAAAZzZWxsZXIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAZzZWxsZXIFAAAABXN0b2NrBQAAAAthbW91bnRBc3NldAUAAAADbmlsAAAAAWkBAAAAA2J1eQAAAAIAAAAFbG90SWQAAAALYW1vdW50VG9CdXkEAAAABGRhdGEJAQAAAAdleHRyYWN0AAAAAQkABBwAAAACBQAAAAR0aGlzBQAAAAVsb3RJZAQAAAAFcHJpY2UJAQAAAAhnZXRQcmljZQAAAAEFAAAABGRhdGEEAAAABXN0b2NrCQEAAAAIZ2V0U3RvY2sAAAABBQAAAARkYXRhBAAAAApwcmljZUFzc2V0CQEAAAANZ2V0UHJpY2VBc3NldAAAAAEFAAAABGRhdGEEAAAAC2Ftb3VudEFzc2V0CQEAAAAOZ2V0QW1vdW50QXNzZXQAAAABBQAAAARkYXRhBAAAAAZzZWxsZXIJAQAAAAlnZXRTZWxsZXIAAAABBQAAAARkYXRhBAAAAAFwCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABXN0b2NrCQAAAgAAAAECAAAALUxvdCBpcyBjbG9zZWQgb3IgY2FuY2VsbGVkLCAwIGl0ZW1zIGluIHN0b2NrLgMJAAAAAAAAAggFAAAAAXAAAAAHYXNzZXRJZAUAAAAMd2F2ZXNBc3NldElkCQAAAgAAAAECAAAAFkludmFsaWQgcGF5bWVudCBhc3NldC4DCQAAZwAAAAIAAAAAAAAAAAAFAAAAC2Ftb3VudFRvQnV5CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABdJbnZhbGlkIGFtb3VudCB0byBidXk6IAkAAaQAAAABBQAAAAthbW91bnRUb0J1eQIAAAAuLCBleHBlY3RlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgMJAQAAAAIhPQAAAAIJAABoAAAAAgUAAAALYW1vdW50VG9CdXkFAAAABXByaWNlCAUAAAABcAAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABhJbnZhbGlkIHBheW1lbnQgYW1vdW50OiAJAAGkAAAAAQgFAAAAAXAAAAAGYW1vdW50AgAAAB0sIGV4cGVjdGVkIGFtb3VudCBzaG91bGQgYmU6IAkAAaQAAAABCQAAaAAAAAIFAAAAC2Ftb3VudFRvQnV5BQAAAAVwcmljZQIAAAABLgMJAABmAAAAAgUAAAALYW1vdW50VG9CdXkFAAAABXN0b2NrCQAAAgAAAAECAAAAGk5vdCBlbm91Z2ggaXRlbXMgaW4gc3RvY2suAwkBAAAAAiE9AAAAAgUAAAAKcHJpY2VBc3NldAgFAAAAAXAAAAAHYXNzZXRJZAkAAAIAAAABAgAAABZJbnZhbGlkIHBheW1lbnQgYXNzZXQuCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJc2VyaWFsaXplAAAABgUAAAAFbG90SWQFAAAABXByaWNlCQAAZQAAAAIFAAAABXN0b2NrBQAAAAthbW91bnRUb0J1eQUAAAAKcHJpY2VBc3NldAUAAAALYW1vdW50QXNzZXQFAAAABnNlbGxlcgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAALYW1vdW50VG9CdXkFAAAAC2Ftb3VudEFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAABnNlbGxlcgUAAAAFcHJpY2UFAAAACnByaWNlQXNzZXQFAAAAA25pbAAAAAA6h7OJ", "chainId": 84, "height": 634920, "spentComplexity": 0 } View: original | compacted Prev: 6rr5gB1aUUUfoLkEUaB8v9sF6Ry6sofR6sK8StZdPD5u Next: none Diff:
OldNewDifferences
6565 @Callable(i)
6666 func cancel (lotId) = {
6767 let data = extract(getBinary(this, lotId))
68- let price = toInt(take(data, 8))
69- let amount = toInt(take(drop(data, 0), 8))
70- let priceAsset = take(drop(data, (8 + 8)), 32)
71- let amountAsset = take(drop(data, ((8 + 8) + 32)), 32)
72- let seller = drop(data, (((8 + 8) + 32) + 32))
68+ let price = getPrice(data)
69+ let stock = getStock(data)
70+ let priceAsset = getPriceAsset(data)
71+ let amountAsset = getAmountAsset(data)
72+ let seller = getSeller(data)
7373 if ((seller != i.callerPublicKey))
7474 then throw("Only seller can cancel the lot.")
75- else ScriptResult(WriteSet([serialize(lotId, price, 0, priceAsset, amountAsset, seller)]), TransferSet([ScriptTransfer(addressFromPublicKey(seller), amount, amountAsset)]))
75+ else ScriptResult(WriteSet([serialize(lotId, price, 0, priceAsset, amountAsset, seller)]), TransferSet([ScriptTransfer(addressFromPublicKey(seller), stock, amountAsset)]))
7676 }
7777
7878
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wavesAssetId = base58'11111111111111111111111111111111'
55
66 func getPrice (data) = toInt(take(data, 8))
77
88
99 func getStock (data) = toInt(take(drop(data, 8), 8))
1010
1111
1212 func getAmountAsset (data) = take(drop(data, ((8 + 8) + 32)), 32)
1313
1414
1515 func getSeller (data) = drop(data, (((8 + 8) + 32) + 32))
1616
1717
1818 func getPriceAsset (data) = {
1919 let pr = take(drop(data, (8 + 8)), 32)
2020 if ((pr == wavesAssetId))
2121 then unit
2222 else pr
2323 }
2424
2525
2626 func serialize (lotId,price,stock,priceAsset,amountAsset,seller) = {
2727 let idAsString = match lotId {
2828 case s: String =>
2929 s
3030 case bv: ByteVector =>
3131 toBase58String(bv)
3232 case _ =>
3333 throw()
3434 }
3535 let priceAssetBytes = match priceAsset {
3636 case u: Unit =>
3737 wavesAssetId
3838 case bv: ByteVector =>
3939 bv
4040 case _ =>
4141 throw()
4242 }
4343 DataEntry(idAsString, ((((toBytes(price) + toBytes(stock)) + priceAssetBytes) + amountAsset) + seller))
4444 }
4545
4646
4747 @Callable(i)
4848 func sell (price,priceAsset) = {
4949 let p = extract(i.payment)
5050 if (if ((p.assetId == unit))
5151 then true
5252 else (p.assetId == wavesAssetId))
5353 then throw("Invalid asset to sell.")
5454 else if ((size(priceAsset) != 32))
5555 then throw((("Invalid asset: " + toBase58String(priceAsset)) + ", expected price asset size should be 32."))
5656 else if ((0 >= price))
5757 then throw((("Invalid price: " + toString(price)) + ", expected price should be greater than zero."))
5858 else if ((0 >= p.amount))
5959 then throw((("Invalid amount for sell: " + toString(p.amount)) + ", expected amount should be greater than zero."))
6060 else WriteSet([serialize(i.transactionId, price, p.amount, priceAsset, extract(extract(i.payment).assetId), i.callerPublicKey)])
6161 }
6262
6363
6464
6565 @Callable(i)
6666 func cancel (lotId) = {
6767 let data = extract(getBinary(this, lotId))
68- let price = toInt(take(data, 8))
69- let amount = toInt(take(drop(data, 0), 8))
70- let priceAsset = take(drop(data, (8 + 8)), 32)
71- let amountAsset = take(drop(data, ((8 + 8) + 32)), 32)
72- let seller = drop(data, (((8 + 8) + 32) + 32))
68+ let price = getPrice(data)
69+ let stock = getStock(data)
70+ let priceAsset = getPriceAsset(data)
71+ let amountAsset = getAmountAsset(data)
72+ let seller = getSeller(data)
7373 if ((seller != i.callerPublicKey))
7474 then throw("Only seller can cancel the lot.")
75- else ScriptResult(WriteSet([serialize(lotId, price, 0, priceAsset, amountAsset, seller)]), TransferSet([ScriptTransfer(addressFromPublicKey(seller), amount, amountAsset)]))
75+ else ScriptResult(WriteSet([serialize(lotId, price, 0, priceAsset, amountAsset, seller)]), TransferSet([ScriptTransfer(addressFromPublicKey(seller), stock, amountAsset)]))
7676 }
7777
7878
7979
8080 @Callable(i)
8181 func buy (lotId,amountToBuy) = {
8282 let data = extract(getBinary(this, lotId))
8383 let price = getPrice(data)
8484 let stock = getStock(data)
8585 let priceAsset = getPriceAsset(data)
8686 let amountAsset = getAmountAsset(data)
8787 let seller = getSeller(data)
8888 let p = extract(i.payment)
8989 if ((0 >= stock))
9090 then throw("Lot is closed or cancelled, 0 items in stock.")
9191 else if ((p.assetId == wavesAssetId))
9292 then throw("Invalid payment asset.")
9393 else if ((0 >= amountToBuy))
9494 then throw((("Invalid amount to buy: " + toString(amountToBuy)) + ", expected amount should be greater than zero."))
9595 else if (((amountToBuy * price) != p.amount))
9696 then throw((((("Invalid payment amount: " + toString(p.amount)) + ", expected amount should be: ") + toString((amountToBuy * price))) + "."))
9797 else if ((amountToBuy > stock))
9898 then throw("Not enough items in stock.")
9999 else if ((priceAsset != p.assetId))
100100 then throw("Invalid payment asset.")
101101 else ScriptResult(WriteSet([serialize(lotId, price, (stock - amountToBuy), priceAsset, amountAsset, seller)]), TransferSet([ScriptTransfer(i.caller, amountToBuy, amountAsset), ScriptTransfer(addressFromPublicKey(seller), price, priceAsset)]))
102102 }
103103
104104

github/deemru/w8io/873ac7e 
24.60 ms