๋ธ”๋ก์ฒด์ธ/๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ

[์ด๋”๋ฆฌ์›€ ๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ] ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋ฐฐํฌ

HHRR 2022. 7. 18. 17:35

๊ฐ•์˜ ์˜์ƒ - Solidity๋ฅผ ์‚ฌ์šฉํ•œ ์ด๋”๋ฆฌ์›€ ๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ (2022)

: https://www.udemy.com/course/solidity-ethereum-bootcamp/learn/lecture/31207252#questions

๊ฐ•์˜ ์ž๋ฃŒ : https://ethereum-blockchain-developer.com/003-first-smart-contract/01-setup-remix/

์†”๋ฆฌ๋””ํ‹ฐ : https://remix.ethereum.org/

 

Remix - Ethereum IDE

 

remix.ethereum.org

 ๊ฐœ๋ฐœ

๋ฆฌ๋ฏน์Šค์—์„œ ์ƒˆ ํŒŒ์ผ ์ƒ์„ฑ
์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ํ…Œ์ŠคํŠธ ๋ธ”๋ก์ฒด์ธ์— ๋ฐฐํฌํ•˜๊ธฐ

- pragma solidity ^0.8.1; : ์†”๋ฆฌ๋””ํ‹ฐ ๋ฒ„์ „ ์„ค์ •

 

- ๋ฐฐํฌ์™€ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ํƒญ

  Injected Web3 ์„ ํƒ : ๋ฉ”ํƒ€๋งˆ์Šคํฌ ๋ฆฌ๋ฏน์Šค ID ์—ฐ๊ฒฐ

 

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.1; //์†”๋ฆฌ๋””ํ‹ฐ ๋ฒ„์ „

contract MyContract {
    string public myString = "Hello World!";
}

 

Deploy๋กœ ์ปจํŠธ๋ž™ํŠธ ๋ฐฐํฌ

- ๋ฆฌ๋ฏน์Šค Deploy ํด๋ฆญ -> ๋ฉ”ํƒ€๋งˆ์Šคํฌ ๊ณ„์ •์—์„œ ์—ฐ๊ฒฐ๋œ ๊ณ„์ •์œผ๋กœ ๊ณ„์•ฝ ๋ฐฐํฌ

 Etherscan(๋ธ”๋ก ํƒ์ƒ‰๊ธฐ) : ๊ฑฐ๋ž˜ ์„ฑ์‚ฌ ์—ฌ๋ถ€ ํ™•์ธ 

- ์ด๋” ์Šค์บ” : ๊ฑฐ๋ž˜ ์„ฑ์‚ฌ๋จ ํ™•์ธ, ํŠธ๋žœ์žญ์…˜ ์ฑ„๊ตด๋จ

- ๋ฆฌ๋ฏน์Šค : ์ƒˆ ํŠธ๋žœ์žญ์…˜ ์ธ์Šคํ„ด์Šค ์ƒ๊น€, 

                myString : ์Šค๋งˆํŠธ ๊ณ„์•ฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ

                                  ๋ชจ๋“  ๊ณต๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์†”๋ฆฌ๋””ํ‹ฐ ๋‚ด๋ถ€์—์„œ ๊ธฐ๋Šฅ์„ ์–ป์Œ(๋ˆ„๋ฅด๋ฉด Hello World ์ถœ๋ ฅ๋จ)


 

์ด๋ก 
  • ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ  : ๋‹‰ ์‚ฌ๋ณด๊ฐ€ 1994๋…„ ์ฒ˜์Œ ๋งŒ๋“ฆ, ์ž๋™ ํŠธ๋žœ์žญ์…˜์„ ๋ถ€๋ฆ„, ๋ธ”๋ก์ฒด์ธ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ์˜ ์ผ๋ถ€

- ํŠธ๋žœ์žญ์…˜์„ ๋ฐœ์†กํ•  ๋•Œ

 : ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ์ฑ„๊ตด๋จ -> ์ƒํƒœ ๋ณ€ํ™” (ํŠธ๋žœ์žญ์…˜+์ฑ„๊ตด์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง)

** ํŠธ๋žœ์žญ์…˜์„ ๋ฐœ์†กํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์•„๋‹˜. ์ฑ„๊ตด์ด ๋˜์–ด์•ผํ•จ.

 

- ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

 : ๋ชจ๋‘ ์ปดํŒŒ์ผ ๋˜์–ด์„œ ์‹ค์ œ๋กœ ๋ธ”๋ก์ฒด์ธ์— EVM bytecode ๋ณด๋ƒ„

  ํŠธ๋žœ์žญ์…˜ ์ „์†กํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํ•„๋“œ๊ฐ€ ์ฑ„์›Œ์ง„ ๊ฑธ ๋ดค์„ ๋•Œ ์ „์†ก๋œ๊ฑด ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ -> ๋ธ”๋ก์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ๋ธ”๋ก์ฒด์ธ์— ๋“ค์–ด๊ฐ

 

- ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ

 -> ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ฐฐํฌํ•˜์—ฌ ๋ธ”๋ก์ฒด์ธ์—์„œ ์‹คํ–‰ (EVM-๋งŽ์€ ๋ธ”๋ก์ฒด์ธ์ด ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋ฐ˜์—์„œ ์œ ์‚ฌํ•œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ๋ณต์‚ฌํ•ด๊ฐ, ํŠœ๋ง๋˜์–ด์žˆ์Œ)

 -> ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ์ฐธ์—ฌ์ค‘์ธ ๋…ธ๋“œ๊ฐ€ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰

 -> ๋ธ”๋ก์ฒด์ธ์˜ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ธ”๋ก์ฒด์ธ์˜ ์‚ฌ๋ณธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ํŠธ๋žœ์žญ์…˜์ด ์œ ํšจํ•œ์ง€ ํ™•์ธ

      => ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์›์žฅ์„ ๊ณต์œ  

 

  •  ์†”๋ฆฌ๋””ํ‹ฐ 

- ํ•จ์ˆ˜, if/else, Loops(for,while), DataTypes((U)Int, Boolean,Array/Struct,Mapping,Address,No Floats), Inhertiable, modifiers, Imports

 

contract MyContract {
    string public myString = "Hello World!";
}

- ์†”๋ฆฌ๋””ํ‹ฐ ๋ฌธ์„œ์—์„œ ์ปจํŠธ๋ž™ํŠธ๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ 

- ์ค‘๊ด„ํ˜ธ ์•ˆ : ์Šคํ† ๋ฆฌ์ง€ ๋ณ€์ˆ˜, ์ด๋ฒคํŠธ, ๋ณ€๊ฒฝ์ž, ํ•จ์ˆ˜, ์ƒ์„ฑ์ž ๋“ฑ๋“ฑ