tx · GjisvhEJc3yDk7BMG5jG7eTEkSNiFAg2VK2GqkWpe7MA

3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy:  -1.40000000 Waves

2020.10.10 14:51 [1214436] smart asset 3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy > SELF 0.00000000 D-BTC

{ "type": 15, "id": "GjisvhEJc3yDk7BMG5jG7eTEkSNiFAg2VK2GqkWpe7MA", "fee": 140000000, "feeAssetId": null, "timestamp": 1602330772992, "version": 2, "chainId": 84, "sender": "3NCpyPuNzUaB7LFS4KBzwzWVnXmjur582oy", "senderPublicKey": "57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4", "proofs": [ "2HYbbAbfWamVjPrKqpYWePazuCN4m8zUmnPPBGbmzyPJYJhzxPx9B6mMP3aKHG9f1q2whoriuXXegs3MBAas98ph" ], "assetId": "FjTB2DdymTfpYbCCdcFwoRbHQnEhQD11CUm6nAF7P1UD", "script": "base64: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bW91bnQAAAAAAAAAAGQFAAAAB3RheFNpemUHBwkAAAIAAAABAgAAAD5DYW5ub3QgdHJhbnNmZXIgcGxlYXNlIHZlcmlmeSB5b3VyIGFjb3VudC4gQW1vdW50IGlzIHRvbyBtdWNoIQMJAAAAAAAAAgUAAAAGaXNVc2VyAAAAAAAAAAAACQAAAgAAAAECAAAAS1RoZSByZWNpcGllbnQgaXMgaW4gS1lDIHBlbmRpbmcgc3RhdHVzLiBZb3UgY2Fubm90IHRyYW5zZmVyIHRoaXMgU21hcnRBc3NldAMJAAAAAAAAAgUAAAAGaXNVc2VyAAAAAAAAAAACBAAAAAckbWF0Y2gxBQAAABBpc3N1ZVRyYW5zYWN0aW9uAwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAABBJc3N1ZVRyYW5zYWN0aW9uBAAAAAdpc3N1ZVR4BQAAAAckbWF0Y2gxBAAAAA1pc3N1ZXJBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAAHaXNzdWVUeAAAAA9zZW5kZXJQdWJsaWNLZXkEAAAAB3RheFNpemUJAQAAAAdleHRyYWN0AAAAAQkABBoAAAACBQAAAA1pc3N1ZXJBZGRyZXNzCQACWAAAAAEFAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAADmZpcnN0UmVjaXBpZW50BQAAAA1pc3N1ZXJBZGRyZXNzCQAAZwAAAAIFAAAAC2ZpcnN0QW1vdW50CQAAaAAAAAIJAABpAAAAAggFAAAAA210dAAAAAt0b3RhbEFtb3VudAAAAAAAAAAAZAUAAAAHdGF4U2l6ZQcHAwkAAAAAAAACBQAAAAZpc1VzZXIAAAAAAAAAAZMJAAACAAAAAQIAAAA8VGhlIHJlY2lwaWVudCBpcyBiYW5uZWQuIFlvdSBjYW5ub3QgdHJhbnNmZXIgdGhpcyBTbWFydEFzc2V0CQAAAgAAAAECAAAAFFVuZGVmaW5lZCBzaXR1YXRpb24hCQAAAgAAAAECAAAAO1RoZSByZWNpcGllbnQgaXMgbm90IGF1dGhvcml6ZWQgdG8gcG9zc2VzcyB0aGlzIFNtYXJ0QXNzZXQhAwkAAAAAAAACBQAAAARkYXRhAAAAAAAAAAGTCQAAAgAAAAECAAAAH1lvdXIgYWNvdW50IGhhcyBiZWVuIHN1c3BlbmRlZCEJAAACAAAAAQIAAAAUVW5kZWZpbmVkIHNpdHVhdGlvbiEDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE0V4Y2hhbmdlVHJhbnNhY3Rpb24EAAAAAmV4BQAAAAckbWF0Y2gwBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPQnVyblRyYW5zYWN0aW9uBAAAAAFiBQAAAAckbWF0Y2gwBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAZU2V0QXNzZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAAGc2NyaXB0BQAAAAckbWF0Y2gwAwkAAAAAAAACCAUAAAAGc2NyaXB0AAAABnNlbmRlcgUAAAAFYWRtaW4GCQAAAgAAAAECAAAAFkFkbWluIG9wZXJhdGlvbiBvbmx5Li4G6/mD6w==", "height": 1214436, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3sYizZC3fP5SwyNgRhTBxMywQsyGF18VGJfUwGfgB6pM Next: 8pppPERomyKw43KKRvyLQ5Ke8xBei4x9x4XsQjMMZVuU Diff:
OldNewDifferences
6060 else if ((data == 1))
6161 then if ((firstRecipient == gateway))
6262 then if ((maxAmount >= amount))
63- then true
63+ then match issueTransaction {
64+ case issueTx: IssueTransaction =>
65+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
66+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
67+ if ((firstRecipient == issuerAddress))
68+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
69+ else false
70+ case _ =>
71+ false
72+ }
6473 else throw("Cannot transfer please verify your acount. Amount is too much!")
6574 else throw("You are not authorized to transfer this SmartAsset.. !")
6675 else if ((data == 2))
8392 else if ((isUser == 0))
8493 then throw("The recipient is in KYC pending status. You cannot transfer this SmartAsset")
8594 else if ((isUser == 2))
86- then true
95+ then match issueTransaction {
96+ case issueTx: IssueTransaction =>
97+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
98+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
99+ if ((firstRecipient == issuerAddress))
100+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
101+ else false
102+ case _ =>
103+ false
104+ }
87105 else if ((isUser == 403))
88106 then throw("The recipient is banned. You cannot transfer this SmartAsset")
89107 else throw("Undefined situation!")
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)))
1616 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 =>
4646 let data = getInteger(admin, toBase58String(mtt.sender.bytes))
4747 let amount = mtt.totalAmount
4848 let assetId = extract(mtt.assetId)
4949 let transferCount = mtt.transferCount
5050 let firstRecipient = mtt.transfers[0].recipient
5151 let secondRecipient = mtt.transfers[1].recipient
5252 let firstAmount = mtt.transfers[0].amount
5353 let issueTransaction = transactionById(assetId)
5454 if ((transferCount > 2))
5555 then throw("not allowed")
5656 else if (!(isDefined(data)))
5757 then throw("You are not a registered member. You cannot transfer this SmartAsset!")
5858 else if ((data == 0))
5959 then throw("KYC Pending. You cannot transfer this SmartAsset")
6060 else if ((data == 1))
6161 then if ((firstRecipient == gateway))
6262 then if ((maxAmount >= amount))
63- then true
63+ then match issueTransaction {
64+ case issueTx: IssueTransaction =>
65+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
66+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
67+ if ((firstRecipient == issuerAddress))
68+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
69+ else false
70+ case _ =>
71+ false
72+ }
6473 else throw("Cannot transfer please verify your acount. Amount is too much!")
6574 else throw("You are not authorized to transfer this SmartAsset.. !")
6675 else if ((data == 2))
6776 then {
6877 let isUser = getInteger(admin, toBase58String(addressFromRecipient(secondRecipient).bytes))
6978 if (isDefined(isUser))
7079 then if ((isUser == 1))
7180 then if ((maxAmount >= amount))
7281 then match issueTransaction {
7382 case issueTx: IssueTransaction =>
7483 let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
7584 let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
7685 if ((firstRecipient == issuerAddress))
7786 then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
7887 else false
7988 case _ =>
8089 false
8190 }
8291 else throw("Cannot transfer please verify your acount. Amount is too much!")
8392 else if ((isUser == 0))
8493 then throw("The recipient is in KYC pending status. You cannot transfer this SmartAsset")
8594 else if ((isUser == 2))
86- then true
95+ then match issueTransaction {
96+ case issueTx: IssueTransaction =>
97+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
98+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
99+ if ((firstRecipient == issuerAddress))
100+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
101+ else false
102+ case _ =>
103+ false
104+ }
87105 else if ((isUser == 403))
88106 then throw("The recipient is banned. You cannot transfer this SmartAsset")
89107 else throw("Undefined situation!")
90108 else throw("The recipient is not authorized to possess this SmartAsset!")
91109 }
92110 else if ((data == 403))
93111 then throw("Your acount has been suspended!")
94112 else throw("Undefined situation!")
95113 case ex: ExchangeTransaction =>
96114 false
97115 case b: BurnTransaction =>
98116 false
99117 case script: SetAssetScriptTransaction =>
100118 if ((script.sender == admin))
101119 then true
102120 else throw("Admin operation only..")
103121 case _ =>
104122 true
105123 }

github/deemru/w8io/6500d08 
50.63 ms