無知

갈 길이 먼 공부 일기

SafeMath 2

스마트 컨트랙트 (7) | 보안성을 갖춘 컨트랙트 작성법

1. 이더리움 내 모든 데이터는 공개되어 있음을 명심하자 - private variable로 선언되었더라도, getStorageAt 함수를 통해 해당 컨트랙트의 변수를 읽어낼 수 있다. - 구체적으로는 상기 함수를 통해 컨트랙트 내 변수가 인코딩된 값을 받게 되는데, 데이터타입에 따라 복잡도는 다를 수 있어도 충분히 해석할 수 있다. 2. 이더리움 송금은 transfer method를 사용하자 * 송금 방법 1 : address.send(value) - 송금 실패 시 false만 반환하고 exception을 발생시키지 않음. * 송금 방법 2 : address.transfer(value) - 송금 실패 시 exception을 발생시키고 중단됨 - 2300 가스만 보내서 실행되므로 컨트랙트의 무한 호출을 ..

스마트 컨트랙트 (5-7) | Solidity(솔리디티) 라이브러리, Libraries

1. Libraries - 솔리디티에서 라이브러리는 한번 설치되어 여러 다른 contract들에 의해서 사용. - 따라서, 동일한 코드가 반복해서 이더리움 네트워크에 설치되는 것을 방지. - 라이브러리 함수는 contract 메소드 호출과 유사하다 - 라이브러리는 자신의 storage를 갖지 못한다 - 라이브러리는 이더를 소유할 수 없다 - 라이브러리는 state variable을 가질 수 없다 - 라이브러리는 상속 관계에 있을 수 없다 - 라이브러리는 fallback 함수를 가질 수 없다 - 라이브러리는 payable 함수를 가질 수 없다 pragma solidity >=0.4.0 =0.6.0 bool) flags; } library Set { // Note that the first parameter..