ื›ื™ืฆื“ ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื—ื•ื–ื” ื—ื›ื ืœืคื ื™ ื”ืคืจื™ืกื”: ืฉื™ืžื•ืฉ ื‘-CREATE2 ืขื‘ื•ืจ ื‘ื•ืจืกืช ืงืจื™ืคื˜ื•

ื ื•ืฉื ื”ื‘ืœื•ืงืฆ'ื™ื™ืŸ ืœื ืžืคืกื™ืง ืœื”ื™ื•ืช ืžืงื•ืจ ืœื ืจืง ืœื›ืœ ืžื™ื ื™ ื”ื™ื™ืค, ืืœื ื’ื ืœืจืขื™ื•ื ื•ืช ื‘ืขืœื™ ืขืจืš ืจื‘ ืžื‘ื—ื™ื ื” ื˜ื›ื ื•ืœื•ื’ื™ืช. ืœื›ืŸ, ื”ื™ื ืœื ืขืงืคื” ืืช ืชื•ืฉื‘ื™ ื”ืขื™ืจ ืฉื˜ื•ืคืช ื”ืฉืžืฉ. ืื ืฉื™ื ืžืกืชื›ืœื™ื ืžืงืจื•ื‘, ืœื•ืžื“ื™ื, ืžื ืกื™ื ืœื”ืขื‘ื™ืจ ืืช ื”ืžื•ืžื—ื™ื•ืช ืฉืœื”ื ื‘ืžืื’ืจ ื”ืžื™ื“ืข ื”ืžืกื•ืจืชื™ ืœืžืขืจื›ื•ืช ื‘ืœื•ืงืฆ'ื™ื™ืŸ. ืขื“ ื›ื”, ื ืงื•ื“ืชื™ืช: ืื—ื“ ื”ืคื™ืชื•ื—ื™ื ืฉืœ Rostelecom-Solar ืžืกื•ื’ืœ ืœื‘ื“ื•ืง ืืช ืื‘ื˜ื—ืช ื”ืชื•ื›ื ื” ื”ืžื‘ื•ืกืกืช ืขืœ ื”ื‘ืœื•ืงืฆ'ื™ื™ืŸ. ื•ืขืœ ื”ื“ืจืš ืขื•ืœื•ืช ื›ืžื” ืžื—ืฉื‘ื•ืช ืขืœ ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื™ื™ืฉื•ืžื™ื•ืช ืฉืœ ืงื”ื™ืœืช ื”ื‘ืœื•ืงืฆ'ื™ื™ืŸ. ืื—ืช ืžื”ืคืจื™ืฆื•ืช ืœื—ื™ื™ื ื”ืืœื” - ืื™ืš ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื—ื•ื–ื” ื—ื›ื ืœืคื ื™ ืคืจื™ืกื” ื‘ืืžืฆืขื•ืช CREATE2 - ื”ื™ื•ื ืื ื™ ืจื•ืฆื” ืœืฉืชืฃ ืืชื›ื ื‘ื—ืชืš.

ื›ื™ืฆื“ ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื—ื•ื–ื” ื—ื›ื ืœืคื ื™ ื”ืคืจื™ืกื”: ืฉื™ืžื•ืฉ ื‘-CREATE2 ืขื‘ื•ืจ ื‘ื•ืจืกืช ืงืจื™ืคื˜ื•
ืงื•ื“ ื”-CREATE2 ื”ืชื•ื•ืกืฃ ื‘ืžื–ืœื’ ื”ืงืฉื™ื— ืฉืœ ืงื•ื ืกื˜ื ื˜ื™ื ื•ืคื•ืœ ื‘-28 ื‘ืคื‘ืจื•ืืจ ื”ืฉื ื”. ื›ืคื™ ืฉืฆื•ื™ืŸ ื‘-EIP, ืงื•ื“ ื–ื” ื”ื•ืฆื’ ื‘ืขื™ืงืจ ืขื‘ื•ืจ ืขืจื•ืฆื™ ื”ืžื“ื™ื ื”. ืขื ื–ืืช, ื”ืฉืชืžืฉื ื• ื‘ื• ื›ื“ื™ ืœืคืชื•ืจ ื‘ืขื™ื” ืื—ืจืช.

ื™ืฉื ื ืžืฉืชืžืฉื™ื ืขื ื™ืชืจื•ืช ื‘ื‘ื•ืจืกื”. ืขืœื™ื ื• ืœืกืคืง ืœื›ืœ ืžืฉืชืžืฉ ื›ืชื•ื‘ืช Ethereum, ืฉืืœื™ื” ื›ืœ ืื—ื“ ื™ื›ื•ืœ ืœืฉืœื•ื— ืืกื™ืžื•ื ื™ื, ื•ื‘ื›ืš ืœื—ื“ืฉ ืืช ื—ืฉื‘ื•ื ื•. ื‘ื•ืื• ื ืงืจื ืœื›ืชื•ื‘ื•ืช ืืœื• "ืืจื ืงื™ื". ื›ืืฉืจ ืืกื™ืžื•ื ื™ื ืžื’ื™ืขื™ื ื‘ืืจื ืงื™ื, ืขืœื™ื ื• ืœืฉืœื•ื— ืื•ืชื ืœืืจื ืง ื‘ื•ื“ื“ (hotwallet).

ื‘ืกืขื™ืคื™ื ื”ื‘ืื™ื, ืื ื™ ืžื ืชื— ืืคืฉืจื•ื™ื•ืช ืœืคืชืจื•ืŸ ื‘ืขื™ื” ื–ื• ืœืœื CREATE2 ื•ืžืกื‘ื™ืจ ืžื“ื•ืข ื ื˜ืฉื ื• ืื•ืชืŸ. ืื ืืชื” ืžืขื•ื ื™ื™ืŸ ืจืง ื‘ืชื•ืฆืื” ื”ืกื•ืคื™ืช, ืชื•ื›ืœ ืœืžืฆื•ื ืื•ืชื” ื‘ืกืขื™ืฃ ื”ืคืชืจื•ืŸ ื”ืกื•ืคื™.

ื›ืชื•ื‘ื•ืช Ethereum

ื”ืคืชืจื•ืŸ ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ื”ื•ื ืœื™ืฆื•ืจ ื›ืชื•ื‘ื•ืช ืืชืจื™ื ื—ื“ืฉื•ืช ืขื‘ื•ืจ ืžืฉืชืžืฉื™ื ื—ื“ืฉื™ื. ื”ื›ืชื•ื‘ื•ืช ื”ืืœื” ื™ื”ื™ื• ื”ืืจื ืงื™ื. ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืืกื™ืžื•ื ื™ื ืžื”ืืจื ืง ืœ-hotwallet, ืขืœื™ืš ืœื—ืชื•ื ืขืœ ื”ืขืกืงื” ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ืœึฐื”ึทืขึฒื‘ึดื™ืจ() ืขื ื”ืžืคืชื— ื”ืคืจื˜ื™ ืฉืœ ื”ืืจื ืง ืžื”ื—ืœืง ื”ืื—ื•ืจื™.

ืœื’ื™ืฉื” ื–ื• ื™ืฉ ืืช ื”ื™ืชืจื•ื ื•ืช ื”ื‘ืื™ื:

  • ื–ื” ืคืฉื•ื˜
  • ืขืœื•ืช ื”ืขื‘ืจืช ื”ืืกื™ืžื•ื ื™ื ืžืืจื ืง ืœ-hotwallet ืฉื•ื•ื” ืœืขืœื•ืช ื”ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ืœึฐื”ึทืขึฒื‘ึดื™ืจ()

ืขื ื–ืืช, ื ื˜ืฉื ื• ืืช ื”ื’ื™ืฉื” ื”ื–ื• ืžื›ื™ื•ื•ืŸ ืฉื™ืฉ ืœื” ื—ื™ืกืจื•ืŸ ืื—ื“ ืžืฉืžืขื•ืชื™: ืืชื” ืฆืจื™ืš ืœืื—ืกืŸ ืžืคืชื—ื•ืช ืคืจื˜ื™ื™ื ืื™ืคืฉื”ื•. ื•ื–ื” ืœื ืจืง ืฉื”ื ื™ื›ื•ืœื™ื ืœืœื›ืช ืœืื™ื‘ื•ื“, ืืœื ื’ื ืฉืืชื” ืฆืจื™ืš ืœื ื”ืœ ื‘ืงืคื™ื“ื” ืืช ื”ื’ื™ืฉื” ืœืžืคืชื—ื•ืช ื”ืืœื”. ืื ืœืคื—ื•ืช ืื—ื“ ืžื”ื ื ืคื’ืข, ืื– ื”ืืกื™ืžื•ื ื™ื ืฉืœ ืžืฉืชืžืฉ ืžืกื•ื™ื ืœื ื™ื’ื™ืขื• ืœืืจื ืง ื”ื—ื.

ื›ื™ืฆื“ ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื—ื•ื–ื” ื—ื›ื ืœืคื ื™ ื”ืคืจื™ืกื”: ืฉื™ืžื•ืฉ ื‘-CREATE2 ืขื‘ื•ืจ ื‘ื•ืจืกืช ืงืจื™ืคื˜ื•

ืฆื•ืจ ื—ื•ื–ื” ื—ื›ื ื ืคืจื“ ืœื›ืœ ืžืฉืชืžืฉ

ืคืจื™ืกืช ื—ื•ื–ื” ื—ื›ื ื ืคืจื“ ืœื›ืœ ืžืฉืชืžืฉ ืžืืคืฉืจืช ืœื ืœืื—ืกืŸ ืžืคืชื—ื•ืช ืคืจื˜ื™ื™ื ืžืืจื ืงื™ื ื‘ืฉืจืช. ื”ื‘ื•ืจืกื” ืชืงืจื ืœื—ื•ื–ื” ื”ื—ื›ื ื”ื–ื” ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืืช ื”ืืกื™ืžื•ื ื™ื ืœ-hotwallet.

ื’ื ืืช ื”ืคืชืจื•ืŸ ื”ื–ื” ื ื˜ืฉื ื•, ืฉื›ืŸ ืœื ื ื™ืชืŸ ืœื”ืฆื™ื’ ืœืžืฉืชืžืฉ ืืช ื›ืชื•ื‘ืช ื”ืืจื ืง ืฉืœื• ืžื‘ืœื™ ืœืคืจื•ืก ื—ื•ื–ื” ื—ื›ื (ื–ื” ื“ื•ื•ืงื ืืคืฉืจื™, ืื‘ืœ ื‘ืฆื•ืจื” ื“ื™ ืžืกื•ื‘ื›ืช ืขื ื—ืกืจื•ื ื•ืช ื ื•ืกืคื™ื ืฉืœื ื ื“ื•ืŸ ื‘ื”ื ื›ืืŸ). ื‘ื‘ื•ืจืกื”, ื”ืžืฉืชืžืฉ ื™ื›ื•ืœ ืœื™ืฆื•ืจ ื›ืžื” ื—ืฉื‘ื•ื ื•ืช ืฉื”ื•ื ืฆืจื™ืš, ื•ื›ืœ ืื—ื“ ืฆืจื™ืš ืืช ื”ืืจื ืง ืฉืœื•. ื–ื” ืื•ืžืจ ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื•ืฆื™ื ื›ืกืฃ ืขืœ ืคืจื™ืกืช ื—ื•ื–ื” ืืคื™ืœื• ื‘ืœื™ ืœื”ื™ื•ืช ื‘ื˜ื•ื—ื™ื ืฉื”ืžืฉืชืžืฉ ื™ืฉืชืžืฉ ื‘ื—ืฉื‘ื•ืŸ ื”ื–ื”.

Opcode CREATE2

ื›ื“ื™ ืœืชืงืŸ ืืช ื”ื‘ืขื™ื” ืฉืœ ื”ืฉื™ื˜ื” ื”ืงื•ื“ืžืช, ื”ื—ืœื˜ื ื• ืœื”ืฉืชืžืฉ ื‘ืงื•ื“ CREATE2. CREATE2 ืžืืคืฉืจ ืœืš ืœืงื‘ื•ืข ืžืจืืฉ ืืช ื”ื›ืชื•ื‘ืช ืฉื‘ื” ื™ืชืคืจืก ื”ื—ื•ื–ื” ื”ื—ื›ื. ื”ื›ืชื•ื‘ืช ืžื—ื•ืฉื‘ืช ื‘ืืžืฆืขื•ืช ื”ื ื•ืกื—ื” ื”ื‘ืื”:

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


, ืฉื‘ื•

  • ื›ืชื•ื‘ืช - ื›ืชื•ื‘ืช ื”ื—ื•ื–ื” ื”ื—ื›ื ืฉื™ืงืจื CREATE2
  • ืžืœื— - ืขืจืš ืืงืจืื™
  • init_code - ืงื•ื“ ื‘ื™ืช ื—ื•ื–ื” ื—ื›ื ืœืคืจื™ืกื”

ื–ื” ืžื‘ื˜ื™ื— ืฉื”ื›ืชื•ื‘ืช ืฉืื ื• ืžืกืคืงื™ื ืœืžืฉืชืžืฉ ืชื›ื™ืœ ืœืžืขืฉื” ืืช ืงื•ื“ ื”ื‘ื™ื˜ื™ื ื”ืจืฆื•ื™. ื›ืžื• ื›ืŸ, ื ื™ืชืŸ ืœืคืจื•ืก ืืช ื”ื—ื•ื–ื” ื”ื—ื›ื ื”ื–ื” ื‘ื›ืœ ืคืขื ืฉื ืฆื˜ืจืš. ืœื“ื•ื’ืžื”, ื›ืืฉืจ ืžืฉืชืžืฉ ืžื—ืœื™ื˜ ืœื”ืฉืชืžืฉ ื‘ืืจื ืงื• ื‘ืคืขื ื”ืจืืฉื•ื ื”.
ื›ื™ืฆื“ ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื—ื•ื–ื” ื—ื›ื ืœืคื ื™ ื”ืคืจื™ืกื”: ืฉื™ืžื•ืฉ ื‘-CREATE2 ืขื‘ื•ืจ ื‘ื•ืจืกืช ืงืจื™ืคื˜ื•
ื™ืชืจ ืขืœ ื›ืŸ, ืืชื” ื™ื›ื•ืœ ืœื—ืฉื‘ ืืช ื›ืชื•ื‘ืช ื”ื—ื•ื–ื” ื”ื—ื›ื ื‘ื›ืœ ืคืขื ื‘ืžืงื•ื ืœืื—ืกืŸ ืื•ืชื”, ืžื›ื™ื•ื•ืŸ:

  • ื›ืชื•ื‘ืช ื‘ื ื•ืกื—ื” ืงื‘ื•ืขื” ืฉื›ืŸ ื”ื™ื ื”ื›ืชื•ื‘ืช ืฉืœ ืžืคืขืœ ื”ืืจื ืงื™ื ืฉืœื ื•
  • ืžืœื— - hash ืฉืœ user_id
  • init_code ื”ื•ื ืงื‘ื•ืข ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžืฉืชืžืฉื™ื ื‘ืื•ืชื• ืืจื ืง

ืขื•ื“ ืฉื™ืคื•ืจื™ื

ืœืคืชืจื•ืŸ ื”ืงื•ื“ื ืขื“ื™ื™ืŸ ื™ืฉ ื—ื™ืกืจื•ืŸ ืื—ื“: ืืชื” ืฆืจื™ืš ืœืฉืœื ืขื‘ื•ืจ ืคืจื™ืกืช ื—ื•ื–ื™ื ื—ื›ืžื”. ืขื ื–ืืช, ืืชื” ื™ื›ื•ืœ ืœื”ื™ืคื˜ืจ ืžืžื ื•. ื‘ืฉื‘ื™ืœ ื–ื” ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืœืคื•ื ืงืฆื™ื” ืœึฐื”ึทืขึฒื‘ึดื™ืจ()ื•ืื– ื”ืฉืžื“ื” ืขืฆืžื™ืช() ื‘ืงื•ื ืกื˜ืจื•ืงื˜ื•ืจ ื”ืืจื ืง. ื•ืื– ื™ื•ื—ื–ืจ ื”ื’ื– ืœืคืจื™ืกืช ื”ื—ื•ื–ื” ื”ื—ื›ื.

ื‘ื ื™ื’ื•ื“ ืœืืžื•ื ื” ื”ืจื•ื•ื—ืช, ืืชื” ื™ื›ื•ืœ ืœืคืจื•ืก ื—ื•ื–ื” ื—ื›ื ืœืื•ืชื” ื›ืชื•ื‘ืช ืžืกืคืจ ืคืขืžื™ื ืขื ืงื•ื“ CREATE2. ื”ืกื™ื‘ื” ืœื›ืš ื”ื™ื ืฉ-CREATE2 ื‘ื•ื“ืง ืฉื”ืื™-ื ื•ื ืก ืฉืœ ื›ืชื•ื‘ืช ื”ื™ืขื“ ื”ื•ื ืืคืก (ืžื•ืงืฆื” ืœื• ื”ืขืจืš "1" ื‘ืชื—ื™ืœืช ื”ื‘ื ืื™). ื‘ืžืงื‘ื™ืœ, ื”ืคื•ื ืงืฆื™ื” ื”ืฉืžื“ื” ืขืฆืžื™ืช() ืžืืคืก ืืช ื›ืชื•ื‘ืช ื”-nonce ื‘ื›ืœ ืคืขื. ืœืคื™ื›ืš, ืื ืชืชืงืฉืจ ืฉื•ื‘ ืœ-CREATE2 ืขื ืื•ืชื ืืจื’ื•ืžื ื˜ื™ื, ื‘ื“ื™ืงืช ื”-nonce ืชืขื‘ื•ืจ.

ืฉื™ืžื• ืœื‘ ืฉืคืชืจื•ืŸ ื–ื” ื“ื•ืžื” ืœืคืชืจื•ืŸ ื›ืชื•ื‘ืช ื”ืืชืจื™ื•ื, ืืš ืœืœื ืฆื•ืจืš ื‘ืื—ืกื•ืŸ ืžืคืชื—ื•ืช ืคืจื˜ื™ื™ื. ืขืœื•ืช ื”ืขื‘ืจืช ื”ื›ืกืฃ ืžืืจื ืง ืœ-hotwallet ืฉื•ื•ื” ื‘ืขืจืš ืœืขืœื•ืช ื”ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ืœึฐื”ึทืขึฒื‘ึดื™ืจ(), ืžืื—ืจ ืฉืื™ื ื ื• ืžืฉืœืžื™ื ืขืœ ืคืจื™ืกืช ื”ื—ื•ื–ื” ื”ื—ื›ื.

ื”ื—ืœื˜ื” ืกื•ืคื™ืช

ื›ื™ืฆื“ ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื—ื•ื–ื” ื—ื›ื ืœืคื ื™ ื”ืคืจื™ืกื”: ืฉื™ืžื•ืฉ ื‘-CREATE2 ืขื‘ื•ืจ ื‘ื•ืจืกืช ืงืจื™ืคื˜ื•

ื”ื›ื ื” ืจืืฉื•ื ื™ืช:

  • ืœืชืคืงื“ ื›ื“ื™ ืœืงื‘ืœ ืžืœื— ืขืœ ื™ื“ื™ USER_ID
  • ื—ื•ื–ื” ื—ื›ื ืฉื™ืงืจื ืœืงื•ื“ 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:]


ื›ืืฉืจ ื”ืžืฉืชืžืฉ ืžืขื‘ื™ืจ ืืกื™ืžื•ื ื™ื ืœื›ืชื•ื‘ืช ื”ืืจื ืง ื”ืžืชืื™ืžื”, ื”ืงืฆื” ื”ืขื•ืจืคื™ ืฉืœื ื• ืจื•ืื” ืืช ืื™ืจื•ืข ื”ืขื‘ืจื” ืขื ื”ืคืจืžื˜ืจ _ืœืฉื•ื•ื” ืœื›ืชื•ื‘ืช ื”ืืจื ืง. ื‘ืฉืœื‘ ื–ื” ื›ื‘ืจ ื ื™ืชืŸ ืœื”ื’ื“ื™ืœ ืืช ื™ืชืจืช ื”ืžืฉืชืžืฉ ื‘ื‘ื•ืจืกื” ืœืคื ื™ ืคืจื™ืกืช ื”ืืจื ืง.

ื›ืืฉืจ ืžืกืคื™ืง ืืกื™ืžื•ื ื™ื ืžืฆื˜ื‘ืจื™ื ื‘ื›ืชื•ื‘ืช ื”ืืจื ืง, ื ื•ื›ืœ ืœื”ืขื‘ื™ืจ ืืช ื›ื•ืœื ื‘ื‘ืช ืื—ืช ืœ-hotwallet. ืœืฉื ื›ืš, ื”ืงืฆื” ื”ืื—ื•ืจื™ ืงื•ืจื ืœืคื•ื ืงืฆื™ื™ืช ืžืคืขืœ ื”ื—ื•ื–ื” ื”ื—ื›ื, ืืฉืจ ืžื‘ืฆืขืช ืืช ื”ืคืขื•ืœื•ืช ื”ื‘ืื•ืช:

function deployWallet (ัะพะปัŒ uint256) {
    bytes memory walletBytecode =โ€ฆ;
    // invoke CREATE2 with wallet bytecode and salt
}


ืœืคื™ื›ืš, ื ืงืจื ื‘ื•ื ื” ื”ื—ื•ื–ื” ื”ื—ื›ื ืฉืœ ื”ืืจื ืง, ืืฉืจ ืžืขื‘ื™ืจ ืืช ื›ืœ ื”ืืกื™ืžื•ื ื™ื ืฉืœื• ืœื›ืชื•ื‘ืช ื”-hotwallet ื•ืื– ืžืฉืžื™ื“ ืืช ืขืฆืžื•.

ื ื™ืชืŸ ืœืžืฆื•ื ืืช ื”ืงื•ื“ ื”ืžืœื ื›ืืŸ. ืฉื™ืžื• ืœื‘ ืฉื–ื” ืœื ืงื•ื“ ื”ื™ื™ืฆื•ืจ ืฉืœื ื•, ืžื›ื™ื•ื•ืŸ ืฉื”ื—ืœื˜ื ื• ืœื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ bytecode ืฉืœ ื”ืืจื ืง ื•ืœื›ืชื•ื‘ ืื•ืชื• ื‘-opcodes.

ื”ืกื•ืคืจ ืคืื‘ืœ ืงื•ื ื“ืจื˜ื ืงื•ื‘, ืžื•ืžื—ื” ืœ-Ethereum

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”