ನಿಮ್ಮ ಕಣ್ಣುಗಳು ಭಯಪಡುತ್ತವೆ ಮತ್ತು ನಿಮ್ಮ ಕೈಗಳು ತುರಿಕೆ ಮಾಡುತ್ತವೆ!
ಹಿಂದಿನ ಲೇಖನಗಳಲ್ಲಿ, ಬ್ಲಾಕ್ಚೈನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ನಾವು ವ್ಯವಹರಿಸಿದ್ದೇವೆ (ನಾವು ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಏನು ನಿರ್ಮಿಸಬೇಕು?) ಮತ್ತು ಅವರ ಸಹಾಯದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಪ್ರಕರಣಗಳು (ನಾವೇಕೆ ಕೇಸ್ ಕಟ್ಟಬೇಕು?) ನಿಮ್ಮ ಕೈಗಳಿಂದ ಕೆಲಸ ಮಾಡುವ ಸಮಯ! ಪೈಲಟ್ಗಳು ಮತ್ತು PoC (ಪ್ರೂಫ್ ಆಫ್ ಕಾನ್ಸೆಪ್ಟ್) ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ನಾನು ಮೋಡಗಳನ್ನು ಬಳಸಲು ಬಯಸುತ್ತೇನೆ, ಏಕೆಂದರೆ... ಅವುಗಳನ್ನು ಪ್ರಪಂಚದ ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ಆಗಾಗ್ಗೆ, ಪರಿಸರದ ಬೇಸರದ ಸ್ಥಾಪನೆಗೆ ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಮೊದಲೇ ಹೊಂದಿಸಲಾದ ಸಂರಚನೆಗಳಿವೆ. ಆದ್ದರಿಂದ, ನಾವು ಏನನ್ನಾದರೂ ಸರಳವಾಗಿ ಮಾಡೋಣ, ಉದಾಹರಣೆಗೆ, ಭಾಗವಹಿಸುವವರ ನಡುವೆ ನಾಣ್ಯಗಳನ್ನು ವರ್ಗಾಯಿಸುವ ನೆಟ್ವರ್ಕ್ ಮತ್ತು ಅದನ್ನು ಬಿಟ್ಕೋಯಿನ್ ಎಂದು ಕರೆಯೋಣ. ಇದಕ್ಕಾಗಿ ನಾವು IBM ಕ್ಲೌಡ್ ಮತ್ತು ಸಾರ್ವತ್ರಿಕ ಬ್ಲಾಕ್ಚೈನ್ ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಮೊದಲಿಗೆ, ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಅನ್ನು ಸಾರ್ವತ್ರಿಕ ಬ್ಲಾಕ್ಚೈನ್ ಎಂದು ಏಕೆ ಕರೆಯುತ್ತಾರೆ ಎಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡೋಣ?
ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ - ಸಾರ್ವತ್ರಿಕ ಬ್ಲಾಕ್ಚೈನ್
ಸಾಮಾನ್ಯವಾಗಿ ಹೇಳುವುದಾದರೆ, ಸಾರ್ವತ್ರಿಕ ಮಾಹಿತಿ ವ್ಯವಸ್ಥೆ:
ಸರ್ವರ್ಗಳ ಒಂದು ಸೆಟ್ ಮತ್ತು ವ್ಯವಹಾರ ತರ್ಕವನ್ನು ನಿರ್ವಹಿಸುವ ಸಾಫ್ಟ್ವೇರ್ ಕೋರ್;
ಸಿಸ್ಟಮ್ನೊಂದಿಗೆ ಸಂವಹನಕ್ಕಾಗಿ ಇಂಟರ್ಫೇಸ್ಗಳು;
ಸಾಧನಗಳು/ಜನರ ನೋಂದಣಿ, ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣಕ್ಕಾಗಿ ಪರಿಕರಗಳು;
ಕಾರ್ಯಾಚರಣೆ ಮತ್ತು ಆರ್ಕೈವಲ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಡೇಟಾಬೇಸ್:
ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಎಂಬುದರ ಅಧಿಕೃತ ಆವೃತ್ತಿಯನ್ನು ಓದಬಹುದು ಸೈಟ್, ಮತ್ತು ಸಂಕ್ಷಿಪ್ತವಾಗಿ, ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಒಂದು ಓಪನ್ ಸೋರ್ಸ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಆಗಿದ್ದು ಅದು ಖಾಸಗಿ ಬ್ಲಾಕ್ಚೇನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು JS ಮತ್ತು ಗೋ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಬರೆಯಲಾದ ಅನಿಯಂತ್ರಿತ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ನ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ವಿವರವಾಗಿ ನೋಡೋಣ ಮತ್ತು ಇದು ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ರೆಕಾರ್ಡಿಂಗ್ ಮಾಡಲು ನಿರ್ದಿಷ್ಟತೆಯನ್ನು ಹೊಂದಿರುವ ಸಾರ್ವತ್ರಿಕ ವ್ಯವಸ್ಥೆಯಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನಿರ್ದಿಷ್ಟತೆಯೆಂದರೆ, ಎಲ್ಲಾ ಬ್ಲಾಕ್ಚೈನ್ಗಳಲ್ಲಿರುವಂತೆ, ಭಾಗವಹಿಸುವವರು ಒಮ್ಮತವನ್ನು ತಲುಪಿದರೆ ಮತ್ತು ಡೇಟಾವನ್ನು ಸದ್ದಿಲ್ಲದೆ ಸರಿಪಡಿಸಲು ಅಥವಾ ಅಳಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ ಮಾತ್ರ ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಇರಿಸಲಾದ ಬ್ಲಾಕ್ಗಳಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.
ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಆರ್ಕಿಟೆಕ್ಚರ್
ರೇಖಾಚಿತ್ರವು ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ:
ಸಂಸ್ಥೆಗಳು - ಸಂಸ್ಥೆಗಳು ಗೆಳೆಯರನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ, ಅಂದರೆ. ಸಂಸ್ಥೆಗಳ ಬೆಂಬಲದಿಂದಾಗಿ ಬ್ಲಾಕ್ಚೈನ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ವಿಭಿನ್ನ ಸಂಸ್ಥೆಗಳು ಒಂದೇ ಚಾನಲ್ನ ಭಾಗವಾಗಿರಬಹುದು.
ಚಾನೆಲ್ - ಒಂದು ತಾರ್ಕಿಕ ರಚನೆಯು ಗೆಳೆಯರನ್ನು ಗುಂಪುಗಳಾಗಿ ಒಂದುಗೂಡಿಸುತ್ತದೆ, ಅಂದರೆ. ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ. ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಏಕಕಾಲದಲ್ಲಿ ವಿವಿಧ ವ್ಯವಹಾರ ತರ್ಕದೊಂದಿಗೆ ಬಹು ಬ್ಲಾಕ್ಚೈನ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು.
ಸದಸ್ಯತ್ವ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುವವರು (MSP) ಗುರುತನ್ನು ನೀಡಲು ಮತ್ತು ಪಾತ್ರಗಳನ್ನು ನಿಯೋಜಿಸಲು CA (ಪ್ರಮಾಣಪತ್ರ ಪ್ರಾಧಿಕಾರ) ಆಗಿದೆ. ನೋಡ್ ರಚಿಸಲು, ನೀವು MSP ಯೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ಪೀರ್ ನೋಡ್ಗಳು - ವಹಿವಾಟುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಿ, ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಿ. ಗೆಳೆಯರು ಗುರುತನ್ನು (ಡಿಜಿಟಲ್ ಪ್ರಮಾಣಪತ್ರ) ಹೊಂದಿದ್ದಾರೆ, ಇದನ್ನು MSP ಯಿಂದ ನೀಡಲಾಗುತ್ತದೆ. ಬಿಟ್ಕಾಯಿನ್ ಅಥವಾ ಎಥೆರಿಯಮ್ ನೆಟ್ವರ್ಕ್ಗಿಂತ ಭಿನ್ನವಾಗಿ, ಎಲ್ಲಾ ನೋಡ್ಗಳು ಸಮಾನ ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿವೆ, ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ನೋಡ್ಗಳು ವಿಭಿನ್ನ ಪಾತ್ರಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ:
ಬಹುಶಃ ಪೀರ್ ಗೆಳೆಯರನ್ನು ಅನುಮೋದಿಸುವುದು (EP) ಮತ್ತು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ.
ಬದ್ಧತೆಯ ಗೆಳೆಯ (CP) - ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಉಳಿಸಿ ಮತ್ತು “ವಿಶ್ವ ಸ್ಥಿತಿಯನ್ನು” ನವೀಕರಿಸಿ.
ಆಂಕರ್ ಪೀರ್ (ಎಪಿ) - ಹಲವಾರು ಸಂಸ್ಥೆಗಳು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಭಾಗವಹಿಸಿದರೆ, ಆಂಕರ್ ಗೆಳೆಯರನ್ನು ಅವುಗಳ ನಡುವೆ ಸಂವಹನಕ್ಕಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಪ್ರತಿ ಸಂಸ್ಥೆಯು ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಆಂಕರ್ ಗೆಳೆಯರನ್ನು ಹೊಂದಿರಬೇಕು. AP ಅನ್ನು ಬಳಸಿಕೊಂಡು, ಸಂಸ್ಥೆಯಲ್ಲಿರುವ ಯಾವುದೇ ಗೆಳೆಯರು ಇತರ ಸಂಸ್ಥೆಗಳಲ್ಲಿನ ಎಲ್ಲಾ ಗೆಳೆಯರ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಬಹುದು. AP ಗಳ ನಡುವೆ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ ಗಾಸಿಪ್ ಪ್ರೋಟೋಕಾಲ್.
ನಾಯಕ ಪೀರ್ - ಸಂಸ್ಥೆಯು ಹಲವಾರು ಗೆಳೆಯರನ್ನು ಹೊಂದಿದ್ದರೆ, ಪೀರ್ನ ನಾಯಕ ಮಾತ್ರ ಆರ್ಡರ್ ಮಾಡುವ ಸೇವೆಯಿಂದ ಬ್ಲಾಕ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾನೆ ಮತ್ತು ಅವುಗಳನ್ನು ಉಳಿದ ಗೆಳೆಯರಿಗೆ ನೀಡುತ್ತಾನೆ. ನಾಯಕನನ್ನು ಸ್ಥಿರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು ಅಥವಾ ಸಂಸ್ಥೆಯಲ್ಲಿನ ಗೆಳೆಯರಿಂದ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಬಹುದು. ನಾಯಕರ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಲು ಗಾಸಿಪ್ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಸಹ ಬಳಸಲಾಗುತ್ತದೆ.
ಸ್ವತ್ತುಗಳು - ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರುವ ಮತ್ತು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಘಟಕಗಳು. ಹೆಚ್ಚು ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೇಳುವುದಾದರೆ, ಇದು JSON ಸ್ವರೂಪದಲ್ಲಿ ಪ್ರಮುಖ ಮೌಲ್ಯದ ಡೇಟಾ. ಇದು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ದಾಖಲಾಗಿರುವ ಈ ಡೇಟಾ. ಅವರು ಇತಿಹಾಸವನ್ನು ಹೊಂದಿದ್ದಾರೆ, ಅದನ್ನು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ ಮತ್ತು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು "ವರ್ಲ್ಡ್ ಸ್ಟೇಟ್" ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ವ್ಯವಹಾರ ಕಾರ್ಯಗಳನ್ನು ಅವಲಂಬಿಸಿ ಡೇಟಾ ರಚನೆಗಳನ್ನು ನಿರಂಕುಶವಾಗಿ ತುಂಬಿಸಲಾಗುತ್ತದೆ. ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ಕ್ಷೇತ್ರಗಳಿಲ್ಲ, ಸ್ವತ್ತುಗಳು ಮಾಲೀಕರನ್ನು ಹೊಂದಿರಬೇಕು ಮತ್ತು ಮೌಲ್ಯಯುತವಾಗಿರಬೇಕು ಎಂಬುದು ಒಂದೇ ಶಿಫಾರಸು.
ಖಾತಾ ಪುಸ್ತಕ - ಬ್ಲಾಕ್ಚೈನ್ ಮತ್ತು ವರ್ಡ್ ಸ್ಟೇಟ್ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು ಪ್ರಸ್ತುತ ಸ್ವತ್ತುಗಳ ಸ್ಥಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ವಿಶ್ವ ರಾಜ್ಯವು LevelDB ಅಥವಾ CouchDB ಅನ್ನು ಬಳಸುತ್ತದೆ.
ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದ - ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ಸಿಸ್ಟಮ್ನ ವ್ಯವಹಾರ ತರ್ಕವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ನಲ್ಲಿ, ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ಚೈನ್ಕೋಡ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಚೈನ್ಕೋಡ್ ಬಳಸಿ, ಅವುಗಳ ಮೇಲಿನ ಸ್ವತ್ತುಗಳು ಮತ್ತು ವಹಿವಾಟುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ. ತಾಂತ್ರಿಕ ಪರಿಭಾಷೆಯಲ್ಲಿ, ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳು JS ಅಥವಾ Go ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಅಳವಡಿಸಲಾದ ಸಾಫ್ಟ್ವೇರ್ ಮಾಡ್ಯೂಲ್ಗಳಾಗಿವೆ.
ಅನುಮೋದನೆ ನೀತಿ - ಪ್ರತಿ ಚೈನ್ಕೋಡ್ಗೆ, ವಹಿವಾಟಿಗೆ ಎಷ್ಟು ದೃಢೀಕರಣಗಳನ್ನು ನಿರೀಕ್ಷಿಸಬೇಕು ಮತ್ತು ಯಾರಿಂದ ನೀವು ನೀತಿಯನ್ನು ಹೊಂದಿಸಬಹುದು. ನೀತಿಯನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ, ಡೀಫಾಲ್ಟ್ ಆಗಿರುತ್ತದೆ: "ಚಾನಲ್ನಲ್ಲಿರುವ ಯಾವುದೇ ಸಂಸ್ಥೆಯ ಯಾವುದೇ ಸದಸ್ಯರಿಂದ ವಹಿವಾಟನ್ನು ದೃಢೀಕರಿಸಬೇಕು." ನೀತಿಗಳ ಉದಾಹರಣೆಗಳು:
ವಹಿವಾಟನ್ನು ಸಂಸ್ಥೆಯ ಯಾವುದೇ ನಿರ್ವಾಹಕರು ಅನುಮೋದಿಸಬೇಕು;
ಸಂಸ್ಥೆಯ ಯಾವುದೇ ಸದಸ್ಯ ಅಥವಾ ಕ್ಲೈಂಟ್ನಿಂದ ದೃಢೀಕರಿಸಬೇಕು;
ಯಾವುದೇ ಪೀರ್ ಸಂಸ್ಥೆಯಿಂದ ದೃಢೀಕರಿಸಬೇಕು.
ಆರ್ಡರ್ ಮಾಡುವ ಸೇವೆ - ವಹಿವಾಟುಗಳನ್ನು ಬ್ಲಾಕ್ಗಳಾಗಿ ಪ್ಯಾಕ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಚಾನಲ್ನಲ್ಲಿರುವ ಗೆಳೆಯರಿಗೆ ಕಳುಹಿಸುತ್ತದೆ. ನೆಟ್ವರ್ಕ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಗೆಳೆಯರಿಗೆ ಸಂದೇಶಗಳ ವಿತರಣೆಯನ್ನು ಖಾತರಿಪಡಿಸುತ್ತದೆ. ಕೈಗಾರಿಕಾ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಕಾಫ್ಕಾ ಸಂದೇಶ ಬ್ರೋಕರ್, ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಪರೀಕ್ಷೆಗಾಗಿ ಸೊಲೊ.
ಕಾಲ್ಫ್ಲೋ
ಅಪ್ಲಿಕೇಶನ್ Go, Node.js ಅಥವಾ Java SDK ಬಳಸಿಕೊಂಡು ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ;
ಕ್ಲೈಂಟ್ tx ವ್ಯವಹಾರವನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಅನುಮೋದಿಸುವ ಗೆಳೆಯರಿಗೆ ಕಳುಹಿಸುತ್ತದೆ;
ಪೀರ್ ಕ್ಲೈಂಟ್ನ ಸಹಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತಾನೆ, ವಹಿವಾಟನ್ನು ಪೂರ್ಣಗೊಳಿಸುತ್ತಾನೆ ಮತ್ತು ಗ್ರಾಹಕನಿಗೆ ಅನುಮೋದನೆ ಸಹಿಯನ್ನು ಕಳುಹಿಸುತ್ತಾನೆ. ಚೈನ್ಕೋಡ್ ಅನ್ನು ಅನುಮೋದಿಸುವ ಪೀರ್ನಲ್ಲಿ ಮಾತ್ರ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅದರ ಮರಣದಂಡನೆಯ ಫಲಿತಾಂಶವನ್ನು ಎಲ್ಲಾ ಗೆಳೆಯರಿಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಕೆಲಸದ ಈ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು PBFT (ಪ್ರಾಕ್ಟಿಕಲ್ ಬೈಜಾಂಟೈನ್ ಫಾಲ್ಟ್ ಟಾಲರೆಂಟ್) ಒಮ್ಮತ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ನಿಂದ ಭಿನ್ನವಾಗಿದೆ ಕ್ಲಾಸಿಕ್ BFT ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ ಮತ್ತು ದೃಢೀಕರಣವನ್ನು ಎಲ್ಲಾ ಭಾಗವಹಿಸುವವರಿಂದ ನಿರೀಕ್ಷಿಸಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ಗುಂಪಿನಿಂದ ಮಾತ್ರ;
ಗ್ರಾಹಕರು ಅನುಮೋದನೆ ನೀತಿಗೆ ಅನುಗುಣವಾದ ಪ್ರತಿಕ್ರಿಯೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ, ಅವರು ವ್ಯವಹಾರವನ್ನು ಆರ್ಡರ್ ಮಾಡುವ ಸೇವೆಗೆ ಕಳುಹಿಸುತ್ತಾರೆ;
ಆರ್ಡರ್ ಮಾಡುವ ಸೇವೆಯು ಒಂದು ಬ್ಲಾಕ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಒಪ್ಪಿಸುವ ಎಲ್ಲಾ ಗೆಳೆಯರಿಗೆ ಕಳುಹಿಸುತ್ತದೆ. ಆರ್ಡರ್ ಮಾಡುವ ಸೇವೆಯು ಬ್ಲಾಕ್ಗಳ ಅನುಕ್ರಮ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ, ಇದು ಲೆಡ್ಜರ್ ಫೋರ್ಕ್ ಎಂದು ಕರೆಯುವುದನ್ನು ನಿವಾರಿಸುತ್ತದೆ ("ಫೋರ್ಕ್ಸ್" ವಿಭಾಗವನ್ನು ನೋಡಿ);
ಗೆಳೆಯರು ಬ್ಲಾಕ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ, ಅನುಮೋದನೆ ನೀತಿಯನ್ನು ಮತ್ತೊಮ್ಮೆ ಪರಿಶೀಲಿಸಿ, ಬ್ಲಾಕ್ಚೈನ್ಗೆ ಬ್ಲಾಕ್ ಅನ್ನು ಬರೆಯಿರಿ ಮತ್ತು "ವಿಶ್ವ ಸ್ಥಿತಿ" DB ಯಲ್ಲಿ ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಿ.
ಆ. ಇದು ನೋಡ್ಗಳ ನಡುವೆ ಪಾತ್ರಗಳ ವಿಭಜನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಇದು ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಸ್ಕೇಲೆಬಲ್ ಮತ್ತು ಸುರಕ್ಷಿತವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ:
ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳು (ಚೈನ್ಕೋಡ್) ಸಹವರ್ತಿಗಳನ್ನು ಅನುಮೋದಿಸುತ್ತವೆ. ಇದು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳ ಗೌಪ್ಯತೆಯನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಇದನ್ನು ಎಲ್ಲಾ ಭಾಗವಹಿಸುವವರು ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ, ಆದರೆ ಗೆಳೆಯರನ್ನು ಅನುಮೋದಿಸುವ ಮೂಲಕ ಮಾತ್ರ.
ಆದೇಶವು ತ್ವರಿತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕು. ಆರ್ಡರ್ ಮಾಡುವಿಕೆಯು ಕೇವಲ ಒಂದು ಬ್ಲಾಕ್ ಅನ್ನು ರೂಪಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ನಾಯಕ ಗೆಳೆಯರ ಸ್ಥಿರ ಗುಂಪಿಗೆ ಕಳುಹಿಸುತ್ತದೆ ಎಂಬ ಅಂಶದಿಂದ ಇದನ್ನು ಖಚಿತಪಡಿಸಲಾಗುತ್ತದೆ.
ಬದ್ಧತೆಯ ಗೆಳೆಯರು ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಮಾತ್ರ ಸಂಗ್ರಹಿಸುತ್ತಾರೆ - ಅವುಗಳಲ್ಲಿ ಹಲವು ಇರಬಹುದು ಮತ್ತು ಅವರಿಗೆ ಹೆಚ್ಚಿನ ಶಕ್ತಿ ಮತ್ತು ತ್ವರಿತ ಕಾರ್ಯಾಚರಣೆಯ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ.
ಆದ್ದರಿಂದ, ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ನಿಜವಾದ ಸಾರ್ವತ್ರಿಕ ವ್ಯವಸ್ಥೆಯಾಗಿದ್ದು, ಇದರೊಂದಿಗೆ ನೀವು:
ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಅನಿಯಂತ್ರಿತ ವ್ಯಾಪಾರ ತರ್ಕವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ;
JSON ಸ್ವರೂಪದಲ್ಲಿ ಬ್ಲಾಕ್ಚೈನ್ ಡೇಟಾಬೇಸ್ನಿಂದ ಡೇಟಾವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ ಮತ್ತು ಸ್ವೀಕರಿಸಿ;
ಪ್ರಮಾಣಪತ್ರ ಪ್ರಾಧಿಕಾರವನ್ನು ಬಳಸಿಕೊಂಡು API ಪ್ರವೇಶವನ್ನು ನೀಡಿ ಮತ್ತು ಪರಿಶೀಲಿಸಿ.
ಈಗ ನಾವು ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ನ ನಿಶ್ಚಿತಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇವೆ, ಅಂತಿಮವಾಗಿ ಉಪಯುಕ್ತವಾದದ್ದನ್ನು ಮಾಡೋಣ!
ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ನಿಯೋಜಿಸಲಾಗುತ್ತಿದೆ
ಸಮಸ್ಯೆ ಹೇಳಿಕೆ
ಕೆಳಗಿನ ಕಾರ್ಯಗಳೊಂದಿಗೆ ಸಿಟ್ಕಾಯಿನ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಕಾರ್ಯವಾಗಿದೆ: ಖಾತೆಯನ್ನು ರಚಿಸಿ, ಸಮತೋಲನವನ್ನು ಪಡೆಯಿರಿ, ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಟಾಪ್ ಅಪ್ ಮಾಡಿ, ಒಂದು ಖಾತೆಯಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ನಾಣ್ಯಗಳನ್ನು ವರ್ಗಾಯಿಸಿ. ವಸ್ತು ಮಾದರಿಯನ್ನು ಸೆಳೆಯೋಣ, ಅದನ್ನು ನಾವು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದಲ್ಲಿ ಮತ್ತಷ್ಟು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ನಾವು ಹೆಸರುಗಳಿಂದ ಗುರುತಿಸಲ್ಪಟ್ಟ ಖಾತೆಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಬ್ಯಾಲೆನ್ಸ್ ಮತ್ತು ಖಾತೆಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿರುತ್ತೇವೆ. ಖಾತೆಗಳು ಮತ್ತು ಖಾತೆಗಳ ಪಟ್ಟಿ, ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಸ್ವತ್ತುಗಳ ವಿಷಯದಲ್ಲಿ. ಅದರಂತೆ, ಅವರು ಇತಿಹಾಸ ಮತ್ತು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿದ್ದಾರೆ. ನಾನು ಇದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಸೆಳೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ:
ಉನ್ನತ ಅಂಕಿಅಂಶಗಳು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯಾಗಿದ್ದು, ಇದನ್ನು "ವಿಶ್ವ ಸ್ಥಿತಿ" ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ಅವುಗಳ ಕೆಳಗೆ ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಇತಿಹಾಸವನ್ನು ತೋರಿಸುವ ಅಂಕಿಅಂಶಗಳಿವೆ. ಸ್ವತ್ತುಗಳ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು ವಹಿವಾಟುಗಳಿಂದ ಬದಲಾಯಿಸಲಾಗಿದೆ. ಆಸ್ತಿಯು ಒಟ್ಟಾರೆಯಾಗಿ ಮಾತ್ರ ಬದಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ವಹಿವಾಟಿನ ಪರಿಣಾಮವಾಗಿ, ಹೊಸ ವಸ್ತುವನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಆಸ್ತಿಯ ಪ್ರಸ್ತುತ ಮೌಲ್ಯವು ಇತಿಹಾಸಕ್ಕೆ ಹೋಗುತ್ತದೆ.
IBM ಕ್ಲೌಡ್
ನಾವು ಖಾತೆಯನ್ನು ರಚಿಸುತ್ತೇವೆ IBM ಕ್ಲೌಡ್. ಬ್ಲಾಕ್ಚೈನ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ಬಳಸಲು, ಅದನ್ನು ಪೇ-ಆಸ್-ಯು-ಗೋಗೆ ಅಪ್ಗ್ರೇಡ್ ಮಾಡಬೇಕು. ಈ ಪ್ರಕ್ರಿಯೆಯು ತ್ವರಿತವಾಗದಿರಬಹುದು, ಏಕೆಂದರೆ... IBM ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿಯನ್ನು ವಿನಂತಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಪರಿಶೀಲಿಸುತ್ತದೆ. ಸಕಾರಾತ್ಮಕ ಟಿಪ್ಪಣಿಯಲ್ಲಿ, IBM ಉತ್ತಮ ತರಬೇತಿ ಸಾಮಗ್ರಿಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ನಾನು ಹೇಳಬಲ್ಲೆ ಅದು ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಅನ್ನು ಅವರ ಕ್ಲೌಡ್ನಲ್ಲಿ ನಿಯೋಜಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಕೆಳಗಿನ ಲೇಖನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳ ಸರಣಿಯನ್ನು ನಾನು ಇಷ್ಟಪಟ್ಟಿದ್ದೇನೆ:
ಕೆಳಗಿನವುಗಳು IBM Blockchain ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳಾಗಿವೆ. ಇದು ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಸೂಚನೆಯಲ್ಲ, ಆದರೆ ಕಾರ್ಯದ ವ್ಯಾಪ್ತಿಯ ಪ್ರದರ್ಶನವಾಗಿದೆ. ಆದ್ದರಿಂದ, ನಮ್ಮ ಉದ್ದೇಶಗಳಿಗಾಗಿ, ನಾವು ಒಂದು ಸಂಸ್ಥೆಯನ್ನು ಮಾಡುತ್ತೇವೆ:
ನಾವು ಅದರಲ್ಲಿ ನೋಡ್ಗಳನ್ನು ರಚಿಸುತ್ತೇವೆ: ಆರ್ಡರ್ ಸಿಎ, ಆರ್ಗ್ 1 ಸಿಎ, ಆರ್ಡರ್ ಪೀರ್:
ನಾವು ಬಳಕೆದಾರರನ್ನು ರಚಿಸುತ್ತೇವೆ:
ಚಾನಲ್ ರಚಿಸಿ ಮತ್ತು ಅದನ್ನು ಸಿಟ್ಕಾಯಿನ್ ಎಂದು ಕರೆಯಿರಿ:
ಮೂಲಭೂತವಾಗಿ ಚಾನಲ್ ಒಂದು ಬ್ಲಾಕ್ಚೈನ್ ಆಗಿದೆ, ಆದ್ದರಿಂದ ಇದು ಬ್ಲಾಕ್ ಶೂನ್ಯದಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ (ಜೆನೆಸಿಸ್ ಬ್ಲಾಕ್):
ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ಬರೆಯುವುದು
/*
* Citcoin smart-contract v1.5 for Hyperledger Fabric
* (c) Alexey Sushkov, 2019
*/
'use strict';
const { Contract } = require('fabric-contract-api');
const maxAccounts = 5;
class CitcoinEvents extends Contract {
async instantiate(ctx) {
console.info('instantiate');
let emptyList = [];
await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(emptyList)));
}
// Get all accounts
async GetAccounts(ctx) {
// Get account list:
let accounts = '{}'
let accountsData = await ctx.stub.getState('accounts');
if (accountsData) {
accounts = JSON.parse(accountsData.toString());
} else {
throw new Error('accounts not found');
}
return accountsData.toString()
}
// add a account object to the blockchain state identifited by their name
async AddAccount(ctx, name, balance) {
// this is account data:
let account = {
name: name,
balance: Number(balance),
type: 'account',
};
// create account:
await ctx.stub.putState(name, Buffer.from(JSON.stringify(account)));
// Add account to list:
let accountsData = await ctx.stub.getState('accounts');
if (accountsData) {
let accounts = JSON.parse(accountsData.toString());
if (accounts.length < maxAccounts)
{
accounts.push(name);
await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(accounts)));
} else {
throw new Error('Max accounts number reached');
}
} else {
throw new Error('accounts not found');
}
// return object
return JSON.stringify(account);
}
// Sends money from Account to Account
async SendFrom(ctx, fromAccount, toAccount, value) {
// get Account from
let fromData = await ctx.stub.getState(fromAccount);
let from;
if (fromData) {
from = JSON.parse(fromData.toString());
if (from.type !== 'account') {
throw new Error('wrong from type');
}
} else {
throw new Error('Accout from not found');
}
// get Account to
let toData = await ctx.stub.getState(toAccount);
let to;
if (toData) {
to = JSON.parse(toData.toString());
if (to.type !== 'account') {
throw new Error('wrong to type');
}
} else {
throw new Error('Accout to not found');
}
// update the balances
if ((from.balance - Number(value)) >= 0 ) {
from.balance -= Number(value);
to.balance += Number(value);
} else {
throw new Error('From Account: not enought balance');
}
await ctx.stub.putState(from.name, Buffer.from(JSON.stringify(from)));
await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
// define and set Event
let Event = {
type: "SendFrom",
from: from.name,
to: to.name,
balanceFrom: from.balance,
balanceTo: to.balance,
value: value
};
await ctx.stub.setEvent('SendFrom', Buffer.from(JSON.stringify(Event)));
// return to object
return JSON.stringify(from);
}
// get the state from key
async GetState(ctx, key) {
let data = await ctx.stub.getState(key);
let jsonData = JSON.parse(data.toString());
return JSON.stringify(jsonData);
}
// GetBalance
async GetBalance(ctx, accountName) {
let data = await ctx.stub.getState(accountName);
let jsonData = JSON.parse(data.toString());
return JSON.stringify(jsonData);
}
// Refill own balance
async RefillBalance(ctx, toAccount, value) {
// get Account to
let toData = await ctx.stub.getState(toAccount);
let to;
if (toData) {
to = JSON.parse(toData.toString());
if (to.type !== 'account') {
throw new Error('wrong to type');
}
} else {
throw new Error('Accout to not found');
}
// update the balance
to.balance += Number(value);
await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
// define and set Event
let Event = {
type: "RefillBalance",
to: to.name,
balanceTo: to.balance,
value: value
};
await ctx.stub.setEvent('RefillBalance', Buffer.from(JSON.stringify(Event)));
// return to object
return JSON.stringify(from);
}
}
module.exports = CitcoinEvents;
ಅರ್ಥಗರ್ಭಿತವಾಗಿ, ಇಲ್ಲಿ ಎಲ್ಲವೂ ಸ್ಪಷ್ಟವಾಗಿರಬೇಕು:
ಡೆಮೊ ಪ್ರೋಗ್ರಾಂ ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ API ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕರೆಯುವ ಹಲವಾರು ಕಾರ್ಯಗಳು (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ಇವೆ.
SendFrom ಮತ್ತು RefillBalance ಕಾರ್ಯಗಳು ಡೆಮೊ ಪ್ರೋಗ್ರಾಂ ಸ್ವೀಕರಿಸುವ ಈವೆಂಟ್ಗಳನ್ನು ರಚಿಸುತ್ತವೆ.
ತತ್ಕ್ಷಣದ ಕಾರ್ಯವನ್ನು ಒಮ್ಮೆ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ತ್ವರಿತಗೊಳಿಸಿದಾಗ ಕರೆಯಲಾಗುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, ಇದನ್ನು ಒಮ್ಮೆ ಮಾತ್ರವಲ್ಲ, ಪ್ರತಿ ಬಾರಿಯೂ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಆವೃತ್ತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ, ಖಾಲಿ ರಚನೆಯೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಕೆಟ್ಟ ಕಲ್ಪನೆ, ಏಕೆಂದರೆ ಈಗ, ನಾವು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಆವೃತ್ತಿಯನ್ನು ಬದಲಾಯಿಸಿದಾಗ, ನಾವು ಪ್ರಸ್ತುತ ಪಟ್ಟಿಯನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದರೆ ಪರವಾಗಿಲ್ಲ, ನಾನು ಕಲಿಯುತ್ತಿದ್ದೇನೆ).
ಖಾತೆಗಳು ಮತ್ತು ಖಾತೆಗಳ ಪಟ್ಟಿ JSON ಡೇಟಾ ರಚನೆಗಳಾಗಿವೆ. ಡೇಟಾ ಕುಶಲತೆಗೆ JS ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ನೀವು getState ಫಂಕ್ಷನ್ ಕರೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಆಸ್ತಿಯ ಪ್ರಸ್ತುತ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಬಹುದು ಮತ್ತು ಅದನ್ನು putState ಬಳಸಿಕೊಂಡು ನವೀಕರಿಸಬಹುದು.
ಖಾತೆಯನ್ನು ರಚಿಸುವಾಗ, AddAccount ಕಾರ್ಯವನ್ನು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದರಲ್ಲಿ ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿನ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಖಾತೆಗಳಿಗೆ ಹೋಲಿಕೆ ಮಾಡಲಾಗುತ್ತದೆ (maxAccounts = 5). ಮತ್ತು ಇಲ್ಲಿ ಜಾಂಬ್ ಇದೆ (ನೀವು ಗಮನಿಸಿದ್ದೀರಾ?), ಇದು ಖಾತೆಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಅಂತ್ಯವಿಲ್ಲದ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಅಂತಹ ತಪ್ಪುಗಳನ್ನು ತಪ್ಪಿಸಬೇಕು)
ಮುಂದೆ, ನಾವು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ಚಾನಲ್ಗೆ ಲೋಡ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಅದನ್ನು ತ್ವರಿತವಾಗಿ ಮಾಡುತ್ತೇವೆ:
ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ವ್ಯವಹಾರವನ್ನು ನೋಡೋಣ:
ನಮ್ಮ ಚಾನಲ್ ಕುರಿತು ವಿವರಗಳನ್ನು ನೋಡೋಣ:
ಪರಿಣಾಮವಾಗಿ, ನಾವು IBM ಕ್ಲೌಡ್ನಲ್ಲಿ ಬ್ಲಾಕ್ಚೈನ್ ನೆಟ್ವರ್ಕ್ನ ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರವನ್ನು ಪಡೆಯುತ್ತೇವೆ. ರೇಖಾಚಿತ್ರವು ವರ್ಚುವಲ್ ಸರ್ವರ್ನಲ್ಲಿ ಅಮೆಜಾನ್ ಕ್ಲೌಡ್ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಡೆಮೊ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸಹ ತೋರಿಸುತ್ತದೆ (ಮುಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಅದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು):
ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ API ಕರೆಗಳಿಗಾಗಿ GUI ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ
ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ API ಅನ್ನು ಹೊಂದಿದ್ದು ಇದನ್ನು ಬಳಸಬಹುದು:
ಚಾನಲ್ ರಚಿಸಿ;
ಸಂಪರ್ಕಗಳು ಚಾನಲ್ಗೆ ಇಣುಕುತ್ತವೆ;
ಚಾನಲ್ನಲ್ಲಿ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳ ಸ್ಥಾಪನೆ ಮತ್ತು ತ್ವರಿತಗೊಳಿಸುವಿಕೆ;
ಕರೆ ವ್ಯವಹಾರಗಳು;
ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು ವಿನಂತಿಸಿ.
ಅಪ್ಲಿಕೇಶನ್ ಅಭಿವೃದ್ಧಿ
ನಮ್ಮ ಡೆಮೊ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ನಾವು ವ್ಯವಹಾರಗಳಿಗೆ ಕರೆ ಮಾಡಲು ಮತ್ತು ಮಾಹಿತಿಯನ್ನು ವಿನಂತಿಸಲು ಮಾತ್ರ API ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಏಕೆಂದರೆ IBM blockchain ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಈಗಾಗಲೇ ಉಳಿದ ಹಂತಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೇವೆ. ನಾವು ಪ್ರಮಾಣಿತ ತಂತ್ರಜ್ಞಾನದ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು GUI ಅನ್ನು ಬರೆಯುತ್ತೇವೆ: Express.js + Vue.js + Node.js. ಆಧುನಿಕ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ನೀವು ಪ್ರತ್ಯೇಕ ಲೇಖನವನ್ನು ಬರೆಯಬಹುದು. ನಾನು ಹೆಚ್ಚು ಇಷ್ಟಪಟ್ಟ ಉಪನ್ಯಾಸಗಳ ಸರಣಿಯ ಲಿಂಕ್ ಅನ್ನು ಇಲ್ಲಿ ಬಿಡುತ್ತೇನೆ: Vue.js & Express.js ಬಳಸಿಕೊಂಡು ಪೂರ್ಣ ಸ್ಟಾಕ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್. ಫಲಿತಾಂಶವು Google ನ ವಸ್ತು ವಿನ್ಯಾಸ ಶೈಲಿಯಲ್ಲಿ ಪರಿಚಿತ ಚಿತ್ರಾತ್ಮಕ ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ. ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ನಡುವಿನ REST API ಹಲವಾರು ಕರೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:
HyperledgerDemo/v1/init - ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಆರಂಭಿಸಿ;
HyperledgerDemo/v1/accounts/list — ಎಲ್ಲಾ ಖಾತೆಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ;
HyperledgerDemo/v1/account?name=Bob&balance=100 — ಬಾಬ್ ಖಾತೆಯನ್ನು ರಚಿಸಿ;
HyperledgerDemo/v1/info?account=Bob — ಬಾಬ್ ಖಾತೆಯ ಬಗ್ಗೆ ಮಾಹಿತಿ ಪಡೆಯಿರಿ;
HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - ಬಾಬ್ನಿಂದ ಆಲಿಸ್ಗೆ ಎರಡು ನಾಣ್ಯಗಳನ್ನು ವರ್ಗಾಯಿಸಿ;
HyperledgerDemo/v1/ಡಿಸ್ಕನೆಕ್ಟ್ - ಬ್ಲಾಕ್ಚೈನ್ಗೆ ಸಂಪರ್ಕವನ್ನು ಮುಚ್ಚಿ.
ಒಳಗೊಂಡಿರುವ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ API ನ ವಿವರಣೆ ಪೋಸ್ಟ್ಮ್ಯಾನ್ ವೆಬ್ಸೈಟ್ - HTTP API ಅನ್ನು ಪರೀಕ್ಷಿಸಲು ಪ್ರಸಿದ್ಧವಾದ ಪ್ರೋಗ್ರಾಂ.
ಅಮೆಜಾನ್ ಕ್ಲೌಡ್ನಲ್ಲಿ ಡೆಮೊ ಅಪ್ಲಿಕೇಶನ್
ನಾನು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಮೆಜಾನ್ಗೆ ಅಪ್ಲೋಡ್ ಮಾಡಿದ್ದೇನೆ ಏಕೆಂದರೆ... ನನ್ನ ಖಾತೆಯನ್ನು ಅಪ್ಗ್ರೇಡ್ ಮಾಡಲು ಮತ್ತು ವರ್ಚುವಲ್ ಸರ್ವರ್ಗಳನ್ನು ರಚಿಸಲು ನನಗೆ ಅನುಮತಿಸಲು IBM ಗೆ ಇನ್ನೂ ಸಾಧ್ಯವಾಗಿಲ್ಲ. ಡೊಮೇನ್ಗೆ ಚೆರ್ರಿ ಸೇರಿಸುವುದು ಹೇಗೆ: www.citcoin.info. ನಾನು ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಸರ್ವರ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತೇನೆ, ನಂತರ ಅದನ್ನು ಆಫ್ ಮಾಡುತ್ತೇನೆ, ಏಕೆಂದರೆ... ಬಾಡಿಗೆಗೆ ಸೆಂಟ್ಗಳು ತೊಟ್ಟಿಕ್ಕುತ್ತಿವೆ, ಮತ್ತು ಸಿಟ್ಕಾಯಿನ್ ನಾಣ್ಯಗಳನ್ನು ಇನ್ನೂ ಸ್ಟಾಕ್ ಎಕ್ಸ್ಚೇಂಜ್ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾಗಿಲ್ಲ) ನಾನು ಲೇಖನದಲ್ಲಿ ಡೆಮೊದ ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳನ್ನು ಸೇರಿಸಿದ್ದೇನೆ ಇದರಿಂದ ಕೆಲಸದ ತರ್ಕ ಸ್ಪಷ್ಟವಾಗಿದೆ. ಡೆಮೊ ಅಪ್ಲಿಕೇಶನ್ ಮಾಡಬಹುದು:
ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ;
ಖಾತೆಯನ್ನು ರಚಿಸಿ (ಆದರೆ ಈಗ ನೀವು ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದಲ್ಲಿ ಸೂಚಿಸಲಾದ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಖಾತೆಗಳನ್ನು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ತಲುಪಲಾಗಿದೆ);
ಖಾತೆಗಳ ಪಟ್ಟಿಯನ್ನು ಸ್ವೀಕರಿಸಿ;
ಆಲಿಸ್, ಬಾಬ್ ಮತ್ತು ಅಲೆಕ್ಸ್ ನಡುವೆ ಸಿಟ್ಕಾಯಿನ್ ನಾಣ್ಯಗಳನ್ನು ವರ್ಗಾಯಿಸಿ;
ಈವೆಂಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸಿ (ಆದರೆ ಈಗ ಈವೆಂಟ್ಗಳನ್ನು ತೋರಿಸಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ, ಆದ್ದರಿಂದ ಸರಳತೆಗಾಗಿ, ಈವೆಂಟ್ಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ ಎಂದು ಇಂಟರ್ಫೇಸ್ ಹೇಳುತ್ತದೆ);
ಲಾಗ್ ಕ್ರಿಯೆಗಳು.
ಮೊದಲು ನಾವು ಬ್ಲಾಕ್ಚೈನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ:
ಮುಂದೆ, ನಾವು ನಮ್ಮ ಖಾತೆಯನ್ನು ರಚಿಸುತ್ತೇವೆ, ಸಮತೋಲನದೊಂದಿಗೆ ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡಬೇಡಿ:
ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಖಾತೆಗಳ ಪಟ್ಟಿಯನ್ನು ನಾವು ಪಡೆಯುತ್ತೇವೆ:
ನಾವು ಕಳುಹಿಸುವವರು ಮತ್ತು ಸ್ವೀಕರಿಸುವವರನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಅವರ ಬಾಕಿಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ. ಕಳುಹಿಸುವವರು ಮತ್ತು ಸ್ವೀಕರಿಸುವವರು ಒಂದೇ ಆಗಿದ್ದರೆ, ನಂತರ ಅವರ ಖಾತೆಯನ್ನು ಮರುಪೂರಣಗೊಳಿಸಲಾಗುತ್ತದೆ:
ಲಾಗ್ನಲ್ಲಿ ನಾವು ವಹಿವಾಟುಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತೇವೆ:
ವಾಸ್ತವವಾಗಿ, ಡೆಮೊ ಪ್ರೋಗ್ರಾಂನೊಂದಿಗೆ ಅಷ್ಟೆ. ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ನಮ್ಮ ವಹಿವಾಟನ್ನು ನೀವು ಕೆಳಗೆ ನೋಡಬಹುದು:
ಮತ್ತು ವಹಿವಾಟುಗಳ ಸಾಮಾನ್ಯ ಪಟ್ಟಿ:
ಇದರೊಂದಿಗೆ, ಸಿಟ್ಕಾಯಿನ್ ನೆಟ್ವರ್ಕ್ ರಚಿಸಲು ನಾವು PoC ಅನುಷ್ಠಾನವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಳಿಸಿದ್ದೇವೆ. ನಾಣ್ಯಗಳನ್ನು ವರ್ಗಾಯಿಸಲು ಸಿಟ್ಕಾಯಿನ್ ಪೂರ್ಣ ಪ್ರಮಾಣದ ನೆಟ್ವರ್ಕ್ ಆಗಲು ಇನ್ನೇನು ಮಾಡಬೇಕು? ಬಹಳ ಕಡಿಮೆ:
ಖಾತೆಯನ್ನು ರಚಿಸುವ ಹಂತದಲ್ಲಿ, ಖಾಸಗಿ / ಸಾರ್ವಜನಿಕ ಕೀಲಿಯ ಉತ್ಪಾದನೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ. ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಖಾತೆ ಬಳಕೆದಾರರೊಂದಿಗೆ ಸಂಗ್ರಹಿಸಬೇಕು, ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಕು.
ನಾಣ್ಯ ವರ್ಗಾವಣೆಯನ್ನು ಮಾಡಿ, ಇದರಲ್ಲಿ ಬಳಕೆದಾರರನ್ನು ಗುರುತಿಸಲು ಹೆಸರಿಗಿಂತ ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ಅವರ ಖಾಸಗಿ ಕೀಲಿಯೊಂದಿಗೆ ಬಳಕೆದಾರರಿಂದ ಸರ್ವರ್ಗೆ ಹೋಗುವ ವಹಿವಾಟುಗಳನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿ.
ತೀರ್ಮಾನಕ್ಕೆ
ನಾವು ಈ ಕೆಳಗಿನ ಕಾರ್ಯಗಳೊಂದಿಗೆ ಸಿಟ್ಕಾಯಿನ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ್ದೇವೆ: ಖಾತೆಯನ್ನು ಸೇರಿಸಿ, ಸಮತೋಲನವನ್ನು ಪಡೆಯಿರಿ, ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಟಾಪ್ ಅಪ್ ಮಾಡಿ, ಒಂದು ಖಾತೆಯಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ನಾಣ್ಯಗಳನ್ನು ವರ್ಗಾಯಿಸಿ. ಹಾಗಾದರೆ, ಪಿಒಸಿ ನಿರ್ಮಿಸಲು ನಮಗೆ ಏನು ವೆಚ್ಚವಾಯಿತು?
ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಬ್ಲಾಕ್ಚೈನ್ ಮತ್ತು ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ ಅನ್ನು ಅಧ್ಯಯನ ಮಾಡಬೇಕಾಗುತ್ತದೆ;
IBM ಅಥವಾ Amazon ಮೋಡಗಳನ್ನು ಬಳಸಲು ಕಲಿಯಿರಿ;
JS ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ ಮತ್ತು ಕೆಲವು ವೆಬ್ ಚೌಕಟ್ಟನ್ನು ಕಲಿಯಿರಿ;
ಕೆಲವು ಡೇಟಾವನ್ನು ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಅಲ್ಲ, ಆದರೆ ಪ್ರತ್ಯೇಕ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಕಾದರೆ, ನಂತರ ಸಂಯೋಜಿಸಲು ಕಲಿಯಿರಿ, ಉದಾಹರಣೆಗೆ, PostgreSQL ನೊಂದಿಗೆ;
ಮತ್ತು ಕೊನೆಯದಾಗಿ ಆದರೆ ಕನಿಷ್ಠವಲ್ಲ - ಲಿನಕ್ಸ್ನ ಜ್ಞಾನವಿಲ್ಲದೆ ನೀವು ಆಧುನಿಕ ಜಗತ್ತಿನಲ್ಲಿ ಬದುಕಲು ಸಾಧ್ಯವಿಲ್ಲ!)
ಸಹಜವಾಗಿ, ಇದು ರಾಕೆಟ್ ವಿಜ್ಞಾನವಲ್ಲ, ಆದರೆ ನೀವು ಕಷ್ಟಪಟ್ಟು ಕೆಲಸ ಮಾಡಬೇಕಾಗುತ್ತದೆ!
GitHub ನಲ್ಲಿ ಮೂಲಗಳು
ಮೂಲಗಳನ್ನು ಹಾಕಲಾಗಿದೆ GitHub. ರೆಪೊಸಿಟರಿಯ ಸಂಕ್ಷಿಪ್ತ ವಿವರಣೆ:
ಕ್ಯಾಟಲಾಗ್ «ಸರ್ವರ್» — Node.js ಸರ್ವರ್
ಕ್ಯಾಟಲಾಗ್ «ಕ್ಲೈಂಟ್» — Node.js ಕ್ಲೈಂಟ್
ಕ್ಯಾಟಲಾಗ್ «blockchain"(ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳು ಮತ್ತು ಕೀಗಳು, ಸಹಜವಾಗಿ, ಕೆಲಸ ಮಾಡುತ್ತಿಲ್ಲ ಮತ್ತು ಉದಾಹರಣೆಯಾಗಿ ಮಾತ್ರ ನೀಡಲಾಗಿದೆ):
ಒಪ್ಪಂದ - ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ಮೂಲ ಕೋಡ್
Wallet — ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ API ಅನ್ನು ಬಳಸುವ ಬಳಕೆದಾರ ಕೀಗಳು.
*.cds - ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳ ಸಂಕಲನ ಆವೃತ್ತಿಗಳು
*.json ಫೈಲ್ಗಳು - ಹೈಪರ್ಲೆಡ್ಜರ್ ಫ್ಯಾಬ್ರಿಕ್ API ಅನ್ನು ಬಳಸುವುದಕ್ಕಾಗಿ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳ ಉದಾಹರಣೆಗಳು