Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# STDLIB_VERSION 3 #-}
- {-# CONTENT_TYPE EXPRESSION #-}
- {-# SCRIPT_TYPE ASSET #-}
- match tx {
- case allow: ExchangeTransaction | TransferTransaction =>
- let assetId = match allow {
- case e: ExchangeTransaction =>
- e.sellOrder.assetPair.amountAsset
- case t: TransferTransaction =>
- t.assetId
- }
- let aInfo = extract(assetInfo(extract(assetId)))
- let adminAddress = aInfo.issuer
- let assetIdString = toBase58String(extract(assetId))
- let tokensListPK = extract(getString(adminAddress, "regulated-tokens"))
- let tokensListAddress = extract(addressFromPublicKey(fromBase58String(tokensListPK)))
- let whitelistPK = extract(getString(tokensListAddress, assetIdString))
- let whitelistAddress = extract(addressFromPublicKey(fromBase58String(whitelistPK)))
- let senderAddress = match allow {
- case e: ExchangeTransaction =>
- e.sellOrder.sender
- case t: TransferTransaction =>
- t.sender
- }
- let recipientAddress = match allow {
- case t: TransferTransaction =>
- addressFromRecipient(t.recipient)
- case _ => unit
- }
- let senderAccepted = getBoolean(whitelistAddress, toBase58String(senderAddress.bytes))
- let recipientAccepted = getBoolean(whitelistAddress, toBase58String(extract(recipientAddress).bytes))
- match allow {
- case e: ExchangeTransaction =>
- if (!isDefined(senderAccepted))
- then false
- else extract(senderAccepted)
- case t: TransferTransaction =>
- if (!isDefined(senderAccepted) || !isDefined(recipientAccepted))
- then false
- else extract(senderAccepted) && extract(recipientAccepted)
- }
- case _ => true #dev
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement