Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Deinceps singillatim considerabimus praecipuas linguae Movendi proprietates et quaenam sint eius differentiae praecipuae cum alia, iam populari lingua pro contractibus captiosis - Soliditatis (in Ethereo tribunali). Materia fundatur in studio instrumenti instrumenti instrumenti instrumenti ad tempus 26-page.

introduction

Movere est lingua exsecutabilis bytecode quae ad user transactions et contractus captiosus adhibetur. Quaeso nota duo puncta:

  1. Dum Movere est lingua bytecode quae directe supplicium in Movere virtualis machinae potest, Soliditas (contractus linguae Etherei dolor) est altioris gradus linguae quae prius in bytecode compilata est quam in EVM (Ethereum Virtualis Machina educitur).
  2. Movere possunt non solum ad efficiendos contractus captiosos, sed etiam ad consuetudinem negotiorum (de hoc recentiore), dum soliditas est contractus callidi-solum linguae.


Versio facta est a Indice Protocollo in quadrigis project. Iam translati sumus magna materia describens in Libra projectnunc tempus est paulo subtilius Movere linguam intueri. translatio coniunctim cum Habrauser facta est coolsiu*

Praecipua notae Movendi facultas est facultates definiendi rationes subsidiorum cum semanticis secundum logicam linearem: subsidium nusquam exstingui vel implicite deleri potest, modo movetur. Munere hoc simile est facultatibus Rusticae linguae. Valores in Rust nonnisi uni temporis nomine assignari possunt. Valorem diverso nomine assignans sub praecedente nomine eam facit unavailable.

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Ad exemplum sequentis codicis interpolatio errorem coniecit; Usus pretii moti 'x'. Hoc est, quia nulla quisquiliarum collectione in Rust. Cum variabiles extra ambitum egrediuntur, memoria etiam liberatur. Simpliciter, unus tantum "dominus" notitiarum esse potest. In hoc exemplo x et dominus est originale y fit novus dominus. More de hoc Read more here.

Repraesentatio bonorum digitalium in aperta systemata

Duae sunt proprietates bonorum corporalium quae difficile sunt ad digitally repraesentandum;

  • haut promptis (inopia, originally scarcity). Numerus bonorum (emissio) in systemate regi debet. Duplicatio bonorum existentium prohibenda est, et novas creandi operatio privilegiata est.
  • accessum imperium... Systema particeps debet tueri bona tueri accessum ad rationes agendi.

Hae duae notae, quae naturalibus bonis corporis sunt, perficiantur pro rebus digitalibus, si eas pro bonis considerare velimus. Exempli gratia, metallum rarum - inopiam naturalem habet, et solus accessus ad illud (in manibus tuis tenens, verbi gratia) et vendere vel expendere potes.

Ad illustrandum quomodo has duas proprietates pervenimus, initium faciamus cum sequentibus sententiis;

Suadentur # I: Regula simplicissima sine inopia et accessu Imperium

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

  • G [K]: = n significat an update ad numerum clavem accessibilis К in global statu scandali, cum nova significatione n.
  • transaction Alice, 100⟩ significat occasum Alicia propter stateram ad C.

Solutio praedicta plures difficultates maioris momenti habet:

  • Alicia infinitam numerum nummorum recipere potest simpliciter mittens transaction ⟨Alice, 100⟩.
  • Nummi Alice ad Bob mittit inutiles sunt, ut Bob se mittere posset infinitis nummis eadem arte utentibus.

Suggestion # 2: Ratione defectuum habita

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Nunc condicionem vigilantiam sumus ut numerus nummorum Ka saltem aequalis n antequam trans- acta. Tamen, dum hanc quaestionem de inopia solvit, nulla notitia est de quis nummos Aliciae mittere potest (nam nunc, quivis hoc facere potest, summa est regula limitandi quantitatem non frangere).

Rogatio # 3: Coniungendo inopiam et accessum imperium

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Hanc quaestionem solvemus cum mechanism digitale subscriptio probably_sig antequam trutinam inprimatur, quod significat Alicia sua clavem privatam ad rem gestam subscribendam adhibet et confirmet eam esse possessorem nummorum suorum.

Claustrum programmandi linguarum

Exsistentes linguae clausulae faciem sequentes difficultates (earum omnes in Move solvuntur (nota: Proh dolor, auctor articulum tantum appellat Ethereum in suis comparativis, quae hoc loco tantum valere valet. Exempli causa, plerique sequuntur etiam in EOS resolvi.));

Indirecta repraesentatio bonorum. Integer dignissim sit amet tortor sed dignissim. Re vera nullum genus aut valorem BitCoin/Ether/<Any Coin> repraesentans! Inde programmata scribebat quae bonis difficilibus et proclivioribus utuntur. Exemplaria ut bona praetereuntes ad/e rationibus vel bonis thesauris in structuris specialem subsidium a lingua requirunt.

Defectus non expandable... Lingua una tantum vix dignissim repraesentat. Praeterea remedia contra inopiam paene protinus in semanticis ipsius linguae sunt. Elit, si mos res creare vult, diligenter moderari debet omnes rationes subsidii ipsius. Haec sunt prorsus problemata Etherei captiosi contractuum.

Users bona sua edunt, signa ERC-20, integri utentes ad tum valorem tum summam copiam determinant. Quoties nova signa creantur, codicem captiosum contractum independenter comprobare debet cum obsequio regulae emissionis. Praeterea indirecta propositio bonorum ducit, in quibusdam casibus ad graves errores - duplicationem, duplicem impendio vel etiam plenam bonorum iacturam.

Nullam accessum flexibile imperium... Sola ratio accessus ad consilium in usu hodie est schema subscriptio utens cryptographia asymmetrica. Sicut inopia praesidii, accessus moderandi rationes in semantics linguae penitus haerent. Sed quomodo linguam prorogare permittant programmatores ad definiendum accessum suum in agendis potestate, saepe valde insidiosum est negotium.

Hoc etiam verum est in Ethereo, ubi captiosus contractus cryptographiae indigenae subsidium non habent accessus ad imperium. Developers manually accessum potestatem praebere debet, exempli gratia, cum determinatione unigenito.

Etsi magnus ventilabrum Etherei sum, credo dignissim proprietates linguae securitatis causa nativo debere sustentari. Praesertim, transferens Aether ad dolorem contractum celeritatem dynamicam implicat, quae novum genus cimicum notarum re-intransitus vulnerabilitates induxit. Litterae dynamicae hic significat exsecutionem logicam Codicis potius quam tempore statice (dynamico) determinari.

Ita, in soliditate, cum contractus A munus in contractu B vocat, contractus B decurrere potest codicem, qui ab elit contracti A non intendebatur, quod evenire potest. rursus ingressum vulnerabilities (contract A per accidens agit ut contractus B ad pecuniam retrahendam antequam staterae rationis actu deducantur).

Movere Language Design Fundamenta

Primo ordine facultates

Ad altam, commercium modulorum / facultatum / agendi in lingua Movere simillima est relationi inter classes / res et modos in linguis OOP.
Movere moduli similes sunt contractibus captiosis in aliis impedimentis. Modulus declarat resource genera et rationes, quae regulas definiunt facultates declarandas creandi, destruendi et augendi. Sed haec omnia iusta sunt conventiones ("particularibus infimis") Movere. Hoc paulo post illustrabimus.

flexibilitate

Movere flexibilitatem addit per scripturam Librae. Omnis transactionis in Libra scriptum includit, quod essentialiter nucleus ratio rei gestae est. Scriptum praestare potest vel unam actionem determinatam, exempli gratia, solutiones ad certum album recipientium, vel alias facultates reuse - exempli gratia, vocando processum in quo logica generalis specificatur. Haec causa est, quamobrem Movere scriptorum transactionem maiorem flexibilitatem praebent. Scriptum uno tempore et ad mores iterando uti potest, dum Ethereum solum scripta facere iterabilem (vocare modum unum in modum contractionis acri). Causa dicitur "reusable" est quia functiones captiosus contractus multipliciter exsecutioni mandari potest. (nota: Hic punctus est valde subtilis. Ex altera parte, res gestae in forma pseudo-bytecode scripta etiam in Bitcoin existunt. Ex altera parte, sicut illud intellego, Movere hanc linguam dilatare, re vera ad ambitum linguae ophthalmiae plenae doloris contractae.).

salutem

Forma exsecutabilis Movere bytecode est, quae, ex una parte, altiori gradu linguae quam linguae conventus, sed gradu inferiori quam fons codicis est. In bytecode in cursu temporis (in-catenam) pro opibus, speciebus et memoria salutis utens uerificante bytecode cohibetur, ac deinde ab interprete exsecutus est. Accessus hic permittit Movere ad securitatem codicis fonte praebendam, sed sine processu compilation et necessitate compilator rationi addere. Faciens Movere linguam bytecode vere bona solutio est. Non necesse est ut ex fonte conficiantur, sicut in Soliditate, nec curandum est de defectibus possibilibus vel impugnationibus infrastructuram compilatoris.

verifiability

Impedimenta praestanda quam facillime intendimus, cum haec omnia in catenis aguntur (nota: online, in executione uniuscuiusque negotii, ita mora nulla ducit ad tarditatem totius retis) initio autem consilium linguarum promptum est instrumentis verificationis stabilibus uti. Etsi hoc potius est, nunc progressio instrumentorum verificationis (sicut a toolkit separatum) in futurum prorogatum est, et nunc tantum verificationis dynamica in tempore (in-cathena) sustentatur.

modularity

Modi moventes abstractionem datam praebent et operationes criticas in facultates locales faciunt. Encapsulationis moduli comparata, coniuncta cum praesidio a Motu systemate formata, efficit ut proprietates in modulorum speciebus positas in codice extra modulum violari non possint. Haec est cogitatio abstractionis bene cogitatae, quae significat datam intra contractum solum intra contractum ambitum mutari posse, non autem extrinsecus.

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Movere overview

Rei scriptionis exemplum demonstrat actiones malitiosas vel neglegentes ab programmatore extra modulum securitatem instrumenti instrumenti componi non posse. Deinde exempla spectabimus quomodo modulorum, facultatum et rationum in Libra clausura programma adhibeantur.

Pari-ad-parem praestationibus

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Nummorum numerus in quantitate descriptorum ex libra mittentis ad recipientem transferetur.
Pauca hic nova sunt (highlighted in red);

  • 0x0: Inscriptio rationis ubi modulus reponitur
  • MonetΓ¦: Nomen moduli
  • Coin: Resource type
  • Nummi valor ab procedendo redditus est valor pretii typus 0x0.Currency.Coin
  • movere (); Valorem non possunt iterum
  • effingo (); Valorem potest esse postea

Parse signum: in primo gradu missor modum procedendi nominat withdraw_from_sender ex modulus condita 0x0.Currency. In secundo gradu mittens transfert pecunias recipienti movendo valorem nummorum resource in modum depositi moduli 0x0.Currency.

Tria hic exempla errorum in codice reicienda sunt a compescendo;
Duplicata pecunia mutando vocationem movere (denarium) on effingo (denarium). Resources nonnisi moueri possunt. Conatur duplicare quantitatem subsidii (exempli gratia vocando effingo (denarium) in exemplo supra) erratum evenit in sanatione bytecode.

I reuse de pecunia per speciem movere (denarium) alterum . Addito linea 0x0.Currency.deposit (exemplum (some_other_payee), moventur (denarium)) exempli gratia, supra mittenti bis denarios perpendet, primum cum stipendio, et secundo cum stipendio. some_other_payee. Hoc est inconveniens morum quod non potest cum dignissim corporis. Feliciter, Movere hoc propositum respuet.

Damna pecunia ex recusatione movere (denarium). Si subsidium non moveas (exempli gratia, delendo lineam continens movere (denarium)) error verificationis bytecode proicietur. Hoc munit programmatores Movere ex pecuniarum iactura accidentali vel malitiosa.

Monetæ moduli

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Quaelibet ratio continere potest 0 vel plures modulos (pro rectangula demonstratos) et unum vel plures valores resource (as cylindrici ostensos). Exempli gratia, ratio at 0x0 modulus continet 0x0.Currency et ad valorem resource generis 0x0.Currency.Coin. Rationem ad electronica 0x1 duae facultates et unus modulus; Rationem ad electronica 0x2 habet duos modulos et unum valorem resource.

Nekotory momenta:

  • Scriptum transactionis est atomicus - vel fit perfecte vel nullo modo.
  • Modulus est fragmentum vivacis codicis quod globally pervium est.
  • Status globalis structus est ut mensa fascia, in qua clavis est ratio electronica
  • Rationes continere non possunt plus quam unam valorem resource unius generis dati et non plus quam unum moduli nomine dato (ad rationem 0x0 non habet an additional resource 0x0.Currency.Coin aut alius moduli nomine MonetΓ¦)
  • Oratio moduli declarati pars est generis (0x0.Currency.Coin ΠΈ 0x1.Currency.Coin sunt species separatae non possunt inuicem)
  • Programmatores multiplices huius generis subsidii exempla in ratione condere possunt eorumque morem resource definiendo.resource TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • Auxilium nomine suo sine conflictu referre potes, exempli gratia, ad duas facultates utens TwoCoins.c1 ΠΈ TwoCoins.c2.

Coin resource denuntiatio

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum
OMNIBUS nomine Monetæ et a resource genus nomine Coin

Nekotory momenta:

  • Coin est structuram uno agro generis u64 (64-bit integer unsigned)
  • Modulus agendi modo MonetΓ¦ potest creare seu perdere ipsius generis Coin.
  • Ceteri moduli et scripta solum scribere vel referre possunt agrum valorem per rationes publicas a modulo provisum.

Venditionis depositi

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Hoc modo accipit resource Coin ut initus et componit cum eopia Coincondita causa est recipiens:

  1. Nummum input resource destruens et eius valorem notans.
  2. Recipere nexum cum subsidio nummo unicae in re recipientis repositam.
  3. Valor numeri nummorum mutans valorem in parametro transiit cum modum procedendi appellans.

Nekotory momenta:

  • Unpack, BorrowGlobal - constructum-in processibus
  • Unpack Haec unicus modus est ad deletionem generis T. Substantiam sumit procedendi input, destruit, et valorem consociata cum agris subsidiorum reddit.
  • BorrowGlobal oratio initus sumit et redit ad instanciam singularem ipsius T editae (possessoris) ab illa inscriptione
  • &mut Coin hoc est vinculum ad resource Coin

Exsequendam withdraw_from_sender

Dive in Move - Facebook scriptor Libra impedimentum programmandi linguarum

Hoc modo:

  1. Vinculum accipit a unique resource Coin, Mittens de causa coniunctum
  2. Deficit valorem resource Coin per nexum ad certum numerum denariorum
  3. Creat et redit novum resource Coin cum updated statera.

Nekotory momenta:

  • Depositum potest causari ab aliquo, sed withdraw_from_sender tantum habet aditum ad rationem vocationis nummos
  • GetTxnSenderAddress similis msg.sender in soliditate
  • RejectUnless similis require in soliditate. Si haec perscriptio deficit, transactio cessat et omnes mutationes revolvuntur.
  • Pack est etiam in instrumento constructo quod novum genus T opum creat.
  • Tum Unpack, Pack intra modulum dici non potest, ubi resource describitur T

conclusio,

Notas praecipuas linguae Moventis perspeximus, eam cum Ethereo comparavimus, ac etiam cum fundamentali scriptorum syntaxi familiariter facta est. Denique ego valde commendamus annotando originale charta alba. Multum detail continet circa principia programmandi consiliorum linguarum, necnon multos nexus utiles.

Source: www.habr.com