Како комуницирати са Етхереум блоцкцхаином и створити базу података са Питхон и СКЛ

Уводне радионице о блоцкцхаину често почињу са лако пробављивом причом о вршњачкој мрежи и банкарским књигама, а затим прелазе равно на кодирање паметних уговора, што је прилично нагло. Уместо тога, замислите себе како ходате у џунгли и мислите о Етхереум блоцкцхаину као чудном створењу које тек требате да проучите. Данас ћемо посматрати створење, комуницирати с њим и прикупити све податке о њему у централизовани складишни простор за сопствену употребу.

Подешавање за први сусрет

Прво морате инсталирати веб3пи. Веб3пи је Питхон библиотека за повезивање са Етхереум блоцкцхаином. Оно што треба да знате унапред је да не постоји централни административни систем одакле се подаци могу преузети. Међусобно повезани чворови („вршњаци“), који међусобно деле ресурсе, чувају овјерену копију података (или њеног дијела). Мрежа извршава Етхереум протокол, који дефинише правила интеракције чворова једни са другима и / или паметне уговоре преко те мреже.

Ако желите да приступите информацијама о трансакцијама, билансима, блоковима или било чему другом записаном у блоцкцхаин који још не знате, протокол захтева да се повежете на чворове. Чворови непрекидно дијеле нове податке једни с другима и провјеравају податке, тако да сте на овај начин сигурни да сте добили 1) податке који нису били варани и 2) који су најсувременији.

Постоје две основне категорије чворова које можете користити у свом првом приступу бићу: локални или домаћин. Локални чвор може да ради на вашој машини, што значи да прво морате да преузмете клијента попут гетх-а који ће синхронизовати блоцкцхаин са вашим уређајем, заузевши складиште и потребно време да га довршите. За први сусрет хостирани чвор је бољи избор - њиме управља неко други, али можете се лако повезати с њим и самостално се играти око блоцкцхаина.

Идите у Инфуру и направите свој властити бесплатни рачун за приступ таквом хост чвору. Када завршите, видећете листу мрежа на које бисте се могли повезати: маиннет (главни Етхереум блоцкцхаин) и гомилу тестнета који у основи могу тестирати ваше паметне уговоре, тако да можете погрешити на њима и исправите их пре него што инсталирате скуп код на главну мрежу.

Време је за први приступ. Увозите Веб3 објект и успоставите ХТТП везу.

из веб3 увоза Веб3
веб3 = Веб3 (Веб3.ХТТППровидер („хттпс://маиннет.инфура.ио/иоур-овн-персонал-нумбер“))

И сви сте спремни! Сада можете истражити структуру података помоћу веб3 АПИ-ја.

Дохваћање информација о одређеним блоковима…

#цуррент број блока
>>> веб3.етх.блоцкНумбер
5658173
#гет садржај најновијег минираног блока
>>> веб3.етх.гетБлоцк ('најновији')

Ова наредба враћа структуру података АттрибутеДицт, која је речник парова кључ-вредност који изгледа овако:

Неће вам све ове променљиве бити одмах корисне, јер су неке прилично техничке природе и њихово значење ће имати смисла тек када будете дубље разумели како блоцкцхаин заправо делује. Више о њима можете прочитати у тзв. „Жутој књизи“ или их за сада прескочити и радити са лако разумљивим.

Укратко, блок садржи заглавље блока, листу верификованих трансакција уписаних у њега и листу ујака (блок идентификатори рудара који су били мало преспори са својим блоковима да би стигли до главног блок-ланца, али су и даље награђени Етхер-ом за њихов рачунски напор). Испод можете прочитати значење сваке променљиве, коју сам поделио у подкатегорије.

Генерал

Рударско везано

Ујака

Технички

... трансакције и њихови примици

Сада такође можемо потражити појединачне трансакције у блоку помоћу њихових јединствених идентификатора, тј. Хешева трансакција.

Као и раније, веб3пи нам враћа рјечник атрибута. Табела у наставку резимира за шта се залаже сваки кључ.

На крају, можемо такође да размотримо потврде о трансакцијама:

Рачун за трансакцију садржи неколико поновљених и нових уноса; нове су објашњене у наставку.

За референцу сам поред Жуте књиге укључио и разне додатне ресурсе за састављање ових табела [2, 3, 4, 5].

Као што видите, са само неколико једноставних команди већ се можете повезати на мрежу и добити основне информације о трансакцијама, блоковима или стањима у сировом формату. Ово отвара нови прозор за оно што се може урадити са таквим подацима!

Систем за управљање базама података

Када планирате да своје податке упишете у одговарајућу базу података, вероватно схватите да постоји много решења за системе управљања за Питхон ентузијасте, као што су СКЛите без сервера или МиСКЛ, ПостгреСКЛ или Хадооп засновани на серверу. У зависности од тога шта намеравате да урадите, мораћете да одредите која је опција најбоља за ваш пројекат. Уопште, сматрао сам да су ове тачке корисне:

  • Која је предвиђена величина базе података (тј. Да ли се она може обрадити на једном машинском систему)?
  • Хоће ли се уноси често уређивати или ће остати фиксни?
  • Да ли би тој бази требало приступити и уређивати више страна / апликација истовремено?

Етхереум блоцкцхаин непрестано расте с временом и приближава се 1 ТБ од јуна 2018., што је мало, стога није оптимално за дистрибуирани процесни систем као што је Хадооп. Блок податковна база ће бити написана једном, а затим се само проширила новим уносима, остављајући старе уносе непромењеним. Намеравани случај ове базе података треба да пише један канал и да му други могу приступити само за читање, тако да нам заправо не треба да га покрећемо на серверу. Ако локално чувате базу података на свом рачунару, то ће резултирати брзим очитавањем, што је пожељно и оствариво са системом управљања без сервера попут СКЛите. А Питхон има уграђену библиотеку склите3, тако да чак и не морамо да инсталирамо нове пакете.

Дизајн базе података

Следећи корак је дизајнирање ваше базе података. Имајте на уму која су поља података најрелевантнија за вашу анализу и настојте да оптимизирате и претрагу и складиштење. На пример, ако не планирате да користите статеРоот, можда ћете га желети у потпуности прескочити или чувати у посебној табели. Табела са мање ступаца може се брже претраживати и ако касније схватите да заправо имате случај употребе за статеРоот, и даље ћете му моћи приступити. Такође бисте желели да одвојите информације о блоку од информација о трансакцији; ако то не учините, својства блока попут временске ознаке поновит ће се Н пута за све трансакције у блоку, трошећи много простора. Усклађивање трансакције са њеним својствима блока биће лако помоћу операције ЈОИН касније.

База података коју сам дизајнирао састоји се од 3 табеле:

  • Брзо: најрелевантније информације о трансакцијама за брзи приступ и анализе,
  • ТКС: све преостале информације о трансакцији,
  • Блок: информације о блоку.

Конвенција о именовању променљивих је мало измењена у односу на оригинални веб3пи да бисте се решили нејасноћа, попут позивања и блока хеша и хасх-а трансакције „хасх“, или употребе „фром“ / „то“ као имена ступаца, што у СКЛ има другачије значење и срушио би програм.

Вриједности трансакција, салди и остали велики бројеви морају бити похрањени у бази података као стрингови. Разлог је тај што СКЛите може обрадити само потписане целе бројеве похрањене у до 8 бајтова, с максималном вриједношћу 2⁶³-1 = 9223372036854775807. То је често много ниже од вриједности трансакција у веи (нпр. Само 1 ЕТХ = 10¹⁸ веи).

Израда мини базе података

Комплетан код можете пронаћи на ГитХуб-у. Организоват ће информације о блоцкцхаин-у у складу са горњом шемом и исписати блоцкцхаин.дб датотеку која садржи податке унапријед одређеног броја блокова. Да бисте га тестирали, идите на датотеку датабасе.пи и изаберите разуман број за број блокова који ће се уписати, нпр.

Нблоцкс = 10000

Према заданим поставкама, требали бисте усмјерити веб3 објект на своју крајњу точку Инфура. Можете се пребацити и на ИПЦ провајдера ако га имате (тј. Ваш локални чвор), само коментирајте линију

# или веза преко чвора на ВМ-у
# веб3 = Веб3 (Веб3.ИПЦПровидер ('/ пут-до-гетх.ипц /'))

и поправити пут. Затим једноставно покрените у својој командној линији питхон датабасе.пи. Код ће избацити број последњег написаног блока у датотеку ластблоцк.ткт, у случају да требате поново покренути место на коме сте стали.

Како се користи база података

Након што напишете прве уносе у базу података, можете почети са њом да комуницирате преко ипитхон схелл-а. На пример, да бисте исписали првих 5 редака табеле „Брзо“, можете покренути код у наставку.

Локални чвор вс. Инфура

Ако желите да направите велику базу података, требало би да преузмете гетх и синхронизујете чвор. Синхронизација се може извршити у 3 основна режима:

Ако вам не требају прошла стања налога, можете чв. Синхронизовати у брзом режиму [6].

Испод је заплет који приказује брзину којом овај код пише у базу података, комуницирајући с потпуно синкронизираним чвором локално (ИПЦ) насупрот адреси на Инфура (Инфура). Као што видите, исплативање овог кода на локалном чвору исплати се јер повећавате брзину од скоро 2 реда величине (ака 100к)!

Време потребно за писање 10 блокова трансакција између блокова 2000000 и 2000400. Време је на логаритамској скали (10⁰ = 1, 10¹ = 10 и тако даље;).

Резиме

Сада када имате властиту локалну базу података о ономе што се догађало и догађало на блоцкцхаину, можете почети са истраживањем. На пример, можете да пребројите број трансакција од њихове генерације, видите колико адреса се генерише као функција времена - небо је граница онога што можете сазнати о вашем створењу. Управо смо поставили терен за ваше игралиште науке о подацима. Зато наставите и истражите је или проверите следеће постове за потенцијалне апликације.

Јавите се аналитицс@валидитилабс.орг ако сте заинтересовани за услугу аналитике блоцкцхаин Валидити Лабс.