ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SmartContract] Ethereum Smart Contract ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ: solidity, intellij, truffle
    SECURITY/Blockchain 2022. 1. 11. 13:28

     

    ๋ณธ๊ฒฉ์ ์ธ Smart Contract ์ž‘์„ฑ์— ์•ž์„œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

    Smart Contract ์ž‘์„ฑ์— ํ•„์š”ํ•œ ํˆด์€ ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์งš์–ด๋ณด๊ณ , ๊ทธ ์ค‘์—์„œ ํŠน์ • ํ™˜๊ฒฝ์„ ๊ฐ€์ •ํ•˜๊ณ  ์ €์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

     


    Solidity ์ปดํŒŒ์ผ๋Ÿฌ

    • Remix: ์ž…๋ฌธํ•˜๊ธฐ๋กœ ์ตœ๊ณ ์ธ ์›น ์ปดํŒŒ์ผ ํˆด. ๋ฐฐํฌ๊นŒ์ง€ ๊ฐ€๋Šฅ!
      ์ขŒ์ธก ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ, ์‹คํ–‰ ๋“ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

      ๊ธฐ๋ณธ ์ œ๊ณต ํŒŒ์ผ
    • Truffle: ์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ์ž๋™ํ™” ๋„๊ตฌ

    Remix ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ๊ฒฐ๊ตญ ๋ฐฐํฌ ๋ฐ ์„œ๋น„์Šค ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” Truffle ์ด ํ•„์š”ํ•ด์ง‘๋‹ˆ๋‹ค.

    ๋‹จ์ˆœ ๊ฒฝํ—˜ ํ˜น์€ ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋งŒ ํ•  ๊ฒƒ์ด๋ฉด Remix ๋กœ ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ์›ํ•œ๋‹ค๋ฉด Truffle ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ๋‹จ, ์ฒ˜์Œ์— Smart contract ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋จผ์ € Remix ๋กœ ์ง์ ‘ ํ•ด๋ณด๋Š” ๊ฒƒ์€ ๊ฐ•๋ ฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

     

    Solidity ํŽธ์ง‘๊ธฐ

    ๋‹ค์–‘ํ•œ ํŽธ์ง‘๊ธฐ์—์„œ solidity ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ 3๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    • Eclipse: ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋”ฐ๋กœ Yakindu ๋ผ๋Š” solidity ์ „์šฉ ํˆด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Atom: ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ์ง‘๊ธฐ๋กœ, solidity ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
      (linter-solidity ๊ฐ€ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.)

    • Intellij: ์—ญ์‹œ solidity ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

     


    ์ž‘์—… ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

    Smart Contract ์ž‘์„ฑ ๋ฐ ์ปดํŒŒ์ผ, ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋‹ค์Œ์˜ ์ž‘์—… ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    • Windows10
    • Intellij Solidity Plugin (2.3.6)
    • Ganache 2.5.4
    • Truffle 5.4.26

     

    Intellij Solidity Plugin

    ์ €๋Š” ์ด๋ฏธ Intellij ๊ฐ€ ์„ค์น˜๋œ ์ƒํ™ฉ์ด๋ผ ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ์ถ”๊ฐ€ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

    (Intellij ๋Š” ํ•™์ƒ์ธ ๊ฒฝ์šฐ ๋ฌด๋ฃŒ ๋ผ์ด์„ผ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค)

     

    ๋‹ค์Œ์ฒ˜๋Ÿผ Plugins ์—์„œ solidity ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋ฐ”๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Plugins ๋Š”, ์ €์˜ ๊ฒฝ์šฐ File -> Settings ๋กœ ๋“ค์–ด๊ฐ€์„œ Plugins ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

     

    ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ฉด ์ƒˆ ํŒŒ์ผ๋กœ solidity ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ™•์žฅ์ž .sol)

     

     

    Ganache

    ๋กœ์ปฌ ๊ฐ€์ƒ ์ด๋”๋ฆฌ์›€์œผ๋กœ, ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    https://trufflesuite.com/ganache/ ์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๊ณ  ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

     

    ๋‹ค์šด๋ฐ›์€ ์‹คํ–‰ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๊ณ  ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

     

    ์„ค์น˜ํ•œ Ganache ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด, ๊ทธ ์ด๋ฆ„๋‹ต๊ฒŒ ๊ท€์—ฌ์šด UI ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

     

    Truffle

    Truffle ์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (trufflesuite.com)

    Turffle ์ด ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋ฏ€๋กœ, npm ์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

     

    ์ €๋Š” Node.js ๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋œ ์ƒํ™ฉ์ด๋ผ, PowerShell ์„ ์—ด์–ด์„œ ๋‹ค์Œ์„ ์ž…๋ ฅํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

    npm install truffle -g

    ์„ค์น˜ ํ›„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ด๋ฉด ์„ค์น˜๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

     


    ์ƒˆ Truffle ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

    PowerShell ์„ ์—ด์–ด์„œ, ํด๋” ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  truffle ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    mkdir FOLDER_NAME
    cd FOLDER_NAME
    truffle init

     

    ํ˜น์‹œ ์ด ๊ณผ์ •์—์„œ ๋‹ค์Œ์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ์ด๋Š” Powershell์„ ์‹คํ–‰ํ•˜๋Š” ์ •์ฑ…์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

    truffle : ์ด ์‹œ์Šคํ…œ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ \AppData\Roaming\npm\truffle.ps1 ํŒŒ์ผ์„ ๋กœ๋“œํ•  ์ˆ˜
    ์—†์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
    ์œ„์น˜ ์ค„:1 ๋ฌธ์ž:1
    + CategoryInfo          : ๋ณด์•ˆ ์˜ค๋ฅ˜: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

    ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด Unrestricted, ์ฆ‰ ์„œ๋ช…๋˜์ง€ ์•Š์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์กฐ๊ฑด์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Set-ExecutionPolicy Unrestricted

    ์ด ํ–‰์œ„๋Š” PowerShell ์˜ ๋ณด์•ˆ ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•˜๋Š” ํ–‰์œ„๋กœ, ๊ตฌ์ฒด์ ์œผ๋กœ Unrestricted ๊ฐ€ ์–ด๋–ค ์˜ต์…˜์ธ์ง€๋Š”  https://docs.microsoft.com/ko-kr/powershell/module/microsoft.powershell.core/about/about_execution_policies ์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

     

    ๋‹ค์‹œ truffle init ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด, ๋‹ค์Œ์ฒ˜๋Ÿผ init ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

     

    ls ๋กœ ํด๋”์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด, truffle ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

     


    ์ด์ƒ์œผ๋กœ Smart Contract ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ์ƒˆ Truffle ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.