tx · ANv7UfhHbmnwXwBnAtiGcCm3iydUozn2Dx5vNzZ9Qvw3

3N4bt53eU7kwBbhAkh2KFYajCc1kAtu9TY8:  -0.01400000 Waves

2022.03.17 10:20 [1967631] smart account 3N4bt53eU7kwBbhAkh2KFYajCc1kAtu9TY8 > SELF 0.00000000 Waves

{ "type": 13, "id": "ANv7UfhHbmnwXwBnAtiGcCm3iydUozn2Dx5vNzZ9Qvw3", "fee": 1400000, "feeAssetId": null, "timestamp": 1647501655282, "version": 2, "chainId": 84, "sender": "3N4bt53eU7kwBbhAkh2KFYajCc1kAtu9TY8", "senderPublicKey": "6so6qVTu5xitJ3xkhqQ3AiC1noyJFbQF84JTjfW1uZTr", "proofs": [ "3fF24mxsf8DGU2m1gkkAjAmRN8zdFthqB38c1zwbaGpZ8krtZG1sS7CW1Kf1E6JhrEU2htU3A9VfF2VzDMoGMyX8" ], "script": "base64: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", "height": 1967631, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HH7i8rSCfVRxS1EukEiTAzFgHjYnwwq43TegwfjHRJKH Next: none Diff:
OldNewDifferences
7272
7373 @Callable(i)
7474 func buy (assetIdString,isTradable,newPrice) = {
75- let assetId = i.caller.bytes
75+ let assetId = fromBase58String(assetIdString)
7676 let callerAddressString = toBase58String(i.caller.bytes)
7777 let callerAddress = Address(i.caller.bytes)
7878 let ownerKey = getTokenOwnerKey(assetId)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let founder = Address(base58'3NAgQzjC1xnhXV6cEp38eJ2vjYAjBUaaLQm')
55
66 let CommissionPercent = 5
77
88 let StatusNa = "NOT_AVAILABLE"
99
1010 let StatusTradable = "TRADABLE"
1111
1212 let StatusNotTradable = "NOT_TRADABLE"
1313
1414 func getTokenOwnerKey (token) = ("token_owner_" + toBase58String(token))
1515
1616
1717 func getTokenStatusKey (token) = ("token_status_" + toBase58String(token))
1818
1919
2020 func getTokenPriceKey (token) = ("token_price_" + toBase58String(token))
2121
2222
2323 func boolToStatus (value) = if ((value == true))
2424 then StatusTradable
2525 else StatusNotTradable
2626
2727
2828 @Callable(i)
2929 func mint (ownerAddress,name,description,isTradable,price) = if ((founder != i.caller))
3030 then throw("Method only for founder")
3131 else {
3232 let asset = Issue(name, description, 1, 0, false)
3333 let assetId = calculateAssetId(asset)
3434 [StringEntry(getTokenOwnerKey(assetId), ownerAddress), StringEntry(getTokenStatusKey(assetId), boolToStatus(isTradable)), IntegerEntry(getTokenPriceKey(assetId), price), asset]
3535 }
3636
3737
3838
3939 @Callable(i)
4040 func pickUp (assetIdString) = {
4141 let assetId = fromBase58String(assetIdString)
4242 let ownerKey = getTokenOwnerKey(assetId)
4343 let statusKey = getTokenStatusKey(assetId)
4444 let realOwner = Address(fromBase58String(getStringValue(ownerKey)))
4545 let status = getStringValue(statusKey)
4646 if (if (if ((i.caller == founder))
4747 then true
4848 else (i.caller == realOwner))
4949 then (status != StatusNa)
5050 else false)
5151 then [ScriptTransfer(realOwner, 1, assetId), StringEntry(getTokenOwnerKey(assetId), ""), StringEntry(getTokenStatusKey(assetId), StatusNa), IntegerEntry(getTokenPriceKey(assetId), 0)]
5252 else throw("Only owner and founder can pick it up")
5353 }
5454
5555
5656
5757 @Callable(i)
5858 func setTokenInfo (assetIdString,isTradable,price) = {
5959 let assetId = fromBase58String(assetIdString)
6060 let ownerKey = getTokenOwnerKey(assetId)
6161 let statusKey = getTokenStatusKey(assetId)
6262 let realOwner = Address(fromBase58String(getStringValue(ownerKey)))
6363 let status = getStringValue(statusKey)
6464 if (if ((i.caller == realOwner))
6565 then (status != StatusNa)
6666 else false)
6767 then [StringEntry(getTokenStatusKey(assetId), boolToStatus(isTradable)), IntegerEntry(getTokenPriceKey(assetId), price)]
6868 else throw("Only owner can set token trade info")
6969 }
7070
7171
7272
7373 @Callable(i)
7474 func buy (assetIdString,isTradable,newPrice) = {
75- let assetId = i.caller.bytes
75+ let assetId = fromBase58String(assetIdString)
7676 let callerAddressString = toBase58String(i.caller.bytes)
7777 let callerAddress = Address(i.caller.bytes)
7878 let ownerKey = getTokenOwnerKey(assetId)
7979 let realOwner = Address(fromBase58String(getStringValue(ownerKey)))
8080 if (if ((size(i.payments) == 0))
8181 then true
8282 else (i.caller == realOwner))
8383 then throw("Payment must be attached and you should not be the asset owner")
8484 else {
8585 let pmt = i.payments[0]
8686 if (isDefined(pmt.assetId))
8787 then throw("This function accepts WAVES tokens only")
8888 else {
8989 let currentPrice = getIntegerValue(getTokenPriceKey(assetId))
9090 let onePercent = (currentPrice / 100)
9191 let totalSum = (onePercent * (100 + CommissionPercent))
9292 let realCommission = (totalSum - currentPrice)
9393 if ((pmt.amount != totalSum))
9494 then throw("Incorrect buy sum")
9595 else [ScriptTransfer(realOwner, currentPrice, unit), ScriptTransfer(founder, realCommission, unit), StringEntry(getTokenOwnerKey(assetId), callerAddressString), StringEntry(getTokenStatusKey(assetId), boolToStatus(isTradable)), IntegerEntry(getTokenPriceKey(assetId), newPrice)]
9696 }
9797 }
9898 }
9999
100100
101101 @Verifier(tx)
102102 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
103103

github/deemru/w8io/873ac7e 
30.08 ms