Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Chotsatira, tilingalira mwatsatanetsatane mikhalidwe yayikulu ya chilankhulo cha Kusuntha ndi kusiyanasiyana kwake kwakukulu ndi chilankhulo china, chodziwika kale pamgwirizano waluso - Kukhazikika (papulatifomu ya Ethereum). Izi zimachokera pakuwunika kolemba papepala lomwe lili ndi masamba 26 pa intaneti.

Mau oyamba

Move ndi chilankhulo cha bytecode chomwe chimagwiritsidwa ntchito pochita zinthu ndi ogwiritsa ntchito komanso ma contract anzeru. Chonde onani mfundo ziwiri:

  1. Pomwe Move ndi chilankhulo cha bytecode chomwe chitha kuchitidwa mwachindunji pamakina osunthira, Solidity (chilankhulo chanzeru cha Ethereum) ndichilankhulo chapamwamba kwambiri chomwe chimapangidwa koyamba ndi bytecode asanamenyedwe pa EVM (Ethereum Virtual Machine).
  2. Kusuntha sikungagwiritsidwe ntchito kungokhazikitsa mapangano anzeru, komanso kuchitira zinthu mwanjira zina (zambiri pambuyo pake), pomwe Solidity ndi chilankhulo chanzeru chongomangapo mgwirizano.


Kumasuliraku kudachitidwa ndi gulu la pulojekiti ya INDEX Protocol. Tamasulira kale zinthu zazikulu zofotokoza ntchito ya Libra, tsopano ndi nthawi yoti muwone chilankhulo cha Move mwatsatanetsatane. Kumasuliraku kunachitika limodzi ndi Habrauser coolsiu

Chofunikira kwambiri pa Move ndikutha kufotokozera mitundu yazida zokhala ndi ma semantics kutengera malingaliro amzere: chida sichingakopedwe kapena kufufutidwa, kungosunthidwa. Kugwira ntchito, izi ndizofanana ndi kuthekera kwa chilankhulo cha Dzimbiri. Makhalidwe mu Rust atha kuperekedwa ku dzina limodzi panthawi. Kupereka mtengo ku dzina lina kumapangitsa kuti zisapezeke pansi pa dzina lakale.

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Mwachitsanzo, kachidindo kakang'ono kameneka kadzaponya cholakwika: Kugwiritsa ntchito mtengo wosunthidwa 'x'. Izi ndichifukwa choti palibe zotolera zinyalala mu Rust. Zosintha zikachoka, kukumbukira komwe amatchulidwako kumasulidwa. Mwachidule, pangakhale "m'modzi" wa data m'modzi yekha. Mu chitsanzo ichi x ndiye mwiniwake woyamba kenako y amakhala mwini watsopano. Werengani zambiri za khalidweli apa.

Kuyimilira kwa zinthu zadijito pamakina otseguka

Pali zinthu ziwiri zomwe zimakhala zovuta kuziyimira:

  • Kuzindikira (Kusowa, kusowa koyambirira). Chiwerengero cha zinthu (zotulutsa) m'dongosolo ziyenera kuwongoleredwa. Kubwereza zinthu zomwe zilipo kuyenera kuletsedwa, ndipo kupanga zatsopano ndi ntchito yamwayi.
  • Kuwongolera kupeza... Wothandizira nawo ntchitoyi ayenera kuteteza katundu pogwiritsa ntchito ndondomeko zowunikira.

Makhalidwe awiriwa, omwe ndi achilengedwe, amayenera kukhazikitsidwa pazinthu zamagetsi ngati tikufuna kuziwona ngati chuma. Mwachitsanzo, chitsulo chosowa chimakhala ndi kusowa kwachilengedwe, ndipo mumakhala nacho chokha (kuchigwira m'manja, mwachitsanzo) ndipo mutha kuchigulitsa kapena kuchiwononga.

Kuti tifotokozere momwe tidafikira zinthu ziwirizi, tiyeni tiyambe ndi ziganizo izi:

Malangizo # 1: Lamulo Losavuta Popanda Kuchepa ndi Kuwongolera Kufikira

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

  • G [K]: = n Imatanthauza zosintha pamtundu wopezeka ndi kiyi К mdziko lonse la blockchain, wokhala ndi tanthauzo latsopano n.
  • kugulitsa ⟨Alice, 100⟩ kumatanthauza kukhazikitsa akaunti ya Alice kuti ikhale 100.

Yankho ili pamwambapa lili ndi mavuto akulu angapo:

  • Alice atha kulandira ndalama zopanda malire potumiza kugulitsa iceAlice, 100⟩.
  • Ndalama zomwe Alice amatumiza kwa Bob zilibe ntchito, chifukwa Bob amatha kudzilembera yekha ndalama zopanda malire pogwiritsa ntchito njira yomweyo.

Yesani # 2: Kuganizira zakuchepa

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Tsopano tikuwunika momwe zinthu zilili kuti kuchuluka kwa ndalama Ka anali osachepera ofanana n isanakwane. Komabe, ngakhale izi zithetsa vuto la kusowa, palibe chidziwitso chokhudza yemwe angatumize ndalama za Alice (pakadali pano, aliyense angathe kuchita izi, chinthu chachikulu sikuphwanya lamulo lochepetsa ndalamazo).

Lingaliro # 3: Kuphatikiza kusowa ndi kuwongolera mwayi

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Timathetsa vutoli pogwiritsa ntchito siginecha ya digito onetsetsani_sig Asanayang'ane ndalama zotsalira, zomwe zikutanthauza kuti Alice amagwiritsa ntchito kiyi wake wachinsinsi kusaina ndikupeleka ndikutsimikizira kuti ndiye mwini wake ndalama zake.

Zilankhulo za blockchain

Ziyankhulo zomwe zilipo za blockchain zikukumana ndi mavuto otsatirawa (onsewa adathetsedwa mu Move (zindikirani: mwatsoka, wolemba nkhaniyo amangopempha a Ethereum poyerekeza ndi iwo, motero ndiwofunika kuwatengera pankhaniyi. Mwachitsanzo, zambiri mwazinthuzi zimathetsedwanso ku EOS.)):

Kuyimilira kwachinyengo kwachuma. Katundu amasungidwa pogwiritsa ntchito nambala, koma nambala yonse sifanana ndi katundu. M'malo mwake, palibe mtundu kapena mtengo womwe umayimira Bitcoin/Ether/<Ndalama Iliyonse>! Izi zimapangitsa kuti mapulogalamu olembera omwe amagwiritsa ntchito katundu akhale ovuta komanso olakwika. Zitsanzo monga kupatsira katundu kupita ku/kuchokera ku ndondomeko kapena kusunga katundu m'mapangidwe amafunikira thandizo lapadera lochokera m'chinenerocho.

Chosowacho sichikulitsa... Chilankhulo chimayimira chinthu chimodzi chochepa. Kuphatikiza apo, njira zothanirana ndi kusowa zimayikidwa mwachindunji mu semantics ya chilankhulo chomwecho. Wopanga mapulogalamuyo, ngati akufuna kupanga chinthu choyenera, ayenera kuyang'anira mosamala mbali zonse za gwero. Awa ndi mavuto enieni amgwirizano wanzeru wa Ethereum.

Ogwiritsa ntchito amatulutsa katundu wawo, ma tokeni a ERC-20, pogwiritsa ntchito manambala kuti adziwe kufunika kwake ndi kuchuluka kwake. Nthawi zonse akapanga ma tokeni atsopano, ma kontrakitala anzeru amayenera kuwonetsetsa kuti akutsatira malamulowo. Kuphatikiza apo, kuwonetsa chuma mosazungulira kumabweretsa, nthawi zina, ku zolakwika zazikulu - kubwereza, kuwononga kawiri kapena kutaya kwathunthu chuma.

Kusasowa kosavuta kuwongolera... Ndondomeko yokhayo yothanirana ndi anthu yomwe ikugwiritsidwa ntchito masiku ano ndi siginecha yogwiritsa ntchito zojambulajambula zosagwirizana. Monga chitetezo chochepa, mfundo zowongolera njira zopezera zimaphatikizidwa kwambiri mu semantics ya chilankhulo. Koma momwe mungakulitsire chilankhulo kuti owerenga mapulogalamu azitha kufotokozera momwe angagwiritsire ntchito njira zambiri nthawi zambiri imakhala ntchito yovuta kwambiri.

Izi ndizowonanso ku Ethereum, komwe makontrakitala anzeru alibe thandizo lakale la cryptography pakuwongolera mwayi. Madivelopa akuyenera kukhazikitsa pawokha njira zolowera, mwachitsanzo, pogwiritsa ntchito onlyOwner modifier.

Ngakhale ndine wokonda kwambiri Ethereum, ndikukhulupirira kuti katundu wamtengo wapatali ayenera kuthandizidwa ndi chinenero pofuna chitetezo. Makamaka, kusamutsa Ether ku mgwirizano wanzeru kumaphatikizapo kutumiza kwamphamvu, komwe kwayambitsa kalasi yatsopano ya nsikidzi zomwe zimadziwika kuti kuwonongeka kwa kubwezeretsanso. Kutumiza kwamphamvu apa kumatanthauza kuti ndondomeko ya kachitidwe ka code idzatsimikiziridwa panthawi yothamanga (yamphamvu) osati pa nthawi yophatikiza (static).

Chifukwa chake, mu Solidity, pomwe mgwirizano A uyitanitsa ntchito mu mgwirizano B, mgwirizano B utha kuyendetsa ma code omwe sanapangidwe ndi wopanga mgwirizano A, zomwe zingapangitse kulowanso ziwopsezo (kontrakitala A mwangozi imakhala ngati mgwirizano B kuti atenge ndalama ndalama za akaunti zisanachotsedwe).

Kusuntha Ziyankhulo Zomangamanga

Zida zoyambirira

Pamwambamwamba, kulumikizana pakati pa ma module / zothandizira / njira mu chilankhulo cha Move ndikofanana kwambiri ndi ubale wapakati pamakalasi / zinthu ndi njira m'zilankhulo za OOP.
Ma module osunthira amafanana ndi mapangano anzeru m'ma blockchains ena. Gawoli likulengeza mitundu yazinthu zofunikira ndi njira zomwe zimafotokozera malamulo opangira, kuwononga, ndikusinthira zinthu zomwe zalengezedwa. Koma yonseyi ndi misonkhano yokhayo ("mawu”) Mukuyenda. Tifotokoza izi pambuyo pake.

Kusintha

Move imawonjezera kusinthika kwa Libra kudzera muzolemba. Kugulitsa kulikonse ku Libra kumaphatikizapo script, yomwe kwenikweni ndiyo njira yayikulu pakugulitsa. Zolemba zimatha kuchitapo kanthu kamodzi, mwachitsanzo, kulipira pamndandanda womwe waperekedwa, kapena kugwiritsanso ntchito zina - mwachitsanzo, poyitanira njira yomwe malingaliro ake afotokozedwa. Ichi ndichifukwa chake zolemba za Move transaction zimapereka kusinthasintha kwakukulu. Script ingagwiritse ntchito nthawi imodzi ndi machitidwe obwerezabwereza, pamene Ethereum akhoza kungogwiritsa ntchito zolemba zobwerezabwereza (kutchula njira imodzi pa njira ya mgwirizano wanzeru). Chifukwa chake amatchedwa "reusable" ndichifukwa ntchito za contract yanzeru zitha kuchitika kangapo. (Zindikirani: Mfundo apa ndi yobisika kwambiri. Kumbali imodzi, zolemba zamalonda zamtundu wa pseudo-bytecode ziliponso ku Bitcoin. Kumbali ina, momwe ndikumvera, Move amakulitsa chilankhulochi, mpaka kufika pamlingo wa chilankhulo chokwanira chamgwirizano wanzeru.).

Chitetezo

Mawonekedwe a Move omwe angathe kukwaniritsidwa ndi bytecode, yomwe ili mbali imodzi, chilankhulo chapamwamba kuposa chilankhulo cha msonkhano, koma chotsika kuposa code code. The bytecode imayang'aniridwa mu nthawi yothamanga (pa unyolo) pazinthu, mitundu ndi chitetezo cha kukumbukira pogwiritsa ntchito bytecode verifier, ndiyeno kuchitidwa ndi womasulira. Njirayi imalola Move kuti apereke chitetezo cha code source, koma popanda ndondomeko yophatikizira komanso kufunikira kowonjezera compiler ku dongosolo. Kupanga Move chilankhulo cha bytecode ndi yankho labwino kwambiri. Sichiyenera kupangidwa kuchokera ku gwero, monga momwe zilili ndi Solidity, ndipo palibe chifukwa chodandaulira zolephera zomwe zingatheke kapena kuwukira kwa zomangamanga.

Kutsimikizika

Tikufuna kuchita cheke mosavuta momwe tingathere, popeza zonsezi zimachitika pa unyolo (zindikirani: pa intaneti, pakuchitika kwa chilichonse, chifukwa kuchedwa kulikonse kumabweretsa kutsika kwa netiweki yonse), komabe, poyambirira mapangidwe a chilankhulo amakhala okonzeka kugwiritsa ntchito zida zotsimikizira zokhazikika. Ngakhale izi ndizokonda kwambiri, pakadali pano kupanga zida zotsimikizira (monga chida chosiyana) chaimitsidwa mtsogolo, ndipo tsopano kutsimikizira kokhazikika pa nthawi yothamanga (pa unyolo) kumathandizidwa.

Kusinthasintha

Kusuntha ma module kumapereka kuchotsera deta ndikuwonetsa zochitika zofunikira pazinthu. Kulemba koperekedwa ndi gawoli, kuphatikiza chitetezo chomwe chimaperekedwa ndi mtundu wa Move type, zimawonetsetsa kuti zinthu zomwe zili pamitundu ya module sizingaphwanyidwe ndi nambala yakunja. Izi ndizopangika bwino, kutanthauza kuti zomwe zili mgwirizanowu zimatha kusintha malinga ndi mgwirizano, koma osati kunja.

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Sungani mwachidule

Chitsanzo cha transaction chikuwonetsa kuti zoyipa kapena zosasamala zomwe wolemba mapulogalamu kunja kwa gawo sangathe kusokoneza chitetezo cha gawoli. Chotsatira, tiwona zitsanzo za momwe ma module, zothandizira, ndi njira zake zimagwiritsidwira ntchito popanga Libra blockchain.

Malipiro a anzawo

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Nambala ya ndalama zomwe zatchulidwa mu kuchuluka kwake zidzasamutsidwa kuchoka pa ndalama za wotumiza kupita kwa wolandira.
Pali zinthu zingapo zatsopano pano (zowonetsedwa mofiira):

  • 0x0: adilesi yaakaunti yomwe gawo limasungidwa
  • ndalama: dzina la module
  • ndalama: mtundu wazinthu
  • Ndalama yamtengo wapatali yobwezeredwa ndi ndondomekoyi ndi phindu la mtundu wa 0x0.Currency.Coin
  • kusuntha (): mtengo sungagwiritsidwe ntchito kachiwiri
  • lembani (): Mtengo ukhoza kugwiritsidwa ntchito pambuyo pake

Lembani nambala yanu: mu gawo loyamba, wotumizirayo ayitanitsa njira yomwe yatchulidwa kuchotsa_from_sender kuchokera pagawo losungidwa mu Ndalama. Mu sitepe yachiwiri, wotumiza amasamutsa ndalama kwa wolandirayo posuntha mtengo wa coin resource mu ndondomeko yosungiramo gawo. Ndalama.

Nazi zitsanzo zitatu za zolakwika mu code zomwe zidzakanidwa ndi cheke:
Zobwereza ndalama posintha mayitanidwe suntha (ndalama) pa koperani (ndalama). Zida zitha kusunthidwa. Kuyesera kubwereza kuchuluka kwazinthu (mwachitsanzo, poyimba foni koperani (ndalama) muchitsanzo pamwambapa) zitha kubweretsa cholakwika poyang'ana bytecode.

Kugwiritsanso ntchito ndalama pofotokozera suntha (ndalama) kawiri . Kuwonjezera mzere 0x0.Currency.deposit (kope (ena_wolipira_wina), kusuntha (ndalama)) mwachitsanzo, zomwe zili pamwambapa zilola wotumiza "kuwononga" ndalamazo kawiri - nthawi yoyamba ndi wolipira, ndipo yachiwiri ndi ena_ena_wolipira. Ili ndi khalidwe losafunika lomwe silingatheke ndi chuma chakuthupi. Mwamwayi, Move ikana pulogalamuyi.

Kutayika kwa ndalama chifukwa chokana suntha (ndalama). Ngati simusuntha gwero (mwachitsanzo, pochotsa mzere womwe uli nawo suntha (ndalama)), cholakwika chotsimikizira cha bytecode chidzaponyedwa. Izi zimateteza Opanga mapulogalamu kuti asatayike mwangozi kapena mwadala ndalama.

Ndalama module

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Akaunti iliyonse imatha kukhala ndi ma module 0 kapena kupitilira apo (owonetsedwa ngati makona) ndi chinthu chimodzi kapena zingapo (zowonetsedwa ngati masilinda). Mwachitsanzo, akaunti pa 0x0 lili ndi module Ndalama ndi mtengo wamtundu wazinthu 0x0.Currency.Coin. Akaunti ku adilesi 0x1 ali ndi zida ziwiri ndi gawo limodzi; Akaunti ku adilesi 0x2 ili ndi ma module awiri ndi mtengo umodzi wazinthu.

Nthawi za Nekotory:

  • Zolemba za transaction ndi atomiki - mwina zimachitidwa kwathunthu kapena ayi.
  • Module ndi kachidutswa kakang'ono kamene kamatha kupezeka padziko lonse lapansi.
  • Dziko lonse lapansi limapangidwa ngati tebulo la hashi, pomwe fungulo ndi adilesi ya akaunti
  • Maakaunti sangakhale ndi mtengo wopitilira umodzi wamtundu womwe wapatsidwa komanso gawo limodzi lokhala ndi dzina lopatsidwa (akaunti pa 0x0 sichingakhale ndi zina zowonjezera 0x0.Currency.Coin kapena gawo lina lotchedwa ndalama)
  • Adilesi ya module yolengezedwa ndi gawo la mtunduwo (0x0.Currency.Coin ΠΈ 0x1.Currency.Coin ndi mitundu yosiyana yomwe singagwiritsidwe ntchito mosiyana)
  • Okonza mapulogalamu amatha kusunga zinthu zingapo zamtunduwu muakaunti pofotokozera zomwe amapangira - (zothandizira TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • Mutha kutchula chinthucho ndi dzina lake popanda mikangano, mwachitsanzo mutha kugwiritsa ntchito zida ziwiri TwoCoins.c1 ΠΈ TwoCoins.c2.

Coin Resource Declaration

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain
Module yotchedwa ndalama ndi mtundu wazinthu wotchedwa ndalama

Nthawi za Nekotory:

  • ndalama ndi dongosolo lomwe lili ndi gawo limodzi la mtundu u64 (64-bit chiwerengero chosasainidwa)
  • Njira za module zokha ndalama akhoza kupanga kapena kuwononga makhalidwe a mtundu ndalama.
  • Ma modules ena ndi zolemba zimatha kulemba kapena kutchula gawo la mtengowo kudzera munjira zapagulu zoperekedwa ndi gawo.

Kugulitsa kwa depositi

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Ndondomekoyi imavomereza zothandizira ndalama monga cholowetsa ndikuchiphatikiza ndi gwero ndalamazasungidwa mu akaunti ya wolandira:

  1. Kuwononga gwero lolowera Coin ndikulemba mtengo wake.
  2. Kulandila ulalo kuzinthu zapadera za Coin zomwe zasungidwa muakaunti ya wolandila.
  3. Kusintha mtengo wa nambala ya Ndalama ndi mtengo womwe wadutsa mu parameter poyitana njirayi.

Nthawi za Nekotory:

  • Tsegulani, BorrowGlobal - ndondomeko zomangidwa
  • Chotsani katundu Iyi ndiyo njira yokhayo yochotsera gwero la mtundu wa T. Njirayi imatenga gwero monga cholowetsa, kuiwononga, ndikubwezeretsa mtengo wogwirizana ndi minda ya gwero.
  • BorrowGlobal imatenga adilesi ngati cholowa ndikubwezanso zonena za nthawi yapadera ya T yosindikizidwa (yake) ndi adilesiyo
  • & mut Coin ichi ndi ulalo kwa gwero ndalama

Kukhazikitsa withdraw_from_sender

Lowani mu Move - chilankhulo cha Facebook cha Libra blockchain

Ndondomeko iyi:

  1. Imapeza ulalo kuzinthu zapadera ndalama, yolumikizidwa ku akaunti ya wotumiza
  2. Imachepetsa mtengo wazinthu ndalama kudzera pa ulalo wa ndalama zomwe zaperekedwa
  3. Amapanga ndi kubweza chida chatsopano ndalama ndi ndalama zosinthidwa.

Nthawi za Nekotory:

  • gawo zikhoza kuyambitsidwa ndi aliyense, koma kuchotsa_from_sender ali ndi mwayi wopeza ndalama za akaunti yoyimbira
  • GetTxnSenderAddress zofanana ndi msg.sender mu Solidity
  • KukanaPokhapokha zofanana ndi amafuna mu Solidity. Ngati cheke ichi sichikuyenda bwino, ntchitoyo imayimitsidwa ndipo zosintha zonse zimabwezeretsedwa.
  • Paketi ndi njira yomangidwira yomwe imapanga chida chatsopano cha mtundu wa T.
  • Komanso Chotsani katundu, Paketi zitha kuyitanidwa mkati mwa gawo lomwe gwero likufotokozedwa T

Pomaliza

Tidasanthula mikhalidwe yayikulu ya chilankhulo cha Move, ndikuchiyerekeza ndi Ethereum, komanso tidazolowera mawu oyambira a zilembo. Pomaliza, ndikupangira kuti mufufuze pepala loyera loyambirira. Zimaphatikizapo zambiri zokhudzana ndi ndondomeko zamapangidwe a chinenero, komanso maulalo ambiri othandiza.

Source: www.habr.com

Kuwonjezera ndemanga