[Solidity] 230628 study
1. Tokens on Ethereum
- token: a smart contract that follows some common rules
transferFrom,balanceOf와 같은 함수를 share하는 contracts- 주로
balances라는 형태의 mapping을 지니기 때문에, 소유권을 추적할 수 있다
2. ERC721 Standards, Multiple Inheritance
- ERC721 event:
event Transfer,event Approval -
ERC721 function:
balanceOf,ownerOf,transferFrom,approve - multiple inheritance
- contract는 2개 이상의 contract를 inherit 할 수 있다!
3. balanceOf & ownerOf
balanceOf: owner address 주고, owner가 가진 token의 잔고를 returnownerOf: tokenId 주고, 해당 token의 주인을 return
4. Refactoring
- modifier name change
5. ERC721: Transfer Logic
- Transfer에는 2가지 방법이 있다
transferFrom에 _from, _to, tokenId를 넣어 바로 transfer 하는 방법- owner가
approve에 _to에 해당하는 address와 tokenId를 넣어서 _to address가transferFrom을 실행할 권한을 줘서 transfer 하는 방법
- 우리가 만든 함수에서도 `emit Transfer(_from, _to, _tokenId)를 넣어서 ERC721을 확인해야 한다
6. ERC721: Transfer Cont’d
- mapping은 다음과 같은 순서로 선언한다
mapping (data_type => data_type) mapping_name- mapping_name이 뒤에 온다는 것을 명심하자!
7. ERC721: Approve
8. ERC721: Approve
9. Preventing Overflows
- contract를 쓸 때도 overflow, underflow를 조심해야 한다.
- OpenZepplin의
SafeMath를 사용해도 기본적인 overflow, underflow는 막을 수 있다.
10. SafeMath Part 2
11. SafeMath Part 3
12. SafeMath Part 4
++ 연산자를 .add(1)로 바꾸는 것을 무한반복 했다using SafeMath for uint256,using SafeMath32 for uint32등을 선언하고add,sub,mul,div을 활용하는 습관을 들이자!
13. Comments
@title: 함수, 변수에 대한 직관적인 설명@author: 작성자에 대한 최대한 간단하게 설명@notice: user를 위해 function, contract에 대해 설명@dev: 개발자를 위한 extra deatil@param: 매개변수에 대한 설명@returns: return 값에 대한 설명