๋ฐฐํฌ ์ „ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•: ์•”ํ˜ธํ™”ํ ๊ตํ™˜์„ ์œ„ํ•ด CREATE2 ์‚ฌ์šฉ

๋ธ”๋ก์ฒด์ธ์ด๋ผ๋Š” ์ฃผ์ œ๋Š” ์˜จ๊ฐ– ์ข…๋ฅ˜์˜ ๊ณผ๋Œ€๊ด‘๊ณ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ธฐ์ˆ ์  ๊ด€์ ์—์„œ ๋งค์šฐ ๊ฐ€์น˜ ์žˆ๋Š” ์•„์ด๋””์–ด์˜ ์›์ฒœ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋…€๋Š” ํ–‡๋ณ•์ด ์ž˜ ๋“œ๋Š” ๋„์‹œ์˜ ์ฃผ๋ฏผ๋“ค์„ ์šฐํšŒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ „ํ†ต์ ์ธ ์ •๋ณด ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ „๋ฌธ ์ง€์‹์„ ๋ธ”๋ก์ฒด์ธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉด๋ฐ€ํžˆ ์‚ดํŽด๋ณด๊ณ , ์—ฐ๊ตฌํ•˜๊ณ , ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ Rostelecom-Solar์˜ ๊ฐœ๋ฐœ ์ค‘ ํ•˜๋‚˜๋Š” ๋ธ”๋ก์ฒด์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณด์•ˆ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ๋ธ”๋ก์ฒด์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์‘์šฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™œ ํ•ดํ‚น ์ค‘ ํ•˜๋‚˜์ธ CREATE2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜ค๋Š˜ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ ์ „ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•: ์•”ํ˜ธํ™”ํ ๊ตํ™˜์„ ์œ„ํ•ด CREATE2 ์‚ฌ์šฉ
CREATE2 opcode๋Š” ์˜ฌํ•ด 28์›” XNUMX์ผ ์ฝ˜์Šคํƒ„ํ‹ฐ๋…ธํ”Œ ํ•˜๋“œ ํฌํฌ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. EIP์— ๋ช…์‹œ๋œ ๋Œ€๋กœ ์ด opcode๋Š” ์ฃผ๋กœ ์ƒํƒœ ์ฑ„๋„์— ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฑฐ๋ž˜์†Œ์— ์ž”์•ก์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ˆ„๊ตฌ๋‚˜ ํ† ํฐ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ด๋”๋ฆฌ์›€ ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ณ„์ •์„ ๋ณด์ถฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์†Œ๋ฅผ "์ง€๊ฐ‘"์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์ด ์ง€๊ฐ‘์— ๋„์ฐฉํ•˜๋ฉด ์ด๋ฅผ ๋‹จ์ผ ์ง€๊ฐ‘(hotwallet)์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” CREATE2 ์—†์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์˜ต์…˜์„ ๋ถ„์„ํ•˜๊ณ  ์™œ ์ด๋ฅผ ํฌ๊ธฐํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ๊ฒฐ๊ณผ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์ข… ์†”๋ฃจ์…˜ ์„น์…˜์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋”๋ฆฌ์›€ ์ฃผ์†Œ

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ด๋”๋ฆฌ์›€ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ฃผ์†Œ๊ฐ€ ์ง€๊ฐ‘์ด ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ฐ‘์—์„œ ํ•ซ์›”๋ ›์œผ๋กœ ํ† ํฐ์„ ์ „์†กํ•˜๋ ค๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฑฐ๋ž˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „() ๋ฐฑ์—”๋“œ์—์„œ ์ง€๊ฐ‘์˜ ๊ฐœ์ธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทธ๋ƒฅ
  • ์ง€๊ฐ‘์—์„œ ํ•ซ์›”๋ ›์œผ๋กœ ํ† ํฐ์„ ์ „์†กํ•˜๋Š” ๋น„์šฉ์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋น„์šฉ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ „()

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์— ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋‹จ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐœ์ธ ํ‚ค๋ฅผ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ํ‚ค๋Š” ๋ถ„์‹ค๋  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋Ÿฌํ•œ ํ‚ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ ์†์ƒ๋˜๋ฉด ํŠน์ • ์‚ฌ์šฉ์ž์˜ ํ† ํฐ์ด ํ•ซ ์ง€๊ฐ‘์— ๋„๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ ์ „ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•: ์•”ํ˜ธํ™”ํ ๊ตํ™˜์„ ์œ„ํ•ด CREATE2 ์‚ฌ์šฉ

๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์Šค๋งˆํŠธ ๊ณ„์•ฝ ์ƒ์„ฑ

๊ฐ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋ณ„๋„์˜ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ๋ฐฐํฌํ•˜๋ฉด ์ง€๊ฐ‘์˜ ๊ฐœ์ธ ํ‚ค๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜์†Œ๋Š” ์ด ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ํ˜ธ์ถœํ•˜์—ฌ ํ† ํฐ์„ ํ•ซ์›”๋ ›์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ๋ฐฐํฌํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์‹ ์˜ ์ง€๊ฐ‘ ์ฃผ์†Œ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ์†”๋ฃจ์…˜์„ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋…ผ์˜ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋‹จ์ ์ด ์žˆ์–ด ๋‹ค์†Œ ๋ณต์žกํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค). ๊ฑฐ๋ž˜์†Œ์—์„œ ์‚ฌ์šฉ์ž๋Š” ํ•„์š”ํ•œ ๋งŒํผ ๋งŽ์€ ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์ž์‹ ์˜ ์ง€๊ฐ‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๊ณ„์ •์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ํ™•์‹  ์—†์ด ๊ณ„์•ฝ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด ๋ˆ์„ ์จ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Op์ฝ”๋“œ CREATE2

์ด์ „ ๋ฐฉ๋ฒ•์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CREATE2 opcode๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. CREATE2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šค๋งˆํŠธ ๊ณ„์•ฝ์ด ๋ฐฐํฌ๋  ์ฃผ์†Œ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์†Œ๋Š” ๋‹ค์Œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

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


, ์—ฌ๊ธฐ์„œ :

  • ์ฃผ์†Œ โ€” CREATE2๋ฅผ ํ˜ธ์ถœํ•  ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ
  • ์†Œ๊ธˆ - ์ž„์˜์˜ ๊ฐ’
  • ์ดˆ๊ธฐํ™”_์ฝ”๋“œ - ๋ฐฐํฌ์šฉ ์Šค๋งˆํŠธ ๊ณ„์•ฝ ๋ฐ”์ดํŠธ์ฝ”๋“œ

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์ฃผ์†Œ์— ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์Šค๋งˆํŠธ ๊ณ„์•ฝ์€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ง€๊ฐ‘์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
๋ฐฐํฌ ์ „ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•: ์•”ํ˜ธํ™”ํ ๊ตํ™˜์„ ์œ„ํ•ด CREATE2 ์‚ฌ์šฉ
๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  ๋งค๋ฒˆ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์†Œ ๊ณต์‹์€ ์šฐ๋ฆฌ ์ง€๊ฐ‘ ๊ณต์žฅ์˜ ์ฃผ์†Œ์ด๋ฏ€๋กœ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์†Œ๊ธˆ - user_id ํ•ด์‹œ
  • ์ดˆ๊ธฐํ™”_์ฝ”๋“œ ๋™์ผํ•œ ์ง€๊ฐ‘์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๊ตฌ์ ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๊ฐœ์„ 

์ด์ „ ์†”๋ฃจ์…˜์—๋Š” ์—ฌ์ „ํžˆ ํ•œ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์Šค๋งˆํŠธ ๊ณ„์•ฝ ๋ฐฐํฌ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „()๊ทธ๋Ÿฐ ๋‹ค์Œ ์žํญ() ์ง€๊ฐ‘ ์ƒ์„ฑ์ž์—์„œ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์Šค๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๋ฏฟ์Œ๊ณผ๋Š” ๋‹ฌ๋ฆฌ CREATE2 opcode๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ผํ•œ ์ฃผ์†Œ์— ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” CREATE2๊ฐ€ ๋Œ€์ƒ ์ฃผ์†Œ์˜ nonce๊ฐ€ 1์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์ƒ์„ฑ์ž ์‹œ์ž‘ ๋ถ€๋ถ„์— ๊ฐ’ "XNUMX"์ด ํ• ๋‹น๋จ). ๋™์‹œ์—, ๊ธฐ๋Šฅ ์žํญ() ๋งค๋ฒˆ Nonce ์ฃผ์†Œ๋ฅผ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CREATE2๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋ฉด nonce ๊ฒ€์‚ฌ๊ฐ€ ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค.

์ด ์†”๋ฃจ์…˜์€ ์ด๋”๋ฆฌ์›€ ์ฃผ์†Œ ์†”๋ฃจ์…˜๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ฐœ์ธ ํ‚ค๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ์ง€๊ฐ‘์—์„œ ํ•ซ์›”๋ ›์œผ๋กœ ๋ˆ์„ ์ด์ฒดํ•˜๋Š” ๋น„์šฉ์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋น„์šฉ๊ณผ ๊ฑฐ์˜ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ „(), ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ์Šค๋งˆํŠธ ๊ณ„์•ฝ ๋ฐฐํฌ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ตœ์ข… ๊ฒฐ์ •

๋ฐฐํฌ ์ „ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•: ์•”ํ˜ธํ™”ํ ๊ตํ™˜์„ ์œ„ํ•ด CREATE2 ์‚ฌ์šฉ

์ฒ˜์Œ์— ์ค€๋น„ํ•œ ๊ฒƒ:

  • ์†Œ๊ธˆ์„ ์–ป๋Š” ๊ธฐ๋Šฅ USER_ID
  • ์ ์ ˆํ•œ ์†”ํŠธ(์˜ˆ: ์ง€๊ฐ‘ ํŒฉํ† ๋ฆฌ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CREATE2 opcode๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์Šค๋งˆํŠธ ๊ณ„์•ฝ
  • ๋‹ค์Œ ์ƒ์„ฑ์ž์™€์˜ ๊ณ„์•ฝ์— ํ•ด๋‹นํ•˜๋Š” ์ง€๊ฐ‘ ๋ฐ”์ดํŠธ์ฝ”๋“œ:

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
}


๋”ฐ๋ผ์„œ ์ง€๊ฐ‘ ์Šค๋งˆํŠธ ๊ณ„์•ฝ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ๋ชจ๋“  ํ† ํฐ์„ ํ•ซ์›”๋ › ์ฃผ์†Œ๋กœ ์ „์†กํ•œ ๋‹ค์Œ ์ž์ฒด ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค.

์ „์ฒด ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์—ฌ๊ธฐ์—. ์šฐ๋ฆฌ๋Š” ์ง€๊ฐ‘ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ์ด๋ฅผ opcode๋กœ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ƒ์‚ฐ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

์ €์ž Pavel Kondratenkov, ์ด๋”๋ฆฌ์›€ ์ „๋ฌธ๊ฐ€

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€