관련 레포: https://github.com/in63119/Core-practice 2-3. 변수 선언하기 Rust는 JS와 비슷하게 변수를 선언하려면 let과 const를 사용 할 수 있다. 나는 이제 sha2 크레이트를 사용하기 위해 main.rs를 다음과 같이 코드를 짰다. 코드 해석은 다음 포스트로… use s...
Rust - 라이브러리 가져오기
관련 레포: https://github.com/in63119/Core-practice 2-2. 크레이트(외부 라이브러리) 가져오기 지난 번 크레이트를 추가하는 공부를 하면서 sha2라는 크레이트를 설치했다. Rust - 라이브러리 추가 이번에는 이 sha2크레이트를 내 코드에 불러오는 것을 해보자. 크레이트를 불러오는 코드...
Rust - 라이브러리 추가
관련 레포: https://github.com/in63119/Core-practice 1. Rust 개발 셋팅 1-4. 크레이트 추가(a.k.a 라이브러리) NodeJS에서는 라이브러리를 추가하려면 npm(or yarn) install(or add) {라이브러리 명} @1.0.0(버전 명시 안하면 최신버전) 같은 형식으로 명령을 해야...
Rust - main 함수
관련 레포: https://github.com/in63119/Core-practice 2. 문법 2-1. main 함수 cargo init을 실행시키면 src폴더에 main.rs 파일이 생기면서 안에는 main 함수가 있다. main함수에는 “Hello, world!”를 화면에 출력하는 명령이 포함되어 있다. fn main() ...
Rust - 개발 셋팅
관련 레포: https://github.com/in63119/Core-practice 오늘부터 코어 개발을 위한(ㅎㅎ) 공부를 시작해볼 것이다. 먼저, 계획하고 있는 코어 공부 플랜을 적어보기로 한다. Rust 환경 셋팅 Rust 문법 공부 Rust code example 읽기 Rust 코드 짜보고 테스트 실행 ...
ENS 컨트랙트 배포 중 기록
참고 Deploying ENS on a Private Chain 클레이튼 엠버서더에서 진행하는 Core dev 프로젝트 중 ‘주소 라벨링’을 진행하고 있다. 이더리움의 ENS(Ethereum Name Service)를 Klaytn으로 개발하여 KIP를 등록하는 것이 이번 프로젝트의 목표이다. ENS 배포 1. 로컬 배포(...
BlockChain Core - Sharding on Blockchain 11
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 10 8.2 Discussion 본문 Besides the sharding-based blockchain protocols summa- rized in Table 2, there exist o...
BlockChain Core - Sharding on Blockchain 10
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 9 8 STATE-OF-THE-ART SHARDING PROTOCOLS 본문 This section summaries a comparison of the state-of-the-art bloc...
BlockChain Core - Sharding on Blockchain 9
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 8 7 EPOCH RECONFIGURATION 본문 Sharding protocols partition the consensus nodes into differ- ent shards, so t...
BlockChain Core - Sharding on Blockchain 8
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 7 6 CROSS-SHARD TRANSACTIONS 본문 To scale blockchain, transactions need to be distributed among multiple com...
BlockChain Core - Sharding on Blockchain 7
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 6 5 EPOCH RANDOMNESS 본문 In blockchain sharding protocols, when multiple nodes are involved in a consensus...
BlockChain Core - Sharding on Blockchain 6
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 5 4 CONSENSUS PROTOCOLS 본문 Sharding on blockchain requires consensus protocols to agree on the proposed blo...
BlockChain Core - Sharding on Blockchain 5
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 4 3 SHARDING OVERVIEW 본문 3 SHARDING OVERVIEW Originally, sharding is a type of database partitioning te...
BlockChain Core - Sharding on Blockchain 4
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 3 2.3 Scalability in Sharding Blockchain 본문 2.3 Scalability in Sharding Blockchain The blockchain scala...
BlockChain Core - Sharding on Blockchain 3
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 2 2.2 BFT Consensus Scalability 본문 2.2 BFT Consensus Scalability Sharding a blockchain largely relies ...
BlockChain Core - Sharding on Blockchain 2
자료 : SoK: Sharding on Blockchain 지난 포스트 - SoK: Sharding on Blockchain 1 2. PRELIMINARIES 본문 This section introduces various models and taxonomies for blockchain protocols, follo...
BlockChain Core - Sharding on Blockchain 1
자료 : SoK: Sharding on Blockchain 저번 텐더민트 알고리즘에 이어 오늘부터 블록체인 샤딩에 대해 공부를 시작한다! 이번 논문은 여러 블록체인의 샤딩 프로토콜에 대한 내용이다. 샤딩은 트랜잭션을 여러개로 분할하여 처리하는 것을 말한다.(앞으로 더 자세히 나옴) 블록체인의 확장성을 위해 사용되는 ...
BlockChain Core - The latest gossip on BFT consensus 11
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 10 Lemma 7. Algorithm 1 satisfies Termination. 정리 7. 알고리즘 1은 종료 조건을 만족합니다. Lemma 7 본문 Proof:...
BlockChain Core - The latest gossip on BFT consensus 10
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 9 Lemma 6. If a correct process p locks a value v at time t0 > GST in some round r (lockedValue = ...
Project - NFT를 활용한 유아교육 1
프로젝트에 협조해주신 밀알성품어린이집에 감사드립니다. 현업 2년차 블록체인 개발자로 우리나라의 국민 중 블록체인 서비스를 이용하는 사람들은 대부분 블록체인에 관심 많은 젊은이 or IT 종사자에 속한다는 것을 파악한 후부터 한가지 가설을 세워보았다. “블록체인은 무조건 쉬워야 한다. 만약, 블록체인에 대한 접근성이 좋다면 아무리 ...
BlockChain Core - The latest gossip on BFT consensus 9
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 8 Lemma 5. If we assume that: 1) a correct process p is the first correct process to enter a round r...
BlockChain Core - The latest gossip on BFT consensus 8
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 7 IV. PROOF OF TENDERMINT CONSENSUS ALGORITHM Lemma 1. For all f ≥ 0, any two sets of processes with...
BlockChain Core - The latest gossip on BFT consensus 7
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 6 A. Termination mechanism 원본 내용 A. Termination mechanism Tendermint ensures terminati...
BlockChain Core - The latest gossip on BFT consensus 6
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 5 이번 챕터는 텐더민트의 수도코드를 보면서 각각의 코드 또는 변수에 대한 설명을 하는 글이다. 이후에 나올 Lemma 챕터에서 코드에 대한 증명을 하기 때문에 “아 이렇게 생겼구나...
BlockChain Core - The latest gossip on BFT consensus 5
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 4 III. TENDERMINT CONSENSUS ALGORITHM In this section we present the Tendermint Byzantine fault-...
BlockChain Core - The latest gossip on BFT consensus 4
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 3 B. State Machine Replication(상태 머신 복제) State machine replication (SMR) is a general approach f...
BlockChain Core - The latest gossip on BFT consensus 3
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 2 II. DEFINITIONS A. Model We consider a system of processes that communicate by exchanging me...
BlockChain Core - The latest gossip on BFT consensus 2
자료 : The latest gossip on BFT consensus 지난 포스트 - The latest gossip on BFT consensus 1 The success of cryptocurrencies or blockchain systems in recent years (e.g., [4], [5]) pose a ...
BlockChain Core - The latest gossip on BFT consensus 1
자료 : The latest gossip on BFT consensus 저번 클레이튼 컨퍼런스에서 콜린님도 참여하시는 ‘블록체인 코어 스터디’에서 함께 공부해 볼 기회가 생겼다. 블로깅 내용 중 스터디 멤버들은 회사 이름만 들어도 다 알 수 있는 굇수 코어 개발자 분들과 블록체인 회사의 CEO & CPO 분들, 서울...
2023 5월 Klaytn DevMeet 컨퍼런스 - Metaverse Knowledge Kit
나는 개인적으로 많은 블록체인 중에서도 클레이튼을 좋아하고, 응원한다. 이미 블록체인 생태계가 탄탄하게 구성된 이유도 있지만, 대한민국의 블록체인 중 하나라는 것이 크다. (화이팅!) 이번 클레이튼 데브밋 컨퍼런스에서는 메타버스와 블록체인을 접목한 Metaverse Knowledge Kit를 주제로 하고 있다. Metav...
2023 블록체인 밋업 컨퍼런스 다녀온 후기. 그리고 STO
평소 STO에 관심이 있었는데, 마침 관련 컨퍼런스를 진행하기에 신청하여 다녀왔다. “앞으로 우리나라의 블록체인 관련 산업은 어떻게 진행될지?” “블록체인 개발자로서의 나는 어떤 준비를 해야할지?” 미리 알아봐야 겠다는 생각에 걱정반 기대반으로 컨퍼런스를 기다렸다. 2023 BCMC(BlockChain Meetup Conferenc...
Algorithm - 개미 군단
문제 개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 ...
Algorithm - 분수 덧셈
문제 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 입출력 예 nu...
Algorithm - 평행
문제 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 입출력 예 ...
Algorithm - Linked List
Linked List는 아래에 있는 이미지처럼 연결되어있는 선형 데이터 구조이다. 데이터는 노드에 저장되며, 리스트의 맨 앞 부분을 head 맨 뒤에 있는 부분을 tail이라고 하며 다음(next)노드의 정보를 가지고 있다. 이렇게 인접한 노드와 연결되어있는 구조가 블록체인과 유사하다. Where are linked lists used...
가스 최적화 후 느린 트랜잭션 처리
회사에서 NFT 민팅 작업을 하는데, 민팅 로직을 개선한 결과가 너무 마음에 들었다. 결론적으로, 트랜잭션 해시값을 미리 가져와서 민팅을 비동기적으로 진행할 수 있게 만들었다. 배경 회사에서 이더리움 & 폴리곤 메인넷에 NFT 민팅하는 업무를 맡았다. 처음으로 진행하는 메인넷 배포 & 민팅에 설레이면서도 불안함을 가지면서 작업...
Algorithm - 가장 가까운 같은 글자
문제 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s=”banana”라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 ...
Algorithm - 크기가 작은 부분 문자열
문제 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t=”3141592”이고 p=”271” 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 41...
Algorithm - 개인정보 수집 유효기간
문제 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라...
React-native run 시킬 때 지정 디바이스로 실행시키는 방법(기본)
배경 리액트 네이티브를 이용하여 개발할 때 ios simulator를 실행시켜서 디바이스에서의 뷰를 확인하곤 한다. 이슈 프로젝트 단에서 react-native run-ios를 통해서 simulator를 실행시키려면 프로젝트의 설정과 Xcode의 디바이스의 버전을 맞춰야 하는 등의 번거로움이 발생한다. Xcode로 ...
하위 디렉토리에서 dotenv 적용
저번 포스트에서 상위 디렉토리에서 사용하는 것으로 해결했지만, 이번엔 하위 디렉토리에서도 환경변수를 사용하고 싶었다. 지난 포스트 : 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)이다. 테스트 이더를 받고 이것저것 트랜잭션을 보내다보니 가스비의 ...