Ki sa nou ta dwe bati yon blockchain?

Tout istwa limanite a se yon pwosesis kontinyèl pou debarase m de chenn ak kreye nouvo, menm pi fò. (Otè anonim)

Analize anpil pwojè blockchain (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, elatriye), mwen konprann ke nan yon pwen de vi teknik, yo tout bati sou menm prensip yo. Blockchains yo okoumansman de kay, ki, malgre tout varyete nan desen, dekorasyon ak objektif, gen yon fondasyon, mi, do-kay, fenèt, pòt ki konekte youn ak lòt nan sèten fason. Men, si ou konprann prensip debaz yo nan konsepsyon bilding ak konnen pwopriyete yo nan materyèl yo itilize, Lè sa a, ou ka detèmine objektif la gen entansyon nan yon kay an patikilye. Kounye a, gen yon sitiyasyon ki parèt ak blockchain ke tout moun te tande pale de li, men kèk moun konprann achitekti ak prensip operasyon yo. Se poutèt sa, gen yon enkonpreyansyon sou poukisa ak ki jan li fè sans pou itilize teknoloji blockchain.

Nan atik sa a nou pral analize pwopriyete yo ak prensip komen nan tout blockchains. Apre sa, ann gade nan pwoblèm yo ki ka rezoud lè l sèvi avèk blockchain la ak ranfòse materyèl la, ann bati yon ti men reyèl blockchain sou sit vityèl nou an!

Se konsa, an nou sonje ki pwoblèm blockchain okòmansman rezoud.

Mwen sèten ke anpil moun pral di sou yon baz done distribye, desantralize, piblik ak imuiabl. Men, poukisa tout bagay sa yo te nesesè?

Mwen pito kòmanse etidye nenpòt teknoloji nan li estanda yo, paske tout atik ak liv sou sijè ki anba etid la yo baze sou yo. Men, pa gen okenn estanda blockchain kounye a; ISO te kreye sèlman komite yo pou devlopman yo. Kounye a, chak pwojè blockchain piblik gen pwòp dokiman White Paper li yo, ki se esansyèlman yon spesifikasyon teknik. Premye pwojè blockchain piblikman li te ye a se rezo Bitcoin. Ale nan sit entènèt ofisyèl rezo a ak gade kote tout bagay te kòmanse.

Blockchain defi

Se konsa, travay la ke blockchain rezoud nan rezo pyonye Bitcoin a se pote soti nan yon transfè ou fè konfyans nan de an komen nan byen dijital (aktif) nan yon anviwònman ki pa fè konfyans san entèmedyè. Pou egzanp, nan rezo Bitcoin a, yon avantaj dijital se bitcoin pyès monnen dijital. Ak tout solisyon teknik nan Bitcoin ak lòt blockchains desann nan rezoud pwoblèm sa a.

Pwoblèm ke blockchain rezoud

Sipoze yon sèten òganizasyon finansye di ke li te bati yon rezo atravè mond lan ak èd nan ki li se posib yo transfere lajan nan nenpòt moun. Èske w ap kwè li? Si òganizasyon sa a se Visa oswa MasterCard, gen plis chans ou pral kwè li, men si, relativman pale, AnonymousWorldMoney, pwobableman ou pa pral. Poukisa? Men, paske nou konnen trè byen ki jan sistèm distribiye yo fèt pa konpayi prive, pou ki rezon, ak ki sa sa ka mennen nan. Ann pran yon gade pi pre nan pwoblèm yo nan sistèm sa yo ak fason yo ka rezoud lè l sèvi avèk teknoloji blockchain.

Ann di ke nan kondisyonèl AnonymousWorldMoney gen sèvè ak baz done, epi li bon si gen plizyè nan yo nan diferan sant done. Lè moun k ap transfè lajan an, se yon tranzaksyon ki anrejistre, ki repwodui nan tout sèvè, epi lajan an rive nan moun k ap resevwa a.

Ki sa nou ta dwe bati yon blockchain?

Nan yon monn ideyal, konplo sa a travay gwo, men nan nou an pwoblèm sa yo rive:

  1. Pwoblèm nan idantifye patisipan yo sou yon bò ak bezwen an pou anonim tranzaksyon sou lòt la. Moun sa yo. ou bezwen transfere lajan nan yon benefisyè espesifik ak nan yon fason ke pèsonn pa konnen sou tranzaksyon sa a eksepte patisipan yo nan tranzaksyon an. Bank yo gen nimewo kont ak kat labank ki lye ak yon moun espesifik oswa yon antite legal, epi sekrè labank pwoteje enfòmasyon sou tranzaksyon yo. Ak ki moun ki garanti ke kondisyonèl AnonymousWorldMoney pa sèvi ak done pèsonèl ak enfòmasyon tranzaksyon pou pwòp rezon li yo?
  2. Ki jan yo asire w ke moun k ap resevwa a te resevwa egzakteman kantite lajan an ki te transfere nan li? Relativman pale, moun k ap voye a te transfere $100, epi moun k ap resevwa a te resevwa $10. Moun k ap voye a vini nan biwo AnonymousWorldMoney ak resi li, epi grefye a montre vèsyon li a, kote li ekri ke moun k ap voye a te transfere sèlman $10.
  3. Pwoblèm lan nan yon anviwònman ki pa fè konfyans, pou egzanp, yon tronpe yo rele doub-depans. Yon patisipan ki malonèt ka depanse balans li plizyè fwa jiskaske peman an repwodui nan tout serveurs. Teyorèm CAP, nan kou, pa gen moun ki anile, ak akò finalman pral reyalize, men yon moun pa pral resevwa lajan pou sèvis oswa machandiz yo bay yo. Se poutèt sa, si pa gen okenn konfyans konplè nan òganizasyon an peman oswa patisipan yo nan tranzaksyon, Lè sa a, li nesesè yo bati yon rezo ki baze sou pa konfyans, men sou kriptografik.
  4. Kondisyonèl AnonymousWorldMoney gen yon kantite fini nan sèvè ki ka vin pa disponib san entansyonèl oswa akòz entansyon move.
  5. AnonymousWorldMoney pral pran pwòp komisyon byen mèb li yo.
  6. Posiblite kontwòl. Pandan operasyon an nan Bitcoin, li te tounen soti ke moun vle pa sèlman transfere pyès monnen youn ak lòt, men tou, yo tcheke divès kondisyon pou tranzaksyon an, senaryo travay pwogram, otomatikman fè aksyon depann sou kondisyon yo, elatriye.

Ki jan blockchain rezoud pwoblèm sa yo

  1. Idantifikasyon patisipan yo fèt lè l sèvi avèk yon pè kle: prive ak piblik, ak algorithm siyati dijital la inikman idantifye moun k ap resevwa a ak moun k ap resevwa yo, kite idantite yo anonim.
  2. Tranzaksyon yo kolekte nan blòk, yo kalkile hash nan blòk la epi yo ekri nan pwochen blòk la. Sekans anrejistreman hashes sa a nan blòk bay teknoloji blockchain a non li, epi li tou fè li enposib chanje / efase blòk oswa tranzaksyon endividyèl soti nan blòk. Kidonk, si yon tranzaksyon enkli nan blockchain a, ou ka asire w ke done li yo ap rete san okenn chanjman.
  3. Fwod doub-depans yo anpeche lè w rive nan yon konsansis rezo sou ki done yo konsidere ki valab ak kiyès yo jete. Nan rezo Bitcoin a, konsansis reyalize pa prèv travay (PoW).
  4. Se fyab la nan rezo a reyalize pa lefèt ke blockchain a se piblik, kote chak patisipan ka kouri pwòp ne yo, resevwa yon kopi konplè nan blockchain la epi, anplis, poukont kòmanse tcheke tranzaksyon yo pou kòrèk. Li ta dwe remake ke blockchains modèn fè li posib yo bati non sèlman piblik (louvri) men tou prive (fèmen), osi byen ke itilize nan konplo konbine.
  5. Blockchain a pa pral konplètman debarase m de komisyon, paske ... ou dwe peye moun ki sipòte rezo a, men nan blockchain a bezwen pou yon komisyon pwouve konsa konvenkan ke pa gen okenn dout sou nesesite li yo.
  6. Blockchain modèn gen kapasite pou aplike lojik biznis, ki nan blockchain la rele Smart Contracts. Lojik kontra entelijan yo aplike nan plizyè lang wo nivo.

Apre sa, nou pral konsidere solisyon sa yo an plis detay.

Achitekti Blockchain

Konpozan Blockchain

Chak patisipan ka lanse pwòp ne yo ak yon kopi konplè blockchain la (nœuds konplè). Yo rele nœuds konplè ki ka anrejistre tranzaksyon sou blockchain la nœuds konsansis yo (temwen) oswa minè (minè). Yo rele nœuds konplè ki tcheke sèlman kòrèkteman tranzaksyon yo nœuds odit (odit). Kliyan limyè (kliyan limyè) pa sere kopi konplè blòk la, men kominike avèk rezo a lè l sèvi avèk nœuds konplè.
Pifò itilizatè yo sèvi ak kliyan limyè oswa bous entènèt pou fè tranzaksyon. Tout nœuds yo konekte youn ak lòt. Avèk seri eleman sa yo, achitekti rezo a vin pi estab:

Ki sa nou ta dwe bati yon blockchain?

Sik lavi tranzaksyon

Ann gade sik lavi tranzaksyon an epi kraze li moso pa moso:

Ki sa nou ta dwe bati yon blockchain?

Teknoloji Blockchain

Se pou nou rete nan plis detay sou solisyon teknik ak koneksyon yo youn ak lòt.

Idantifikasyon

Chak tranzaksyon blockchain dwe siyen nimerik. Se poutèt sa, pou konplete yon tranzaksyon, chak patisipan dwe gen yon pè kle: prive / piblik. Pafwa yon pè kle yo rele yon bous, paske kle yo inikman asosye ak adrès dijital inik patisipan an ak balans. An reyalite, kle ak adrès yo se jis strings nan nimewo nan sistèm nimewo diferan. Egzanp kle ak adrès bous:

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V

Pou kreye yon siyati dijital nan blockchains, yo itilize yon algorithm ki baze sou koub eliptik: Elliptic Curve Digital Signature Algorithm (ECDSA). Pou li travay, kle prive a (nimewo 256-bit) anjeneral pran owaza. Nimewo a nan opsyon kle yo se 2 nan pouvwa a nan 256, kidonk nou ka pale sou enposib nan pratik nan matche valè yo nan kle prive.

Apre sa, kle piblik la jwenn nan men prive a lè yo miltipliye valè li pa kowòdone yon pwen ki chita sou koub eliptik la, sa ki lakòz kowòdone yon nouvo pwen sou menm koub la. Aksyon sa a asire ke ou jwenn yon pè kle ki apwopriye pou siyen dijital tranzaksyon yo. Finalman, adrès bous la inikman sòti nan kle piblik la.

Gen yon anpil nan atik ki gen detay sou kriptografik yo itilize nan blockchain, pou egzanp: Bitcoin nan yon Nutshell - Kriptografi

Kle prive a dwe estrikteman konfidansyèl epi kenbe an sekirite. Tout moun konnen kle piblik la. Si yo pèdi kle prive a, yo pa kapab retabli aksè nan byen yo (pyès monnen) epi yo pral pèdi lajan an pou tout tan. Se poutèt sa, travay la nan byen estoke kle prive se trè enpòtan, paske Sa a se pa yon bank kote ou ka toujou vini ak paspò ou epi restore kont ou. Gen yon endistri antye pou pwodiksyon sa yo rele bous kript frèt, menm jan ak kondui flash:

Ki sa nou ta dwe bati yon blockchain?

oswa ou ka itilize metòd ki pi serye, pou egzanp, simpre valè kle prive a sou marqueur:

Ki sa nou ta dwe bati yon blockchain?

Tranzaksyon yo

Ou ka jwenn plis detay sou estrikti tranzaksyon an nan atik la Bitcoin nan yon Nutshell - Tranzaksyon. Li enpòtan pou nou konprann ke chak tranzaksyon gen omwen done sa yo:

From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - цифровой адрес отправителя
To: 0x367adb7894334678b90аfe7882a5b06f7fbc783a - цифровой адрес получателя
Value: 0.0001 - сумма транзакции
Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef - хэш транзакции

Apre sa, tranzaksyon an siyen ak yon kle prive epi voye soti (gade detay sou operasyon an nan pwotokòl la Bitcoin nan yon pwotokòl Nutshell) nan tout nœuds nan blockchain a ki tcheke tranzaksyon yo pou validite. Algorithm verifikasyon tranzaksyon an pa trivial e li gen ladan l de douzèn etap.

Blòk tranzaksyon yo

Apre tcheke validite tranzaksyon yo, nœuds fòme blòk nan men yo. Anplis tranzaksyon yo, yo ekri hash nan blòk anvan an ak yon nimewo (Nonce counter) nan blòk la, epi yo kalkile hash nan blòk aktyèl la lè l sèvi avèk algorithm SHA-256 la. Hash la dwe etabli kondisyon konpleksite. Pou egzanp, nan rezo Bitcoin a, difikilte pou hash la otomatikman chanje chak 2 semèn depann sou pouvwa a nan rezo a pou ke yon blòk pwodwi apeprè yon fwa chak 10 minit. Konpleksite a detèmine pa kondisyon sa a: hash yo jwenn dwe mwens pase yon nimewo predetèmine. Si kondisyon sa a pa satisfè, Lè sa a, 1 ajoute nan Nonce a, epi travay la nan kalkile hash la repete. Pou chwazi yon hash, yo itilize jaden Nonce, paske Sa a se sèlman done nan blòk la ki ka chanje; rès la dwe rete san okenn chanjman. Yon hash valab dwe gen yon sèten kantite zewo dirijan, tankou youn nan hash reyèl:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Siksè jwenn yon hash se prèv travay fè (Prèv-of-Work, PoW) pou rezo Bitcoin oswa Ethereum. Pwosesis pou jwenn hashes yo rele min, menm jan ak min lò. Non a jan sa dwe fèt byen defini esans pwosesis la, paske gen yon rechèch senp nan opsyon, epi si yon moun jwenn yon hash apwopriye, Lè sa a, sa a se reyèlman chans. Se tankou jwenn yon pepit lò reyèl nan tòn wòch fatra. Rekonpans blòk la se kounye a 12.5 BTC epi si ou miltipliye li pa pousantaj Bitcoin aktyèl la nan $ 3900, ou jwenn plis pase yon kilogram nan lò pi bon kalite. Gen yon bagay pou batay!

Apre yo fin jwenn yon hash avèk siksè, blòk la ak hash jwenn li menm yo ekri nan blockchain la kòm pwochen blòk la. Ou ka jwenn plis detay sou estrikti blòk yo nan atik la Bitcoin nan yon Nutshell-Blockchain, epi anba a se yon dyagram senplifye:

Ki sa nou ta dwe bati yon blockchain?

Blockchain la kòmanse ak yon blòk ki poko gen hash nan blòk anvan an. Gen yon sèl blòk sa yo nan blockchain la e li gen pwòp non li Genesis block. Blòk ki rete yo gen menm estrikti a epi yo diferan sèlman nan kantite tranzaksyon yo. Ou ka wè tranzaksyon reyèl ak blòk k ap kreye kounye a nan Bitcoin oswa Ethereum Blòk Explorer.

Gwosè a nan blòk nan Bitcoin limite a sa sèlman 1MB epi ak yon kantite minimòm enfòmasyon nan yon tranzaksyon nan apeprè 200 byte, kantite maksimòm tranzaksyon nan yon blòk ka apeprè 6000. Soti isit la, nan chemen an, swiv pèfòmans nan nan Bitcoin, ki tout moun ri nan: se yon blòk pwodwi apeprè yon fwa chak 10 minit * 60 segonn = 600 segonn, ki bay yon pèfòmans fòmèl nan apeprè 10 TPS. Malgre ke an reyalite, sa a se pa pwodiktivite, men yon algorithm fè espre aplike nan travay. Nan Ethereum, pou konpetisyon, yo tou senpleman te fè tan an jenerasyon blòk 15 segonn. ak pwodiktivite fòmèlman te monte. Se poutèt sa, nan blockchains ki itilize PoW kòm konsansis, li pa fè okenn sans konpare pèfòmans nan tout, paske li dirèkteman depann sou konpleksite nan kalkil la kachèt, ki ka asiyen nan nenpòt ki valè.

Forks

Kisa k ap pase si, pou egzanp, plizyè nœuds jwenn hashes ki satisfè kondisyon yo konpleksite, men yo diferan nan valè (nan lòt mo, yo te rive nan konsansis diferan) epi yo te ekri blòk nan blockchain la? Ann wè ki jan blockchain pwoteje kont sitiyasyon sa a. Nan ka sa a, yon sa yo rele fouchèt rive, ak blòk la gen de vèsyon nan chèn lan:

Ki sa nou ta dwe bati yon blockchain?

Kisa k ap pase apre? Apre sa, yon pati nan rezo a kòmanse travay sou blòk N + 2 soti nan yon chèn, ak yon pati nan yon lòt:

Ki sa nou ta dwe bati yon blockchain?

Youn nan blòk sa yo pral jwenn pi bonè epi voye nan blockchain la, ak Lè sa a, dapre règleman yo, blockchain la pral oblije chanje nan yon chèn ki pi long epi anile tout tranzaksyon ki soti nan blòk altènatif la:

Ki sa nou ta dwe bati yon blockchain?

An menm tan an, yon sitiyasyon ka rive lè tranzaksyon yon patisipan te sèlman nan youn nan blòk fouchèt yo, ki te anile. Se poutèt sa, yo dwe asire ke tranzaksyon an vle anrejistre nan blòk la, gen yon rekòmandasyon jeneral - anvan ou fè konfyans tranzaksyon an, ou ta dwe tann jiskaske pwochen blòk yo ajoute nan blòk la. Rekòmandasyon pou konbyen blòk pou tann diferan blockchain yo varye. Pou egzanp, pou rezo Bitcoin minimòm lan se 2 blòk, maksimòm lan se 6.

Yo pral obsève foto a menm ak fouchèt blòk pandan atak sa yo rele 51% - sa a se lè yon gwoup minè ap eseye grandi yon chèn blòk altènatif, k ap chèche anile chèn lan ak tranzaksyon fo yo. Malgre ke kounye a, olye pou yo fwod, li pi pwofitab pou depanse pouvwa ou sou min onèt.

Konsantman

Pou anrejistre yon blòk sou blockchain la, rezo a dwe rive nan yon konsansis. Ann sonje travay la nan reyalize konsansis nan rezo kominikasyon òdinatè. Pwoblèm nan fòmile kòm travay la nan jeneral Bizanten yo BFT (Bizanten tolerans fay). Omisyon deskripsyon pitorèsk pwoblèm yo nan lame Bizanten an, pwoblèm nan ka formul jan sa a: ki jan yo ka rezo nœuds rive nan yon rezilta komen si kèk nœud rezo ka fè espre defòme yo. Algoritm ki egziste deja pou rezoud pwoblèm BFT montre ke rezo a ka fonksyone kòrèkteman si gen mwens pase 1/3 nan èskro. Poukisa konsansis BFT pa te aplike nan rezo Bitcoin a? Poukisa li nesesè pou itilize PoW? Gen plizyè rezon:

  • BFT travay byen ak yon seri ti fiks nan nœuds, men nan yon blockchain piblik kantite nœuds se enprevizib epi, Anplis, nœuds yo ka vire sou yo ak koupe owaza.
  • Li nesesè pou motive moun yo lanse nœuds blockchain. Pou fè sa, moun yo dwe rekonpanse. Nan BFT pa gen anyen fòmèlman pou resevwa yon rekonpans pou, men sa ki rekonpans la se pou nan PoW klè pou tout moun sou yon nivo entwisyon: pou elektrisite a boule nan processeur a nan pwosesis pou jwenn hash nan blòk.

Anplis PoW, gen plizyè lòt konsansis ki itilize nan blockchains modèn, pou egzanp:

  • PoS (Prèv-of-Stake) - sou blockchain la Hyperledger
  • DPoS (Delegated Proof-of-Stake) - sou blockchain la BitShares
  • Modifikasyon BFT: SBFT (BFT senplifye) ak PBFT (BFT pratik), pou egzanp nan blockchain Exonum

Ann rete yon ti kras sou konsansis PoS la, paske... Li se PoS ak varyete li yo ki pi gaye nan blockchains prive. Poukisa an prive? Sou yon bò, karakteristik yo nan PoS yo pi byen konpare ak PoW, paske Pou reyalize konsansis, yo bezwen mwens resous enfòmatik, ki vle di vitès ekri done nan blockchain la ogmante. Men, nan lòt men an, PoS gen plis opòtinite pou fwod, kidonk netralize sa a, tout patisipan yo nan blockchain la dwe konnen.

Konsantman PoS baze sou seleksyon an nan yon ne ki ka ekri yon blòk ak tranzaksyon nan blockchain a depann sou kantite lajan ki nan kont lan, oswa pito, pa nan kont la, men nan kolateral la, i.e. Plis lajan ou genyen kòm garanti, se plis chans rezo a pral chwazi ne ou ekri yon blòk. Depo a pa pral retounen si blòk la pa valab. Sa a bay pwoteksyon kont fwod. Gen varyasyon sa yo nan PoS:

  • Konsantman Delegated PoS (DPoS) divize patisipan yo an "votè" ak "validator". Moun ki gen pyès monnen (patisipan vòt yo) delege pouvwa yo pou verifye ak anrejistre tranzaksyon sou blockchain a bay lòt patisipan yo. Kidonk, validatè yo fè tout travay enfòmatik yo epi yo resevwa yon rekonpans pou li, epi prezans patisipan ki vote yo garanti onètete validatè yo, paske yo ka chanje nenpòt ki lè.
  • Konsantman LPoS (Lwe Prèv-of-Stake) pèmèt ou lwe lajan ou bay lòt nœuds pou yo gen yon pi bon chans pou yo valide blòk yo. Sa. Ou ka resevwa yon komisyon pou tranzaksyon san yo pa patisipe nan verifikasyon aktyèl tranzaksyon an ak bloke min.

Gen yon kantite lòt konsansis ki poko lajman itilize, mwen pral jis lis yo isit la pou enfòmasyon, epi yo ka jwenn yon BECA de algorithm konsansis tèt yo, pou egzanp, nan atik la: Algoritm konsansis nan Blockchain.

  • PoET (Prèv tan ki pase)
  • PoC (Prèv Kapasite)
  • PoB (Prèv boule)
  • PoWeight (Prèv-de-Pwa)
  • PoA (Prèv Aktivite) - PoW + PoS
  • PoI (Prèv-of-Importans)

Modèl fyab ak deplwaman blockchains

Blockchain piblik

Sustainability Piblik oswa yon lòt non Blockchain san pèmisyon Sa a reyalize lè yo pèmèt nenpòt moun konekte ak wè enfòmasyon oswa menm konekte pwòp ne yo, epi yo bati konfyans sou konsansis PoW.

Blockchain prive

Prive oswa Prive pèmisyon blockchain. Nan blockchains sa yo, sèlman yon sèten gwoup patisipan (òganizasyon oswa moun) gen aksè a enfòmasyon. Blockchain sa yo konstwi pa òganizasyon ak objektif pou ogmante benefis oswa efikasite jeneral. Se objektif komen patisipan yo asire fyab yo ak algoritm konsansis PoS ak BFT.

Blockchain Consortium

Gen Consortium oswa Piblik otorize blockchain. Sa yo se blockchain ke nenpòt moun ka konekte ak yo wè, men yon patisipan ka ajoute enfòmasyon oswa konekte ne li sèlman avèk pèmisyon lòt patisipan yo. Blockchain sa yo konstwi pa òganizasyon yo nan lòd yo ogmante konfyans sou pati nan kliyan oswa konsomatè nan pwodwi oswa sosyete an antye. Isit la, fyab tou reyalize pa prezans nan konfyans ant patisipan yo ak menm algorithm konsansis PoS ak BFT.

Kontra Smart

Blockchains aplike apre Bitcoin te, nan yon degre oswa yon lòt, te ajoute kapasite nan egzekite kontra entelijan. Esansyèlman, yon kontra entelijan se yon tranzaksyon kote yo mete kòd pwogram lan pou egzekisyon. Kontra entelijan sou rezo Ethereum yo egzekite nan EVM (Ethereum Virtual Machine). Pou kòmanse egzekite yon kontra entelijan, li dwe klèman lanse pa yon lòt tranzaksyon, oswa kondisyon yo pou egzekisyon yo dwe satisfè. Rezilta yo nan ekzekisyon an nan kontra a entelijan yo pral anrejistre tou nan blockchain la. Resevwa done ki soti deyò blockchain a posib, men trè limite.

Ki lojik biznis ki ka aplike lè l sèvi avèk yon kontra entelijan? An reyalite, pa gen anpil, pou egzanp, tcheke kondisyon lè l sèvi avèk done ki soti nan blòk la, chanje mèt pwopriyete yo nan byen dijital depann sou kondisyon sa yo, anrejistreman done nan yon depo pèmanan nan blòk la. Se lojik la aplike nan yon lang espesyal wo nivo Solidity.

Yon egzanp klasik nan fonksyonalite ki aplike lè l sèvi avèk kontra entelijan se emisyon siy pou ICO. Pou egzanp, mwen aplike yon kontra entelijan bay yon modès 500 AlexToken. Pa lyen nan Etherscan se

kòd sous kontra entelijan an nan lang Solidity

pragma solidity ^0.4.23;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
**/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
**/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
**/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
**/
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
**/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
**/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
**/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title ERC20Basic interface
* @dev Basic ERC20 interface
**/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
**/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
**/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
**/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
**/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
**/
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
**/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
**/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
**/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
**/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
**/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
/**
* @title Configurable
* @dev Configurable varriables of the contract
**/
contract Configurable {
uint256 public constant cap = 1000000000*10**18;
uint256 public constant basePrice = 100*10**18; // tokens per 1 ether
uint256 public tokensSold = 0;
uint256 public constant tokenReserve = 500000000*10**18;
uint256 public remainingTokens = 0;
}
/**
* @title CrowdsaleToken 
* @dev Contract to preform crowd sale with token
**/
contract CrowdsaleToken is StandardToken, Configurable, Ownable {
/**
* @dev enum of current crowd sale state
**/
enum Stages {
none,
icoStart, 
icoEnd
}
Stages currentStage;
/**
* @dev constructor of CrowdsaleToken
**/
constructor() public {
currentStage = Stages.none;
balances[owner] = balances[owner].add(tokenReserve);
totalSupply_ = totalSupply_.add(tokenReserve);
remainingTokens = cap;
emit Transfer(address(this), owner, tokenReserve);
}
/**
* @dev fallback function to send ether to for Crowd sale
**/
function () public payable {
require(currentStage == Stages.icoStart);
require(msg.value > 0);
require(remainingTokens > 0);
uint256 weiAmount = msg.value; // Calculate tokens to sell
uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
uint256 returnWei = 0;
if(tokensSold.add(tokens) > cap){
uint256 newTokens = cap.sub(tokensSold);
uint256 newWei = newTokens.div(basePrice).mul(1 ether);
returnWei = weiAmount.sub(newWei);
weiAmount = newWei;
tokens = newTokens;
}
tokensSold = tokensSold.add(tokens); // Increment raised amount
remainingTokens = cap.sub(tokensSold);
if(returnWei > 0){
msg.sender.transfer(returnWei);
emit Transfer(address(this), msg.sender, returnWei);
}
balances[msg.sender] = balances[msg.sender].add(tokens);
emit Transfer(address(this), msg.sender, tokens);
totalSupply_ = totalSupply_.add(tokens);
owner.transfer(weiAmount);// Send money to owner
}
/**
* @dev startIco starts the public ICO
**/
function startIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
currentStage = Stages.icoStart;
}
/**
* @dev endIco closes down the ICO 
**/
function endIco() internal {
currentStage = Stages.icoEnd;
// Transfer any remaining tokens
if(remainingTokens > 0)
balances[owner] = balances[owner].add(remainingTokens);
// transfer any remaining ETH balance in the contract to the owner
owner.transfer(address(this).balance); 
}
/**
* @dev finalizeIco closes down the ICO and sets needed varriables
**/
function finalizeIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
endIco();
}
}
/**
* @title LavevelToken 
* @dev Contract to create the Lavevel Token
**/
contract AlexToken is CrowdsaleToken {
string public constant name = "AlexToken";
string public constant symbol = "ALT";
uint32 public constant decimals = 18;
}

ak reprezantasyon binè a jan rezo a wè li

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Ou ka jwenn plis detay sou kontra entelijan nan atik la: Ki sa ki kontra entelijan nan Ethereum.

Konklizyon

Nou te bay lis teknoloji sou ki blòk modèn yo bati ak ki jan yo konekte youn ak lòt. Koulye a, kite a fòmile ki pwoblèm yo ka rezoud lè l sèvi avèk blockchain, ak ki solisyon yo pral, nan pi bon, inefikas. Se konsa, itilize blockchain pa nesesè si:

  • Tranzaksyon yo fèt nan yon anviwònman ou fè konfyans;
  • Prezans yon komisyon entèmedyè pa vin pi mal lavi patisipan yo;
  • Patisipan yo pa gen pwopriyete ki ka reprezante kòm byen dijital;
  • Pa gen okenn distribisyon nan byen dijital, i.e. se yon sèl patisipan ki posede oswa bay valè a.

Ki sa ki lavni an kenbe pou blockchain? Koulye a, nou ka sèlman espekile sou fason posib pou devlopman teknoloji blockchain:

  • Blockchain pral vin menm teknoloji baz done komen kòm, pou egzanp, SQL oswa NoSQL pou rezoud seri espesifik li yo nan pwoblèm;
  • Blockchain pral vin yon pwotokòl toupatou, tankou HTTP se pou entènèt la;
  • Blockchain pral vin baz pou yon nouvo sistèm finansye ak politik sou planèt la!

Nan pwochen pati a, nou pral gade kisa blockchains ki egziste kounye a ak poukisa yo itilize nan diferan endistri yo.

Sa a se jis kòmansman an!

Sous: www.habr.com

Add nouvo kòmantè