แขแแแแขแแทแแแแแแ Christophe Verdot แแทแแถแแขแแแธแแแแแแทแแแแถแแถแแขแแธแแแบแแทแ '' แแแแแถแแแแถแแแแแแแถแแแแแแธแแแแแ

แแแแถแแแแพแแแแแแทแ
แขแแแธแแแแฝแแขแแแแ แแพโแขแแแโแ
แถแแโแขแถแแแแแแโแขแแแธโแแแแปแโแแแแโแแทแแแแถโแแแ?
แแแแปแโแแถแโแแแแพโแแถแโแขแแทแแแแโแแแ แแแแแโแแแแ แแ 15 แแแแถแโแแโแ แพแ แแถแแ
แแแพแโแแถโแขแแแโแฏแแแถแแแแ
แแแแแแแแแแแแแปแแแแแแพแแแแแแแทแแธแแแ แแแแแแแแแแถแแแแถแแ แปแแแแแแแแแแแแแแแแแแแแถแแแแแแแแแแแแปแแขแแทแแแแแแแแแแแถแแแแแแปแแแแถแแถแ แแแแปแแแถแแแแแแแแปแแแนแแแถแแแทแ แแ แแแแถแแแฝแแแแแ แผแแแถแแแแแแถแแ blockchain แแ แแแแปแแแถแ แแ แแแแแแ แแแแปแแแทแแแถแแแนแแ แแแพแแขแแแธแแทแแแแถแแแแแแแ blockchain แแ แแแแแธแแถแแแแปแแ แถแแแขแถแแแแแแแแพแแ แแ แแแแทแแแแถแแแแธแแแผ แแถแแ แแแพแแแถแแทแแทแแแแทแแแแแแแ
แแถแแแแแแ แแปแแแถแแแแแแทแแแแแผแแแถแแขแแปแแแแแแ แแแปแแแแแแแแแทแแแถแแแแถแแแ แแทแแแแถแแถแแ แถแแแขแถแแแแแแแแนแแแแแแแแแแถแแแแแแแแแแแแถแแแแแแแแทแแธแแแแแแฝแแแ แแแแปแแแถแแ แถแแแแแแพแแแทแแแแถแแธแแแแ แถแแแ แ แพแแแถแแ แถแแแแแแพแแแแแแแแแแแแแแถแแแ .
แแแแปแแแถแแแแแแพแแแแแแแแแถแแแแแแถ แแแแแถแแแฝแ แ แพแแแ แแพแแแแแถแแแแ แแ แแแแแแ แแทแแแถแ [Waves programming language] Ride แแ แแผแ แแแแแแแแปแแแถแแแแแพแขแแแธแแแแแแแแแถแแแถแแแแแแแถแแแแแแแแปแ แแแแแแแพแแแแถแแแแแแแทแแแแแทแแถแแแแแแแแแถแแฝแ JSON แแแแแแแผแแแถแแแแแถแแแ แแแปแแแแแแแแแ แ แแแแแแบแแพแแแแธแแแแแแแแปแแแถแแแแแแทแแแแแแแแแแแแแแแแแแแแถแแแแธ Ride แแถแแ แถแแแแแแพแแ แ แพแแแแแแบแแถแ แแแปแแแ แแแแแแแแแแแปแแ แผแแแฝแแแแแแแทแแแแถแ แแแแถแแแแถแแแแแแถแแแแแแถแแขแแทแแแแแแแแแแแแแแถแแแแแแแแแนแแแถแแแแแแพแแแแแแแทแแธแแทแแแแแแถแ (dApp)แ
แแพโแแทแแแแแถแโแแโแแแแโแแทแแแแถโแแฝแโแแถโแแแโแขแแแโแแโแแพแโแแถโแแแแฝแโแแแแปแ แ แพแโแแฝแโแแถโแแถโแแถแโแแแแถแโแแแแปแ?
แขแแแธโแแแโแแถแแแแโแแแแปแโแแบโแแพแโแแถแโแแแโแแแแถโแแแแแโแแแแถแแโแแแแแถแแโแแแแแโแแทแ แแ แแถแแ แ แแแปแ โแแโแแแแโแแทแแแแถโแแบโแแแโแขแแแธโแแฝแโแ แพแโแแทแโแแแแผแโแแแแแแโแแแแถโแแแ แแถแแแแแแแแแบแขแถแ แ แผแแแแแพแแถแแแแแถแแแแถแแ แ แพแแแผแแแถแแแบแแถแแแแ แแแปแแแแแแถแแแแแแแแแผแแแแผแแถแแ แแแแแถแแแฝแแฑแแแแพแแแพแ แแทแแแแแขแแแธแแแแแถแแแแแแแแแแ
แแแโแแแแแโแแทแ แแ แแถแ แแพแโแแแแผแโแแถแโแแพแโแแนแโแ แทแแแโแฒแแโแแทแโแแแโแฏแแแถแแแ แ แพแโแแแโแแแแโแแทแแแแถโแขแแแธโแแฝแโแแแโแแแแฝแโแแพแแ แแแแแถแแทแแธแแแขแแแแปแแแพแแแแธแแแ แแทแแแแแแแแแแแธแแแแทแแแแแแถแแแ แแแแปแแแแแถแแแ
แแถแ แแแพแแแ แแแแปแแแทแแแแแ แแแถแแแแธแแแแแแแแแนแแแแธแแ แแ แผแแแแแแแแปแแ แถแแแแแแพแแแแแแแแผแแแแแแแแแแแทแ แแ แแถแแแฝแแ แแพแแแทแแแแแผแแแถแแขแแปแแแแถแแฑแแ 'แ แแแแ/แแทแแแแแถแแ' แแ แแพแแแแแผแแแแแแแแผแแแถแแแขแแแแแแแแแฝแแฏแ แ แพแแแแแแแแฝแแแพแแฑแแแแแแแแแแแแแถแแแถแแแแแแแแแพแแกแพแแแแแแแ
แขแแแธโแแแโแแทแแถแโแแแแปแโแแแโแแบโแแแแฝแโแแแแปแโแแทแ แแ แแถแโแแ แปโแแแแแพแโแแทแโแแแแแโแ แแแถแแโแแแ แแถแแถแขแแแแแแแแแแแแแแแปแแแทแแแแขแฅแแแแ แแแแ แ แพแแแแแฝแแแแแผแแแถแแแแแแแแแแขแแแแแทแแถแแแแแแทแแแแแแถแแแแถแแทแแพแ แแผแ แแแแแแฝแแแถแแแถแแแถแแแแแ แแแแแ
แแแแ แแแแถแแแแแแแแแแแแแทแแแแถแแแแงแแแแทแแแแ oracles แแทแ NFTs แขแถแ แแแแผแแแถแแแแแขแทแแแแแแแแแแแ แแแปแแแแแแแแปแแแแแธแแถแแแแแ แแแแแ แแแแถแแแแแแแแแแทแแแแถแแบแแพแแแแธแฑแแแขแแแแขแแทแแแแแแแ แถแแแขแถแแแแแแแ แแแแแถแแแแ แแพแแแแธแแแแฑแแแแถแแแแแแแแแผแแแทแแแแแถแแแถแแแขแแแแแแแแถ แแแแถแแแแถแแ แขแแแแแนแแแแแผแแ แแแถแแแแแแแแแแพแแแแธแแทแแแแแ แแทแแขแแปแแแแแ
แแแแถแแแแพแแแแแแแแขแแแธแแแแแแแแแถแแแแแขแแแแแถแแแแแพแแถแแแแแแฝแแแแแ - 'Coupon Bazaar'? แแพแแแแปแแขแถแ แแพแแงแแถแ แแแแแผแแแฝแแ แแแฝแแแถแแแ?
แแถแ แแพแแแถแแแแแพแแถแแแ 'Coupon Bazaar' แแแแแบแแถแแธแแแแถแแแแแแแปแแแแแแ แแทแแแทแแแแแแแแแแแแแแแฑแแแแฝแแแแแผแแแทแแแแทแแแแปแแแถแแแทแแแแแทแ แแทแแแแแถแแแแแแแแปแแแแแแแแถแแ แแแแแแแธแแฝแแแแแแผแแแถแแแแแถแแแแแแแแแแแแแแแแแแทแแธแแธแแแแแแแแแแแแถแแแแแ แปแแแแแแแแทแแแแแธแขแแแแแแแแแแแแแแ

แแแถแแแถแแแแแแแทแแธแแถแ
แแแพแแแแแแแแผแแแถแแแพแแแแธแแแแแพแแ แแถแแแแผแ แ
แถแแแถแ
แแแแแผแแแแแแพแแแแแแแแแแแแแแถแแแแถแแ
แปแแแแแแแขแแแแแแแแแแแแแ แแทแแแแแแแแแแแแแแแแ แแแแแถแแแแ แแพแแแแแผแแแถแแแปแแแถแแแแแแแแแแถแแ แแทแแแแแแแแถแแแแแแถแแแขแแแแแแแพแแแแถแแแแแแปแแแถแแแแแแแแแแผแแแปแแ

แแแแปแแขแแกแปแแแแแแแแแแทแแแแถ แแพแแแแแถแแแแแแแแแปแแแถแแแแแธแแแถแ
แแแพแ แแฝแแแถแแแแแแแแแแแแแแแแแแ แแทแแแปแแแถแแแแแขแแปแแแแถแแฑแแแขแแแแแแแแแแแแถแแ แแทแแแถแแแแแแปแแแแแแธแแแแ
แขแแแแแแแแแแแแแแ
แแถแแแแผแ แแพแแแถแแแทแแแแถแแธแแถแแแปแแแแแถแแแถแแแแแแแแแแแแแแแทแแแแถแแแ แแแแธแแแแถแแแ แแทแแแแแธ dApp แแทแแแผแแแแแถแแแแแนแแแแแถแแแแแพแแถแแแถแแฝแแแปแแแถแแแแแแแแแแถแแแ แแปแแแถแแแแแแแแแแถแแแขแแปแแแแถแแฑแแแขแแแแแแแถแแแแแแผแแฅแแทแแถแแแแแแถแแแพแแแแแแแธแแแแแขแแแแ แแถแแแแแถแแแพแ แแฝแแแแแแแแแแแแถแแแ แแแแแแแถแแแแแทแแแแแทแแถแ แแแปแแแแแแปแแแถแแแแแแแแแแถแแแขแแปแแแแถแแฑแแแขแแแแแแแแ "แ แแแถแแ" แแแแแแแแแ
{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
letownerPublicKey = base58'H8ndsHjBha6oJBQQx33zqbP5wi8sQP7hwgjzWUv3q95M'
@Verifier(tx)
funcverify() = {
matchtx {
cases: SetScriptTransaction=>sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublicKey)
cased: DataTransaction=>true
case_ =>false
}
}แแแแแถแแแแแแพแแ แถแแแแแแพแแแแแแแแแผแแแปแแ แแพแแแถแแแแแพแแปแแแถแแแแแแแถแแแแแแปแแแฝแแแแแ dApp แแแแขแแปแแแแถแแฑแแแขแแแแแแแแแแถแแทแแแแแแแแแแแแแแแแถแแฝแแแ แแแแปแ blockchain แแแแปแแแแแแแแแแแผแแแแแแแแแแนแ - แแแแแทแแแแแทแแถแแแทแแแแแแแ แแพแแแถแแแแแ แผแแแถแแถแแฝแแแนแแแแแแทแแแแแทแแถแแแแแธแแฝแแแบ invokeScript แแแแแแแผแแแถแแแแแพแแพแแแแธแ แ แแปแแแถแแแแแขแถแ แ แ แแถแแแ แแแแปแ dApp แแธแแถแแแแแ blockchain แ
แแแแแแแแแแแแแทแแแแแทแแถแแแทแแแแแแแแแแแพแแแถแแแแแพแแแแปแแขแแกแปแแแแแแแแแแทแแแแถแแบแแถแแแแแแแแแแแแแแ แแธแแแแถแแ
letdatajson = {
"title": "t-shirt with , vote 1",
"coupon_price": 10000000,
"old_price": 1000000000,
"new_price": 100000000,
"address": "Universe",
"description": "I want you to make love, not war, i know you've heard it before",
"image": "https://bit.ly/2EXTghg"
}
it('add item', asyncfunction(){
letts = invokeScript({
dApp: dappAddress,
call:{
function:"addItem",
args:[
{ type:"string", value: datajson.title },
{ type:"integer", value: datajson.coupon_price },
{ type:"string", value: JSON.stringify(datajson) }
]},
payment: []
}, accountSupplierSeed)
lettx = awaitbroadcast(ts)
awaitwaitForTx(tx.id)
})แแพแแแแธแแแแพแแแถแแแทแแแแแแแแแแแถแแฝแแแนแแแปแแแถแ addItem แแทแแขแแทแแแแแแปแแแถแแแทแ แแทแแแแแแพแแแแแแแแแ แแพแแแถแแแแแพแแปแแแถแแแแแขแถแ แ แ แแถแแแแแขแแแแแแแพแแแแถแแแขแถแ แ แ แ แแแแธแแถแแแแแ blockchain แ แแถแแแแแแ แแถแขแถแ แแแแแแแทแ แแ แแถแแแแแแแแแถแ แแผแ แแถแ แถแแแแแแพแแแแแแแแผแแแทแแท แแถแแแแแแ แฌแแแแพแแ แแ แปแแแแแแแแถแแแทแแแแแแแแ แแแแปแแแแแถแแแแทแแแแแแ dApp แแถแแพแแ
แแแแแบแแถแงแแถแ แแแแแแขแแปแแแแแแแแแแ แ แแแแพแแแแปแแแปแแแถแ addItemแ
@Callable(i)
funcaddItem(title: String, price: Int, data: String) = {
letsupplierAddress = toBase58String(i.caller.bytes)
letitem = getKeyItem(supplierAddress, title)
if( price <= 0) thenthrow("purchase amount cannot be less than item price")
elseif( getValueItemSupplier(item) !=NONE ) thenthrow("an item is already exist")
else{
WriteSet([
DataEntry(getKeyItemSupplier(item), supplierAddress),
DataEntry(getKeyItemPrice(item), price),
DataEntry(getKeyItemData(item), data)
])
}
}แแแแแแแแแพแแแถแแแแแแพแแแแแแแแแแแแแแแแแแแฝแแแแแขแแปแแแแถแแฑแแแขแแแแแแแแแแแแแพแแแแธแแแแแแแแแแถแ แฌแแปแแแแทแแแแแฝแแ แแแฝแแ แแพแแแแธแแแแแแแถแแแฅแแแแทแแแแถแแแแแ แแพแแแแพแแแถแแแแแแแแแ แแถแแแแพแแแแแแแถแแแ 'Commit-Reveal' แ
แแแแถแแแแถแ "แแแแแแแแถ" แแแแผแแแถแแแแแพแแพแแแแธแแแแแผแแแแแแนแแแแแแแแแแแถแแขแแทแแแแแธแแแแแแแแพแแปแแแถแ hash แแทแ "แขแแแทแ" แ
แแแแถแแแแถแ "แแแแ แถแ" แแแแผแแแถแแแแแพแแพแแแแธแแแแแผแแแแแแนแแแแแแแแแแแถแแขแแทแแแแแธแ แแทแแแแแแแแแแแแแแถแ แถแแแแแแแฝแแแแ
แแแแแถแงแแถแ แแแแแแแปแแแถแแแแแแแ แ แแแแพแแ แแธแแแแ
@Callable(i)
funcvoteCommit(item: String, hash: String) = {
letuser = toBase58String(i.caller.bytes)
letcommits = getValueCommitsCount(item)
letstatus = getValueItemStatus(item)
if( commits >=VOTERS) thenthrow("reached max num of voters")
elseif(getValueCommit(item, user) !=NONE) thenthrow("user has already participated")
elseif(getKeyItemSupplier(item) ==NONE) thenthrow("item does not exist")
elseif(status !=NONE && status !=VOTING) thenthrow("voting is not possible")
else{
WriteSet([
DataEntry(getKeyCommit(item, user), hash),
DataEntry(getKeyCommitsCount(item), commits +1),
DataEntry(getKeyItemStatus(item),if(commits ==VOTERS) thenREVEAL elseVOTING)
])
}
}
>แแพแขแแแแแถแแแแแขแแแธแแแแแธแแแแแแทแแแแถ?
แแแแแแทแแแแถแแแแถแแแฝแแแแแ แผแแแแแแแแผแแแแแแถแแแแแถแแ แแทแแแแแแถแแแแแถแแแแแแแทแแแแแแถแแแแทแ (NFTs) - แแแแแถแแแแแถแแแแแแแแแถแแฑแแแขแแแธแแฝแแแแแแแแแแแธแแ แ แพแแแผแ แแแแแแถแแทแแขแถแ fungible แแถแแแแ
แแแแแแ แปแแแแแแแแแแผแแแถแแงแแแแทแแแแ oracles แ แแแแแถแ blockchain แแทแแขแถแ แแแฝแแแถแแแทแแแแแแแแธแแทแแแแถแแแแแ แแพแแแแแผแแแถแ oracles แแพแแแแธแแแแแผแแแทแแแแแแแแแแแ แแถแ
แแแแแถแแแแธแแแแถแแแแแแแพแ oracles แแบแ แถแแแถแ แแแพแแแแธแแแแแแแแแถแแ แ แพแแแแแแทแแแพแ แถแแแถแ แ แแแแ แผแแแแแปแแแแแแธแแแแ แขแแแแแแแแแแแแแแแแแแทแแแแฝแแแแแแแแแแแแแถแแแแแ
แแแแแบแแถแงแแถแ แแแ:
funcgetExtValueItemWhiteListStatus(item:String) = {
item +"_verifier_status"
}
letverifier = "3Mx9qgMyMhHt7WUZr6PsaXNfmydxMG7YMxv"
letVERIFIED = "verified"
letBLACKLISTED = "blacklist"
@Callable(i)
funcsetstatus(supplier: String, status: String) = {
letaccount = toBase58String(i.caller.bytes)
if( account !=verifier ) thenthrow("only oracle verifier are able to manage whitelist")
elseif( status !=VERIFIED && status !=BLACKLISTED) thenthrow("wrong status")
else{
WriteSet([
DataEntry(getExtValueItemWhiteListStatus(supplier), status)
])
}
}
แแพแขแแแธแแแแแถแแแแแแแแแแแแแปแแแแแแถแแแขแแแ?
แแแแแแแแแแถแแแแแแแแแแแแแปแแแบแแทแ แแ แแถแแ แแผแแขแแแปแแแแแแฝแแแ แฏแแแถแแแแแแแแแถแแแแแ แแแถแแ แ แพแแ แแแแแแนแแแแแแพแแแแฝแแแถแแแแแผแแแถแแแแแแฝแแแแแแฝแแแถแแแแแแถแแแถแแแแแ แแทแแแแ แปแแ แแถแแแถแแแถแแแแแแแแแถแแฝแ , ะธ .
แแพแขแแแแแถแแแแแแแแแถแแแขแแแธแแแแขแแแแแถแแแแแแแแ แขแแปแแแแแแแแแแแแแถ?
แแถแแแแธแแพแแแแแผแแแ แแแแปแแแแแนแแแถแแแแแแทแแแแถแแแแแนแแแฝแแแพแแแแแแแแแแแแแแแปแแแ แแแแแทแแแแแแถแแแ แแแแทแแแบแแพแแแแธแแแแแแแผแแฅแกแผแแแแ แแ แแพ RIDE แ แแแแแแแแแถแแแแแถแแแแถแแแปแแแถแแแแแแถแแแฏแแแถแแแฝแ แ แพแ แแแปแแแแแแแแแถแ RIDE แแถแขแถแ แแแแผแแแถแแแแแแแขแแแถแแแแแถแแแ แแแแแแแแธแแนแแแถแแแถแแแแแแแ แแทแแแทแ แถแแแแถแแแถแแแปแ แ แพแแแนแแแถแแแปแแแถแแแถแ แแแพแแแแ แแฝแแแถแแแแถแแแแแแถแแแขแแธแแแ แแทแ แแ แแแแแแแแแแแ แปแแถแแธแแถแแพแแ
แแแแโแแทแแแแถโแแแโแแโแแถแโแแถแโแแทแโแแทแโแแแแแโแแแแทแโแแแแธโแแถโแ
แแแพแโแแแโแแแแปแแ แแแแปแโแแฟแแถแแโแแถโแแแแแแโแแนแโแแแแโแแแแ แถแโแแ
โแแแโแขแแถแแแ
แแแแแ: www.habr.com
