tx · 2bYGA7X5f2PviZm27AzRSFBATE3gcnmTzDGEajxvi8XT
3PMMhkehvBq5R5tAhCspsZU97r1cb9M4f8v: -0.01400000 Waves
2019.11.18 13:22 [1800725] smart account 3PMMhkehvBq5R5tAhCspsZU97r1cb9M4f8v > SELF 0.00000000 Waves
{
"type": 13,
"id": "2bYGA7X5f2PviZm27AzRSFBATE3gcnmTzDGEajxvi8XT",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1574072549016,
"version": 1,
"sender": "3PMMhkehvBq5R5tAhCspsZU97r1cb9M4f8v",
"senderPublicKey": "8ZfeBJWwoGb8uKRDxY5qy73mqXbEmutQ6QAUvxctphZ",
"proofs": [
"3Rko7EXF86Kv98Qwr8tV4iYQHfC3RDBAT5PwMgd6jiJYbYqgaaUKvHRgm13WCrgvoL1N7QG8i4wW4K3EYP7xeXs9",
"vxoE6JkMsX6eZTEY94NYScXwEMTaVdDVLU2yEuaqxYimYwWmsT3JwV2eqy6FzCjSyVWsFZm45ij4EBfh44CY6n2"
],
"script": "base64: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",
"chainId": 87,
"height": 1800725,
"spentComplexity": 0
}
View: original | compacted
Prev: 99BWDngao4qU9TkvLFt99HMoBqeiekUnMNPZiD6zEBBx
Next: BHveg4q1D4ZVGUY1D8BPnprKrzYPBp9zJwPUZGEbNycq
Diff:
Old | New | | Differences |
---|
8 | 8 | | then sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey) |
---|
9 | 9 | | else { |
---|
10 | 10 | | let recipientAddress = toString(addressFromRecipient(t.recipient)) |
---|
11 | | - | let addressIsAllowed = getBoolean(addressFromStringValue(whiteListAddress), recipientAddress) |
---|
12 | | - | match addressIsAllowed { |
---|
| 11 | + | let whiteListAddressValue = addressFromStringValue(whiteListAddress) |
---|
| 12 | + | let addressIsAllowed = getBoolean(whiteListAddressValue, recipientAddress) |
---|
| 13 | + | let addressInWhiteList = match addressIsAllowed { |
---|
13 | 14 | | case b: Boolean => |
---|
14 | 15 | | (b == true) |
---|
15 | 16 | | case _ => |
---|
16 | | - | throw("You can send this token only to white-listed addresses") |
---|
| 17 | + | false |
---|
17 | 18 | | } |
---|
| 19 | + | if (if (addressInWhiteList) |
---|
| 20 | + | then true |
---|
| 21 | + | else (recipientAddress == whiteListAddress)) |
---|
| 22 | + | then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) |
---|
| 23 | + | then true |
---|
| 24 | + | else throw("Signature is required") |
---|
| 25 | + | else throw("You can send this token only to white-listed addresses") |
---|
18 | 26 | | } |
---|
19 | 27 | | case s: SetScriptTransaction => |
---|
20 | 28 | | let assetIssuerPublicKey = extract(assetInfo(assetId)).issuerPublicKey |
---|
21 | 29 | | if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) |
---|
22 | 30 | | then sigVerify(tx.bodyBytes, tx.proofs[1], assetIssuerPublicKey) |
---|
23 | 31 | | else false |
---|
| 32 | + | case b: BurnTransaction => |
---|
| 33 | + | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
24 | 34 | | case i: InvokeScriptTransaction => |
---|
25 | 35 | | if ((toString(addressFromRecipient(i.dApp)) == whiteListAddress)) |
---|
26 | 36 | | then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 3 #-} |
---|
2 | 2 | | {-# CONTENT_TYPE EXPRESSION #-} |
---|
3 | 3 | | let assetId = base58'AAx7kicknEXkWUqSF1DKXp7bQHH6Z383Bw9H5v16MgFJ' |
---|
4 | 4 | | let whiteListAddress = "3PEvtRxPJyyps7cKRkLbKFAQ8qbdczpLkB9" |
---|
5 | 5 | | match tx { |
---|
6 | 6 | | case t: TransferTransaction => |
---|
7 | 7 | | if ((t.assetId != assetId)) |
---|
8 | 8 | | then sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey) |
---|
9 | 9 | | else { |
---|
10 | 10 | | let recipientAddress = toString(addressFromRecipient(t.recipient)) |
---|
11 | | - | let addressIsAllowed = getBoolean(addressFromStringValue(whiteListAddress), recipientAddress) |
---|
12 | | - | match addressIsAllowed { |
---|
| 11 | + | let whiteListAddressValue = addressFromStringValue(whiteListAddress) |
---|
| 12 | + | let addressIsAllowed = getBoolean(whiteListAddressValue, recipientAddress) |
---|
| 13 | + | let addressInWhiteList = match addressIsAllowed { |
---|
13 | 14 | | case b: Boolean => |
---|
14 | 15 | | (b == true) |
---|
15 | 16 | | case _ => |
---|
16 | | - | throw("You can send this token only to white-listed addresses") |
---|
| 17 | + | false |
---|
17 | 18 | | } |
---|
| 19 | + | if (if (addressInWhiteList) |
---|
| 20 | + | then true |
---|
| 21 | + | else (recipientAddress == whiteListAddress)) |
---|
| 22 | + | then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) |
---|
| 23 | + | then true |
---|
| 24 | + | else throw("Signature is required") |
---|
| 25 | + | else throw("You can send this token only to white-listed addresses") |
---|
18 | 26 | | } |
---|
19 | 27 | | case s: SetScriptTransaction => |
---|
20 | 28 | | let assetIssuerPublicKey = extract(assetInfo(assetId)).issuerPublicKey |
---|
21 | 29 | | if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) |
---|
22 | 30 | | then sigVerify(tx.bodyBytes, tx.proofs[1], assetIssuerPublicKey) |
---|
23 | 31 | | else false |
---|
| 32 | + | case b: BurnTransaction => |
---|
| 33 | + | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
24 | 34 | | case i: InvokeScriptTransaction => |
---|
25 | 35 | | if ((toString(addressFromRecipient(i.dApp)) == whiteListAddress)) |
---|
26 | 36 | | then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
27 | 37 | | else false |
---|
28 | 38 | | case _ => |
---|
29 | 39 | | throw("Bad transaction type") |
---|
30 | 40 | | } |
---|