Блокчейнди эмне куруу керек?

Адамзаттын бүткүл тарыхы чынжырлардан арылуунун жана жаңы, андан да күчтүүсүн түзүүнүн үзгүлтүксүз процесси. (Анонимдүү автор)

Көптөгөн блокчейн долбоорлорун талдоо (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin ж. Блокчейндер ар кандай дизайнга, декорацияга жана максаттарга карабастан, пайдубалы, дубалдары, чатыры, терезелери, белгилүү жолдор менен бири-бири менен туташтырылган эшиктери бар үйлөрдү эске салат. Ал эми имаратты долбоорлоонун негизги принциптерин түшүнүп, колдонулган материалдардын касиеттерин билсеңиз, анда белгилүү бир үйдүн арналышын аныктай аласыз. Учурда блокчейнге байланыштуу кырдаал түзүлдү, аны баары уккан, бирок архитектураны жана иштөө принциптерин түшүнгөн адамдар аз. Ошондуктан, блокчейн технологияларын колдонуунун эмне үчүн жана кандайча мааниси бар экенин түшүнбөстүк бар.

Бул макалада биз бардык блокчейндерге мүнөздүү касиеттерди жана принциптерди талдайбыз. Андан кийин, келгиле, блокчейндин жардамы менен чечиле турган көйгөйлөрдү карап көрөлү жана материалды бекемдөө үчүн виртуалдык сайтыбызда кичинекей, бирок чыныгы блокчейнди куралы!

Ошентип, блокчейн башында кандай көйгөйлөрдү чечкенин эстеп көрөлү.

Көптөр бөлүштүрүлгөн, борбордон ажыратылган, коомдук жана өзгөрүлбөс маалымат базасы жөнүндө айтышат деп ишенем. Бирок мунун баары эмне үчүн керек эле?

Мен стандарттарды окуу менен каалаган технологияны үйрөнүүнү туура көрөм, анткени изилденүүчү темадагы бардык макалалар жана китептер аларга негизделген. Бирок учурда блокчейн стандарттары жок; ISO гана жараткан комитеттер алардын өнүгүшү үчүн. Азыркы учурда, ар бир коомдук блокчейн долбоорунун өзүнүн White paper документи бар, ал негизинен техникалык мүнөздөмө болуп саналат. Биринчи жалпыга белгилүү блокчейн долбоору Bitcoin тармагы болуп саналат. Тармактын расмий сайтына өтүңүз жана кароо Ал жерде баары баштады.

Blockchain Challenge

Ошентип, Bitcoin пионер тармагында чечилген блокчейн милдети ортомчуларсыз ишенимдүү эмес чөйрөдө санариптик активдерге (активдерге) менчик укугун ишенимдүү өткөрүп берүү болуп саналат. Мисалы, Bitcoin тармагында санариптик актив биткойндор санариптик монеталар болуп саналат. Ал эми Bitcoin жана башка блокчейндердин бардык техникалык чечимдери бул көйгөйдү чечүү үчүн келет.

Блокчейн чече турган көйгөйлөр

Белгилүү бир каржылык уюм дүйнө жүзү боюнча тармак курганын айтып жатат дейли, анын жардамы менен каалаган адамга акча которууга болот. Ага ишенесиңби? Бул уюм Visa же MasterCard болсо, балким, сиз ишенесиз, бирок, салыштырмалуу айтканда, AnonymousWorldMoney, балким, ишенбейсиз. Эмнеге? Бирок жеке компаниялар тарабынан бөлүштүрүлгөн системалар кандайча, кандай максатта жасалып жатканын жана бул эмнеге алып келерин жакшы билебиз. Келгиле, мындай системалардын көйгөйлөрүн жана блокчейн технологияларын колдонуу менен аларды кантип чечсе болорун кененирээк карап чыгалы.

Шарттуу AnonymousWorldMoneyде маалымат базалары бар серверлер бар жана алардын ар кандай маалымат борборлорунда бир нечеси болсо жакшы болот деп коёлу. Жөнөтүүчү акча которууда транзакция катталып, ал бардык серверлерге кайталанып, акча алуучуга жетет.

Блокчейнди эмне куруу керек?

Идеалдуу дүйнөдө бул схема жакшы иштейт, бирок бизде төмөнкү көйгөйлөр пайда болот:

  1. Бир жагынан катышуучуларды аныктоо маселеси, экинчи жагынан бүтүмдөрдүн анонимдүүлүгүнүн зарылдыгы. Ошол. сиз акчаны белгилүү бир алуучуга жана транзакциянын катышуучуларынан башка эч ким билбегендей кылып которуу керек. Банктарда белгилүү бир жеке же юридикалык жак менен байланышкан эсеп номерлери жана банктык карталары бар жана банктык сыр транзакциялар тууралуу маалыматты коргойт. Ал эми шарттуу AnonymousWorldMoney жеке маалыматтарды жана транзакциялар тууралуу маалыматты өз максаттары үчүн колдонбойт деп ким кепилдик берет?
  2. Алуучу ага которулган сумманы так алганына кантип ынануу керек? Салыштырмалуу айтканда, жөнөтүүчү $100 которгон, ал эми алуучу $10 алган. Жөнөтүүчү өзүнүн квитанциясы менен AnonymousWorldMoney кеңсесине келет, ал эми катчы өзүнүн версиясын көрсөтөт, анда жөнөтүүчү болгону 10 доллар которгон деп жазылган.
  3. Ишенимсиз чөйрөнүн көйгөйү, мисалы, кош чыгымдоо деп аталган алдамчылык. Ак ниетсиз катышуучу төлөм бардык серверлерге кайталанганга чейин балансын бир нече жолу коротсо болот. CAP теоремасы, албетте, эч ким жокко чыгарган жок, акыры келишимге жетишилет, бирок кимдир бирөө көрсөтүлгөн кызматтар же товарлар үчүн акча албайт. Демек, эгерде төлөм уюмуна же транзакциялардын катышуучуларына толук ишеним жок болсо, анда ишенимге эмес, криптографияга негизделген тармакты куруу зарыл.
  4. Шарттуу AnonymousWorldMoney серверлеринин чектүү санына ээ, алар кокусунан же зыяндуу ниеттен улам жеткиликсиз болуп калышы мүмкүн.
  5. AnonymousWorldMoney өзүнүн материалдык комиссиясын алат.
  6. Башкаруу мүмкүнчүлүгү. Биткойндун иштешинин жүрүшүндө, адамдар бири-бирине монеталарды которууну гана эмес, транзакциянын ар кандай шарттарын, программанын иш сценарийлерин текшерүүнү, шарттарга жараша иш-аракеттерди автоматтык түрдө аткарууну ж.б.у.с.

Блокчейн бул көйгөйлөрдү кантип чечет

  1. Катышуучуларды идентификациялоо жуп ачкычтарды колдонуу менен ишке ашырылат: жеке жана ачык, ал эми цифралык кол коюу алгоритми жөнөтүүчү менен алуучуну уникалдуу идентификациялоо менен алардын инсандыгын жашыруун калтырат.
  2. Транзакциялар блокторго чогултулат, блоктун хэши эсептелет жана кийинки блокко жазылат. Блокторго хэштерди жазуунун бул ырааттуулугу blockchain технологиясына өзүнүн атын берет, ошондой эле блокторду же блоктордон жеке транзакцияларды байкалбай өзгөртүүгө/жок кылууга мүмкүн эмес. Ошентип, эгерде транзакция блокчейнге киргизилсе, анын маалыматтары өзгөрүүсүз калат деп ишене аласыз.
  3. Кайсы маалыматтарды жарактуу деп эсептеп, кайсынысын жокко чыгаруу керектиги боюнча тармактык консенсуска жетүү менен эки эселенген шылуундуктун алдын алат. Bitcoin тармагында консенсус иштин далили (PoW) менен жетишилет.
  4. Тармактын ишенимдүүлүгү блокчейндин ачык болушу менен жетишилет, мында ар бир катышуучу өз түйүнүн иштетип, блокчейндин толук көчүрмөсүн ала алат жана андан тышкары транзакциялардын тууралыгын өз алдынча текшере баштайт. Белгилей кетсек, заманбап блокчейндер коомдук (ачык) гана эмес, жеке (жабык) блокчейндерди курууга, ошондой эле айкалышкан схемаларды колдонууга мүмкүндүк берет.
  5. Блокчейн комиссиялардан толук кутула албайт, анткени... сиз тармакты колдогон адамдарга төлөшүңүз керек, бирок блокчейнде комиссиянын зарылдыгы ушунчалык ынанымдуу далилденгендиктен, анын зарылдыгына эч кандай шек жок.
  6. Заманбап блокчейндер бизнес логикасын ишке ашыруу мүмкүнчүлүгүнө ээ, ал блокчейнде Smart Contracts деп аталат. Акылдуу келишимдердин логикасы ар кандай жогорку деңгээлдеги тилдерде ишке ашырылат.

Кийинки, биз кененирээк бул чечимдерди карап чыгабыз.

Блокчейн архитектурасы

Блокчейн компоненттери

Ар бир катышуучу блокчейндин толук көчүрмөсү (толук түйүн) менен өз түйүнүн ишке киргизе алат. Блокчейндеги транзакцияларды жаза турган толук түйүндөр деп аталат консенсус түйүндөрү (күбө) же шахтерлор (шахтер). Транзакциялардын тууралыгын гана текшерген толук түйүндөр деп аталат аудит түйүндөр (аудит). Жеңил кардарлар (жеңил кардарлар) блокчейндин толук көчүрмөлөрүн сакташпайт, бирок толук түйүндөрдү колдонуу менен тармак менен иштешет.
Көпчүлүк колдонуучулар транзакцияларды жүргүзүү үчүн жеңил кардарларды же веб капчыктарды колдонушат. Бардык түйүндөр бири-бири менен байланышкан. Бул элементтердин топтому менен тармактын архитектурасы туруктуураак болот:

Блокчейнди эмне куруу керек?

Транзакциянын жашоо цикли

Келгиле, транзакциянын жашоо циклин карап көрөлү жана аны бөлүктөргө бөлөбүз:

Блокчейнди эмне куруу керек?

Блокчейн технологиялары

Келгиле, техникалык чечимдерге жана алардын бири-бири менен байланыштарына кененирээк токтололу.

аныктоо

Ар бир blockchain транзакциясы санарип кол коюлушу керек. Ошондуктан, транзакцияны аяктоо үчүн ар бир катышуучу ачкыч жупка ээ болушу керек: жеке / коомдук. Кээде бир жуп ачкыч капчык деп аталат, анткени ачкычтар катышуучунун уникалдуу санариптик дареги жана балансы менен уникалдуу түрдө байланышкан. Чындыгында, ачкычтар жана даректер ар кандай сан системаларындагы сандар саптары гана. Ачкычтардын жана капчык даректеринин мисалдары:

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

Блокчейндерде санариптик кол тамганы түзүү үчүн эллиптикалык ийри сызыктарга негизделген алгоритм колдонулат: Elliptic Curve Digital Signature Algorithm (ECDSA). Анын иштеши үчүн купуя ачкыч (256-бит саны) адатта туш келди кабыл алынат. Негизги варианттардын саны 2ден 256га чейин, ошондуктан биз купуя ачкычтардын баалуулуктарына дал келүүнүн иш жүзүндө мүмкүн эместиги жөнүндө айта алабыз.

Андан кийин, ачык ачкыч купуя ачкычтан анын маанисин эллиптикалык ийри сызыкта жайгашкан чекиттин координатасына көбөйтүү жолу менен алынат, натыйжада ошол эле ийри сызыктагы жаңы чекиттин координаттары алынат. Бул аракет транзакцияларга санариптик кол коюуга ылайыктуу ачкыч жупту алууну камсыздайт. Акыр-аягы, капчык дареги ачык ачкычтан уникалдуу түрдө алынган.

Блокчейнде колдонулган криптографиянын чоо-жайы бар көптөгөн макалалар бар, мисалы: Кыскача айтканда Bitcoin - Криптография

Жеке ачкыч катуу купуялуу жана коопсуз сакталышы керек. Ачык ачкыч баарына белгилүү. Эгерде купуя ачкыч жоголсо, активге (монеталарга) жетүү калыбына келтирилбейт жана акча түбөлүккө жоголот. Ошондуктан, купуя ачкычтарды коопсуз сактоо милдети өтө актуалдуу, анткени Бул дайыма паспортуңуз менен келип, эсебиңизди калыбына келтире турган банк эмес. Флэш-дисктерге окшош муздак крипто капчыктарды өндүрүү үчүн бүтүндөй бир тармак бар:

Блокчейнди эмне куруу керек?

же сиз дагы ишенимдүү ыкмаларды колдоно аласыз, мисалы, жеке ачкычтын маанисин токендерге штамптоо:

Блокчейнди эмне куруу керек?

бүтүмдөр

бүтүм түзүмү жөнүндө көбүрөөк маалымат макалада тапса болот Кыскача Bitcoin - транзакция. Ар бир транзакцияда жок дегенде төмөнкү маалыматтар бар экенин түшүнүү биз үчүн маанилүү:

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

Андан кийин, транзакцияга купуя ачкыч менен кол коюлуп, жөнөтүлөт (протоколдун иштеши боюнча чоо-жайын караңыз Кыскача айтканда Bitcoin - Протокол) бүтүмдөрдүн жарактуулугун текшерген блокчейндеги бардык түйүндөргө. транзакцияны текшерүү алгоритми маанилүү эмес жана камтыйт эки ондогон кадам.

Транзакция блоктору

Транзакциялардын жарактуулугун текшергенден кийин, түйүндөр алардан блокторду түзөт. Транзакциялардан тышкары блокко мурунку блоктун хэши жана сан (Nonce эсептегич) жазылат, ал эми учурдагы блоктун хэши SHA-256 алгоритминин жардамы менен эсептелет. хэш түзүлгөн татаал шарттарга ээ болушу керек. Мисалы, Bitcoin тармагында хэштин татаалдыгы тармактын кубаттуулугуна жараша 2 жума сайын автоматтык түрдө өзгөрүп турат, андыктан блок болжол менен 10 мүнөт сайын бир жолу түзүлөт. Татаалдуулук төмөнкү шарт менен аныкталат: табылган хэш алдын ала белгиленген сандан аз болушу керек. Эгерде бул шарт аткарылбаса, анда Nonceге 1 кошулуп, хэшти эсептөө иши кайталанат. Хэшти тандоо үчүн Nonce талаасы колдонулат, анткени Бул блокто өзгөртө турган жалгыз маалымат, калганы өзгөрүүсүз калышы керек. Жарактуу хэште белгилүү сандагы алдыңкы нөлдөр болушу керек, мисалы, чыныгы хэштердин бири:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Хэшти ийгиликтүү табуу - Bitcoin же Ethereum тармактары үчүн аткарылган иштин далили (Proof-of-Work, PoW). таштандыларды табуу жараяны алтын казып алуу сыяктуу тоо-кен казып алуу деп аталат. Аты процесстин маңызын так аныктайт, анткени варианттардын жөнөкөй издөөсү бар, эгер кимдир бирөө ылайыктуу хэшти тапса, анда бул чындап ийгилик. Бул тонналаган бош тектердин ичинен чыныгы алтын кенин тапкандай. блок сыйлык азыр 12.5 BTC жана $ 3900 учурдагы Bitcoin курсу менен көбөйтсө, анда таза алтын бир килограммдан ашык аласыз. Күрөшө турган нерсе бар!

Хешти ийгиликтүү тапкандан кийин блок жана табылган хэш кийинки блок катары блокчейнге жазылат. Блоктордун түзүлүшү жөнүндө кененирээк макалада тапса болот Кыскача айтканда Bitcoin - Blockchain, жана төмөндө жөнөкөйлөштүрүлгөн диаграмма болуп саналат:

Блокчейнди эмне куруу керек?

Блокчейн мурунку блоктун хэшине ээ эмес блок менен башталат. Блокчейнде ушундай бир гана блок бар жана анын өз аталышы Башталыш блогу бар. Калган блоктор бирдей түзүлүшкө ээ жана бүтүмдөрдүн саны боюнча гана айырмаланат. Учурда Bitcoin же Ethereumда түзүлүп жаткан реалдуу транзакцияларды жана блокторду көрүүгө болот блок Explorer.

Биткойндогу блоктордун өлчөмү 1 МБ менен чектелет жана транзакциядагы минималдуу маалымат менен 200 байтка жакын, блоктогу транзакциялардын максималдуу саны 6000ге жакын болушу мүмкүн. Бул жерден, демек, ар бир адам күлүп турган Биткойндун иштеши төмөнкүдөй: блок болжол менен ар бир 10 мүнөт сайын * 60 секунда = 600 секундада түзүлөт, бул 10 TPS формалдуу көрсөткүчтү берет. Чынында, бул өндүрүмдүүлүк эмес, бирок атайылап ишке ашырылган иш алгоритми. Ethereum-жылы, атаандаштык үчүн, алар жөн гана блок муун убактысын 15 секунд кылды. жана өндүрүмдүүлүк формалдуу түрдө жогорулады. Ошондуктан, PoW консенсус катары колдонгон блокчейндерде, өндүрүмдүүлүктү салыштыруунун мааниси жок, анткени бул түздөн-түз каалаган мааниге ыйгарылышы мүмкүн болгон кэш эсептөөнүн татаалдыгына жараша болот.

Айрылар

Мисалы, бир нече түйүндөр татаалдык шарттарына жооп берген, бирок мааниси боюнча ар түрдүү (башкача айтканда, алар ар кандай консенсуска келген) хэштерди таап, блокчейнге блокторду жазса эмне болот? Келгиле, blockchain бул кырдаалдан кантип коргой турганын карап көрөлү. Бул учурда, айры деп аталган нерсе пайда болот жана блокчейнде чынжырдын эки версиясы бар:

Блокчейнди эмне куруу керек?

Андан кийин эмне болот? Андан кийин тармактын бир бөлүгү N+2 блогунда бир чынжырдан, ал эми бир бөлүгү башкасынан иштей баштайт:

Блокчейнди эмне куруу керек?

Бул блоктордун бири мурдараак табылып, блокчейнге жөнөтүлөт, андан кийин эрежелерге ылайык, блокчейн узунураак чынжырга өтүп, альтернативдик блоктон бардык транзакцияларды жокко чыгарышы керек:

Блокчейнди эмне куруу керек?

Ошол эле учурда, катышуучунун транзакциясы жокко чыгарылган айры блоктордун биринде гана болгон жагдай пайда болушу мүмкүн. Ошондуктан, каалаган транзакция блокчейнге жазылганына ишенүү үчүн, жалпы сунуш бар - транзакцияга ишенүүдөн мурун, блокчейнге кийинки бир нече блок кошулганга чейин күтүшүңүз керек. Ар кандай блокчейндерди күтө турган канча блок боюнча сунуштар ар кандай. Мисалы, Bitcoin тармагы үчүн минималдуу 2 блок, максималдуу 6 болуп саналат.

Блок айрылары менен эле сүрөт 51% деп аталган чабуул учурунда байкалат - бул шахтерлордун тобу алдамчылык транзакциялары менен чынжырды жокко чыгарууга аракет кылып, альтернативдүү блок чынжырын өстүрүүгө аракет кылганда. Азыркы учурда алдамчылыктын ордуна, өз күчүңдү таза казууга жумшаган пайдалуураак.

Консенсус

Блокчейнге блокту жазуу үчүн тармак консенсуска жетиши керек. Компьютердик байланыш түйүндөрүндө консенсуска жетүү милдетин эстеп көрөлү. Маселе Византия генералдарынын милдети катары формулировкаланган BFT (Византиянын күнөөгө чыдамдуулугу). Византия армиясынын көйгөйлөрүнүн кооз сүрөттөлүшүн калтырып, маселени төмөнкүчө формулировкалоого болот: эгерде кээ бир тармак түйүндөрү аларды атайылап бурмалай алса, тармак түйүндөрү кантип жалпы жыйынтыкка келе алат. BFT маселесин чечүү үчүн колдонулуп жаткан алгоритмдер, эгер алдамчылардын 1/3 бөлүгүнөн азыраак болсо, тармак туура иштей аларын көрсөтүп турат. Эмне үчүн BFT консенсус Bitcoin тармагына колдонулган эмес? Эмне үчүн PoW колдонуу зарыл болгон? Бир нече себептери бар:

  • BFT түйүндөрүнүн кичинекей туруктуу топтому менен жакшы иштейт, бирок коомдук блокчейнде түйүндөрдүн саны күтүүсүз жана андан тышкары түйүндөрдү туш келди күйгүзүп жана өчүрүп койсо болот.
  • Адамдарды блокчейн түйүндөрүн ишке киргизүүгө түрткү берүү керек. Бул үчүн адамдарга сыйлык берилиши керек. BFTде формалдуу түрдө сыйлык алуу үчүн эч нерсе жок, бирок PoWде сыйлык эмне үчүн экени интуитивдик деңгээлде баарына түшүнүктүү: блок хэшти табуу процессинде процессор керектеген электр энергиясы үчүн.

PoWдан тышкары, заманбап блокчейндерде колдонулган бир нече башка консенсустар бар, мисалы:

  • PoS (Proof-of-Stake) - блокчейнде Hyperledg болот
  • DPoS (Delegated Proof-of-Stake) - блокчейнде BitShares
  • BFTтин модификациялары: SBFT (Жөнөкөйлөштүрүлгөн BFT) жана PBFT (Практикалык BFT), мисалы, блокчейнде Exonum

Келгиле, PoS консенсусуна бир аз токтололу, анткени... Бул жеке блокчейндерде эң кеңири таралган PoS жана анын сорттору. Эмне үчүн купуя? Бир жагынан алганда, PoS өзгөчөлүктөрү PoW салыштырмалуу жакшыраак, анткени Консенсуска жетүү үчүн, азыраак эсептөө ресурстары керектелет, бул блокчейнге маалыматтарды жазуу ылдамдыгын билдирет. Бирок, экинчи жагынан, PoS алдамчылык үчүн көбүрөөк мүмкүнчүлүккө ээ, андыктан муну нейтралдаштыруу үчүн блокчейндин бардык катышуучулары белгилүү болушу керек.

PoS консенсусу эсептеги каражаттардын суммасына жараша блокчейнге транзакциялар менен блок жаза ала турган түйүндү тандоого негизделген, тагыраак айтканда, эсептеги эмес, күрөөдөгү, б.а. Күрөө катары канчалык көп каражатыңыз болсо, тармак блок жазуу үчүн түйүнүңүздү ошончолук көбүрөөк тандайт. Блок жараксыз болсо, депозит кайтарылбайт. Бул алдамчылыктан коргоону камсыз кылат. PoS төмөнкү вариациялары бар:

  • Делегацияланган PoS (DPoS) консенсусу катышуучуларды "шайлоочуларга" жана "текшерүүчүлөргө" бөлөт. Монетанын ээлери (добуш берүүчү катышуучулар) блокчейндеги транзакцияларды текшерүү жана жазуу боюнча ыйгарым укуктарын башка катышуучуларга өткөрүп беришет. Ошентип, валидаторлор бардык эсептөө иштерин аткарышат жана ал үчүн сыйлык алышат жана добуш берүүгө катышуучулардын катышуусу валидаторлордун чынчылдыгына кепилдик берет, анткени алар каалаган убакта өзгөртүлүшү мүмкүн.
  • LPoS (Ижарага алынган Proof-of-Stake) консенсусу акчаңызды башка түйүндөргө ижарага берүүгө мүмкүндүк берет, ошондо алар блокторду текшерүү мүмкүнчүлүгүнө ээ болушат. Ошол. Сиз иш жүзүндө бүтүм текшерүү жана бөгөт тоо-кен казып алуу катышпастан бүтүмдөр үчүн комиссия ала аласыз.

Дагы бир катар башка консенсустар бар, алар кеңири колдонула элек, мен аларды маалымат үчүн бул жерде келтирем жана консенсус алгоритмдеринин жалпы баяндамасын, мисалы, макаладан тапса болот: Блокчейндеги консенсус алгоритмдери.

  • PoET (Proof-of-Elapsed Time)
  • PoC (Proof-of-Capacity)
  • PoB (Күйүү далили)
  • PoWeight (Салмактын далили)
  • PoA (Proof-of-Activity) – PoW + PoS
  • PoI (маанилүү далил)

Блокчейндердин ишенимдүүлүгү жана жайылтуу моделдери

Коомдук блокчейн

Туруктуулук коомдук же башка аты Уруксатсыз блокчейн Бул ар бир адамга туташып, маалыматты көрүүгө же ал тургай өз түйүнүнө туташтырууга мүмкүндүк берүү аркылуу жетишилет жана ишеним PoW консенсусуна негизделет.

Жеке блокчейн

жеке же Жеке уруксат берилген блокчейн. Бул блокчейндерде катышуучулардын белгилүү бир тобу (уюмдар же адамдар) гана маалыматка жете алышат. Мындай блокчейндер жалпы пайданы же натыйжалуулукту жогорулатуу максатында уюмдар тарабынан курулат. Алардын ишенимдүүлүгү катышуучулардын жалпы максаттары жана PoS жана BFT консенсус алгоритмдери менен камсыз кылынат.

Блокчейн консорциуму

жок бирикме же Коомдук уруксат берилген блокчейн. Бул блокчейндер, аларды көрүү үчүн каалаган адам туташа алат, бирок катышуучу башка катышуучулардын уруксаты менен гана маалымат кошо алат же өз түйүнүнө туташа алат. Мындай блокчейндер кардарлардын же өнүмдөрдүн керектөөчүлөрүнүн же бүтүндөй коомдун ишенимин жогорулатуу максатында уюмдар тарабынан курулат. Бул жерде ишенимдүүлүк катышуучулардын ортосундагы ишенимдин жана ошол эле PoS жана BFT консенсус алгоритмдеринин болушу менен да жетишилет.

Smart келишимдер

Биткойндон кийин ишке ашырылган блокчейндер тигил же бул даражада акылдуу келишимдерди ишке ашыруу мүмкүнчүлүгүн кошту. Негизи, акылдуу келишим программа коду ишке ашыруу үчүн жайгаштырылган бүтүм болуп саналат. Ethereum тармагындагы акылдуу келишимдер EVMде (Ethereum Virtual Machine) аткарылат. Акылдуу келишимди ишке ашырууну баштоо үчүн, ал башка транзакция менен ачык түрдө ишке кириши керек, же аткаруу үчүн өбөлгөлөр аткарылышы керек. Акылдуу келишимдин аткарылышынын натыйжалары да блокчейнге жазылат. Блокчейндин сыртынан маалыматтарды алуу мүмкүн, бирок өтө чектелген.

Кандай бизнес логикасын акылдуу келишим аркылуу ишке ашырууга болот? Чынында, көп нерсе жок, мисалы, блокчейндеги маалыматтарды колдонуу менен шарттарды текшерүү, ушул шарттарга жараша санариптик активдердин ээлерин өзгөртүү, блокчейндин ичиндеги туруктуу сактагычка маалыматтарды жазуу. Логика өзгөчө жогорку деңгээлдеги Solidity тилинде ишке ашырылат.

Акылдуу контракттарды колдонуу менен ишке ашырылган функциянын классикалык мисалы - ICO үчүн токендерди чыгаруу. Мисалы, мен жөнөкөй 500 000 000 AlexToken чыгаруу үчүн акылдуу келишимди ишке ашырдым. By Etherscanдагы шилтеме Ал

акылдуу келишимдин булак коду 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;
}

жана тармак аны көргөн бинардык өкүлчүлүк

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

акылдуу келишимдер жөнүндө көбүрөөк маалымат макалада тапса болот: Ethereum акылдуу келишимдер деген эмне.

жыйынтыктоо

Биз заманбап блокчейндер курулган технологияларды жана алар бири-бири менен кантип байланышканын санап бердик. Эми келгиле, блокчейндин жардамы менен кайсы көйгөйлөрдү чечсе болорун жана кайсы чечимдер эң жакшысы натыйжасыз болорун аныктап көрөлү. Ошентип, blockchain колдонуу зарыл эмес, эгерде:

  • Бүтүмдөр ишенимдүү чөйрөдө жүргүзүлөт;
  • Ортомчулар комиссиясынын болушу катышуучулардын жашоосун начарлатпайт;
  • Катышуучулар санариптик активдер катары көрсөтүлө турган мүлккө ээ эмес;
  • Санариптик активдерде бөлүштүрүү жок, б.а. баалуулук бир гана катышуучуга таандык же берилет.

Блокчейндин келечеги кандай болот? Эми биз блокчейн технологияларын өнүктүрүүнүн мүмкүн болгон жолдору жөнүндө гана божомолдоого болот:

  • Blockchain, мисалы, SQL же NoSQL сыяктуу эле жалпы маалымат базасынын технологиясы болуп калат;
  • Блокчейн кеңири таралган протоколго айланат, мисалы HTTP Интернет үчүн;
  • Блокчейн планетадагы жаңы каржылык жана саясий системанын негизи болуп калат!

Кийинки бөлүмдө биз азыркы учурда кандай блокчейндер бар экенин жана эмне үчүн алар ар кандай тармактарда колдонуларын карап чыгабыз.

Бул башталышы гана!

Source: www.habr.com

Комментарий кошуу