์ธํ๋ฐ์ ์ฌ๋ผ์์๋ ์๋์ ๊ฐ์๋ฅผ ๋ณด๊ณ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์ ๋ฆฌํจ!
โ๏ธ ์ด๋๋ฆฌ์์ ๋จ์
1 Ether == 10^9 Gwei == 10^18 wei
Gwei๋ ๊ฐ์ค๋น์ฉ์ ๋ผ ๋ ์ฌ์ฉํ๋ ๋จ์
๊ฐ์ค ๋น์ฉ์ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ์ฌ์ฉํ ๋ ์ง๋ถํ๋ ๋น์ฉ์ด๋ค.
Ethereum Yellow Paper 26์ชฝ์ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ์ด๋ค ํจ์/๋์์ ํ ๋ ์ผ๋งํผ์ ๊ฐ์ค๋น๋ฅผ ๋ด์ผํ๋์ง
๋ฏธ๋ฆฌ ๋ค ์ ์๋์ด์๋ค.

Ethereum ๋ธ๋ก์ฒด์ธ๊ณผ ์ํธ์์ฉ์ ํ๋ ค๋ฉด Gas๋น๊ฐ ๋ฌด์กฐ๊ฑด ๋ฐ์ํ๋ค.
๐ ๋ณด์์ ์ธ ์ธก๋ฉด์์์ Gas
DDos์ ๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ ์ ์๋ค.
ex. ํด์ปค๊ฐ ์ ์์ ์ผ๋ก Smart Contract๋ฅผ ๊ณ์ ๋ฐฐํฌํ๊ฑฐ๋, ์ด๋ ํ ๋์์ ๋ฐ๋ณต์ ์ผ๋ก ํด์ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ๋ฅผ ๊ณผ๋ถํ์ํค๋ Smart Contract๋ฅผ ๋ง๋ ๋ค๊ณ ํ์ ๋, ๊ณ์ Gas๋น๊ฐ ์๊ตฌ๋๋ฏ๋ก ๊ฒฝ์ ์ ๋ถ๋ด์ผ๋ก ์ธํด ๊ณต๊ฒฉ์ ์ ํ์ ๊ฐํ ์ ์๋ค.
>> ๊ทธ๋์ ๊ฒฐ๊ตญ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ๊ฐ๋ฐํ๋ ๊ฐ๋ฐ์๋ก์ ์ต๋ํ Gas๋ฅผ ์ค์ฌ์ ์ฝ๋๋ฅผ ์งค ์ ์๋๋ก ๊ณ ๋ คํด์ผํ๋ค.
โ๏ธ ์๋ฆฌ๋ํฐ์์์ ํจ์(Function)
1) ํ๋ผ๋ฏธํฐ์ ๋ฆฌํด ๊ฐ์ด ์๋ ํจ์
function changeA1 public{
a = 5
}
2) ํ๋ผ๋ฏธํฐ๋ ์๊ณ , ๋ฆฌํด ๊ฐ์ด ์๋ ํจ์
function changeA2(uint256 _value) public{
a = _value;
}
3) ํ๋ผ๋ฏธํฐ์ ๋ฆฌํด ๊ฐ์ด ๋ชจ๋ ์๋ ํจ์
function changeA3(uint256 _value) public returns(uint256) {
a = _value;
return a;
}
โ๏ธ Pure์ View (์ํ ์ ์ด์)
- view : function ๋ฐ์ ๋ณ์๋ค์ ์ฝ์ ์ ์์ผ๋, ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
- pure : function ๋ฐ์ ๋ณ์๋ค์ ์ฝ์ง ๋ชปํ๊ณ ๋ณ๊ฒฝ๋ ๋ถ๊ฐ๋ฅ
- view์ pure ๋๋ค ๋ช ์ ์ํ์ ์ : function ๋ฐ์ ๋ณ์๋ฅผ ์ฝ์ด์ ๋ณ๊ฒฝํด์ผํจ
function get_A() public view returns(uint256){
return a;
}
์ด๋ฐ์์ผ๋ก ์ ๊ทผ ์ ํ์ ๋ค์ ๋ช ์ํด์ฃผ๋ฉด ๋จ.
โ๏ธ ์ ๊ทผ์ ์ด์
์๋ก ๋ค๋ฅธ ์ปจํธ๋ํธ์ ์๋ ํจ์ ํธ์ถ ์, ์ ๊ทผ ์ ์ด๋ฅผ ๊ฑธ ์ ์๋ค.
- internal : ํจ์๊ฐ ์ ์๋ ์ปจํธ๋ํธ๋ฅผ ์์ํ๋ ์ปจํธ๋ํธ์์๋ ์ ๊ทผ ๊ฐ๋ฅ (private์ ๋น์ท)
- external : ํจ์๊ฐ ์ปจํธ๋ํธ ๋ฐ๊นฅ์์๋ง ํธ์ถ๋ ์ ์๋ค. ์ปจํธ๋ํธ ๋ด์ ๋ค๋ฅธ ํจ์์ ์ํด ํธ์ถ๋ ์ ์๋ค. (์ธ๋ถ ํธ์ถ ์ ๊ฐ์ค ๋ฌด๋ฃ)
โ๏ธ ์๋ฆฌ๋ํฐ์ 4๊ฐ์ง ๋ถ๋ฅ
1) Storage
๋๋ถ๋ถ์ ๋ณ์, ํจ์ ( ํจ์ ๊ทธ ์์ฒด์ ํจ์ ์ธ๋ถ์ ๋ณ์) ๋ค์ ์ ์ฅ, ์์์ ์ผ๋ก ์ ์ฅ๋จ.
์์์ ์ ์ฅ์ ์๋ฏธ๋ ๋ธ๋ก์ ์ ์ฅ๋์ด ๋ชจ๋ ์ฌ๋์ด ๋ค์ด ๋ฐ์์ผํ๋ค๋ ์๋ฏธ. ๊ฐ์ค ๋น์ฉ์ด ๋น์.
2) Memory
ํจ์์์ ๋ณ์, ํ๋ผ๋ฏธํฐ, ๋ฆฌํด ๊ฐ, ๋ ํผ๋ฐ์ค ํ์ ์ด ์ฃผ๋ก ์ ์ฅ๋จ.
์์์ ์ด์ง ์๊ณ , ํจ์ ๋ด์์๋ง ์ ํจํ๋ค. ๊ฐ์ค ๋น์ฉ์ด ์ ๋ ดํจ.
3) Colldata
์ฃผ๋ก external ํจ์์์์ ํ๋ผ๋ฏธํฐ์์ ์ฌ์ฉ
4) Stack
EVM์์ stack data๋ฅผ ๊ด๋ฆฌํ ๋ ์ฐ๋ ์์ญ. 1024mb ์ ํ.
** String์ ๊ธฐ๋ณธ๋ฐ์ดํฐ ํ์ ์ด ์๋ reference ํ์ ์ด๋ผ memory๊ฐ ๋ํดํธ๋ก ์ค์ ๋ผ์์ง ์์.
๋ฐ๋ผ์ function์์ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ ๋ "memory" ํค์๋๋ฅผ ๋ถ์ฌ์ผ ํจ.
(๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ํจ์์์ ์ฌ์ฉ ์ memory๊ฐ ๋ํดํธ)
//function - string.
function get_string(string memory _str) public pure returns(string memory){
return _str;
}
โ๏ธ Instance ์ธ์คํด์ค
: ํ๋์ contract์์ ๋ค๋ฅธ contract์ ์ ๊ทผํ ๋ ์ฌ์ฉ
contract A{
uint256 public a =5;
function change(uint256 _value) public {
a = _value;
}
}
contract B{
A instanceName = new A();
}
์ด๋ ๊ฒ ์ปจํธ๋ํธB์์ A๋ฅผ ์ธ์คํด์ค์ ํด์ ์์ฑํ ํ, ์ (.) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์ปจํธ๋ํธA ๋ด๋ถ์ ์์๋ค์ ์ ๊ทผํ์ฌ ์ฌ์ฉํ๋ค.
๋๊ธ