2019๋
๊ตญ๋ฏผ๋ํ๊ต SW๊ฒจ์ธ์บ ํ์ ์ฐธ๊ฐํ๋ฉด์ ๋ธ๋ก์ฒด์ธ์ ๋ํด ์๊ฒ ๋๊ณ solidity๋ผ๋ ์ธ์ด๋ฅผ ๊ณต๋ถํ์์ต๋๋ค.
๊ทธ ์ด์ ์๋ SCTF์ ๋ฌธ์ ์์๋ ๋ณธ ์ ์ด ์์ง๋ง ๊ทธ ๋๋ ์ ์์ง ๋ชป ํ์์ต๋๋ค.
์ด๋ฒ์ ๊ฐ์ธ์ ์ผ๋ก ํฌ๋ฆฝํ ์ข๋น๋ฅผ ํตํด ๋ฌธ๋ฒ์ ์ตํ๋ ๋์ค ์์์ ๋ํ ํค์๋๋ก
is๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ๊ณ ์ ์ ๋ ์๊ฐ์ ๋น ์ก์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ๋๋ค์ด ์ดํดํ๊ธฐ์ is๊ฐ ์์์ผ๋ก ์ดํด๋ ์ ์๋๊ฐ๋ฅผ ์๊ฐํ๋ฉฐ ๊ทธ ๋ณธ ๋ป์ ์์๋ณด๊ณ ์ ํ์์ต๋๋ค.
์๋ฆฌ๋ํฐ๋ ๊ฐ๋ตํ ๋งํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
Ethereum Virtual Machine (EVM)์์ ์ฌ์ฉํ๊ธฐ ์ํด ์ค๊ณ๋ ์ ์ ํ์ ๊ณ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
๋ธ๋ก์ฒด์ธ ํ๋ซํผ ์์์ ์ค๋งํธ๊ณ์ฝ(Smart Contract)๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
ํ์ฌ๋ ์ด๋๋ฆฌ์์ ์ฃผ์ ์ธ์ด๋ก ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
์๋๋ ๊ฐ๋จํ ์๋ฆฌ๋ํฐ ์ฝ๋์
๋๋ค.
pragma solidity ^0.4.24;
contract Main {
function getHelloWorld() public pure returns(string) {
return "Hello World!!";
}
}
์๊ฐ์ด ํ๋ฌ ๊ฒฐ๊ตญ์๋ Stack Overflow์ ๋์์ ์์ฒญํ์ต๋๋ค!
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ๋ต๋ณ์ ๋ค์ ์ ์์์ต๋๋ค.
Because in proper object oriented designs, inheritance really should be an "is a" relationship, so why not? - ShadowRanger
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ธ์ด์ ์ฅ์ ์ ์ฝ๋์ ์ฌํ์ฉ์ ๋๋ค. ๊ทธ์ ๋ํ ๋ฐฉ๋ฒ์ผ๋ก ํฌ๊ฒ ์์๊ณผ ์ปดํฌ์ง์ (์กฐํฉ)์ด ์์ต๋๋ค. ์์์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์ IS-A ๊ด๊ณ๋ผ ํ๊ณ ์กฐํฉ์ HAS-A ๊ด๊ณ๋ผ ํฉ๋๋ค.
Solidity์์์ is๊ฐ ์์์ ์๋ฏธํ๋ ์ด์ ๋ IS-A Relationship์์์ IS๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ณ ๋ก is๋ ์ ์์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ์ง ํค์๋์์ต๋๋ค!
// ๊ฐ์ธ์ ์ผ๋ก๋ extends๊ฐ ๋ ๋ง์์ ๋ญ๋๋ค.. :(