ሞገዶች ብልጥ ንብረቶች፡ ጥቁር እና ነጭ ዝርዝሮች፣ የጊዜ ልዩነት ንግድ

ሞገዶች ብልጥ ንብረቶች፡ ጥቁር እና ነጭ ዝርዝሮች፣ የጊዜ ልዩነት ንግድ

በቀደሙት ሁለት መጣጥፎች ስለ ስማርት መለያዎች እና እንዴት ጥቅም ላይ እንደሚውሉ ተነጋግረናል። ጨረታዎችን ለመያዝ እና የታማኝነት ፕሮግራሞችን ለመፍጠርእና ደግሞ እርዳታ የፋይናንስ መሳሪያዎችን ግልጽነት ማረጋገጥ.

አሁን ብልጥ ንብረቶችን እና በርካታ የአጠቃቀም ሁኔታዎችን እንመለከታለን፣ ንብረቶችን ማቀዝቀዝ እና በተገለጹ አድራሻዎች ላይ ግብይቶችን መፍጠርን ጨምሮ።

Waves Smart Assets ተጠቃሚዎች እንደ Smart Accounts ተመሳሳይ መካኒኮችን በመከተል ስክሪፕቶችን በንብረቶች ላይ እንዲደራረቡ ያስችላቸዋል። ብልጥ ንብረትን በመጠቀም የተፈጠረ እያንዳንዱ አዲስ ግብይት መጀመሪያ በስክሪፕቱ ይረጋገጣል እና ከዚያ በብሎክቼይን ብቻ ነው።

በዘመናዊ ንብረቶች እና በስማርት መለያዎች መካከል የሚከተሉትን ልዩነቶች ልብ ሊባል ይገባል ።

  1. በዘመናዊ ንብረት ኮድ ውስጥ, ማረጋገጫዎችን ለመፈተሽ የማይቻል ነው (ስለእነሱ ተነጋገርን በመጀመሪያው ጽሑፍ).
  2. በስማርት መለያ ኮድ ውስጥ፣ የ ExchangeTransactionን ማረጋገጥ የሚችሉት መለያዎ ተዛማጅ መለያ ከሆነ ብቻ ነው። አለበለዚያ ትዕዛዙ ብቻ ነው የሚመረመረው። በዘመናዊ የንብረት ኮድ ውስጥ፣ ትዕዛዙን በቀጥታ ማረጋገጥ አይችሉም፣ የ ExchangeTransaction ን ማረጋገጥ እና አስፈላጊ ከሆነ ከሱ ትዕዛዝ ማውጣት ይችላሉ።
  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
}

ለተወሰኑ ሳንቲሞች ብቻ ይለዋወጡ

ብልጥ ንብረት ለተወሰኑ ሳንቲሞች ብቻ ለመለዋወጥ ፍቃድ ይፈቅዳል። ለምሳሌ፣ ለ Bitcoins ብቻ ልውውጥን ለመፍቀድ፣ የሚከተለውን ኮድ መጠቀም ይችላሉ።

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
}

በስክሪፕቱ ውስጥ ከንግዱ መጀመሪያ ጀምሮ መሆኑን እናረጋግጣለን። startHeight አይበልጥም። ወሰን ክፍተቶች. የክፍለ ጊዜው ርዝመት በመስክ ላይ ከተገለጹት እገዳዎች ጋር እኩል ነው የእረፍት ጊዜ.

ምንጭ: hab.com

አስተያየት ያክሉ