Solidity

Le lan­gage des smart contracts

L'Informaticien - - SOMMAIRE -

Qu’est- ce que Solidity ?

Le pro­jet Solidity a été ini­tia­le­ment pro­po­sé chez Ethe­reum en août 2014 par un cer­tain Ga­vin Wood. Une fois le pro­jet va­li­dé, le lan­gage a en­suite été dé­ve­lop­pé par l’équipe Solidity du pro­jet Ethe­reum, di­ri­gée par Ch­ris­tian Reit­wiess­ner et in­cluant les dé­ve­lop­peurs Alex Be­reg­szas­zi et Yoi­chi Hi­rai. Solidity est l’un des quatre lan­gages conçus pour ci­bler la ma­chine vir­tuelle Ethe­reum ( EVM pour Ethe­reum Vir­tual Ma­chine), les trois autres étant Serpent, LLL et Mu­tan ( dé­jà dé­pré­cié). Ces lan­gages ont pour but com­mun l’écri­ture de smart contracts sur, prin­ci­pa­le­ment mais pas seule­ment, la blo­ck­chain Ethe­reum. Solidity est ac­tuel­le­ment le lan­gage prin­ci­pal sur Ethe­reum ain­si que sur d’autres blo­ck­chains pri­vées en concur­rence avec Ethe­reum, telle que Mo­nax. Le ré­seau in­ter­ban­caire mon­dial Swift a dé­ployé une preuve de concept fonc­tion­nant sur une im­plé­men­ta­tion de Ten­der­mint par Mo­nax In­dus­tries Eris à l’aide de Solidity. Solidity est un lan­gage de pro­gram­ma­tion proche du Ja­vaS­cript avec un ty­page sta­tique conçu pour dé­ve­lop­per des contrats in­tel­li­gents fonc­tion­nant sur l’EVM. Il est com­pi­lé en by­te­code exé­cu­table sur l’EVM. Avec Solidity, les dé­ve­lop­peurs peuvent écrire des ap­pli­ca­tions qui im­plé­mentent la lo­gique mé­tier d’au­to- ap­pli­ca­tion énon­cées dans les contrats in­tel­li­gents, lais­sant un en­re­gis­tre­ment non ré­pu­diable et fai­sant au­to­ri­té des tran­sac­tions. Écrire des smart contracts dans un lan­gage qui leur est spé­ci­fique – tel Solidity – est re­la­ti­ve­ment simple pour peu que l’on ait dé­jà quelques com­pé­tences en pro­gram­ma­tion ob­jet. Comme Ga­vin Wood l’a spé­ci­fié, Solidity a été conçu au­tour de la syn­taxe ECMAS­cript, donc proche du Ja­vas­cript – pour le rendre ra­pi­de­ment fa­mi­lier aux dé­ve­lop­peurs web. Contrai­re­ment à ECMAS­cript, il pos­sède un ty­page sta­tique et des types de re­tour va­ria­diques. Solidity est bien plus évo­lué que les autres lan­gages plus an­ciens créés pour l’EVM tels que Serpent ou Mu­tan. Il offre no­tam­ment les fonc­tion­na­li­tés sui­vantes : • des va­riables de types com­plexes ;

• des types struc­tures hié­rar­chiques as­sez proches des structs du lan­gage C ; • l’hé­ri­tage, y com­pris l’hé­ri­tage mul­tiple avec li­néa­ri­sa­tion ; • une ap­pli­ca­tion d’in­ter­face bi­naire ( ABI) fa­ci­li­tant l’in­clu­sion de plu­sieurs fonc­tions ty­pées dans un seul contrat a éga­le­ment été in­tro­duite, et ajou­tée au lan­gage Serpent ; • un sys­tème de do­cu­men­ta­tion dé­cri­vant les ra­mi­fi­ca­tions des ap­pels des mé­thodes cen­tré sur l’uti­li­sa­teur.

Dé­ve­lop­per des DApps grâce à la blo­ck­chain Ethe­reum

S i l ’ usage init ial de la blo­ck­chain était la créa­tion de cryp­to- mon­naie, « Sa­to­shi Na­ka­mo­to » avait éga­le­ment pré­vu un champ d’ap­pli­ca­tions plus large. L’émer­gence de l’Ethe­reum a bou­le­ver­sé la per­cep­tion de la blo­ck­chain. Ethe­reum est une blo­ck­chain sim­pli­fiée des­ti­née prin­ci­pa­le­ment au dé­ve­lop­pe­ment d’ap­pli­ca­tions dé­cen­tra­li­sées ou DApps ( De­cen­tra­li­zed Ap­pli­ca­tions). La plu­part des autres blo­ck­chains sont faites seule­ment pour « mi­ner » ( fa­bri­quer de la cryp­to- mon­naie) avec des no­tions de je­tons plus évo­luées, comme le cé­lèbre bit­coin. Dé­ve­lop­per des ap­pli­ca­tions dé­cen­tra­li­sées DApps re­vient en fait à dé­ve­lop­per des smart contracts. Dans l’éco­sys­tème de dé­ve­lop­pe­ment de Dapps, Solidity est ac­tuel­le­ment le lan­gage de pro­gram­ma­tion le plus po­pu­laire. C’est un lan­gage orien­té ob­jet per­met­tant l’écri­ture de smart contracts via une syn­taxe as­sez simple. Voi­ci un exemple de code ti­ré du site du pro­jet pour vous don­ner un aper­çu de sa syn­taxe : prag­ma solidity ^ 0.4.11; contract Pur­chase { uint pu­blic va­lue; ad­dress pu­blic sel­ler; ad­dress pu­blic buyer; enum State { Crea­ted, Lo­cked, Inac­tive }

State pu­blic state;

// En­sure that ` msg. va­lue` is an even num­ber.

// Division will trun­cate if it is an odd num­ber. func­tion Pur­chase() payable { sel­ler = msg. sen­der; va­lue = msg. va­lue / 2; re­quire(( 2 * va­lue) == msg. va­lue); } mo­di­fier condi­tion( bool _ condi­tion) { re­quire(_ condi­tion); _; } ……… event Abor­ted(); event Pur­cha­seCon­fir­med(); event ItemRe­cei­ved(); /// Abort the pur­chase and re­claim the ether. func­tion abort() on­lySel­ler inS­tate( State. Crea­ted) { Abor­ted(); state = State. Inac­tive; sel­ler. trans­fer( this. ba­lance); } ……… func­tion confirmRe­cei­ved() } { } on­lyBuyer inS­tate( State. Lo­cked) ItemRe­cei­ved(); state = State. Inac­tive; buyer. trans­fer( va­lue); sel­ler. trans­fer( this. ba­lance);

Les contrats in­tel­li­gents

La force du code in­terne d’Ethe­reum par rap­port à ce­lui du bit­coin est qu’il est « tu­ring- com­plet » , c’est- à- dire ca­pable, avec suf­fi­sam­ment de temps, de tout cal­cu­ler. Ce code per­met d’ins­tal­ler dans chaque noeud du ré­seau Ethe­reum une EVM dé­diée à faire tour­ner de fa­çon dé­cen­tra­li­sée les contrats in­tel­li­gents de la plate- forme. Un smart contract est un contrat fi­nan­cier pré­vu pour s’en­clen­cher au­to­ma­ti­que­ment quand cer­taines condi­tions sont rem­plies, et ce sans au­to­ri­té tierce. Ethe­reum per­met d’ef­fec­tuer un saut concep­tuel entre ap­pli­ca­tion tra­di­tion­nelle et ap­pli­ca­tion dé­cen­tra­li­sée. Tout comme les cryp­to- mon­naies sont des banques di­ri­gées par du lo­gi­ciel, les contrats in­tel­li­gents per­mettent ain­si de bâ­tir toutes sortes d’en­tre­prises fi­nan­cières et tech­no­lo­giques.

Vous trou­ve­rez de nom­breuses res­sources sur le site du pro­jet solidity à l’adresse https:// solidity. read­the­docs. io/ en/ de­ve­lop/

Newspapers in French

Newspapers from France

© PressReader. All rights reserved.