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