TIL (45) 썸네일형 리스트형 TIL) IPFS(InterPlanetary FileSystem) 이해 (1) 본 컨텐츠는 Kblock 공식 리서치팀, 케블리님이 Steemit에 작성한 자료를 참고하였습니다. https://steemit.com/kr/@kblock/8-ipfs-interplanetary-file-system-1-http-web-ipfs-we #IPFS란? - 분산형 파일 시스템에 데이터를 저장하고 인터넷으로 공유하기 위한 프로토콜 - P2P 네트워크 #기존 Web File system과의 차이 - 기존 web file system은 중앙회되어 있기 때문에 다음과 같은 단점을 갖고 있음 기존 web에서 file을 실행할 때는 하나의 서버로부터 데이터를 불러와서 실행 하나의 서버가 데이터를 처리하기 위해 막대한 에너지 소모 서버가 클라이언트와 물리적으로 거리가 멀 경우, 전송속도에 따른 응답지연 발생.. TIL) Distributed Hash Table(DHT) 개념, Blockchain과의 차이 #What Is a Distributed Hash Table(DHT)? DHT는 Distributed Lookup Services의 일종이다. Hash 함수로 변환된 key 값과 연관된 value를 모두 연결된 포맷으로 분산화하여 저장하여 대용량 파일의 빠른 검색을 가능하게 한다. #DHT vs blockchain DHT는 단순히 네트워크의 여러 노드에 분산된 키-값 저장소입니다. 키는 결정적 알고리즘을 사용하여 노드 간에 배포됩니다. 각 노드는 해시 테이블의 일부를 담당합니다. 라우팅 알고리즘을 사용하면 네트워크의 모든 노드를 알지 않고도 해시 테이블에서 요청을 수행할 수 있습니다. 블록체인도 분산 데이터 구조이지만 그 목적은 완전히 다릅니다. 그것을 장부라고 생각하십시오. 목적은 변조 및 수정 가능성.. TIL) 탭루트(Taproot) 효과, after 탭루트 #탭루트 - 비트코인의 기술적 업그레이드이자 소프트 포크 - 특징: 프라이버시, 확장성, 보안 강화를 위해 비트코인 스크립트 작동 방식에 변화를 주는 것 #탭루트 효과 - 프라이버시: 탭루트를 적용하면 트랜잭션 이동 과정은 보이지 않고, 단일 트랜잭션처럼 처리되어 프라이버시 향상 - 확장성: 탭루트 구현 기술 중 슈로드 서명으로 인해 서명을 분리하여 처리하기 때문에 블록체인 저장 데이터 증가로 이어지고, 이는 저렴한 트랜잭션 수수료와 더 높은 TPS로 이어짐. - 보안강화: 슈로드 서명을 통해 서명을 한꺼번에 처리하기 때문에 서명 가변성으로 인한 이중 지불 문제의 위험으로부터 자유로워짐. #After 탭루트 - SIGHASH_ANYPREVOUT: BIP 118에 제안된 내용으로, SIGHASH_ANYPR.. TIL) 블룸필터(Bloom filter)와 SPV #블룸필터(Bloom filter) - probabilistic search filter - BitArray로 구성되고 비암호화 해시함수인 crc, murmur, md5를 사용함 - 확률적으로 찾기 때문에, 속도가 빠르면서 메모리 사용량도 적은 장점이 있지만 false positive 오류 발생하기도 함 #false positive 오류 - K: 해시함수 갯수 - M: BitArray 크기 - N: elements 총 갯수 - false positive는 M과 N이 작을수록, K가 클수록 발생할 확률이 높아짐. #Usecase of 블룸필터 - SPV node 운영 - 컨텐츠 추천: 유튜브, 구글 #SPV(Simplified Payment Verification) node with 블룸필터 - SPV는 .. TIL) 스마트 컨트랙트 실습 with 노마드 코더 본 컨텐츠는 노마드 코더 유튜브를 참고하여 작성하였습니다. 과정 1) repository 생성 2) 프로젝트 폴더 생성(npm init) 3) 필요한 패키지, 플러그인 다운로드 4) smart contract 작성 5) all that node 통해서 이더리움 테스트넷과 연결 6) deploy -- artifacts, cache 폴더 생성 7) contract와 communication 하는 함수 작성 배운내용 - npm init 활용 - 터미널에서 plug in 여러개 동시에 다운받는 법 - smart contract 작성 방법 - all that node 통해서 이더리움 테스트넷과 연결하는 방법 - smart contract deploy하는 방법 더 공부할 내용 - hardhat.config 관련 j.. TIL) 노마드코더 ReactJS 초보강의: useEffect 활용, button 태그 응용 useEffect 활용 useEffect란 useEffect(함수, [keyword]) 특정 부분만 re-rendering 되게 하고 싶을 때 사용. keyword 값이 변경될 때만 함수부분을 re-render할 수 있음. 변경할 때 참고하고 싶은 값으로 여러 개를 넣어줄 수 있음. cleanup function useEffect(() => { console.log('created'); return () => console.log('destroyed') }, []) component(함수)가 destroy 될 때 호출되는 함수 useEffect 인자 함수의 return 함수로 작성 태그 - 웹페이지에서 입력 양식을 만들 때 사용하는 추상적 태그 양식 - 하위 태그 등을 통해 사용자가 데이터를 기입할 수 .. TIL) 합의 알고리즘 기초 : FLP Impossibility에서 Tendermint까지 블록체인의 블록을 어떻게 생성할 것인가? 이것이 블록체인에서 말하는 합의 알고리즘이다. 합의 알고리즘은 두 가지의 속성을 만족해야 한다. - safety: 노드 간 합의가 발생했다면 어느 노드든 그 값은 동일해야 한다. - liveness: 합의 대상에 문제가 없다면 네트워크 내에서 반드시 합의가 지속적으로 이루어져야 한다. 1985년 Fischer, Lynch, and Paterson는 비동기 네트워크에서 safety와 liveness를 모두 완벽히 만족하는 합의 알고리즘을 설계하는 것이 불가능함을 증명하였다. 비동기 네트워크에서는 어떤 한 노드에서 문제가 발생했을 경우 그 노드에서 합의가 됐는데 단순히 응답에 오랜 시간이 걸리는 건지, 아니면 합의 과정에서 충돌이 발생해서 응답하지 않는 건지 알 수 .. TIL) 캐스퍼 알고리즘 컨셉 이해하기 본 콘텐츠는 Loun lee님의 medium과 이도현님의 medium, 해시넷 캐스퍼 알고리즘을 참고하여 작성하였습니다. 캐스퍼 알고리즘 이더리움이 합의방식을 PoW에서 PoS로 변경하기 위하여 고안한, 수학과 게임이론에 기반을 둔 합의 알고리즘. PoS를 구현하는 방법 (1) Chain-based PoS 지분증명은 크게 체인-기반 지분증명과 BFT-기반 지분증명으로 나뉜다. 체인-기반 지분증명이란 지분에 따라 작업증명의 난이도를 다르게 주는 방법이다. 지분이 많은 사람은 그 만큼 작업증명의 난이도가 쉬워져서 채굴할 확률이 증가하고 지분이 작은 사람은 난이도가 상대적으로 어려워서 채굴할 확률이 감소한다. (2) BFT-based PoS BFT 기반 작업증명은 이미 30년 넘게 가까이 연구된 BFT 알고리.. TIL) Layer 2 솔루션 유형 본 컨텐츠는 이더리움 로드맵(Layer 2 scaling) 및 코드스테이츠의 강의내용을 참고하여 작성하였습니다. Rollup - 레이버1 외부에서 트랜잭션을 실행하지만 레이어1에 트랜잭션 데이터를 저장하는 방식 - Optimistic Rollups(ORs): 이더리움에 의해 여전히 보안을 유지하면서 스마트 계약을 대규모로 실행할 수 있습니다. 이러한 구성은 플라즈마와 유사하지만, OR에서 Ethereum이 할 수 있는 모든 것을 실행할 수 있도록 하는 OVM(Optimistic Virtual Machine)이라는 EVM 호환 가상 머신을 실행하기 위해 플라즈마의 거의 무한한 확장성을 교환합니다. 낙관적(Optimistic) 롤업이라는 이름은 솔루션이 작동하는 방식에서 유래했습니다. '낙관적'은 애그리게이.. TIL) 니모닉 생성과정, eth-lightwallet 모듈로 지갑생성 실습 본 컨텐츠는 유튜버 리플리님과 코드스테이츠의 강의를 바탕으로 작성하였습니다. 니모닉(Mnemonic)이란? 니모닉이란, 지갑을 생성할 때 같이 생성되는 복잡한 난수형태의 '시드'를 기억하기 쉬운 12개의 단어로 만들어주는 코드(알고리즘)이다. 암호화폐 지갑을 생성하고 복구하는 데 주로 니모닉으로 생성된 시드문구가 사용된다. 니모닉 과정 1. 128bit or 256bit 길이의 난수 생성 2. 생성된 난수를 SHA-256 알고리즘으로 해시화 - 해시값에서 (시드 키의 길이) / 32 만큼 떼어네서 체크섬으로 저장 3. 해시값을 바이너리 코드로 변환하고 맨 뒤에 체크섬 붙이기 4. 바이너리 코드를 11bit로 나눔 5. 각각의 11bit 묶음을 10진수로 변환 6. 10진수의 숫자를 니모닉 사전에서 인덱싱.. 이전 1 2 3 4 5 다음