๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ก work work work/blockchain

[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ๊ธฐ๋ณธ ๊ฐœ๋… ์ •๋ฆฌ(1) - ๋ฌธ๋ฒ•, ํ•จ์ˆ˜, ์œ ํ˜•, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ

by hanwitjus 2022. 6. 10.

์ธํ”„๋Ÿฐ์— ์˜ฌ๋ผ์™€์žˆ๋Š” ์•„๋ž˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•จ!

https://www.inflearn.com/course/%EC%86%94%EB%A6%AC%EB%94%94%ED%8B%B0-%EC%8A%A4%EB%A7%88%ED%8A%B8-%EC%BB%A8%ED%8A%B8%EB%9E%99/dashboard

 

 

โœ”๏ธ ์ด๋”๋ฆฌ์›€์˜ ๋‹จ์œ„

1 Ether == 10^9 Gwei == 10^18 wei

 

Gwei๋Š” ๊ฐ€์Šค๋น„์šฉ์„ ๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์œ„

๊ฐ€์Šค ๋น„์šฉ์€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ง€๋ถˆํ•˜๋Š” ๋น„์šฉ์ด๋‹ค.

 

Ethereum Yellow Paper 26์ชฝ์„ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์–ด๋–ค ํ•จ์ˆ˜/๋™์ž‘์„ ํ• ๋•Œ ์–ผ๋งŒํผ์˜ ๊ฐ€์Šค๋น„๋ฅผ ๋‚ด์•ผํ•˜๋Š”์ง€

๋ฏธ๋ฆฌ ๋‹ค ์ •์˜๋˜์–ด์žˆ๋‹ค.

 

[์ถœ์ฒ˜]https://ethereum.github.io/yellowpaper/paper.pdf

 

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 ๋‚ด๋ถ€์˜ ์š”์†Œ๋“ค์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

LIST

'๐Ÿ’ก work work work > blockchain' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter1~3 : ์ปจํŠธ๋ž™ํŠธ ๋ถˆ๋ณ€์„ฑ, ์†Œ์œ  ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋ž™ํŠธ, onlyOwner ํ•จ์ˆ˜ ์ œ์–ด์ž  (0) 2022.07.01
[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ๊ธฐ๋ณธ ๊ฐœ๋… ์ •๋ฆฌ(2) - Constructor ์ƒ์„ฑ์ž, ์ƒ์†, ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ๋‘๊ฐœ ์ด์ƒ ์ƒ์†  (0) 2022.06.15
[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์‹ค์Šต : ๋ฆฌ๋ฏน์Šค ์‚ฌ์šฉ๋ฒ•  (0) 2022.06.14
[์ด๋”๋ฆฌ์›€] ์ด๋”๋ฆฌ์›€ ์ž…๋ฌธ ๋ฐ”์ด๋ธ” - inflearn ๊ฐ•์˜ ์ •๋ฆฌ(2) : ์ด๋”๋ฆฌ์›€ ์šฉ์–ด์ •๋ฆฌ, ๊ฐ€๋‚˜์Šˆ, EVM, Geth, Parity  (0) 2022.06.09
[์ด๋”๋ฆฌ์›€] ์ด๋”๋ฆฌ์›€ ์ž…๋ฌธ ๋ฐ”์ด๋ธ” - inflearn ๊ฐ•์˜ ์ •๋ฆฌ(1) : ์ด๋”๋ฆฌ์›€ ๊ธฐ์ดˆ, ์šฉ์–ด์ •๋ฆฌ, ์ด๋”๋ฆฌ์›€ ๊ตฌ์กฐ, ์ง€๊ฐ‘, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ  (0) 2022.06.09

๋Œ“๊ธ€