ನಿಯೋಜನೆಯ ಮೊದಲು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸವನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು: ಕ್ರಿಪ್ಟೋ ವಿನಿಮಯಕ್ಕಾಗಿ CREATE2 ಅನ್ನು ಬಳಸುವುದು

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

ನಿಯೋಜನೆಯ ಮೊದಲು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸವನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು: ಕ್ರಿಪ್ಟೋ ವಿನಿಮಯಕ್ಕಾಗಿ CREATE2 ಅನ್ನು ಬಳಸುವುದು
CREATE2 ಆಪ್‌ಕೋಡ್ ಅನ್ನು ಈ ವರ್ಷದ ಫೆಬ್ರವರಿ 28 ರಂದು ಕಾನ್‌ಸ್ಟಾಂಟಿನೋಪಲ್ ಹಾರ್ಡ್ ಫೋರ್ಕ್‌ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ. EIP ನಲ್ಲಿ ಹೇಳಿರುವಂತೆ, ಈ ಆಪ್‌ಕೋಡ್ ಅನ್ನು ಪ್ರಾಥಮಿಕವಾಗಿ ರಾಜ್ಯದ ಚಾನೆಲ್‌ಗಳಿಗಾಗಿ ಪರಿಚಯಿಸಲಾಗಿದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಅದನ್ನು ಬೇರೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಬಳಸಿದ್ದೇವೆ.

ವಿನಿಮಯದಲ್ಲಿ ಬ್ಯಾಲೆನ್ಸ್ ಹೊಂದಿರುವ ಬಳಕೆದಾರರಿದ್ದಾರೆ. ನಾವು ಪ್ರತಿಯೊಬ್ಬ ಬಳಕೆದಾರರಿಗೆ Ethereum ವಿಳಾಸವನ್ನು ಒದಗಿಸಬೇಕು, ಅದಕ್ಕೆ ಯಾರಾದರೂ ಟೋಕನ್‌ಗಳನ್ನು ಕಳುಹಿಸಬಹುದು, ಆ ಮೂಲಕ ಅವರ ಖಾತೆಯನ್ನು ಮರುಪೂರಣಗೊಳಿಸಬಹುದು. ಈ ವಿಳಾಸಗಳನ್ನು "ವ್ಯಾಲೆಟ್‌ಗಳು" ಎಂದು ಕರೆಯೋಣ. ವ್ಯಾಲೆಟ್‌ಗಳಲ್ಲಿ ಟೋಕನ್‌ಗಳು ಬಂದಾಗ, ನಾವು ಅವುಗಳನ್ನು ಒಂದೇ ವ್ಯಾಲೆಟ್‌ಗೆ (ಹಾಟ್‌ವಾಲೆಟ್) ಕಳುಹಿಸಬೇಕು.

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

Ethereum ವಿಳಾಸಗಳು

ಹೊಸ ಬಳಕೆದಾರರಿಗೆ ಹೊಸ Ethereum ವಿಳಾಸಗಳನ್ನು ರಚಿಸುವುದು ಸರಳ ಪರಿಹಾರವಾಗಿದೆ. ಈ ವಿಳಾಸಗಳು ತೊಗಲಿನ ಚೀಲಗಳಾಗಿರುತ್ತವೆ. ವಾಲೆಟ್‌ನಿಂದ ಹಾಟ್‌ವಾಲೆಟ್‌ಗೆ ಟೋಕನ್‌ಗಳನ್ನು ವರ್ಗಾಯಿಸಲು, ನೀವು ಕಾರ್ಯವನ್ನು ಕರೆಯುವ ಮೂಲಕ ವಹಿವಾಟಿಗೆ ಸಹಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ ವರ್ಗಾವಣೆ () ಬ್ಯಾಕೆಂಡ್‌ನಿಂದ ವಾಲೆಟ್‌ನ ಖಾಸಗಿ ಕೀಲಿಯೊಂದಿಗೆ.

ಈ ವಿಧಾನವು ಈ ಕೆಳಗಿನ ಅನುಕೂಲಗಳನ್ನು ಹೊಂದಿದೆ:

  • ಇದು ಸರಳವಾಗಿದೆ
  • ವ್ಯಾಲೆಟ್‌ನಿಂದ ಹಾಟ್‌ವಾಲೆಟ್‌ಗೆ ಟೋಕನ್‌ಗಳನ್ನು ವರ್ಗಾಯಿಸುವ ವೆಚ್ಚವು ಫಂಕ್ಷನ್ ಕರೆ ವೆಚ್ಚಕ್ಕೆ ಸಮಾನವಾಗಿರುತ್ತದೆ ವರ್ಗಾವಣೆ ()

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

ನಿಯೋಜನೆಯ ಮೊದಲು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸವನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು: ಕ್ರಿಪ್ಟೋ ವಿನಿಮಯಕ್ಕಾಗಿ CREATE2 ಅನ್ನು ಬಳಸುವುದು

ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ ಪ್ರತ್ಯೇಕ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ರಚಿಸಿ

ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ ಪ್ರತ್ಯೇಕ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ನಿಯೋಜಿಸುವುದರಿಂದ ಸರ್ವರ್‌ನಲ್ಲಿ ವ್ಯಾಲೆಟ್‌ಗಳಿಗಾಗಿ ಖಾಸಗಿ ಕೀಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ವಿನಿಮಯವು ಟೋಕನ್‌ಗಳನ್ನು ಹಾಟ್‌ವಾಲೆಟ್‌ಗೆ ವರ್ಗಾಯಿಸಲು ಈ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ಕರೆಯುತ್ತದೆ.

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

Opcode CREATE2

ಹಿಂದಿನ ವಿಧಾನದ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು, ನಾವು CREATE2 ಆಪ್‌ಕೋಡ್ ಅನ್ನು ಬಳಸಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ. ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ನಿಯೋಜಿಸುವ ವಿಳಾಸವನ್ನು ಮೊದಲೇ ನಿರ್ಧರಿಸಲು CREATE2 ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕೆಳಗಿನ ಸೂತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು ವಿಳಾಸವನ್ನು ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ:

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


, ಅಲ್ಲಿ:

  • ವಿಳಾಸ - CREATE2 ಎಂದು ಕರೆಯುವ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸ
  • ಉಪ್ಪು - ಯಾದೃಚ್ಛಿಕ ಮೌಲ್ಯ
  • init_code - ನಿಯೋಜನೆಗಾಗಿ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದ ಬೈಟ್ಕೋಡ್

ನಾವು ಬಳಕೆದಾರರಿಗೆ ಒದಗಿಸುವ ವಿಳಾಸವು ಅಪೇಕ್ಷಿತ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಹೊಂದಿದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಇದಲ್ಲದೆ, ಈ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ನಮಗೆ ಅಗತ್ಯವಿರುವಾಗ ನಿಯೋಜಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಬಳಕೆದಾರರು ತಮ್ಮ ವ್ಯಾಲೆಟ್ ಅನ್ನು ಮೊದಲ ಬಾರಿಗೆ ಬಳಸಲು ನಿರ್ಧರಿಸಿದಾಗ.
ನಿಯೋಜನೆಯ ಮೊದಲು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸವನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು: ಕ್ರಿಪ್ಟೋ ವಿನಿಮಯಕ್ಕಾಗಿ CREATE2 ಅನ್ನು ಬಳಸುವುದು
ಇದಲ್ಲದೆ, ನೀವು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸವನ್ನು ಸಂಗ್ರಹಿಸುವ ಬದಲು ಪ್ರತಿ ಬಾರಿ ಲೆಕ್ಕ ಹಾಕಬಹುದು ಏಕೆಂದರೆ:

  • ವಿಳಾಸ ಸೂತ್ರವು ಸ್ಥಿರವಾಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ನಮ್ಮ ವ್ಯಾಲೆಟ್ ಕಾರ್ಖಾನೆಯ ವಿಳಾಸವಾಗಿದೆ
  • ಉಪ್ಪು — user_id ಹ್ಯಾಶ್
  • init_code ನಾವು ಒಂದೇ ವಾಲೆಟ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ಸ್ಥಿರವಾಗಿರುತ್ತದೆ

ಇನ್ನಷ್ಟು ಸುಧಾರಣೆಗಳು

ಹಿಂದಿನ ಪರಿಹಾರವು ಇನ್ನೂ ಒಂದು ನ್ಯೂನತೆಯನ್ನು ಹೊಂದಿದೆ: ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ನಿಯೋಜಿಸಲು ನೀವು ಪಾವತಿಸಬೇಕಾಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನೀವು ಅದನ್ನು ತೊಡೆದುಹಾಕಬಹುದು. ಇದನ್ನು ಮಾಡಲು ನೀವು ಕಾರ್ಯವನ್ನು ಕರೆಯಬಹುದು ವರ್ಗಾವಣೆ (), ತದನಂತರ ಸ್ವಯಂ ನಾಶ() ವಾಲೆಟ್ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ನಲ್ಲಿ. ತದನಂತರ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದವನ್ನು ನಿಯೋಜಿಸಲು ಅನಿಲವನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ.

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

ಈ ಪರಿಹಾರವು Ethereum ವಿಳಾಸ ಆಯ್ಕೆಯನ್ನು ಹೋಲುತ್ತದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ, ಆದರೆ ಖಾಸಗಿ ಕೀಲಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ವ್ಯಾಲೆಟ್‌ನಿಂದ ಹಾಟ್‌ವಾಲೆಟ್‌ಗೆ ಹಣವನ್ನು ವರ್ಗಾಯಿಸುವ ವೆಚ್ಚವು ಕಾರ್ಯವನ್ನು ಕರೆಯುವ ವೆಚ್ಚಕ್ಕೆ ಸರಿಸುಮಾರು ಸಮಾನವಾಗಿರುತ್ತದೆ ವರ್ಗಾವಣೆ (), ನಾವು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ನಿಯೋಜನೆಗಾಗಿ ಪಾವತಿಸುವುದಿಲ್ಲವಾದ್ದರಿಂದ.

ಕೊನೆಯ ನಿರ್ಧಾರ

ನಿಯೋಜನೆಯ ಮೊದಲು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದದ ವಿಳಾಸವನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು: ಕ್ರಿಪ್ಟೋ ವಿನಿಮಯಕ್ಕಾಗಿ CREATE2 ಅನ್ನು ಬಳಸುವುದು

ಮೂಲತಃ ಇವರಿಂದ ತಯಾರಿಸಲ್ಪಟ್ಟಿದೆ:

  • ಮೂಲಕ ಉಪ್ಪು ಪಡೆಯುವ ಕಾರ್ಯ ಬಳಕೆದಾರರ ಗುರುತು
  • ಸೂಕ್ತವಾದ ಉಪ್ಪಿನೊಂದಿಗೆ CREATE2 ಆಪ್‌ಕೋಡ್ ಅನ್ನು ಕರೆಯುವ ಒಂದು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದ (ಅಂದರೆ ವ್ಯಾಲೆಟ್ ಫ್ಯಾಕ್ಟರಿ)
  • ಕೆಳಗಿನ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ನೊಂದಿಗಿನ ಒಪ್ಪಂದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ವ್ಯಾಲೆಟ್ ಬೈಟ್‌ಕೋಡ್:

constructor () {
    address hotWallet = 0x…;
    address token = 0x…;
    token.transfer (hotWallet, token.balanceOf (address (this)));
    selfdestruct (address (0));
}


ಪ್ರತಿಯೊಬ್ಬ ಹೊಸ ಬಳಕೆದಾರರಿಗೆ ನಾವು ಅವನ/ಅವಳ ವ್ಯಾಲೆಟ್ ವಿಳಾಸವನ್ನು ಲೆಕ್ಕಾಚಾರದ ಮೂಲಕ ತೋರಿಸುತ್ತೇವೆ

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


ಬಳಕೆದಾರರು ಅನುಗುಣವಾದ ವ್ಯಾಲೆಟ್ ವಿಳಾಸಕ್ಕೆ ಟೋಕನ್‌ಗಳನ್ನು ವರ್ಗಾಯಿಸಿದಾಗ, ನಮ್ಮ ಬ್ಯಾಕೆಂಡ್ ಪ್ಯಾರಾಮೀಟರ್‌ನೊಂದಿಗೆ ವರ್ಗಾವಣೆ ಈವೆಂಟ್ ಅನ್ನು ನೋಡುತ್ತದೆ _ ಗೆ, ವಾಲೆಟ್ ವಿಳಾಸಕ್ಕೆ ಸಮಾನವಾಗಿರುತ್ತದೆ. ಈ ಹಂತದಲ್ಲಿ, ವ್ಯಾಲೆಟ್ ಅನ್ನು ನಿಯೋಜಿಸುವ ಮೊದಲು ವಿನಿಮಯದಲ್ಲಿ ಬಳಕೆದಾರರ ಸಮತೋಲನವನ್ನು ಹೆಚ್ಚಿಸಲು ಈಗಾಗಲೇ ಸಾಧ್ಯವಿದೆ.

ವಾಲೆಟ್ ವಿಳಾಸವು ಸಾಕಷ್ಟು ಸಂಖ್ಯೆಯ ಟೋಕನ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿದಾಗ, ನಾವು ಅವುಗಳನ್ನು ಒಂದೇ ಬಾರಿಗೆ ಹಾಟ್‌ವಾಲೆಟ್‌ಗೆ ವರ್ಗಾಯಿಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ಬ್ಯಾಕೆಂಡ್ ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಫ್ಯಾಕ್ಟರಿ ಕಾರ್ಯವನ್ನು ಕರೆಯುತ್ತದೆ, ಅದು ಈ ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡುತ್ತದೆ:

function deployWallet (соль uint256) {
    bytes memory walletBytecode =…;
    // invoke CREATE2 with wallet bytecode and salt
}


ಹೀಗಾಗಿ, ವ್ಯಾಲೆಟ್ ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್ ಅನ್ನು ಕರೆಯಲಾಗುತ್ತದೆ, ಅದು ತನ್ನ ಎಲ್ಲಾ ಟೋಕನ್‌ಗಳನ್ನು ಹಾಟ್‌ವಾಲೆಟ್ ವಿಳಾಸಕ್ಕೆ ವರ್ಗಾಯಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಸ್ವಯಂ-ನಾಶವಾಗುತ್ತದೆ.

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

ಲೇಖಕ ಪಾವೆಲ್ ಕೊಂಡ್ರಾಟೆಂಕೋವ್, ಎಥೆರಿಯಮ್ ತಜ್ಞ

ಮೂಲ: www.habr.com

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