목표 지향적 개발자의 성장 일기
-
[Next14] [Auth.js v5] 를 이용해서 외부 JWT를 CredentialsProvider에서 사용해보자. (useSession, auth)
[설정해야 하는 부분]0. next-auth session 타입 재정의 1. signIn 함수 호출2. auth.ts provider, callback 설정3. session에 저장된 정보 사용하기 (client side, server side) 이번에 authjs를 사용해보면서 자체로그인 시에 Credentials라는 인증 옵션을 사용하면서, 서버로 부터 발급받은 accessToken과 refreshToken을 auth가 관리하는 session에 저장해서 활용하는 방법을 알아보았습니다. 해당 기능을 구현하면서 auth.ts 파일 내부에 jwt callback 과 session callback에 어떤 인자가 전달되고 어떤 상황에 호출이 되는지 흐름을 살펴보겠습니다. 0️⃣ nextauth session ..
-
[docker, kafka] docker-compose 로 카프카 커넥트, kafka-redis connector 설정하기
💼나에게 주어진 Task kafka connect를 세팅하고, kafka-redis connector plugin 세팅을 해서 kafka에 들어온 메세지를 redis에 저장해라. (근데 이제 도커 세팅을 곁들인..) kafka connect 세팅 kafka-redis plugin 컨테이너에 설치 sink connector 등록 (api 요청) 📜kafka-connect 컨테이너 설정 zookeeper, kafka, redis 설정은 되어있다고 가정합니다. docker-compose.yml kafka-connect: image: confluentinc/cp-kafka-connect:6.0.14 container_name: kafka-connect depends_on: - kafka1 - kafka2 - k..
-
[Hackathon](후기: 대회 1등을 했습니다😉) KYC dApp Project ( Multichain API, Webhook, Json RPC)
👨👨👦👦 [TEAM] E1I3 💁🏻♂️ Hyun suk : Frontend, BlockChain 개발 💁🏻♂️ Berrypjh : Frontend, BlockChain 개발 💁🏻♂️ kyc9775 : Backend, Blockchain 개발 💁🏻♂️ Supersett (Me) : Backend, Blockchain 개발 https://github.com/Stray-Dogs-E1I3 Stray-Dogs-E1I3 Luniverse dApp Project. Stray-Dogs-E1I3 has 3 repositories available. Follow their code on GitHub. github.com https://dorahacks.io/buidl/6094 Know Your Cost | B..
-
[Polygon Hackathon] Backend Dashboard (5.30 ~ 6.4)
So, if you're ready to take on the challenge and showcase your skills, join us for the Luniverse NOVA Hackathon and let's build the future of Web3 together! Polygon [APAC] DevX Hackathon X DoraHacks - Submit Now! | Hackathon | DoraHacks # [Click here to register your info!](https://airtable.com/shrgYjgVHzyxfqVyn) # About Polygon Labs is excited to invite you to participate in our upcoming DevX T..
-
Tnxs 정보를 가공해서 "분기별 트렌드 리포트"를 제공해보자📒 (feat. dApp killing feature)
🎯 내가 만들고 싶은 기능 특정 유저가 이용한 dApp들의 통계를 보여주고 싶다. 근데 그 유저가 이용한 시기(분기)를 설정해서 분기마다의 이용 통계값을 반환하길 원한다. 유저가 이용하는 dApp들은 1️⃣Defi 2️⃣NFT 3️⃣Others 로 분류한다. 분기별 사용자의 이용 dApp 통계를 DTO로 반환합니다. 🏹 기능을 구현하는데 필요한 요소는? 특정 유저가 이용한 dApp들의 통계를 보여주고 싶다. https://doc.pikespeak.ai/ /account/transactions/{contract_address} API 호출하면 아래의 json을 반환 받는다.(최근 50개의 tnxs정보) Key 값 중 "first_action_type" : "functionCall" 인 부분을 추출할 것이고..
-
[Digital Signiture] 암호화의 원리🔐
암호화폐 지갑은 실제로 암호화폐를 저장하지 않는다. 대신, 블록체인과 상호작용 할 수 있는 수단을 제공한다. 블록체인 트랜잭션을 통해 암호화폐를 주고받을 때 필요한 정보를 생성 할 수 있다. 이 정보는 하나 또는 그 이상의 공개키와 개인키 쌍으로 구성된다. 지갑에는 (공개키와 개인키를 기반으로 생성되는) 영숫자 식별자인 [공개주소] 가 포함되어 있다. 이 주소는 기본적으로 코인이 전송될 수 있는 블록체인상 특정한 위치다. 자금을 전달받기 위해 공개주소를 공유 할 수 있지만, 개인키는 누구에게도 공개해서는 안된다. 코인들이 블록체인을 빠져나가는것이 아니고, 한 주소에서 다른 주소로 전송된다. 🤝 디지털 서명(Digital Signiture) 메세지나 디지털 문서의 진위성과 무결성을 검증하는데 사용하는 수학..
-
[Hackathon] NICO dApp Project (feat. Block Explorer, SBT, Community)
[TEAM] Tired But Happy 💁🏻♂️ Kimchiman : 기획자 💁🏻♀️ Domou : 디자이너 💁🏻♂️ Damon : Contract 개발 💁🏻♂️ Berrypjh : Frontend, BlockChain 개발 💁🏻♂️ Supersett (Me) : Backend, Blockchain 개발 https://github.com/Tired-but-Happy Tired-but-Happy Tired-but-Happy has 2 repositories available. Follow their code on GitHub. github.com 🎯Key Feature Block Explorer 특정 주소의 balance,Tnxs 정보 특정 유저의 자주 사용하는 dApp List Tnxs 정보를..
-
[Hackathon] Backend DashBoard is underway👾
기획이 3번 정도 휙휙 바뀌다 이제 하나로 정리가 되기 시작했다. 잡아둔 대략적인 프로젝트 구조에서 구체적인 api, 코드를 짜야할 시간이다. 효율적이고 효과적으로 남은 5일을 보내기 위해 전체적인 그림을 그리고 하나씩 쳐낼 것이다. 1. 와이어프레임을 토대로 기능 정리 2. 기능을 토대로 DB 작성하기 3. [API 명세] 작성하고, 고려해야 할 사항 정리하기. 4. [API 명세] 우선순위 설정 후, [코드] 구현하기 ✅ [DB세팅] Mysql 연결 ✅ [User] 지갑 연결 후 로그인 → 해당 정보 DB에 저장 후 JWT 발급 ✅ [User] getUserInfo 🔲 [User] updateUserInfo public interface UserService { public void login(Str..
-
[Hackathon] 삽질 일대기😰
입사하기 전에 할 수 있는 삽질은 뭐든 해보자. 모든 삽질은 의미가 있다. #1 🚨문제 발생 상황 Node.js 서버 → 블록체인 으로 지갑주소를 보내면 계정의 balance를 반환받는 로직을 짜고 있었다. NEAR에서 제공하는 [near-api-js] 의 지갑연동 프로세스가 프론트단에 최적화 되어 있음. 예) 브라우저 Local Storage 에 있는 Address 와 Keypair를 담아서 특정 형태로 묶어서 블록체인과 connection을 함 지금 [near-api-js] 제공하는 함수 그대로를 사용할 수 없는 상황!!! async function getUserbalance(address) { const near = await nearApi.connect({ deps: { keyStore: new ..
-
[Hackathon] Web3 프로젝트 구조 설계에 관한 깊은 고찰🤔
블록체인 기술을 통해 서비스가 주고자 하는 것이 무엇인가? 기존 WEB2 서비스와의 차별점이 무엇인가? 굳이 블록체인 이여야 하는가? 🎯신경을 많이 쓴 부분 기존 Web2 서비스를 설계할 때, 모든 정보를 DB에 저장했었고 어디에 뭘 나눠야 한다는 고민을 해본 적은 없었습니다. 블록체인이라는 분산DB로 넘어오게 되었고, 블록체인이 갖는 특유의 성질로 인해 특히 주의해서 설계해야 함을 인지했습니다. *CREATE, UPDATE, DELETE 시 Gas Fee 발생 *체인별 TPS 상이(Web2와 비교했을때 처리 속도가 느림) 설계 없이 Web2 하듯이 모든 정보를 다 블록체인에 때려박게 된다면, 음.. 매우 비효율적일 겁니다. 어디까지 블록체인에 그리고 DB에 저장할지에 대한 충분한 논의를 나눴고, 주변에..
-
[Hackathon] 📚프로젝트 구조화 + 우선순위 설정 (feat. NEAR Protocol)
📘프로젝트 구조 [체인] : NEAR Protocol [스마트 컨트랙트] : Rust [서버] Node.js [DB] : mongoDB 🎯구현해야 할 요소 블록체인 노드에 있는 정보(트랜잭션)를 서버에서 호출한 뒤 DB에 저장 지갑 연동 Rust로 스마트 컨트랙트 작성 후 디플로이 게시판 CRUD 사용자 정보 (블록체인+DB) 활용해서 저장 ❓자체 질문 캐시를 활용 할 수 있을까? 대시보드에 뿌려주는 정보들은 전부 요청시마다 DB로부터 와야 할까요? 아니면 특정정보들은 노드로부터 바로 오고 나머지는 DB로 부터 오게 할까요? 🎯뭘 만들어야 할지 파악이 되었다면, 내가 해야 할 것은? 구현 언어에 필요한 docs, 레퍼런스 준비 정말 작은 규모로 프로젝트 구축하기 mongoDB 연동 트랜잭션을 db 모델 ..
-
왜 성능 좋은 3세대 체인들은 이더리움의 인기를 뛰어넘지 못할까요?🙄🙄
왜 빠르고 수수료가 낮은 3세대 체인들은 인기가 많지 않을까요❓😒 💡블록체인 트릴레마 저는 블록체인 트릴레마가 큰 이유라고 생각합니다. 기존 비트코인, 이더리움 시대에 있던 유저들의 이념은 탈중앙화입니다. 탈중앙화를 통해 높은 보안성을 자랑하는 이더리움 체인을 신뢰하는 것이지요. 하지만 느리고 Gas Fee가 비싼 이더리움을 저격하기 위해 나온 3세대 체인들은 빠르고 수수료가 낮지만, 보안성이 낮습니다. 탈중앙화를 포기했기 때문이죠. 보안성 문제로 인해 그들은 굳이 큰돈을 보안이 좋지 않은 체인에 넣을 이유가 없습니다. 💡[로닌 네트워크] 역대 최대 규모 사이드체인 노드 해킹 사건 이더리움의 사이드체인인 로닌네트워크에서 해킹으로 7000억 원대 규모의 피해가 22년 3월에 있었습니다. (블록체인 역사상 ..
-
[Hackathon] NEAR Protocol(니어 프로토콜)이란?
🎨나의 의문점?! 많은 프로토콜들이 기존 이더리움의 단점(낮은 TPS와 높은 거래수수료)을 보완하면서 씬에 등장 하는것 같다. 왜 빠르고 저렴한데 사람들이 갈아타지 않을까? 너무 익숙해서? 귀찮아서? 좀 주변 사람들한테 물어보자 니어 프로토콜은 샤딩 기술을 사용하여 확장성을 달성하는 계층 1 블록 체인입니다. NEAR는 스마트 계약을 사용하고 PoS(Proof of Stake) 합의 메커니즘을 채택하여 네트워크를 보호합니다. NEAR Collective가 구축한 니어 프로토콜은 2020년 알렉스 스키다노프와 일리아 폴로수킨에 의해 공동 설립되었습니다. 이 프로젝트는 분산형 애플리케이션(DApp)을 호스팅하기 위한 커뮤니티 운영 클라우드 인프라로 개발되고 있습니다. NEAR 플랫폼에는 개발자가 디앱을 구축..
-
🎯Next Level을 위한 단기 목표 선언 + 4월 간단 회고
나는 할 수 있다. 할 수 있게 만들 것이다! 4 ~ 6월 1. 블록체인 기술 흐름에 대한 이해 (근데 이제 설명할 수 있는 역량을 곁들인 ) 2. dApp 프로젝트 완성 7월 인턴 면접, 합격 (코인플러그 목표!) 8월 블록체인 학회 CURG 입단 1. 블록체인 기술 흐름에 대한 이해를 달성하기 위하여 [영상] 블록체인 관련 유튜브 시청, 정리 [책] 마스터링 비트코인 읽고 정리하기 [블로깅] 키워드 위주의 정리를 통해 나의 생각을 능동적으로 글로 옮겨 적기 2. dApp프로젝트를 달성하기 위하여 (백엔드 포지션) 뭘 만들고자 하는지 커뮤니케이션을 통해 충분한 이해를 하기 프로젝트 기획을 찬찬히 분석해서 서비스 구조 설계하기 구현할 수 있는 수준의 MVP 만들기 🎨4월 회고 한 달 진짜 열심히 살았네,..
-
[비트코인 - 공개 블록체인 프로그래밍] #1 UTXO, 거래
🎨스스로에게 물어볼 것 🏹 UTXO 에 대해서 구체적인 예시를 들고 그림을 그려 설명할 수 있습니다. 🏹 비트코인에서의 거래에 대해 설명할 수 있습니다.(feat. 검증,채굴) 🏹 거래가 소유자에서 다른 소유자로 가치를 이동시키는 체인을 어떻게 구축하는가? 📘[암호화폐의 성공여부] - 기술자들이 만들어내는 새롭고 쉬운 서비스의 확산에 달렸다. 📘[비트코인의 구성요소] 📘[UTXO 모델] ■ 비트코인 사용자들은 비트코인 네트워크상에서 일어나는 거래에 대한 소유권을 입증할 수 있는 키를 소유한다. ■ 사용자들은 키를 이용해 서명하고 해당 가치에 대한 암호를 풀어 새로운 소유주에게 전송함으로써 비트코인을 소비한다. 💡잔액 지불 ■ 비트코인 거래에서 새로운 소유주의 주소와 잔액 주소라고 불리는 현 소유주의 주소..
-
세그윗(Segwit) 이란?
세그윗 속도와 확장성 개선을 위한 시도중 하나 블록의 용량 증대를 통한 개선 방법 SegWit = Segregated Witness, 비트코인의 블록에서 디지털 서명 부분을 분리함으로써 블록당 저장 용량을 늘리는 소프트웨어 업그레이드 고정된 블록의 가용 공간을 늘려서 속도를 개선 비트코인 블록 = 디지털 서명을 저장하는 공간 + 그외 데이터(트랜잭션등)을 저장하는 공간 거래가변성 문제 모든 비트코인 거래는 해당거래를 식별할 수 있는 거래의 ID (Transaction ID : transaction id)를 포함한다 디지털 서명은 비밀번호다. 거래가변성은 실질적인 거래내용에는 변화가 없지만, 거래 id만 변경하여 새로운 거래를 만들어 낼 수 있는 버그 세그윗이 TXID를 따로 보관하고 관리함으로써 여러개의..
-
[Layer-2] 블록체인에서 레이어 솔루션이란?
블록체인의 레이어 솔루션은 블록체인의 확장성 문제를 해결하기 위해 등장하게 되었습니다. 블록체인 기술은 고도로 보안이 보장되는 분산형 데이터베이스를 기반으로 하고 있어서 데이터의 위변조나 삭제가 불가능하며, 이는 블록체인 기술의 큰 장점입니다. 그러나 이러한 분산형 데이터베이스의 특성상 대규모 거래를 처리하는 데에는 한계가 있습니다. 이를 해결하기 위해 등장한 것이 레이어 솔루션입니다. 레이어 1 솔루션 ■ 기존 블록체인의 규칙 또는 메커니즘을 직접적으로 개선하는 것 ■ 블록체인을 직접적으로 개발하는 코어팀 담당 ■ 합의 알고리즘 개선 샤딩 (Sharding) ■ 인기있는 레이어 1 확장 솔루션 ■ 트랜잭션을 샤드라고 하는 더 작은 데이터 세트로 나눈다. 샤드는 네트워크에서 동시에 병렬로 처리되므로 동시..
-
분산DB와 블룸필터
분산 데이터베이스와 분산 원장에 대해 이해할 수 있다. 클러스터링, 레플리케이션, 샤딩 머클트리의 동작 방식을 설명하세요. 블록체인에서 머클트리가 어떻게 동작하는지 이해할 수 있다. 블룸필터의 동작 방식과 특징에 대해 설명하세요. DAG에 대해 설명할 수 있다. 그래프의 종류와 특징을 이해할 수 있다. 암호화폐에서 DAG가 어떻게 적용되는지 이해할 수 있다. DHT에 대해 설명할 수 있다. 해시 테이블의 구조와 특징을 이해할 수 있다. DHT에서 정보를 저장하고 조회하는 방식을 이해할 수 있다. 블록체인 네트워크를 통해 관리되는 분산DB의 한 종류 분산 데이터베이스 하나의 DB관리 시스템으로 여러 cpu에 저장장치들을 제어하는 형태의 db 물리적으로 여러위치에 분산 저장하고 흩어져 있는 시스템이지만, 논..
-
스테이블 코인은 왜 필요한가요? (Feat. 테라, 루나 코인)
목차 스테이블 코인이 뭐죠? 테라,루나는 왜 만들었나요? [테라 시스템] : 가치안정화 메커니즘 테라루나 사태 정리 1. 스테이블 코인이 뭐죠? '수수료' '가상화폐의 큰 변동성' 내가 들고 있는 법정화폐를 암호화폐로 바꾸려면 가상화폐거래소에 돈을 들고가 환전을 해야합니다. 환전에는 수수료가 발생합니다. 내가 암호화폐 관련한 사업을 한다고 하면, 환전에 여러번의 수수료를 지불해야 할것입니다. 내가 들고 있는 암호화폐의 가치가 떨어질수도 있기 때문에 불안해.. 암호화폐 자산들이 과연 교환의 매개로 자리잡을 수 있을까? 암호자산으로 1. 무언가를 교환하거나, 2. 금융 활동에 참여하거나, 3. 안전하게 보관하기 위해서는 가격 변동성이 비교적으로 적거나 안정적이어야 한다는 결론이 났고, 스테이블 코인이 등장했..
-
[AWS][24/365 장애 없는 서비스 환경]을 위한 캐밋의 로드맵
가자! 중앙대학교 관심사 기반 커뮤니티 '캐밋' 서버를 구축함에 있어서 두 가지에 대해 정리할 것이다. 그동안 불편했던 점 24/365 서비스를 위한 개선방향 [ 현재 상황 ] 서버 : AWS EC2 1대 (도메인 : cameet.site/) DB : sqlite ( 특이점 : django 내장 DB) [ 문제가 뭐야? ] ① 로컬에서 작업하던 코드를 배포서버에 맞게 수정 후 올리고 난 후 문제 발생 → 배포 환경에서는 기능이 작동하지만, 새로운 기능을 만들거나 기존의 코드를 수정해야 하는 상황에 있어서 로컬 환경에서 테스트가 성립하지 않았다. (ex - 소셜 로그인 base_url 설정 상이, 로컬 db와 배포서버 갖고 있는 db값이 다름) → 매번 1. 로컬에서 코드를 작성하고, 2. 배포서버에 반영..