Hyperledger Fabric: блокчейны - предпринимателям

При­ро­да блок­чей­на - анар­хи­че­ская по своей сути. Но уж очень удач­ной по­ка­за­ла себя с тех­ни­че­ской сто­ро­ны эта тех­но­ло­гия и неуди­ви­тель­но, что кор­по­ра­ции ре­ши­ли при­ру­чить ее и ис­поль­зо­вать. То там, то здесь боль­шие и ма­лень­кие ком­па­нии со­об­ща­ют о внед­ре­нии блок­чейн-тех­но­ло­гий в раз­лич­ных сер­ви­сах. И вот на арене по­яв­ля­ет­ся на­сто­я­щий ги­гант - IBM.

Биз­нес-ма­ши­ны

Одна из ста­рей­ших IT-ком­па­ний сей­час не на слуху у мас­со­во­го по­тре­би­те­ля. А ведь имен­но IBM была пра­ро­ди­тель­ни­цей стан­дар­та PC. Стар­шее по­ко­ле­ние до сих пор на­зы­ва­ет их "IBM-сов­ме­сти­мы­ми". Хотя сов­ме­щать уже не с чем - про­из­вод­ство но­ут­бу­ков и де­ск­то­пов уж 12 лет как про­да­но ки­тай­ской Lenovo.

Но PC - не един­ствен­ный и не глав­ный брил­ли­ант ко­ро­ны IBM. Кор­по­ра­ция все­гда была слав­на сво­и­ми мейн­фрей­ма­ми. И до сих пор оста­ет­ся ли­де­ром в этом сег­мен­те. Везде, где нужна на­деж­ность и про­из­во­ди­тель­ность, ра­бо­та­ет их про­дук­ция. На атом­ных элек­тро­стан­ци­ях и в дис­пет­чер­ских энер­го­си­сте­мах, в бан­ках, на бир­жах - везде, где цена ошиб­ки или по­те­ри дан­ных слиш­ком ве­ли­ка.

IBM знает сво­е­го кли­ен­та. Она знает, как ра­бо­та­ют кор­по­ра­ции и что им нужно. Hyperleger Fabric - для них.

Мама - анар­хия, папа…

Зон­тич­ный про­ект Hyperledger был ос­но­ван Linux Foundation в 2015 году для раз­ви­тия тех­но­ло­гии блок­чейн. Со вре­ме­нем участ­ни­ка­ми про­ек­та, кроме IBM, стали ком­па­нии Cisco, Fujitsu, Hitachi, Intel, J.P. Morgan, SWIFT, Wells Fargo - всего более сотни, и все тя­же­ло­ве­сы.

Участ­ни­ки Hyperledger, офор­мив­ше­го­ся как кон­сор­ци­ум, счи­та­ют, что в ско­ром вре­ме­ни будет су­ще­ство­вать мно­же­ство блок­чейн-се­тей и им нужно будет вза­и­мо­дей­ство­вать друг с дру­гом. Воз­мож­ность та­ко­го вза­и­мо­дей­ствия они и за­кла­ды­ва­ют в свои раз­ра­бот­ки с от­кры­тым ис­ход­ным кодом.

Одной из осо­бен­но­стей Hyperledger яв­ля­ет­ся прин­ци­пи­аль­ный отказ от со­зда­ния соб­ствен­ных крип­то­ак­ти­вов. Участ­ни­ки Hyperledger раз­ви­ва­ют про­ек­ты су­гу­бо как ин­фор­ма­ци­он­ную тех­но­ло­гию.

В рам­ках ра­бо­ты в кон­сор­ци­у­ме IBM и со­зда­ла блок­чейн-фрейм­ворк Hyperledger Fabric (из­на­чаль­но про­ект на­зы­вал­ся OBC - Open Blockchain). Пер­вая вер­сия HLF, под но­ме­ром 0.6.0, по­яви­лась осе­нью 2016 года. 1 июля 2017 вышла пер­вая про­из­вод­ствен­ная вер­сия - Hyperledger Fabric 1.0.

Ви­зу­а­ли­за­ция раз­ви­тия про­ек­та HLF с июля 2016 г. по фев­раль 2017 г.

Ос­но­вы

Блок­чей­ны бы­ва­ют раз­ны­ми. Самый из­вест­ный тип - пуб­лич­ный блок­чейн . Каж­дый участ­ник об­ла­да­ет всем объ­е­мом воз­мож­но­стей и прав. Он может чи­тать дан­ные, осу­ществ­лять тран­зак­ции, фор­ми­ро­вать блоки.

На про­ти­во­по­лож­ном по­лю­се на­хо­дит­ся част­ный блок­чейн . В нем до­ступ к дан­ным, про­вод­ка тран­зак­ций, фор­ми­ро­ва­ние новых бло­ков цепи - все функ­ции де­ле­ги­ро­ва­ны кон­крет­ным узлам, ко­то­рых до­пус­ка­ет к ра­бо­те ор­га­ни­за­тор.

Воз­мож­ны и раз­но­об­раз­ные про­ме­жу­точ­ные формы. На­при­мер, можно ор­га­ни­зо­вать блок­чейн так, что дан­ные чи­тать смо­гут все же­ла­ю­щие, но про­во­дить тран­зак­ции - толь­ко до­пу­щен­ные к этой за­да­че. Или можно до­пус­кать к про­вод­ке тран­зак­ций всех же­ла­ю­щих, но право под­дер­жи­вать це­лост­ность блок­чей­на (то есть фор­ми­ро­ва­ние бло­ков) оста­вить за огра­ни­чен­ным кру­гом узлов.

Самый ста­рый и из­вест­ный блок­чейн Бит­ко­и­на - пуб­лич­ный блок­чейн. К нему может под­клю­чить­ся любой же­ла­ю­щий. По­доб­ная форма ор­га­ни­за­ции хо­ро­ша для об­ще­ствен­но­го блага, так как за­щи­ща­ет от во­люн­та­рист­ских из­ме­не­ний. Нет ни­ка­ких ор­га­ни­за­то­ров, раз­да­ю­щих права - чтобы ме­нять пра­ви­ла, нужно по­лу­чить одоб­ре­ние боль­шин­ства. Это циф­ро­вая де­мо­кра­тия.

Для кор­по­ра­тив­ных нужд такое ре­ше­ние не под­хо­дит. Сво­бод­ный до­ступ к блок­чей­ну и воз­мож­ность вне­се­ния из­ме­не­ний в пра­ви­ла его ра­бо­ты боль­шин­ством при­ве­дет любую ком­па­нию к тому, что ей при­дет­ся бес­ко­неч­но на­ра­щи­вать мощ­но­сти, от­би­ва­ясь от атак кон­ку­рен­тов и ИТ-ху­ли­га­нов. Да и воз­мож­ность сво­бод­но­го чте­ния дан­ных о тран­зак­ци­ях любым участ­ни­ком сети не под­хо­дит для биз­не­са: ведь дан­ные о кон­трак­тах и опла­тах - ком­мер­че­ская тайна.

Hyperleger Fabric со­зда­вал­ся кор­по­ра­ци­ей для кор­по­ра­ций, по­это­му в него "пус­ка­ют по би­ле­там". Участ­ник сети дол­жен по­лу­чить сер­ти­фи­кат и быть иден­ти­фи­ци­ро­ван. Раз­ным участ­ни­кам могут быть предо­став­ле­ны раз­ные права, огра­ни­че­ния и при­ви­ле­гии.

В Fabric есть три ос­нов­ных типа участ­ни­ков блок­чей­на:

■ Кли­ен­ты  (client / committing peers) . Ко­неч­ные поль­зо­ва­те­ли, ко­то­рые могут со­вер­шать тран­зак­ции.
■ Узлы  (peers) . Этот тип управ­ля­ет тран­зак­ци­я­ми. К ним также от­но­сит­ся спе­ци­аль­ный тип узлов по­ру­чи­те­лей (endorsers) , ко­то­рые про­ве­ря­ют, удо­вле­тво­ря­ет ли тран­зак­ция необ­хо­ди­мым тре­бо­ва­ни­ям.
■ Сер­вис­ные узлы  (orderers from ordering service) . Они фор­ми­ру­ют блоки тран­зак­ций и до­бав­ля­ют их в блок­чейн. Кроме того, они об­ра­ба­ты­ва­ют все кон­фи­гу­ра­ци­он­ные тран­зак­ции по на­строй­ке сети.

В HLF нет то­ке­нов, что также крайне важно для кор­по­ра­тив­но­го ис­поль­зо­ва­ния. Ведь пред­при­я­тие не спря­чешь от на­ло­го­ви­ков, пра­во­охра­ни­те­лей и про­чих чи­нов­ни­ков - ему при­хо­дит­ся тру­дить­ся в пра­во­вом поле. А с за­ко­но­да­тель­ным уре­гу­ли­ро­ва­ни­ем обо­ро­та крип­то­ва­лют в мире об­ста­нов­ка да­ле­ко не самая бла­го­при­ят­ная. Где-то их ле­га­ли­зо­вы­ва­ют, где-то пы­та­ют­ся за­пре­щать, где-то еще ду­ма­ют, как с ними быть. Так что от­сут­ствие то­ке­на для кор­по­ра­тив­но­го блок­чей­на сей­час - оче­вид­ный плюс. Сни­ма­ет много хло­пот по под­гон­ке ра­бо­ты сети в каж­дой кон­крет­ной юрис­дик­ции.

Зато в HLF есть смарт-кон­трак­ты, на­зы­ва­е­мые в дан­ной сети чейн-ко­да­ми. Для про­грам­ми­ро­ва­ния смарт-кон­трак­тов в HLF ис­поль­зу­ет­ся язык GO (Golang) и преду­смот­ре­на под­держ­ка Java и Javascript. При­ят­ный мо­мент, ведь для на­пи­са­ния смарт-кон­трак­тов на Ethereum при­хо­дит­ся осва­и­вать спе­ци­аль­ный внут­рен­ний язык вир­ту­аль­ной ма­ши­ны Ethereum.

От­сут­ствие то­ке­нов не озна­ча­ет невоз­мож­ность ор­га­ни­за­ции об­ме­на ак­ти­ва­ми - HLF поз­во­ля­ет хра­нить ин­фор­ма­цию о фи­зи­че­ском иму­ще­стве и обя­за­тель­ствах. Бла­го­да­ря этому ме­ха­низ­му ра­бо­та­ет, на­при­мер, тор­го­вая плат­фор­ма Batavia, по­мо­га­ю­щая от­сле­жи­вать и опла­чи­вать транс­пор­ти­ров­ку и по­став­ку пар­тий то­ва­ров по всему миру по мере про­хож­де­ния ими каж­до­го этапа.

31 июля 2017 года ком­па­ния Fujitsu (один из участ­ни­ков Hyperledger) объ­яви­ла о внед­ре­нии тех­но­ло­гии, ко­то­рая по­вы­ша­ет про­из­во­ди­тель­ность сети Hyperledger Fabric v0.6.1 при­мер­но в 2,7 раза. С ис­поль­зо­ва­ни­ем этой тех­но­ло­гии про­из­во­ди­тель­ность до­стиг­ла 1350 тран­зак­ций в се­кун­ду (TPS 1350), а сле­до­ва­тель­но HLF стала сов­ме­сти­ма с он­лай­но­вы­ми тран­зак­ци­он­ным си­сте­мам, тре­бу­ю­щи­ми не менее 1000 тран­зак­ций в се­кун­ду.

Hyperledger Fabric схема

Кон­сен­сус

Смысл ра­бо­ты блок­чейн-се­ти - кон­троль це­лост­но­сти дан­ных и про­ти­во­дей­ствие их фаль­си­фи­ка­ции. В самом из­вест­ном блок­чейне - в блок­чейне Бит­ко­и­на - все узлы кон­ку­ри­ру­ют между собой за право ве­ри­фи­ци­ро­вать тран­зак­цию, по­сколь­ку по­бе­ди­тель по­лу­ча­ет воз­на­граж­де­ние в виде бит­ко­и­нов. В HLF, как мы уже ска­за­ли, участ­ни­ки сети об­ла­да­ют раз­ны­ми пра­ва­ми и вы­пол­ня­ют раз­ную ра­бо­ту. По­это­му фор­ми­ро­ва­ни­ем бло­ков за­ни­ма­ет­ся от­дель­ная сер­вис­ная служ­ба.

Ра­бо­та сер­вис­ной служ­бы - одна из самых ин­те­рес­ных тех­ни­че­ских де­та­лей в HLF. В от­ли­чие от дру­гих блок­чей­нов, здесь воз­мож­ны раз­ные ме­ха­низ­мы до­сти­же­ния кон­сен­су­са, поз­во­ля­ю­щие сфор­ми­ро­вать оче­ред­ной блок.

Ви­зан­тий­ский

Ос­нов­ным ме­ха­низ­мом, ко­то­рый пред­ла­га­ют раз­ра­бот­чи­ки, яв­ля­ет­ся Practical Byzantine fault tolerance - прак­ти­че­ский под­ход к ви­зан­тий­ской от­ка­зо­устой­чи­во­сти, он же - Sieve. Он обес­пе­чи­ва­ет устой­чи­вость к двум типам оши­бок рас­пре­де­лен­ных си­стем: когда узел пол­но­стью вы­хо­дит из строя и пе­ре­ста­ет от­кли­кать­ся и когда он про­дол­жа­ет ра­бо­тать, но вы­да­ет ошиб­ки.

Устрой­ство ал­го­рит­ма ос­но­ва­но на ста­рой "За­да­че ви­зан­тий­ских ге­не­ра­лов":

Позд­няя Ви­зан­тия. Ночь перед сра­же­ни­ем. Ви­зан­тий­ская армия со­сто­ит из несколь­ких ле­ги­о­нов, каж­дым из ко­то­рых ко­ман­ду­ет один ге­не­рал. Кроме этого, есть еще глав­но­ко­ман­ду­ю­щий.

По­сколь­ку речь идет об эпохе упад­ка им­пе­рии, среди ге­не­ра­лов есть пре­да­те­ли. Не ис­клю­че­но, что пре­да­те­лем яв­ля­ет­ся и глав­но­ко­ман­ду­ю­щий.

Ночью ге­не­ра­лы по­лу­ча­ют из став­ки при­каз о том, как сле­ду­ет дей­ство­вать - ата­ко­вать или от­сту­пать. Если все ле­ги­о­ны ата­ку­ют, то Ви­зан­тия одер­жит по­бе­ду, если от­сту­пят - со­хра­нит свою армию, но если одни от­сту­пят, а дру­гие пой­дут в на­ступ­ле­ние - по­тер­пят по­ра­же­ние.

В этой си­ту­а­ции каж­дый ге­не­рал дол­жен сам ре­шить, на­сту­пать ему или ата­ко­вать. Про­сто под­чи­нить­ся при­ка­зу нель­зя - пре­да­тель может быть в став­ке и дать раз­ные при­ка­зы раз­ным ле­ги­о­нам. Нужно при­нять вер­ное ре­ше­ние до утра. Есть воз­мож­ность об­щать­ся с дру­ги­ми ге­не­ра­ла­ми, но не факт, что они будут го­во­рить прав­ду. Что де­лать?

С по­хо­жей за­да­чей вы на­вер­ня­ка стал­ки­ва­лись в дет­ской сказ­ке, где на раз­вил­ке у двух трол­лей с по­мо­щью толь­ко од­но­го во­про­са нужно узнать, какая до­ро­га ведет к цели. Один тролль, и мы знаем это, все­гда врет, вто­рой - все­гда го­во­рит прав­ду. В сказ­ке ре­ше­ние от­но­си­тель­но про­стое - нужно спро­сить каж­до­го трол­ля, что от­ве­тил бы дру­гой тролль. С ге­не­ра­ла­ми все несколь­ко слож­нее.

Чтобы по­дав­ля­ю­щее боль­шин­ство сол­дат со­вер­ши­ло оди­на­ко­вый ма­невр, каж­дый ге­не­рал спра­ши­ва­ет всех кол­лег о чис­лен­но­сти их ле­ги­о­нов. Чест­ные ге­не­ра­лы со­об­ща­ют ис­тин­ное ко­ли­че­ство, пре­да­те­ли - врут. В итоге у каж­до­го ге­не­ра­ла фор­ми­ру­ет­ся мас­сив дан­ных из вер­ных и невер­ных зна­че­ний.

После этого ге­не­ра­лы об­ме­ни­ва­ют­ся этими мас­си­ва­ми дан­ных. Пре­да­те­ли, как во­дит­ся, снова со­об­ща­ют что угод­но (могут и вер­ные зна­че­ния со­об­щить). Но после опре­де­лен­но­го ко­ли­че­ства цик­лов об­ме­нов у каж­до­го ге­не­ра­ла ока­зы­ва­ет­ся до­ста­точ­но ин­фор­ма­ции, чтобы вы­чле­нить некое общее зна­че­ние. Так до­сти­га­ет­ся кон­сен­сус.

Good Bad Evil map

Ал­го­ритм PBFT ра­бо­та­ет, на вся­кий слу­чай пред­по­ла­гая, что (n-1)/3 узлов в сети - "пре­да­те­ли", то есть из 10 - ском­про­ме­ти­ро­ва­ны три. Ал­го­ритм устой­чи­вый, но с ро­стом ко­ли­че­ства узлов ско­рость до­сти­же­ния кон­сен­су­са в нем па­да­ет. Для слу­ча­ев, когда это ста­но­вит­ся кри­тич­ным, у HLF есть дру­гой ме­ха­низм.

Каф­ки­ан­ский

В си­сте­ме есть опре­де­лен­ный кла­стер, на­зы­ва­е­мый Kafka, в ко­то­ром сер­вис­ные узлы вно­сят тран­зак­ции в стро­го за­дан­ной по­сле­до­ва­тель­но­сти. В опре­де­лен­ный мо­мент со­во­куп­ность тран­зак­ций за­пи­сы­ва­ет­ся в блок. Такой ме­ха­низм обес­пе­чи­ва­ет вы­со­кую про­из­во­ди­тель­ность и, бла­го­да­ря кон­тро­лю за оче­ред­но­стью за­пи­си в кла­стер Kafka, обес­пе­чи­ва­ет устой­чи­вую ра­бо­ту при от­ка­зе ка­ко­го-то из узлов. Но если есть опас­ность, что узел начал "ша­лить" и пе­ре­да­вать невер­ные дан­ные - такой метод не по­дой­дет.
Впро­чем, есть и еще более быст­рый спо­соб.

Со­ли­ру­ю­щий

Самый про­стой и самый нена­деж­ный ме­ха­низм. Один узел обес­пе­чи­ва­ет фор­ми­ро­ва­ние бло­ков тран­зак­ций и кон­сен­су­са ему до­сти­гать ни с кем не нужно. Кто-то ска­жет, что это из­вра­ще­ние всей идео­ло­гии блок­чей­на, но разве кор­по­ра­тив­ный блок­чейн с раз­но­уров­не­вы­ми уз­ла­ми - не есть ересь про­тив уче­ния Са­тоши На­ка­мо­то? Зато при по­мо­щи та­ко­го быст­ро­го ме­ха­низ­ма можно про­во­дить тесты че­го-то но­во­го, не за­мо­ра­чи­ва­ясь на­груз­кой на сеть.

Для чего все это

Indian icecream

Да­вай­те для при­ме­ра возь­мем мум­бай­ское мо­ро­же­ное сети Papacream (два ма­га­зин­чи­ка рас­по­ло­же­ны в рай­о­нах Оши­ва­ра и Чер­ч­гейт).

В со­вре­мен­ном мире мы не встре­ча­ем в ев­ро­пей­ских ма­га­зи­нах па­па­крим­ское мо­ро­же­ное не по­то­му, что оно пло­хое, а по­то­му что до­став­ка его обой­дет­ся так до­ро­го, что ис­че­за­ет вся­кий смысл в по­доб­ной затее. И дело не в сто­и­мо­сти транс­пор­ти­ров­ки. Транс­порт сам по себе дешев - мил­ли­о­ны тонн все­воз­мож­но­го до­ро­го­го и ко­пе­еч­но­го то­ва­ра еже­днев­но пе­ре­ме­ща­ют­ся по миру. Но вот на­клад­ные рас­хо­ды, свя­зан­ные с обес­пе­че­ни­ем по­сто­ян­но дей­ству­ю­щей це­поч­ки по­ста­вок, чтобы све­жее мо­ро­же­ное еже­днев­но по­яв­ля­лось в ма­га­зине у дома, все еще ве­ли­ки.

И тут на по­мощь при­хо­дит Hyperleger Fabric. Фаб­ри­ка мо­ро­же­но­го в Мум­баи еже­днев­но от­гру­жа­ет в порту кон­тей­нер де­сер­та. По факту вы­пол­нен­но­го обя­за­тель­ства смарт-кон­тракт про­во­дит опла­ту фаб­ри­ке. Ей не нужно кре­ди­то­вать­ся, ожи­дая опла­ту из Ев­ро­пы, ев­ро­пей­ско­му по­ку­па­те­лю не нужно ак­ку­му­ли­ро­вать лиш­нее мо­ро­же­ное у себя - от­груз­ка идет каж­дый день. Груз при­бы­ва­ет Мар­сель в срок и в по­ряд­ке - смарт-кон­трак­том опла­чи­ва­ет­ся ра­бо­та транс­порт­ной ком­па­нии. При­чем в той юрис­дик­ции, где она за­ре­ги­стри­ро­ва­на. Все пла­те­жи про­хо­дят мгно­вен­но. Даль­ше мо­ро­же­ное раз­ны­ми пу­тя­ми по­па­да­ет в ма­га­зи­ны. По факту до­став­ки ав­то­пред­при­я­тия по­лу­ча­ют опла­ту за свою ра­бо­ту, а ма­га­зи­ны осу­ществ­ля­ют фи­наль­ные пла­те­жи.

В такой схеме ис­че­за­ет необ­хо­ди­мость в боль­шом ре­ги­о­наль­ном дис­три­бью­то­ре, ко­то­рый ор­га­ни­зо­вы­ва­ет весь про­цесс и обес­пе­чи­ва­ет опла­ту на каж­дом этапе. Банки в раз­ных стра­нах вза­и­мо­дей­ству­ют в рам­ках сети, осу­ществ­ляя быст­рые, ре­гу­ляр­ные и от­но­си­тель­но неболь­шие пла­те­жи. Ис­че­за­ет необ­хо­ди­мость ра­бо­ты сотен клер­ков, оформ­ля­ю­щих на каж­дой пе­ре­вал­ке в одну сто­ро­ну до­ку­мен­ты о то­ва­ре, в дру­гую - об опла­те. Сни­жа­ет­ся необ­хо­ди­мость на­коп­ле­ния то­вар­ных и фи­нан­со­вых ре­зер­вов, чтобы во­вре­мя рас­счи­тать­ся с контр­аген­та­ми, упла­тить на­ло­ги.

Фан­та­сти­ка? Нет. По­доб­ным об­ра­зом, толь­ко го­раз­до слож­нее и ин­те­рес­нее, будет ра­бо­тать уже упо­мя­ну­тая Batavia.

И это не един­ствен­ный мас­штаб­ный про­ект, в ос­но­ве ко­то­ро­го стоит Hyperledger Fabric. На базе этого блок­чейн-фрейм­вор­ка кон­сор­ци­ум CLS group (Barclays, Bank of America, Bank of China (Hong Kong), Bank of Tokyo-Mitsubishi UFJ, Citibank, Goldman Sachs, JPMorgan Chase и Morgan Stanley и дру­гие) раз­ра­ба­ты­ва­ет аль­тер­на­ти­ву SWIFT-пе­ре­во­дам. Да и сам SWIFT экс­пе­ри­мен­ти­ру­ет с им­пле­мен­та­ци­ей Hyperledger Fabric. Sony раз­ра­бо­та­ла си­сте­му хра­не­ния дан­ных об об­ра­зо­ва­нии. В свете этого вполне ве­рит­ся в то, что IBM удаст­ся со­здать самый мас­штаб­ный блок­чейн в мире.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=39707