Block Chain41 [Hack Series] Front Running & Sandwich Attack || Block-Chain || KR Web3 Hack Series : Front Running And Sandwich Attack 안녕하세요. 스마트 컨트렉트 개발자 개발이 체질의 최원혁입니다. 이번 Web3 Hack 시리즈는 Front Running And Sandwich Attack에 대해 알아보겠습니다. 위 두가지 취약점은 트랜잭션이 블록체인에 추가되는 과정에서 나타나는 특징을 이용하여 공격자들이 이득을 취하는 공격 방법입니다. 주로 De-fi 프로토콜 및 플랫폼을 이용하는 사람들을 대상으로 공격되며 트랜잭션의 가스비 우선 선행과 채굴 시스템을 이용한 방식으로 진행됩니다. Tansaction이 블록체인에 추가되는 과정 Front Running와 Sandwich Attack는 트랜잭션이 블록체인에 추가되는 과정에서 나타나는 특징을 이용.. 2022. 12. 12. [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. 메타마스크 리액트 토큰(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. 이전 1 2 3 4 5 다음 반응형