tx · 48efv1TpfzhnXjMiFrRV49iyFePySZ9ogH6MSd7Bck6z
3N7Gg64FJ3ESaqn41qu1ete7zmzbmoP1AAV: -0.01400000 Waves
2021.12.10 14:59 [1828112] smart account 3N7Gg64FJ3ESaqn41qu1ete7zmzbmoP1AAV > SELF 0.00000000 Waves
{
"type": 13,
"id": "48efv1TpfzhnXjMiFrRV49iyFePySZ9ogH6MSd7Bck6z",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1639137523410,
"version": 2,
"chainId": 84,
"sender": "3N7Gg64FJ3ESaqn41qu1ete7zmzbmoP1AAV",
"senderPublicKey": "5amLtMwixiEesBDKPy9dkFWntG2fNxhTs5n69JbQE9F7",
"proofs": [
"3mgArwHENMWE3emskX1d3wuuZn9mtvAiga1iZ2ANu6WQtyKhwSXJwzv39fJ1m8fatBjC82yyqMXeoqqw3DYWmZm4"
],
"script": "base64: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",
"height": 1828112,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 2RrhLdF3EkWedR1ViV8qJJtNKQ8fL3HgB1Ps8VVYcLvn
Next: Hmji9iEkLZnTxTZFjbMzwfRBDfE6oaQ5G1sndtKEDWWf
Diff:
Old | New | | Differences |
---|
4 | 4 | | let token = base58'GZc7eKnq2KJwqetRmUzSqr2ZaCGseDZufSocz83sUNoo' |
---|
5 | 5 | | |
---|
6 | 6 | | let airdrop = Address(base58'3N7Gg64FJ3ESaqn41qu1ete7zmzbmoP1AAV') |
---|
| 7 | + | |
---|
| 8 | + | @Callable(i) |
---|
| 9 | + | func reset () = [DeleteEntry(toBase58String(i.caller.bytes))] |
---|
| 10 | + | |
---|
| 11 | + | |
---|
7 | 12 | | |
---|
8 | 13 | | @Callable(i) |
---|
9 | 14 | | func call (id58) = { |
---|
|
35 | 40 | | case _ => |
---|
36 | 41 | | true |
---|
37 | 42 | | } |
---|
| 43 | + | let currenttime = match blockInfoByHeight(height) { |
---|
| 44 | + | case block: BlockInfo => |
---|
| 45 | + | block.timestamp |
---|
| 46 | + | case _ => |
---|
| 47 | + | throw("Can't find block") |
---|
| 48 | + | } |
---|
38 | 49 | | let isprooved = if (if (if ((trtime > time)) |
---|
39 | 50 | | then true |
---|
40 | 51 | | else (callerAdress != trsender)) |
---|
|
50 | 61 | | then "received" |
---|
51 | 62 | | else "prooved" |
---|
52 | 63 | | if (isprooved) |
---|
53 | | - | then [StringEntry(toBase58String(i.caller.bytes), mess)] |
---|
| 64 | + | then [StringEntry(toBase58String(i.caller.bytes), toString(currenttime))] |
---|
54 | 65 | | else throw("not prooved") |
---|
55 | 66 | | } |
---|
56 | 67 | | else throw("Strict value is not equal to itself.") |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let token = base58'GZc7eKnq2KJwqetRmUzSqr2ZaCGseDZufSocz83sUNoo' |
---|
5 | 5 | | |
---|
6 | 6 | | let airdrop = Address(base58'3N7Gg64FJ3ESaqn41qu1ete7zmzbmoP1AAV') |
---|
| 7 | + | |
---|
| 8 | + | @Callable(i) |
---|
| 9 | + | func reset () = [DeleteEntry(toBase58String(i.caller.bytes))] |
---|
| 10 | + | |
---|
| 11 | + | |
---|
7 | 12 | | |
---|
8 | 13 | | @Callable(i) |
---|
9 | 14 | | func call (id58) = { |
---|
10 | 15 | | let balance = assetBalance(airdrop, token) |
---|
11 | 16 | | let dropamount = 100 |
---|
12 | 17 | | let isenough = if ((balance > dropamount)) |
---|
13 | 18 | | then true |
---|
14 | 19 | | else throw("not enough") |
---|
15 | 20 | | if ((isenough == isenough)) |
---|
16 | 21 | | then { |
---|
17 | 22 | | let id = fromBase58String(id58) |
---|
18 | 23 | | let callerAdress = Address(i.caller.bytes) |
---|
19 | 24 | | let time = 1639131654752 |
---|
20 | 25 | | let trtime = match transferTransactionById(id) { |
---|
21 | 26 | | case ttx: TransferTransaction => |
---|
22 | 27 | | ttx.timestamp |
---|
23 | 28 | | case _ => |
---|
24 | 29 | | throw("Can't find transaction") |
---|
25 | 30 | | } |
---|
26 | 31 | | let trsender = match transferTransactionById(id) { |
---|
27 | 32 | | case ttx: TransferTransaction => |
---|
28 | 33 | | ttx.sender |
---|
29 | 34 | | case _ => |
---|
30 | 35 | | throw("Can't find transaction") |
---|
31 | 36 | | } |
---|
32 | 37 | | let received = match getString(toBase58String(i.caller.bytes)) { |
---|
33 | 38 | | case a: String => |
---|
34 | 39 | | false |
---|
35 | 40 | | case _ => |
---|
36 | 41 | | true |
---|
37 | 42 | | } |
---|
| 43 | + | let currenttime = match blockInfoByHeight(height) { |
---|
| 44 | + | case block: BlockInfo => |
---|
| 45 | + | block.timestamp |
---|
| 46 | + | case _ => |
---|
| 47 | + | throw("Can't find block") |
---|
| 48 | + | } |
---|
38 | 49 | | let isprooved = if (if (if ((trtime > time)) |
---|
39 | 50 | | then true |
---|
40 | 51 | | else (callerAdress != trsender)) |
---|
41 | 52 | | then true |
---|
42 | 53 | | else received) |
---|
43 | 54 | | then false |
---|
44 | 55 | | else true |
---|
45 | 56 | | let mess = if ((trtime > time)) |
---|
46 | 57 | | then ("overtime: " + toString(trtime)) |
---|
47 | 58 | | else if ((callerAdress != trsender)) |
---|
48 | 59 | | then ((("incorrect sender: " + toString(callerAdress)) + " / ") + toString(trsender)) |
---|
49 | 60 | | else if (received) |
---|
50 | 61 | | then "received" |
---|
51 | 62 | | else "prooved" |
---|
52 | 63 | | if (isprooved) |
---|
53 | | - | then [StringEntry(toBase58String(i.caller.bytes), mess)] |
---|
| 64 | + | then [StringEntry(toBase58String(i.caller.bytes), toString(currenttime))] |
---|
54 | 65 | | else throw("not prooved") |
---|
55 | 66 | | } |
---|
56 | 67 | | else throw("Strict value is not equal to itself.") |
---|
57 | 68 | | } |
---|
58 | 69 | | |
---|
59 | 70 | | |
---|
60 | 71 | | @Verifier(tx) |
---|
61 | 72 | | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
62 | 73 | | |
---|