Lub cuab tam ntse, tsis zoo li tus account ntse, tsis muaj lub xeev, tab sis peb tseem muaj kev nkag mus rau tus account xeev los ntawm tsab ntawv.
Cov cuab yeej ntse ua kom yooj yim rau kev sau cov ntawv cog lus, ua rau kev siv ntau qhov xwm txheej ceev thiab zoo nkauj.
Khoom khov khov
Txhawm rau khov cov khoom muaj nqis mus rau ib qho kev thaiv qhov siab targetHeight, koj tuaj yeem teeb tsa tus nqi no hauv tsab ntawv ntawm cov cuab yeej ntse hauv qab no:
let targetHeight = 1500000
height >= targetHeight
height - функция языка, возращающая текущую высоту.
Matcher Specific Condition
Txhawm rau teeb tsa tus neeg sib tw tshwj xeeb raws li qhov xav tau, koj tuaj yeem teeb tsa nws qhov chaw nyob raws li tus neeg xa khoom hauv cov khoom vaj khoom tsev ntse uas zoo li no:
match tx {
case t : ExchangeTransaction =>
t.sender == addressFromString("3PJaDyprvekvPXPuAtxrapacuDJopgJRaU3")
case _ => true
}
"Dawb daim ntawv teev npe" ntawm cov neeg tau txais
Txhawm rau tso cai rau cov tokens tsuas yog xa mus rau qee tus as-qhauj - los tsim "dawb daim ntawv teev npe" ntawm cov neeg tau txais - koj tuaj yeem siv cov cuab yeej ntse nrog cov txheej txheem hauv qab no uas kuaj xyuas kom suav nrog hauv cov npe:
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
}
Rau qhov laj thawj kev nyab xeeb thiab ua tiav qhov ua tiav ntawm cov lus, daim ntawv teev npe tsis muaj kev siv iterator. Yog li ntawd nws yog txhais raws li ib tug txheej ntawm pob zeb ntsiab.
"Black list" ntawm cov neeg txais
Ib yam li ntawd, txhawm rau txwv tsis pub xa cov tokens rau qee tus as-qhauj, koj tuaj yeem tsim "cov npe dub". Nyob rau hauv cov ntaub ntawv no, raws nraim tib lub cuab tam ntse yog siv, tab sis nrog rau qhov chaw nyob xyuas kom paub tseeb tias nws tsis nyob rau hauv blacklist:
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
}
Xa nrog kev tso cai ntawm tus neeg xa khoom
Siv cov cuab yeej ntse, koj tuaj yeem teeb tsa qhov kev xaiv xa cov cuab tam ntse tsuas yog nrog kev tso cai ntawm tus tshaj tawm (community/debt label). Tus neeg tawm tswv yim nthuav tawm nws qhov kev pom zoo los ntawm kev tso tus ID pauv hauv lub xeev ntawm nws tus account:
match tx {
case t : TransferTransaction =>
let issuer = extract(addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4"))
#убеждаемся, что в стейте эмитента содержится ID текущей транзакции
isDefined(getInteger(issuer, toBase58String(t.id)))
case _ => false
}
Txauv rau tej npib xwb
Lub cuab tam ntse tso cai rau pauv nws tsuas yog rau qee cov npib xwb. Piv txwv li, tsuas yog tso cai pauv rau Bitcoins, koj tuaj yeem siv cov cai hauv qab no:
let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
match tx {
case t : ExchangeTransaction =>
t.sellOrder.assetPair.priceAsset == BTCId ||
t.sellOrder.assetPair.amountAsset == BTCId
case _ => true
}
Kev lag luam los ntawm tus nqi los ntawm oracle
Nyob rau hauv cov khoom vaj khoom tsev ntse, koj tuaj yeem tso cai rau kev lag luam tsuas yog ntawm tus nqi kho nyob rau hauv lub xeev ntawm kev ntseeg siab oracle. Nov yog ib qho piv txwv ntawm xws li tsab ntawv:
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
}
Ntawm no peb tau ntsib nrog qhov tsis pom tseeb thaum kuaj xyuas tus ID ntawm cov cuab yeej cuab tam uas ua lag luam ua tiav. Lub ntsiab lus yog tias yog tsis tau txhais cov cuab tam ID, ces peb tab tom tham txog WAVES. Hauv tsab ntawv, peb paub tseeb tias kev lag luam tau ua tiav nrog WAVES, raws nraim li no.
Tsau tus nqi nce
Koj tuaj yeem teeb tsa tus nqi ruaj khov rau cov cuab yeej ntse, uas yuav nce qib ib kauj ruam hauv ib qho kev faib ua feem. Nov yog ib qho piv txwv ntawm cov khoom vaj khoom tsev uas nws tus nqi yuav nce 5% txhua 1000 blocks:
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
}
Interval trading
Tsis tas li ntawd, ua tsaug rau tsab ntawv, kev ua lag luam ntawm cov cuab yeej ntse tuaj yeem raug txwv rau lub sijhawm ua ntej. Nov yog ib qho piv txwv ntawm xws li tsab ntawv:
let startHeight = 10000
let interval = 44000
let limit = 1500
match tx {
case t: TransferTransaction | MassTransferTransaction | ExchangeTransaction =>
(height - startHeight) % interval < limit
case _ => true
}
Hauv tsab ntawv peb ua kom paub tseeb tias los ntawm kev pib ua lag luam pibHeight tsis muaj ntau tshaj li txwv ib ntus. Qhov ntev ntawm lub caij nyoog yog sib npaug rau tus naj npawb ntawm cov blocks teev nyob rau hauv daim teb luv.