Onye nrụpụta Christophe Verdot na-ekwu maka usoro ịntanetị '' nke ọ na-adịbeghị anya gafere.

Gwa anyị ntakịrị gbasara onwe gị. Kedu ihe masịrị gị na nkuzi a?
Anọ m na-eme mmepe webụ ihe dị ka afọ 15, ọkachasị dị ka onye nweere onwe ya.
Mgbe m na-etolite ngwa weebụ maka ndebanye aha ogologo oge maka mba ndị ka na-emepe emepe maka otu ụlọ akụ, enwere m ọrụ nke itinye akwụkwọ ikike blockchain n'ime ya. N'oge ahụ, amaghị m ọtụtụ ihe gbasara asambodo blockchain, ọ bụ ezie na enwere m mmasị na teknụzụ crypto, tumadi dị ka onye na-etinye ego.
N'ihi ya, arụghị ọrụ a, ma, na-eche na òtù dị iche iche na ụlọ akụ nwere mmasị na ngwọta dị otú ahụ maka ngwa ha, amalitere m ịmụ okwu ahụ ma malite ọrụ ahụ n'oge na-adịghị anya. .
M mepụtara ụdị beta nke ya, nke dịlarị na mainnet. N'oge ahụ, enweghị [Waves programming language] Ride, yabụ emere m ihe niile n'ụzọ kachasị mfe, na-eji azụmahịa ntụgharị na JSON akwụ ụgwọ. Mana ebumnuche bụ isi bụ ịgbakwunye ọrụ dị elu ka emechara Ride. Ma nke a bụ isi ihe mere m ji tinye aka na nkuzi ahụ: usoro ọzọ nke mmepe nke ọrụ ahụ gụnyere ịmepụta ngwa ngwa (dApp).
Kedu akụkụ nke nkuzi ahụ kachasị mfe yana nke kacha sie ike?
Ihe kachasị mfe bụ na anyị nwere oge zuru ezu maka ọrụ niile. Isi ihe ọmụmụ ahụ bụ ịmụta ihe, ọ bụghịkwa ịsọpụrụ ibe ya. A na-enweta nkọwa ndị ahụ nke ukwuu na ihe atụ ndị a dị mfe mana nke sara mbara. Nke a nyere aka iji anya nke uche hụ na ịghọta isiokwu dị iche iche.
Mgbe anyị na-emecha ihe omume, a gbara anyị ume iche echiche onwe anyị ma na-amụ ihe n'onwe anyị mgbe ụfọdụ. Nke a bụ ụzọ kacha mma isi mụta na ịghọta echiche ndị kpuchiri ekpuchi na klaasị.
Ọtụtụ oge, aghọtachaghị m akụkụ nke tiori ruo mgbe m malitere ide koodu mgbe m na-emecha ihe omume. E kweghị ka anyị mee 'copy/paste', anyị ga-ederịrị koodu ahụ n'onwe anyị, nke a nyekwara anyị aka ịghọta ihe niile nke ọma.
Ihe kacha sie ike bụ na ajụjụ ndị dị na ọrụ nhọrọ ọtụtụ anaghị adị mfe mgbe niile. Asụsụ Bekee m ezughị oke, ọ bụkwa onye na-asụ asụsụ obodo dere ajụjụ ndị ahụ, yabụ mgbe ụfọdụ enwere nghọtahie.
Ikekwe akụkụ nke nkuzi a raara nye ndị oracles na NFT nwere ike bụrụ nkọwa zuru oke. Ma, n'ọnọdụ ọ bụla, isi ihe mgbaru ọsọ nke usoro ahụ bụ mmasị ndị mmepe. Mgbe ahụ, iji ghọta nke ọma akụkụ ya niile, ị ga-, n'ezie, ọ ga-adị mkpa ka ị were oge na-anwale na ime ihe.
Gwa anyị ihe ngwọta ị rụrụ ọrụ na oge niile - 'Coupon Bazaar'? Enwere m ike ịhụ ụfọdụ ọmụmaatụ koodu?
Ee, anyị rụrụ ọrụ na 'Coupon Bazaar', nke a bụ ụlọ ahịa ebe ndị mmadụ na-ere ma na-azụta Kupọns na-enye ha ikike ịzụta ngwaahịa na ọrụ na ọnụ ala dị ala. A na-anọchi anya coupon ọ bụla site na akụrụngwa dijitalụ nke na-enye mbelata pụrụ iche site n'aka onye na-eweta ya.

Ọ dị mkpa ka emepụta ọtụtụ ngwa ngwa. Nke mbụ, ọ dị mkpa ịmepụta usoro maka ịdebanye aha ndị na-eweta ngwaahịa na ijikwa Kupọns. Mgbe ahụ, anyị chọrọ ọrụ nkwenye na ikike maka ndị ọrụ ịchọ Kupọns.

N'oge usoro ahụ, anyị gbakwunyekwara ọtụtụ atụmatụ ọhụrụ, gụnyere usoro ịtụ vootu na njirimara nke na-enye gị ohere ịchọpụta na ndị na-eweta ndebanye aha.
Nke mbụ, anyị mụtara ihe dị iche n'etiti akụ smart, smart akaụntụ, na akaụntụ dApp yana ihe ndabere nke ịrụ ọrụ na ọrụ nkwenye. Ọrụ nkwenye na-enye gị ohere ịgbanwe omume ndabara nke akaụntụ gị. Site na ndabara ha na-enyocha mbinye aka azụmahịa, mana njirimara nkwenye na-enye gị ohere ịtọ "iwu" ndị ọzọ.
{-# 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
}
}Mgbe ahụ, anyị malitere ịgbakwunye Kupọns. Anyị na-eji otu n'ime ọrụ kachasị mkpa nke dApp, nke na-enye gị ohere ịdekọ data nke ụdị ọ bụla na blockchain n'ụdị isi-uru ụzọ abụọ - azụmahịa data. Anyị jikọtara ya na azụmahịa ọhụrụ, invokeScript, nke a na-eji na-akpọ ọrụ nwere ike ịkpọ na dApp site na mpụga blockchain.
Ụdị azụmahịa data anyị ji mee ihe n'oge nkuzi ahụ na-agbakwunye Kupọns n'ahịa:
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)
})Iji hazie data a na ọrụ addItem ma mepụta ọrụ ịzụrụ na nhọrọ ndị ọzọ, anyị na-eji ọrụ ịkpọ oku nke onye ọrụ nwere ike ịkpọ site na mpụga blockchain. N'ihi ya, ọ nwere ike ịrụ ọrụ dị iche iche, dị ka ịmalite ịnyefe ego, ide ma ọ bụ imelite data na ụlọ ahịa data dApp, wdg.
Nke a bụ ọmụmaatụ nke ọrụ akpọrọ ejiri na ọrụ 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)
])
}
}Anyị mechara mepụta usoro ịtụ vootu nke na-enye gị ohere ịme ntuli aka iji kwalite ma ọ bụ wepu ụfọdụ ngwaahịa. Iji gbochie mmetụta mpụga na usoro ịtụ vootu, ọ na-eji atụmatụ 'Commit-Reveal'.
A na-eji usoro "commit" iji nakọta votu ezoro ezo site na iji ọrụ hash na "nnu".
A na-eji usoro “mkpughe” na-anakọta votu ezoro ezo wee tulee hashes ha.
Nke a bụ ọmụmaatụ nke ọrụ akpọrọ ejiri ebe a:
@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)
])
}
}
>Kedu ihe ọzọ ị mụtara na nkuzi ahụ?
Usoro ahụ gụnyekwara tokenization na tokens na-abụghị fungible (NFTs) - akara ngosi na-anọchi anya ihe pụrụ iche na ya mere ọ bụghị fungible.
Ihe nkuzi ikpeazụ bụ etinyere na ọnụ-ọgụgụ. Ebe ọ bụ na blockchain enweghị ike ịnata data sitere na mpụga ụwa, anyị chọrọ oracle iziga data a na ya.
Maka ebe a na-ere ahịa anyị, a chọrọ okwu ọnụ iji nyochaa ma, ọ bụrụ na ọ dị mkpa, depụta aha onye na-ebubata ngwaahịa nke, dịka ọmụmaatụ, na-anabataghị coupon rere.
Lee otu ihe atụ:
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)
])
}
}
Kedu ihe kacha baara gị uru?
Akụkụ kachasị baa uru bụ ọrụ. N'ihi ha, ihe nkuzi ahụ bịara doo anya karị, a na-ejikọta ihe ọmụma ọhụrụ enwetara site na nnwale na njehie. Ọrụ bara uru na , и .
Kedu otu ị ga-esi eme atụmatụ itinye ihe ị mụtara n'ọrụ?
Site na mmalite, echere m na nkuzi ahụ ga-enyere aka mee ka ọrụ m gaa n'ọkwa ọzọ. Echiche bụ ka ị dee koodu ugbu a na RIDE. Ụdị dị adị enweelarị ọrụ asambodo akwụkwọ, mana ekele RIDE enwere ike imeziwanye ya nke ọma. Ụdị ọhụrụ a ga-enwekwu mgbanwe na nghọta, ọ ga-enwekwa atụmatụ ndị ọzọ, gụnyere asambodo nke ozi-e, nkwekọrịta ọtụtụ ndị otu, wdg.
Usoro ọmụmụ ahụ bụkwa ihe na-akpali iche echiche ma nye m ọtụtụ echiche ọhụrụ. Enwere m obi ike na nsonaazụ ga-aga n'ihu na-apụta n'ọdịnihu.
isi: www.habr.com
