본문 바로가기

분류 전체보기84

[Solidity] Unchecked || Optimization of gas cost | Solidity 0.8 || 이번 게시글에서는 Solidity의 표현식 문법 중 하나인 unchecked에 대해 알아보겠습니다. Solidity의 0.7 버젼 이하는 Overflow와 Underflow 애러를 검사해주지 않았습니다. Overflow : 컴퓨터의 정수 연산의 계산 결과가 허용 범위를 초과할 때 발생하는 오류. Underflow : Overflow의 반대되는 개념으로서 컴퓨터의 정수 연산의 결과가 취급할 수 있는 수의 범위보다 작을 때 발생하는 오류 > 위 함수 코드 보기 더보기 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Unchecked { function getMaxUint() public pure returns(uint) { return ty.. 2022. 11. 27.
[Solidity] Event || emit | indexed | ethers | Solidity 0.8 || EVM의 Solidity는 데이터를 저장할 때, 두 가지 방법이 있습니다. Data Storage Layout : uint256, array, mapping 등 전역 변수를 만들어 Storage에 저장하는 방법 Event : Event emit을 활용하여 트랜잭션 로그(Logs)에 담아 블록에 저장하는 방법 이번 게시글에서 예제 코드를 통해 Solidity Event 사용방법과 이더스캔 그리고 JacaScript를 통해 트랜잭션 로그(Logs)를 조회하는 방법에 대해 알아보겠습니다. 📜 Solidity Event 란? Event는 Solidity의 문법 중 하나입니다. Event를 이용하여 블록에 데이터를 저장할 수 있고, EVM Logging 기능을 사용하여 저장된 트랜잭션에 저장된 데이터를 호출할 수.. 2022. 11. 21.
이더리움 지갑 주소(EOA) 생성 과정 || Ethereum | EOA | ethersJS || code example by JS ※ 예시를 위해 사용된 주소(address)와 Private Key는 테스트 용도입니다. 이더리움 주소(Address) 란? ex: 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4 이더리움의 네트워크 EVM에는 address type의 데이터가 있습니다. 0x + 40글자(char)의 형태로 20 bytes의 용량을 갖고 있습니다. - 0x는 단순히 16진수 데이터를 표기하는 의미를 갖고 있으며, 데이터의 용량에 포함되지 않습니다. - 1 char = 4 bit , 8 bit = 1 bytes이며, address의 40글자(char)는 40 * 4 / 8 = 20 bytes가 됩니다. 위 데이터의 형태에서 벗어나게 되면 EVM은 이를 address type 데이터로 인식하지 .. 2022. 11. 13.
[Hack Series] 블록체인 컨펌 이란? || Blockchain Security || 블록체인은 사용자들의 거래내역과 지갑 상태를 저장하는 거대한 데이터 장부입니다. 만약 A가 B에게 10ETH를 보냈다고 트랜잭션을 작성하게 되면 "A라는 사람이 B라는 사람에게 10 ETH를 보냈다"라는 거래내역과 "A 잔액 : 0 ETH , B 잔액 10 ETH"라는 지갑 상태를 블록에 저장하게 됩니다. 이때 블록이 체인에 연결되면, 저장된 데이터는 누구도 수정 할 수 없고, 다음 블록에도 저장되기 때문에, 데이터가 조작되고나 위조될 수 없습니다. 이 부분이 블록체인을 이용하는 가장 큰 이유이자, 가장 큰 장점입니다. 하지만 블록이 체인에 연결되더라도, 트랜잭션이 완전히 처리가 된 것은 아닙니다. 블록이 체인에 올라가더라도, 만약 체인이 두 갈래로 갈라진 상태로 블록이 추가가 되었다면, 체인 재구성이 .. 2022. 10. 29.
Ganache 가나슈 설치 및 연동 방법 || Canache-Cli | Metamask | Remix || 가나슈(Ganache)는 컴퓨터의 Localhost에 이더리움 네트워크(EVM)를 생성하여 테스트를 진행할 수 있도록 해주는 Web3 테스트 툴입니다. 가나슈 등을 이용해 만든 가상 환경을 TestRPC라 합니다. 가나슈 설치 가나슈는 두가지 버전이 있습니다. GUI에서 사용할 수 있는 애플리케이션을 설치하여 가상의 EVM을 설정할 수 있습니다. CLI에서 터미널로하여 가상의 EVM을 생성하여 EVM을 설정할 수 있습니다. > GUI와 CLI 란? https://borntodevelop.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-IO%EC%99%80-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-CLIGUI?cat.. 2022. 10. 29.
IPFS Node.js 이미지 올리기 || IPFS | ipfs-api | Node.js || back-end .ver IPFS 란? IPFS는 연결된 모든 컴퓨터에 데이터를 분산시키는 데이터 분산 시스템입니다. 기존의 중앙화된 서버와 달리, 연결이 차단되거나 서버가 회손되어도, P2P 통신으로 다른 컴퓨터에 있는 데이터를 받아 갱신을 수 있기에, 훨신 빠르고 안전한 네트워크입니다. ※ 본 게시글은 서버(NodeJS)에서 IPFS P2P에 사진 및 데이터를 베포하여 ipfs URL을 얻는 방법에 대해 다룹니다. 프론트(React)에서 IPFS를 다루는 게시글은 아래 링크를 참조해 주세요. // todo : React + IPFS 1. IPFS 설치 IPFS는 위 설명처럼 모든 컴퓨터들을 연결하는 프로세스입니다. IPFS가 지정하는 데이터 저장소를 각 PC에 받아 사진, 파일 등의 데이터를 저장소에 올리면 P2P 시스템에 .. 2022. 10. 25.
Git(깃) 브랜치(Branch) 사용방법 및 명령어 || Git | Branch || Git Branch 란? 📑 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 개발을 하다 보면, 한 페이지 안에 여러 기능을 따로 구현하거나, 이전 코드와 비교를 위해 여러 코드를 복사해야 하는 일이 자주 있습니다. Git의 브랜치를 활용하면, 코드를 통째로 복사한 후, 원래 코드에 영향을 주지않고 독립적으로 개발할 수 있습니다. 주로 여러명이 동시에 작업할 때, 다른 사람에게 영향을 주거나 받지 않기 위해, 팀 프로젝트에서 많이 활용되고 있습니다. 개발자들은 각자 맡은 역할의 기능을 구현하면서 "작업단위"로 업무가 진행됩니다. 이때 서로에게 영향을 주지 않고 내용을 모두 기록하기 위해 만들어진 대책입니다. Git Branch 작업 순서 📑 (1) 프로젝트 Github에서 갖고오기 > git clone.. 2022. 10. 18.
메타마스크 리액트 토큰(ERC20) 추가 구현 || React | Metamask | ehters.js | EIP-747 || EIP-747에서 Dan Finlay와 Esteban Mino의 토론으로 만들어진 EIP로, 사용자가 방문 중인 사이트에서 제안된 새 자산(ERC20)을 쉽게 추적할 수 있도록 지원하는 인터페이스(RPC)를 제안했습니다. EIP - 747 이란? https://borntodevelop.tistory.com/entry/EIP-747-%EC%9D%B4%EB%9E%80-Ethereum-Improvement-Proposal-Metamask EIP-747 이란? || Ethereum Improvement Proposal | Ethereum | Metamask || EIP-747이란? EIP-747이란 이더리움 개선 제안(Ethereum Improvement Proposal) 747 페이지에 정의된 내용으로, 이더.. 2022. 10. 7.
[Solidity] 가스비(gas fee) 줄이는 코딩 방법 || Solidity 0.8 || KR Solidity 개발자가 스마트컨트렉트를 개발할 때, 어떤 설계와 코딩 방법을 사용하냐에 따라 가스비가 달라집니다. 회사에서는 개발비용을 줄여주는 개발자를 찾고, 사용자는 자신의 가스비 소비를 줄여주는 Dapp을 선호합니다. 스마트컨트렉트 개발자가 어떻게 코딩했냐에 따라, 즉 개발자의 역량에 따라 모두가 만족할 수 있는 Dapp이 개발될 수 있습니다. 그 역량중 하나가 바로 가스비 줄이는 스마트컨트렉트 코딩 방법이라고 생각합니다. 지금부터 사용자가 트랜잭션 시, 가스비를 효율적으러 발생할 수 있도록 하는 코딩에 대해 배워보겠습니다. Example Code 📑 // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; contract DownsizeGasFee {.. 2022. 10. 6.
반응형