Solidity
-
구조체(struct)와 가스(gas) 관계Solidity 2022. 5. 11. 22:17
HTML 삽입 미리보기할 수 없는 소스 크립토 좀비를 하면서 구조체와 가스 관계에 대해 새롭게 알게 된 점이 있어 이에 대해 공유하고자 글을 씁니다. Solidity를 하다 보면 가스를 지나칠 수 없을 겁니다. 왜냐하면 우리와 사용자들의 돈과 바로 직결되는 문제이기 때문입니다. 우선 스마트 컨트랙트에 가스가 왜 필요한 것인지와 어떻게 하면 그 비용을 줄일 수 있을지에 대해 얘기해보고자 합니다. 제가 이해하고 있는 것은 아래와 같습니다. 블록체인을 분산형 컴퓨팅 이라고도 하는데 함수가 실행되면 각각의 노드가 함수의 출력 값을 검증하기 위해 해당 함수를 실행해야 하고 이를 통해 검증이 되면 모든 노드의 블록체인에 해당 데이터가 반영되는 것입니다. 그렇기 때문에 로직이 복잡할수록 많은 컴퓨팅 리소스를 필요로 ..
-
접근 제한자와 생성자Solidity 2022. 5. 11. 00:32
HTML 삽입 미리보기할 수 없는 소스 조금씩 코드들이 어떤 의도로 쓰였고 어떤 방식으로 동작하는지 보이기 시작하는 것 같아서 많이 사용된다는 OpenZeppelin의 Ownable contract 코드를 들여다보고자 합니다. 이해하고 있는 부분에 대해 설명 쓰고 이해가 되지 않는 부분은 따로 적어뒀다가 해결되면 이에 대한 답도 남기겠습니다. // 컴파일러 버전 명시 pragma solidity >=0.5.0 저와 비슷한 궁금증을 가지고 있는 사람이 있었기에 참고 링크 공유드립니다. https://ethereum.stackexchange.com/questions/30223/should-the-constructor-function-be-public Should the constructor function ..
-
Struct (구조체) - Mapping & ArraySolidity 2022. 4. 24. 14:55
HTML 삽입 미리보기할 수 없는 소스 인프런에서 D_One 님의 20강 강의를 듣고 이에 대해 작성하는 것임을 말씀드립니다. Struct (구조체) 나만의 타입 만드는 것 DB의 스키마와 같다고 생각한다. // SPDX-License-Identifier: GPL-3.0 pragma solidity >= 0.7.0 < 0.9.0; contract structUser{ // 아래가 User라는 구조체 정의한 것 struct User{ string name; string job; uint256 age; } // 바로 값을 넣고 그것을 그대로 리턴 (이렇게 하면 여러개의 데이터는 못 넣는거 아닌가...?) function createStructUser(string memory _name, string memo..
-
Solidity의 Array (배열) 사용법과 주의사항Solidity 2022. 4. 23. 13:40
HTML 삽입 미리보기할 수 없는 소스 코딩을 처음 막 배우기 시작했을 때 개인적으로 배열이 다루기 쉬워서 뭘 해도 배열인 리스트만 썼던 기억이 납니다. Solidity에서 값을 찾는 부분에서는 Mapping(Python의 딕셔너리) 보다는 효율이 떨어지지만 반복문을 쓸 수 있다는 장점 또한 있어서 필수적인 존재이기도 하고 직접 테스트하다 보니 생각과 달랐더 부분이 있어서 이 점 공유하고 싶어서 글을 씁니다. (일반적으로 Key와 Value로 이뤄져있는 딕셔너리가 값을 빨리 찾기 위해 나왔기에 Solidity에서만 그런 것이 아니라는 점을 말씀드립니다.) 이 글은 D_One 님 강의 중 18강 Array 배열 강의를 통해 배우고 학습했던 것을 쓰고 있다는 점을 다시 한번 말씀드립니다. 배열 저장하고 싶은..