Pamekar Christophe Verdot nyarioskeun ngeunaan kursus online '' anu anjeunna nembe lulus.

Ngabejaan urang saeutik ngeunaan diri. Naon anu dipikaresep ku anjeun dina kursus ieu?
Abdi parantos ngadamel pamekaran wéb sakitar 15 taun, biasana salaku freelancer.
Nalika ngembangkeun aplikasi wéb pikeun ngadaptar jangka panjang pikeun nagara berkembang pikeun grup perbankan, kuring disanghareupan tugas ngahijikeun sertifikasi blockchain kana éta. Dina waktos éta, kuring henteu terang seueur ngeunaan sertifikasi blockchain, sanaos kuring parantos resep kana téknologi crypto, utamina salaku investor.
Hasilna, fungsi ieu teu dilaksanakeun, tapi, mikir yén organisasi jeung bank museurkeun solusi misalna pikeun aplikasi maranéhanana, kuring mimiti diajar masalah jeung geura-giru ngaluncurkeun proyék. .
Kuring ngembangkeun versi béta tina éta, anu parantos sayogi dina mainnet. Dina waktos éta, teu aya [Basa pamrograman Gelombang] Ride, janten kuring ngalakukeun sadayana ku cara anu paling sederhana, nganggo transaksi tarjamahan sareng JSON anu disarangkeun. Tapi tujuan utama nyaéta pikeun nambihan fungsionalitas anu langkung maju saatos Ride diluncurkeun. Sareng ieu mangrupikeun alesan utama kuring ngiringan kursus: tahap salajengna pangwangunan proyék ngalibatkeun nyiptakeun aplikasi desentralisasi (dApp).
Aspék mana tina kursus anu anjeun mendakan panggampangna sareng mana anu paling nangtang?
Hal pangbasajanna éta urang boga cukup waktu pikeun sakabéh tugas. Inti tina kursus nyaéta pikeun diajar hiji hal, sareng henteu saling bersaing. Kateranganna tiasa diaksés pisan sareng ilustrasina saderhana tapi komprehensif. Ieu ngabantuan pikeun ngabayangkeun sareng ngartos topik anu béda.
Nalika ngaréngsékeun tugas, urang didorong pikeun mikir mandiri sareng sakapeung diajar sorangan. Ieu mangrupikeun cara anu pangsaéna pikeun diajar sareng ngartos ideu anu katutupan di kelas.
Sababaraha kali kuring henteu ngartos sapinuhna bagian téori dugi ka mimiti nyerat kode nalika ngarengsekeun tugas. Kami henteu diidinan ngalakukeun 'salinan / témpél', kami kedah nyerat sadayana kode nyalira, sareng ieu ogé ngabantosan urang ngartos sadayana langkung saé.
Hal anu paling hese nyaéta patarosan dina tugas pilihan ganda henteu salawasna jelas. Basa Inggris mah teu sampurna, da soal-soalna ditulis ku non-native speaker, jadi kadang aya salah paham.
Panginten bagian tina kursus khusus pikeun oracles sareng NFT tiasa langkung rinci. Tapi, dina sagala hal, tujuan utama kursus nyaéta pikeun kapentingan pamekar. Lajeng, dina raraga pinuh ngartos sagala aspek na, anjeun bakal, tangtosna, kudu méakkeun sababaraha waktos experimenting sarta practicing.
Ngabejaan urang langkung seueur ngeunaan solusi anu anjeun damel sapanjang kursus - 'Kupon Bazaar'? Dupi abdi tiasa ningali sababaraha conto kode?
Leres, kami damel 'Bazaar Kupon', ieu mangrupikeun pasar dimana jalma-jalma ngajual sareng ngagaleuh kupon anu masihan aranjeunna hak mésér barang sareng jasa kalayan harga anu langkung handap. Unggal kupon diwakilan ku aset digital anu nawiskeun diskon khusus ti supplier.

Sababaraha komponén aplikasi perlu dimekarkeun. Kahiji, perlu nyieun sistem pikeun ngadaptar suppliers jeung ngatur kupon. Teras kami peryogi fungsi verifikasi sareng kamampuan pikeun pangguna milarian kupon.

Salila kursus urang ogé ditambahkeun sababaraha fitur anyar, kaasup sistem voting sarta fitur nu ngidinan Anjeun pikeun pariksa jeung suppliers blacklist.
Mimiti, urang diajar bédana antara aset pinter, akun pinter, sareng akun dApp sareng dasar-dasar damel sareng fungsi verifier. Fungsi Verifier ngamungkinkeun anjeun ngarobih paripolah standar akun anjeun. Sacara standar aranjeunna pariksa tanda tangan transaksi, tapi fitur verifier ngamungkinkeun anjeun nyetél "aturan" anu sanés.
{-# 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
}
}Teras we mimiti nambahkeun kupon. Kami nganggo salah sahiji fungsi anu paling penting tina dApp, anu ngamungkinkeun anjeun pikeun ngarékam data tina jinis naon waé dina blockchain dina bentuk pasangan konci-nilai - transaksi data. Urang digabungkeun jeung transaksi anyar, invokeScript, nu dipaké pikeun nelepon hiji fungsi callable dina dApp ti luar blockchain nu.
Jinis transaksi data anu kami anggo salami kursus nambihan kupon ka pasar:
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)
})Pikeun ngolah data ieu kalawan fungsi addItem sarta ngamekarkeun fungsi pameseran jeung pilihan séjén, kami dipaké hiji fungsi callable yén pamaké bisa nelepon ti luar blockchain nu. Hasilna, éta tiasa ngalaksanakeun sababaraha pancén, sapertos ngamimitian transfer dana, nyerat atanapi ngapdet data dina toko data dApp, jsb.
Ieu conto fungsi anu disebut anu dianggo dina fungsi 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)
])
}
}Kami engké ngembangkeun sistem voting anu ngamungkinkeun anjeun milih pikeun ngamajukeun atanapi ngahapus produk anu tangtu. Pikeun nyegah pangaruh luar kana prosés voting, éta ngagunakeun skéma 'Commit-Reveal'.
Fase "komit" dianggo pikeun ngumpulkeun sora énkripsi nganggo fungsi hash sareng "uyah".
Fase "ngungkabkeun" dianggo pikeun ngumpulkeun sora énkripsi sareng ngabandingkeun hashesna.
Ieu conto tina fungsi anu disebut dianggo di dieu:
@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)
])
}
}
>Naon deui anu anjeun pelajari tina kursus?
Tangtu ogé kaasup tokenization sarta non-fungible tokens (NFTs) - tokens nu ngagambarkeun hal unik sahingga teu fungible.
Pangajaran panungtungan ieu devoted kana oracles. Kusabab blockchain teu tiasa nampi data ti dunya luar, urang peryogi oracles pikeun ngirim data ieu ka dinya.
Pikeun pasar urang, oracles diperlukeun pikeun pariksa jeung, lamun perlu, blacklist a supplier nu, contona, teu narima kupon dijual.
Ieu conto:
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)
])
}
}
Naon anu paling mangpaat pikeun anjeun?
Bagian anu paling mangpaat nyaéta tugas. Hatur nuhun ka aranjeunna, bahan ceramah janten langkung jelas, sareng pangaweruh anu énggal dihijikeun ngaliwatan trial and error. Karya praktis kalawan , и .
Kumaha rencana anjeun pikeun ngalaksanakeun naon anu anjeun pelajari?
Ti mimiti, kuring ngarepkeun yén kursus bakal ngabantosan proyék kuring ka tingkat salajengna. Gagasan éta ayeuna nyerat kodeu dina RIDE. Versi anu aya parantos ngagaduhan fungsi sertifikasi dokumén, tapi hatur nuhun kana RIDE éta tiasa ningkat sacara signifikan. Versi anyar bakal langkung fleksibel sareng intuitif, sareng bakal gaduh seueur fitur, kalebet sertifikasi email, perjanjian multi-pihak, jsb.
Tangtu ieu ogé pamikiran-provoking sarta masihan kuring loba gagasan anyar. Kuring yakin yén hasilna bakal terus muncul dina mangsa nu bakal datang.
sumber: www.habr.com
