탈중앙화와 보안이 장점인 이더리움에는 고질적인 문제가 있다. 느리고 비싸다는 것이다. 그래서 이 문제를 해결하기 위한 "scaling solutions" 가 여러가지 제시되었다. 주로 3가지 방식인데, L1 scaling, L2 scaling, side chain 이 있다. L1 스케일링 경우에는 샤딩을 이용한 스케일링을 고려중이고 L2 스케일링의 경우에는 Rollups 솔루션이라고 불리는데 가스비가 100배까지 싸질수 있다고 한다. 별개의 네트워크에서 트랜젝션을 이루어지고, 이 트랜젝션들을 배치로 묶어서 이더리움체인(L1) 에서 검증받게 하는것이 요지이다. 검증법은 크게 두가지로 나뉜다. (레이어2란: 이더리움을 연장하지만 이더리움과는 분리된 블록체인으로, 이더리움의 보안을 계승한다.) L2 스케일링의..
솔리디티 컨트랙트에서 다른 컨트랙트를 부르는방식은 여러가지가 있다. interface, call, delegate call 에 대해 살펴보자. (static call은 일단 제외) 1) 코드상(사용방법상) 차이 2) 소모되는 가스 unit 차이 3) Low / High level function 4) 최종 컨트랙트의 msg. sender, 데이터 저장위치 (packing, unpacking 때문에 한가지 contract 사용보단 무조건 비쌈) 이 세가지에 대해 정리, 테스트해본다. 1 코드상(사용방법상) 차이 (0) 불릴 코드 (Callee) // SPDX-License-Identifier: MIT pragma solidity ^0.8.16; contract Callee { uint public valu..
여러 기능을 넣는데 갑자기 이런 에러가 떴다. "CompilerError: Stack too deep. Try compiling with `--via-ir` (cli) or the equivalent `viaIR: true` ... Otherwise, try removing local variables." 다행히 다들 겪는 일이었다 고통은 나누면 반이된다,, 에러의 이유 EVM 스택에는 16 variable 밖에 못올라간다. 이 variable 은 input and output arguments 모두를 포함한다-> 너무나 황당 정확히는 16슬랏이긴한데, 보통 1슬랏 1 variable 쓰니까.... 이제 취향껏 고쳐보자 해결법 1. variable 갯수 줄이기 ㅋㅋ 2. internal function ..
가스비를 계산하는데 뭔가 계속 이상했다. https://realapril.tistory.com/112 Storing Structs is costing you gas Storing Structs is costing you gas 라는 글을 보고 가스를 측정해 보았다. 2018년 글 wow 여러 시나리오가 테스트되어있다. 가스비가 그냥 state 여러개 저장 >>>construct > construct 내 변수 최적화>>+알파 .. realapril.tistory.com 에 따르면 struct A{ address sideWallet1; address sideWallet2; address sideWallet3; } struct B { string cid; } struct 하나를 저장할때 struct A가스비가..
1. 매도자가 매도 신청을함. 오픈씨는 이때 setApprovalForAll 에 대한 허가를 매도자에게 받음 https://etherscan.io/tx/0x89b6b30c30f05a56daeb1d499ce8e57ffec1522cc9cfdf138453154066a316c5 Ethereum Transaction Hash (Txhash) Details | Etherscan Ethereum (ETH) detailed transaction info for txhash 0x89b6b30c30f05a56daeb1d499ce8e57ffec1522cc9cfdf138453154066a316c5. The transaction status, block confirmation, gas fee, Ether (ETH), and t..
Storing Structs is costing you gas 라는 글을 보고 가스를 측정해 보았다. 2018년 글 wow 여러 시나리오가 테스트되어있다. 가스비가 그냥 state 여러개 저장 >>>construct > construct 내 변수 최적화>>+알파 순으로 든다는 주장인데, 직접 실험해보았다. In Solidity (the programming language used for Ethereum smart contracts), you have “memory”, (think RAM on a computer), and “storage” (think the hard drive). Both are set up in chunks of 32 bytes (a byte is roughly a letter, s..
외부 컨트랙트를 부를때 이렇게 인터페이스로 부르는 방식이 있고 //1 interface IVault { function createVault(uint256 gameId) external payable; function addAmount(uint256 gameId) external payable; function withdraw(uint256 gameId, address payable winner) external payable; function claim(uint256 gameId, address payable user) external payable; } //2 address vaultAddr; //3 function setVault(address _vaultAddr) external { vaultAd..
하드햇과 트러플은 모두 블록체인, 이더리움을 개발할때 환경설정을 도와주는 툴이다. 구체적으로는 테스트 노드의 EVM에서 스마트컨트랙트를 compile, run, test 하는과정을 도와준다. 둘다 Javascript 기반 환경을 제공하는데, 예전 튜토리얼을 보면 대부분 트러플을 추천하는데 요새 튜토리얼은 대부분 하드햇을 추천한다. 어떤 차이와 장단점이 있는지 정리해보려한다. Remix도 좋은 툴이지만 둘과는 완전히 맥락이 다르므로 이번에는 패스. Github Hardhat 3.3k stars, 마지막 업데이트 1시간 전 Truffle 13.2k stars, 마지막 업데이트 1달 전 이것만보면 하드햇을 쓰는건 모험처럼 보일수도 있다. Solidity2021 survey 2020년엔 분명 하드햇-트러플 유저..