Китеп "Ethereum Blockchain үчүн бекемдик акылдуу келишимдерди түзүү. Практикалык колдонмо»

Китеп "Ethereum Blockchain үчүн бекемдик акылдуу келишимдерди түзүү. Практикалык колдонмо»
Бир жылдан ашык убакыттан бери мен "Ethereum Blockchain үчүн бекемдиктин акылдуу келишимдерин түзүү" китебинде иштеп жатам. Практикалык колдонмо», жана азыр бул иш аяктады, жана китеп басылып чыккан жана литр менен жеткиликтүү.

Менин китебим сизге Ethereum blockchain үчүн Solidity акылдуу байланыштарын жана бөлүштүрүлгөн DApps түзүүнү тез баштоого жардам берет деп үмүттөнөм. Ал практикалык тапшырмалар менен 12 сабактан турат. Аларды аяктагандан кийин, окурман өзүнүн жергиликтүү Ethereum түйүндөрүн түзө алат, акылдуу контракттарды жарыялайт жана алардын ыкмаларын чакыра алат, чыныгы дүйнө менен акылдуу келишимдердин ортосунда Oracles аркылуу маалымат алмашуу жана Rinkeby тестти оңдоо тармагы менен иштей алат.

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

Төмөндө сиз китептин мазмунун жана биринчи бөлүмүн таба аласыз (ошондой эле Литр китептин фрагменттери бар). Пикир, сын-пикирлер жана сунуштар болот деп үмүттөнөм. Булардын баарын китептин кийинки басылышын даярдоодо эске алганга аракет кылам.

МазмунутааныштырууБиздин китеп Ethereum блокчейнинин принциптерин гана түшүнбөстөн, бул тармак үчүн Solidity программалоо тилинде бөлүштүрүлгөн DApps түзүүдө практикалык көндүмдөргө ээ болууну каалагандар үчүн арналган.

Бул китепти жөн эле окуп койбостон, сабактарда айтылган практикалык тапшырмаларды аткарып, аны менен иштөө жакшы. Иштөө үчүн сизге Debian же Ubuntu орнотулган жергиликтүү компьютер, виртуалдык же булут сервери керек болот. Ошондой эле Raspberry Pi менен көптөгөн тапшырмаларды аткара аласыз.

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

максат экинчи сабак - Ubuntu жана Debian серверинде ушул курстун алкагында андан аркы иштөө үчүн жеке Ethereum блокчейн түйүнүн түзүү. Биз блокчейн түйүнүбүздүн иштешин камсыз кылган geth сыяктуу негизги утилиталарды орнотуунун өзгөчөлүктөрүн, ошондой эле борбордон ажыратылган маалыматтарды сактоо демонун карап чыгабыз.

Үчүнчү сабак арзан Raspberry Pi микрокомпьютеринде Ethereum менен эксперимент жасоону үйрөтөт. Сиз Rasberian операциялык тутумун (OS) Raspberry Piге, блокчейн түйүнүн иштеткен Geth утилитасына жана Swarm борбордон ажыратылган маалымат кампасы демонуна орнотосуз.

төртүнчү сабак Ethereum тармагындагы эсептерге жана cryptocurrency бирдиктерине, ошондой эле Geth консолунан бир эсептен экинчисине акча каражаттарын которуу жолдоруна арналган. Сиз эсептерди түзүүнү, акча которуу транзакцияларын баштоону, транзакция статусун жана квитанцияны алууну үйрөнөсүз.

Бешинчи сабакта сиз Ethereum тармагындагы акылдуу келишимдер менен таанышасыз, алардын Ethereum виртуалдык машинасы тарабынан аткарылышы жөнүндө билесиз.

Сиз Ethereum жеке тармагында биринчи акылдуу келишимди түзүп, жарыялайсыз жана анын функцияларын кантип чакырууну үйрөнөсүз. Бул үчүн, сиз Remix Solidity IDE колдоносуз. Мындан тышкары, сиз solc пакетинин компиляторун кантип орнотууну жана колдонууну үйрөнөсүз.
Биз ошондой эле Application Binary Interface (ABI) деп аталган жөнүндө сүйлөшөбүз жана аны кантип колдонууну үйрөтөбүз.

Алтынчы сабак Node.js иштеткен JavaScript скрипттерин түзүүгө жана Solidity акылдуу келишимдери менен операцияларды аткарууга арналган.

Сиз Node.jsти Ubuntu, Debian жана Rasberian OSке орнотосуз, Ethereum локалдык тармагында акылдуу келишимди жарыялоо үчүн скрипттерди жазасыз жана анын функцияларын чакырасыз.

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

Жетинчи сабакта сиз Solidity акылдуу келишимди иштеп чыгуучулардын арасында популярдуу болгон Truffle интеграцияланган чөйрөсүн кантип орнотууну жана колдонууну үйрөнөсүз. Сиз трюфель-контракт модулунун жардамы менен контракт функцияларын чакырган JavaScript скрипттерин кантип түзүүнү үйрөнөсүз жана Truffle менен акылдуу келишимиңизди сынайсыз.

Сегизинчи сабак Solidity маалымат түрлөрүнө арналган. Сиз кол коюлган жана кол коюлбаган бүтүн сандар, кол коюлган сандар, саптар, даректер, татаал түрдөгү өзгөрмөлөр, массивдер, тизмектер, структуралар жана сөздүктөр сыяктуу маалымат түрлөрү менен иштеген акылдуу келишимдерди жазасыз.

Тогузунчу сабакта негизги Ethereum тармагы үчүн акылдуу келишимдерди түзүүгө бир кадам жакын болосуз. Сиз Geth жеке тармагында, ошондой эле Rinkeby testnet тармагында Truffle аркылуу келишимдерди кантип жарыялоону үйрөнөсүз. Rinkeby тармагында акылдуу келишимди оңдоо аны негизги тармакка жарыялоодон мурун абдан пайдалуу - ал жерде дээрлик бардыгы реалдуу, бирок бекер.

Сабактын бир бөлүгү катары, сиз Rinkeby testnet түйүн түзүп, аны каражат менен толуктайсыз жана акылдуу келишимди жарыялайсыз.

10-сабак Ethereum Swarm бөлүштүрүлгөн маалымат дүкөндөрүнө арналган. Бөлүштүрүлгөн сактагычты колдонуу менен сиз Ethereum блокчейнинде чоң көлөмдөгү маалыматтарды сактоодон үнөмдөйсүз.

Бул окуу куралында сиз жергиликтүү Swarm сактагычын түзүп, файлдарды жана каталогдорду жазасыз жана окуйсуз. Андан кийин, сиз коомдук Swarm шлюзи менен кантип иштөөнү, Swarmге Node.js сайтынан кирүү үчүн скрипттерди жазууну, ошондой эле Net::Ethereum::Swarm Perl модулун колдонууну үйрөнөсүз.

11-сабак Максат — популярдуу Python программалоо тилин жана Web3.py алкагын колдонуу менен Solidity акылдуу келишимдери менен иштөө чебери. Сиз бул алкакты орнотосуз, акылдуу келишимди түзүү жана жарыялоо, ошондой эле анын функцияларын чакыруу үчүн скрипттерди жазасыз. Бул учурда, Web3.py өзү жана Truffle интеграцияланган өнүктүрүү чөйрөсү менен бирге колдонулат.

12-сабакта сиз Oracles аркылуу акылдуу келишимдер менен реалдуу дүйнөнүн ортосунда маалыматтарды кантип өткөрүүнү үйрөнөсүз. Бул веб-сайттардан, IoT түзмөктөрүнөн, ар кандай түзмөктөрдөн жана сенсорлордон маалыматтарды алуу жана акылдуу келишимдерден маалыматтарды бул түзмөктөргө жөнөтүү үчүн пайдалуу. Сабактын практикалык бөлүгүндө сиз Россия Федерациясынын Борбордук банкынын веб-сайтынан учурдагы доллардын рублга курсун алган oracle жана акылдуу келишим түзөсүз.

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

Бүгүнкү күндө блокчейн технологиясы (Blockchain), криптовалюталар (Криптовалюта же Крипто Валюта), биткойндор (Bitcoin), баштапкы монета сунушу (ICO, Initial coin offering), акылдуу контракттар (Smart Contract) жөнүндө эч нерсе укпаган программалык камсыздоону иштеп чыгуучу жок. ошондой эле блокчейн менен байланышкан башка түшүнүктөр жана терминдер.

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

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

Блокчейн деген эмне

Блокчейн (Blockchain, Block Chain) - бул белгилүү бир жол менен бири-бири менен байланышкан маалымат блокторунун тизмеги. Чынжырдын башында биринчи блок турат, ал биринчи блок (генезис блок) же генезис блок деп аталат. Андан кийин экинчи, андан кийин үчүнчү ж.б.у.с.

Бул маалыматтардын бардык блоктору блокчейн тармагынын көптөгөн түйүндөрүндө автоматтык түрдө кайталанат. Бул блокчейн маалыматтарын борбордон ажыратылган сактоону камсыз кылат.
Блокчейн тутумун чогуу тармакка туташтырылган түйүндөр (физикалык же виртуалдык серверлер) жана маалыматтар блок чынжырындагы бардык өзгөрүүлөрдү репликациялоочу көп сандагы түйүндөр деп ойлосоңуз болот. Бул гиганттык көп сервердик компьютер сыяктуу жана мындай компьютердин (серверлердин) түйүндөрү дүйнө жүзү боюнча чачырап кетиши мүмкүн. Жана сиз да компьютериңизди blockchain тармагына кошо аласыз.

Бөлүштүрүлгөн маалымат базасы

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

Бөлүштүрүлгөн маалыматтар реестри

Блокчейнди маалыматтардын жана операциялардын (бүтүмдөрдүн) бөлүштүрүлгөн китеби катары кароого болот. Мындай реестрдин дагы бир аталышы - бухгалтердик китеп.

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

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

бүтүмдөр

Blockchain блоктордогу операциялар (бүтүмдөр) жөнүндө маалыматты сактайт. Ошол эле учурда, эски, буга чейин аяктаган бүтүмдөрдү артка жылдырып же өзгөртүү мүмкүн эмес. Жаңы транзакциялар жаңы, кошулган блоктордо сакталат.

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

Ethereum блокчейнинде система деп аталган мамлекеттер бар. Транзакциялардын жүрүшү менен абал баштапкыдан учурдагыга өзгөрөт. Транзакциялар блокторго жазылат.

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

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

Блокчейндин практикалык колдонмолору

Блокчейн эмне үчүн колдонулушу мүмкүн?

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

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

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

Ethereum тармагында иштеген программалык камсыздоо болуп саналган акылдуу келишимдер транзакцияларды түзүү жана алардын аткарылышын көзөмөлдөө процессин автоматташтырууга мүмкүндүк берет. Бул бүтүм үчүн төлөм Этер cryptocurrency (эфир) менен жүзөгө ашырылат, өзгөчө натыйжалуу болуп саналат.

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

  • документтерди нотариалдык күбөлөндүрүүгө альтернатива;
  • кыймылсыз мүлк объектилеринин реестрин жана кыймылсыз мүлк объектилери менен болгон бүтүмдөр жөнүндө маалыматтарды жүргүзүү;
  • интеллектуалдык менчик объектилерине автордук укук маалыматын сактоо (китептер, сүрөттөр, музыкалык чыгармалар ж.б.);
  • көз карандысыз добуш берүү системасын түзүү;
  • финансы жана банк иши;
  • эл аралык масштабдагы логистика, товарлардын кыймылына көз салуу;
  • жеке маалыматтарды идентификациялык карта системасынын аналогу катары сактоо;
  • соода чөйрөсүндө коопсуз операциялар;
  • медициналык текшерүүлөрдүн жыйынтыктарын, ошондой эле белгиленген процедуралардын тарыхын сактоо

Блокчейн менен көйгөйлөр

Бирок, албетте, баары көрүнгөндөй жөнөкөй эмес!

Маалыматтарды блокчейнге кошуудан мурун текшерүүдө көйгөйлөр бар (мисалы, алар жасалмабы?), блокчейн менен иштөө үчүн колдонулган тутумдук жана колдонмо программалык камсыздоонун коопсуздугу менен байланышкан көйгөйлөр, кирүү мүмкүнчүлүгүн уурдоо үчүн социалдык инженерия ыкмаларын колдонуу мүмкүнчүлүгү менен байланышкан көйгөйлөр бар. cryptocurrency капчыктарга, ж.б.. .P.

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

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

Ethereum борбордон ажыратылган тиркемелер cryptocurrency менен аларды пайдалануу үчүн төлөө болсо, ыңгайлуу болот. Канчалык көп адамдар криптовалютага ээ болсо же сатып алууга даяр болсо, DApps жана акылдуу келишимдер ошончолук популярдуу болот.

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

Дагы бир көйгөй Ethereum blockchain акылдуу келишимдер жасалма машиналар обочолонгон чөйрөдө иштейт, жана реалдуу дүйнө маалыматтарга мүмкүнчүлүгү жок. Атап айтканда, акылдуу келишим программасы өзү веб-сайттардан же кандайдыр бир физикалык түзүлүштөрдөн (сенсорлор, байланыштар ж. Биз бул көйгөйдү жана аны чечүүнүн жолдорун Oracles деп аталган сабакта талкуулайбыз - акылдуу келишимдердин маалымат ортомчулары.

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

Блокчейн чынжыр кантип түзүлөт

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

fig боюнча. 1.1 биз блок ырааттуулугунун эң жөнөкөй версиясын көрсөттүк, мында биринчи блок кийинкиге тиешелүү.

Китеп "Ethereum Blockchain үчүн бекемдик акылдуу келишимдерди түзүү. Практикалык колдонмо»
Райс. 1.1. Жөнөкөй блоктун ырааттуулугу

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

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

Китеп "Ethereum Blockchain үчүн бекемдик акылдуу келишимдерди түзүү. Практикалык колдонмо»
Райс. 1.2. Блок маалыматтары үчүн текшерүү суммасын коргоону кошуу

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

Текшерүү суммасын эсептөө үчүн MD-5, SHA-1, SHA-256 ж.б. сыяктуу хэш-функциялардын бирин колдоно аласыз. Хэш-функциялар маалыматтар блогунда кайтарылгыс операцияларды аткаруунун натыйжасында кандайдыр бир маанини (мисалы, туруктуу узундуктагы тексттик сап түрүндө) эсептейт. Операциялар хэш-функциянын түрүнө жараша болот.

Маалымат блогунун мазмуну бир аз өзгөрсө да, хэш мааниси да өзгөрөт. Хеш-функциянын маанисин талдоо менен, ал эсептелген маалыматтардын блогун калыбына келтирүү мүмкүн эмес.

Мындай коргоо жетиштүү болобу? Тилекке каршы жок.

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

Бүтүндөй чынжырды коргоо үчүн ар бир блокто маалыматтар менен бирге мурунку блоктун маалыматтарынын хэштерин да сактай аласыз (1.3-сүрөт).

Китеп "Ethereum Blockchain үчүн бекемдик акылдуу келишимдерди түзүү. Практикалык колдонмо»
Райс. 1.3. Маалымат блогуна мурунку блоктун хэштерин кошуңуз

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

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

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

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

Blockchain Ethereum

Ethereum blockchain - бул бөлүштүрүлгөн DApps түзө турган платформа. Башка платформалардан айырмаланып, Ethereum Solidity программалоо тилинде жазылган акылдуу келишимдерди (акылдуу келишимдер, акылдуу келишимдер) колдонууга мүмкүндүк берет.

Бул платформа 2013-жылы Bitcoin журналынын негиздөөчүсү Виталик Бутерин тарабынан түзүлгөн жана 2015-жылы ишке киргизилген. Биздин окуу курсубузда үйрөнө турган же жасай турган нерселердин баары Ethereum blockchain жана Solidity акылдуу келишимдерине байланыштуу.

Майнинг же блоктор кантип түзүлөт

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

Блокторду кошууга катышкан адамдар жана уюмдар шахтерлор деп аталат.
Шахтерлордун түйүндөрүндө иштеген программалык камсыздоо (программалык камсыздоо) тармак тарабынан берилген белгилүү бир хэш маанисин алуу үчүн акыркы блок үчүн Nonce деп аталган хэшинг параметрин алууга аракет кылат. Ethereumда колдонулган Ethash хэшинг алгоритми Nonce маанисин ырааттуу санап гана алууга мүмкүндүк берет.

Miner түйүнү туура Nonce баасын тапкан болсо, анда бул иштин далили (PoW, Proof-of-work) деп аталган нерсе. Бул учурда, блок Ethereum тармагына кошулган болсо, кенчи тармактын акча белгилүү бир сыйлык алат - Этер. Бул китепти жазып жаткан учурда сыйлык 5 Этер, бирок убакыттын өтүшү менен бул азаят.

Ошентип, Ethereum кенчилер блокторду кошуу менен тармактын иштешин камсыз кылуу, жана бул үчүн cryptocurrency акча алышат. Сиз Интернеттен кенчилер жана тоо-кен казып алуу жөнүндө көптөгөн маалыматтарды таба аласыз, жана биз Ethereum тармагында Solidity келишимдерин жана DApps түзүүгө басым жасайбыз.

Сабактын корутундусу

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

Блокчейн транзакциялардын натыйжаларын сактоо үчүн колдонулушу мүмкүн. Анын негизги максаты тараптардын (адамдардын жана уюмдардын) ортосунда ишеним жок бүтүмдөрдүн коопсуз аткарылышын уюштуруу болуп саналат. Сиз Ethereum blockchain жана Solidity акылдуу келишимдерин бизнестин кайсы спецификалык чөйрөсүндө жана кайсы чөйрөлөрдө колдоно ала тургандыгын билдиңиз. Бул банк сектору, мүлктүк укуктарды каттоо, документтерди ж.б.

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

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

2-сабак: Ubuntu жана Debianда иш столунун чөйрөсүн даярдооОперациялык системаны тандоо
Керектүү коммуналдык кызматтарды орнотуу
Ubuntu боюнча Geth жана Swarm орнотуу
Debianга Geth жана Swarm орнотуу
алдын ала даярдоо
Go бөлүштүрүү жүктөлүүдө
Айлана-чөйрө өзгөрмөлөрүн орнотуу
Go версиясы текшерилүүдө
Geth жана Swarm орнотуу
Биз жеке блокчейн түзөбүз
genesis.json файлын даярдоо
Жумуш каталогун түзүңүз
Эсеп түзүү
Түйүндү инициализациялоону иштетүү
Түйүндү баштоо параметрлери
Биздин сайтка туташуу
Тоо-кен башкаруу жана балансты текшерүү
Geth консолун өчүрүү
Сабактын корутундусу

3-сабакRaspberry Pi 3 даяр болууда
Rasberian орнотуу
Жаңыртуулар орнотулууда
SSH мүмкүнчүлүгүн иштетүү
Статикалык IP даректи орнотуу
Керектүү коммуналдык кызматтарды орнотуу
Go орнотулууда
Go бөлүштүрүү жүктөлүүдө
Айлана-чөйрө өзгөрмөлөрүн орнотуу
Go версиясы текшерилүүдө
Geth жана Swarm орнотуу
Биз жеке блокчейн түзөбүз
Эсепти жана балансты текшерүү
Сабактын корутундусу

4-сабакКаттоо эсептерин көрүү жана кошуу
Эсептердин тизмесин көрүү
Каттоо эсебин кошуу
geth эсеп буйрук параметрлери
Каттоо эсебинин сырсөздөрү
Ethereumдагы криптовалюталар
Ethereum валютасы
Биздин эсептердин учурдагы балансын аныктоо
Акча каражаттарын бир эсептен экинчисине которуу
eth.sendTransaction ыкмасы
Транзакциянын абалын көрүү
Транзакциянын квитанциясы
Сабактын корутундусу

5-сабакEthereumдагы акылдуу келишимдер
Акылдуу келишимди аткаруу
Ethereum Virtual Machine
Integrated Development Environment Remix Solidity IDE
Компиляциянын башталышы
Келишим функцияларын чакыруу
Жеке тармакта келишимди жарыялоо
ABI аныктамасын жана экилик келишимди алыңыз
Келишимди жарыялоо
Келишимди жарыялоо операциясынын абалын текшерүү
Келишим функцияларын чакыруу
solc пакетинин компилятору
Ubuntu'до solc орнотуу
Debianга solc орнотуу
HelloSol келишимин түзүү
Келишимди жарыялоо
Rasberian боюнча solc орнотуу
Сабактын корутундусу

Сабак 6. Smart контракттар жана Node.jsNode.js орнотулууда
Ubuntu ичинде орнотуу
Debianга орнотуу
Ganache-cli орнотуу жана иштетүү
Web3 орнотулууда
Solc орнотуу
Rasberian боюнча Node.js орнотуу
Консолдогу эсептердин тизмесин алуу үчүн скрипт
Акылдуу келишимди жарыялоо үчүн скрипт
Параметрлерди иштетүү жана алуу
Ишке киргизүү параметрлери алынууда
Контракт түзүү
Каттоо эсебинин кулпусун ачуу
ABI жана келишимдин бинардык кодун жүктөп алыңыз
Газдын керектүү көлөмүн эсептөө
Объектти түзүп, келишимди жарыялоону баштаңыз
Келишимди басып чыгаруу сценарийин иштетүү
Акылдуу келишим функцияларын чакыруу
Жарыяланган акылдуу келишимди жаңыртуу мүмкүнбү
Web3 версиясы 1.0.x менен иштөө
Эсептердин тизмесин алыңыз
Келишимди жарыялоо
Келишим функцияларын чакыруу
Акча каражаттарын бир эсептен экинчисине которуу
Келишимдик эсепке акча каражаттарын которуу
HelloSol акылдуу келишимин жаңыртуу
Эсептин балансын көрүү үчүн скрипт түзүңүз
call_contract_get_promise.js скриптине getBalance функциясынын чакыруусун кошуңуз
Акылдуу келишим эсебин толуктоо
Сабактын корутундусу

7-сабак. Трюфельге киришүүТрюфель орнотуу
HelloSol долбоорун түзүү
Долбоордун каталогун жана файлдарын түзүү
келишимдер каталогу
Каталог көчүрүү
тест каталогу
truffle-config.js файлы
HelloSol келишимин түзүү
Келишимди жарыялоону баштаңыз
HelloSol контракт функцияларын Truffle чакыруусунда чакыруу
Node.js иштеген JavaScript скриптинен HelloSol келишим функцияларын чакыруу
Трюфель-контракт модулун орнотуу
Келишим функцияларын чакыруу getValue жана getString
Келишим функцияларын чакыруу setValue жана setString
Келишимди өзгөртүү жана кайра басып чыгаруу
Web3 версиясы 1.0.x менен иштөө
HelloSol акылдуу келишимине өзгөртүүлөрдү киргизүү
Контракт ыкмаларын чакыруу үчүн сценарийлер
Трюфельде сыноо
Катуулугу сыноо
JavaScript тести
Сабактын корутундусу

8-сабакМаалымат түрлөрүн үйрөнүү үчүн келишим
Логикалык маалымат түрлөрү
Кол коюлбаган жана кол коюлган бүтүн сандар
Fixed Point Numbers
дарек
Татаал типтеги өзгөрмөлөр
Fixed Arrays
Динамикалык массивдер
Саноо
Түзүмдөр
сөздүктөр
Сабактын корутундусу

9-сабакTruffle компаниясынан Geth жеке тармагына келишимди жарыялоо
Жеке тармак хостун даярдоо
Жумушка келишим даярдоо
Трюфель тармагына келишимди түзүү жана көчүрүү
Geth LAN миграциясын иштетүү
Артефакттарды алуу Трюфель
Трюфлден Rinkeby testnetине келишимди жарыялоо
Rinkeby үчүн Гет түйүн даярдоо
Түйүн синхрондоштуруу
Аккаунттарды кошуу
Rinkeby эсебиңизди Этер менен толуктоо
Rinkeby тармагына контракттык миграцияны баштоо
Rinkeby тармагындагы келишим маалыматын көрүү
Rinkeby Network үчүн трюфель консолу
Келишим функцияларын чакыруунун оңой жолу
Node.js менен келишим ыкмаларын чакыруу
Rinkby үчүн Truffle консолундагы эсептердин ортосунда акча которуу
Сабактын корутундусу

10-сабакEthereum Swarm кантип иштейт
Swarm орнотуу жана иштетүү
Файлдар жана каталогдор боюнча операциялар
Ethereum Swarm файлын жүктөө
Ethereum Swarm файлын окуу
Жүктөлгөн файлдын манифестин көрүү
Субкаталогдор менен каталогдор жүктөлүүдө
Жүктөлгөн каталогдон файлды окуу
Swarm Public Gateway колдонуу
Node.js скрипттеринен Swarm чалуу
Perl Net :: Ethereum :: Swarm модулу
Net::Ethereum::Swarm модулун орнотуу
Маалыматтарды жазуу жана окуу
Сабактын корутундусу

11-сабакWeb3.py орнотулууда
Керектүү пакеттерди жаңыртыңыз жана орнотуңуз
Easysolc модулун орнотуу
Web3.py менен келишимди жарыялоо
Контракт түзүү
Провайдерге туташуу
Контрактты басып чыгарууну ишке ашыруу
Келишимдин дарегин жана abi файлында сакталуу
Келишимди басып чыгаруу сценарийин иштетүү
Контракт ыкмаларын чакыруу
JSON файлынан дарек жана келишим аби окуу
Провайдерге туташуу
келишим объектисин түзүү
Контракт ыкмаларын чакыруу
Truffle жана Web3.py
Сабактын корутундусу

12-сабакАкылдуу келишим тышкы дүйнөдөгү маалыматтарга ишене алабы
Oracles Blockchain маалымат ортомчулары катары
Маалымат булагы
Булактан алынган маалыматтарды көрсөтүү үчүн код
Oracle алмашуу курсун блокчейнге жазуу үчүн
Келишим USDRateOracle
Акылдуу келишимде алмашуу курсун жаңыртуу
Web Socket Провайдерин колдонуу
RateUpdate окуясын күтүүдө
RateUpdate окуясын иштетүү
Акылдуу келишимде маалыматтарды жаңыртуу
Сабактын корутундусу

Source: www.habr.com

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