μ΄λ리μ μμμμ ν ν°μ .. κ·Έμ νλμ 컨νΈλνΈ
λͺλͺ ν¨μλ₯Ό κ°μ§κ³ μ¬μ©μλ€μ΄ κ·Έλ€μ ν ν°μ λ€λ₯Έ μ£Όμλ‘ μ μ‘ν μ μκ² ν¨
ERC721 ν ν°! μ°λ¦¬λ€μ μ’λΉ κ±°λν μ μλλ‘ ν¨
ν ν° μ»¨νΈλνΈλ₯Ό ꡬνν λ μ²μ ν΄μΌ ν μΌ :
1. μΈν°νμ΄μ€λ₯Ό μ리λν° νμΌλ‘ λ°λ‘ 볡μ¬νμ¬ μ μ₯
2. import "./erc721.sol"; μ¨μ μν¬νΈ
3. ν΄λΉ 컨νΈλνΈλ₯Ό μμνλ μ°λ¦¬μ 컨νΈλνΈλ₯Ό λ§λ€κ³ , κ°κ°μ ν¨μλ₯Ό μ€λ²λΌμ΄λ©νμ¬ μ μ
λ€μ€ μμνλ λ°©λ² (κ·Έλ₯ ,λ‘ κ΅¬λΆ)
contract SatoshiNakamoto is NickSzabo, HalFinney {
// μ€ μ΄λ°, μ΄ μΈκ³μ λΉλ°μ΄ λ°νμ‘κ΅°!
}
balanceOf : λ¨μν addressλ₯Ό λ°μ, ν΄λΉ addressκ° ν ν°μ μΌλ§λ κ°μ§κ³ μλμ§ λ°ν. μ¬μ©μκ° μ’λΉλ₯Ό μΌλ§λ κ°μ§κ³ μλμ§!
ownerOf : ν ν° ID(μ’λΉ ID)λ₯Ό λ°μ, μ΄λ₯Ό μμ νκ³ μλ μ¬λμ addressλ₯Ό λ°ν.
μμ μμ±ν ownerOf ν¨μμ modifier κ° μ΄λ¦μ΄ κ°μμ μΆ©λλλ€!
modifier μ΄λ¦μ ownerOfμμ onlyOwnerOfλ‘ λ°κΏμ£Όμλ€.
function transfer(address _to, uint256 _tokenId) public;
function approve(address _to, uint256 _tokenId) public;
function takeOwnership(uint256 _tokenId) public;
ERC721 μ€νμμλ ν ν°μ μ μ‘ν λ 2κ°μ λ°©μμ΄ μλ€.
transferμ takeOwnership λͺ¨λ λμΌν μ μ‘ λ‘μ§μ κ°μ§κ³ μλ€.
μμλ§ λ°λ!
(μ μλ ν ν°μ 보λ΄λ μ¬λμ΄ ν¨μλ₯Ό νΈμΆ;
νμλ ν ν°μ λ°λ μ¬λμ΄ νΈμΆ;)
uint8 number = 255;
number++;
μ€λ²νλ‘μ°! numberλ 0μ΄ λλ€
μΈλνλ‘μ° : 0κ° κ°μ§ uint8μμ 1 λΉΌλ©΄ 255
μ΄ λ¬Έμ λ§μμ£Όλ SafeMath λΌμ΄λΈλ¬λ¦¬
SafeMath λΌμ΄λΈλ¬λ¦¬λ₯Ό μΈ λλ using SafeMath for uint256μ΄λΌλ ꡬ문μ μ¬μ©ν κ²
add λνκΈ°
sub λΉΌκΈ°
mul κ³±νκΈ°
div λλκΈ°
λΌμ΄λΈλ¬λ¦¬ vs 컨νΈλνΈ?
λΌμ΄λΈλ¬λ¦¬: μ°λ¦¬κ° usingν€μλ μ¬μ©ν μ μλλ‘ ν΄μ€
μ΄λ‘ μΈν΄ λΌμ΄λΈλ¬λ¦¬μ λ©μλλ€μ λ€λ₯Έ λ°μ΄ν° νμ
μ μ μ© κ°λ₯
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
assert μ¨μ κ·Έ κ°μ΄ aλ³΄λ€ ν¬λλ‘ λ³΄μ₯. μ΄κ²μ΄ μ€λ²νλ‘μ° λ§μμ€.
assert : 쑰건 λ§μ§ μμΌλ©΄ μλ¬ λ°μμν¨λ€λ μ μμ requireμ΄λ λΉμ·
λ€λ₯Έμ ?
requireμ ν¨μ μ€ν μ€ν¨νλ©΄ λ¨μ κ°μ€λ₯Ό μ¬μ©μμκ² λλλ €μ€, κ·Όλ° assertλ μλ
using SafeMath32 for uint32;
using SafeMath64 for uint64;
ν λ§μΆκΈ°!!!!
// ν μ€ μ£Όμ μΆκ°!
/* */ μ¬λ¬ μ€ μ£Όμ μΆκ°!
컨νΈλνΈμ λͺ¨λ ν¨μμμ μμλλ νλκ°μ μ½λμ μ£ΌμμΌλ‘ μ€λͺ νλ κ²μ΄ μ’λ€
/// @title κΈ°λ³Έμ μΈ μ°μλ₯Ό μν 컨νΈλνΈ
/// @author H4XF13LD MORRIS π―π―ππ―π―
/// @notice μ§κΈμ κ³±νκΈ° ν¨μλ§ μΆκ°νλ€.
contract Math {
/// @notice 2κ°μ μ«μλ₯Ό κ³±νλ€.
/// @param x 첫 λ²μ§Έ uint.
/// @param y λ λ²μ§Έ uint.
/// @return z (x * y) κ³±μ κ°
/// @dev μ΄ ν¨μλ νμ¬ μ€λ²νλ‘μ°λ₯Ό νμΈνμ§ μλλ€.
function multiply(uint x, uint y) returns (uint z) {
// μ΄κ²μ μΌλ°μ μΈ μ£ΌμμΌλ‘, natspecμ ν¬ν¨λμ§ μλλ€.
z = x * y;
}
}
@noticeλ μ¬μ©μμκ² μ»¨νΈλνΈ/ν¨μκ° λ¬΄μμ νλμ§ μ€λͺ
.
@devλ κ°λ°μμκ² μΆκ°μ μΈ μμΈ μ 보λ₯Ό μ€λͺ
νκΈ° μν΄ μ¬μ©.
@paramκ³Ό @returnμ ν¨μμμ μ΄λ€ λ§€κ° λ³μμ λ°νκ°μ κ°μ§λμ§ μ€λͺ
.
λͺ¨λ νκ·Έκ° νμλ μλμ§λ§ @devλ μ¨μ£Όλ κ² μ’λ€~