tx · EEjSXYunekwFJjcXwoL6ukoaJSJjLv3vCdi5cZYenKDf

3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r:  -0.04000000 Waves

2022.03.29 19:37 [1985469] smart account 3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r > SELF 0.00000000 Waves

{ "type": 13, "id": "EEjSXYunekwFJjcXwoL6ukoaJSJjLv3vCdi5cZYenKDf", "fee": 4000000, "feeAssetId": null, "timestamp": 1648571845603, "version": 2, "chainId": 84, "sender": "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r", "senderPublicKey": "GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY", "proofs": [ "5HBfqsg6yQRPGSi7oP7yonBD2QwxLYFTZcC9uDgrnjn87L8YymFqyh25FkDPiZpzaMvvqbXA9Xi4KFLa2GBiRagy" ], "script": "base64:AAIFAAAAAAAAABMIAhIFCgMICAESAwoBCBIDCgEIAAAABwAAAAAOZEFwcEFkZHJlc3NTdHICAAAAIzNONHZxVVhXdzh0ZjIzTERXRGJTRXBKWkg2ZGVudDNFVEZ1AAAAAA1kQXBwUHVibGljS2V5AQAAACCzTPDXKuB0zaBQL2OyxsOCbI4Rkb6W1CjA/1Wz1uFLVwAAAAALZEFwcEFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAADWRBcHBQdWJsaWNLZXkAAAAAEmhvbGRpbmdzQWRkcmVzc1N0cgIAAAAjM045Ujd1NDQ5WjFiNzZRcEpwOXUzZ3pQak1ZUVlucDNWN3IAAAAAEWhvbGRpbmdzUHVibGljS2V5AQAAACDl3SFFs6PsR+lqN3lF13al6d4vKwj2w7NM+AGJl9DbbwAAAAAPaG9sZGluZ3NBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAABFob2xkaW5nc1B1YmxpY0tleQAAAAAPdHJhbnNmZXJDb3N0UGN0AAAAAAAAAAAyAAAAAwAAAAFpAQAAABFhZGRPd25lckFuZEFtb3VudAAAAAMAAAAHb3duZXJJZAAAAAdhc3NldElkAAAABmFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFc2FsZV8FAAAAB2Fzc2V0SWQCAAAADl9vcmlnaW5hbE93bmVyBQAAAAdvd25lcklkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFc2FsZV8FAAAAB2Fzc2V0SWQCAAAAB19hbW91bnQFAAAABmFtb3VudAUAAAADbmlsAAAAAWkBAAAADXJldm9rZUZvclNhbGUAAAABAAAAB2Fzc2V0SWQEAAAACGNhbGxlcklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB293bmVySWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAICAAAABXNhbGVfBQAAAAdhc3NldElkAgAAAA5fb3JpZ2luYWxPd25lcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAIAAAAFdW5zZXQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgMJAQAAAAIhPQAAAAIFAAAACGNhbGxlcklkBQAAAAdvd25lcklkCQAAAgAAAAECAAAAE093bmVycyBkbyBub3QgbWF0Y2gEAAAAA3JlcwkAA/wAAAAEBQAAAAtkQXBwQWRkcmVzcwIAAAARYWRkT3duZXJBbmRBbW91bnQJAARMAAAAAgIAAAAACQAETAAAAAIFAAAAB2Fzc2V0SWQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAR1bml0AAAAAAAAAAAABQAAAANuaWwDCQAAAAAAAAIFAAAAA3JlcwUAAAADcmVzCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAD2J1eUZyb21Ib2xkaW5ncwAAAAEAAAAHYXNzZXRJZAQAAAAHb3duZXJJZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAFc2FsZV8FAAAAB2Fzc2V0SWQCAAAADl9vcmlnaW5hbE93bmVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AgAAAAV1bnNldAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF4BQAAAAckbWF0Y2gwBQAAAAF4CQAAAgAAAAECAAAAC01hdGNoIGVycm9yBAAAAA1wYXltZW50QW1vdW50CQEAAAALdmFsdWVPckVsc2UAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQAAAAAAAAAAAAEAAAABmFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAFc2FsZV8FAAAAB2Fzc2V0SWQCAAAAB19hbW91bnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQAAAAAAAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgMDCQAAAAAAAAIFAAAAB293bmVySWQCAAAABXVuc2V0BgkAAAAAAAACBQAAAAdvd25lcklkAgAAAAAJAAACAAAAAQIAAAAZT3JpZ2luYWwgb3duZXIgbm90IGZvdW5kIAMDCQAAAAAAAAIFAAAABmFtb3VudAAAAAAAAAAAAAYJAABmAAAAAgUAAAAGYW1vdW50BQAAAA1wYXltZW50QW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAM1BheW1lbnQgYW5kIGFtb3VudCBkbyBub3QgbWF0Y2guIFRoaXMgYXNzZXRzIGNvc3RzIAkAAaQAAAABBQAAAAZhbW91bnQCAAAADWJ1dCB5b3Ugc2VudCAJAAGkAAAAAQUAAAANcGF5bWVudEFtb3VudAQAAAADcmVzCQAD/AAAAAQFAAAAC2RBcHBBZGRyZXNzAgAAAAxmaW5hbGl6ZVNhbGUJAARMAAAAAgUAAAAHYXNzZXRJZAkABEwAAAACBQAAAAdvd25lcklkBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAABHVuaXQAAAAAAAAAAAAFAAAAA25pbAMJAAAAAAAAAgUAAAADcmVzBQAAAANyZXMEAAAACHRyYW5zZmVyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVzYWxlXwUAAAAHYXNzZXRJZAIAAAAOX29yaWdpbmFsT3duZXICAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABXNhbGVfBQAAAAdhc3NldElkAgAAAAdfYW1vdW50AAAAAAAAAAAABQAAAANuaWwDCQEAAAACIT0AAAACBQAAAAdvd25lcklkBQAAABJob2xkaW5nc0FkZHJlc3NTdHIEAAAAGGFtb3VudFRvUmVtYWluSW5Ib2xkaW5ncwkAAGkAAAACBQAAAA1wYXltZW50QW1vdW50BQAAAA90cmFuc2ZlckNvc3RQY3QEAAAAF2Ftb3VudFRvVHJhbnNmZXJUb093bmVyCQAAZQAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAGGFtb3VudFRvUmVtYWluSW5Ib2xkaW5ncwQAAAAMb3duZXJBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAHb3duZXJJZAkABE4AAAACBQAAAAh0cmFuc2ZlcgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxvd25lckFkZHJlc3MFAAAAF2Ftb3VudFRvVHJhbnNmZXJUb093bmVyBQAAAAR1bml0BQAAAANuaWwFAAAACHRyYW5zZmVyCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkGCQAAAAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkFAAAAD2hvbGRpbmdzQWRkcmVzcwYJAAAAAAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQUAAAALZEFwcEFkZHJlc3MQlpUF", "height": 1985469, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Evp4yLCrWpybUhEGMsEkeRpZwKL2jnKpsQVctGVpUAsu Next: BDkMF8YL9aCgQW2nKnhiVqMJK5KsJei2P35xPFFGA4n7 Diff:
OldNewDifferences
7171 else (amount > paymentAmount))
7272 then throw(((("Payment and amount do not match. This assets costs " + toString(amount)) + "but you sent ") + toString(paymentAmount)))
7373 else {
74- let transfer = [ScriptTransfer(i.caller, 1, fromBase58String(assetId)), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)]
75- if ((ownerId != holdingsAddressStr))
74+ let res = invoke(dAppAddress, "finalizeSale", [assetId, ownerId], [AttachedPayment(unit, 0)])
75+ if ((res == res))
7676 then {
77- let amountToRemainInHoldings = (paymentAmount / transferCostPct)
78- let amountToTransferToOwner = (paymentAmount - amountToRemainInHoldings)
79- let ownerAddress = Address(fromBase58String(ownerId))
80- (transfer ++ [ScriptTransfer(ownerAddress, amountToTransferToOwner, unit)])
77+ let transfer = [ScriptTransfer(i.caller, 1, fromBase58String(assetId)), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)]
78+ if ((ownerId != holdingsAddressStr))
79+ then {
80+ let amountToRemainInHoldings = (paymentAmount / transferCostPct)
81+ let amountToTransferToOwner = (paymentAmount - amountToRemainInHoldings)
82+ let ownerAddress = Address(fromBase58String(ownerId))
83+ (transfer ++ [ScriptTransfer(ownerAddress, amountToTransferToOwner, unit)])
84+ }
85+ else transfer
8186 }
82- else transfer
87+ else throw("Strict value is not equal to itself.")
8388 }
8489 }
8590
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let dAppAddressStr = "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu"
55
66 let dAppPublicKey = base58'D4v2S9mjah7eEEmuQVBNd4WipC3scs8V4PjuDBweWatE'
77
88 let dAppAddress = addressFromPublicKey(dAppPublicKey)
99
1010 let holdingsAddressStr = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
1111
1212 let holdingsPublicKey = base58'GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY'
1313
1414 let holdingsAddress = addressFromPublicKey(holdingsPublicKey)
1515
1616 let transferCostPct = 50
1717
1818 @Callable(i)
1919 func addOwnerAndAmount (ownerId,assetId,amount) = [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), IntegerEntry((("sale_" + assetId) + "_amount"), amount)]
2020
2121
2222
2323 @Callable(i)
2424 func revokeForSale (assetId) = {
2525 let callerId = toBase58String(i.caller.bytes)
2626 let ownerId = match getString(this, (("sale_" + assetId) + "_originalOwner")) {
2727 case _: Unit =>
2828 "unset"
2929 case x: String =>
3030 x
3131 case _ =>
3232 throw("Match error")
3333 }
3434 if ((callerId != ownerId))
3535 then throw("Owners do not match")
3636 else {
3737 let res = invoke(dAppAddress, "addOwnerAndAmount", ["", assetId, 0], [AttachedPayment(unit, 0)])
3838 if ((res == res))
3939 then [ScriptTransfer(i.caller, 1, fromBase58String(assetId))]
4040 else throw("Strict value is not equal to itself.")
4141 }
4242 }
4343
4444
4545
4646 @Callable(i)
4747 func buyFromHoldings (assetId) = {
4848 let ownerId = match getString(this, (("sale_" + assetId) + "_originalOwner")) {
4949 case _: Unit =>
5050 "unset"
5151 case x: String =>
5252 x
5353 case _ =>
5454 throw("Match error")
5555 }
5656 let paymentAmount = valueOrElse(i.payments[0].amount, 0)
5757 let amount = match getInteger(this, (("sale_" + assetId) + "_amount")) {
5858 case _: Unit =>
5959 0
6060 case x: Int =>
6161 x
6262 case _ =>
6363 throw("Match error")
6464 }
6565 if (if ((ownerId == "unset"))
6666 then true
6767 else (ownerId == ""))
6868 then throw("Original owner not found ")
6969 else if (if ((amount == 0))
7070 then true
7171 else (amount > paymentAmount))
7272 then throw(((("Payment and amount do not match. This assets costs " + toString(amount)) + "but you sent ") + toString(paymentAmount)))
7373 else {
74- let transfer = [ScriptTransfer(i.caller, 1, fromBase58String(assetId)), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)]
75- if ((ownerId != holdingsAddressStr))
74+ let res = invoke(dAppAddress, "finalizeSale", [assetId, ownerId], [AttachedPayment(unit, 0)])
75+ if ((res == res))
7676 then {
77- let amountToRemainInHoldings = (paymentAmount / transferCostPct)
78- let amountToTransferToOwner = (paymentAmount - amountToRemainInHoldings)
79- let ownerAddress = Address(fromBase58String(ownerId))
80- (transfer ++ [ScriptTransfer(ownerAddress, amountToTransferToOwner, unit)])
77+ let transfer = [ScriptTransfer(i.caller, 1, fromBase58String(assetId)), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)]
78+ if ((ownerId != holdingsAddressStr))
79+ then {
80+ let amountToRemainInHoldings = (paymentAmount / transferCostPct)
81+ let amountToTransferToOwner = (paymentAmount - amountToRemainInHoldings)
82+ let ownerAddress = Address(fromBase58String(ownerId))
83+ (transfer ++ [ScriptTransfer(ownerAddress, amountToTransferToOwner, unit)])
84+ }
85+ else transfer
8186 }
82- else transfer
87+ else throw("Strict value is not equal to itself.")
8388 }
8489 }
8590
8691
8792 @Verifier(tx)
8893 func verify () = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
8994 then true
9095 else (addressFromPublicKey(tx.senderPublicKey) == holdingsAddress))
9196 then true
9297 else (addressFromPublicKey(tx.senderPublicKey) == dAppAddress)
9398

github/deemru/w8io/169f3d6 
38.90 ms