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
}