เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CREATE2 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ crypto

เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡ blockchain เบšเปเปˆเป€เบ„เบตเบเบขเบธเบ”เป€เบŠเบปเบฒเบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ hype, เปเบ•เปˆเบเบฑเบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ„เปˆเบฒเบซเบผเบฒเบเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบต. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰ bypass เบŠเบฒเบงเป€เบกเบทเบญเบ‡เบšเปˆเบญเบ™เบกเบตเปเบ”เบ”. เบ›เบฐเบŠเบฒเบŠเบปเบ™เบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”, เบเบฒเบ™เบชเบถเบเบชเบฒ, เบžเบฐเบเบฒเบเบฒเบกเป‚เบญเบ™เบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเป„เบ›เบชเบนเปˆเบฅเบฐเบšเบปเบš blockchain. เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธ, เบกเบฑเบ™เบžเบปเบšเป€เบซเบฑเบ™เบงเปˆเบฒ: เบซเบ™เบถเปˆเบ‡เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ Rostelecom-Solar เบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเปƒเบŠเป‰ blockchain. เปเบฅเบฐเบ•เบฒเบกเบ—เบฒเบ‡, เบ„เบงเบฒเบกเบ„เบดเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบŠเบธเบกเบŠเบปเบ™ blockchain. เบซเบ™เบถเปˆเบ‡เปƒเบ™ hacks เบŠเบตเบงเบดเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ - เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰ CREATE2 - เบกเบทเป‰เบ™เบตเป‰เบ‚เป‰เบญเบเบขเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเบ—เปˆเบฒเบ™เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบ•เบฑเบ”.

เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CREATE2 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ crypto
opcode CREATE2 เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบฎเบฒเบ” fork Constantinople เปƒเบ™เบงเบฑเบ™เบ—เบต 28 เป€เบ”เบทเบญเบ™เบเบธเบกเบžเบฒเบ‚เบญเบ‡เบ›เบตเบ™เบตเป‰. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเป„เบงเป‰เปƒเบ™ EIP, opcode เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ‚เบญเบ‡เบฅเบฑเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบกเบตเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบเบญเบ”เป€เบ‡เบดเบ™เปƒเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบกเบตเบ—เบตเปˆเบขเบนเปˆ Ethereum เบ—เบตเปˆเบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡ tokens, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบšเบฑเบ™เบŠเบตเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เปƒเบซเป‰เป‚เบ—เบซเบฒเบ—เบตเปˆเบขเบนเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ "wallets". เป€เบกเบทเปˆเบญ tokens เบกเบฒเบฎเบญเบ” wallets, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เบžเบงเบเบกเบฑเบ™เป„เบ›เบซเบฒ wallet เบ”เบฝเบง (hotwallet).

เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบงเบดเป€เบ„เบฒเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เป‚เบ”เบเบšเปเปˆเบกเบต CREATE2 เปเบฅเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ–เบดเป‰เบกเบžเบงเบเบกเบฑเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบ™เปƒเบˆเบžเบฝเบ‡เปเบ•เปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบžเบฒเบ "เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบธเบ”เบ—เป‰เบฒเบ".

เบ—เบตเปˆเบขเบนเปˆ Ethereum

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบตเปˆเบขเบนเปˆ Ethereum เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบซเบกเปˆ. เบ—เบตเปˆเบขเบนเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™. เป€เบžเบทเปˆเบญเป‚เบญเบ™เป‚เบ—เป€เบ„เบฑเบ™เบˆเบฒเบเบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เป„เบ›เบซเบฒ hotwallet, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบŠเบฑเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเป‚เบ”เบเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ เป‚เบญเบ™() เบ”เป‰เบงเบเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบˆเบฒเบ backend.

เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบกเบตเบ‚เปเป‰เบ”เบตเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ
  • เบ„เปˆเบฒโ€‹เปƒเบŠเป‰โ€‹เบˆเปˆเบฒเบโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบญเบ™ tokens เบˆเบฒเบ wallet เบเบฑเบš hotwallet เปเบกเปˆเบ™โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบเบฑเบšโ€‹เบ„เปˆเบฒโ€‹เปƒเบŠเป‰โ€‹เบˆเปˆเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบซเบฒโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆ เป‚เบญเบ™()

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ•เปเปˆเบ•เป‰เบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบˆเบธเบ”เบญเปˆเบญเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบซเบ™เบถเปˆเบ‡: เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡. เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเบนเบ™เป€เบชเบเป„เบ”เป‰, เปเบ•เปˆเบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฐเปเบˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡. เบ–เป‰เบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ—เปเบฒเบฅเบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, tokens เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบฎเป‰เบญเบ™.

เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CREATE2 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ crypto

เบชเป‰เบฒเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบชเปเบฒเบฅเบฑเบšเบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบˆเบฐเป‚เบ—เบซเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ™เบตเป‰เป€เบžเบทเปˆเบญเป‚เบญเบ™ tokens เบเบฑเบš hotwallet.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เบ›เบฐเบ–เบดเป‰เบกเบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบขเบนเปˆเบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบ‚เบญเบ‡เบฅเบฒเบงเป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ” (เบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปเบ•เปˆเปƒเบ™เปเบšเบšเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบเบฑเบšเบ‚เปเป‰เป€เบชเบเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบชเบปเบ™เบ—เบฐเบ™เบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰). เปƒเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™, เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบšเบฑเบ™เบŠเบตเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบฅเบฒเบงเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบ‡เบดเบ™เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบˆเบฐเปƒเบŠเป‰เบšเบฑเบ™เบŠเบตเบ™เบตเป‰.

Opcode CREATE2

เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰ CREATE2 opcode. CREATE2 เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบˆเบฐเบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰. เบ—เบตเปˆเบขเบนเปˆเปเบกเปˆเบ™เบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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


, เบšเปˆเบญเบ™เบ—เบตเปˆ:

  • เบ—เบตเปˆเบขเบนเปˆ โ€” เบ—เบตเปˆโ€‹เบขเบนเปˆโ€‹เบ‚เบญเบ‡โ€‹เบชเบฑเบ™โ€‹เบเบฒ smart เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป‚เบ—โ€‹เบซเบฒ CREATE2โ€‹
  • เป€เบเบทเบญ - เบ„เปˆเบฒเบชเบธเปˆเบก
  • init_code โ€” เบญเบฑเบ”โ€‹เบชเบฐโ€‹เบฅเบดโ€‹เบเบฐ bytecode เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹

เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ bytecode เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบ เบ™เบณ เปƒเบŠเป‰เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบœเบนเป‰เปƒเบŠเป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”.
เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CREATE2 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ crypto
เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบขเบนเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบธเบเป†เบ„เบฑเป‰เบ‡เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ:

  • เบ—เบตเปˆเบขเบนเปˆ เปƒเบ™เบชเบนเบ”เปเบกเปˆเบ™เบ„เบปเบ‡เบ—เบตเปˆ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เป‚เบฎเบ‡เบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ
  • เป€เบเบทเบญ โ€” user_id hash
  • init_code เปเบกเปˆเบ™เบ„เบปเบ‡เบ—เบตเปˆเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบ”เบฝเบงเบเบฑเบ™

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบเบฑเบ‡เบกเบตเบˆเบธเบ”เบญเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡: เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบˆเบฑเบ”เบกเบฑเบ™เป„เบ”เป‰. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ เป‚เบญเบ™(), เปเบฅเบฐเบ•เปเปˆเบกเบฒ เบ—เปเบฒโ€‹เบฅเบฒเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡ () เปƒเบ™เบ•เบปเบงเบชเป‰เบฒเบ‡ wallet. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบฒเบเปเบเบฑเบชเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™.

เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบ„เบงเบฒเบกเป€เบŠเบทเปˆเบญเบ—เบตเปˆเบ™เบดเบเบปเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเบฑเบšเบ—เบตเปˆเบขเบนเปˆเบ”เบฝเบงเบเบฑเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ”เป‰เบงเบ CREATE2 opcode. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒ CREATE2 เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ nonce เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เบชเบนเบ™ (เบกเบฑเบ™เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเบ„เปˆเบฒ "1" เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ•เบปเบงเบชเป‰เบฒเบ‡). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ™เบตเป‰, เบซเบ™เป‰เบฒเบ—เบตเปˆ เบ—เปเบฒโ€‹เบฅเบฒเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡ () เบฃเบตเป€เบŠเบฑเบ”เบ—เบตเปˆเบขเบนเปˆ nonce เบ—เบธเบเบ„เบฑเป‰เบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป‚เบ—เบซเบฒ CREATE2 เบญเบตเบเบ„เบฑเป‰เบ‡เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบš nonce เบˆเบฐเบœเปˆเบฒเบ™.

เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบขเบนเปˆ Ethereum, เปเบ•เปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบง. เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบเบฒเบ™เป‚เบญเบ™เป€เบ‡เบดเบ™เบˆเบฒเบเบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เป„เบ›เบซเบฒ hotwallet เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ เป‚เบญเบ™(), เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบˆเปˆเบฒเบเบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒ smart.

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบชเบธเบ”เบ—เป‰เบฒเบ

เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CREATE2 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ crypto

เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบเบฐเบเบฝเบกเป‚เบ”เบ:

  • เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เป€เบเบทเบญโ€‹เป‚เบ”เบโ€‹ user_id
  • เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบˆเบฐเป‚เบ—เบซเบฒ opcode CREATE2 เบ”เป‰เบงเบเป€เบเบทเบญเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก (i.e. เป‚เบฎเบ‡เบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™)
  • wallet bytecode เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบšเบชเบฑเบ™เบเบฒเบเบฑเบšเบœเบนเป‰เบชเป‰เบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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


เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบซเบกเปˆเบ—เบธเบเบ„เบปเบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบขเบนเปˆ wallet เบ‚เบญเบ‡เบฅเบฒเบงเป‚เบ”เบเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ

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


เป€เบกเบทเปˆเบญเบœเบนเป‰เปƒเบŠเป‰เป‚เบญเบ™ tokens เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆ wallet เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™, backend เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เป€เบซเบ”เบเบฒเบ™เบเบฒเบ™เป‚เบญเบ™เบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. _ เป‚เบ•, เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ—เบตเปˆเบขเบนเปˆ wallet. เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบญเบ”เป€เบ‡เบดเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™.

เป€เบกเบทเปˆเบญเบ—เบตเปˆเบขเบนเปˆ wallet เบชเบฐเบชเบปเบกเบˆเปเบฒเบ™เบงเบ™ tokens เบ—เบตเปˆเบžเบฝเบ‡เบžเป, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป‚เบญเบ™เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ„เบฑเป‰เบ‡เบ”เบฝเบงเป„เบ›เบซเบฒ hotwallet. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, backend เป€เบญเบตเป‰เบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเป‚เบฎเบ‡เบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”, เป€เบŠเบดเปˆเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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


เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, wallet smart constructor is called, which transfers all its tokens to hotwallet address and then self-destructs .

เบฅเบฐเบซเบฑเบ”เป€เบ•เบฑเบกเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰ เบ—เบตเปˆเบ™เบตเป‰. เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ wallet bytecode เปเบฅเบฐเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ opcodes.

เบœเบนเป‰เบ‚เบฝเบ™ Pavel Kondratenkov, เบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™ Ethereum

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™