tx · DhNWyQfPwKmVwyNpucFBSNvwCCaNafi1sAKRTyQdCA5U 3PB9UaxrAhUq2CvGkJUUbx69fs9ksjeYcY8: -0.01000000 Waves 2020.07.06 12:49 [2138442] smart account 3PB9UaxrAhUq2CvGkJUUbx69fs9ksjeYcY8 > SELF 0.00000000 Waves
{ "type": 13, "id": "DhNWyQfPwKmVwyNpucFBSNvwCCaNafi1sAKRTyQdCA5U", "fee": 1000000, "feeAssetId": null, "timestamp": 1594029015502, "version": 1, "sender": "3PB9UaxrAhUq2CvGkJUUbx69fs9ksjeYcY8", "senderPublicKey": "3h5LQVUXh7MZC1wPvcRQ3vq5nT4eDrqH4QrnMdw3k5zG", "proofs": [ "2zzS1dzcBRmX5ZxaY1cerb858KpAeoHEbuqin1Eqv4rHn2EAWSWRz72tUxCQxeR4G2NUNd2rNoEZHh1Dfxv1b9hi" ], "script": "base64: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", "chainId": 87, "height": 2138442, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | + | let assetId = base58'Crxd1YR2mmG28xf4JVJqn3wVdRXqiKsdWghmoGPTr9NT' | |
4 | + | let whiteListAddress = "3P5JZpTsUP1dgBmVQW53JR8JRQDr6dJiotY" | |
5 | + | match tx { | |
6 | + | case t: TransferTransaction => | |
7 | + | if ((t.assetId != assetId)) | |
8 | + | then sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey) | |
9 | + | else { | |
10 | + | let recipientAddress = toString(addressFromRecipient(t.recipient)) | |
11 | + | let whiteListAddressValue = addressFromStringValue(whiteListAddress) | |
12 | + | let addressIsAllowed = getBoolean(whiteListAddressValue, recipientAddress) | |
13 | + | let addressInWhiteList = match addressIsAllowed { | |
14 | + | case b: Boolean => | |
15 | + | (b == true) | |
16 | + | case _ => | |
17 | + | false | |
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") | |
26 | + | } | |
27 | + | case s: SetScriptTransaction => | |
28 | + | let assetIssuerPublicKey = extract(assetInfo(assetId)).issuerPublicKey | |
29 | + | if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) | |
30 | + | then sigVerify(tx.bodyBytes, tx.proofs[1], assetIssuerPublicKey) | |
31 | + | else false | |
32 | + | case b: BurnTransaction => | |
33 | + | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
34 | + | case i: InvokeScriptTransaction => | |
35 | + | let dappCalledAddress = toString(addressFromRecipient(i.dApp)) | |
36 | + | if ((dappCalledAddress != whiteListAddress)) | |
37 | + | then throw(((("You can call only dApp with address " + whiteListAddress) + ", but you're trying to call ") + dappCalledAddress)) | |
38 | + | else if ((sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) == false)) | |
39 | + | then throw("Transaction should be signed with users key") | |
40 | + | else true | |
41 | + | case _ => | |
42 | + | throw("Bad transaction type") | |
43 | + | } |
github/deemru/w8io/0e76f2f 30.34 ms ◑