Jei norite sužinoti, kaip sukurti „blockchain“, tada patekote į reikiamą vietą. Nerkime gilyn, kad sužinotume, kaip galite sukurti „blockchain“ Python.

Aplink „blockchain“ yra daugybė straipsnių, tačiau ne visi jie kalba apie „blockchain“ kūrimą nuo nulio. Kaip kūrėjas, teorijos yra svarbios, tačiau jūs taip pat turite sukurti „blockchain“, kad visiškai suprastumėte jos sąvoką.

Pagrindinė „blockchain“ idėja yra jos decentralizuotas pobūdis. Jus sužavės faktas, kaip visa tai veikia viduje. „Blockchain“ gali atrodyti paprastai, tačiau viduje yra daugybė protokolų ir algoritmų, kurie tai paverčia. Mes ketiname naudoti „Python“, kad sukurtume „blockchain“ nuo nulio.

Taip pat galite išsaugoti straipsnį ir pažymėti jį kaip „Kaip sukurti mūsų blokų grandinę“. Patikėk manimi; straipsnis jums padės ilgainiui.

Niekada negirdėjote apie „blockchain“? Tada patikrinkite nemokamą „101Blockchain“ kursą. Jei norite tobulinti savo karjerą, apsilankykite „Certified Enterprise Blockchain“ kursuose, kur sužinosite, kaip veikia įmonės „blockchain“. Pradėkime.

Ar esate „Blockchain“ pradedantysis? Registruokitės į „Blockchain Free Course“ ir pradėkite savo „Blockchain“ kelionę dabar.

Kaip sukurti „Blockchain“

Geriausias būdas ko nors išmokti yra mokytis darant. Norėdami įsitikinti, kad esate tame pačiame puslapyje kaip aš, pirmiausia patikrinkime reikalavimus. Mes taip pat trumpai apibūdinsime „blockchain“, kad abu būtume tame pačiame puslapyje.

Kaip sukurti „Blockchain“ sistemoje „Python“

Reikalavimas

Pagrindinis reikalavimas laikytis vadovo yra mokėti koduoti. Jei niekada gyvenime nesi užkodavęs, šis vadovas netinka tau. Aš rekomenduoju peržiūrėti įvairius pradedančiųjų lygio kursus, kurie yra prieinami internete. Norint gauti geriausią mokymosi patirtį, rekomenduoju „EdX“, „Udacity“ ir „Coursera“.

Jūs jau esate koduotojas? Tada turėtumėte žinoti apie pagrindinį „Python“. Be to, tai padės jums vadovautis pamoka „Kaip sukurti„ Blockchain “.

Skaitykite dabar: „Quorum Blockchain Ultimate Guide“

Mes sukūrėme mokymo programą, kad visi galėtų sekti. Taigi, jei jūs nežinote ir norite sužinoti, kaip sukurti „blockchain“ nuo nulio, galite tai padaryti!

Jei nežinote „Python“, nesijaudinkite, nes jį lengva pasiimti. Patikrinkite „Python“ dokumentacija pradėti.

Pamokai naudosime „Python 3.6+“. Jei nuspręsite naudoti kitas „Python“ versijas, gali tekti atlikti daugiau tyrimų, kad kodas veiktų. Pamokų tikslais rekomenduoju įdiegti naudojamą versiją.

Galiausiai, jūs taip pat turėtumėte žinoti apie HTTP – protokolą, naudojamą bendraujant dviem šalims internete.

„Python“ diegimas naudojant „pip“

Turite įdiegti „Python“ naudodami „pip“. Taip pat turite įdiegti nuostabią užklausų ir kolbos biblioteką. Norėdami tai padaryti, tiesiog paleiskite žemiau esančią komandą.

$ pip install Flask == 0.12.2 užklausos == 2.18.4

Jei naudojate „Windows“ aplinką, galite tiesiogiai apsilankyti python.org ir atsisiųsti naujausią „Python“ versiją.

Kalbant apie mane, aš atsisiunčiau „Python 3.8.1“ – naujausią versiją, kai rašiau mokymo programą.

IDE norėčiau naudoti „PyCharm“. Pamoka naudoju „Python Community“ leidimą. Galite laisvai naudoti bet kurį pasirinktą IDE. Kita puiki alternatyva yra „Visual Studio Code“ – nemokama, atviro kodo integruota kūrimo aplinka.

Paskutinis įrankis, kurio jums reikės, yra „Postman“ – HTTP klientas. Arba galite naudoti ir cURL.

Taip pat rekomenduoju įdiegti virtualią aplinką, kad sukurtumėte visiškai kitokią aplinką savo vystymuisi. Jūs galite sekti šį vadovą tinkamai jį nustatyti.

Peržiūrėta „Blockchain“

Prieš eidami kurti „blockchain“, turime atnaujinti „blockchain“ idėją. Tai padės mums likti tame pačiame puslapyje.

„Blockchain“ yra paskirstytosios knygos technologija, kur bendraamžiai gali dalyvauti, bendrauti ir vykdyti operacijas nereikalaujant centralizuoto subjekto. Kiekvienas bendraamžis turi knygos knygą, todėl įsilaužėliams neįmanoma sukčiauti sistemoje. Pagrindinės „blockchain“ savybės yra skaidrumas, nekintamumas ir saugumas. Duomenų saugumui užtikrinti jis naudoja pažangius kriptovaliutos algoritmus. Be to, norint pasiekti sutarimą, „blockchain“ tinkle bus naudojami sutarimo algoritmai, tokie kaip „Darbo įrodymas“, „Įrodymas apie akcijų paketą“ ir t. T..

Taip pat skaitykite: „Blockchain“ pradedantiesiems: darbo pradžios vadovas

„Blockchain“ kūrimo pradžia

Atlikę visus būtinus diegimus, mes esame pasirengę pradėti naudotis savo pamoka „Kaip sukurti„ Blockchain ““.

Norėdami pradėti, turite sukurti failą blockchain.py.

1. „Blockchain“ kūrimas

Pirmasis žingsnis – sukurti funkcinį „blockchain“ sprendimą. Iš pradžių turime sukurti „Blockchain“ klasę. Čia sukursime konstruktorių, kuris inicijuos grandinės ir operacijų sąrašą. Grandinių sąraše bus saugoma mūsų blokų grandinė, o operacijos bus saugomos masyve current_transacations.

def __init __ (savarankiškai): self.chain = [] self.current_transactions = []

Toliau turime sukurti funkciją new_block, kuri bus naudojama kuriant naujus blokus ir pridėjus juos prie esamos grandinės. Funkcijos „new_block“ kodas yra toks:

def new_block (self): # Ši funkcija sukuria naujus blokus ir prideda prie esamo grandinės leidimo

Metodas „new_transcaction“ sukurs naują operaciją ir pridės operaciją prie jau esamo operacijų sąrašo.

def new_transaction (self): #Ši funkcija prideda naują operaciją prie jau esamų operacijų perdavimo. Mes taip pat turime maišos funkciją, kuri naudojama kuriant bloką. @staticmethod def maišos (blokas): #Naudojamas blokui maišyti

Paskutinė funkcija, kurią ketiname sukurti „last_block“. Jis naudojamas paskutiniam grandinės blokui iškviesti.

Čia taip pat galime sukurti dar tris funkcijas.

  • register_node () → Norėdami užregistruoti naują mazgą ir pridėti jį prie tinklo
  • valid_proof () → Užtikrins, kad pateiktas grandinės blokas išspręs problemą
  • valid_chain () → Tai patikrins, ar vėlesni grandinės blokai galioja, ar ne.

„Blockchain.py“ projektas atrodo taip, kaip nurodyta toliau.

klasės „Blockchain“ (objektas): def __init __ (savarankiškai): self.chain = [] self.current_transactions = [] def new_block (self): # Ši funkcija sukuria naujus blokus ir prideda prie esamo grandinės leidimo def new_transaction (self): #Ši funkcija prideda naują operaciją prie jau esamų operacijų, perdavus @staticmethod def hash (block): #Naudojama blokui maišyti @property def last_block (self): # Skambina ir grąžina paskutinį grandinės leidimo bloką

„Blockchain“ klasė valdo visą grandinę. Klasėje apibrėžti apibrėžimai valdo įvairius veiksmus „blockchain“.

Peržiūrėkime kiekvieną iš toliau pateiktų metodų.

Skaitykite dabar: Kas yra „blockchain“ skaldymas: „Blockchain“ mastelio sprendimo įvadas

Bloko struktūra

Bloke yra svarbi informacija apie sandorius ir grandines. Bet kuriame grandinės bloke bus pateikta ši informacija

  • indeksas
  • laiko žyma „Unix“ laiku
  • sandorių sąrašas
  • įrodymas
  • Ankstesnis bloko maišos

Didžioji dalis bloke esančios informacijos yra savaime suprantama. Čia du svarbiausi kintamieji yra previous_hash, kuriame yra ankstesnio bloko maišos vertė. Tai svarbu, nes tai užtikrina, kad blokų grandinė yra nekintama ir joks kenkėjiškas veikėjas negali atnaujinti, ištrinti ar pridėti jokių duomenų prie grandinės.

Skaitykite dabar: kodėl „Blockchain“ pakeis pasaulį?

Operacijos pridėjimas prie bloko

Supratę bloko struktūrą, sužinokime, kaip pridėti operaciją prie bloko. Jo kodas yra toks, kaip nurodyta toliau.

def new_transaction (self): #Ši funkcija prideda naują operaciją prie jau esamų operacijų """Tai sukurs naują operaciją, kuri bus nusiųsta į kitą bloką. Jame bus trys kintamieji, įskaitant siuntėją, gavėją ir sumą """ self.current_transactions.append ({‘siuntėjas’: siuntėjas, ‘gavėjas’: gavėjo ‘suma’: suma,}) grąžina self.last_block [‘index’] + 1 Kaip matote, jis tiesiog prideda dabartinį_transakcijų sąrašą su objektas, kuriame yra trys kintamieji → siuntėjas, gavėjas, suma.

Atlikus pridėjimą, metodas siunčia blokų indeksą į grandinę. Tai bus kitas blokas, kurį ketinama išminuoti.

Naujų blokų kūrimas

Prieš pradėdami kurti naujus blokus, turime sukurti genezės bloką. Norėdami tai padaryti, turime naudoti paprastą kodo eilutę, kaip nurodyta toliau.

self.new_block (ankstesnis_hash = 1, įrodymas = 100)

Ši eilutė turėtų būti įtraukta į jūsų „Blockchain“ klasę.

Taikant metodą new_block (), kaip parametrus turite siųsti du kintamuosius. Jame yra įrodymas ir ankstesnis maišas.

Dabar pažvelkime į toliau pateiktą metodą „new_block ()“.

def new_block (self, proof, previous_hash = Nėra): #Ši funkcija sukuria naujus blokus ir prideda prie esamos grandinės """Šis metodas turės du parametrų įrodymus, ankstesnį maišos variantą""" block = {‘rodyklė’: len (sav. grandinė) + 1, „laiko žyma“: laikas (), „įrodymas“: įrodymas, ankstesnis_maišymas: ankstesnis_maišas arba sav. maišas (sav. grandinė [-1]),}

# Nustatykite tuščią dabartinių operacijų sąrašą.

   self.current_transactions = [] self.chain.append (block) return block

Paaiškinkime new_block kodą. Sukuriame blokų sąrašą, kuriame yra trys svarbūs parametrai. Kai jie bus apibrėžti, mes taip pat parašysime kodą, kad iš naujo nustatytume dabartinį_transakcijos sąrašą, tada pridėkime bloką prie grandinės. Metodas new_block, kai iškviečiamas, grąžina bloką.

Skaitykite dabar: Pradedančiųjų vadovas: kas yra „Ethereum Classic“?

Toliau taip pat apibrėžkime „last_block“ metodą.

@nuosavybė

def last_block (savęs):

# Skambina ir grąžina paskutinį grandinės bloką

grąžinti savarankišką grandinę [-1]

Be to, maišos () metodo kodas yra toks:

def maišos (blokas): #Naudojamas blokui maišyti """Sekantis kodas sukurs SHA-256 blokinį maišos variantą ir užtikrins žodyno tvarką""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () Jei sujungsite visą kodą iki šiol, turėsime šį blockchain.py. Patikrinkite tai žemiau.

klasės „Blockchain“ (objektas): def __init __ (savarankiškai): self.chain = [] self.current_transactions = [] self.new_block (previous_hash = 1, proof = 100) def new_block (self, proof, previous_hash = Nėra): #This funkcija sukuria naujus blokus ir prideda esamą grandinę """Šis metodas turės du parametrų įrodymus, ankstesnį maišos variantą""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash arba self.hash (self.chain [-1]),} # rinkinys dabartinis operacijų sąrašas tuščias. self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): #Ši funkcija prideda naują operaciją prie jau esamų operacijų """Tai sukurs naują operaciją, kuri bus nusiųsta į kitą bloką. Jame bus trys kintamieji, įskaitant siuntėją, gavėją ir sumą """ self.current_transactions.append ({‘siuntėjas’: siuntėjas, ‘gavėjas’: gavėjas, ‘suma’: suma,}) grąžina self.last_block [‘index’] + 1 @staticmethod def hash (block): #Naudojamas maišymui blokas """Sekantis kodas sukurs SHA-256 blokinį maišos variantą ir užtikrins žodyno tvarką""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () @property def last_block (self): # Skambina ir grąžina paskutinį grandinės grąžinimo elementą return self.chain [ -1]

Darbo įgyvendinimo įrodymas

Mūsų kitas žingsnis kuriant blockchain.py yra „Proof-of-Work“ diegimas.

Taigi, kas yra darbo įrodymas? Tai yra bendro sutarimo metodas, kuris naudojamas į grandinę įtraukiant naujus blokus. Tai kelia iššūkį kalnakasiui, o kalnakasiui išsprendus problemą, blokas patikrinamas. Kalnakasis mainais gauna atlygį, pagrįstą problemos sudėtingumu.

„Bitcoin“ darbo įrodymas yra žinomas kaip „Hashcash“. Tai užtikrina, kad bitkoinų tinklo sutarimas veiktų taip, kaip numatyta.

Taip pat skaitykite: „Consensus“ algoritmai: „Blockchain“ technologijos šaknis

Apibrėžkime metodą proof_of_work (). Metodas bus „Blockchain“ klasės dalis.

def_darbo įrodymas (savarankiškas, paskutinis): """Šis metodas yra tas, kur jūs įgyvendinate sutarimo algoritmą. Tam reikia dviejų parametrų, įskaitant „self“ ir „last_proof“""" proof = 0, o self.valid_proof (last_proof, proof) yra klaidingas: proof + = 1 grąžinimo įrodymas @staticmethod def valid_proof (last_proof, proof): """Šis metodas patvirtina bloką""" atspėti = f ‘{last_proof} {proof}’. koduoti () guess_hash = hashlib.sha256 (atspėti) .hexigest () grąžinti guess_hash [: 4] == "0000"

Pirmasis „proof_of_work“ metodas yra paprastas; paprasčiausiai nustatykite įrodymą į 0 ir paleiskite „while loop“, kad paleistumėte valid_proof metodą. Jei tai klaidinga, pridėkite vieną prie įrodymo.

Maišos sudėtingumą galite padidinti pridėdami daugiau nulių.

Tai veda mus į „Blockchain.py“ pabaigą. Mūsų kodas yra toks, kaip nurodyta toliau.

klasės „Blockchain“ (objektas): def __init __ (savarankiškai): sav.chain = [] savęs.srovės_transakcijos = [] savarankiškas.naujas_blokas (ankstesnis_hash = 1, įrodymas = 100) def darbo_savybės (savarankiškas, paskutinis) """Šis metodas yra tas, kur jūs įgyvendinate sutarimo algoritmą. Tam reikia dviejų parametrų, įskaitant „self“ ir „last_proof“""" proof = 0, o self.valid_proof (last_proof, proof) yra klaidingas: proof + = 1 grąžinimo įrodymas @staticmethod def valid_proof (last_proof, proof): """Šis metodas patvirtina bloką""" atspėti = f ‘{last_proof} {proof}’. koduoti () guess_hash = hashlib.sha256 (atspėti) .hexigest () grąžinti guess_hash [: 4] == "0000" def new_block (self, proof, previous_hash = Nėra): #Ši funkcija sukuria naujus blokus ir prideda prie esamos grandinės """Šis metodas turės du parametrų įrodymus, ankstesnį maišos variantą""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash arba self.hash (self.chain [-1]),} # rinkinys dabartinis operacijų sąrašas tuščias. self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): #Ši funkcija prideda naują operaciją prie jau esamų operacijų """Tai sukurs naują operaciją, kuri bus nusiųsta į kitą bloką. Jame bus trys kintamieji, įskaitant siuntėją, gavėją ir sumą """ self.current_transactions.append ({‘siuntėjas’: siuntėjas, ‘gavėjas’: gavėjas, ‘suma’: suma,})

return self.last_block [‘index’] + 1

@staticmethod

def maišos (blokas):

#Naudojamas blokui maišyti

„“ „Šis kodas sukurs SHA-256 bloko maišos ir taip pat užtikrins, kad žodynas būtų užsakytas“ ““

block_string = json.dumps (block, sort_keys = True). encode ()

grąžinti hashlib.sha256 (block_string) .hexdigest ()

@nuosavybė

def last_block (savęs):

# Skambina ir grąžina paskutinį grandinės bloką

grąžinti savarankišką grandinę [-1]

2. API integracija

Puiku, mes sukuriame veikiančią „blockchain“! Dabar, norėdami jį efektyviai naudoti, turime sukurti API (Application Programming Interface).

Norėdami tai padaryti, mes ketiname naudoti populiarią „Python Framework“: „Flask“.

Kolba yra labai mažas karkasas, o tai reiškia, kad jis yra lengvas, ir galite pridėti reikalingas bibliotekas. Tai taip pat leidžia lengvai sukurti „Python“ funkcijos galinį tašką.

Norėdami sukurti API, pirmiausia turime užtikrinti, kad mūsų blokų grandinė galėtų priimti užklausas per HTTP. Norėdami tai padaryti, turime sukurti daugiau metodų.

Dabar pakeisime blockchain.py.

# Programos mazgo kūrimas app = Flask (__ name__) node_identifier = str (uuid4 ()). Pakeisti (‘-‘, ”) # Blokų grandinės blokavimo grandinės inicijavimas = Blockchain () @ app.route (‘/ mine’, metodai = [ ‘GET’]) def mine (): grįžti "Kasamas naujas blokas" @ app.route (‘/ transakcijos / naujas’, metodai = [‘POST’]) def new_transaction (): return "Pridedama nauja operacija" @ app.router (‘/ chain’, method = [‘GET’]) def full_chain (): response = {‘chain’: blockchain.chain, ‘length’: len (blockchain.chain)} return jsonify (atsakymas) , 200 if __pavadinimas = = ‘__main__’: app.run (host ="0.0.0.0", uostas = 5000)

Kodas dažniausiai savaime suprantamas. Pirmiausia atliekame mazgo inicijavimą. Tada sukursime atsitiktinį mazgą. Tai atlikę, mes inicijuojame savo „Blockchain“ klasę. Tai atlikę turime sukurti tris galinius taškus, kaip nurodyta toliau.

  • / mano galutinis taškas
  • / sandoriai / naujas galas
  • / grandinės galutinis taškas

Galiausiai mes paleidžiame serverį 5000 prievade.

Dabar programa beveik sukurta. Viskas, ką mums reikia padaryti, yra sukurti operacijų klasės metodą.

@ app.route (‘/ transakcijos / naujas’, metodai = [‘POST’]) def new_transaction (): reikšmes = request.get_json () # Tikrinama, ar reikalingi duomenys yra, ar nereikalingi = [‘siuntėjas’, ‘ gavėjas ‘,’ suma ‘], jei ne visi (k reikiamose k reikšmėse): grąžinti „Trūkstamos vertės“, 400 # kuriant naują operacijų indeksą = blockchain.new_transaction (reikšmės [‘ siuntėjas]], vertės [‘gavėjas’ , reikšmės [‘suma’]]) atsakymas = {‘žinutė’: f ‘Operaciją planuojama pridėti prie bloko Nr. {index}’} grąžinti jsonify (atsakymas), 201

Taip pat skaitykite: Štai ką turite žinoti apie „Blockchain“ darbo įrodymą

Kasybos galutinis taškas

Paskutinis taškas, kurį ketiname sukurti, yra kasybos galutinis taškas. Norėdami tai padaryti, turime įsitikinti, kad ji atlieka šiuos tris dalykus.

  • Darbo skaičiavimo įrodymas
  • Suklastokite naują „blockchain“ ir pridėkite jį prie grandinės
  • Apdovanokite kalnakasį už jo darbą

@ app.route (‘/ mine’, metodai = [‘GET’]) apibrėžti mano (): """Čia mes padarome darbo algoritmo įrodymą""" last_block = blockchain.last_block last_proof = last_block [‘proof’] proof = blockchain.proof_of_work (last_proof) # apdovanoti kalnakasį už jo indėlį. 0 nurodo, kad nauja moneta buvo išgauta blockchain.new_transaction (sender ="0", gavėjas = mazgo_identifikatorius, suma = 1,) # dabar sukurkite naują bloką ir pridėkite jį prie grandinės ankstesnis_blokšnis = blokų paketas. maišas (paskutinis_blokas) blokas = blokų grandinė.naujas_blokas (įrodymas, ankstesnis_prašymas) atsakymas = {‘žinutė’: ‘Naujas blokas buvo suklastotas ‘,’ index ‘: blokuoti [‘ index ‘],’ transakcijos ‘: blokuoti [‘ transakcijas ‘],’ proof ‘: blokuoti [‘ proof ‘],’ previous_hash ‘: blokuoti [‘ previous_hash ‘]} grįžti jsonify (atsakymas), 200

Skaitykite dabar: Pradedančiųjų vadovas: kas yra AION? Pirmasis pasaulyje trečiosios kartos „Blockchain“ tinklas

3. „Blockchain“ sąveika

Paskutinis žingsnis yra sąveika su „blockchain“. Mes ketiname naudoti „Postman“, kad galėtume bendrauti su „blockchain“ tinklu naudodami ką tik sukurtą API.

Paleiskite žemiau esantį kodą „Python Console“

python blockchain.py

Išvada

Tai veda mus į „Kaip sukurti blokų grandinę“ pabaigą. Tikimės, kad aukščiau pateikti veiksmai ir kodai padės sukurti „Python“ „Blockchain“. Taigi, jei esate naujokas ir norite kurti karjerą „Blockchain“, siūlome pradėti savo „blockchain“ karjerą mūsų nemokamame „Blockchain Fundamentals“ kurse. Pasirinkite mus savo studijų partneriu ir mes jus turėsime, kol negausite savo svajonių darbo.

Taigi, ką jūs manote apie „blockchain“ ir jo įgyvendinimą? Pakomentuokite žemiau ir praneškite mums.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me