본문 바로가기

전체 글89

[Solidity ERROR] Member "push" is not available in uint256[] memory outside of storage * 본 게시글은, 개발 과정에서 발생한 애러를 개인적으로 정리한 내용입니다. Member "push" is not available in uint[] memory outside of storage 함수 내부에 생성된 배열(Array) 변수는 EVM의 memory에 저장됩니다. memory에 정의된 배열 변수는 new 연산자를 사용하여 만들 수 있습니다. 그리고 memory는 데이터의 특성 상, 배열의 길이가 정의 되어야합니다. 즉 동적 배열이 아닌, 정적 배열만 정의 가능합니다. uint[5] memory results; // Not Good uint[] memory results = new uint[](5); // Nice https://borntodevelop.tistory.com/entry/Soli.. 2022. 12. 17.
[Solidity] Array Memory에서 사용하는 방법 || Solidity 0.8 || 안녕하세요. 스마트 컨트렉트 개발자 개발이 체질의 최원혁입니다. Solidity는 변수를 정할 때, 데이터가 저장되는 위치를 정의해야 합니다. EVM은 상태(States) 변수와 지역(Local) 변수 두 종류로 나뉩니다. 상태(States) 변수는 EVM의 Storage에 데이터가 저장되며, 스마트컨트렉트의 Data Storage에 보존됩니다. 지역(Local) 변수는 Memory에 저장되는 데이터로 EVM의 런타임이 실행되는 동안 저장되며, 실행이 끝나면 살아지는 휘발성 데이터입니다. EVM에서 함수 외부의 공간에 변수를 정의하면, 자동으로 데이터는 Storage에 저장됩니다. 하지만 함수(function) 내부에서 정의한 변수는 Memory에 저장되어, 함수가 실행되는 동안만 데이터를 보관하고, 실.. 2022. 12. 17.
[DeFi Series] Uniswap 기본 개념 파헤치기 || DEX | AMM | CPMM | Liquidity | Slippage | LP Token || 안녕하세요. 스마트컨트렉트 개발자 개발이 체질의 최원혁입니다. DeFi Series로 소개해드릴 내용은 Uniswap 기본 개념입니다. Uniswap은 암호화폐 시장의 대표적인 탈중앙화 거래소이며, Uniswap이 만들어낸 여러 가지 개념은 DeFi를 대표하는 개념으로 통용될 정도로 중요합니다. 이번 게시글에선 Uniswap을 통해 DEX,AMM,CPMM,Liquidity,Slippage에 대한 개념을 배워 보겠습니다. What is Dex Uniswap ? 유니스왑은 이더리움 네트워크를 대표하는 DEX입니다. DEX란 탈중앙화 거래소(Decentralized Exchange)의 준말로 암호화폐를 거래할 수 있는 DeFi 플랫폼입니다. 암호화폐 거래소하면 대표적으로 업비트,빗썸, 바이낸스 등에서 거래를 .. 2022. 12. 15.
[DeFi Series] BuildBear Fixed Rate Staking Contract 파헤치기 || Staking | Solidity 0.8 || 안녕하세요. 스마트 컨트렉트 개발자 개발이 체질의 최원혁입니다. DeFi Series로 소개해드릴 내용은 BuildBear에서 제공하는 Staking Contract에 대해 알아보겠습니다. About BuildBear BuildBear는 개발자가 자신의 테스트 노드를 생성하고 테스트 네트워크를 구축할 수 있는 플랫폼입니다. 이 플랫폼은 팀 전체와 함께 테스트를 쉽게 수행하고, 복잡한 블록체인 트랜잭션을 수행할 때 내부에서 어떤 일이 발생하는지 이해할 수 있게 도와주는 Smart Contract Develop Tool을 제공합니다. 특히 NFT, ICO, Staking, Factory, DEX 등 다양한 Web3 콘텐츠를 탬플릿으로 제공하여 가상 시나리오를 통해 테스트를 지원합니다. BuildBear is.. 2022. 12. 13.
[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.
반응형