SECURITY/Blockchain

[SmartContract] Ethereum Smart Contract κ°œλ°œν™˜κ²½ κ΅¬μ„±ν•˜κΈ°: solidity, intellij, truffle

\b\t 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 ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€μ–΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.