ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಮುಂದೆ, ನಾವು ಮೂವ್ ಭಾಷೆಯ ಮುಖ್ಯ ಗುಣಲಕ್ಷಣಗಳನ್ನು ವಿವರವಾಗಿ ಪರಿಗಣಿಸುತ್ತೇವೆ ಮತ್ತು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳಿಗೆ ಈಗಾಗಲೇ ಜನಪ್ರಿಯವಾಗಿರುವ ಇನ್ನೊಂದು ಭಾಷೆಯೊಂದಿಗೆ ಅದರ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸಗಳು ಯಾವುವು - ಸಾಲಿಡಿಟಿ (ಎಥೆರಿಯಮ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿ). ಲಭ್ಯವಿರುವ ಆನ್‌ಲೈನ್ 26-ಪುಟಗಳ ಶ್ವೇತಪತ್ರದ ಅಧ್ಯಯನವನ್ನು ಈ ವಸ್ತುವು ಆಧರಿಸಿದೆ.

ಪರಿಚಯ

ಮೂವ್ ಎನ್ನುವುದು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಬೈಟ್‌ಕೋಡ್ ಭಾಷೆಯಾಗಿದ್ದು ಅದನ್ನು ಬಳಕೆದಾರರ ವಹಿವಾಟುಗಳು ಮತ್ತು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ದಯವಿಟ್ಟು ಎರಡು ಅಂಶಗಳನ್ನು ಗಮನಿಸಿ:

  1. ಮೂವ್ ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ನೇರವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಒಂದು ಬೈಟ್ಕೋಡ್ ಭಾಷೆಯಾಗಿದ್ದರೂ, ಸಾಲಿಡಿಟಿ (Ethereum ನ ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಲಾಂಗ್ವೇಜ್) ಒಂದು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಯಾಗಿದ್ದು ಇದನ್ನು EVM (Ethereum Virtual Machine) ನಲ್ಲಿ ಮೊದಲು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು ಬೈಟ್ಕೋಡ್ಗೆ ಸಂಕಲಿಸಲಾಗಿದೆ.
  2. ಚಲನೆಯನ್ನು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮಾತ್ರವಲ್ಲದೆ ಕಸ್ಟಮ್ ವಹಿವಾಟುಗಳಿಗೂ ಬಳಸಬಹುದು (ಇದರ ನಂತರ ಇನ್ನಷ್ಟು), ಸಾಲಿಡಿಟಿ ಒಂದು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದ-ಮಾತ್ರ ಭಾಷೆಯಾಗಿದೆ.


ಅನುವಾದವನ್ನು INDEX ಪ್ರೋಟೋಕಾಲ್ ಪ್ರಾಜೆಕ್ಟ್ ತಂಡವು ನಡೆಸಿತು. ನಾವು ಈಗಾಗಲೇ ಅನುವಾದಿಸಿದ್ದೇವೆ ತುಲಾ ಯೋಜನೆಯನ್ನು ವಿವರಿಸುವ ದೊಡ್ಡ ವಸ್ತು, ಈಗ ಮೂವ್ ಭಾಷೆಯನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ವಿವರವಾಗಿ ನೋಡುವ ಸಮಯ ಬಂದಿದೆ. ಅನುವಾದವನ್ನು ಹಬ್ರೌಸರ್ ಜೊತೆಯಲ್ಲಿ ಜಂಟಿಯಾಗಿ ನಡೆಸಲಾಯಿತು ಕೂಲ್ಸಿಯು

ಮೂವ್‌ನ ಪ್ರಮುಖ ಲಕ್ಷಣವೆಂದರೆ ರೇಖೀಯ ತರ್ಕದ ಆಧಾರದ ಮೇಲೆ ಅರ್ಥಶಾಸ್ತ್ರದೊಂದಿಗೆ ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸಾಮರ್ಥ್ಯ: ಸಂಪನ್ಮೂಲವನ್ನು ಎಂದಿಗೂ ನಕಲಿಸಲಾಗುವುದಿಲ್ಲ ಅಥವಾ ಸೂಚ್ಯವಾಗಿ ಅಳಿಸಲಾಗುವುದಿಲ್ಲ, ಕೇವಲ ಸರಿಸಲಾಗುತ್ತದೆ. ಕ್ರಿಯಾತ್ಮಕವಾಗಿ, ಇದು ರಸ್ಟ್ ಭಾಷೆಯ ಸಾಮರ್ಥ್ಯಗಳಿಗೆ ಹೋಲುತ್ತದೆ. ರಸ್ಟ್‌ನಲ್ಲಿನ ಮೌಲ್ಯಗಳನ್ನು ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಹೆಸರಿಗೆ ಮಾತ್ರ ನಿಯೋಜಿಸಬಹುದು. ಬೇರೊಂದು ಹೆಸರಿಗೆ ಮೌಲ್ಯವನ್ನು ನಿಯೋಜಿಸುವುದರಿಂದ ಅದು ಹಿಂದಿನ ಹೆಸರಿನಲ್ಲಿ ಲಭ್ಯವಿರುವುದಿಲ್ಲ.

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಉದಾಹರಣೆಗೆ, ಕೆಳಗಿನ ಕೋಡ್ ತುಣುಕು ದೋಷವನ್ನು ಎಸೆಯುತ್ತದೆ: ಸರಿಸಿದ ಮೌಲ್ಯ 'x' ಬಳಕೆ. ಇದಕ್ಕೆ ಕಾರಣ ರಸ್ಟ್ ನಲ್ಲಿ ಯಾವುದೇ ಕಸ ಸಂಗ್ರಹವಿಲ್ಲ. ಅಸ್ಥಿರಗಳು ವ್ಯಾಪ್ತಿಯಿಂದ ಹೊರಬಂದಾಗ, ಅವರು ಉಲ್ಲೇಖಿಸುವ ಸ್ಮರಣೆಯನ್ನು ಮುಕ್ತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸರಳವಾಗಿ ಹೇಳುವುದಾದರೆ, ಡೇಟಾದ ಒಂದು "ಮಾಲೀಕರು" ಮಾತ್ರ ಇರಬಹುದು. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ x ಮೂಲ ಮಾಲೀಕರು ಮತ್ತು ನಂತರ y ಹೊಸ ಮಾಲೀಕನಾಗುತ್ತಾನೆ. ಈ ನಡವಳಿಕೆಯ ಬಗ್ಗೆ ಇಲ್ಲಿ ಇನ್ನಷ್ಟು ಓದಿ.

ತೆರೆದ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಡಿಜಿಟಲ್ ಸ್ವತ್ತುಗಳ ಪ್ರಾತಿನಿಧ್ಯ

ಭೌತಿಕ ಸ್ವತ್ತುಗಳ ಎರಡು ಗುಣಲಕ್ಷಣಗಳು ಡಿಜಿಟಲ್ ಆಗಿ ಪ್ರತಿನಿಧಿಸಲು ಕಷ್ಟ:

  • ವಿರಳತೆ (ಕೊರತೆ, ಮೂಲತಃ ಕೊರತೆ). ವ್ಯವಸ್ಥೆಯಲ್ಲಿನ ಸ್ವತ್ತುಗಳ ಸಂಖ್ಯೆಯನ್ನು (ಹೊರಸೂಸುವಿಕೆ) ನಿಯಂತ್ರಿಸಬೇಕು. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸ್ವತ್ತುಗಳ ನಕಲು ಮಾಡುವುದನ್ನು ನಿಷೇಧಿಸಬೇಕು, ಮತ್ತು ಹೊಸದನ್ನು ರಚಿಸುವುದು ಒಂದು ವಿಶೇಷ ಕಾರ್ಯಾಚರಣೆಯಾಗಿದೆ.
  • ಪ್ರವೇಶ ನಿಯಂತ್ರಣ... ಸಿಸ್ಟಮ್ ಭಾಗವಹಿಸುವವರು ಪ್ರವೇಶ ನಿಯಂತ್ರಣ ನೀತಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ವತ್ತುಗಳನ್ನು ರಕ್ಷಿಸಲು ಶಕ್ತರಾಗಿರಬೇಕು.

ಭೌತಿಕ ಸ್ವತ್ತುಗಳಿಗೆ ಸ್ವಾಭಾವಿಕವಾದ ಈ ಎರಡು ಗುಣಲಕ್ಷಣಗಳು, ನಾವು ಅವುಗಳನ್ನು ಸ್ವತ್ತುಗಳೆಂದು ಪರಿಗಣಿಸಬೇಕಾದರೆ ಡಿಜಿಟಲ್ ವಸ್ತುಗಳಿಗೆ ಅಳವಡಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಅಪರೂಪದ ಲೋಹವು ನೈಸರ್ಗಿಕ ಕೊರತೆಯನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ನೀವು ಮಾತ್ರ ಅದನ್ನು ಪ್ರವೇಶಿಸಬಹುದು (ಉದಾಹರಣೆಗೆ ಅದನ್ನು ನಿಮ್ಮ ಕೈಯಲ್ಲಿ ಹಿಡಿದುಕೊಳ್ಳಿ) ಮತ್ತು ನೀವು ಅದನ್ನು ಮಾರಾಟ ಮಾಡಬಹುದು ಅಥವಾ ಖರ್ಚು ಮಾಡಬಹುದು.

ಈ ಎರಡು ಗುಣಲಕ್ಷಣಗಳಿಗೆ ನಾವು ಹೇಗೆ ಬಂದೆವು ಎಂಬುದನ್ನು ವಿವರಿಸಲು, ಈ ಕೆಳಗಿನ ವಾಕ್ಯಗಳೊಂದಿಗೆ ಆರಂಭಿಸೋಣ:

ಸಲಹೆ # 1: ಕೊರತೆ ಮತ್ತು ಪ್ರವೇಶ ನಿಯಂತ್ರಣವಿಲ್ಲದ ಸರಳ ನಿಯಮ

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

  • ಜಿ [ಕೆ]: = ಎನ್ ಕೀಲಿಯಿಂದ ಪ್ರವೇಶಿಸಬಹುದಾದ ಸಂಖ್ಯೆಗೆ ನವೀಕರಣವನ್ನು ಸೂಚಿಸುತ್ತದೆ К ಬ್ಲಾಕ್‌ಚೈನ್‌ನ ಜಾಗತಿಕ ಸ್ಥಿತಿಯಲ್ಲಿ, ಹೊಸ ಅರ್ಥದೊಂದಿಗೆ n.
  • ವಹಿವಾಟು ⟨ಆಲಿಸ್, 100⟩ ಅಂದರೆ ಆಲಿಸ್ ಖಾತೆಯ ಬ್ಯಾಲೆನ್ಸ್ ಅನ್ನು 100 ಕ್ಕೆ ಹೊಂದಿಸುವುದು.

ಮೇಲಿನ ಪರಿಹಾರವು ಹಲವಾರು ಪ್ರಮುಖ ಸಮಸ್ಯೆಗಳನ್ನು ಹೊಂದಿದೆ:

  • ಆಲಿಸ್ ಸರಳವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ ಅನಿಯಮಿತ ಸಂಖ್ಯೆಯ ನಾಣ್ಯಗಳನ್ನು ಪಡೆಯಬಹುದು ವಹಿವಾಟು ⟨ಆಲಿಸ್, 100⟩.
  • ಆಲಿಸ್ ಬಾಬ್‌ಗೆ ಕಳುಹಿಸುವ ನಾಣ್ಯಗಳು ನಿಷ್ಪ್ರಯೋಜಕವಾಗಿವೆ, ಏಕೆಂದರೆ ಬಾಬ್ ಅದೇ ತಂತ್ರವನ್ನು ಬಳಸಿ ಅನಿಯಮಿತ ಸಂಖ್ಯೆಯ ನಾಣ್ಯಗಳನ್ನು ಕಳುಹಿಸಬಹುದು.

ಸಲಹೆ # 2: ಕೊರತೆಯನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವುದು

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಈಗ ನಾವು ಪರಿಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತಿದ್ದೇವೆ ಆದ್ದರಿಂದ ನಾಣ್ಯಗಳ ಸಂಖ್ಯೆ Ka ಕನಿಷ್ಠ ಸಮಾನವಾಗಿತ್ತು n ವರ್ಗಾವಣೆ ವಹಿವಾಟಿನ ಮೊದಲು. ಆದಾಗ್ಯೂ, ಇದು ಕೊರತೆಯ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವಾಗ, ಆಲಿಸ್ ನಾಣ್ಯಗಳನ್ನು ಯಾರು ಕಳುಹಿಸಬಹುದು ಎಂಬುದರ ಕುರಿತು ಯಾವುದೇ ಮಾಹಿತಿಯಿಲ್ಲ (ಸದ್ಯಕ್ಕೆ, ಯಾರಾದರೂ ಇದನ್ನು ಮಾಡಬಹುದು, ಮುಖ್ಯ ವಿಷಯವೆಂದರೆ ಮೊತ್ತವನ್ನು ಸೀಮಿತಗೊಳಿಸುವ ನಿಯಮವನ್ನು ಉಲ್ಲಂಘಿಸಬಾರದು).

ಪ್ರಸ್ತಾಪ # 3: ಕೊರತೆ ಮತ್ತು ಪ್ರವೇಶ ನಿಯಂತ್ರಣವನ್ನು ಸಂಯೋಜಿಸುವುದು

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ನಾವು ಈ ಸಮಸ್ಯೆಯನ್ನು ಡಿಜಿಟಲ್ ಸಿಗ್ನೇಚರ್ ಮೆಕ್ಯಾನಿಸಂನೊಂದಿಗೆ ಪರಿಹರಿಸುತ್ತೇವೆ verify_sig ಬ್ಯಾಲೆನ್ಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಮೊದಲು, ಅಂದರೆ ಆಲಿಸ್ ತನ್ನ ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ವಹಿವಾಟಿಗೆ ಸಹಿ ಮಾಡಲು ಮತ್ತು ಅವಳು ತನ್ನ ನಾಣ್ಯಗಳ ಮಾಲೀಕನೆಂದು ದೃ confirmೀಕರಿಸಲು ಬಳಸುತ್ತಾಳೆ.

ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು

ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಬ್ಲಾಕ್‌ಚೈನ್ ಭಾಷೆಗಳು ಈ ಕೆಳಗಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸುತ್ತವೆ (ಅವೆಲ್ಲವನ್ನೂ ಮೂವ್‌ನಲ್ಲಿ ಪರಿಹರಿಸಲಾಗಿದೆ (ಗಮನಿಸಿ: ದುರದೃಷ್ಟವಶಾತ್, ಲೇಖನದ ಲೇಖಕರು ತಮ್ಮ ಹೋಲಿಕೆಗಳಲ್ಲಿ ಎಥೆರಿಯಮ್‌ಗೆ ಮಾತ್ರ ಮನವಿ ಮಾಡುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಈ ಸಂದರ್ಭದಲ್ಲಿ ಮಾತ್ರ ತೆಗೆದುಕೊಳ್ಳುವುದು ಯೋಗ್ಯವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಈ ಕೆಳಗಿನವುಗಳಲ್ಲಿ ಹೆಚ್ಚಿನವುಗಳನ್ನು EOS ನಲ್ಲಿಯೂ ಪರಿಹರಿಸಲಾಗಿದೆ.)):

ಸ್ವತ್ತುಗಳ ಪರೋಕ್ಷ ಪ್ರಾತಿನಿಧ್ಯ. ಒಂದು ಸ್ವತ್ತನ್ನು ಪೂರ್ಣಾಂಕವನ್ನು ಬಳಸಿಕೊಂಡು ಎನ್ಕೋಡ್ ಮಾಡಲಾಗಿದೆ, ಆದರೆ ಪೂರ್ಣಾಂಕವು ಸ್ವತ್ತಿನಂತೆಯೇ ಇರುವುದಿಲ್ಲ. ವಾಸ್ತವವಾಗಿ, Bitcoin/Ether/<Any Coin> ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಯಾವುದೇ ಪ್ರಕಾರ ಅಥವಾ ಮೌಲ್ಯವಿಲ್ಲ! ಇದು ಸ್ವತ್ತುಗಳನ್ನು ಬಳಸುವ ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಬರೆಯುವುದು ಕಷ್ಟಕರ ಮತ್ತು ದೋಷ ಪೀಡಿತವಾಗಿಸುತ್ತದೆ. ಸ್ವತ್ತುಗಳನ್ನು ಕಾರ್ಯವಿಧಾನಗಳಿಗೆ/ವಿನಿಂದ ರವಾನಿಸುವ ಅಥವಾ ರಚನೆಗಳಲ್ಲಿ ಸ್ವತ್ತುಗಳನ್ನು ಸಂಗ್ರಹಿಸುವಂತಹ ಮಾದರಿಗಳಿಗೆ ಭಾಷೆಯಿಂದ ವಿಶೇಷ ಬೆಂಬಲದ ಅಗತ್ಯವಿರುತ್ತದೆ.

ಕೊರತೆಯನ್ನು ವಿಸ್ತರಿಸಲಾಗುವುದಿಲ್ಲ... ಭಾಷೆ ಕೇವಲ ಒಂದು ವಿರಳ ಆಸ್ತಿಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಇದರ ಜೊತೆಯಲ್ಲಿ, ಕೊರತೆಯ ವಿರುದ್ಧದ ಪರಿಹಾರಗಳನ್ನು ನೇರವಾಗಿ ಭಾಷೆಯ ಶಬ್ದಾರ್ಥದಲ್ಲಿಯೇ ಗಟ್ಟಿಗೊಳಿಸಲಾಗುತ್ತದೆ. ಡೆವಲಪರ್, ಕಸ್ಟಮ್ ಆಸ್ತಿಯನ್ನು ರಚಿಸಲು ಬಯಸಿದರೆ, ಸಂಪನ್ಮೂಲದ ಎಲ್ಲಾ ಅಂಶಗಳನ್ನು ಎಚ್ಚರಿಕೆಯಿಂದ ನಿಯಂತ್ರಿಸಬೇಕು. ಇವುಗಳು ನಿಖರವಾಗಿ Ethereum ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳ ಸಮಸ್ಯೆಗಳು.

ಬಳಕೆದಾರರು ತಮ್ಮ ಸ್ವತ್ತುಗಳನ್ನು, ERC-20 ಟೋಕನ್‌ಗಳನ್ನು ನೀಡುತ್ತಾರೆ, ಮೌಲ್ಯ ಮತ್ತು ಒಟ್ಟು ಪೂರೈಕೆ ಎರಡನ್ನೂ ನಿರ್ಧರಿಸಲು ಪೂರ್ಣಾಂಕಗಳನ್ನು ಬಳಸುತ್ತಾರೆ. ಹೊಸ ಟೋಕನ್‌ಗಳನ್ನು ರಚಿಸಿದಾಗಲೆಲ್ಲ, ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಕೋಡ್ ಸ್ವತಂತ್ರವಾಗಿ ಹೊರಸೂಸುವಿಕೆ ನಿಯಮಗಳ ಅನುಸರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಬೇಕು. ಇದರ ಜೊತೆಗೆ, ಸ್ವತ್ತುಗಳ ಪರೋಕ್ಷ ಪ್ರಸ್ತುತಿಯು ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಗಂಭೀರ ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ - ನಕಲು, ಡಬಲ್ ಖರ್ಚು ಅಥವಾ ಸ್ವತ್ತುಗಳ ಸಂಪೂರ್ಣ ನಷ್ಟ.

ಹೊಂದಿಕೊಳ್ಳುವ ಪ್ರವೇಶ ನಿಯಂತ್ರಣದ ಕೊರತೆ... ಇಂದು ಬಳಕೆಯಲ್ಲಿರುವ ಏಕೈಕ ಪ್ರವೇಶ ನಿಯಂತ್ರಣ ನೀತಿಯೆಂದರೆ ಅಸಮ್ಮಿತ ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಬಳಸುವ ಸಹಿ ಯೋಜನೆ. ಕೊರತೆಯ ರಕ್ಷಣೆಯಂತೆ, ಪ್ರವೇಶ ನಿಯಂತ್ರಣ ನೀತಿಗಳು ಭಾಷೆಯ ಶಬ್ದಾರ್ಥದಲ್ಲಿ ಆಳವಾಗಿ ಹುದುಗಿದೆ. ಆದರೆ ಪ್ರೋಗ್ರಾಮರ್‌ಗಳು ತಮ್ಮದೇ ಆದ ಪ್ರವೇಶ ನಿಯಂತ್ರಣ ನೀತಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಭಾಷೆಯನ್ನು ಹೇಗೆ ವಿಸ್ತರಿಸುವುದು ಎಂಬುದು ಬಹಳ ಟ್ರಿಕಿ ಕೆಲಸವಾಗಿದೆ.

ಇದು Ethereum ನಲ್ಲಿ ಸಹ ನಿಜವಾಗಿದೆ, ಅಲ್ಲಿ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳು ಪ್ರವೇಶ ನಿಯಂತ್ರಣಕ್ಕಾಗಿ ಸ್ಥಳೀಯ ಕ್ರಿಪ್ಟೋಗ್ರಫಿ ಬೆಂಬಲವನ್ನು ಹೊಂದಿಲ್ಲ. ಡೆವಲಪರ್‌ಗಳು ಹಸ್ತಚಾಲಿತವಾಗಿ ಪ್ರವೇಶ ನಿಯಂತ್ರಣವನ್ನು ಹೊಂದಿಸಬೇಕು, ಉದಾಹರಣೆಗೆ, ಓನ್ಲಿ ಓನರ್ ಮಾರ್ಪಾಡು ಬಳಸಿ.

ನಾನು Ethereum ನ ದೊಡ್ಡ ಅಭಿಮಾನಿಯಾಗಿದ್ದರೂ ಸಹ, ಭದ್ರತಾ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಸ್ವತ್ತು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಭಾಷೆಯಿಂದ ಸ್ಥಳೀಯವಾಗಿ ಬೆಂಬಲಿಸಬೇಕು ಎಂದು ನಾನು ನಂಬುತ್ತೇನೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೇಳುವುದಾದರೆ, ಈಥರ್ ಅನ್ನು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಕ್ಕೆ ವರ್ಗಾಯಿಸುವುದು ಡೈನಾಮಿಕ್ ಡಿಸ್ಪ್ಯಾಚ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು ಮರು-ಪ್ರವೇಶದ ದುರ್ಬಲತೆಗಳೆಂದು ಕರೆಯಲ್ಪಡುವ ಹೊಸ ವರ್ಗದ ದೋಷಗಳನ್ನು ಪರಿಚಯಿಸಿದೆ. ಇಲ್ಲಿ ಡೈನಾಮಿಕ್ ರವಾನೆ ಎಂದರೆ ಕೋಡ್‌ನ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಲಾಜಿಕ್ ಅನ್ನು ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ (ಸ್ಥಿರ) ಬದಲಿಗೆ ರನ್‌ಟೈಮ್‌ನಲ್ಲಿ (ಡೈನಾಮಿಕ್) ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.

ಹೀಗಾಗಿ, ಸಾಲಿಡಿಟಿಯಲ್ಲಿ, ಒಪ್ಪಂದವು B ಯಲ್ಲಿನ ಕಾರ್ಯವನ್ನು ಒಪ್ಪಂದವು ಕರೆದರೆ, ಒಪ್ಪಂದದ A ಯ ಡೆವಲಪರ್‌ನಿಂದ ಉದ್ದೇಶಿಸದ ಕೋಡ್ ಅನ್ನು ಒಪ್ಪಂದ B ರನ್ ಮಾಡಬಹುದು, ಇದು ಕಾರಣವಾಗಬಹುದು ಮರು-ಪ್ರವೇಶ ದೋಷಗಳು (ಒಪ್ಪಂದ A ಆಕಸ್ಮಿಕವಾಗಿ ಖಾತೆಯ ಬಾಕಿಗಳನ್ನು ವಾಸ್ತವವಾಗಿ ಕಡಿತಗೊಳಿಸುವ ಮೊದಲು ಹಣವನ್ನು ಹಿಂಪಡೆಯಲು ಒಪ್ಪಂದ B ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ).

ಮೂವ್ ಲ್ಯಾಂಗ್ವೇಜ್ ಡಿಸೈನ್ ಫಂಡಮೆಂಟಲ್ಸ್

ಮೊದಲ ಕ್ರಮಾಂಕದ ಸಂಪನ್ಮೂಲಗಳು

ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿ, ಮೂವ್ ಭಾಷೆಯಲ್ಲಿ ಮಾಡ್ಯೂಲ್‌ಗಳು / ಸಂಪನ್ಮೂಲಗಳು / ಕಾರ್ಯವಿಧಾನಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯು OOP ಭಾಷೆಗಳಲ್ಲಿ ತರಗತಿಗಳು / ವಸ್ತುಗಳು ಮತ್ತು ವಿಧಾನಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಹೋಲುತ್ತದೆ.
ಮೂವ್ ಮಾಡ್ಯೂಲ್‌ಗಳು ಇತರ ಬ್ಲಾಕ್‌ಚೈನ್‌ಗಳಲ್ಲಿನ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳಿಗೆ ಹೋಲುತ್ತವೆ. ಮಾಡ್ಯೂಲ್ ಸಂಪನ್ಮೂಲಗಳ ಪ್ರಕಾರಗಳು ಮತ್ತು ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಘೋಷಿಸುತ್ತದೆ, ಅದು ಘೋಷಿತ ಸಂಪನ್ಮೂಲಗಳನ್ನು ರಚಿಸುವುದು, ನಾಶಪಡಿಸುವುದು ಮತ್ತು ನವೀಕರಿಸುವ ನಿಯಮಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ. ಆದರೆ ಇವೆಲ್ಲ ಕೇವಲ ಸಂಪ್ರದಾಯಗಳು ("ಪರಿಭಾಷೆ") ಚಲನೆಯಲ್ಲಿ. ನಾವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಈ ಅಂಶವನ್ನು ವಿವರಿಸುತ್ತೇವೆ.

ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ

ಮೂವ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಮೂಲಕ ತುಲಾಗೆ ನಮ್ಯತೆಯನ್ನು ಸೇರಿಸುತ್ತದೆ. ತುಲಾ ರಾಶಿಯಲ್ಲಿನ ಪ್ರತಿಯೊಂದು ವಹಿವಾಟು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು ಮೂಲಭೂತವಾಗಿ ವಹಿವಾಟಿನ ಪ್ರಮುಖ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಒಂದು ನಿರ್ದಿಷ್ಟ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ, ಸ್ವೀಕರಿಸುವವರ ನಿರ್ದಿಷ್ಟ ಪಟ್ಟಿಗೆ ಪಾವತಿಗಳು ಅಥವಾ ಇತರ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದು - ಉದಾಹರಣೆಗೆ, ಸಾಮಾನ್ಯ ತರ್ಕವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕಾರ್ಯವಿಧಾನವನ್ನು ಕರೆಯುವ ಮೂಲಕ. ಇದಕ್ಕಾಗಿಯೇ ಮೂವ್ ವಹಿವಾಟು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಹೆಚ್ಚಿನ ನಮ್ಯತೆಯನ್ನು ನೀಡುತ್ತವೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಒಂದು-ಬಾರಿ ಮತ್ತು ಪುನರಾವರ್ತಿತ ನಡವಳಿಕೆಗಳನ್ನು ಬಳಸಬಹುದು, ಆದರೆ Ethereum ಪುನರಾವರ್ತಿತ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಮಾತ್ರ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ (ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಧಾನದಲ್ಲಿ ಒಂದು ವಿಧಾನವನ್ನು ಕರೆಯುವುದು). ಇದನ್ನು "ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ" ಎಂದು ಕರೆಯಲು ಕಾರಣವೆಂದರೆ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಕಾರ್ಯಗಳನ್ನು ಅನೇಕ ಬಾರಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. (ಸೂಚನೆ: ಇಲ್ಲಿ ವಿಷಯವು ತುಂಬಾ ಸೂಕ್ಷ್ಮವಾಗಿದೆ. ಒಂದೆಡೆ, ಬಿಟ್‌ಕಾಯಿನ್‌ನಲ್ಲಿ ಸ್ಯೂಡೋ-ಬೈಟ್‌ಕೋಡ್‌ನ ರೂಪದಲ್ಲಿ ವಹಿವಾಟು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಸಹ ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ. ಮತ್ತೊಂದೆಡೆ, ನಾನು ಅರ್ಥಮಾಡಿಕೊಂಡಂತೆ, ಮೂವ್ ಈ ಭಾಷೆಯನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ, ವಾಸ್ತವವಾಗಿ, ಪೂರ್ಣ ಪ್ರಮಾಣದ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಭಾಷೆಯ ಮಟ್ಟಕ್ಕೆ).

ಭದ್ರತೆ

ಮೂವ್ ಎಕ್ಸಿಕ್ಯೂಟಬಲ್ ಫಾರ್ಮ್ಯಾಟ್ ಬೈಟ್‌ಕೋಡ್ ಆಗಿದೆ, ಇದು ಒಂದು ಕಡೆ, ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗಿಂತ ಹೆಚ್ಚಿನ ಮಟ್ಟದ ಭಾಷೆಯಾಗಿದೆ, ಆದರೆ ಮೂಲ ಕೋಡ್‌ಗಿಂತ ಕಡಿಮೆ ಮಟ್ಟವಾಗಿದೆ. ಬೈಟ್‌ಕೋಡ್ ಪರಿಶೀಲಕವನ್ನು ಬಳಸಿಕೊಂಡು ಸಂಪನ್ಮೂಲಗಳು, ಪ್ರಕಾರಗಳು ಮತ್ತು ಮೆಮೊರಿ ಸುರಕ್ಷತೆಗಾಗಿ ರನ್-ಟೈಮ್ (ಆನ್-ಚೈನ್) ನಲ್ಲಿ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಇಂಟರ್ಪ್ರಿಟರ್‌ನಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಈ ವಿಧಾನವು ಮೂವ್‌ಗೆ ಮೂಲ ಕೋಡ್‌ನ ಭದ್ರತೆಯನ್ನು ಒದಗಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಸಂಕಲನ ಪ್ರಕ್ರಿಯೆಯಿಲ್ಲದೆ ಮತ್ತು ಸಿಸ್ಟಮ್‌ಗೆ ಕಂಪೈಲರ್ ಅನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. Move ಅನ್ನು ಬೈಟ್‌ಕೋಡ್ ಭಾಷೆಯನ್ನು ಮಾಡುವುದು ನಿಜವಾಗಿಯೂ ಉತ್ತಮ ಪರಿಹಾರವಾಗಿದೆ. ಸಾಲಿಡಿಟಿಯಂತೆಯೇ ಇದನ್ನು ಮೂಲದಿಂದ ಕಂಪೈಲ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಕಂಪೈಲರ್ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ಸಂಭವನೀಯ ವೈಫಲ್ಯಗಳು ಅಥವಾ ದಾಳಿಗಳ ಬಗ್ಗೆ ಚಿಂತಿಸಬೇಕಾಗಿಲ್ಲ.

ಪರಿಶೀಲನೆ

ನಾವು ಸಾಧ್ಯವಾದಷ್ಟು ಸುಲಭವಾಗಿ ತಪಾಸಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಏಕೆಂದರೆ ಇದೆಲ್ಲವೂ ಸರಪಳಿಯಲ್ಲಿ ಮಾಡಲಾಗುತ್ತದೆ (ಗಮನಿಸಿ: ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ, ಪ್ರತಿ ವಹಿವಾಟಿನ ಸಮಯದಲ್ಲಿ, ಯಾವುದೇ ವಿಳಂಬವು ಸಂಪೂರ್ಣ ನೆಟ್‌ವರ್ಕ್‌ನ ನಿಧಾನಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ), ಆದಾಗ್ಯೂ, ಆರಂಭದಲ್ಲಿ ಭಾಷಾ ವಿನ್ಯಾಸವು ಆಫ್-ಚೈನ್ ಸ್ಟ್ಯಾಟಿಕ್ ಪರಿಶೀಲನಾ ಸಾಧನಗಳನ್ನು ಬಳಸಲು ಸಿದ್ಧವಾಗಿದೆ. ಇದು ಹೆಚ್ಚು ಯೋಗ್ಯವಾಗಿದ್ದರೂ, ಸದ್ಯಕ್ಕೆ ಪರಿಶೀಲನಾ ಪರಿಕರಗಳ ಅಭಿವೃದ್ಧಿಯನ್ನು (ಪ್ರತ್ಯೇಕ ಟೂಲ್‌ಕಿಟ್‌ನಂತೆ) ಭವಿಷ್ಯಕ್ಕೆ ಮುಂದೂಡಲಾಗಿದೆ ಮತ್ತು ಈಗ ರನ್-ಟೈಮ್‌ನಲ್ಲಿ (ಆನ್-ಚೈನ್) ಡೈನಾಮಿಕ್ ಪರಿಶೀಲನೆಯನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ.

ಮಾಡ್ಯುಲಾರಿಟಿ

ಮೂವ್ ಮಾಡ್ಯೂಲ್‌ಗಳು ಡೇಟಾ ಅಮೂರ್ತತೆಯನ್ನು ಒದಗಿಸುತ್ತವೆ ಮತ್ತು ಸಂಪನ್ಮೂಲಗಳ ಮೇಲೆ ನಿರ್ಣಾಯಕ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಸ್ಥಳೀಕರಿಸುತ್ತವೆ. ಮಾಡ್ಯೂಲ್‌ನಿಂದ ಒದಗಿಸಲಾದ ಎನ್‌ಕ್ಯಾಪ್ಸುಲೇಷನ್, ಮೂವ್ ಟೈಪ್ ಸಿಸ್ಟಮ್ ಒದಗಿಸಿದ ರಕ್ಷಣೆಯೊಂದಿಗೆ, ಮಾಡ್ಯೂಲ್‌ನ ಪ್ರಕಾರಗಳ ಮೇಲೆ ಹೊಂದಿಸಲಾದ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಮಾಡ್ಯೂಲ್‌ನ ಹೊರಗಿನ ಕೋಡ್‌ನಿಂದ ಉಲ್ಲಂಘಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಇದು ಸಾಕಷ್ಟು ಚೆನ್ನಾಗಿ ಯೋಚಿಸಿದ ಅಮೂರ್ತ ವಿನ್ಯಾಸವಾಗಿದೆ, ಅಂದರೆ ಒಪ್ಪಂದದ ಒಳಗಿನ ದತ್ತಾಂಶವು ಒಪ್ಪಂದದ ಚೌಕಟ್ಟಿನೊಳಗೆ ಮಾತ್ರ ಬದಲಾಗಬಹುದು, ಆದರೆ ಹೊರಗೆ ಅಲ್ಲ.

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಅವಲೋಕನವನ್ನು ಸರಿಸಿ

ಮಾಡ್ಯೂಲ್‌ನ ಹೊರಗಿನ ಪ್ರೋಗ್ರಾಮರ್‌ನ ದುರುದ್ದೇಶಪೂರಿತ ಅಥವಾ ಅಜಾಗರೂಕ ಕ್ರಮಗಳು ಮಾಡ್ಯೂಲ್‌ನ ಸಂಪನ್ಮೂಲಗಳ ಸುರಕ್ಷತೆಯನ್ನು ರಾಜಿ ಮಾಡಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದನ್ನು ವಹಿವಾಟು ಸ್ಕ್ರಿಪ್ಟ್ ಉದಾಹರಣೆಯು ತೋರಿಸುತ್ತದೆ. ಮುಂದೆ, ತುಲಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಅನ್ನು ಪ್ರೋಗ್ರಾಂ ಮಾಡಲು ಮಾಡ್ಯೂಲ್‌ಗಳು, ಸಂಪನ್ಮೂಲಗಳು ಮತ್ತು ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಹೇಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ನಾವು ಉದಾಹರಣೆಗಳನ್ನು ನೋಡುತ್ತೇವೆ.

ಪೀರ್-ಟು-ಪೀರ್ ಪಾವತಿಗಳು

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಮೊತ್ತದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನಾಣ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಳುಹಿಸುವವರ ಬಾಕಿಯಿಂದ ಸ್ವೀಕರಿಸುವವರಿಗೆ ವರ್ಗಾಯಿಸಲಾಗುತ್ತದೆ.
ಇಲ್ಲಿ ಕೆಲವು ಹೊಸ ವಿಷಯಗಳಿವೆ (ಕೆಂಪು ಬಣ್ಣದಲ್ಲಿ ಹೈಲೈಟ್ ಮಾಡಲಾಗಿದೆ):

  • 0x0: ಮಾಡ್ಯೂಲ್ ಸಂಗ್ರಹವಾಗಿರುವ ಖಾತೆಯ ವಿಳಾಸ
  • ಕರೆನ್ಸಿ: ಮಾಡ್ಯೂಲ್ ಹೆಸರು
  • ನಾಣ್ಯ: ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರ
  • ಕಾರ್ಯವಿಧಾನದಿಂದ ಮರಳಿದ ನಾಣ್ಯ ಮೌಲ್ಯವು 0x0.Currency.Coin ವಿಧದ ಸಂಪನ್ಮೂಲ ಮೌಲ್ಯವಾಗಿದೆ
  • ಸರಿಸಿ (): ಮೌಲ್ಯವನ್ನು ಮತ್ತೆ ಬಳಸಲಾಗುವುದಿಲ್ಲ
  • ನಕಲು (): ಮೌಲ್ಯವನ್ನು ನಂತರ ಬಳಸಬಹುದು

ಕೋಡ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಿ: ಮೊದಲ ಹಂತದಲ್ಲಿ, ಕಳುಹಿಸಿದವರು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕರೆಯುತ್ತಾರೆ ಕಳುಹಿಸುವವರಿಂದ ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಮಾಡ್ಯೂಲ್‌ನಿಂದ 0x0. ಕರೆನ್ಸಿ. ಎರಡನೇ ಹಂತದಲ್ಲಿ, ಕಳುಹಿಸುವವರು ನಾಣ್ಯ ಸಂಪನ್ಮೂಲ ಮೌಲ್ಯವನ್ನು ಮಾಡ್ಯೂಲ್‌ನ ಠೇವಣಿ ವಿಧಾನಕ್ಕೆ ಚಲಿಸುವ ಮೂಲಕ ಸ್ವೀಕರಿಸುವವರಿಗೆ ಹಣವನ್ನು ವರ್ಗಾಯಿಸುತ್ತಾರೆ 0x0. ಕರೆನ್ಸಿ.

ಚೆಕ್‌ಗಳಿಂದ ತಿರಸ್ಕರಿಸಲಾಗುವ ಕೋಡ್‌ನಲ್ಲಿನ ದೋಷಗಳ ಮೂರು ಉದಾಹರಣೆಗಳು ಇಲ್ಲಿವೆ:
ಕರೆಯನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ ಹಣವನ್ನು ನಕಲು ಮಾಡಿ ಸರಿಸಿ (ನಾಣ್ಯ) ಮೇಲೆ ನಕಲು (ನಾಣ್ಯ). ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮಾತ್ರ ಸರಿಸಬಹುದು. ಸಂಪನ್ಮೂಲದ ಪ್ರಮಾಣವನ್ನು ನಕಲು ಮಾಡಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ (ಉದಾಹರಣೆಗೆ, ಕರೆ ಮಾಡುವ ಮೂಲಕ ನಕಲು (ನಾಣ್ಯ) ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ) ಬೈಟ್‌ಕೋಡ್ ಪರಿಶೀಲಿಸುವಾಗ ದೋಷ ಉಂಟಾಗುತ್ತದೆ.

ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ನಿಧಿಯ ಮರುಬಳಕೆ ಸರಿಸಿ (ನಾಣ್ಯ) ಎರಡು ಬಾರಿ . ಒಂದು ಸಾಲನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ 0x0.Currency.deposit (ನಕಲು (ಕೆಲವು_ಇತರ_ಪಾವತಿದಾರರು), ಸರಿಸಿ (ನಾಣ್ಯ)) ಉದಾಹರಣೆಗೆ, ಮೇಲಿನವು ಕಳುಹಿಸುವವರಿಗೆ ನಾಣ್ಯಗಳನ್ನು ಎರಡು ಬಾರಿ "ಖರ್ಚು ಮಾಡಲು" ಅನುಮತಿಸುತ್ತದೆ - ಮೊದಲ ಬಾರಿಗೆ ಪಾವತಿಸುವವರೊಂದಿಗೆ ಮತ್ತು ಎರಡನೆಯದು ಕೆಲವು_ಇತರ_ಪಾವತಿದಾರ. ಇದು ಅನಪೇಕ್ಷಿತ ನಡವಳಿಕೆಯಾಗಿದ್ದು ಅದು ಭೌತಿಕ ಆಸ್ತಿಯೊಂದಿಗೆ ಸಾಧ್ಯವಿಲ್ಲ. ಅದೃಷ್ಟವಶಾತ್, ಮೂವ್ ಈ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ.

ನಿರಾಕರಣೆಯಿಂದಾಗಿ ಹಣದ ನಷ್ಟ ಸರಿಸಿ (ನಾಣ್ಯ). ನೀವು ಸಂಪನ್ಮೂಲವನ್ನು ಸರಿಸದಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ, ಹೊಂದಿರುವ ಸಾಲನ್ನು ಅಳಿಸುವ ಮೂಲಕ ಸರಿಸಿ (ನಾಣ್ಯ)), ಬೈಟ್‌ಕೋಡ್ ಪರಿಶೀಲನೆ ದೋಷವನ್ನು ಎಸೆಯಲಾಗುತ್ತದೆ. ಇದು ಮೂವ್ ಪ್ರೋಗ್ರಾಮರ್‌ಗಳನ್ನು ಆಕಸ್ಮಿಕ ಅಥವಾ ದುರುದ್ದೇಶಪೂರಿತ ನಿಧಿಯ ನಷ್ಟದಿಂದ ರಕ್ಷಿಸುತ್ತದೆ.

ಕರೆನ್ಸಿ ಮಾಡ್ಯೂಲ್

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಪ್ರತಿಯೊಂದು ಖಾತೆಯು 0 ಅಥವಾ ಹೆಚ್ಚಿನ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು (ಆಯತಗಳಾಗಿ ತೋರಿಸಲಾಗಿದೆ) ಮತ್ತು ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಪನ್ಮೂಲ ಮೌಲ್ಯಗಳನ್ನು (ಸಿಲಿಂಡರ್‌ಗಳಾಗಿ ತೋರಿಸಲಾಗಿದೆ) ಒಳಗೊಂಡಿರಬಹುದು. ಉದಾಹರಣೆಗೆ, ನಲ್ಲಿ ಖಾತೆ 0x0 ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ 0x0. ಕರೆನ್ಸಿ ಮತ್ತು ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರದ ಮೌಲ್ಯ 0x0.Currency.Coin. ವಿಳಾಸದಲ್ಲಿ ಖಾತೆ 0x1 ಎರಡು ಸಂಪನ್ಮೂಲಗಳು ಮತ್ತು ಒಂದು ಮಾಡ್ಯೂಲ್ ಹೊಂದಿದೆ; ವಿಳಾಸದಲ್ಲಿ ಖಾತೆ 0x2 ಎರಡು ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು ಒಂದು ಸಂಪನ್ಮೂಲ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿದೆ.

ನೆಕೋಟರಿ ಕ್ಷಣಗಳು:

  • ವಹಿವಾಟು ಸ್ಕ್ರಿಪ್ಟ್ ಪರಮಾಣು - ಒಂದೋ ಅದನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಇಲ್ಲ.
  • ಮಾಡ್ಯೂಲ್ ಎನ್ನುವುದು ದೀರ್ಘಾವಧಿಯ ಸಂಕೇತವಾಗಿದ್ದು ಅದು ಜಾಗತಿಕವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದಾಗಿದೆ.
  • ಜಾಗತಿಕ ಸ್ಥಿತಿಯನ್ನು ಹ್ಯಾಶ್ ಟೇಬಲ್‌ನಂತೆ ರಚಿಸಲಾಗಿದೆ, ಅಲ್ಲಿ ಕೀಲಿಯು ಖಾತೆಯ ವಿಳಾಸವಾಗಿದೆ
  • ಖಾತೆಗಳು ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರದ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಂಪನ್ಮೂಲ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರಬಾರದು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಹೆಸರಿನೊಂದಿಗೆ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಹೊಂದಿರಬಾರದು (ಖಾತೆಯಲ್ಲಿ 0x0 ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲವನ್ನು ಹೊಂದಿರಬಾರದು 0x0.Currency.Coin ಅಥವಾ ಇನ್ನೊಂದು ಮಾಡ್ಯೂಲ್ ಹೆಸರಿಸಲಾಗಿದೆ ಕರೆನ್ಸಿ)
  • ಡಿಕ್ಲೇರ್ಡ್ ಮಾಡ್ಯೂಲ್‌ನ ವಿಳಾಸವು ಪ್ರಕಾರದ ಭಾಗವಾಗಿದೆ (0x0.Currency.Coin и 0x1.Currency.Coin ಪರಸ್ಪರ ಬದಲಾಯಿಸಲಾಗದ ಪ್ರತ್ಯೇಕ ಪ್ರಕಾರಗಳಾಗಿವೆ)
  • ಪ್ರೋಗ್ರಾಮರ್‌ಗಳು ತಮ್ಮ ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಮೂಲಕ ಖಾತೆಯಲ್ಲಿ ಈ ರೀತಿಯ ಸಂಪನ್ಮೂಲದ ಬಹು ನಿದರ್ಶನಗಳನ್ನು ಸಂಗ್ರಹಿಸಬಹುದು - (ಸಂಪನ್ಮೂಲ TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • ಸಂಘರ್ಷಗಳಿಲ್ಲದೆ ನೀವು ಸಂಪನ್ಮೂಲವನ್ನು ಅದರ ಹೆಸರಿನಿಂದ ಉಲ್ಲೇಖಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ ನೀವು ಎರಡು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸಿ ಉಲ್ಲೇಖಿಸಬಹುದು TwoCoins.c1 и TwoCoins.c2.

ನಾಣ್ಯ ಸಂಪನ್ಮೂಲ ಪ್ರಕಟಣೆ

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ
ಮಾಡ್ಯೂಲ್ ಹೆಸರಿಸಲಾಗಿದೆ ಕರೆನ್ಸಿ ಮತ್ತು ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರವನ್ನು ಹೆಸರಿಸಲಾಗಿದೆ ನಾಣ್ಯ

ನೆಕೋಟರಿ ಕ್ಷಣಗಳು:

  • ನಾಣ್ಯ ಪ್ರಕಾರದ ಒಂದು ಕ್ಷೇತ್ರವನ್ನು ಹೊಂದಿರುವ ರಚನೆಯಾಗಿದೆ U64 (64-ಬಿಟ್ ಸಹಿ ಮಾಡದ ಪೂರ್ಣಾಂಕ)
  • ಮಾಡ್ಯೂಲ್ ಕಾರ್ಯವಿಧಾನಗಳು ಮಾತ್ರ ಕರೆನ್ಸಿ ಪ್ರಕಾರದ ಮೌಲ್ಯಗಳನ್ನು ರಚಿಸಬಹುದು ಅಥವಾ ನಾಶಪಡಿಸಬಹುದು ನಾಣ್ಯ.
  • ಇತರ ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಮಾಡ್ಯೂಲ್ ಒದಗಿಸಿದ ಸಾರ್ವಜನಿಕ ಕಾರ್ಯವಿಧಾನಗಳ ಮೂಲಕ ಮೌಲ್ಯ ಕ್ಷೇತ್ರವನ್ನು ಮಾತ್ರ ಬರೆಯಬಹುದು ಅಥವಾ ಉಲ್ಲೇಖಿಸಬಹುದು.

ಠೇವಣಿ ಮಾರಾಟ

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಈ ವಿಧಾನವು ಸಂಪನ್ಮೂಲವನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ನಾಣ್ಯ ಇನ್ಪುಟ್ ಆಗಿ ಮತ್ತು ಅದನ್ನು ಸಂಪನ್ಮೂಲದೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ ನಾಣ್ಯಸ್ವೀಕರಿಸುವವರ ಖಾತೆಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ:

  1. ಇನ್ಪುಟ್ ಸಂಪನ್ಮೂಲ ನಾಣ್ಯವನ್ನು ನಾಶಪಡಿಸುವುದು ಮತ್ತು ಅದರ ಮೌಲ್ಯವನ್ನು ದಾಖಲಿಸುವುದು.
  2. ಸ್ವೀಕರಿಸುವವರ ಖಾತೆಯಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಅನನ್ಯ ಕಾಯಿನ್ ಸಂಪನ್ಮೂಲಕ್ಕೆ ಲಿಂಕ್ ಅನ್ನು ಸ್ವೀಕರಿಸಲಾಗುತ್ತಿದೆ.
  3. ಕಾರ್ಯವಿಧಾನವನ್ನು ಕರೆಯುವಾಗ ಪ್ಯಾರಾಮೀಟರ್‌ನಲ್ಲಿ ರವಾನಿಸಲಾದ ಮೌಲ್ಯದಿಂದ ನಾಣ್ಯಗಳ ಸಂಖ್ಯೆಯ ಮೌಲ್ಯವನ್ನು ಬದಲಾಯಿಸುವುದು.

ನೆಕೋಟರಿ ಕ್ಷಣಗಳು:

  • ಅನ್ಪ್ಯಾಕ್, BorrowGlobal - ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯವಿಧಾನಗಳು
  • ಅನ್ಪ್ಯಾಕ್ ಮಾಡಿ T ಪ್ರಕಾರದ ಸಂಪನ್ಮೂಲವನ್ನು ಅಳಿಸಲು ಇದು ಏಕೈಕ ಮಾರ್ಗವಾಗಿದೆ. ಕಾರ್ಯವಿಧಾನವು ಸಂಪನ್ಮೂಲವನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಅದನ್ನು ನಾಶಪಡಿಸುತ್ತದೆ ಮತ್ತು ಸಂಪನ್ಮೂಲದ ಕ್ಷೇತ್ರಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
  • ಸಾಲ ಗ್ಲೋಬಲ್ ಒಂದು ವಿಳಾಸವನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಆ ವಿಳಾಸದಿಂದ ಪ್ರಕಟಿಸಲಾದ (ಮಾಲೀಕತ್ವದ) T ಯ ವಿಶಿಷ್ಟ ನಿದರ್ಶನಕ್ಕೆ ಉಲ್ಲೇಖವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ
  • &ಮುಟ್ ನಾಣ್ಯ ಇದು ಸಂಪನ್ಮೂಲಕ್ಕೆ ಲಿಂಕ್ ಆಗಿದೆ ನಾಣ್ಯ

withdraw_from_sender ನ ಅನುಷ್ಠಾನ

ಡೈವ್ ಇನ್ ಮೂವ್ - ಫೇಸ್‌ಬುಕ್‌ನ ಲಿಬ್ರಾ ಬ್ಲಾಕ್‌ಚೈನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ

ಈ ಕಾರ್ಯವಿಧಾನ:

  1. ಅನನ್ಯ ಸಂಪನ್ಮೂಲಕ್ಕೆ ಲಿಂಕ್ ಪಡೆಯುತ್ತದೆ ನಾಣ್ಯ, ಕಳುಹಿಸುವವರ ಖಾತೆಗೆ ಲಿಂಕ್ ಮಾಡಲಾಗಿದೆ
  2. ಸಂಪನ್ಮೂಲದ ಮೌಲ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ನಾಣ್ಯ ನಿರ್ದಿಷ್ಟ ಮೊತ್ತಕ್ಕೆ ಲಿಂಕ್ ಮೂಲಕ
  3. ಹೊಸ ಸಂಪನ್ಮೂಲವನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ನಾಣ್ಯ ನವೀಕರಿಸಿದ ಸಮತೋಲನದೊಂದಿಗೆ.

ನೆಕೋಟರಿ ಕ್ಷಣಗಳು:

  • ಠೇವಣಿ ಯಾರಿಂದಲೂ ಉಂಟಾಗಬಹುದು, ಆದರೆ ಕಳುಹಿಸುವವರಿಂದ ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ ಕರೆ ಮಾಡುವ ಖಾತೆಯ ನಾಣ್ಯಗಳಿಗೆ ಮಾತ್ರ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ
  • GetTxnSenderAddress ಹೋಲುತ್ತದೆ ಸಂದೇಶ ಕಳುಹಿಸುವವರು ಘನತೆಯಲ್ಲಿ
  • ಹೊರತು ಪಡಿಸಿ ಹೋಲುತ್ತದೆ ಅಗತ್ಯವಿರುವ ಘನತೆಯಲ್ಲಿ. ಈ ಚೆಕ್ ವಿಫಲವಾದಲ್ಲಿ, ವಹಿವಾಟನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ.
  • ಪ್ಯಾಕ್ ಇದು ಟೈಪ್ T ಯ ಹೊಸ ಸಂಪನ್ಮೂಲವನ್ನು ರಚಿಸುವ ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ.
  • ಹಾಗೆಯೇ ಅನ್ಪ್ಯಾಕ್ ಮಾಡಿ, ಪ್ಯಾಕ್ ಸಂಪನ್ಮೂಲವನ್ನು ವಿವರಿಸಿರುವ ಮಾಡ್ಯೂಲ್ ಒಳಗೆ ಮಾತ್ರ ಕರೆಯಬಹುದು T

ತೀರ್ಮಾನಕ್ಕೆ

ನಾವು ಮೂವ್ ಭಾಷೆಯ ಮುಖ್ಯ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪರಿಶೀಲಿಸಿದ್ದೇವೆ, ಅದನ್ನು ಎಥೆರಿಯಮ್‌ನೊಂದಿಗೆ ಹೋಲಿಸಿದ್ದೇವೆ ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್‌ನೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿದ್ದೇವೆ. ಅಂತಿಮವಾಗಿ, ಪರಿಶೀಲಿಸಲು ನಾನು ಹೆಚ್ಚು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ ಮೂಲ ಬಿಳಿ ಕಾಗದ. ಇದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ವಿನ್ಯಾಸ ತತ್ವಗಳ ಬಗ್ಗೆ ಸಾಕಷ್ಟು ವಿವರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಜೊತೆಗೆ ಅನೇಕ ಉಪಯುಕ್ತ ಲಿಂಕ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ