블럭체인 2022. 1. 26. 15:41
반응형

초기에 생각보다 개념 정리가 힘들었서, 어느 노트에 정리할려고 모았던 자료를 기반으로 내용을 정리하였습니다.

(* 혹시 비슷한 글이 보인다면, 넓은 마음으로 이해 부탁드립니다.)

 

1. 채굴(mining)이란?

- 블럭체인(Blockchain)의 핵심인 노드(node)를 생성하는데 기여하고, 그 보상으로 암호화폐(예: 비트코인, 이더리음등)을 얻는 것을 의미함. 

- 노드(node)의 역활은 거래내역을 담고 있고, 이거래 내역은 신뢰성을 담보함. (*노드 역할/상태에 따라 다양한 종류 있음)

- 기술적인 분류: POW(작업증명), POS(지분증명), DPOS(위임지분증명)

 

2. 채굴 방법

1) CPU: POW

- 현재는 채산성이 거의 없음

2) GPU: POW

- 그래픽 카드의 가격이 이슈임

3) ASIC: POW

- ASIC 정의: 특정한 목적을위해 설계된 주문형 반도체 의미

- 코인 채굴을 위해서 설계된 장비를 의미

- 다양한 종류의 ASIC장비가 생산되나, 한국에서는 구하기 어려움

- 예: 비트코인, 라이트코인, 제트 캐시, 시아 코인, 도지 코인, 카데나 등

4) Hard-disk: POW

- IPFS 기반
- 많은 하드디스크와 노동력 필요
- 비추

5) Staking: POS

- 채굴(mining)이라고 말할수 있는지 모르겠음. 하지만, 코인을 얻게 된다는 부분은 같기 때문에 정리함

- 의미: ‘스테이킹’은 보유한 코인을 일정기간 묶어두는(락업) 대신, 이자로 신규 코인을 받는 채굴 방식으로 가상자산 직접 투자보다 리스크가 적으면서 시중금리보다 높은 이자를 받을 수 있어 인기가 높다
출처 : 소비자가 만드는 신문(http://www.consumernews.co.kr)

- 자신의 코인을 락업하고 특정한 간격마다 블록을 생성하기 위해 프로토콜(POS)에 의해 임의로 선택되는 검증자가 포함될때, 더 많은 수량을 스테이킹한 참여자가 다음 블록 검증자로 선택될 확률이 더 높다.(자본주의 프로토콜)

- 스테이킹은 ASIC등과 같이 특화된 마이닝 하드웨어에 의존하지 않고 블록을 생성할 수 있음
    그래서, ASIC 마이닝에는 하드웨어와 같은 상당한 투자가 필요하지만,
         스테이킹은 암호화폐에 직접 투자를 하게 된다. 
              이 투자를 바탕으로 연산 작업을 통해 다음 블록을 위해 경쟁하는 대신
                       자신이 스테이킹한 코인의 수에 따라 지분 증명 검증자가 선택됩니다.

- 돈을 맞기고, 이자를 방식이라고 보면됨(예금과 비슷)

- 종류: 에이다, 폴카닷, 이더리움, 이오스, 테조스, 바이낸스 코인, 트론 등

반응형
posted by choiwonwoo
:
MINERVA/ETC 2022. 1. 16. 08:25
반응형

NTFS형식 외장형 하드를 Mac계열 PC에서 사용할때 가끔 발생합니다.

원은은 정상적으로 외장형으로 unmount하지 않아서 발생한다고 하는데..원인은 추가적으로 더 있는것으로 보입니다.

 

 

이 에러가 발생하면 제가 알고 있기로는 Mac PC에서는 해결을 할수 없습니다.

윈도우 PC에서 아래와 같이 작업을 작업을 진행하시면 됩니다.

 

>chkdsk /F [외장하드 드라이므];

 

반응형
posted by choiwonwoo
:
MINERVA/ETC 2022. 1. 1. 21:01
반응형

10년전에는 Java와 Python과 같은 인터프리터(interpreter)언어에 대한 속도 문제(?)에 대해서 이슈가 되었지만, 최근에는 이러한 내용이 크게 이슈(^^)가 되지 않고 있습니다. 그 이유는 여러가지가 있지만, 개인적으로 하드웨어의 성능과 개발에 대한 Quality를 평가하는 부분이 많이 바뀌었기 때문입니다. 

 

그래도 아래의 영상은 한번씩은 한번씩 보는 것이 좋을 듯합니다.

 

https://www.youtube.com/watch?v=3PcIJKd1PKU 

 

반응형
posted by choiwonwoo
:
블럭체인 2021. 12. 19. 06:13
반응형

몇몇 분들이 Bitcoin 빌드시에 윈도우 상에서 qt 라이브러리도 포함해서 빌드시 에러에 대해서 문의 하신 분이 있어 제가 작업했던 부분을 공유 드리고자 합니다.

 

[작업내용]

Windows상의 Bitcoin 소스를 빌드하고자 할때, qt 라이브러리는 "static"이어야 합니다.

그래서, https://choiwonwoo.tistory.com/category/MINERVA/C_CPP에 나와 있는 방법으로 qt를 설치하여 사용하면 않됩니다. 그 이유는 "dynamic"이기 때문입니다.

 

[static qt library]

https://bitcoin.forum/t/building-bitcoin-core-with-visual-studio/39

 

Building Bitcoin Core with Visual Studio

Introduction Solution and project files to build the Bitcoin Core applications msbuild or Visual Studio can be found in the build_msvc directory. The build has been tested with Visual Studio 2019 (building with earlier versions of Visual Studio should not

bitcoin.forum

위의 페이지에서 QT에 관련된 부분은 아래와 같습니다. 

'here'로 된 부분을 선택하면,

아래와 같이 직접 qt 라이브러리를 직접 build하여 static library를 얻는 방법에 대해서 설명하고 있습니다.

https://github.com/sipsorcery/qt_win_binary

 

GitHub - sipsorcery/qt_win_binary: This repository contains static builds of Qt for Windows that are compatible with Bitcoin Cor

This repository contains static builds of Qt for Windows that are compatible with Bitcoin Core. - GitHub - sipsorcery/qt_win_binary: This repository contains static builds of Qt for Windows that ar...

github.com

위 방법을 통해서 얻게된 static qt library를 bitcoin build시에 설정해서 하시면 됩니다.

 

감사합니다.

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 12. 19. 05:59
반응형

1. qt 설치

몇년전만 해도 qt 라이브러리는 용량도 어마어마하게 크고, 소스를 통해서 빌드할때 많은 시간을 들여야 했습니다.

하지만 이제는 라이브러리를 개발하면서, 배포부분도 많은 배려를 해주고 있어 쉽게 됩니다.

(* 하지만 여전히 소스 빌드를 필요로 하는 부분도 있습니다.)

 

1) 적절한 설치 파일 선택

1) https://download.qt.io/official_releases/

 

Index of /official_releases

 

download.qt.io

위 디렉토리에서 online_installers를 선택후,  윈도우 설치 파일을 다운로드

2) 설치 시작

 

참고:

https://download.qt.io/official_releases/online_installers/

https://doc.qt.io/qt-5/windows.html

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 11. 26. 11:27
반응형

vcpkg에 대한 사용 예제를 메시지로 부탁하신 분이 있어서 정리를 하여 보았습니다

 

1) boost  다운로드

- 64 bit dynamic: vcpkg install boost:x64-windows 

- 64 bit static: vcpkg install boost:x64-windows-static

1.설치

2) boost 확인

- vcpkg list

2.설치 확인

3) boost를 visual studio에 연결(?)

3.연결

위에 설명이 된대로, boost라이브러리를 사용시, 별도의 include와 libraray path설정없이 이제 바로 사용가능함

 

4) boost를 활용한 예제

- 쓰레드를 생성하는 예제

#include <iostream>
#include <typeinfo>
#include <thread>
#include <boost/thread.hpp>

using namespace std;

void myTest() {
    
    thread::id t_id = this_thread::get_id();
    cout << "thread called: " << typeid(t_id).name() <<' '<< sizeof(t_id) << 'T:' << t_id << endl;
}

int main()
{
    //-- 
    cout << "thread calling" << endl;

    //-- 쓰레드 생성: 4개 T1~T4
    boost::thread workerThread1(myTest);
    boost::thread workerThread2(myTest);
    boost::thread workerThread3(myTest);
    boost::thread workerThread4(myTest);

    //-- 각 쓰레드 작업 완료 대기
    workerThread1.join();
    workerThread2.join();
    workerThread3.join();
    workerThread4.join();
    
    cout << "thread done" << endl;
}

 

실행디렉토리

- 개발 작업을 할때, 별도의 라이브러리와 관련된 작업을 할필요가 없다.(include, library path...)

그리고, 제일 좋은 점은 개발에 사용된 라이브리를 자동으로 실행파일 위치에 복사여준다는 부분이 최고로 편함.

(이제는, XCOPY ...어쩌구 하는 작업을 하지 않아도 된다. 만세!!!)

 

감사합니다.

 

반응형
posted by choiwonwoo
:
블럭체인 2021. 11. 23. 12:22
반응형

작년부터 작업했던 비트코인 소스에 대한 분석 작업을 정리하여 올리고자 합니다.

서비스 구성에 대한 부분은 리눅스로 구축을 하였지만, 소스에 대한 분석 리눅스 환경보다는 개인적으로 Visual studio에서 하는것이 역시 생산성이 높은 듯하다.

 

첫번째 작업은 역시 소스의 다운로드와 컴파일이다.

 

1) git clone https://github.com/bitcoin/bitcoin.git

 

GitHub - bitcoin/bitcoin: Bitcoin Core integration/staging tree

Bitcoin Core integration/staging tree. Contribute to bitcoin/bitcoin development by creating an account on GitHub.

github.com

 

2) https://bitcoin.forum/t/building-bitcoin-core-with-visual-studio/39

빌드 과정

추가적으로 vcpkg와 qt를 버젼에 맞게 구성해놓으면 아래와 같이 정상적으로 빌드가 됩니다.

디버그 버젼: bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Platform=x64 /p:Configuration=Debug /t:build

 

빌드화면
실행파일

[중요바이너리 설명]

1. Bitcoin Core Wallet - Located at \local\bitcoin-qt.exe. Bitcoin Core Wallet is a combination of full Bitcoin peer and wallet frontend.

2. Bitcoin Core Daemon - Located at \local\bitcoind.exe. Bitcoin Core Daemon is the Bitcoin peer, which you can interact with through RPCs to port 8332 (or 18332 for testnet).

3. Bitcoin CLI (Command Line Interface) - Located at \local\bitcoin-cli.exe. Bitcoin CLI allows you to send RPC commands to Bitcoin Daemon (bitcoind).

4. Bitcoin Transaction - Located at \local\bitcoin-tx.exe. Bitcoin Transaction allows you to create and update Bitcoin transactions.

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 11. 19. 23:32
반응형

개발 PC를 새로 장만 후, 작업 프로젝트의 소스를 다시 빌드시 아래와 같은 에러가 발생하여 잠시 당황하였다가 기억을 더듬어 다음과 같이 처리하였습니다.

 

[에러화면]

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\sphelper.h(51): fatal error C1083: 포함 파일을 열 수 없습니다. 'atlbase.h': No such file or directory

 

[해결]

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 11. 19. 21:44
반응형

아래의 값은 컴파일러에 의해서 세팅되는 메모리 값입니다.

(*가급적 모든 변수/메모리는 반드시 초기화하는 습관을 가지는것이 제일 듯합니다.)

 

- 64 bits
[초기화 되지 않은 지역변수]
0xCCCCCCCCCCCCCCCC
[초기화 되지 않은 Heap 메모리]
0xCDCDCDCDCDCDCDCD
[Free된 Heap 메모리]
0xDDDDDDDDDDDDDDDD or  0xFEEEFEEEFEEEFEEE
[할당된 Heap 메모리를 벗어난 공간]
0xFDFDFDFDFDFDFDFD

- 32 bits
[초기화 되지 않은 지역변수]
0xCCCCCCCC
[초기화 되지 않은 Heap 메모리]
0xCDCDCDCD
[Free된 Heap 메모리]
0xDDDDDDDD or  0xFEEEFEEE
[할당된 Heap 메모리를 벗어난 공간]
0xFDFDFDFD

 

추가 도움 내용:

 

4. 메모리 값을 보고 현재 메모리 상태를 알아보자.

WFC Technical Note 006 - Funny Memory Values Introduction Microsoft has put quite a lot of memory leak detection helpers in Windows NT. They have not done a good job of advertising it. This document..

choiwonwoo.tistory.com

 

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 11. 19. 11:45
반응형

오픈소스 라이브러를 사용하다가, 아래의 에러를 접하는 경우가 있습니다.

 

[에러메시지]

LINK : fatal error C1905: 프런트 엔드와 백 엔드가 호환되지 않습니다. 같은 프로세서를 대상으로 해야 합니다.
LINK : fatal error LNK1257: 코드를 생성하지 못했습니다.
LINK : fatal error LNK1327: link.exe을(를) 실행하는 동안 오류가 발생했습니다.

에러화면

이런 경우는 빌드환경과 빌드 아키텍쳐가 호환되지 않을때 발생합니다.

예: 64 bits 빌드를 진행하고 있는데, 32 bits 라이브러리를 사용하는 경우

 

이런 경우는 해당 라이브리의 버젼을 확인해봐야 합니다.

--> Visual studio에 포함된 dumpbin 사용하면 됩니다.

https://blogs.technet.microsoft.com/windowshpc/2009/03/26/how-to-tell-if-a-exe-file-is-a-32-bit-or-64-bit-application-using-dumpbin/

[사용예]

 

 

 

 

반응형
posted by choiwonwoo
: