เปเบเบชเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบกเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบต smart เปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเป
เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบดเปเบเบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐเปเบฅเบฐเบซเบผเบฒเบเปเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบญเบเบเบงเบเปเบเบปเบฒ, เบฅเบงเบกเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบเบฑเบเบชเบดเบเปเบฅเบฐเบเบฒเบเบชเปเบฒเบเบเปเปเบเปเบฒเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบขเบนเปเปเบเบเบตเปเบขเบนเปเบเบตเปเบเปเบฒเบเบปเบเปเบงเป.
Waves Smart Assets เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบนเปเปเบเปเบชเบฒเบกเบฒเบเบงเบฒเบเบเบฑเบเบชเบฐเบเบฃเบดเบเปเบเบดเบเบเบฑเบเบชเบดเบ, เบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบปเบเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฑเบเบเบตเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ. เปเบเปเบฅเบฐเบเบธเบฅเบฐเบเปเบฒเปเบซเบกเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเปเบเปเบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐเบเบฐเบเบทเบเบขเบทเบเบขเบฑเบเบเปเบญเบเปเบเบเบชเบฐเบเบดเบ, เปเบฅเบฐเบเบฝเบเปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบ blockchain.
เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเปเปเปเบเบเบตเปเบฅเบฐเบซเบงเปเบฒเบเบเบฑเบเบชเบดเบ smart เปเบฅเบฐเบเบฑเบเบเบต smart:
- เปเบเบฅเบฐเบซเบฑเบเบเบญเบเบเบฑเบเบชเบดเบเบเบตเปเบชเบฐเบซเบผเบฒเบ, เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบเบงเบเบชเบญเบเบซเบผเบฑเบเบเบฒเบ (เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบงเบเบกเบฑเบ
เปเบเบเบปเบเบเบงเบฒเบกเบเปเบฒเบญเบดเบ ). - เปเบเบฅเบฐเบซเบฑเบเบเบฑเบเบเบตเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบ ExchangeTransaction เบเบฝเบเปเบเปเบงเปเบฒเบเบฑเบเบเบตเบเบญเบเบเปเบฒเบเปเบเบฑเบเบเบฑเบเบเบตเบเบตเปเบเบปเบเบเบฑเบ. เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบเบฝเบเปเบเปเบเปเบฒเบชเบฑเปเบเบเบทเบเบเบงเบเบชเบญเบ. เปเบเบฅเบฐเบซเบฑเบเบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ, เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเบชเบฑเปเบเบเบทเปเปเบเบเบเบปเบเปเบเป; เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบ ExchangeTransaction, เปเบฅเบฐเบเปเบฒเบเปเบฒเปเบเบฑเบ, เบชเบฐเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบฒเบเบกเบฑเบ.
- เบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ, เบเปเปเบเบทเบเบฑเบเบเบฑเบเบเบตเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ, เบเปเปเบกเบตเบชเบฐเบเบฒเบเบฐ, เปเบเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบชเบฐเบเบฒเบเบฐเบเบฑเบเบเบตเบเบฒเบเบชเบฐเบเบฃเบดเบเปเบเป.
เบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฝเบเบชเบฑเบเบเบฒเบเปเบฒเบเบเบถเปเบเบซเบผเบฒเบ, เปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบซเบผเบฒเบเบเปเบฅเบฐเบเบตเบกเบตเบเบงเบฒเบกเบเบฑเบเปเบเบ เปเบฅเบฐเบชเบฐเบซเบเปเบฒเบเบฒเบก.
เบเบฑเบเบชเบดเบเบเบทเบเบขเบธเบ
เปเบเบทเปเบญ freeze เบเบฑเบเบชเบดเบเปเบซเปเบเบงเบฒเบกเบชเบนเบเบเบญเบเบเบฑเบเบเบตเปเปเบเปเบเบญเบ เบเบงเบฒเบกเบชเบนเบเปเบเบปเปเบฒเปเบฒเบ, เบเปเบฒเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเปเบฒเบเบตเปเบขเบนเปเปเบเบชเบฐเบเบดเบเบเบญเบเบเบฑเบเบชเบดเบ smart เบเบฑเปเบเบเปเปเปเบเบเบตเป:
let targetHeight = 1500000
height >= targetHeight
height - ััะฝะบัะธั ัะทัะบะฐ, ะฒะพะทัะฐัะฐััะฐั ัะตะบัััั ะฒััะพัั.
เปเบเบทเปเบญเบเปเบเบชเบฐเปเบเบฒเบฐเบเบญเบ Matcher
เปเบเบทเปเบญเบเบฑเปเบเบเบปเบงเบเบฑเบเบเบนเปเบชเบฐเปเบเบฒเบฐเปเบเบฑเบเบเบตเปเบเปเบญเบเบเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเบตเปเบขเบนเปเบเบญเบเบกเบฑเบเปเบเบฑเบเบเบนเปเบชเบปเปเบเปเบเบชเบฐเบเบฃเบดเบเบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐเบเบตเปเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบฑเปเบเบเบตเป:
match tx {
case t : ExchangeTransaction =>
t.sender == addressFromString("3PJaDyprvekvPXPuAtxrapacuDJopgJRaU3")
case _ => true
}
"เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบชเบตเบเบฒเบง" เบเบญเบเบเบนเปเบฎเบฑเบ
เปเบเบทเปเบญเบญเบฐเบเบธเบเบฒเบเปเบซเป tokens เบเบทเบเบชเบปเปเบเปเบเบซเบฒเบเบฑเบเบเบตเบเบตเปเปเบเปเบเบญเบ - เปเบเบทเปเบญเบชเปเบฒเบ "เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบชเบตเบเบฒเบง" เบเบญเบเบเบนเปเบฎเบฑเบ - เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบฑเบเบชเบดเบเบเบตเปเบชเบฐเบซเบฅเบฒเบเบเบตเปเบกเบตเปเบเบเบเบฒเบเบเปเปเปเบเบเบตเปเบเบตเปเบเบงเบเบชเบญเบเบเบฒเบเบฅเบงเบกเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป:
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
}
เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเปเบฒเบเบเบงเบฒเบกเบเบญเบเปเบเปเบฅเบฐเบเบงเบฒเบกเบชเบปเบกเบเบนเบเบเบตเปเบชเบฒเบกเบฒเบเบเบดเบชเบนเบเปเบเปเบเบญเบเบเบฒเบชเบฒ, เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเปเปเบกเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเปเบฒเบเบทเบ. เบเบฑเปเบเบเบฑเปเบเบเบถเปเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบฑเบเบเบธเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบชเบตเบกเบฑเบ.
"เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบชเบตเบเปเบฒ" เบเบญเบเบเบนเปเบฎเบฑเบ
เปเบเบฑเปเบเบเบฝเบงเบเบฑเบ, เปเบเบทเปเบญเบซเปเบฒเบกเบเบฒเบเบชเบปเปเบ tokens เปเบเบซเบฒเบเบฑเบเบเบตเบเบตเปเปเบเปเบเบญเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบ "เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบชเบตเบเปเบฒ". เปเบโเบเปโเบฅเบฐโเบเบตโเบเบตเป, เปเบเปเบเบดเบเบเบฑเบเบชเบปเบกเบเบฑเบ smart เบเบฝเบงเบเบฑเบเบเบทเบเบเปเบฒเปเบเป, เปเบเปเบกเบตเบเบตเปเบขเบนเปเบเบงเบเบชเบญเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบกเบฑเบเบเปเปเปเบเปเบขเบนเปเปเบเบเบฑเบเบเบตเบเปเบฒ:
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
}
เบเบฒเบโเบชเบปเปเบโเปเบเบโเบเบฒเบโเบญเบฐโเบเบธโเบเบฒเบโเบเบญเบโเบเบนเปโเบญเบญเบโ
เบเบฒเบเบเปเบฒเปเบเปเบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ, เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบฐเบชเบปเปเบเบเบฑเบเบชเบดเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐเบเบฝเบเปเบเปเปเบเปเบฎเบฑเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบเบฒเบเบเบนเปเบญเบญเบ (เบเปเบฒเบเบชเบฑเบเบเบฒ/เปเบตเปเบชเบดเบ). เบเบนเปเบญเบญเบเบเบฑเบเบชเบฐเปเบเบเบเบงเบฒเบกเบเบดเบเบเบญเบกเปเบเบเบเบฒเบเบงเบฒเบ ID เบเบธเบฅเบฐเบเปเบฒเบขเบนเปเปเบเบชเบฐเบเบฒเบเบฐเบเบญเบเบเบฑเบเบเบตเบเบญเบเบเบปเบ:
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
}
เบเบฒเบเบเบทเปเบเบฒเบเปเบเบเบฅเบฒเบเบฒเบเบฒเบ oracle
เปเบเบชเบฐเบเบดเบเบเบฑเบเบชเบดเบเบเบตเปเบชเบฐเบซเบผเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบทเปเบเบฒเบเปเบเบฅเบฒเบเบฒเบเบตเปเบเบปเบเบเบตเปเบขเบนเปเปเบเบชเบฐเบเบฒเบเบฐเบเบญเบ oracle เบเบตเปเปเบเบทเปเบญเบเบทเปเบเปเปเบเบปเปเบฒเบเบฑเปเบ. เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบ 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
}
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฐเปเบเบตเบเบเบฑเบเบเบธเบเบเบตเปเบเปเปเบเบฑเบเปเบเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบงเบเบชเบญเบ ID เบเบญเบเบเบฑเบเบชเบดเบเบเบตเปเบกเบตเบเบฒเบเบเบทเปเบเบฒเบเบเบตเปเบเปเบฒเปเบเบตเบ. เบเบธเบเปเบกเปเบเบงเปเบฒเบเปเบฒ ID เบเบฑเบเบชเบดเบเบเปเปเปเบเปเบเบทเบเบเปเบฒเบเบปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ WAVES. เปเบเบชเบฐเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบเบเบทเปเบเบฒเบเปเบกเปเบเบเปเบฒเปเบเบตเบเปเบเบเปเบญเบกเปเบเบฑเบ WAVES, เปเบเบเบฒเบเบเบตเปเปเบเปเป.
เบเบฒเบเปเบเบตเปเบกเบเบถเปเบเบเบญเบเบฅเบฒเบเบฒเบเบปเบเบเบตเป
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเบเบปเบโเบฅเบฒโเบเบฒโเบเบปเบโเบเบตเปโเบชเปเบฒโเบฅเบฑเบโเบเบฑเบโเบชเบดเบ smart เปเบเปโ, เปเบเบดเปเบโเบเบฐโเปเบเบตเปเบกโเบเบถเปเบโเบเบฑเปเบโเบเบญเบโเบเบตโเปเบโเบญเบฑเบโเบเบฒโเบชเปเบงเบโเบเบตเปโเปเบเปโเบฎเบฑเบโ. เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบ script เบเบฑเบเบชเบดเบเบเบตเปเบฅเบฒเบเบฒเบเบฐเปเบเบตเปเบกเบเบถเปเบ 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
}
เบเบฒเบเบเบทเปเบเบฒเบเปเบฅเบเบฐเบซเปเบฒเบ
เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบเบญเบเปเบเบเบฑเบเบชเบฐเบเบดเบ, เบเบฒเบเบเบทเปเบเบฒเบเบเบฑเบเบชเบดเบเบเบตเปเบชเบฐเบซเบผเบฒเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบฑเบเปเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบเปเบญเบ. เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบ script เบเบฑเปเบเบเปเบฒเบง:
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