Waves smart assets: blacklists uye whitelists, nguva yekutengesa

Waves smart assets: blacklists uye whitelists, nguva yekutengesa

Muzvinyorwa zviviri zvakapfuura, takataura nezve akangwara maakaundi uye mashandisiro aanogona kushandiswa. yekubata maokisheni uye kugadzira zvirongwa zvekuvimbikauyezve kubatsira chengetedza kuve pachena kwemidziyo yemari.

Ikozvino isu tichatarisa smart assets uye akati wandei makesi ekushandisa kwavari, kusanganisira kuomesa zvinhu uye kugadzira zvirambidzo pakutengeserana pamakero akapihwa.

Waves Smart Assets inobvumira vashandisi kunyora zvinhu, vachitevera mechanics akafanana neakaunzi akangwara. Imwe neimwe nyowani nyowani yakagadzirwa uchishandisa smart asset ichasimbiswa kutanga neiyo script, uye chete ipapo ne blockchain.

Izvo zvakakosha kucherechedza mutsauko unotevera pakati pe smart assets uye smart account:

  1. Mune kodhi yeakangwara asset, hazvibviri kutarisa humbowo (takataura nezvavo munyaya yekutanga).
  2. Mune iyo smart account kodhi, unogona kutarisa ExchangeTransaction chete kana account yako iri matcher account. Zvikasadaro, kurongeka chete kunotariswa. Mune smart asset code, haugone kutarisa kurongeka zvakananga, unogona kutarisa ExchangeTransaction, uye kubvisa kurongeka kubva mairi kana zvichidiwa.
  3. A smart asset, kusiyana ne smart account, haina nyika, asi isu tichiri kuwana iyo account states kubva kune script.

Smart assets inorerutsa zvakanyanya kunyorwa kwezvibvumirano, zvichiita kuti kuitwa kwemakesi mazhinji kuve mapfupi uye anoyevedza.

Asset chando

Kuomesa zvinhu kusvika kune imwe block urefu targetHeight, unogona kungoisa kukosha uku mune script yeinotevera smart asset:

let targetHeight = 1500000
height >= targetHeight
 
height - функция языка, возращающая текущую высоту.

Specific matcher condition

Kuseta chaiyo matcher seyaunoda, unogona kuseta kero yayo semutumi mune smart asset script seizvi:

match tx {
    case t : ExchangeTransaction =>
        t.sender == addressFromString("3PJaDyprvekvPXPuAtxrapacuDJopgJRaU3")
    case _ => true
}

"White list" yevagamuchiri

Kubvumira ma tokens kuti atumire kune mamwe maakaundi chete - kugadzira "white list" yevanogamuchira - unogona kushandisa smart asset ine inotevera schema inoongorora kuti inosanganisirwa mune rondedzero:

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
}

Nekuda kwezvikonzero zvekuchengetedza uye mhedzisiro yemutauro inogoneka, iyo rondedzero haina kudzokororwa kwekuita. Nokudaro, inotsanangurwa seti yekrete yezvinhu.

"Black list" yevagamuchiri

Saizvozvowo, kudzivirira kutumira zviratidzo kune mamwe maakaunti, unogona kugadzira "black list". Mune ino kesi, iyo yakafanana smart asset inoshandiswa, asi nekutarisa kero yekusavapo kweblacklist:

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
}

Kutumira nemvumo yemupi

Iine smart asset, unogona zvakare kuseta sarudzo yekutumira smart asset chete nemvumo yeanopa (kuzvipira/chikwereti label) Anopa anoratidza mvumo yake nekutumira ID yekutengeserana muakaundi yake:

match tx {
  case t : TransferTransaction =>
    let issuer = extract(addressFromString("3P6ms9EotRX8JwSrebeTXYVnzpsGCrKWLv4"))
    #убеждаемся, что в стейте эмитента содержится ID текущей транзакции
    isDefined(getInteger(issuer, toBase58String(t.id)))
  case _ => false
}

Chinjana nemamwe makoini chete

A smart asset inobvumira mvumo yekuichinjanisa chete neimwe mari. Semuenzaniso, kubvumira kuchinjana chete kwebitcoins, unogona kushandisa kodhi inotevera:

let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
match tx {
  case t : ExchangeTransaction =>
    t.sellOrder.assetPair.priceAsset == BTCId ||
     t.sellOrder.assetPair.amountAsset == BTCId
  case _ => true
}

Kutengeserana nemutengo kubva kunzvimbo yeshoko

Mune smart asset script, iwe unogona kuseta mvumo yekutengesa chete nemutengo wakatarwa mumamiriro eiyo yakavimbika oracle. Heino muenzaniso weiyo script:

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
}

Pano takatarisana nechinhu chisiri pachena kana tichitarisa ID yeasset iri kutengeswa. Icho chokwadi ndechekuti kana iyo asset ID isina kutsanangurwa, saka tiri kutaura nezve WAVES. Mune script, isu tinoita shuwa kuti kutengesa kunoitwa tandem neWAVES, nenzira iyi.

Fixed mutengo kuwedzera

Iwe unogona kuseta mutengo wakatemwa weiyo smart asset, iyo inowedzera nhanho nhanho mune yakapihwa chikamu. Heino muenzaniso weasset script iyo inowedzera mutengo wayo ne5% yega 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

Zvakare, nekuda kweiyo script, smart asset kutengesa inogona kuganhurirwa kune yakafanotemerwa nguva. Heino muenzaniso weiyo script:

let startHeight = 10000
let interval = 44000
let limit = 1500
 
match tx {
  case t: TransferTransaction | MassTransferTransaction | ExchangeTransaction =>
    (height - startHeight) % interval < limit
  case _ => true
}

Mune script, tinoita shuwa kuti kubva pakutanga kwekutengesa startHeight hapana kupfuura muganhu nguva. Hurefu hwepakati hwakaenzana nehuwandu hwemabhuroki anotsanangurwa mumunda chinguva.

Source: www.habr.com

Voeg