Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Ka mor'a moo, re tla sheba ka ho qaqileng litšobotsi tse ka sehloohong tsa puo ea Move le hore na ho na le phapang efe ea bohlokoa le puo e 'ngoe, e seng e ntse e tsebahala bakeng sa likonteraka tse bohlale - Solidity (sethaleng sa Ethereum). Litaba li thehiloe thutong ea pampiri e tšoeu e maqephe a 26 e fumanehang inthaneteng.

Selelekela

Move ke puo e sebetsang ea bytecode e sebelisetsoang ho sebelisana le basebelisi le likonteraka tse bohlale. Ka kopo hlokomela lintlha tse peli:

  1. Le hoja Move e le puo ea bytecode e ka etsoang ka ho toba ho Move Virtual Machine, Solidity (puo e bohlale ea konteraka Ethereum) ke puo ea boemo bo phahameng e qalang ho kenngoa ka bytecode pele e etsoa EVM (Ethereum Virtual Machine).
  2. Move e ka sebelisoa eseng feela ho kenya tšebetsong likonteraka tse bohlale, empa hape le bakeng sa litšebelisano tsa basebelisi (ho feta mona hamorao), ha Solidity e le puo e bohlale ea konteraka feela.


Phetolelo e entsoe ke sehlopha sa morero oa INDEX Protocol. Re se re fetoletse boitsebiso bo boholo bo hlalosang morero oa Libra, joale ke nako ea ho sheba puo ea Move ka botlalo haholoanyane. Phetolelo e entsoe ka kopanelo le Habrauser coolsiu

Tšobotsi ea bohlokoa ea Move ke bokhoni ba ho hlalosa mefuta ea lisebelisoa tsa moetlo ka semantics e ipapisitseng le menahano ea mola: sesebelisoa se ke ke sa kopitsoa kapa sa hlakoloa ka mokhoa o hlakileng, se tsamaisoa feela. Ka ts'ebetsong, sena se tšoana le bokhoni ba puo ea Rust. Boleng ba Rust bo ka abeloa lebitso le le leng feela ka nako. Ho abela boleng lebitsong le fapaneng ho etsa hore le se fumanehe tlasa lebitso le fetileng.

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Mohlala, snippet ea khoutu e latelang e tla etsa phoso: Tšebeliso ea boleng bo sisinyehileng 'x'. Lebaka ke hobane Rust ha e na pokello ea lithōle. Ha mefuta e fapaneng e tsoa sebakeng, mohopolo oo ba buang ka oona oa lokolloa. Ka mantsoe a bonolo, ho ka ba le "mong'a" a le mong feela oa data. Mohlaleng ona x ke mong'a pele ebe joale y e ba monga yona e motjha. Bala haholoanyane ka boitšoaro bona mona.

E emelang thepa ea dijithale litsamaisong tse bulehileng

Ho na le thepa e 'meli ea matlotlo eo ho leng thata ho e emela ka dijithale:

  • Rarity (Khaello, qalong - khaello). Palo ea thepa (emission) tsamaisong e tlameha ho laoloa. Ho pheta-pheta ha thepa e teng ho tlameha ho haneloa, 'me ho theha tse ncha ke mosebetsi o khethehileng.
  • Taolo ea phihlello. Motho ea nkang karolo tsamaisong o tlameha ho khona ho sireletsa thepa a sebelisa maano a taolo ea phihlello.

Litšobotsi tsena tse peli, tseo e leng tsa tlhaho bakeng sa thepa ea 'mele, le tsona li tlameha ho kenngoa ts'ebetsong bakeng sa lintho tsa digital haeba re batla ho li nka e le matlotlo. Ka mohlala, tšepe e sa tloaelehang e na le khaello ea tlhaho, 'me ke uena feela ea khonang ho e fumana (ho e tšoara ka matsoho, mohlala)' me u ka e rekisa kapa ua e sebelisa.

Ho bontša hore na re fihlile joang libakeng tsena tse peli, a re qaleng ka lipolelo tse latelang:

Tlhahiso #1: Molao o bonolo ka ho fetisisa ntle le khaello le taolo ea phihlello

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

  • G[K]:=n e bolela ho nchafatsa nomoro e fumanehang ka konopo К maemong a lefats'e a blockchain, ka moelelo o mocha n.
  • transaction ⟨Alice, 100⟩ ho bolela ho beha tekanyo ea akhaonto ea Alice ho 100.

Tharollo e ka holimo e na le mathata a 'maloa a tebileng:

  • Alice a ka fumana palo e sa lekanyetsoang ea lichelete tsa tšepe ka ho romella feela transaction ⟨Alice, 100⟩.
  • Lichelete tsa tšepe tseo Alice a li romellang Bob ha li na thuso, kaha Bob o ne a ka iketsetsa palo e sa lekanyetsoang ea lichelete tsa tšepe a sebelisa mokhoa o tšoanang.

Tlhahiso ea No. 2: Nahana ka khaello

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Hona joale re beha leihlo boemo e le hore palo ea lichelete tsa tšepe Ka bonyane e ne e lekana n pele ho transaction. Leha ho le joalo, ha sena se rarolla bothata ba khaello, ha ho na tlhahisoleseding mabapi le hore na ke mang ea ka romellang Alice lichelete tsa tšepe (hajoale, mang kapa mang a ka etsa sena, hafeela u sa tlōle molao oa moeli oa bongata).

Tlhahiso #3: Kopanya Khaello le Taolo ea phihlello

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Re rarolla bothata bona ka mokhoa oa ho saena oa dijithale netefatsa_sig pele a hlahloba tekanyo, ho bolelang hore Alice o sebelisa senotlolo sa hae sa lekunutu ho saena transaction le ho netefatsa hore ke eena mong'a lichelete tsa hae tsa tšepe.

Blockchain Programming Lipuo

Lipuo tse teng tsa blockchain li tobana le mathata a latelang (ao kaofela a ileng a rarolloa ho Move). Ka bomalimabe, mongoli oa sehlooho sena o bua feela ka Ethereum ka lipapiso tsa hae, kahoo li lokela ho nkoa feela tabeng ena. Ka mohlala, boholo ba tse latelang bo boetse bo rarolloa ho EOS)):

Kemelo e sa tobang ea matlotlo. Letlotlo le kengoa ka khouto ho sebelisoa nomoro e felletseng, empa palo kaofela ha e tšoane le letlotlo. Ha e le hantle, ha ho na mofuta kapa boleng bo emelang Bitcoin/Ether/<Any Coin>! Sena se etsa hore mananeo a ho ngola a sebelisang thepa a be thata le hore a be le liphoso. Lipaterone tse kang ho fetisetsa thepa ho/ho tloha lits'ebetsong kapa ho boloka thepa ka har'a meaho e hloka tšehetso e khethehileng ho tsoa puong.

Khaello ha e atolohe. Puo e emela letlotlo le le leng feela le haellang. Ho feta moo, mekhoa ea ho itšireletsa khahlanong le khaello e entsoe ka thata ka kotloloho ho semantics ea puo. Moqapi, haeba a batla ho theha letlotlo la moetlo, o tlameha ho laola ka hloko likarolo tsohle tsa sesebelisoa ka boeena. Tsena ke tsona mathata a nang le likonteraka tse bohlale tsa Ethereum.

Basebelisi ba fana ka thepa ea bona, li-tokens tsa ERC-20, ba sebelisa lipalo ho fumana boleng le phepelo eohle. Nako le nako ha ho etsoa li-tokens tse ncha, khoutu ea konteraka e bohlale e tlameha ho netefatsa ka boikemelo ho latela melao ea tlhahiso. Ho phaella moo, boemeli bo sa tobang ba thepa bo lebisa, maemong a mang, liphosong tse tebileng - ho pheta-pheta, ho sebelisa chelete habeli kapa esita le tahlehelo e feletseng ea thepa.

Ho hloka taolo ea phihlello e tenyetsehang. Leano le le leng feela la taolo ea phihlello le sebelisoang hajoale ke leano la ho saena le sebelisang mongolo oa asymmetric cryptography. Joalo ka ts'ireletso ea khaello, leano la taolo ea phihlello le kenelletse ka botebo ho semantics ea puo. Empa mokhoa oa ho atolosa puo ho lumella baetsi ba mananeo ho hlalosa maano a bona a ho laola phihlello hangata ke mosebetsi o boima haholo.

Sena ke 'nete hape ho Ethereum, moo likonteraka tse bohlale li se nang tšehetso ea tlhaho ea li-cryptography bakeng sa taolo ea phihlello. Basebelisi ba tlameha ho ipehela taolo ea phihlello, ka mohlala, ba sebelisa se feto-fetohang feela.

Le hoja ke le motsoalle e moholo oa Ethereum, ke lumela hore thepa ea thepa e lokela ho tšehetsoa ka tlhaho ke puo bakeng sa merero ea tšireletso. Ka ho khetheha, ho fetisetsa Ether ho konteraka e bohlale ho kenyelletsa ho romela ka matla, e leng se hlahisitseng sehlopha se secha sa likokoana-hloko tse tsejoang e le bofokoli ba ho kena hape. Ho romelloa ka matla mona ho bolela hore mokhoa oa ts'ebetso oa khoutu o tla khethoa ka nako ea ho sebetsa (matla) eseng ka nako ea ho bokella (static).

Kahoo, ho Solidity, ha konteraka A e bitsa mosebetsi ho konteraka B, konteraka B e ka tsamaisa khoutu e neng e sa rereloa ke moetsi oa konteraka A, e leng se ka etsang hore bofokodi ba ho kena hape (konteraka A ka phoso e sebetsa e le konteraka B ea ho ntša chelete pele li- balance account li hlile li ntšoa).

Tsamaisa Melaetsa ea Moralo oa Puo

Lisebelisoa tsa taelo ea pele

Ho bua ka boemo bo phahameng, tšebelisano pakeng tsa li-module / lisebelisoa / mekhoa ea puo ea Move e tšoana haholo le likamano pakeng tsa lihlopha / lintho le mekhoa ea lipuo tsa OOP.
Li-module ho Move li tšoana le likonteraka tse bohlale ho li-blockchains tse ling. Mojule o phatlalatsa mefuta ea lisebelisoa le lits'ebetso tse hlalosang melao ea ho theha, ho senya le ho nchafatsa lisebelisoa tse phatlalalitsoeng. Empa tsena tsohle ke likopano feela ("jargon”) ho Tsamaisa. Re tla hlalosa ntlha ena hamorao.

Ho feto-fetoha le maemo

Move e eketsa maemo ho Libra ka ho ngola. Ts'ebetso e 'ngoe le e' ngoe ea Libra e kenyelletsa script, eo ha e le hantle e leng mokhoa oa mantlha oa khoebo. Sengoliloeng se ka etsa ketso e le 'ngoe e boletsoeng, mohlala, ho lefa lenane le itseng la baamoheli, kapa ho sebelisa lisebelisoa tse ling hape - ka mohlala, ka ho letsetsa mokhoa oo ho oona ho hlakisitsoeng mabaka a akaretsang. Ke ka lebaka leo litokomane tsa Move transaction li fanang ka maemo a bonolo haholoanyane. Script e ka sebelisa mekhoa ea nako e le 'ngoe le ea ho pheta-pheta, ha Ethereum e ka phethahatsa feela mangolo a pheta-phetoang (ho bitsa mokhoa o le mong ka mokhoa o bohlale oa konteraka). Lebaka leo e bitsoang "reusable" ke hobane mesebetsi ea konteraka e bohlale e ka etsoa hangata. (Hlokomela: Taba mona e potile haholo. Ka lehlakoreng le leng, lingoloa tsa transaction ka mokhoa oa pseudo-bytecode le tsona li teng ho Bitcoin. Ka lehlakoreng le leng, joalo ka ha ke e utloisisa, Move e holisa puo ena, ha e le hantle, ho isa boemong ba puo e felletseng ea konteraka e bohlale.).

Tshireletso

Sebopeho se sebetsang sa Move ke bytecode, e leng, ka lehlakoreng le leng, puo ea boemo bo holimo ho feta puo ea kopano, empa boemo bo tlase ho feta khoutu ea mohloli. The bytecode e hlahlojoa ka nako ea ho matha (on-ketane) bakeng sa lisebelisoa, mefuta le ts'ireletso ea memori ho sebelisa verifier ea bytecode, ebe e etsoa ke mofetoleli. Mokhoa ona o lumella Move ho fana ka ts'ireletso ea khoutu ea mohloli, empa ntle le ts'ebetso ea ho bokella le tlhokahalo ea ho eketsa moqapi ho tsamaiso. Ho etsa Move a bytecode puo ke tharollo e ntle haholo. Ha ho hlokahale hore e bokelloe ho tloha mohloling, joalo ka ha ho le joalo ka Solidity, 'me ha ho hlokahale hore u tšoenyehe ka ho hlōleha ho ka khonehang kapa litlhaselo ho lisebelisoa tsa moqapi.

Netefatso

Re ikemiselitse ho etsa licheke ha bonolo kamoo ho ka khonehang, kaha sena sohle se etsoa ka ketane (hlokomela: Inthaneteng, nakong ea ts'ebetsong ea ts'ebetso e 'ngoe le e' ngoe, kahoo tieho leha e le efe e lebisa ho fokotseha ha marang-rang kaofela), leha ho le joalo, qalong moralo oa puo o se o loketse ho sebelisa lisebelisoa tsa netefatso tse sa fetoheng. Leha sena se le molemo ho feta, hajoale nts'etsopele ea lisebelisoa tsa netefatso (e le sesebelisoa se arohaneng) e chechisitsoe bakeng sa bokamoso, 'me hona joale ke netefatso e matla ea nako ea ho matha (on-ketane) e tšehetsoeng.

Ho itloaetsa

Li-module tsa Move li fana ka ts'ebeliso ea data le ho etsa hore ts'ebetso ea bohlokoa ea lisebelisoa e be sebakeng sa heno. Encapsulation e fanoeng ke module, e kopantsoeng le tšireletso e fanoeng ke tsamaiso ea mofuta oa Move, e tiisa hore thepa e behiloeng mefuteng ea li-module e ke ke ea tlōloa ka khoutu ka ntle ho module. Ona ke moralo o bohlale haholo oa ho nka karolo, ho bolelang hore data e ka hare ho konteraka e ka fetoloa feela ka har'a konteraka, eseng ho tsoa kantle.

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Suthisa tlhahlobo

Mohlala oa sengoloa sa transaction o bonts'a hore liketso tse lonya kapa tse sa tsotelleng tse entsoeng ke motho ea sebetsang ka ntle ho module li ke ke tsa beha ts'ireletso ea lisebelisoa tsa module kotsing. E latelang, re tla sheba mehlala ea hore na li-module, lisebelisoa le lits'ebetso li sebelisoa joang ho hlophisa Libra blockchain.

Litefiso tsa lithaka-ho-Lithaka

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Nomoro ea lichelete tsa tšepe tse boletsoeng ka bongata li tla fetisoa ho tloha ho chelete ea moromeli ho ea ho moamoheli.
Ho na le lintho tse 'maloa tse ncha mona (tse totobalitsoeng ka bofubelu):

  • 0x0: aterese ea akhaonto moo module e bolokiloeng teng
  • Currency: lebitso la mojule
  • chelete ea tšepe: mofuta oa lisebelisoa
  • Chelete ea tšepe e khutlisitsoeng ke mokhoa ona ke boleng ba lisebelisoa tseo mofuta oa tsona e leng 0x0.Currency.Coin
  • sutha(): boleng bo ka se sebelisoe hape
  • kopitsa (): boleng bo ka sebelisoa hamorao

Ha re shebe khoutu: mohatong oa pele, motho ea romelang o bitsa mokhoa o bitsoang ntša_ho_ho_moromeli ho tsoa ho mojule o bolokiloeng ho 0x0.Chelete. Mohatong oa bobeli, motho ea romelang o fetisetsa chelete ho moamoheli ka ho tsamaisa boleng ba chelete ea tšepe ka har'a mokhoa oa depositi oa module. 0x0.Chelete.

Mehlala e meraro ea liphoso tsa khoutu e tla hanoa ke licheke:
Fetola chelete ka ho fetola mohala tsamaisa(chelete) mabapi le kopi (chelete). Lisebelisoa li ka tsamaisoa feela. Ho leka ho qopitsa bongata ba mohlodi (mohlala, ka ho letsa kopi (chelete) mohlaleng o ka holimo) ho tla baka phoso nakong ea netefatso ea bytecode.

Tšebeliso ea lichelete hape ka ho hlakisa tsamaisa(chelete) habeli . Ho eketsa mola 0x0.Currency.deposit (kopi (mofi_ba bang_ba bang), tsamaisa (khoine)) mohlala, se ka holimo se tla lumella motho ea rometseng ho "sebelisa" lichelete tsa tšepe habeli - lekhetlo la pele le ea lefshoang, 'me la bobeli ka motho_e mong_mofe. Ena ke boitšoaro bo sa rateheng bo ke keng ba khoneha ka thepa ea nama. Ka lehlohonolo, Move e tla hana lenaneo lena.

Tahlehelo ea lichelete ka lebaka la ho hana tsamaisa(chelete). Haeba o sa suthise mohlodi (mohlala, ka ho phumula mohala o nang le tsamaisa(chelete)), ho tla lahleloa phoso ea netefatso ea bytecode. Sena se sireletsa baetsi ba mananeo a Move ho lahleheloa ke chelete ka phoso kapa ka lonya.

Mojule oa chelete

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Ak'haonte e 'ngoe le e' ngoe e ka ba le li-module tse 0 kapa ho feta (tse bonts'itsoeng e le li-rectangles) le boleng bo le bong kapa ho feta (bo bonts'itsoeng e le li-cylinders). Ka mohlala, akhaonte ho 0x0 e na le module 0x0.Chelete le boleng ba mofuta oa lisebelisoa 0x0.Currency.Coin. Akhaonto atereseng 0x1 e na le lisebelisoa tse peli le mojule o le mong; Akhaonto atereseng 0x2 e na le li-module tse peli le boleng bo le bong ba mohloli.

Ka linako tse ling:

  • Sengoloa sa transaction ke atomic - e ka etsoa ka botlalo kapa che.
  • Mojule ke karolo ea khoutu e phetseng nako e telele e fumanehang lefatšeng ka bophara.
  • Boemo ba lefats'e bo hlophisitsoe e le tafole ea hash, moo senotlolo e leng aterese ea akhaonto
  • Liakhaonto li ka se be le boleng bo fetang bo le bong ba mohloli oa mofuta o fanoeng 'me e se ke ea feta module e le 'ngoe e nang le lebitso le fanoeng (account ho 0x0 ha e khone ho ba le sesebelisoa se eketsehileng 0x0.Currency.Coin kapa mojule o mong o bitsoang Currency)
  • Aterese ea module e phatlalalitsoeng ke karolo ea mofuta (0x0.Currency.Coin и 0x1.Currency.Coin ke mefuta e fapaneng e ke keng ea sebelisoa ka mokhoa o fapaneng)
  • Baetsi ba mananeo ba ka boloka mehlala e mengata ea mofuta ona oa lisebelisoa akhaonteng ka ho hlalosa mohloli oa bona oa tloaelo - (mohlodi TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • U ka bua ka sesebelisoa ka lebitso la sona ntle le likhohlano, mohlala u ka bua ka lisebelisoa tse peli u sebelisa TwoCoins.c1 и TwoCoins.c2.

Phatlalatso ea lisebelisoa tsa tšepe

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain
Mojule o reheletsoeng Currency le mofuta oa lisebelisoa o bitsoang chelete ea tšepe

Ka linako tse ling:

  • chelete ea tšepe ke sebopeho se nang le lebala le le leng la mofuta u64 (64-bit palo e saennoang)
  • Mekhoa ea li-module feela Currency e ka theha kapa ea senya boleng ba mofuta chelete ea tšepe.
  • Li-module tse ling le lingoloa li ka ngola feela kapa tsa supa tšimo ea boleng ka mekhoa ea sechaba e fanoeng ke mojule.

Thekiso ea deposit

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Mokhoa ona o amohela mohlodi chelete ea tšepe joalo ka ho kenya letsoho ebe o e kopanya le mohlodi chelete ea tšepebolokoa akhaonteng ea moamoheli:

  1. Ho senya chelete ea ho kenya chelete ea tšepe le ho rekota boleng ba eona.
  2. Ho fumana sehokelo ho sesebelisoa se ikhethileng sa Coin se bolokiloeng akhaonteng ea moamoheli.
  3. Ho fetola boleng ba palo ea Lichelete tsa tšepe ka boleng bo fetisitsoeng ho parameter ha u bitsa mokhoa ona.

Ka linako tse ling:

  • Hlakola, BorrowGlobal - mekhoa e hahiloeng
  • Hlakola Ena ke eona feela tsela ea ho hlakola mohloli oa mofuta oa T. Ts'ebetso e nka sesebelisoa e le ho kenya letsoho, ea e senya, 'me e khutlisetsa boleng bo amanang le masimo a mohlodi.
  • BorrowGlobal e nka aterese e le ho kenya letsoho 'me e khutlisa tšupiso ea ketsahalo e ikhethang ea T e hatisitsoeng (ea) ke aterese eo
  • &mut Coin sena ke sehokelo sa mohlodi chelete ea tšepe

Ho kenngwa tshebetsong ha withdraw_from_sender

Ikakhele ka setotsoana ho Move - puo ea mananeo a Facebook ea Libra blockchain

Mokhoa ona:

  1. E fumana sehokelo sa sesebelisoa se ikhethileng chelete ea tšepe, e amanang le akhaonto ea motho ea e rometseng
  2. E fokotsa boleng ba sesebelisoa chelete ea tšepe ka sehokelo sa chelete e boletsoeng
  3. E theha le ho khutlisa sesebelisoa se secha chelete ea tšepe ka tekanyo e ntlafalitsoeng.

Ka linako tse ling:

  • depositi e ka bakoa ke mang kapa mang, empa ntša_ho_ho_moromeli e na le phihlello ea lichelete tsa tšepe tsa ak'haonte ea mohala
  • GetTxnSenderAddress tšoanang le msg.moromeli ho Solidity
  • RejectUnless tšoanang le hloka ho Solidity. Haeba cheke ena e hloleha, transaction e emisoa 'me liphetoho tsohle li khutlisetsoa morao.
  • Paka hape ke ts'ebetso e hahelletsoeng ka hare e hlahisang mohloli o mocha oa mofuta oa T.
  • Moho le Hlakola, Paka e ka bitsoa feela ka hare ho module moo mohloli o hlalosoang T

fihlela qeto e

Re ile ra hlahloba litšobotsi tse ka sehloohong tsa puo ea Move, ra e bapisa le Ethereum, hape ra tloaelana le syntax ea motheo ea mangolo. Qetellong, ke khothaletsa haholo ho hlahloba pampiri e tšoeu ea pele. E kenyelletsa lintlha tse ngata mabapi le melao-motheo ea moralo oa puo ea lenaneo, hammoho le lihokelo tse ngata tsa bohlokoa.

Source: www.habr.com

Eketsa ka tlhaloso