tx · 3sYizZC3fP5SwyNgRhTBxMywQsyGF18VGJfUwGfgB6pM

3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy:  -1.40000000 Waves

2020.10.10 14:42 [1214425] smart asset 3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy > SELF 0.00000000 D-BTC

{ "type": 15, "id": "3sYizZC3fP5SwyNgRhTBxMywQsyGF18VGJfUwGfgB6pM", "fee": 140000000, "feeAssetId": null, "timestamp": 1602330160290, "version": 2, "chainId": 84, "sender": "3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy", "senderPublicKey": "57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4", "proofs": [ "2sNXoDS4BQ7igJ8sXxkfDLCoWa9sD8zvRZJoYV8p6HavtR9CjQpGayDXTKWrMXrXBDe6PZYjvZySmG3GjQD1hdLb" ], "assetId": "FjTB2DdymTfpYbCCdcFwoRbHQnEhQD11CUm6nAF7P1UD", "script": "base64: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", "height": 1214425, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Fpr1u8kfchjC5vGB45AddvGr6gsUJcBxHUVSZMSzAHYE Next: GjisvhEJc3yDk7BMG5jG7eTEkSNiFAg2VK2GqkWpe7MA Diff:
OldNewDifferences
1313 let amount = t.amount
1414 let assetId = extract(t.assetId)
1515 if (!(isDefined(data)))
16- then throw("You are not a registered member. You cannot transfer this SmartAsset")
16+ then throw("You are not a registered member. You cannot transfer this SmartAsset!")
1717 else if ((data == 0))
1818 then throw("KYC Pending. You cannot transfer this SmartAsset")
1919 else if ((data == 1))
4343 then throw("Your acount has been suspended!")
4444 else throw("Undefined situation!")
4545 case mtt: MassTransferTransaction =>
46+ let data = getInteger(admin, toBase58String(mtt.sender.bytes))
47+ let amount = mtt.totalAmount
48+ let assetId = extract(mtt.assetId)
49+ let transferCount = mtt.transferCount
4650 let firstRecipient = mtt.transfers[0].recipient
51+ let secondRecipient = mtt.transfers[1].recipient
4752 let firstAmount = mtt.transfers[0].amount
48- let assetId = extract(mtt.assetId)
4953 let issueTransaction = transactionById(assetId)
50- match issueTransaction {
51- case issueTx: IssueTransaction =>
52- let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
53- let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
54- if ((firstRecipient == issuerAddress))
55- then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
56- else false
57- case _ =>
58- false
59- }
54+ if ((transferCount > 2))
55+ then throw("not allowed")
56+ else if (!(isDefined(data)))
57+ then throw("You are not a registered member. You cannot transfer this SmartAsset!")
58+ else if ((data == 0))
59+ then throw("KYC Pending. You cannot transfer this SmartAsset")
60+ else if ((data == 1))
61+ then if ((firstRecipient == gateway))
62+ then if ((maxAmount >= amount))
63+ then true
64+ else throw("Cannot transfer please verify your acount. Amount is too much!")
65+ else throw("You are not authorized to transfer this SmartAsset.. !")
66+ else if ((data == 2))
67+ then {
68+ let isUser = getInteger(admin, toBase58String(addressFromRecipient(secondRecipient).bytes))
69+ if (isDefined(isUser))
70+ then if ((isUser == 1))
71+ then if ((maxAmount >= amount))
72+ then match issueTransaction {
73+ case issueTx: IssueTransaction =>
74+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
75+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
76+ if ((firstRecipient == issuerAddress))
77+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
78+ else false
79+ case _ =>
80+ false
81+ }
82+ else throw("Cannot transfer please verify your acount. Amount is too much!")
83+ else if ((isUser == 0))
84+ then throw("The recipient is in KYC pending status. You cannot transfer this SmartAsset")
85+ else if ((isUser == 2))
86+ then true
87+ else if ((isUser == 403))
88+ then throw("The recipient is banned. You cannot transfer this SmartAsset")
89+ else throw("Undefined situation!")
90+ else throw("The recipient is not authorized to possess this SmartAsset!")
91+ }
92+ else if ((data == 403))
93+ then throw("Your acount has been suspended!")
94+ else throw("Undefined situation!")
6095 case ex: ExchangeTransaction =>
6196 false
6297 case b: BurnTransaction =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 2 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let admin = Address(base58'3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy')
44 let gateway = Address(base58'3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy')
55 let banned = 403
66 let KYCVer1 = 1
77 let KYCVer2 = 2
88 let KYCPending = 0
99 let maxAmount = 100000000
1010 match tx {
1111 case t: TransferTransaction =>
1212 let data = getInteger(admin, toBase58String(t.sender.bytes))
1313 let amount = t.amount
1414 let assetId = extract(t.assetId)
1515 if (!(isDefined(data)))
16- then throw("You are not a registered member. You cannot transfer this SmartAsset")
16+ then throw("You are not a registered member. You cannot transfer this SmartAsset!")
1717 else if ((data == 0))
1818 then throw("KYC Pending. You cannot transfer this SmartAsset")
1919 else if ((data == 1))
2020 then if ((t.recipient == gateway))
2121 then if ((maxAmount >= amount))
2222 then true
2323 else throw("Cannot transfer please verify your acount. Amount is too much!")
2424 else throw("You are not authorized to transfer this SmartAsset.. !")
2525 else if ((data == 2))
2626 then {
2727 let isUser = getInteger(admin, toBase58String(addressFromRecipient(t.recipient).bytes))
2828 if (isDefined(isUser))
2929 then if ((isUser == 1))
3030 then if ((maxAmount >= amount))
3131 then true
3232 else throw("Cannot transfer please verify your acount. Amount is too much!")
3333 else if ((isUser == 0))
3434 then throw("The recipient is in KYC pending status. You cannot transfer this SmartAsset")
3535 else if ((isUser == 2))
3636 then true
3737 else if ((isUser == 403))
3838 then throw("The recipient is banned. You cannot transfer this SmartAsset")
3939 else throw("Undefined situation!")
4040 else throw("The recipient is not authorized to possess this SmartAsset!")
4141 }
4242 else if ((data == 403))
4343 then throw("Your acount has been suspended!")
4444 else throw("Undefined situation!")
4545 case mtt: MassTransferTransaction =>
46+ let data = getInteger(admin, toBase58String(mtt.sender.bytes))
47+ let amount = mtt.totalAmount
48+ let assetId = extract(mtt.assetId)
49+ let transferCount = mtt.transferCount
4650 let firstRecipient = mtt.transfers[0].recipient
51+ let secondRecipient = mtt.transfers[1].recipient
4752 let firstAmount = mtt.transfers[0].amount
48- let assetId = extract(mtt.assetId)
4953 let issueTransaction = transactionById(assetId)
50- match issueTransaction {
51- case issueTx: IssueTransaction =>
52- let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
53- let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
54- if ((firstRecipient == issuerAddress))
55- then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
56- else false
57- case _ =>
58- false
59- }
54+ if ((transferCount > 2))
55+ then throw("not allowed")
56+ else if (!(isDefined(data)))
57+ then throw("You are not a registered member. You cannot transfer this SmartAsset!")
58+ else if ((data == 0))
59+ then throw("KYC Pending. You cannot transfer this SmartAsset")
60+ else if ((data == 1))
61+ then if ((firstRecipient == gateway))
62+ then if ((maxAmount >= amount))
63+ then true
64+ else throw("Cannot transfer please verify your acount. Amount is too much!")
65+ else throw("You are not authorized to transfer this SmartAsset.. !")
66+ else if ((data == 2))
67+ then {
68+ let isUser = getInteger(admin, toBase58String(addressFromRecipient(secondRecipient).bytes))
69+ if (isDefined(isUser))
70+ then if ((isUser == 1))
71+ then if ((maxAmount >= amount))
72+ then match issueTransaction {
73+ case issueTx: IssueTransaction =>
74+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
75+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
76+ if ((firstRecipient == issuerAddress))
77+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
78+ else false
79+ case _ =>
80+ false
81+ }
82+ else throw("Cannot transfer please verify your acount. Amount is too much!")
83+ else if ((isUser == 0))
84+ then throw("The recipient is in KYC pending status. You cannot transfer this SmartAsset")
85+ else if ((isUser == 2))
86+ then true
87+ else if ((isUser == 403))
88+ then throw("The recipient is banned. You cannot transfer this SmartAsset")
89+ else throw("Undefined situation!")
90+ else throw("The recipient is not authorized to possess this SmartAsset!")
91+ }
92+ else if ((data == 403))
93+ then throw("Your acount has been suspended!")
94+ else throw("Undefined situation!")
6095 case ex: ExchangeTransaction =>
6196 false
6297 case b: BurnTransaction =>
6398 false
6499 case script: SetAssetScriptTransaction =>
65100 if ((script.sender == admin))
66101 then true
67102 else throw("Admin operation only..")
68103 case _ =>
69104 true
70105 }

github/deemru/w8io/6500d08 
118.48 ms