tx · DJxPtPwZ2YtX5yPCedsi4tcQCctmbyM6xTmxQcJojYNa 3NCTUyjM4SX4hK2kaFTkYv4J2fzcQHtvSjv: -0.01000000 Waves 2020.06.05 09:53 [1029617] smart account 3NCTUyjM4SX4hK2kaFTkYv4J2fzcQHtvSjv > SELF 0.00000000 Waves
{ "type": 13, "id": "DJxPtPwZ2YtX5yPCedsi4tcQCctmbyM6xTmxQcJojYNa", "fee": 1000000, "feeAssetId": null, "timestamp": 1591339974432, "version": 1, "sender": "3NCTUyjM4SX4hK2kaFTkYv4J2fzcQHtvSjv", "senderPublicKey": "CCEAkP4AnTM1HmKyRheQLmgNxPKACsL5hcH72JUeCiDJ", "proofs": [ "4tE1C9J9t61phbKkitU4FsE8nRTzi3YshxTHBoCQBKCUTSmkB6sLbWWEhSyMVnsf2KP18SRocLteokiCMGiFBxLj" ], "script": "base64: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", "chainId": 84, "height": 1029617, "spentComplexity": 0 } View: original | compacted Prev: none Next: AKMY7v97crvGGitH7T6g3HesqhWg9s3jaXi68xVu6MMw Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let ownerPublicKey = base58'CCEAkP4AnTM1HmKyRheQLmgNxPKACsL5hcH72JUeCiDJ' | |
5 | + | ||
6 | + | func randomizer (inv) = { | |
7 | + | let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height)) | |
8 | + | toUtf8String(sha256(rand)) | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func offerErrorHandler (token,amount,price,type,inv) = { | |
13 | + | let payment = extract(inv.payment) | |
14 | + | if (if (if (if (!(isDefined(token))) | |
15 | + | then true | |
16 | + | else !(isDefined(amount))) | |
17 | + | then true | |
18 | + | else !(isDefined(price))) | |
19 | + | then true | |
20 | + | else !(isDefined(type))) | |
21 | + | then throw("Invalid Transaction") | |
22 | + | else if (if ((type == "buy")) | |
23 | + | then !(isDefined(payment)) | |
24 | + | else false) | |
25 | + | then throw("No payment attached") | |
26 | + | else if (if (if ((type == "buy")) | |
27 | + | then isDefined(payment.amount) | |
28 | + | else false) | |
29 | + | then (payment.amount != amount) | |
30 | + | else false) | |
31 | + | then throw("Payment amount insufficient") | |
32 | + | else true | |
33 | + | } | |
34 | + | ||
35 | + | ||
36 | + | @Callable(i) | |
37 | + | func postOffer (tokenIn,amountIn,priceIn,typeIn) = if (offerErrorHandler(tokenIn, amountIn, priceIn, typeIn, i)) | |
38 | + | then { | |
39 | + | let offerId = randomizer(i) | |
40 | + | let offerDetails = { | |
41 | + | let token = tokenIn | |
42 | + | let amount = amountIn | |
43 | + | let price = priceIn | |
44 | + | let type = typeIn | |
45 | + | "Script Version 1" | |
46 | + | } | |
47 | + | WriteSet([DataEntry((offerId + "_status"), "open"), DataEntry((offerId + "_data"), offerDetails)]) | |
48 | + | } | |
49 | + | else throw("Conditions not met") | |
50 | + | ||
51 | + | ||
52 | + | @Verifier(tx) | |
53 | + | func verify () = match tx { | |
54 | + | case s: SetScriptTransaction => | |
55 | + | sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublicKey) | |
56 | + | case i: InvokeScriptTransaction => | |
57 | + | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
58 | + | case _ => | |
59 | + | false | |
60 | + | } | |
61 | + |
github/deemru/w8io/c3f4982 29.06 ms ◑