본문 바로가기

분류 전체보기

(285)
klaytn node 띄워보기 3탄(deploy contract + dapp open) 이번 실습을 정리해보면 다음과 같다. 1. 이더리움 & 클레이튼 노드 hh 키워드로 띄우기 2. hh deploy --network localhost --reset 처음에는 컴파일 할게 없다며 뭐지..? 싶었다가 갑자기 Poll을 deploy 한다는 문구가 띄워졌다. 3. hh addr --network localhost addr은 리눅스에서 address의 줄임말이라고 한다. 여기서 localhost에서 Poll로 배포된 주소를 출력하라는 의미같다. 참고로 cat deployments/localhost/Poll.json | jq.address를 해보면 위에서는 { Poll: '주소'}가 나오지만 jq로 prettier 역할을 하니 좀 더 보기좋게 출력된다. 사실 한 줄 주소 출력이니 jq는 적용하지 않..
Method expression is not of Function type gas: this.web3.utils.toHex(new BN(Math.floor(gas * 1.2)).toString()), 에서 BN에 빨간줄이 뜨더니 Method expression is not of Function type 라는 에러가 발생하는데, 실행에는 영향을 주지 않는다. 알고보니 인텔리제이에 국한되어 발생하는 에러라고 한다. 혹시나 BN에 대하여 import가 잘 되지 않아서 그런건가 싶었는데, import BN from 'bn.js'로 import가 잘 되어있었다.
api.module.ts에서 global:true로 넣기 @Module({ imports: [ CommonModule, ScheduleModule.forRoot(), { module: ChampionDataModule, global: true, }, { module: AuthModule, global: true, }, ... 일일이 module.ts 파일에서 정의를 해주지 않아도 global:true 옵션에서 해당 모듈을 모두 가져올 수 있다고 한다. 다만 module : 모듈 이름 에서 모듈 이름과 관련된 파일이 정의되어 있어야 한다. 예를 들면 ChampionDataModule에서 champion-data.module.ts 파일이 정의되어 있어야 하고 Auth 모듈도 auth.module.ts 파일이 정의되어 있어야 한다.
rabbitMQ) prefetchCount란? event-lisenter repo에서 app.connetMicroservice {} 내부에 prefectCount라는게 있었다. 이것을 처음 보아서 이번 기회에 정리해두려고 한다. prefetchCount:1로 설정이 되어있었는데, 서버당 한 번에 1개의 메시지를 처리한다는 의미이다. 이를 5로 조정한다면, 서버당 한 번에 5개의 메시지를 가져와 처리할 수 있다는 의미이다. 그렇다면 여기서 의문이 생겼었다. 서버당 메시지를 받는 개수가 정해져 있는거면, 한 서버의 하나의 메시지만 온다는 것이 잘 와닿지 않는다. => 이는 여러 개의 이벤트가 큐에 쌓여있을 때 동시에 몇 개까지 땡겨서 작업하겠는가?에 대한 것이다. prefetch:5로 설정했을 경우 1개만 작업하던 것을 동시에 5개까지 메시지를 땡겨와 ..
Klaytn Square Lounge 2023 다녀온 후기 안녕하세요! klaytn dev ambassador 2기 brandy 입니다. 이번 9월 5일 SJ 쿤스트할레에서 진행된 'Klaytn Square Lounge'에 다녀왔는데요, 그 생생한 후기를 남기고자 합니다. 행사장 입구에 들어서는데 클레이튼의 엄청난 기운이..! 원래 공연장으로 사용되는 곳인데 여기서 클레이튼 행사가 진행되니 뭔가 신기했어요! 이번 행사에서 느낀 점은 크게 다음과 같습니다. - 블록체인 프로젝트들이 일본 시장을 타겟으로 많이 삼고 있다 - 주요 거래소에 리스팅된 코인들을 살펴보면 모두 글로벌 프로젝트이다. 국내에서 새롭게 만들어진 프로젝트들은 거의 전무한 상태 라는 점에서 프로젝트들을 살펴보니 공통점들이 많더군요. 여러 연사님들의 강연을 들으면서 새롭게 알게된 내용이 굉장히 많았..
klaytn 노드 띄워보기 2탄 (CN노드,blockscout로 블록 생성 확인하기) 지난 1탄에서는 굉장히 버벅거리는 모습을 보였었는데, 이번에는 2탄으로 klaytn 노드가 띄워지고 + docker에 Klaytn container 생성 + blockscout로 블록 생성되는거 보는 것에 대해 포스팅하려고 한다. 1) 터미널에서 klaytn node 띄우기 hh klaytn-node 클레이튼 노드에 대한 정보가 좌라락~나온다. 여기서 눈에 띄는건 "kip71":null인데, 항상 Null값이 뜨는 것은 신경이 쓰인다. kip71이 뭐인고 하니 동적 가스비 메커니즘이라고 한다. 일단은 이정도만 알고 넘어가려고 한다. https://kips.klaytn.foundation/KIPs/kip-71 KIP 71: Dynamic Gas Fee Pricing Mechanism Details on K..
klaytn node 띄워보기 (with smart contract) 1탄 (to blockscout 도커 컨테이너 생성) 난생처음 블록체인 노드를 띄워보았다. 사실 백엔드 입장에서는 웹개발 말고는 노드는 띄워볼 일이 거의 없었는데 클레이튼 dev ambassador을 통해 클레이튼 노드를 띄워볼 수 있었다. 사실 지금도 엄청 이해가 되진 않지만.. 그래도 일단 해보는게 중요한 것 같아서 노드를 띄워본 과정을 적고 나중에 더 보충해나가려고 한다! 사용환경 : macOS(맥북) 터미널 + docker 진행한 순서 1) 프로젝트 클론받기 klaytn의 contract-demo-pull을 git clone 받는다. git clone http://github.com/klaytn/contract-demo-poll 2) 의존성 설치 install dependencies -> ./install.sh 설치 (sh는 shell 파일의 줄임말..
There is no matching event handler defined in the remote service. Event pattern: agenda-raised - { stack: [ null ] } 이벤트 handler에서 rabbitMQ에 메시지를 쏘고 > 이벤트 handler에서 이를 작업하려고 하니 There is no matching event handler defined in the remote service. Event pattern: event payload 이름 - { stack: [ null ] }과 같은 에러가 발생하였다. 해결방법은 다음과 같았다. 1) rabbitMQ에서 Purge Messages를 한다. (큐를 비워준다) 2) Docker에서 Event listener,handler,db 등을 재실행한다. -> 그러면 handler에서 정상적으로 handler에서 블록체인 이벤트가 수신되는 것을 확인할 수 있다. OR 그냥 도커에서 listener,handler 등 재시작으로..
role이 단수개가 아닌 복수개 처리 role이 원래 단수개였다가 roles로 복수개 처리해야 하는 상황이 왔다. roles를 그냥 string[]으로 받으면 될 줄 알았는데, 이미 있는 메서드에서 role:string으로 처리하고 있었기 때문에 따로 이벤트를 수신할때 처리가 필요했다. const roles = []; for (const role of event.returnValues.roles) { roles.push(this._parseHexToUtf8(role)); }  const payload: ~ payload(constants) = { roles: roles, ... }; 위에서 따로 foreach처럼 하나씩 꺼내와서 리스트에 저장하는 로직을 작성해주고, payload 부분에서는 갖다쓰기만 하면 된다.
Module not found: Can't resolve 'uuid' 프론트엔드에서 localhost:4100으로 접속하니 제목과 같은 에러가 발생하였다. 시도해본 방법은 다음과 같다. 1) yarn install 2) yarn install uuid -> 이건 안먹는듯 하다.. 3) yarn add uuid 4) dev 서버 껐다가 다시 켜기 위와 같은 방식으로 시도해보니 localhost:4100에서 서버가 잘 작동하였다.