Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Nigbamii, a yoo gbero ni awọn alaye awọn abuda akọkọ ti ede Gbe ati kini awọn iyatọ bọtini rẹ pẹlu omiiran, ede ti o gbajumọ tẹlẹ fun awọn iwe adehun ti o gbọn - Solidity (lori pẹpẹ Ethereum). Awọn ohun elo naa da lori ikẹkọ ti oju-iwe funfun oju-iwe 26 ti o wa lori ayelujara.

Ifihan

Gbe jẹ ede bytecode ti o le ṣiṣẹ ti o lo lati ṣiṣẹ awọn iṣowo olumulo ati awọn adehun ijafafa. Jọwọ ṣe akiyesi awọn aaye meji:

  1. Lakoko ti Gbigbe jẹ ede bytecode kan ti o le ṣe taara lori ẹrọ foju Gbe, Solidity (ede adehun ọlọgbọn ti Ethereum) jẹ ede ti o ga julọ ti o kọkọ ṣajọpọ si bytecode ṣaaju ṣiṣe ni pipa lori EVM (Ethereum Virtual Machine).
  2. Gbe le ṣee lo kii ṣe lati ṣe imuse awọn iwe adehun ti o gbọn nikan, ṣugbọn fun awọn iṣowo aṣa (diẹ sii lori eyi nigbamii), lakoko ti Solidity jẹ ede adehun-smati nikan.


Itumọ naa ni a ṣe nipasẹ ẹgbẹ akanṣe Ilana Ilana INDEX. A ti tumọ tẹlẹ ohun elo nla ti o n ṣalaye iṣẹ Libra, nisisiyi o to akoko lati wo ede Gbe ni alaye diẹ sii. Itumọ naa ni a ṣe ni apapọ pẹlu Habrauser coolsiu

Ẹya bọtini kan ti Gbe ni agbara lati ṣalaye awọn oriṣi orisun aṣa pẹlu awọn itumọ-ọrọ ti o da lori ọgbọn laini: orisun kan ko le ṣe daakọ tabi paarẹ ni aitọ, gbe nikan. Ni iṣẹ ṣiṣe, eyi jẹ iru si awọn agbara ti ede Rust. Awọn iye ni ipata le jẹ sọtọ si orukọ kan ni akoko kan. Pipin iye kan si orukọ miiran jẹ ki ko si labẹ orukọ iṣaaju.

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Fun apẹẹrẹ, snippet koodu atẹle yoo jabọ aṣiṣe kan: Lilo iye gbigbe 'x'. Eyi jẹ nitori ko si ikojọpọ idoti ni Ipata. Nigbati awọn oniyipada ba jade ni iwọn, iranti ti wọn tọka si ni ominira pẹlu. Ni kukuru, “oniwun” kan nikan ti data naa le wa. Ninu apẹẹrẹ yii x jẹ oniwun atilẹba ati lẹhinna y di titun eni. Ka diẹ sii nipa ihuwasi yii nibi.

Aṣoju ti awọn ohun -ini oni -nọmba ni awọn eto ṣiṣi

Awọn ohun -ini meji lo wa ti awọn ohun -ini ti ara ti o nira lati ṣe aṣoju digitally:

  • Iyatọ (Aito, aito akọkọ). Nọmba awọn ohun -ini (itujade) ninu eto gbọdọ wa ni iṣakoso. Didakọ awọn ohun -ini to wa tẹlẹ gbọdọ jẹ eewọ, ati ṣiṣẹda awọn tuntun jẹ iṣẹ ti o ni anfani.
  • Iṣakoso wiwọle... Olukopa eto gbọdọ ni anfani lati daabobo awọn ohun -ini nipa lilo awọn ilana iṣakoso iwọle.

Awọn abuda meji wọnyi, eyiti o jẹ adayeba fun awọn ohun -ini ti ara, gbọdọ wa ni imuse fun awọn ohun oni -nọmba ti a ba fẹ lati ro wọn bi ohun -ini. Fun apẹẹrẹ, irin toje ni aipe adayeba, ati pe iwọ nikan ni iwọle si (dani ni ọwọ rẹ, fun apẹẹrẹ) ati pe o le ta tabi lo.

Lati ṣapejuwe bi a ṣe de awọn ohun -ini meji wọnyi, jẹ ki a bẹrẹ pẹlu awọn gbolohun wọnyi:

Imọran # 1: Ofin ti o Rọrun Laisi Iyatọ ati Iṣakoso Wiwọle

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

  • G [K]: = n n tọka imudojuiwọn ti nọmba kan ti o le wọle nipasẹ bọtini kan К ni ipo agbaye ti blockchain, pẹlu itumọ tuntun n.
  • Iṣowo Alice, 100⟩ tumọ si ṣeto iwọntunwọnsi akọọlẹ Alice si 100.

Ojutu ti o wa loke ni ọpọlọpọ awọn iṣoro pataki:

  • Alice le gba nọmba ailopin ti awọn owó nipa fifiranṣẹ lasan idunadura lAlice, 100⟩.
  • Awọn owó ti Alice fi ranṣẹ si Bob ko wulo, bi Bob ṣe le fi ararẹ ranṣẹ si iye ailopin ti awọn owó nipa lilo ilana kanna.

Imọran # 2: Ṣiṣe akiyesi aipe naa

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Bayi a n ṣe abojuto ipo naa ki nọmba awọn owó Ka je ni o kere dogba n ṣaaju iṣowo gbigbe. Sibẹsibẹ, lakoko ti eyi yanju iṣoro aito, ko si alaye nipa tani o le firanṣẹ awọn owo Alice (fun bayi, ẹnikẹni le ṣe eyi, ohun akọkọ kii ṣe lati rú ofin ti diwọn iye).

Igbero # 3: Darapọ aito ati iṣakoso iwọle

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

A yanju iṣoro yii pẹlu ẹrọ ibuwọlu oni nọmba kan daju_sig ṣaaju ṣayẹwo iwọntunwọnsi, eyiti o tumọ si pe Alice nlo bọtini ikọkọ rẹ lati fowo si idunadura naa ati jẹrisi pe o ni oniwun awọn owó rẹ.

Awọn ede siseto Blockchain

Awọn ede blockchain ti o wa tẹlẹ dojuko awọn iṣoro atẹle (gbogbo wọn ni a yanju ni Gbe (akiyesi: laanu, onkọwe ti nkan nikan rawọ si Ethereum ninu awọn afiwera rẹ, nitorinaa o tọ lati mu wọn nikan ni ipo yii. Fun apẹẹrẹ, pupọ julọ atẹle naa tun yanju ni EOS.):

Aṣoju aiṣe -taara ti awọn ohun -ini. Ohun dukia wa ni koodu nipa lilo odidi, ṣugbọn odidi kii ṣe bakanna bi dukia. Ni otitọ, ko si iru tabi iye ti o nsoju Bitcoin / Ether / <Eyikeyi Owo>! Eyi jẹ ki awọn eto kikọ ti o lo awọn ohun-ini nira ati aṣiṣe-prone. Awọn awoṣe bii gbigbe ohun-ini lọ si/lati awọn ilana tabi fifipamọ awọn ohun-ini ni awọn ẹya nilo atilẹyin pataki lati ede naa.

Aipe naa ko gbooro... Ede duro fun dukia ailopin kan. Ni afikun, awọn àbínibí lodi si aito jẹ lile lile taara sinu awọn atunmọ ede funrararẹ. Olùgbéejáde naa, ti o ba fẹ ṣẹda ohun -ini aṣa kan, gbọdọ farabalẹ ṣakoso gbogbo awọn aaye ti ohun elo funrararẹ. Iwọnyi jẹ awọn iṣoro gangan ti awọn iwe adehun smati Ethereum.

Awọn olumulo ṣe ifilọlẹ awọn ohun-ini wọn, awọn ami-ami ERC-20, lilo awọn odidi lati pinnu iye mejeeji ati ipese lapapọ. Nigbakugba ti a ṣẹda awọn ami tuntun, koodu adehun smati gbọdọ ni ominira ṣe idaniloju ibamu pẹlu awọn ofin itujade. Ni afikun, igbejade aiṣe -taara ti awọn ohun -ini nyorisi, ni awọn igba miiran, si awọn aṣiṣe to ṣe pataki - iṣẹda, inawo meji tabi paapaa pipadanu awọn ohun -ini.

Aini iṣakoso iṣakoso irọrun... Eto imulo iṣakoso iwọle nikan ti o nlo lọwọlọwọ jẹ ero ibuwọlu nipa lilo cryptography asymmetric. Bii aabo aito, awọn ilana iṣakoso iwọle ti wa ni ifibọ jinna ninu awọn atunmọ ede naa. Ṣugbọn bi o ṣe le faagun ede naa lati gba awọn oluṣeto eto laaye lati ṣalaye awọn ilana iṣakoso iwọle ti ara wọn jẹ igbagbogbo iṣẹ -ṣiṣe ti o nira pupọ.

Eyi tun jẹ otitọ lori Ethereum, nibiti awọn adehun ọlọgbọn ko ni atilẹyin cryptography abinibi fun iṣakoso wiwọle. Awọn olupilẹṣẹ gbọdọ ṣeto iṣakoso iwọle pẹlu ọwọ, fun apẹẹrẹ, ni lilo oluyipada Onini nikan.

Paapaa botilẹjẹpe Mo jẹ olufẹ nla ti Ethereum, Mo gbagbọ pe awọn ohun-ini dukia yẹ ki o jẹ atilẹyin abinibi nipasẹ ede fun awọn idi aabo. Ni pataki, gbigbe Ether si adehun ijafafa kan pẹlu fifiranṣẹ ti o ni agbara, eyiti o ti ṣafihan kilasi tuntun ti awọn idun ti a mọ si awọn ailagbara atunwọle. Ifiweranṣẹ ti o ni agbara nibi tumọ si pe ọgbọn ipaniyan ti koodu naa yoo pinnu ni akoko asiko (ìmúdàgba) dipo akoko akojọpọ (aimi).

Nitorinaa, ni Solidity, nigbati adehun A ba pe iṣẹ kan ninu adehun B, adehun B le ṣiṣẹ koodu ti kii ṣe ipinnu nipasẹ olupilẹṣẹ adehun A, eyiti o le ja si tun-titẹ sii vulnerabilities (adehun A ṣe lairotẹlẹ bi adehun B lati yọ owo kuro ṣaaju ki o to yọkuro awọn iwọntunwọnsi akọọlẹ gangan).

Gbe Awọn ipilẹ Apẹrẹ Ede

Awọn orisun akọkọ-aṣẹ

Ni ipele giga, ibaraenisepo laarin awọn modulu / awọn orisun / awọn ilana ni ede Gbe jẹ irufẹ pupọ si ibatan laarin awọn kilasi / awọn nkan ati awọn ọna ni awọn ede OOP.
Awọn modulu gbigbe jẹ iru si awọn iwe adehun ti o gbọn ni awọn blockchains miiran. Modulu naa ṣalaye awọn iru awọn orisun ati awọn ilana ti o ṣalaye awọn ofin fun ṣiṣẹda, iparun, ati imudojuiwọn awọn orisun ti a kede. Ṣugbọn gbogbo awọn wọnyi jẹ awọn apejọ apejọ kan (“jargon”) Ni Gbe. A yoo ṣe afihan aaye yii ni igba diẹ sẹhin.

Ni irọrun

Gbe ṣe afikun irọrun si Libra nipasẹ kikọ. Gbogbo idunadura ni Libra pẹlu iwe afọwọkọ kan, eyiti o jẹ ilana pataki ti idunadura naa. Iwe afọwọkọ naa le ṣe boya igbese kan pato, fun apẹẹrẹ, awọn sisanwo si atokọ kan ti awọn olugba, tabi tun lo awọn orisun miiran - fun apẹẹrẹ, nipa pipe ilana kan ninu eyiti o ti sọ asọye gbogbogbo. Eyi ni idi ti Gbe awọn iwe afọwọkọ idunadura nfunni ni irọrun nla. Iwe afọwọkọ le lo mejeeji akoko kan ati awọn ihuwasi atunwi, lakoko ti Ethereum le ṣe awọn iwe afọwọkọ atunwi nikan (pipe ọna kan lori ọna adehun ọlọgbọn). Idi ti o ti wa ni a npe ni "reusable" jẹ nitori awọn iṣẹ ti a smati guide le ti wa ni ṣiṣẹ ọpọ igba. (akiyesi: Ojuami nibi jẹ gidigidi abele. Ni ọna kan, awọn iwe afọwọkọ idunadura ni irisi pseudo-bytecode tun wa ni Bitcoin. Ní ọwọ́ kejì ẹ̀wẹ̀, bí mo ṣe lóye rẹ̀, Move gbòòrò sí èdè yìí, ní tòótọ́, sí ìpele ti èdè àdéhùn ọlọ́gbọ́n tí ó ní kíkún.).

Aabo

Ọna kika gbigbe ti o ṣee ṣe jẹ bytecode, eyiti o jẹ, ni apa kan, ede ipele ti o ga ju ede apejọ lọ, ṣugbọn ipele kekere ju koodu orisun lọ. A ṣe ayẹwo koodu baiti naa ni akoko ṣiṣe (lori-pq) fun awọn orisun, awọn oriṣi ati ailewu iranti nipa lilo oludari bytecode, ati lẹhinna ṣiṣẹ nipasẹ onitumọ. Ọna yii ngbanilaaye Gbe lati pese aabo ti koodu orisun, ṣugbọn laisi ilana akopọ ati iwulo lati ṣafikun olupilẹṣẹ si eto naa. Ṣiṣe Gbigbe ede bytecode jẹ ojutu ti o dara gaan. Ko nilo lati ṣe akopọ lati orisun, gẹgẹ bi ọran pẹlu Solidity, ati pe ko si iwulo lati ṣe aniyan nipa awọn ikuna ti o ṣeeṣe tabi awọn ikọlu lori awọn amayederun alakojọ.

Ijẹrisi

A ṣe ifọkansi lati ṣe awọn sọwedowo ni irọrun bi o ti ṣee, nitori gbogbo eyi ni a ṣe lori ẹwọn (akọsilẹ: lori ayelujara, lakoko ipaniyan ti idunadura kọọkan, nitorinaa idaduro eyikeyi yori si idinku ti gbogbo nẹtiwọọki), sibẹsibẹ, lakoko apẹrẹ ede ti šetan lati lo awọn irinṣẹ idaniloju aimi-pipa. Botilẹjẹpe eyi jẹ ayanfẹ diẹ sii, fun bayi idagbasoke awọn irinṣẹ ijerisi (gẹgẹbi ohun elo irinṣẹ lọtọ) ti sun siwaju fun ọjọ iwaju, ati ni bayi ijẹrisi agbara nikan ni akoko ṣiṣe (lori-pq) ni atilẹyin.

Modularity

Awọn modulu gbigbe n pese abstraction data ati agbegbe awọn iṣẹ to ṣe pataki lori awọn orisun. Iṣakojọpọ ti a pese nipasẹ modulu, ni idapo pẹlu aabo ti a pese nipasẹ eto iru Gbe, ṣe idaniloju pe awọn ohun -ini ti a ṣeto sori awọn oriṣi modulu ko le ṣẹ nipasẹ koodu ni ita module. Eyi jẹ apẹrẹ abstraction ti a ro daradara, ti o tumọ si pe data inu adehun le yipada nikan laarin ilana ti adehun, ṣugbọn kii ṣe ni ita.

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Gbe Akopọ

Apẹẹrẹ iwe afọwọkọ ṣe afihan pe awọn iṣe irira tabi aibikita nipasẹ oluṣeto ẹrọ kan ni ita module ko le ṣe adehun aabo awọn orisun awọn ohun elo. Nigbamii, a yoo wo awọn apẹẹrẹ ti bii awọn modulu, awọn orisun, ati awọn ilana ṣe lo lati ṣe eto blockchain Libra.

Awọn sisanwo Ẹlẹgbẹ-si-Ẹlẹgbẹ

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Awọn nọmba ti eyo pato ninu iye yoo wa ni ti o ti gbe lati awọn Olu ká iwontunwonsi si awọn olugba.
Awọn nkan titun diẹ wa nibi (ti ṣe afihan ni pupa):

  • 0x0: adirẹsi ti akọọlẹ nibiti o ti fipamọ modulu naa
  • owo: orukọ modulu
  • owo: iru awọn olu resourceewadi
  • Iye owo -owo ti o pada nipasẹ ilana jẹ iye awọn olu resourceewadi ti iru 0x0.Currency.Coin
  • gbe (): iye ko le ṣee lo lẹẹkansi
  • daakọ (): iye le ṣee lo nigbamii

Pa koodu naa mọ: ni igbesẹ akọkọ, olufiranṣẹ pe ilana kan ti a fun lorukọ withdraw_from_sender lati module ti o fipamọ sinu 0x0.Owo. Ni igbesẹ keji, olufiranṣẹ naa gbe owo lọ si olugba nipasẹ gbigbe iye orisun owo sinu ilana idogo module naa. 0x0.Owo.

Eyi ni awọn apẹẹrẹ mẹta ti awọn aṣiṣe ni koodu ti yoo kọ nipasẹ awọn sọwedowo:
Ṣe isodipupo awọn owo nipa yiyipada ipe gbe (owó) on ẹda (owó). Awọn orisun le ṣee gbe nikan. Gbiyanju lati ṣe pidánpidán opoiye ti orisun kan (fun apẹẹrẹ, nipa pipe ẹda (owó) ni apẹẹrẹ loke) yoo ja si aṣiṣe nigba ti n ṣayẹwo koodu baiti.

Tun -lo awọn owo nipa sisọ gbe (owó) lemeji . Fifi ila kan 0x0.Currency.deposit (daakọ (some_other_payee), gbe (coin)) fun apẹẹrẹ, eyi ti o wa loke yoo jẹ ki olufiranṣẹ lati "na" awọn owó lẹẹmeji - igba akọkọ pẹlu payee, ati keji pẹlu payee_miran. Eyi jẹ ihuwasi aifẹ ti ko ṣee ṣe pẹlu dukia ti ara. Ni Oriire, Gbe yoo kọ eto yii.

Isonu ti owo nitori kiko gbe (owó). Ti o ko ba gbe ohun elo naa (fun apẹẹrẹ, nipa piparẹ laini ti o ni ninu gbe (owó)), Aṣiṣe ijerisi bytecode yoo jabọ. Eyi ṣe aabo awọn olupilẹṣẹ Gbe lati lairotẹlẹ tabi isonu irira ti owo.

Owo module

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Iwe akọọlẹ kọọkan le ni awọn modulu 0 tabi diẹ sii (ti o han bi awọn onigun mẹrin) ati ọkan tabi diẹ sii awọn iye orisun (ti o han bi awọn silinda). Fun apẹẹrẹ, akọọlẹ kan ni 0x0 ni module 0x0.Owo ati iye ti awọn oluşewadi iru 0x0.Currency.Coin. Account ni adirẹsi 0x1 ni o ni meji oro ati ọkan module; Account ni adirẹsi 0x2 ni o ni meji modulu ati ki o kan awọn oluşewadi iye.

Awọn akoko Nekotory:

  • Iwe afọwọkọ idunadura jẹ atomiki - boya o ti ṣiṣẹ patapata tabi rara rara.
  • A module ni a gun-ti gbé nkan ti koodu ti o jẹ agbaye wiwọle.
  • Ipinlẹ agbaye jẹ ti eleto bi tabili hash, nibiti bọtini jẹ adirẹsi akọọlẹ naa
  • Awọn akọọlẹ ko le ni iye orisun diẹ sii ti iru ti a fun ati pe ko si ju module kan lọ pẹlu orukọ ti a fun (iroyin ni 0x0 ko le ni ohun afikun awọn oluşewadi 0x0.Currency.Coin tabi module miiran ti a npè ni owo)
  • Adirẹsi ti module ikede jẹ apakan ti iru (0x0.Currency.Coin и 0x1.Currency.Coin jẹ awọn oriṣi lọtọ ti a ko le lo paarọ)
  • Awọn olupilẹṣẹ le fipamọ awọn iṣẹlẹ lọpọlọpọ ti iru orisun yii sinu akọọlẹ kan nipa asọye awọn orisun aṣa wọn - (awọn oluşewadi TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • O le tọka si orisun nipasẹ orukọ rẹ laisi awọn ija, fun apẹẹrẹ o le tọka si awọn orisun meji nipa lilo MejiCoins.c1 и MejiCoins.c2.

Akede awọn oluşewadi owo

Bọ sinu Gbe - ede siseto Libra blockchain Facebook
Module ti a npè ni owo ati ki o kan awọn oluşewadi iru ti a npè ni owo

Awọn akoko Nekotory:

  • owo ni a be pẹlu ọkan aaye ti iru U64 (odidi 64-bit ti a ko fowo si)
  • Awọn ilana modulu nikan owo le ṣẹda tabi run awọn iye ti iru owo.
  • Awọn modulu miiran ati awọn iwe afọwọkọ le kọ tabi tọka aaye iye nikan nipasẹ awọn ilana gbangba ti a pese nipasẹ module.

Tita ti idogo

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Ilana yii gba ohun elo kan owo bi input ki o si daapọ o pẹlu awọn oluşewadi owoti a fipamọ sinu akọọlẹ olugba:

  1. Iparun owo ohun elo igbewọle ati gbigbasilẹ iye rẹ.
  2. Ngba ọna asopọ kan si orisun oto Owo ti a fipamọ sinu akọọlẹ olugba.
  3. Yiyipada iye nọmba ti Awọn owó nipasẹ iye ti o kọja ninu paramita nigba pipe ilana naa.

Awọn akoko Nekotory:

  • Unpack, BorrowGlobal --itumọ ti ni ilana
  • Yọọ kuro Eleyi jẹ nikan ni ona lati pa a oluşewadi ti iru T. Awọn ilana gba a oluşewadi bi input, run, ati ki o pada iye ni nkan ṣe pẹlu awọn oluşewadi aaye.
  • YiyaGlobal gba adirẹsi bi titẹ sii ati dapada itọkasi si apẹẹrẹ alailẹgbẹ ti T ti a tẹjade (ti o ni) nipasẹ adirẹsi yẹn
  • &mut Coin eyi jẹ ọna asopọ si orisun owo

Imuse ti withdraw_from_sender

Bọ sinu Gbe - ede siseto Libra blockchain Facebook

Ilana yii:

  1. Ngba ọna asopọ si awọn orisun alailẹgbẹ kan owo, ti sopọ mọ akọọlẹ olufiranṣẹ
  2. Din awọn iye ti a oluşewadi owo nipasẹ awọn ọna asopọ fun awọn pàtó kan iye
  3. Ṣẹda ati da pada a titun awọn oluşewadi owo pẹlu imudojuiwọn iwontunwonsi.

Awọn akoko Nekotory:

  • idogo le ṣẹlẹ nipasẹ ẹnikẹni, ṣugbọn withdraw_from_sender nikan ni iwọle si awọn owó ti akọọlẹ ipe
  • GetTxnSenderAdirẹsi iru si msg.olufiranṣẹ ni Solidity
  • Kọ Ayafi iru si nilo ni Solidity. Ti ayẹwo yii ba kuna, idunadura naa duro ati pe gbogbo awọn ayipada ti yiyi pada.
  • Ṣe akopọ o tun jẹ ilana ti a ṣe sinu ti o ṣẹda orisun tuntun ti iru T.
  • Si be e si Yọọ kuro, Ṣe akopọ le nikan wa ni a npe ni inu awọn module ibi ti awọn oluşewadi ti wa ni apejuwe T

ipari

A ṣe ayẹwo awọn abuda akọkọ ti ede Move, ṣe afiwe rẹ pẹlu Ethereum, ati pe a tun faramọ pẹlu sintasi ipilẹ ti awọn iwe afọwọkọ. Ni ipari, Mo ṣeduro gíga ṣayẹwo atilẹba funfun iwe. O pẹlu ọpọlọpọ awọn alaye nipa awọn ipilẹ apẹrẹ ede siseto, ati ọpọlọpọ awọn ọna asopọ to wulo.

orisun: www.habr.com

Fi ọrọìwòye kun