Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Manaraka izany, hodinihintsika amin'ny antsipiriany ireo toetra mampiavaka ny fiteny Hetsika sy ireo fahasamihafana lehibe misy amin'ny fiteny iray hafa izay efa malaza amin'ny fifanarahana maranitra - Solidity (eo amin'ny sehatra Ethereum). Ny fitaovana dia mifototra amin'ny fandalinana ny whitepaper 26 pejy an-tserasera.

fampidirana

Move dia fiteny bytecode azo tanterahana izay ampiasaina hanatanterahana ny fifampiraharahana amin'ny mpampiasa sy ny fifanarahana marani-tsaina. Mariho ny hevitra roa:

  1. Raha ny fiteny Mov dia fiteny bytecode izay azo ampiharina mivantana amin'ny milina virtoaly Move, Solidity (fiteny fifanarahana maranitra Ethereum) dia fiteny avo lenta kokoa izay narafitra voalohany tamin'ny bytecode alohan'ny hamonoana azy amin'ny EVM (Machine Virtual Ethereum).
  2. Ny hetsika dia tsy azo ampiasaina hanatanterahana fifanarahana marani-tsaina fotsiny, fa koa amin'ny fifanakalozana manokana (bebe kokoa momba io aoriana io), raha Solidity kosa dia fiteny fifanarahana marani-tsaina ihany.


Ny ekipan'ny tetikasa INDEX Protocol no nanao ny fandikana. Efa nandika teny izahay fitaovana lehibe mamaritra ny tetikasa Libra, fotoana izao hijerena ny fiteny Move amin'ny antsipiriany bebe kokoa. Niara-nanatontosa ny fandikan-teny tamin'i Habrauser coolsiu

Ny singa manan-danja amin'ny Move dia ny fahafahana mamaritra karazana loharanon-karena manokana miaraka amin'ny semantika mifototra amin'ny lojika tsipika: tsy azo adika na voafafa an-kolaka ny loharano iray, afa-tsy afindra. Amin'ny ankapobeny dia mitovy amin'ny fahaizan'ny fiteny Rust izany. Ny soatoavina ao amin'ny Rust dia tsy azo omena afa-tsy anarana iray isaky ny mandeha. Ny fanomezan-danja anarana hafa dia mahatonga azy tsy ho hita eo ambanin'ny anarana teo aloha.

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Ohatra, ity sombin-kaody manaraka ity dia hamoaka lesoka: Fampiasana sanda mifindra 'x'. Izany dia satria tsy misy fanangonana fako ao amin'ny Rust. Rehefa tsy mandeha amin'ny sehatra intsony ny variables dia afaka ihany koa ny mémoire lazainy. Raha tsorina, dia iray ihany ny "tompona" data. Ao amin'ity ohatra ity x no tompony voalohany ary avy eo y lasa tompony vaovao. Vakio bebe kokoa momba ity fihetsika ity eto.

Fanehoana ny fananana nomerika amin'ny rafitra misokatra

Misy fananana roa amin'ny fananana ara-batana izay sarotra soloina nomerika:

  • fahita firy (Fahavitsy, tsy fahampiana tany am-boalohany). Ny isan'ny fananana (emission) ao amin'ny rafitra dia tsy maintsy fehezina. Ny fandrarana ny fananana efa misy dia tsy maintsy raràna, ary ny famoronana vaovao dia asa lehibe.
  • Fanaraha-maso fidirana... Ny mpandray anjara amin'ny rafitra dia tsy maintsy afaka miaro ny fananana amin'ny fampiasana ny politika fidirana amin'ny fidirana.

Ireo toetra roa ireo, izay voajanahary amin'ny fananana ara-batana, dia tsy maintsy ampiharina amin'ny zavatra niomerika raha tiantsika ny hihevitra azy ireo ho toy ny fananana. Ohatra, ny vy tsy fahita firy dia manana tsy fahampiana voajanahary, ary ianao irery no mahazo miditra aminy (mitazona izany eo am-pelatananao ohatra) ary afaka mivarotra na mandany azy ianao.

Mba hanehoana ny fomba nahatongavantsika tamin'ireo fananana roa ireo dia andao atomboka amin'ireto fehezanteny manaraka ireto:

Soso-kevitra # 1: Ny fitsipika tsotra indrindra tsy misy ny tsy fahampiana sy ny fifehezana ny fidirana

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

  • G [K]: = n dia milaza fanavaozana ny isa azo alain'ny lakile К amin'ny fanjakana manerantany blockchain, misy dikany vaovao n.
  • fifanakalozana ⟨Alice, 100⟩ dia midika hoe mametraka 100 ny fifandanjan'ny kaontin'i Alice.

Ny vahaolana etsy ambony dia misy olana lehibe maromaro:

  • Alice dia afaka mahazo farantsa maro tsy manam-petra amin'ny fandefasana fotsiny fifanakalozana ⟨Alice, 100⟩.
  • Tsy misy ilàna azy ireo vola alefan'i Alice amin'i Bob, satria afaka nandefa vola tsy tambo isaina ho azy i Bob tamin'ny fampiasana teknika iray ihany.

Soso-kevitra # 2: Raiso ny fatiantoka

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Ankehitriny izahay dia manara-maso ny zava-misy ka ny isan'ireo farantsa Ka nitovy farafaharatsiny n alohan'ny fifanakalozana fifanakalozana. Na izany aza, na dia mamaha ny olan'ny tsy fahampiana aza izany dia tsy misy fampahalalana momba izay afaka mandefa ny farantsak'i Alice (amin'izao fotoana izao, na iza na iza afaka manao izany, ny zava-dehibe indrindra dia ny tsy fanitsakitsahana ny lalàna mifehy ny fatrany).

Tolo-kevitra # 3: Manambatra ny tsy fahampiana sy ny fifehezana ny fidirana

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Vahaolana iray niomerika no namahanay an'ity olana ity ver_sig alohan'ny hijerena ny mizana, izay midika fa mampiasa ny lakileny manokana i Alice hanasoniaana ny fifanakalozana ary hanamafy fa izy no tompon'ny volany.

Fiteny fandaharana Blockchain

Ireo fiteny efa misy blockchain dia miatrika ireto olana manaraka ireto (izy rehetra dia voavaha tao amin'ny Mov (naoty: indrisy, ny mpanoratra ny lahatsoratra dia tsy miantso afa-tsy an'i Ethereum amin'ny fampitahana azy, noho izany dia mendrika ny mandray azy ireo fotsiny amin'ity resaka ity. Ohatra, ny ankamaroan'ny manaraka dia voavaha amin'ny EOS ihany koa.)):

Fanehoana ny fananana tsy mivantana. Ny fananana dia voasivana amin'ny fampiasana isa, fa ny isa dia tsy mitovy amin'ny fananana. Raha ny marina, tsy misy karazana na sanda misolo tena Bitcoin/Ether/<Any Coin>! Izany dia mahatonga ireo programa fanoratana izay mampiasa fananana ho sarotra sy mora diso. Mila fanohanana manokana avy amin'ny fiteny ny lamina toy ny fandefasana fananana mankany/avy amin'ny fomba fiasa na fitehirizana fananana ao anaty rafitra.

Ny deficit dia tsy azo velarina... Ny fiteny dia maneho fananana tsy fahita afa-tsy iray. Ho fanampin'izany, ny fanafody hanoherana ny tsy fahampiana dia mifamatotra mivantana amin'ny semantika amin'ilay fiteny mihitsy. Ny mpamorona, raha te-hamorona fananana manokana dia tsy maintsy mifehy tsara ny lafiny rehetra amin'ilay loharano. Ireo dia ny olan'ny fifanarahana marani-tsaina Ethereum.

Ireo mpampiasa dia mamoaka ny fananany, mari-pamantarana ERC-20, amin'ny alàlan'ny integer hamaritana ny sandany sy ny totalin'ny famatsiana. Isaky ny misy ny famoronana mari-pamantarana vaovao, ny kaody fifanarahana marani-tsaina dia tsy maintsy manamarina tsy miankina ny fanajana ny fitsipiky ny famoahana. Ho fanampin'izany, ny fampisehoana tsy ara-bola ny fananana dia mitarika, amin'ny tranga sasany, ny lesoka lehibe - famerenana, fandaniana roa heny na fahaverezan'ny fananana tanteraka aza.

Tsy fahampian'ny fifehezana fidirana mora azo... Ny hany politikan'ny fanaraha-maso ny fidirana ampiasaina ankehitriny dia ny tetika sonia mampiasa cryptography asymmetric. Toy ny fiarovana ny tsy fahampiana, ny politika mifehy ny fidirana dia tafiditra lalina ao amin'ny semantikan'ilay fiteny. Fa ny fomba fanitarana ny fiteny hahafahan'ny mpandahatra programa mamaritra ny politikany amin'ny fidirana manokana dia asa sarotra tokoa matetika.

Marina ihany koa izany ao amin'ny Ethereum, izay tsy manana fanohanana kriptografika teratany ho an'ny fanaraha-maso ny fidirana. Ny mpamorona dia tsy maintsy mametraka ny fanaraha-maso ny fidirana amin'ny tanana, ohatra, amin'ny fampiasana ny mpanova Owner tokana.

Na dia mpankafy mafy an'i Ethereum aza aho, mino aho fa ny fananana fananana dia tokony ho tohanan'ny fiteny ho an'ny fiarovana. Indrindra indrindra, ny famindrana an'i Ether amin'ny fifanarahana marani-tsaina dia misy ny fandefasana mavitrika, izay nampiditra karazana bibikely vaovao antsoina hoe vulnerabilities re-entrancy. Ny fandefasana dinamika eto dia midika fa ny lojika famonoana ny kaody dia hofaritana amin'ny fotoana fandehanana (dynamique) fa tsy amin'ny fotoana fanangonana (static).

Noho izany, ao amin'ny Solidity, rehefa miantso asa ao amin'ny fifanarahana B ny fifanarahana A, ny fifanarahana B dia mety handefa fehezan-dalàna izay tsy nokasain'ny mpamorona ny fifanarahana A, izay mety hiteraka vulnerability amin'ny fidirana indray (Contract A dia miasa tsy nahy ho fifanarahana B mba haka vola alohan'ny hanesorana ny sandan'ny kaonty).

Move Language Design Fundamentals

Loharanom-baovaona voalohany

Amin'ny ambaratonga avo, ny fifandraisan'ny modules / loharano / fomba amin'ny fiteny Move dia tena mitovy amin'ny fifandraisana misy eo amin'ny kilasy / zavatra sy ny fomba amin'ny fiteny OOP.
Ny modules mifindra dia mitovy amin'ny fifanarahana hendry amin'ny blockchains hafa. Ny modely dia manambara ireo karazana loharanom-pahalalana sy fomba famaritana mamaritra ny lalàna momba ny famoronana, fanapotehana ary fanavaozana ireo loharano nambara. Saingy fifanarahana fotsiny ireo rehetra ireo (“teknika,”) Mihetsika. Hodinihintsika kely ity teboka ity aorian'izay.

manovaova

Ny Move dia manampy flexibility amin'ny Libra amin'ny alàlan'ny fanoratana. Ny fifampiraharahana rehetra ao amin'ny Libra dia misy script, izay tena fomba fiasa fototra amin'ny fifampiraharahana. Ny script dia afaka manao hetsika iray voafaritra, ohatra, fandoavam-bola amin'ny lisitry ny mpandray, na mampiasa loharano hafa - ohatra, amin'ny fiantsoana fomba iray izay mamaritra ny lojika ankapobeny. Izany no mahatonga ny script Move transaction manome fahafaha-manao bebe kokoa. Ny script iray dia afaka mampiasa ny fitondran-tena indray mandeha sy miverimberina, raha toa kosa ny Ethereum dia afaka manatanteraka script azo averina ihany (miantso fomba iray amin'ny fomba fifanarahana marani-tsaina). Ny antony iantsoana azy hoe "azo ampiasaina indray" dia satria ny asan'ny fifanarahana marani-tsaina dia azo tanterahina imbetsaka. (Fanamarihana: Ny hevitra eto dia tena saro-pady. Amin'ny lafiny iray, misy ihany koa ny script transactions amin'ny endrika pseudo-bytecode ao Bitcoin. Amin'ny lafiny iray, araka ny fahazoako azy, ny Move dia manitatra ity fiteny ity, raha ny marina, mankany amin'ny haavon'ny fiteny fifanarahana marani-tsaina feno.).

fiarovana

Ny endrika executable Move dia bytecode, izany hoe, amin'ny lafiny iray, fiteny ambony kokoa noho ny fiteny fivoriambe, fa ambany kokoa noho ny kaody loharano. Ny bytecode dia voamarina amin'ny fotoana fandehanana (eo amin'ny rojo) ho an'ny loharanon-karena, karazana ary fiarovana amin'ny fitadidiana amin'ny alàlan'ny verifier bytecode, ary avy eo ataon'ny mpandika teny. Ity fomba fiasa ity dia ahafahan'ny Move manome ny fiarovana ny kaody loharano, saingy tsy misy ny fizotry ny fanangonana sy ny ilana ny fampidirana compiler amin'ny rafitra. Ny fanaovana Move fiteny bytecode dia vahaolana tena tsara. Tsy mila angonina avy amin'ny loharano izy io, toy ny amin'ny Solidity, ary tsy ilaina ny manahy momba ny mety ho tsy fahombiazana na fanafihana amin'ny fotodrafitrasa mpanangona.

Verifiability

Mikasa ny hanao fisavana amin'ny fomba mora araka izay azo atao izahay, satria izany rehetra izany dia atao amin'ny rojo (fanamarihana: an-tserasera, mandritra ny fanatanterahana ny fifanakalozana tsirairay, noho izany ny fahatarana rehetra dia mitarika ny fihenan'ny tambajotra iray manontolo), na izany aza, amin'ny voalohany dia vonona ny hampiasa fitaovana fanamarinana static tsy misy rojo ny famolavolana fiteny. Na dia aleo kokoa aza izany, amin'izao fotoana izao dia nahemotra ho an'ny ho avy ny fampivoarana fitaovana fanamarinana (ho fitaovana manokana), ary ankehitriny ny fanamarinana mavitrika amin'ny fotoana fandehanana (on-chain) ihany no tohana.

Modularité

Ny modules mihetsika dia manome abstraction data ary mametraka ny toerana misy ny asa fanakianana amin'ny loharano. Ny encapsulation nomen'ny mody, ampiarahina amin'ny fiarovana omen'ny rafitry ny karazana Mov, dia miantoka fa ny toetra napetraka amin'ireo karazana maoderina dia tsy azo holavina amin'ny kaody ivelan'ny mody. Ity dia famolavolana abstraction efa nieritreritra tsara, midika izany fa ny angona ao anatin'ny fifanarahana dia afaka miova ao anatin'ny rafitry ny fifanarahana ihany fa tsy ivelany.

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Mifindra topimaso

Ny ohatra momba ny fifanakalozana dia mampiseho fa ny fihetsika ratsy na tsy fitandremana ataon'ny mpandahatra fandaharana ivelan'ny maoderina dia tsy afaka manimba ny fiarovana ireo loharanom-pahalalana. Manaraka izany, hojerentsika ny ohatra amin'ny fomba fampiasana ny modules, ny loharano ary ny fomba fanaovany ny programa Libra blockchain.

Ny fandoavam-bolan'ny namana

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Ny isan'ny vola madinika voatondro amin'ny vola dia hafindra avy amin'ny balan'ny mpandefa mankany amin'ny mpandray.
Misy zava-baovao vitsivitsy eto (nasongadina mena):

  • 0x0: adiresin'ny kaonty izay itahirizana ilay modely
  • Sandam-bola: anaran'ny modely
  • Coin: karazana loharano
  • Ny sandan'ny vola madinika naverin'ny fomba fiasa dia soatoavin'ny loharano 0x0.Currency.Coin
  • mifindra (): sanda tsy azo ampiasaina indray
  • kopia (): sarobidy azo ampiasaina aorian'izay

Fehio ny kaody: amin'ny dingana voalohany dia miantso fomba fanao voalaza ilay mpandefa hialana_from_sender avy amin'ny modely voatahiry ao 0x0.Vola. Amin'ny dingana faharoa, ny mpandefa dia mamindra vola amin'ny mpandray amin'ny alàlan'ny famindra ny sandan'ny loharanon-karena amin'ny fomba fametrahana ny module 0x0.Vola.

Ireto misy ohatra telo amin'ny lesoka amin'ny kaody izay holavin'ny seky:
Ataovy avo roa heny ny vola amin'ny alàlan'ny fanovana ny antso mihetsika (farantsakely) amin'ny kopia (vola madinika). Ny loharanon-karena ihany no azo afindra. Miezaka mandika ny habetsahan'ny loharano iray (ohatra, amin'ny fiantsoana kopia (vola madinika) amin'ny ohatra etsy ambony) dia hiteraka lesoka rehefa manamarina ny bytecode.

Fampiasana vola indray amin'ny famaritana mihetsika (farantsakely) indroa . Manampy tsipika 0x0.Currency.deposit (copie (some_other_payee), move (coin)) Ohatra, ny voalaza etsy ambony dia hamela ny mpandefa "handany" ny vola indroa - ny voalohany miaraka amin'ny mpandoa vola, ary ny faharoa miaraka amin'ny some_other_payee. Fihetseham-po tsy mendrika izany izay tsy azo atao amin'ny fananana ara-batana. Soa ihany fa handà ity programa ity ny Move.

Very vola noho ny fandavana mihetsika (farantsakely). Raha tsy manetsika ny loharano ianao (ohatra, amin'ny famafana ny tsipika misy mihetsika (farantsakely)), hisy hadisoana fanamarinana bytecode hatsipy. Izany dia miaro ny mpandrindra Move amin'ny fahaverezan'ny vola tsy nahy na ratsy.

Module vola

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Ny kaonty tsirairay dia mety misy mody 0 na maromaro (aseho amin'ny endrika mahitsizoro) ary sanda loharano iray na maromaro (aseho ho cylinders). Ohatra, kaonty amin'ny 0x0 misy module 0x0.Vola ary ny sandan'ny karazana loharanon-karena 0x0.Currency.Coin. Kaonty amin'ny adiresy 0x1 manana loharano roa sy maody iray; Kaonty amin'ny adiresy 0x2 manana modules roa ary sanda loharano iray.

Fotoana vitsivitsy:

  • Ny script transaction dia atomika - na tanterahana tanteraka izany na tsia.
  • Ny module dia kaody maharitra maharitra izay azo idirana maneran-tany.
  • Ny fanjakana maneran-tany dia voarafitra toy ny latabatra hash, izay ny adiresy kaonty no fanalahidy
  • Ny kaonty dia tsy afaka mirakitra sanda loharanon-karena iray amin'ny karazana nomena ary tsy mihoatra ny maody iray misy anarana nomena (kaonty amin'ny 0x0 tsy misy loharano fanampiny 0x0.Currency.Coin na module hafa antsoina hoe Sandam-bola)
  • Ny adiresin'ny module nambara dia anisan'ny karazana (0x0.Currency.Coin и 0x1.Currency.Coin dia karazana misaraka izay tsy azo ampiasaina mifanakalo)
  • Ny mpandrindra dia afaka mitahiry tranga maro amin'ity karazana loharano ity amin'ny kaonty iray amin'ny famaritana ny loharano mahazatra azy - (loharano TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • Azonao atao ny manondro loharano iray amin'ny anarany tsy misy fifandirana, ohatra, azonao atao ny manondro loharano roa ampiasaina TwoCoins.c1 и TwoCoins.c2.

Fampandrenesana loharanon-karena

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook
Module nomena Sandam-bola ary karazana loharano nomena anarana Coin

Fotoana vitsivitsy:

  • Coin dia rafitra misy karazany iray u64 (64-bit tsy misy sonia integer)
  • Ny fomba fiasa Module ihany Sandam-bola afaka mamorona na manimba karazana soatoavina Coin.
  • Ny maody sy ny script hafa dia tsy afaka manoratra na manondro ny saha sanda amin'ny alàlan'ny fomba fiasa ampahibemaso omen'ny module.

Varotra petra-bola

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Ity fomba fiasa ity dia manaiky loharano iray Coin ho fampidirana ary ampifandraiso amin'ny loharano Coinvoatahiry ao amin'ny kaontin'ny mpandray:

  1. Famotehana ny loharanon-karena fampidirana Coin sy firaketana ny sandany.
  2. Mahazo rohy mankany amin'ny loharanon'ny Coin tokana voatahiry ao amin'ny kaontin'ny mpandray.
  3. Fanovana ny sandan'ny isan'ny vola madinika amin'ny sanda nomena ao amin'ny parameter rehefa miantso ny fomba fiasa.

Fotoana vitsivitsy:

  • Sokafy, BorrowGlobal - fomba fiasa anatiny
  • Vahao Io no hany fomba hamafa loharano iray karazana T. Ny fomba fiasa dia maka loharano ho fampidirana, manimba azy, ary mamerina ny sanda mifandraika amin'ny sahan'ny loharano.
  • BorrowGlobal maka adiresy ho fampidirana ary mamerina reference amin'ny ohatra tokana momba ny T navoaka (tompon'ny) an'io adiresy io
  • &mut Coin rohy mankany amin'ny loharano ity Coin

Fampiharana ny fisintonana_amin'ny_mpanefa

Midira ao amin'ny Move - fiteny fandaharana Libra blockchain an'ny Facebook

Ity dingana ity:

  1. Mahazo rohy mankany amin'ny loharano tokana Coin, mifandray amin'ny kaontin'ny mpandefa
  2. Mampihena ny sandan'ny loharano iray Coin amin'ny alalan'ny rohy ho an'ny vola voatondro
  3. Mamorona sy mamerina loharano vaovao Coin miaraka amin'ny fifandanjana nohavaozina.

Fotoana vitsivitsy:

  • petra-bola mety ho avy na iza na iza, fa hialana_from_sender ny vola madinika amin'ny kaonty fiantsoana ihany no afaka miditra
  • GetTxnSenderAddress mitovy amin'ny msg.sender amin'ny Solidity
  • RejectUnless mitovy amin'ny mitaky amin'ny Solidity. Raha tsy mahomby io fisavana io dia atsahatra ny fifampiraharahana ary averina miverina ny fanovana rehetra.
  • entana Izy io koa dia fomba fiasa namboarina izay mamorona loharano vaovao karazana T.
  • Ary koa Vahao, entana tsy azo antsoina afa-tsy ao anatin'ny môdely izay voalaza ny loharanon-karena T

famaranana

Nandinika ny toetra fototry ny fiteny Move izahay, nampitaha azy tamin'ny Ethereum, ary nanjary nahafantatra ny syntax fototra amin'ny scripts. Farany, tena manoro hevitra aho hanamarina taratasy fotsy tany am-boalohany. Tafiditra ao anatin'izany ny antsipiriany be dia be momba ny fitsipiky ny famolavolana fiteny fandaharana, ary koa ny rohy mahasoa maro.

Source: www.habr.com

Add a comment