저번 포스트에서 상위 디렉토리에서 사용하는 것으로 해결했지만, 이번엔 하위 디렉토리에서도 환경변수를 사용하고 싶었다. 지난 포스트 : let과 const 그리고 할당 배경 .env 환경변수를 다른 하위 디렉토리에서 꺼내어 사용하고 싶었다. 내가 사용한 변수는 다음과 같다. 이슈 .env의 하위 디렉토리인 s...
let과 const 그리고 할당
기존 프로젝트를 리팩토링 하던 중 아주 초보적인 소중한 깨달음을 얻어 블로깅을 한다. 앞으로 초보적인 실수는 [Monkey]라는 태그로 잊지 않도록 모아놓을 것이다. 배경 개인적으로 만들고 있는 월렛 프로젝트의 체인은 마지막으로 추가한 Polygon을 합해서 총 4개이다. 이 중 Ethereum, Binance, Polygon은 노드...
잔액 소수점 반올림 구현
예전 포스트에서 여러 유명한 월렛에서는 소수점을 어디까지 사용하나 알아보았다. 지난 포스트 : 각 월렛에서 소수점 잔액은 몇 자리까지 표시할까? 이번에는 소수점 넷째자리 까지만 보여주도록 변경해보겠다. 예를 들어, 0.444445라는 잔액이 있다면 0.4444 까지만 보여주도록 할 것이다. 기존 잔액 표기 기존 월렛의 잔...
여러 개발자들에게 물어본 address(0) 쓰임새
솔리디티에서 modifier를 사용하여 컨트랙트의 특정 기능이 내가 원하는 주소에만 사용가능하도록 해줄 수 있다. 보통 해당 컨트랙트의 오너만 기능을 사용 가능하게끔 만들어 주는데, 다음과 같이 만들어준다. // modifier에 require를 넣어서 어떠한 값과 비교하는데, // 이 때 들어가는 mainOwner 같은 값은 해당 컨트랙트를 ...
ERC-20과 ERC-721 소스 코드 차이
Erc-20과 Erc-721은 대체 가능한지로 구분이 되는데, 소스코드 단에서는 같은 명칭의 함수를 사용한다. 코드 단에서의 차이는 무엇이 있을까? 오픈 재플린의 깃헙 소스 코드를 기준으로 차이를 살펴보자. 참고 openZeppelin ERC-20 Github openZeppelin ERC-721 Github Func...
업그레이더블 컨트랙트와 Delegate call
이제는 기본적으로 구성해야 하는 업그레이더블 컨트랙트와 로직과 스토리지를 구분하는 Delegate call에 대해 알아보자. Upgredable Contract 업그레이더블 컨트랙트는 말 그대로 업그레이드가 가능한 컨트랙트이다. 사실 블록체인 안에 스마크 컨트랙트는 절대로 변경할 수 없다. 그런데, 이렇게 생각해보자. 만약 어떤 서비스를 제...
MORPG와 MMORPG의 차이
MORPG와 MMORPG는 게임을 하면서 몇 번 보기는 했는데, 개발자로서 접근할 때 그 차이에 대해 설명하라 하면 설명을 못했다. 그래서 이번 블로깅은 MORPG와 MMORPG이 무엇이고, 그 차이점은 무엇인지 알아보려고 한다. MORPG(Multiplayer Online Role-Playing Game) MORPG(Multiplayer Onl...
CORS 중복처리
cors를 해결하기 위해 서버단에서 cors를 처리해주고 배포를 위해 Nginx 설정을 해주었다. 그런데 배포를 하고 난 후 브라우져에서 다음과 같은 에러가 발생하였다. The 'Access-Control-Allow-Origin' header contains multiple values 원인파악 헤더에 여러값이 포함되어있다는 말인데.. ...
Dex - 1. 유동성이란?
유동성(liquidity)이란? Dex를 공부하기 앞서 유동성에 대해 알아보자. 유동성(liquidity)이란 경제 용어로 자산을 가치의 손실 없이 얼마나 쉽고 빨리 현금으로 바꿀 수 있는지를 나타내는 개념이다. 쉽게 말해, 돈이다. [이미지 출처 - 한국은행] 예를 들어, 뜻하지 않게 이번 달 지출이 너무 늘어나 월세(100만원...
Cannot assign to read only property 'exports' of object 이슈
npm build를 하는 와중에 다음과 같은 에러가 떴다. TypeError: Cannot assign to read only property 'exports' of object '#<Object>' 어떠한 모듈 내보내기가 되지 않는다는 말인데, 분명 배포 전 테스트할 때에는 문제가 없었지만 배포하기 위해 npm build를 하...
caver.js 사용시 webpack 5 호환 문제
caver.js를 사용하고 npm build를 하는 와중에 다음과 같은 에러가 떴다. BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this m...
sendSignedTransaction과 sendTransaction
web3.js로 트랜잭션을 보낼 때, 두 가지 함수를 쓸 수 있다. sendTransaction과 sendSignedTransaction. 이 두 함수는 어떤 차이가 있을까? Web3.js Docs를 통해 두 함수의 차이를 살펴보자. Docs에 나와있는 설명을 보면 뚜렷한 하나의 차이를 알아볼 수 있다. 바로, 함수 실행 시 서명의 여부이다....
각 월렛에서 소수점 잔액은 몇 자리까지 표시할까?
개인 프로젝트로 월렛을 만들면서 계좌의 잔액을 표시할 때 문득 의문이 들었다. ‘잔액은 소수점의 몇 자리까지 보여줘야할까?’ 각 월렛마다 보여주는 잔액표시 현재 내 개인 프로젝트의 Goerli 네트워크 계정의 잔액은 0.492529598614437 ETH(Goerli)이다. 테스트 이더를 받고 이것저것 트랜잭션을 보내다보니 가스비의 ...