рд▓рд╛рдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛: рдмреНрд▓реЕрдХрд▓рд┐рд╕реНрдЯ рдЖрдгрд┐ рд╡реНрд╣рд╛рдЗрдЯрд▓рд┐рд╕реНрдЯ, рдЗрдВрдЯрд░рд╡реНрд╣рд▓ рдЯреНрд░реЗрдбрд┐рдВрдЧ

рд▓рд╛рдЯрд╛ рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛: рдмреНрд▓реЕрдХрд▓рд┐рд╕реНрдЯ рдЖрдгрд┐ рд╡реНрд╣рд╛рдЗрдЯрд▓рд┐рд╕реНрдЯ, рдЗрдВрдЯрд░рд╡реНрд╣рд▓ рдЯреНрд░реЗрдбрд┐рдВрдЧ

рдорд╛рдЧреАрд▓ рджреЛрди рд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ, рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдЦрд╛рддреА рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рд▓реЛ. рд▓рд┐рд▓рд╛рд╡ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирд┐рд╖реНрдард╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдЖрдгрд┐ рдорджрдд рджреЗрдЦреАрд▓ рдЖрд░реНрдерд┐рдХ рд╕рд╛рдзрдирд╛рдВрдЪреА рдкрд╛рд░рджрд░реНрд╢рдХрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ.

рдЖрддрд╛ рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рд╡рд╛рдкрд░ рдкреНрд░рдХрд░рдгреЗ рдкрд╛рд╣реВ, рдЬреНрдпрд╛рдд рдорд╛рд▓рдорддреНрддрд╛ рдЧреЛрдард╡рдгреЗ рдЖрдгрд┐ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рдВрд╡рд░ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрд╡рд░ рдирд┐рд░реНрдмрдВрдз рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.

рд╡реЗрд╡реНрд╣рд╕реН рд╕реНрдорд╛рд░реНрдЯ рдЕреЕрд╕реЗрдЯреНрд╕ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдХрд╛рдЙрдВрдЯреНрд╕ рдкреНрд░рдорд╛рдгреЗрдЪ рдореЗрдХреЕрдирд┐рдХреНрд╕рдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░реВрди рдорд╛рд▓рдорддреНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд. рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рд╡рд╛рдкрд░реВрди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдирд╡реАрди рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪреА рдкреНрд░рдердо рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рдкреБрд╖реНрдЯреА рдХреЗрд▓реА рдЬрд╛рдИрд▓, рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪ рдмреНрд▓реЙрдХрдЪреЗрдирджреНрд╡рд╛рд░реЗ.

рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рдЖрдгрд┐ рд╕реНрдорд╛рд░реНрдЯ рдЦрд╛рддреНрдпрд╛рдВрдордзреАрд▓ рдЦрд╛рд▓реАрд▓ рдлрд░рдХ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ:

  1. рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддреЗрдЪреНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ, рдкреБрд░рд╛рд╡реЗ рддрдкрд╛рд╕рдгреЗ рдЕрд╢рдХреНрдп рдЖрд╣реЗ (рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рд▓реЛ. рдкрд╣рд┐рд▓реНрдпрд╛ рд▓реЗрдЦрд╛рдд).
  2. рд╕реНрдорд╛рд░реНрдЯ рдЦрд╛рддреЗ рдХреЛрдбрдордзреНрдпреЗ, рддреБрдордЪреЗ рдЦрд╛рддреЗ рдЬреБрд│рдгрд╛рд░реЗ рдЦрд╛рддреЗ рдЕрд╕реЗрд▓ рддрд░рдЪ рддреБрдореНрд╣реА рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рди рддрдкрд╛рд╕реВ рд╢рдХрддрд╛. рдЕрдиреНрдпрдерд╛, рдлрдХреНрдд рдСрд░реНрдбрд░ рддрдкрд╛рд╕рд▓реА рдЬрд╛рддреЗ. рд╕реНрдорд╛рд░реНрдЯ рдЕреЕрд╕реЗрдЯ рдХреЛрдбрдордзреНрдпреЗ рддреБрдореНрд╣реА рдСрд░реНрдбрд░ рдереЗрдЯ рддрдкрд╛рд╕реВ рд╢рдХрдд рдирд╛рд╣реА, рддреБрдореНрд╣реА рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рди рддрдкрд╛рд╕реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреНрдпрд╛рдордзреВрди рдСрд░реНрдбрд░ рдХрд╛рдвреВ рд╢рдХрддрд╛.
  3. рд╕реНрдорд╛рд░реНрдЯ рдЦрд╛рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддреЗрд▓рд╛ рд░рд╛рдЬреНрдп рдирд╕рддреЗ, рдкрд░рдВрддреБ рддрд░реАрд╣реА рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреВрди рдЦрд╛рддреЗ рд░рд╛рдЬреНрдпрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЕрд╕рддреЛ.

рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рдХрд░рд╛рд░рд╛рдВрдЪреЗ рд▓реЗрдЦрди рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реБрд▓рдн рдХрд░рддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдиреЗрдХ рдкреНрд░рдХрд░рдгрд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрдгрд┐ рдореЛрд╣рдХ рдмрдирддреЗ.

рдорд╛рд▓рдорддреНрддрд╛ рдЧреЛрдард╡рдгреЗ

рдард░рд╛рд╡рд┐рдХ рдмреНрд▓реЙрдХ рдЙрдВрдЪреАрдкрд░реНрдпрдВрдд рдорд╛рд▓рдорддреНрддрд╛ рдЧреЛрдард╡рдгреНрдпрд╛рд╕рд╛рдареА рд▓рдХреНрд╖реНрдп рдЙрдВрдЪреА, рддреБрдореНрд╣реА рд╣реЗ рдореВрд▓реНрдп рдлрдХреНрдд рдЦрд╛рд▓реАрд▓ рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддреЗрдЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛:

let targetHeight = 1500000
height >= targetHeight
 
height - ╤Д╤Г╨╜╨║╤Ж╨╕╤П ╤П╨╖╤Л╨║╨░, ╨▓╨╛╨╖╤А╨░╤Й╨░╤О╤Й╨░╤П ╤В╨╡╨║╤Г╤Й╤Г╤О ╨▓╤Л╤Б╨╛╤В╤Г.

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреБрд│рдгреА рд╕реНрдерд┐рддреА

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреБрд│рдгреА рдХрд░рдгрд╛рд░рд╛ рдЗрдЪреНрдЫрд┐рдд рдореНрд╣рдгреВрди рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рддреНрдпрд╛рдЪрд╛ рдкрддреНрддрд╛ рдкреНрд░реЗрд╖рдХ рдореНрд╣рдгреВрди рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛:

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

рдкреНрд░рд╛рдкреНрддрдХрд░реНрддреНрдпрд╛рдВрдЪреА "рдкрд╛рдВрдврд░реА рдпрд╛рджреА".

рдЯреЛрдХрди рдлрдХреНрдд рдард░рд╛рд╡рд┐рдХ рдЦрд╛рддреНрдпрд╛рдВрдирд╛ рдкрд╛рдард╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА - рдкреНрд░рд╛рдкреНрддрдХрд░реНрддреНрдпрд╛рдВрдЪреА "рдкрд╛рдВрдврд░реА рдпрд╛рджреА" рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА - рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рд╕реНрдХреАрдорд╛рд╕рд╣ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ рдЬреА рд╕реВрдЪреАрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдкрд╛рд╕рддреЗ:

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
}

рдЬрд╛рд░реАрдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреАрдиреЗ рдкрд╛рдард╡рдд рдЖрд╣реЗ

рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддреЗрд╕рд╣, рддреБрдореНрд╣реА рдХреЗрд╡рд│ рдЬрд╛рд░реАрдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреАрдиреЗ рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рдкрд╛рдард╡рдгреНрдпрд╛рдЪрд╛ рдкрд░реНрдпрд╛рдп рджреЗрдЦреАрд▓ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛ (рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛/рдХрд░реНрдЬ рд▓реЗрдмрд▓). рдЬрд╛рд░реАрдХрд░реНрддрд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдЦрд╛рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдпрдбреА рдкреЛрд╕реНрдЯ рдХрд░реВрди рддреНрдпрд╛рдЪреА рд╕рдВрдорддреА рд╡реНрдпрдХреНрдд рдХрд░рддреЛ:

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
}

рдпреЗрдереЗ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реЛрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдорд╛рд▓рдорддреНрддреЗрдЪрд╛ рдЖрдпрдбреА рддрдкрд╛рд╕рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдореБрджреНрджреНрдпрд╛рдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрддреЛ. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдорд╛рд▓рдорддреНрддрд╛ рдЖрдпрдбреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА 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
}


рдордзреНрдпрд╛рдВрддрд░ рд╡реНрдпрд╛рдкрд╛рд░

рддрд╕реЗрдЪ, рд╕реНрдХреНрд░рд┐рдкреНрдЯрдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдорд╛рд░реНрдЯ рдорд╛рд▓рдорддреНрддрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдкреВрд░реНрд╡рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рдкрд░реНрдпрдВрдд рдорд░реНрдпрд╛рджрд┐рдд рдЕрд╕реВ рд╢рдХрддреЛ. рдпреЗрдереЗ рдЕрд╢рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ:

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ, рдЖрдореНрд╣реА рд╡реНрдпрд╛рдкрд╛рд░рд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рддреЛ рдкреНрд░рд╛рд░рдВрдн рдЙрдВрдЪреА рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЙрддреНрддреАрд░реНрдг рдирд╛рд╣реА рдорд░реНрдпрд╛рджрд╛ рдЕрдВрддрд░рд╛рд▓ рдордзреНрдпрд╛рдВрддрд░рд╛рдЪреА рд▓рд╛рдВрдмреА рдлреАрд▓реНрдбрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмреНрд▓реЙрдХреНрд╕рдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдЗрддрдХреА рдЖрд╣реЗ рдордзреНрдпрд╛рдВрддрд░.

рд╕реНрддреНрд░реЛрдд: www.habr.com

DDoS рд╕рдВрд░рдХреНрд╖рдг, VPS VDS рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдЗрдЯрд╕рд╛рдареА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реЗрджреА рдХрд░рд╛ ЁЯФе рдбреАрдбреЙрд╕ рд╕рдВрд░рдХреНрд╖рдгрд╛рд╕рд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ, рд╡реНрд╣реАрдкреАрдПрд╕ (VPS) рд╡реНрд╣реАрдбреАрдПрд╕ (VDS) рд╕рд░реНрд╡реНрд╣рд░реНрд╕ рдЦрд░реЗрджреА рдХрд░рд╛ | ProHoster