match tx {
case t : TransferTransaction =>
let trustedRecipient1 = addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4")
let trustedRecipient2 = addressFromString("3PLZcCJyYQnfWfzhKXRA4rteCQC9J1ewf5K")
let trustedRecipient3 = addressFromString("3PHrS6VNPRtUD8MHkfkmELavL8JnGtSq5sx")
t.recipient == trustedRecipient1 || t.recipient == trustedRecipient2 || t.recipient == trustedRecipient3
case _ => false
}
Бо сабабҳои амниятӣ ва пуррагии исботшавандаи забон, рӯйхат татбиқи итераторро дар бар намегирад. Аз ин рӯ, он ҳамчун маҷмӯи унсурҳои мушаххас муайян карда мешавад.
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-и дороие, ки бо он тиҷорат анҷом дода мешавад, бо як нуқтаи норавшан дучор мешавем. Гап дар он аст, ки агар ID-и дороиҳо муайян нашуда бошад, пас мо дар бораи WAVES гап мезанем. Дар скрипт, мо боварӣ ҳосил мекунем, ки савдо дар тандем бо WAVES, маҳз ҳамин тавр сурат мегирад.
Афзоиши нархҳои собит
Шумо метавонед нархи собитро барои дороии интеллектуалӣ муқаррар кунед, ки он дар таносуби додашуда зина ба зина афзоиш хоҳад ёфт. Ин аст як мисоли скрипти дороиҳо, ки нархи он ҳар 5 блок 1000% зиёд мешавад:
let startPrice = 10
let startHeight = 1000
let interval = 1000
#на сколько процентов цена увеличивается за один шаг
let raise = 5
match tx {
case t: TransferTransaction | MassTransferTransaction => false
case e: ExchangeTransaction =>
e.price == startPrice + ((height - startHeight) / interval) * (100 + raise) / 100
&& !isDefined(e.sellOrder.assetPair.priceAsset)
case _ => true
}