[SmartContract] Ethereum Smart Contract κ°λ°νκ²½ ꡬμ±νκΈ°: solidity, intellij, truffle
본격μ μΈ 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 νλ‘μ νΈλ₯Ό λ§λ€μ΄ 보μμ΅λλ€.