Waves ntse cov cuab tam: cov npe dub thiab dawb, lub sijhawm ua lag luam

Waves ntse cov cuab tam: cov npe dub thiab dawb, lub sijhawm ua lag luam

Hauv ob kab lus dhau los peb tau tham txog cov nyiaj ntse thiab yuav siv lawv li cas rau tuav auctions thiab tsim loyalty programsthiab kuj pab xyuas kom pom tseeb ntawm cov cuab yeej nyiaj txiag.

Tam sim no peb yuav saib cov cuab tam ntse thiab ntau qhov xwm txheej ntawm lawv cov kev siv, suav nrog cov khoom muaj nqis khov thiab tsim kev txwv ntawm kev hloov pauv ntawm qhov chaw nyob.

Waves Smart Assets tso cai rau cov neeg siv sau cov ntawv sau ntawm cov khoom muaj nqis, ua raws li cov cuab yeej siv tib yam li Smart Accounts. Txhua qhov kev hloov pauv tshiab tsim siv cov cuab yeej ntse yuav raug lees paub ua ntej los ntawm tsab ntawv, thiab tsuas yog tom qab ntawd los ntawm blockchain.

Nws yog tsim nyog sau cia qhov sib txawv hauv qab no ntawm cov cuab tam ntse thiab cov nyiaj ntse:

  1. Hauv cov cai ntawm cov cuab yeej ntse, nws tsis tuaj yeem tshawb xyuas cov pov thawj (peb tham txog lawv nyob rau hauv thawj tsab xov xwm).
  2. Nyob rau hauv tus lej account ntse, koj tuaj yeem tshawb xyuas ExchangeTransaction tsuas yog tias koj tus account yog tus account matcher. Txwv tsis pub, tsuas yog qhov kev txiav txim raug kuaj. Hauv cov cuab yeej cuab tam code ntse, koj tsis tuaj yeem tshawb xyuas qhov kev txiav txim ncaj qha; koj tuaj yeem tshawb xyuas ExchangeTransaction, thiab, yog tias tsim nyog, rho tawm qhov kev txiav txim los ntawm nws.
  3. 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.

Tau qhov twg los: www.hab.com

Ntxiv ib saib