Tasva iyo Wave yeWebhu 3.0

Mugadziri Christophe Verdo anotaura nezve online kosi 'Mastering Webhu 3.0 ine Waves' iyo yaachangobva kupfuura.

Tasva iyo Wave yeWebhu 3.0

Tiudze zvishoma nezvako. Chii chaunofarira mukosi iyi?

Ndanga ndiri mugadziri wewebhu kweanoda kusvika makore gumi nemashanu, zvakanyanya senge freelancer.

Ndichiri kugadzira webhupu yekunyoresa kwenguva refu yenyika dzichiri kusimukira yeboka rebhangi, ndakatarisana nebasa rekubatanidza blockchain certification mairi. Panguva iyoyo, ndakanga ndisingazivi zvakawanda nezve blockchain certification, kunyange ndakanga ndatova nehanya ne crypto technologies - kunyanya semubhadhari.

Nekuda kweizvozvo, chimiro ichi hachina kuitwa, asi, ndichifunga kuti masangano nemabhangi vanofarira mhinduro yakadaro yezvikumbiro zvavo, ndakatanga kudzidza nyaya uye nekukurumidza ndakatanga chirongwa ichi. Signature Chain.

Ini ndakagadzira beta vhezheni yayo iyo yave kuwanikwa pane mainnet. Panguva iyoyo [mutauro weWaves programming] Ride yanga isati yavapo, uye ndakaita zvese zviri nyore, ndichishandisa shanduro yekushandura neJSON yakagara. Asi chinangwa chikuru chaive chekuwedzera mashandiro epamberi mushure mekutangwa kweRide. Uye ichi ndicho chikonzero chikuru chandakaita kuti ndipinde mukosi iyi: nhanho inotevera yekuvandudzwa kweprojekiti inosanganisira kugadzirwa kwedecentralized application (dApp).

Ndedzipi zvikamu zvekosi zvawawana zviri nyore uye ndezvipi zvakanyanya kuoma?

Chinhu chakareruka ndechekuti taiva nenguva yakakwana yemabasa ese. Chinangwa chechikoro ndechekudzidza chimwe chinhu, kwete kukwikwidzana. Tsananguro dzaive nyore uye mifananidzo yaive nyore asi yakazara. Zvaibatsira kuona uye kunzwisisa misoro yakasiyana.

Sorutivi rwemigove, takakurudzirwa kufunga takazvimirira uye dzimwe nguva kudzidza zvinhu tiri toga. Iyi ndiyo nzira yakanaka yekudzidza chimwe chinhu uye kunzwisisa pfungwa dzinokurukurwa mukirasi.

Kanoverengeka ini handina kunyatsonzwisisa chikamu chedzidziso kusvika ndatanga kunyora kodhi ndichipedza basa. Hatina kubvumidzwa kuita 'copy/paste', taifanira kunyora kodhi yese isu pachedu, uye izvi zvakabatsirawo kunzwisisa zvese zviri nani.

Chinhu chakanyanya kuoma chaive chekuti mibvunzo mubasa resarudzo dzakawanda yaisagara yakajeka. Chirungu changu hachina kukwana uye mibvunzo yacho yainyorwa nemunhu asiri chizvarwa saka paitova nekusanzwisisana.

Zvichida chikamu chekosi yakatsaurirwa kune zvirevo uye NFTs inogona kutsanangurwa zvakanyanya. Asi, chero zvipi zvazvo, basa guru rekosi ndeyekufarira vanogadzira. Zvino, kuti unzwisise zvizere maficha ayo ese, iwe, chokwadi, uchada kupedza imwe nguva uchiedza uye uchidzidzira.

Unogona here kutiudza zvimwe nezve mhinduro yawakashanda pairi kosi yese - 'Coupon Bazaar'? Ndinogonawo kuona macode samples?

Hongu, tanga tichishanda pa 'Coupon Bazaar', inova musika unotengesa uye kutenga makuponi anovapa kodzero yekutenga zvinhu nemasevhisi nemutengo wakaderera. Kuponi yega yega inomiririrwa neasiti yedhijitari inopa kuderedzwa kwakakosha kubva kumutengesi.

Tasva iyo Wave yeWebhu 3.0

Zvakanga zvakafanira kuumba akati wandei mafomu ekushandisa. Chekutanga, nzira yaifanira kuiswa yekunyoresa vatengesi uye kubata makuponi. Ipapo taida basa rekuongorora uye kugona kwevashandisi kutsvaga makuponi.

Tasva iyo Wave yeWebhu 3.0

Munguva yekosi, isu takawedzerawo akati wandei maficha, kusanganisira yekuvhota system uye chinhu chinokutendera kuti utarise uye ugovane blacklist vatengesi.

Isu takatanga tadzidza mutsauko uripo pakati pezvinhu zvakangwara, akaunzi akaunzi, uye dApp maakaundi uye izvo zvekutanga zvekushanda nemabasa ekusimbisa. Iyo verifier mabasa inokutendera iwe kuti uchinje iyo default maitiro eakaundi. Nekumisikidza, ivo vanosimbisa masiginecha ekutengeserana, asi iyo verifier basa inokutendera iwe kuseta mamwe "mitemo".

{-# 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
    }
}

Takabva tatanga kuwedzera makuponi. Isu takashandisa rimwe remabasa akanyanya kukosha eDApp, iyo inobvumidza iwe kunyora data yemhando ipi neipi kune blockchain muchimiro chekiyi-kukosha pairs - data transaction. Isu takaisanganisa neiyo nyowani transaction, invokeScript, iyo inoshandiswa kudaidza inonzi basa mudApp kubva kunze kwe blockchain.

Mhando yekutengeserana kwedata yatakashandisa panguva yekosi iri kuwedzera makuponi kumusika:

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)
})

Kuti tigadzirise iyi data neaddItem basa uye kukudziridza basa rekutenga uye dzimwe sarudzo, takashandisa inoshevedzera basa iro mushandisi anogona kufona kubva kunze kwe blockchain. Nekuda kweizvozvo, inogona kuita mabasa akasiyana siyana, sekutanga kuendesa mari, kunyora kana kuvandudza data muDApp data store, nezvimwe.

Heino muenzaniso weinodanwa basa rinoshandiswa mukuwedzeraItem basa:

@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)
        ])
    }
}

Takazogadzira hurongwa hwekuvhota hunokubvumira kuvhota kusimudzira kana kubvisa zvimwe zvigadzirwa. Kudzivirira kurudziro yekunze pakuvhota, inoshandisa chirongwa che'Commit-Reveal'.

Chikamu che "commit" chinoshandiswa kuunganidza mavhoti akavharidzirwa uchishandisa hashi basa uye "munyu".

Chikamu che "kuburitsa" chinoshandiswa kuunganidza mavhoti akavharidzirwa uye kuenzanisa hashi yavo.

Heino muenzaniso weinonzi function inoshandiswa pano:

@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)
        ])
    }
}
>

Chii chimwe chawakadzidza kubva mukosi?

Iyo kosi yaisanganisirawo tokenization uye isiri-fungible tokens (NFT) - zviratidzo zvinomiririra chimwe chinhu chakasiyana uye saka chisingachinjike.

Chidzidzo chekupedzisira chakanga chakanangana nezvirevo. Sezvo iyo blockchain isingakwanise kugamuchira data kubva kunze kwenyika, isu tinoda maoracles kutumira iyi data kwairi.

Pamusika wedu, zvirevo zvaidiwa kuti zvionekwe uye, kana zvichidikanwa, kusarudzika kune mutengesi uyo, semuenzaniso, asingagamuchire kopani rakatengeswa.

Heuno muenzaniso:

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)
        ])
    }
}

Chii chakanyanya kukubatsira?

Chikamu chinonyanya kukosha ibasa rekuita. Kutenda kwavari, zvinyorwa zvehurukuro zvakava pachena, uye ruzivo ruchangobva kuwanikwa rwakabatanidzwa nekuedza uye kukanganisa. Basa rinoshanda ne HERE, muongorori и oracles.

Unoronga kushandisa sei zvawadzidza?

Kubva pakutanga, ndaitarisira kuti kosi yacho yaizobatsira kuendesa purojekiti yangu kune imwe nhanho. Pfungwa yaive yekuti zvino nyora kodhi sign-web.app paRIDE. Iyo iripo vhezheni yatova negwaro certification maficha, asi nekuda kweRIDE, inogona kuvandudzwa zvakanyanya. Iyo vhezheni nyowani ichave inoshanduka uye inonzwisisika, iine zvimwe zvinhu, zvinosanganisira email certification, akawanda-mapato zvibvumirano, nezvimwe.

Kosi yacho yakandipawo kufunga uye ndakawana mazano matsva akawanda. Ndine chokwadi chekuti maresults achaonekwa mune ramangwana.

Source: www.habr.com

Voeg