match tx {
case t : TransferTransaction =>
let bannedRecipient1 = addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4")
let bannedRecipient2 = addressFromString("3PLZcCJyYQnfWfzhKXRA4rteCQC9J1ewf5K")
let bannedRecipient3 = addressFromString("3PHrS6VNPRtUD8MHkfkmELavL8JnGtSq5sx")
t.recipient != bannedRecipient1 && t.recipient != bannedRecipient2 && t.recipient != bannedRecipient3
case _ => false
}
ส่งโดยได้รับอนุญาตจากผู้ออก
เมื่อใช้สินทรัพย์อัจฉริยะ คุณยังสามารถตั้งค่าตัวเลือกให้ส่งสินทรัพย์อัจฉริยะเมื่อได้รับอนุญาตจากผู้ออกเท่านั้น (สัญญาผูกพัน/ป้ายหนี้). ผู้ออกแสดงความยินยอมโดยการวาง ID ธุรกรรมไว้ในสถานะของบัญชี:
match tx {
case t : TransferTransaction =>
let issuer = extract(addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4"))
#убеждаемся, что в стейте эмитента содержится ID текущей транзакции
isDefined(getInteger(issuer, toBase58String(t.id)))
case _ => false
}
let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
match tx {
case t : ExchangeTransaction =>
t.sellOrder.assetPair.priceAsset == BTCId ||
t.sellOrder.assetPair.amountAsset == BTCId
case _ => true
}
let oracle = Address(base58'3PLNmokt22NrSiNvCLvwMUP84LCMJqbXwAD')
let assetId = toBase58String(base58'oWgJN6YGZFtZrV8BWQ1PGktZikgg7jzGmtm16Ktyvjd')
match tx {
#запрещаем передачу ассета
case t: TransferTransaction | MassTransferTransaction => false
case e: ExchangeTransaction =>
#убеждаемся, что торговля происходит по цене, заданной в стейте оракла для этого ассета
let correctPrice = e.price == extract(getInteger(oracle, assetId))
#убеждаемся, что торговля происходит в обмен на WAVES
let correctPriceAsset = !isDefined(e.sellOrder.assetPair.priceAsset)
correctPrice && correctPriceAsset
case _ => true
}
ที่นี่เรากำลังเผชิญกับจุดที่ไม่ชัดเจนเมื่อตรวจสอบ ID ของสินทรัพย์ที่ทำการซื้อขาย ประเด็นก็คือหากไม่ได้กำหนดรหัสสินทรัพย์ เรากำลังพูดถึง WAVES ในสคริปต์ เราตรวจสอบให้แน่ใจว่าการซื้อขายดำเนินการควบคู่กับ WAVES ในลักษณะนี้ทุกประการ