본문 바로가기

전체 글271

[Bitcoin] 채굴과 합의 채굴채굴은 새로운 비트코인이 통화 공급량에 추가되는 과정이다. 또한 채굴을 통해 사기거래나 이중지불 문제로부터 비트코인을 보호한다. 채굴자들은 비트코인 네트워크에 처리 능력을 제공하고 그에 대한 대가로 비트코인을 받는다. 채굴자들은 새로운 거래들을 승인한 후 전 세계에 존재하는 장부에 승인된 거래들을 기록한다. 새 블록에는 지난 블록 이후에 발생한 거래들이 들어 있으며 10분마다 채굴되어 블록체인에 추가된다. 블록의 일부가 되어 블록체인에 추가된 거래는 '승인' 되었다고 간주되며, 승인된 거래를 전송받은 새로운 소유주는 해당 비트코인을 소비할 수 있게 된다. 채굴자들은 채굴 작업에 대해 2가지 종류의 보상을 받는다. 하나는 새 블록 각각에서 새로운 코인을 생성하는 것이고, 나머지 하나는 해당 블록 내에.. 2025. 4. 30.
[Bitcoin] 블록체인 블록체인블록체인 데이터 구조는 거래가 담겨있는 블록이 그 이전 블록과 연결되어 있는 형태의 정돈된 목록이다. 블록체인 내에 있는 블록 각각은 해시를 이용해서 식별된다. 해시는 블록의 헤더에서 SHA256 해시 알고리즘을 이용해서 생성된다. 각 블록은 블록헤더에 있는 '이전 블록 해시' 필드를 통해 이전 블록(부모 블록)을 참조한다. 블록은 단 1개의 부모 블록을 가지지만 일시적으로 여러 개의 자식 블록을 보유할 수 있다. 여러 개의 자식 블록은 블록체인 분기가 발생하는 동안 생성된다. 블록체인 분기란 다른 채굴자들에 의해 거의 동시로 다른 블록들이 발견되는 경우 발생하는 일시적 상황이다. 결국 단 하나의 자식 블록만이 블록체인의 일부가 되며 블록체인 '분기' 현상은 해결된다. '이전 블록 해시' 필드는 .. 2025. 4. 29.
[Bitcoin] 거래 스크립트 2 P2PK(Pay to Public Key)P2PK는 P2PKH보다 더 단순한 비트코인 지불 방식이다. P2PK는 공개키가 잠금 스크립트 내에 자체적으로 저장되어 길이가 훨씬 짧아지게 된다. P2PK의 잠금 스크립트는 다음과 같다. OP_CHECKSIG 위와 같은 출력값을 해제하기 위해 필요한 해제 스크립트는 아래와 같이 단순한 서명의 형태다. 해당 거래의 복합 스크립트는 다음과 같다. 이 스크립트는 CHECKSIG라는 단순한 호출 연산자로, 서명이 정확한 키에 속해 있는 지를 입증한 후 스택으로 TRUE 결과값을 돌려보낸다. OP_CHECKSIG 다중서명다중서명은 N개의 공개키가 스크립트 내에 기록되어 있고, 예상지출 상태를 풀기 위해서는 이 중 적어도 M개 이상의 개인키가 서명을 제공해야 한다는.. 2025. 4. 28.
[Bitcoin] 거래 스크립트 1 거래 스크립트와 스크립트 언어비트코인 클라이언트는 스크립트를 실행해서 거래를 유효화한다. UTXO에 위치한 잠금 스크립트와 해제 스크립트는 스크립트 언어로 작성된다. 대부분의 거래는 'A가 B에게 지불'하는 형식으로 진행되며 P2PKH 스크립트와 동일한 스크립트를 기반으로 한다. 스크립트 구성(잠금과 해제)잠금 스크립트는 출력값에 위치한다. 출력값을 소비하기 위해 충족되어야 하는 요건을 명시하고 있다. 잠금 스크립트에는 보통 공개키 혹은 비트코인 주소가 담겨 있기 때문에 스크립트 펍키(scriptPubKey)라고 부르기도 한다. 대부분의 어플리케이션에서는 잠금 스크립트를 scriptPubKey로 표현한다. 해제 스크립트는 잠금 스크립트가 출력값에 놓아둔 조건을 해결하여 출력값이 소비될 수 있도록 하는.. 2025. 4. 27.
[Bitcoin] 거래 거래 구조거래는 입력값이라고 불리는 자금원에서부터 출력값으로 불리는 목적지까지의 가치의 전송을 인코딩하는 데이터 구조다. 4바이트: 버전1~9바이트: 입력값 개수가변적: 입력값1~9바이트: 출력값 개수가변적: 출력값4바이트: 잠금시간 거래 출력값과 입력값 비트코인 거래로 구성되어 있는 블록을 구성하는 기본 요소는 '소비되지 않은 거래 출력값(UTXO)'이다. UTXO는 특정 소유주에 의해 암호로 잠겨있고, 블록체인 상에 기록되어 있다. 비트코인 네트워크는 수백만 개에 달하는 UTXO중에서 이용 가능한 UTXO를 전부 추적한다. 따라서 수백 개의 거래와 수백 개의 블록들 중에서 사용자의 비트코인은 UTXO의 형태로 산재해 있을 수 있다. 비트코인 주소 혹은 계좌에 보관된 잔액은 있을 수 없다. 특정 소.. 2025. 4. 23.
[Bitcoin] Descriptor Descriptor는 월렛간 'import' 'export' 처리를 위한 형태를 제공한다. 백업과 derivationPath를 통한 주소를 생성하는 목적으로도 사용한다고 한다. function([derivationPath]key)checksum 형태로 되어있다. Descriptor에 들어갈 수 있는 정보는 Script, Key, MultiSig 정보가 있다. 개인적으로 다중서명지갑에서 주소가 결정된 형태로 들어가는 형태만 알고 있었는데, derivationPath로 파생되는 자식을 범위로 묶을 수 있다는 것이 신기했다. 다중서명지갑 1 of 2, 고정된 키를 사용하는 경우multi(1,022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240ef.. 2025. 4. 22.
[Bitcoin] 지갑 2 확장키키 유도 함수는 세 가지 입력값(키, 체인코드, 색인번호)을 기반으로 자식키를 생성한다. 중요한 요소는 키와 체인코드이고, 이 둘을 결합한 것은 확장키라고 부른다. 확장키는 256비트 크기의 키와 256비트 크기의 체인코드를 512비트 크기의 열로 연결하여 단순하게 표현된다. 확장키에는 2가지 형태가 있다. 확장 개인키는 개인키와 체인코드의 결합으로, 자식 개인키(혹은 자식 공개키)를 얻는데 사용할 수 있다. 확장 공개키는 공개키와 체인코드의 결합으로 자식 공개키를 생성하는 데 사용될 수 있다. HD지갑의 트리구조에서 확장키를 브랜치의 근원으로 간주해보면, 브랜치의 근원을 가지고 해당 브랜치의 나머지를 구할 수 있다. 확장 개인키만 있으면 브랜치의 나머지 부분을 완성할 수 있는 반면, 확장 공개키.. 2025. 4. 21.
[Bitcoin] 지갑 1 지갑지갑은 개인키를 담는 곳으로 대게 구조화된 파일이나 데이터베이스 형태로 구현되어 있다. 결정적 키 생성법을 이용하여 이전 개인키로부터 새로운 개인키를 각각 생성하며, 개인키들을 차례대로 연결할 수 있다. 이러한 배열을 계속 만들어 내는 최초의 키(Seed)만 있으면 배열상의 모든 개인키를 생성해 낼 수 있다. 사용자들은 개인키를 이용하여 거래에 서명하여 거래출력값(비트코인)을 가지고 있음을 증명한다. 비결정적 지갑단순히 무작위로 생성된 개인키를 모아놓은 것이다. 유형-0 비결정적 지갑이라고 부른다. 무작위로 선택한 개인키 100개를 미리 생성한 후 필요한 만큼 추가로 생성하기 때문에 각 키들은 단 한번만 사용된다. 키가 생성된 후에는 복사본을 보관해야 하므로 자주 데이터를 백업해야 한다. 관리가 복.. 2025. 4. 20.
[Bitcoin] 개인키와 공개키 공개키의 암호법과 암호화폐비트코인은 사용하는 공개키 암호법으로 '타원곡선 곱셈 함수'를 기본 토대로 삼고 있다. 한 쌍의 키는 개인키와 개인키에서 파생된 공개키로 구성되어 있다. 공개키는 비트코인을 전송받을 때 사용되며, 개인키는 전송받은 비트코인을 소비할 때 사용된다(트랜잭션 서명) 대부분의 지갑에서는 개인키와 공개키를 함께 저장하지만, 공개키는 개인키를 통해 계산할 수 있으므로 개인키만 저장하는 것도 가능하다. 개인키와 공개키비트코인 지갑에는 쌍으로 구성된 키가 여러 개 들어있고, 각각의 쌍은 개인키와 공개키로 구성되어 있다. 개인키(k)는 숫자로 구성되어 있으며, 타원곡선 함수를 이용하여 공개키(K)를 구하는 것이 가능하다. 개인키개인키는 무작위로 추출한 단순한 숫자로 구성되어 있다. 개인키에.. 2025. 4. 19.
[디벨로퍼] 채용 사이트 프로젝트 17 이력서 정보에 사용하는 활동, 학력, 외국어, 링크에 대한 데이터를 구조화했다. id값은 일단 랜덤으로 주고 해당 id로 json 요소를 찾아와서 수정하는 식이다. 각 뷰마다 list를 들고 있기도 하는데, 자식 뷰에 해당하는 부분도 id값을 주고 수정하고 삭제하는 식으로 구성된다. 데이터를 뭉탱이로 처리하다보니 약간 버벅거리는 것 같은 느낌이... (현업에서는 더 효율적으로 사용할 듯 싶다)  최신 채용 트렌드 페이지를 작업했다. 헤더 부분, 그래프, 직군별 스킬, 커리어 인사이트, 회사뷰, scrollToView, scrollToTop 처리 등등 경력 리포트는 작업하고 있다. 2025. 3. 30.
[디벨로퍼] 채용 사이트 프로젝트 16 3.19포인트 사용 페이지를 작업했다. 슬라이드 부분은 embla 라이브러리를 가져다가 썼는데, 알고보니까 다른 슬라이드 부분도 다 이 라이브러리를 쓰는 것 같다. 이전에는 carousel 단어를 잘 몰라서 그냥 react-scroll 이런 식으로 검색해서 하나 가져다가 썼었다. 이전 부분을 다시 작업해야 하나 많이 고민되긴 한다... 근데 아마 귀찮아서 그냥 둘 것 같다. 만드는 과정에서 의미가 있는 것이지 100% 똑같이 만들 생각은 없으니까 ㅋㅋ  계속 작업하면서 느끼는 것이 웹 사이트가 어떤 식으로 만들어지는지 전혀 알지 못했는데, 이제서야 조금씩 감이 잡힌다는 느낌이 든다. 하나의 웹사이트에도 기능이 정말 많다는 것을 느끼고 있다. 물론 간단하게 랜딩페이지 정도만 만들고 끝내는 경우도 많지만, .. 2025. 3. 21.
[디벨로퍼] 채용 사이트 프로젝트 15 [포인트 페이지]feat: 공통 레이아웃 추가(좌측 네비게이션)feat: 페이지 추가(포인트 적립, 내역)feat: 다이얼로그 추가(포인트 미션 가이드, 포인트 정책) ---- 포인트쪽 페이지를 작업하고 있다. 이제 더보기 항목에 나온 페이지 쪽이랑... 검색 페이지 쪽을 해주면 프론트단은 어느 정도 끝나지 않을까 싶긴 하다. 클론코딩 방식으로 그냥... 던져지는 기획/디자인을 그대로 따라 만들고 있다. 완전 실무 스타일로 개발중...  내 입장에서 웹 사이트가 이렇게 공수가 많은지 몰랐는데... 양에 질리는 것 같은 느낌이... 아무튼 지금 시점에서는 FE 개발을 많이 해보면 도움이 된다고 생각하고 있다. 하나씩 개발해보자... 2025. 3. 18.
[디벨로퍼] 채용 사이트 프로젝트 14 [프로필 페이지]feat: 공통 레이아웃 작업(좌측 컨트롤러) feat: 다이얼로그 추가(네트워크 연결, 이름 변경, 휴대폰 번호 변경, 비밀번호 변경, 회원 탈퇴)feat: 페이지 추가(추천 네트워크 설정,  알림 설정, 계정 관리) ---- 작업을 하면서 내가 CSS에 많이 약하다는 생각이 들었다. 주로 차크라UI에서 래핑해놓은 컴포넌트를 가져가다 쓰다보니, CSS적 사고 방식이 낯선 것 같다. 보통 다른 프레임워크에서는 속성이 안 먹으면 공식문서에서 찾아보다가 문제가 해결되는 식이다. 근데 차크라UI 쪽에서 커스텀이 안 되는 부분은 CSS를 건드려야 하는데, 계속 그쪽 공식문서만 보고 있으니까 일이 진척이 안 된다... 생각보다 CSS쪽이 FE개발의 복병인 것 같다.  UI개발 분야의 속도는 결국 .. 2025. 3. 17.
[디벨로퍼] 채용 사이트 프로젝트 13 feat: 검색 다이얼로그 추가  feat: 커뮤니티 커피챗 뷰 추가(우측) feat: 나의 게시글 페이지 추가 change: 헤더 버튼 라우팅 처리change: 마이페이지 라우팅 처리change: 커뮤니티, 마이페이지 반응형 UI처리change: 내 활동 페이지 뷰 추가(받은 제안 및 설정, 기본 이력서, 마이 포인트) 프론트엔드 개발에서 가장 어려운 부분은 '반응형UI'라고 생각한다. 단순 UI개발은 배치만 슥슥해도 작업이 되는데, 반응형UI 개념이 낯설어서 시간이 한참 걸리는 것 같다. 앱 개발에서는 '휴대폰' '테블릿' 정도로만 화면을 나누고, 그 마저도 처리를 안 하는 경우가 많다. 근데 웹에서는 반응형UI가 기본..이라 PC용, 모바일용... 사이즈별 대응에 굉장히 민감하다고 느꼈다.  솔직히.. 2025. 3. 16.
[디벨로퍼] 채용 사이트 프로젝트 12 마이페이지쪽 프로필을 작업했고 내 활동 페이지는 개발중에 있다. 개발을 하다보면 뭔가 질리는 느낌이 들 때가 있는데, 좀 쉬다가 다시 하면 재밌는 것 같다. 하나씩 꾸준히 작업해보자. 역시 개발은 꽤나 재밌는 것 같다. 한동안 안 하다가 해서 그런가...? FE개발도 점점 할만한 느낌이 드는 것 같다. 2025. 3. 16.
[디벨로퍼] 채용 사이트 프로젝트 11 [작업 내용]1. 다이얼로그 추가(글 작성, 글 작성 중단, 팔로워, 추천)2. 포스트 상세페이지 추가 3. 프로필 페이지 추가(프로필/게시글 탭) 이전에 개발했던 내용 정리해서 올림. 2025. 3. 15.
Flutter 상태관리 방식에 대한 생각 아까 1시간 정도 Flutter 관련 문서를 읽었다. 문서에서 무슨 이야기를 하고 있는지 확실히 잘 읽힌다는 느낌이 들더라. https://api.flutter.dev/flutter/widgets/State/setState.htmlhttps://themobilecoder.com/flutter-setstate-the-simplest-state-management-in-flutter/https://api.flutter.dev/flutter/widgets/ValueListenableBuilder-class.html When setState() is called on a State object, all descendent widgets rebuild. Therefore, localize the setState(.. 2025. 3. 15.
[디벨로퍼] 채용 사이트 프로젝트 10 [연봉 페이지]feat: 연봉 그래프 툴팁 추가 feat: 연봉 그래프 우측 예상 연봉 정보 추가 feat: 채용 정보 추가(적극 채용중인 회사, 연봉 업그레이드 포지션)feat: 반응형 UI작업  feat: 커뮤니티 rootLayout 추가(좌측 부분) feat: 소셜 페이지 추가(작업중)  ---- FE개발에서 가장 어려운 부분(?) 중에 하나는 반응형UI인 것 같다. 앱 개발 내에서 상태처리에 따른 View 보여주기와 크게 다르진 않지만, 뭔가 더 복잡한 느낌이 있다. 원티드 페이지를 따라 만들다보니, 뷰를 배치하는 능력도 점점 생기고 있다는 것이 느껴진다(Flutter에서 배치하는 것과 비슷하면서도 다름)  원티드 내부적으로 포인트 부분, 커뮤니티 부분 등이 있는데 백엔드 쪽을 어떤 식으로 작업할.. 2025. 3. 12.
[디벨로퍼] 채용 사이트 프로젝트 9 feat: 상단 메뉴 - 더보기 메뉴 추가feat: 연봉 정보 페이지(작업중)  ----  1. Flutter로 개발을 할 때 width, height 값을 안 줘서 속성이 안 먹을 때가 있다. React개발을 할 때도 마찬가지인 듯 싶다. 이럴 때는 처리하는 뷰에 Background 값을 주고 잡힌 사이즈를 보면서 width/height값을 조정해야 한다. 부모 태그를 변경하면 될 때도 있다.  2. 오브젝트를 가운데로 가도록 만드는 방법(flex 내부 양 옆에 Spacer 넣어주기)물론 이거 말고도 align-items로 동작할 때도 많다. 해도해도 안 먹을 때 사용해보자.  연봉 페이지 작업하고 포인트 화면을 작업할 예정이다. 2025. 3. 10.
[디벨로퍼] 채용 사이트 프로젝트 8 [회사 정보 페이지]feat: 우측 팔로우 버튼 반응형 처리feat: 다이얼로그 추가(올해 입사자 평균연봉, 평균 근속연수)  feat: 데이터소스 페이지 추가 feat: 헤더 추가 메뉴 부분(작업중) align-content determines the spacing between linesalign-items determines how the items as a whole are aligned within the container. 1. Row 내에서 아이템을 가운데에 배치할 때는 align-items, 수직적으로 아이템을 가운데 배치할 때는 align-content를 사용하면 된다. 2. JSON 정보를 바탕으로 컴포넌트를 출력해야 할 때, Object.entries 함수를 사용하면 된다. json의.. 2025. 3. 9.