일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 정보처리기사실기
- Klaytn
- 페이지클론
- 솔리디티
- 비트코인
- web3.js
- 블록체인
- Non-Blocking
- 2021정보처리기사실기
- it5
- npm
- solidity
- blockchain
- 노마드코더
- 카카오페이지클론
- 클레이튼
- 이더리움
- ETH
- 카카오홈페이지클론
- github
- 노개북
- git
- ERC721
- node.js
- React
- 콜백함수this
- 정보처리기사
- 정보처리기사실기요약
- it5분잡학사전
- ERC-721
- Today
- Total
목록solidity (13)
Be lazy, Be crazy
오늘은 Solidity에서 사용되는 struct 구조체에대해서 간단하게 정리해 보려고합니다. 구조체라고 하면 사실 못알아 먹는 사람들이 더 많을 것 같다고 생각이됩니다. 예를 들어서 설명하는 습관은 나쁘다고 생각하지만 저 같은 초보자들에게는 처음에는 예시가 있어야 추상적인 개념들이 좀더 이해가 쉽기 때문에 예를 들어서 설명해보도록 하겠습니다. 우선적으로 타입스크립트를 공부해 보신분들이라면 Type을 만들어주는 작업이라고 생각하면 될것같습니다. --- typeScript --- type Person = { name:string, age : number } 이런식으로 작성하게 되면 Person이라는 타입으로 명시하게되면 위와같은 것만 사용해야 합니다. Person이라는 타입을 만들게되면 나중에 100명의 사..
저번시간에는 반복문과 반복문에서 값을 제거하는 방식을 공부했습니다. 전 post를 참고하시면 됩니다. 이번 post에서는 간단하게 자주사용하는 mapping과 이 mapping을 읽어오는 방식에 대해서 공부를 해보았습니다. // Mapping // How to declare a mapping (simple and nested); // Set, get, delete contract Mapping { mapping(address => uint) public balances; mapping (address => mapping(address => bool)) public isFriend; function examples() external { balances[msg.sender] = 123; uint bal =..
💡 오늘은 저번 post에 이어서 배열을 삭제하는 방법에 대해서 공부한 내용을 정리해 보려고합니다. 잠깐 저번시간에 작성한 solidity 코드를 자세히 보면 delete라는 부분이 있었습니다. [1,2,3] 이렇게 작성되어있는 코드에 delete[0]을 하게 되면 [0,2,3] 이런식으로 변경됩니다. 즉 배열을 삭제하고 길이을 줄이는 것이 아니라 해당되는 index의 값을 default값(solidity에서 uint의 default값은 0입니다.)으로 변경해줍니다. 이번 post에서는 [1,2,3] => [2,3] 이렇게 공간자체를 삭제하는 방법에 대해서 기록해보겠습니다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract ArrayShi..

솔리디티에서 Array는 어떤형식으로 작성되는지 간단하게 알아보는 글이다. ### 내가생각하기에 중요한 점은 어떻게 memory 배열에 크기를 설정하고 값을 담는지가 중요한것 같다. ### 기본적으로 동적으로 배열크기를 만들 수 있고 VS 고정적으로 배열의 크기를 지정할 수있다. ### 다른 언어와 마찬가지로 배열 크기를 설정하고 값을 집어넣는 방식은 어렵지 않다. ### 배열변수이름.push(인자) 다른 언어에서 보는것과 마찬가지로 비슷한 형태 배열변수이름.pop() 맨 마지막 인자가 사라진다. ### 다른 언어와 다르게 delete 라는 함수를 사용할 수 있고 할당되어 있는 값을 0으로 초기화 시킨다. ### 보통배열은 storage에 저장이 되는데 함수안에서 memory형태로 배열을 선언할 수 있다..

💡 솔리디티에서 return은 어떤 형식으로 될까?? FunctionOutputs 말그대로 솔리디티 문법에서 return을 사용할 때 어떻게 return이 되고 어떤 형식으로 되는지 알아봅시다. // 대략적으로 3가지 형식이 있다. // 보통 언어와 비슷하게 function returnOne () public pure returns(uint){return 1;} 이런형식으로 1개를 리턴 // 조금 신기하게 여러개를 return 할 수도 있다. function returnMany() public returns(uint, bool){ return (1, true);} 이와같은형식으로 2개를 리턴 주의할점은 ## returns (타입,타입) 을입력해줌으로써 이함수는 어떤 타입을 return 할 것인지에 대해서..
Constructor개념은 많은 언어들에서 보았던 개념이다. java에서는 객체가 생성될때 제일 먼저하는 일이며 보통 값을 초기화 시켜줄 때 많이 하는 작업으로 알고있다. solidity에서도 마찬가지로 컨트랙트가 만들어질 때 제일 먼저 실행된다고 생각하면 될 것같다. 제일먼저 실행된다 == 초기화시킨다 == 첫 변수에 내가원하는 값으로 셋팅한다. 이정도로 생각하면 코드를 보고 실행할 때 수월 할 것같다. 그렇다면 Ownable란 무엇일까요?? 전글에서 배웠던 modifier개념과 owner변수를 조합해서 onlyOwner라는 modifier 생성하는 것이다. 이렇게 되면 owner = msg.sender 이 의미는 owner는 이 컨트랙트를 배포한 사람이 되는 것이다. 이 onlyOwner를 함수에 붙..
modifier함수를 사용하는 이유는 무엇일까? 일단 자주 사용하는 조건문에대한 반복을 막을 수 있다. A,B,C 함수에 x=10이면 함수사용을 거부한다라는 조건을 각각에 넣기 보다는 x=10이면 거부해주는 함수 하나를 만들어서 재사용하는 것이 훨씬 좋다고 생각이 든다. 밑에 코드를 참조하면 더 쉽게 이해가 가겠지만, 1. Basic은 modifier을 만들고 사용되어야하는 함수부분에 추가해주는것이다. 이때 인자값이 필요가없는 경우다. 2. input은 위 1번과 같은경우지만 modifier에 인자가들어가야 하는 부분이다. function incBy(uint _x) external whenNotPause cap(_x) modifier을 연달아 사용가능하며 필요하다면 인자값도 전달해줄 수 있다. 3. sa..
솔리디티에서 error을 작성할 수 있는 몇가지에 대해서 코드로 봐보자! 여기서 나도 처음 보았던 것은 error를 커스텀 할 수 있다는것이다. error MyError(address caller, uint value); 이런식으로 말이다. 자세한 내용은 밑에 코드를 보고 remix에서 실행시켜보면 이해가 될 것이다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; //require, revert, assert // gas refund, state updates are reverted // custom error - save gas contract Error { function testRequire(uint _i) public pure{ require(..
간단하게 솔리디티언어로 반복문을 작성해보았습니다. js나 파이썬 등에서는 100만번을 돌려도 상관없지만. 솔리디티는 가스비가 나가기 때문에 최대한 불피요한 반복을 줄여서 가스비 절감합시다~~ continue는 i 값이 3일때 코드실행안하고 i=4로 바로 넘어가게 됩니다. break는 i=5일때 반복문을 끝낸다는 말입니다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract ForAndWhileLoops { function loops() external pure { for(uint i=0; i< 10; i++){ if( i == 3){ continue; } if( i == 5 ){ break; } } uint j = 0; while (j < ..