tx · 4evDouvc8RbTxiiq7eC2gcc7q2CBhu3otiRADmupfN3e
3PDyB2dVQrezgVZ4AaURFbPHFyoLg4UDQaB: -0.01400000 Waves
2019.11.18 13:28 [1800730] smart account 3PDyB2dVQrezgVZ4AaURFbPHFyoLg4UDQaB > SELF 0.00000000 Waves
{
"type": 13,
"id": "4evDouvc8RbTxiiq7eC2gcc7q2CBhu3otiRADmupfN3e",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1574071493835,
"version": 1,
"sender": "3PDyB2dVQrezgVZ4AaURFbPHFyoLg4UDQaB",
"senderPublicKey": "56LSBSff1emHUCdcdBuFNFEnUttUibH82FtYrKDay6LA",
"proofs": [
"5heMtDWZhrhAja5x8c2iU3TchXugEcbPqNdh4J85zFQYaxyvRyHQoZtCY9886aLp1ev4aedCf33QgzDfdo3MztE2",
"4Kaig4R4uD5Ky88MiGZj4zbCEohCVvrXhnCWueBe7HzGzx1Cy3MSGn5kjHXsgoZjpgCmBnBTLLVz8YVBkrtLYA5z"
],
"script": "base64:AwQAAAAHYXNzZXRJZAEAAAAgiEW64ARXw/t+nKroLmO/NjYfHGv7F0WhqaxPCaX+jWkEAAAAEHdoaXRlTGlzdEFkZHJlc3MCAAAAIzNQRXZ0UnhQSnl5cHM3Y0tSa0xiS0ZBUThxYmRjenBMa0I5BAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIIBQAAAAF0AAAAB2Fzc2V0SWQFAAAAB2Fzc2V0SWQJAAH0AAAAAwgFAAAAAXQAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAF0AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAXQAAAAPc2VuZGVyUHVibGljS2V5BAAAABByZWNpcGllbnRBZGRyZXNzCQAEJQAAAAEJAAQkAAAAAQgFAAAAAXQAAAAJcmVjaXBpZW50BAAAABBhZGRyZXNzSXNBbGxvd2VkCQAEGwAAAAIJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAQd2hpdGVMaXN0QWRkcmVzcwUAAAAQcmVjaXBpZW50QWRkcmVzcwQAAAAHJG1hdGNoMQUAAAAQYWRkcmVzc0lzQWxsb3dlZAMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMQkAAAAAAAACBQAAAAFiBgkAAAIAAAABAgAAADZZb3UgY2FuIHNlbmQgdGhpcyB0b2tlbiBvbmx5IHRvIHdoaXRlLWxpc3RlZCBhZGRyZXNzZXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAFzBQAAAAckbWF0Y2gwBAAAABRhc3NldElzc3VlclB1YmxpY0tleQgJAQAAAAdleHRyYWN0AAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAAD2lzc3VlclB1YmxpY0tleQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAUYXNzZXRJc3N1ZXJQdWJsaWNLZXkHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQAAAABaQUAAAAHJG1hdGNoMAMJAAAAAAAAAgkABCUAAAABCQAEJAAAAAEIBQAAAAFpAAAABGRBcHAFAAAAEHdoaXRlTGlzdEFkZHJlc3MJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BwkAAAIAAAABAgAAABRCYWQgdHJhbnNhY3Rpb24gdHlwZfJPJqA=",
"chainId": 87,
"height": 1800730,
"spentComplexity": 0
}
View: original | compacted
Prev: GUDXwaKaJW8dWSDyPb5z3DjAF3Hpadj3BKdfHX1REfmb
Next: 6adQff5eFWkp3fMtfEovUxxeHGjXDfwhLrE8VVityupZ
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 whiteListAddressValue = addressFromStringValue(whiteListAddress) |
---|
12 | | - | let addressIsAllowed = getBoolean(whiteListAddressValue, recipientAddress) |
---|
13 | | - | let addressInWhiteList = match addressIsAllowed { |
---|
| 11 | + | let addressIsAllowed = getBoolean(addressFromStringValue(whiteListAddress), recipientAddress) |
---|
| 12 | + | match addressIsAllowed { |
---|
14 | 13 | | case b: Boolean => |
---|
15 | 14 | | (b == true) |
---|
16 | 15 | | case _ => |
---|
17 | | - | false |
---|
| 16 | + | throw("You can send this token only to white-listed addresses") |
---|
18 | 17 | | } |
---|
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 | 18 | | } |
---|
27 | 19 | | case s: SetScriptTransaction => |
---|
28 | 20 | | let assetIssuerPublicKey = extract(assetInfo(assetId)).issuerPublicKey |
---|
29 | 21 | | if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) |
---|
30 | 22 | | then sigVerify(tx.bodyBytes, tx.proofs[1], assetIssuerPublicKey) |
---|
31 | 23 | | else false |
---|
32 | | - | case b: BurnTransaction => |
---|
33 | | - | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
34 | 24 | | case i: InvokeScriptTransaction => |
---|
35 | 25 | | if ((toString(addressFromRecipient(i.dApp)) == whiteListAddress)) |
---|
36 | 26 | | 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 whiteListAddressValue = addressFromStringValue(whiteListAddress) |
---|
12 | | - | let addressIsAllowed = getBoolean(whiteListAddressValue, recipientAddress) |
---|
13 | | - | let addressInWhiteList = match addressIsAllowed { |
---|
| 11 | + | let addressIsAllowed = getBoolean(addressFromStringValue(whiteListAddress), recipientAddress) |
---|
| 12 | + | match addressIsAllowed { |
---|
14 | 13 | | case b: Boolean => |
---|
15 | 14 | | (b == true) |
---|
16 | 15 | | case _ => |
---|
17 | | - | false |
---|
| 16 | + | throw("You can send this token only to white-listed addresses") |
---|
18 | 17 | | } |
---|
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 | 18 | | } |
---|
27 | 19 | | case s: SetScriptTransaction => |
---|
28 | 20 | | let assetIssuerPublicKey = extract(assetInfo(assetId)).issuerPublicKey |
---|
29 | 21 | | if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) |
---|
30 | 22 | | then sigVerify(tx.bodyBytes, tx.proofs[1], assetIssuerPublicKey) |
---|
31 | 23 | | else false |
---|
32 | | - | case b: BurnTransaction => |
---|
33 | | - | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
34 | 24 | | case i: InvokeScriptTransaction => |
---|
35 | 25 | | if ((toString(addressFromRecipient(i.dApp)) == whiteListAddress)) |
---|
36 | 26 | | then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
37 | 27 | | else false |
---|
38 | 28 | | case _ => |
---|
39 | 29 | | throw("Bad transaction type") |
---|
40 | 30 | | } |
---|