๐งก ์ปจํธ๋ํธ์ ๋ถ๋ณ์ฑ
์ด๋๋ฆฌ์์ ์ปจํธ๋ํธ๋ฅผ ๋ฐฐํฌํ๋ฉด ์ด ์ปจํธ๋ํธ๋ฅผ ๋ค์๋ ์์ ํ ์ ์๋ค. ๋ด๊ฐ ์ต์ด๋ก ๋ฐฐํฌํ ์ปจํธ๋ํธ๋ ๋ธ๋ก์ฒด์ธ ์์ ์๊ตฌ์ ์ผ๋ก ์กด์ฌํ๋ค. ์ฆ, ๋ง์ฝ ์ปจํธ๋ํธ์ ์ทจ์ฝ์ ์ด ์กด์ฌํด๋ ๋ฐฐํฌ ์ดํ์๋ ๊ณ ์น ์๊ฐ ์๋ค.
๐งก OpenZeppelin์ Ownable ์ปจํธ๋ํธ
๋ฌด์ง์ฑ์ผ๋ก external ์ง์์๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ถ์ ํ๊ฐ๋ฐ์ง ์์ ์ฌ์ฉ์๋ ์ปจํธ๋ํธ๋ฅผ ํธ์ถํ ์ ์๋ค.
์ฐ๋ฆฌ๋ OpenZeppelin์ Ownable์ ์ด์ฉํด ์์ ํ ์ปจํธ๋๋ฅด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
function Ownable() public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
์์ฑ์: Ownable()๋ Ownable ์ปจํธ๋ํธ์ ์์ฑ์์ด๋ค. ์ด ํจ์๋ ์ปจํธ๋ํธ๊ฐ ํธ์ถ๋ ๋ ํ ๋ฒ๋ง ํธ์ถ๋๋ค.
ํจ์ ์ ์ด์: modifier onlyOnwer()๋ ๋ค๋ฅธ ํจ์์ ์ ๊ทผ์ ์ ์ดํ๊ธฐ ์ํ ์ ์ฌ ํจ์๋ค. ๋ณดํต ํจ์์ ์คํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ค.
๐งก onlyOnwer ํจ์ ์ ์ด์
ํจ์ ์ ์ด์๋ function ๋์ modifier์ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์ ์ ์ด์๋ ์ง์ ์ ์ผ๋ก ํธ์ถํ ์ ์๋ค.
likeABoss ํจ์๋ฅผ ํธ์ถํ๋ฉด onlyOnwer๊ฐ ๋จผ์ ํธ์ถ๋์ด require๋ก ์ ์ ํ๊ฒ ๊ฒ์ฌ๋ฅผ ์งํํ๋ค.
contract MyContract is Ownable {
event LaughManiacally(string laughter);
function likeABoss() external onlyOwner {
LaughManiacally("Muahahahaha");
}
}
๐งก Gas
Gas๋ dApp์ด ์ฌ์ฉํ๋ ์์๋ฃ์ด๋ค. ์ด Gas๋ ํจ์์ ํธ์ถ์ด ์ผ๋ง๋ ๋ณต์กํ์ง, ์ด๋ ํ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ๋น์ฉ์ด ๋ฌ๋ผ์ง๋ค. ์ฐ๋ฆฌ๋ ์ด Gas ๋น์ฉ์ ์ค์ด๊ธฐ ์ํด ์ฝ๋ ์ต์ ํ๋ฅผ ํ์์ ์ผ๋ก ์งํํด์ผ ํ๋ค. (Type changing)
๐งก Time units
Solidity๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐ์ ๋ค๋ฅผ ์ ์๋ ๋จ์๊ณ๋ค์ ์ ๊ณตํ๋ค. now ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด 1970/1/1 ๋ถํฐ ํ์ฌ ์๊ฐ๊น์ง ์ผ๋ง๋ ์๊ฐ์ด ํ๋ ๋์ง ๊ฐ์ ์ป์ ์ ์๋ค. ์ด ์ธ์๋, seconds, minutes, hours ๋ฑ์ด ์๋ค.
๐งก 'View'๋ฅผ ์ด์ฉํด Gas๋ฅผ ์ ์ฝํ๊ธฐ
view๋ฅผ ์ฌ์ฉํ๋ ํจ์๋ ์ฌ์ฉ์์ ์ํด ์ธ๋ถ์์ ํธ์ถ๋ ๋ ๊ฐ์ค๋ฅผ ์ ํ ์๋นํ์ง ์๋๋ค. ๊ทธ ์ด์ ๋ view๋ ๋ธ๋ก์ฒด์ธ ์์์ ์ด๋ ํ ๊ฐ๋ ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐งก Storage is expensive
Solidity์์ ๋น์ผ ์ฐ์ฐ ์ค ํ๋๊ฐ storage์ด๋ค. ์ด๋ ๋ธ๋ก์ฒด์ธ ์์์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ ์ง์ง ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด storage ์ฌ์ฉ์ ์ง์ํด์ผ ํ๋ค. ์ฐ๋ฆฌ๋ memory์ ๋ฐฐ์ด์ ์ ์ธํด์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
function getArray() external pure returns(uint[]) {
uint[] memory values = new uint[](3);
values.push(1);
values.push(2);
values.push(3);
return values;
}
https://share.cryptozombies.io/ko/lesson/3/share/bjloed?id=Y3p8MTIwMjIz
'Solidity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CryptoZombie] 1-5 ERC721 & Crypto-Collectibles (1) | 2021.08.02 |
---|---|
[CryptoZombie] 1-4 Zombie Battle System (0) | 2021.08.02 |
[CryptoZombie] 1-2 Zombies Attack Their Victims (0) | 2021.07.22 |
[CryptoZombie] 1-1 Making the Zombie Factory (0) | 2021.07.22 |
[Chap4] ์ค๋งํธ ์ปจํธ๋ํธ์ ๊ฐ๋ (0) | 2021.07.16 |