Wallet - modolee/blockchain GitHub Wiki

๊ฐœ์ธํ‚ค & ๊ณต๊ฐœํ‚ค

๊ฐœ์ธํ‚ค

  • ๋žœ๋ค ํ•œ 256bit๋กœ ์ด๋ค„์ง„ ๊ฐ’
  • ์ผ๋ฐ˜ ๋‚œ์ˆ˜ ์ƒ์„ฑ๊ธฐ๋กœ ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์—”ํŠธ๋กœํ”ผ (๋ฌด์ž‘์œ„์„ฑ)๊ฐ€ ๋†’์€ ํ•จ์ˆ˜๋กœ ์ƒ์„ฑํ•ด์•ผ ์•ˆ์ „ํ•˜๋‹ค.
  • ์ตœ์†Œ ๊ฐ’ : 0x1
  • ์ตœ๋Œ€ ๊ฐ’ : 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
  • 2^256 = 1.1579209e+77, ๊ฐ€์‹œ์  ์šฐ์ฃผ์˜ ์›์ž ๊ฐœ์ˆ˜๋กœ ํ‘œํ˜„๋˜๋Š” 10^80๊ณผ ๋งž๋จน๋Š” ์ˆซ์ž
  • ๋น„ํŠธ์ฝ”์ธ ์ฃผ์†Œ ์ƒ์„ฑ๊ธฐ

๊ณต๊ฐœํ‚ค์™€ ์ฃผ์†Œ

  • ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑํ–ˆ์œผ๋ฉด ํƒ€์›๊ณก์„  ๊ณฑ์…ˆ์„ ์ด์šฉํ•ด์„œ ๊ณต๊ฐœํ‚ค๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น„ํŠธ์ฝ”์ธ์€ secp256k1์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • Base64 : 64๊ฐ€์ง€์˜ ๋ฌธ์ž๋กœ ์ˆ˜๋ฅผ ํ‘œํ˜„. A-Z(26), a-z(26), 0-9(10), +, / (2)
  • Base58 : 58๊ฐ€์ง€์˜ ๋ฌธ์ž๋กœ ์ˆ˜๋ฅผ ํ‘œํ˜„. Base64์—์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š” 0-O(์ˆซ์ž ์˜, ๋Œ€๋ฌธ์ž ์˜ค), I-l(๋Œ€๋ฌธ์ž ์•„์ด, ์†Œ๋ฌธ์ž ์—˜), +, / 6๋ฌธ์ž๋ฅผ ๋บ€ ๊ฒƒ

๊ฐœ์ธํ‚ค ์ƒ์„ฑ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • ๋น„ํŠธ์ฝ”์ธ์—์„œ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด์„œ ๋น„ํŠธ์ฝ”์ธ ์ฃผ์†Œ๋ฅผ ์ผํšŒ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธธ ๊ถŒ์žฅํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ 100๊ฐœ์˜ ๊ฑฐ๋ž˜๋ฅผ ์œ„ํ•ด์„œ๋Š” 100๊ฐœ์˜ ์ฃผ์†Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. (100๊ฐœ์˜ ๊ฐœ์ธํ‚ค๋ฅผ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.)

๋น„๊ฒฐ์ •์  ์ง€๊ฐ‘ (Non-deterministic Wallet)

  • ๋งค๋ฒˆ ๋ฌด์ž‘์œ„ํ•˜๊ฒŒ ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ๋น„ํŠธ์ฝ”์ธ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ณด๊ด€์ด ์–ด๋ ต๋‹ค. ๊ณต๊ฐœํ‚ค - ๊ฐœ์ธํ‚ค ์Œ์„ ๋ชจ๋‘ ๋ฐฑ์—…ํ•ด์•ผ ํ•œ๋‹ค.

๊ฒฐ์ •์  ์ง€๊ฐ‘ (Deterministic Wallet)

  • ํ•˜๋‚˜์˜ ์‹œ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ทœ์น™์„ ๊ฐ€์ง€๊ณ  ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๊ณ„์ธต ๊ฒฐ์ •์  ์ง€๊ฐ‘ (Hierarchical Deterministic Wallet - HD Wallet)

  • ๋ง ๊ทธ๋Œ€๋กœ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ƒ์œ„ ๊ณ„์ธต์˜ ํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ๋Š” ํ•˜์œ„ ๊ณ„์ธต์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•˜์œ„ ๊ณ„์ธต์˜ ํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ๋Š” ์ƒ์œ„ ๊ณ„์ธต์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค.
  • BIP-0032

Mnemonic

  • ๊ฒฐ์ •์  ์ง€๊ฐ‘์˜ ์‹œ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์—”ํŠธ๋กœํ”ผ๋ฅผ ์‚ฌ๋žŒ์ด ๊ธฐ์–ตํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด, ๋‹จ์–ด๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ
  • BIP-0039
  • Mnemonic Wordlists
  • Mnemonic Code Converter
* ENT : initial entropy length
* CS : the checksum length
* MS : the length of the generated mnemonic sentence in words.

CS = ENT / 32
MS = (ENT + CS) / 11

|  ENT  | CS | ENT+CS |  MS  |
+-------+----+--------+------+
|  128  |  4 |   132  |  12  |
|  160  |  5 |   165  |  15  |
|  192  |  6 |   198  |  18  |
|  224  |  7 |   231  |  21  |
|  256  |  8 |   264  |  24  |

์ €์žฅ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ (ํ•ซ ์›”๋ › vs ์ฝœ๋“œ ์›”๋ ›)

๋ฐ์ดํ„ฐ

  • ํ•ซ ๋ฐ์ดํ„ฐ
    ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ
  • ์ฝœ๋“œ ๋ฐ์ดํ„ฐ
    ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ๋ณด๊ด€์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ

์Šคํ† ๋ฆฌ์ง€

๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ

  • ํ•ซ ์Šคํ† ๋ฆฌ์ง€

    • ์ผ๋ฐ˜ : ํ•ซ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ €์žฅ์†Œ. ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. (์†๋„ > ์šฉ๋Ÿ‰)
    • ์•”ํ˜ธํ™”ํ : ์˜จ๋ผ์ธ์œผ๋กœ ์—ฐ๊ฒฐ ๋˜์–ด ๋ฐ”๋กœ ์ถœ๊ธˆ์ด ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ
    • ์˜ˆ์‹œ
      • ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ ๋œ PC
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
      • ํด๋ผ์šฐ๋“œ
  • ์ฝœ๋“œ ์Šคํ† ๋ฆฌ์ง€

    • ์ผ๋ฐ˜ : ์ฝœ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ €์žฅ์†Œ. ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. (์†๋„ < ์šฉ๋Ÿ‰)
    • ์•”ํ˜ธํ™”ํ : ์˜คํ”„๋ผ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ๋ฐ”๋กœ ์ถœ๊ธˆ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ
    • ์˜ˆ์‹œ
      • USB ๋ฉ”๋ชจ๋ฆฌ
      • ์ข…์ด์— ์ ์–ด ๋†“์Œ
      • ๋จธ๋ฆฌ ์†์— ๊ธฐ์–ต

์›”๋ ›

๋‹จ์ˆœํžˆ ๊ฐœ์ธํ‚ค๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ ์ด ์™ธ์˜ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

  • ์ƒˆ๋กœ์šด ๊ณ„์ • ์ƒ์„ฑ
  • ์„œ๋ช… ์ƒ์„ฑ
  • ํŠธ๋žœ์žญ์…˜ ์ƒ์„ฑ
  • ์ถ”๊ฐ€ ์ ์ธ ๋ณด์•ˆ ์„ค์ • (ํŒจํ„ด, ์ง€๋ฌธ, ์•ˆ๋ฉด ์ธ์‹ ๋“ฑ)

ํŠธ๋žœ์žญ์…˜ ์ „์†ก ๊ณผ์ •

  1. ํŠธ๋žœ์žญ์…˜ ๋‚ด์šฉ ์ž‘์„ฑ
    A๊ฐ€ Bํ•œํ…Œ 1 ETH๋ฅผ ๋ณด๋‚ด๊ฒ ๋‹ค.
  2. ๊ฐœ์ธํ‚ค๋กœ ์„œ๋ช…
    ์ด ํŠธ๋žœ์žญ์…˜์€ A๊ฐ€ ์ƒ์„ฑํ•œ ํŠธ๋žœ์žญ์…˜์ด ๋งž๋‹ค.
  3. ์„œ๋ช… ๋œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์šฉ์„ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์— ์ „์†ก
    Parity, MyEtherWallet, MetaMask ๋“ฑ๋“ฑ

ํ•ซ ์›”๋ › vs ์ฝœ๋“œ ์›”๋ ›

  • ํ•ซ ์›”๋ ›

    • ์˜จ๋ผ์ธ ์ƒํƒœ์—์„œ ๊ฐœ์ธํ‚ค๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฒฝ์šฐ
    • 1, 2, 3๋ฒˆ ๊ณผ์ •์„ ๋ชจ๋‘ ์˜จ๋ผ์ธ ์ƒํƒœ์—์„œ ์ง„ํ–‰
    • ํ•ดํ‚น์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ถœ๋˜๋ฉด ๊ฐœ์ธํ‚ค๋„ ๊ฐ™์ด ์œ ์ถœ ๋  ์œ„ํ—˜์ด ์žˆ์Œ.
    • ๋ณด์•ˆ
      • 2FA(Two-Factor Authentication) : ์ง€๋ฌธ, OTP, PIN
  • ์ฝœ๋“œ ์›”๋ ›

๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์›”๋ ›

๊ฑฐ๋ž˜์†Œ์˜ ์›”๋ › ์šด์˜๋ฐฉ์‹

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

๋ฉ€ํ‹ฐ ์‹œ๊ทธ ์›”๋ ›

  • M of N : N๊ฐœ์˜ ๊ฐœ์ธํ‚ค ์ค‘์—์„œ M๊ฐœ์˜ ํ‚ค์— ์˜ํ•ด ์ถœ๊ธˆ ์„œ๋ช…์ด ๋˜์–ด์•ผ์ง€๋งŒ ์ถœ๊ธˆ์ด ์ด๋ฃจ์–ด์ง€๋Š” ์›”๋ ›
  • ์ž์‚ฐ์„ 1์ธ์ด ๋‹จ๋…์œผ๋กœ๋Š” ์ถœ๊ธˆํ•˜์ง€ ๋ชปํ•˜๊ณ  2์ธ ์ด์ƒ์˜ ๋™์˜๊ฐ€ ์žˆ์–ด์•ผ ์ถœ๊ธˆํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ
  • ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ์ผ์ข…์˜ dApp

์˜ˆ์‹œ

  • ์—์Šคํฌ๋กœ : ๊ตฌ๋งค์ž, ํŒ๋งค์ž, ์ค‘๊ฐœ์ž์˜ 2 of 3
    • ์ •์ƒ์ ์ธ ๊ตฌ๋งค/ํŒ๋งค๊ฐ€ ์ด๋ค„์ง„ ๊ฒฝ์šฐ 3๋ช… ๋ชจ๋‘ ์„œ๋ช…
    • ๊ตฌ๋งค์ž๊ฐ€ ์ •๋‹นํ•œ ์‚ฌ์œ ๋กœ ํ™˜๋ถˆ ์š”์ฒญํ•œ ๊ฒฝ์šฐ : ๊ตฌ๋งค์ž, ์ค‘๊ฐœ์ž ๋งŒ ์„œ๋ช…ํ•˜๋ฉด ํ™˜๋ถˆ ๊ฐ€๋Šฅ
    • ํŒ๋งค์ž๊ฐ€ ์ •๋‹นํ•œ ์‚ฌ์œ ๋กœ ํŒ๋งค๋ฅผ ์ฒ ํšŒ ํ•œ ๊ฒฝ์šฐ : ํŒ๋งค์ž, ์ค‘๊ฐœ์ž ๋งŒ ์„œ๋ช…ํ•˜๋ฉด ์ฒ ํšŒ ๊ฐ€๋Šฅ

์ฐธ๊ณ ์ž๋ฃŒ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ