Smart Contract
μ΄λ²μ λΈλ‘μ²΄μΈ κ΄λ ¨ νλ‘μ νΈλ₯Ό μ§ννκ² λμ΄ μ€λ§νΈ 컨νΈλνΈλ₯Ό μ§μ λ°°ν¬ν΄μΌνλ μν©μ΄ μκ²Όλ€. κ·Έ μ μ μ€λ§νΈ 컨νΈλνΈκ° μ νν 무μμΈμ§ μ 리νκΈ° μν΄ μμ±ν κ²μκΈμ΄λ€.
Smart Contract?
μ€λ§νΈ 컨νΈλνΈλ, λΈλ‘μ²΄μΈ κΈ°μ μ νμ©ν΄ κ±°λ λΉμ¬μ μΈ μ 3μ μΈμ¦κΈ°κ΄μμ΄ κ³μ½μ΄ μ΄λ£¨μ΄μ§λλ‘ νλ κΈ°μ μ λ§νλ€.
κΈ°μ‘΄ κ±°λ μ€ μ‘κΈμ μμλ‘ λ€μ΄λ³΄μ. μνμ μ‘κΈμ μμ²νλ©΄ μνμ μΈνμνμ μ§κΈμ μμ²νλ€. μ΄ν, μΈν μ€κ°μνμ ν΄μΈ μνμ μ κΈν, μμ·¨μΈμκ² μ λ¬λκ² λλ€. μ΄μ²λΌ, κ°κ°μΈκ°μ κ±°λ μ¬μ΄μ μνμ΄λΌλ μ 3μ μΈμ¦κΈ°κ΄μ κ°μ μ΄ λ°μν΄ μμλ£κ° λ°μνκ² λλ€.
μ΄μ²λΌ μΈμ¦κΈ°κ΄μ΄ νμν μ΄μ λ λμ§νΈ λ°μ΄ν°λ₯Ό λ€λ€μΌ νκΈ° λλ¬Έμ΄λ€. λμ§νΈ λ°μ΄ν°λ 볡μ κ° μ½κΈ° λλ¬Έμ λꡬλ ν¨λΆλ‘ λ€λ£°μ μλλ‘ μ λ’°ν μ μλ μΈμ¦κΈ°κ΄(eg. μν)μ κ±°μ³ κ±°λλ₯Ό κ²μ¦νκ² λλ€. κ·Έλ°λ° μΈμ¦κΈ°κ΄μ κ±°μΉλ©΄μ μκ°μ΄ μ€λ μμλκ³ , μμλ£κ° λ°μνλ€λ λ¨μ μ΄ λ°μνλ€. μ΄ μ μ μ°©μν΄ νμν κΈ°μ μ΄ λ°λ‘ μ€λ§νΈ 컨νΈλνΈμ΄λ€.
μ€λ§νΈ 컨νΈλνΈλ κ±°λ λΉμ¬μκ° κ³μ½μ μμ±νκ³ , μ΄ μ‘°κ±΄μ΄ μΆ©μ‘±λλ©΄ μλμΌλ‘ κ³μ½μ μ΄νμμΌμ£Όλ κΈ°μ μ΄λ€.
κ·Έλ°λ° μ€λ§νΈ 컨νΈλνΈλ κ²°κ΅ λμ§νΈ λ°μ΄ν°λ₯Ό λ€λ£¨λ κ²μΈλ° λ°μ΄ν° λ³μ‘°λ₯Ό μ΄λ»κ² ν΄κ²°ν κ²μΈκ°?
μ€λ§νΈ 컨νΈλνΈλ μ΄ λ¬Έμ λ₯Ό λΈλ‘ 체μΈμ νΉμ§μΈ Peer to Peer κΈ°λ° λΆμ° λ°μ΄ν° λ² μ΄μ€λ₯Ό ν΅ν΄ ν΄κ²°νλ€. λΈλ‘체μΈμμλ λ€νΈμν¬μ λ Έλλ€μ΄ λμΌν λ°μ΄ν°λ₯Ό 곡μ νκ³ , μνΈν κΈ°μ μ ν΅ν΄ 무결μ±μ κ²μ¦ν μ μλ€. μΆκ°μ μΌλ‘ μ€λ§νΈ 컨νΈλνΈλ₯Ό λ€νΈμν¬μ 곡μ νκ² λλ©΄, μ€λ§νΈ 컨νΈλνΈ μ½λμ λ³κ²½ μ¬λΆλ₯Ό κ²μ¦ν μ μλ€.
μμλ₯Ό ν΅ν΄ μ‘°κΈ λ μμΈνκ² μμ보λλ‘ νμ.
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract KukuCoin is ERC20, Ownable {
// μ΄ κ³΅κΈλ = 1μ΅ κ°
uint256 public constant TOTAL_SUPPLY = 100_000_000 * 10 ** 18;
// λΆλ°° λΉμ¨
uint256 public constant TEAM_SUPPLY = TOTAL_SUPPLY * 30 / 100;
uint256 public constant COMMUNITY_SUPPLY = TOTAL_SUPPLY * 25 / 100;
uint256 public constant LIQUIDITY_SUPPLY = TOTAL_SUPPLY * 30 / 100;
uint256 public constant RESERVE_SUPPLY = TOTAL_SUPPLY * 15 / 100;
// airdrop κ°λ₯ν μ΅μ 보μ λ
uint256 public constant MINIMUM_BALANCE = 50 * 10 ** 18;
// 보μ μ λͺ©λ‘
address[] public holders;
constructor() ERC20("KukuCoin", "KUKU") Ownable(msg.sender) {
_mint(msg.sender, TEAM_SUPPLY);
}
function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
// μμ΄λλ κΈ°λ₯ μΆκ°
function airdrop(uint256 amount) external onlyOwner {
require(amount > 0, "Amount must be greater than 0");
for (uint256 i = 0; i < holders.length; i++) {
address holder = holders[i];
// 보μ μκ° κ³ μ λ μ΅μ μμ‘μ μΆ©μ‘±νλμ§ νμΈ
if (balanceOf(holder) >= MINIMUM_BALANCE) {
_mint(holder, amount); // 쑰건μ μΆ©μ‘±νλ κ²½μ°, μμ΄λλ
}
}
}
}
```
μ μ½λλ μ΄λ²μ νλ‘μ νΈλ‘ μ§ννλ©° μμ±ν μ€λ§νΈ 컨νΈλνΈ μ½λμ μΌλΆμ΄λ€.
μ£Όμμ μ¨μλ―μ΄, μ½μΈ μ΄ λ°νλ, λΆλ°°λΉμ¨, μμ΄λλ λ±μ κΈ°λ₯μ΄ ν¬ν¨λμ΄ μλ€. μ΄ κΈ°λ₯λ€μ΄ μ€μ λ‘ λΈλ‘μ²΄μΈ λ€νΈμν¬ μμμ μλνκΈ° μν΄μλ μ€λ§νΈ 컨νΈλνΈλ₯Ό λ°°ν¬ν΄μΌνλλ° μ΄λ μ¬μ© λλ κ²μ΄ λ°λ‘ λ©μΈλ·, ν μ€νΈλ· μ΄λ€.
Mainnet, Testnet
λ©μΈλ·μ΄λ, λΈλ‘체μΈμμ μ€μ λ‘ μ΄μλλ λ€νΈμν¬λ₯Ό λ§νλ€. μ€μ λ‘ μ΄μλλ λ€νΈμν¬λ μνΈνν, NFT λ±μ μ€μ μμ°μ μ μ‘νκ±°λ νμ©νλ νκ²½μ μκΈ°νλ€. λͺ¨λ νΈλμμ μ΄ μꡬμ μΌλ‘ κΈ°λ‘λλ©°, λ€νΈμν¬μμ μ ν¨μ±μ κ²μ¦νλ€.
Transaction : λΈλ‘μ²΄μΈ λ€νΈμν¬μμ λ°μ΄ν°, μμ°μ μ΄λμ λνλ΄λ μμ λ¨μ. μνμλ§λ€ μΌμ λΉμ©μ΄ μ§λΆλλ©° μ΄κ²μ κ°μ€λΉ λΌκ³ νλ€.
μ¦, μ€λ§νΈ 컨νΈλνΈλ₯Ό μ΅μ’ μ μΌλ‘ λ©μΈλ·μ λ°°ν¬ν΄μΌ μ€μ λ‘ μ¬μ©μλ€μ΄ νΈλμμ μ μ€μν μ μλ€.
κ·Έλ°λ° κ°λ°λ¨κ³μμ μννλ ν μ€νΈλ₯Ό λ©μΈλ·μμ μ§ννλ€λ©΄, κ°λ°μλ μ€μ μμ°μ μ¬μ©ν΄μ ν μ€νΈλ₯Ό ν΄μΌνλ©°, κ° νΈλμμ λ§λ€ κ°μ€λΉλ₯Ό μ§λΆν΄μΌνλ μνκΉμ΄ μν©μ΄ λ°μνλ€.
λ°λΌμ, κ°λ°νκ²½μμ μ¬μ©λλ λ€νΈμν¬κ° λ°λ‘ νμνλ° μ΄κ²μ΄ λ°λ‘ ν μ€νΈλ·μ΄λ€.
ν μ€νΈλ·μ΄λΌκ³ λ©μΈλ·κ³Ό κ΅¬μ‘°κ° λ€λ₯Έκ²μ μλλ€. λ€λ§, μ€μ κ°μΉκ° μλ ν μ€νΈ μμ°μ μ¬μ©νκ³ , ν μ€νΈ μμ°μΌλ‘ κ°μ€λΉλ₯Ό μ§λΆνκΈ° λλ¬Έμ μ€μ λΉμ© λΆλ΄μ΄ μλ€λκ²μ΄ νΉμ§μ΄λ€. λν λ©μΈλ·μ μν₯μ λ―ΈμΉμ§ μκ³ ν μ€νΈλ₯Ό μ§νν μ μλ λ 립μ μΈ κ°λ°νκ²½μ ꡬμ±ν μ μλ€.

Last updated