Email #41 - #60

Email-41

Date: Sat, 24 Oct 2009 00:55:06 +0100
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: [bitcoin-list] Does Bitcoin Crash in Windows?
To: Liberty Standard <newlibertystandard@gmail.com>
Cc: bitcoin-list@lists.sourceforge.net

Liberty Standard가 썼습니다:

Windows 사용자분들, 가끔 Bitcoin이 충돌하는 경험이 있으신가요? 최근에 wine-1.0.1에서 실행되는 Bitcoin이 자주 충돌합니다. 이게 Wine 문제인지, 아니면 Bitcoin 문제인지 궁금해서요.

저는 v0.1.5에서 충돌에 대한 보고를 받은 적이 없습니다. Windows에서는 아주 안정적으로 작동했습니다. Wine 관련 문제일 것 같습니다. Wine에서 다시 충돌이 발생하고 터미널에 무언가 출력된다면, 저에게 이메일을 보내주세요. 발생한 일을 파악할 수 있을지도 모르겠네요, 우회할 수 있는 무언가가 있을 수도 있으니까요. Martti와 저는 곧 출시할 새 버전 작업에 매진하고 있습니다. Wine 수정 사항이 있다면 포함하고 싶네요.

Bitcoin을 시작할 때 터미널에서 다음 네 줄이 출력됩니다. fixme:toolhelp:CreateToolhelp32Snapshot 구현되지 않음: 힙 리스트 스냅샷 fixme:toolhelp:Heap32ListFirst : 스텁 fixme:toolhelp:CreateToolhelp32Snapshot 구현되지 않음: 힙 리스트 스냅샷 fixme:toolhelp:Heap32ListFirst : 스텁

그것들은 걱정할 것 같지 않습니다. Wine에서 구현되지 않은 함수들이 무해하게 스텁 처리된 것일 수 있습니다.

이전에는 Bitcoin을 터미널에서 시작하지 않아서 충돌할 때 무엇이 출력되는지 모르겠지만, 다음에 충돌이 발생하면 결과를 답변으로 보내겠습니다.

Bitcoin이 처음으로 완료된 블록들을 다운로드할 때, debug.log 파일이 17.4 MB까지 커지다가 그 이상 커지지 않습니다. 더 많은 bitcoins이 완료됨에 따라 계속 커질 것으로 생각합니다.

디스크 공간을 차지하고 싶지 않다면 debug.log를 가끔 삭제해도 됩니다. 그것은 디버깅에 도움이 되는 상태 메시지들일 뿐입니다.

bitcoin.sourceforge.net는 지금 잘 보입니다. 아마 sourceforge가 어떤 유지보수를 하고 있었나 봅니다.

Satoshi


Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference


bitcoin-list 메일링 리스트 bitcoin-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bitcoin-list

Email-42

Date: Mon, 26 Oct 2009 17:50:10 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Fw: bitcoin.sourceforge.net
To: Martti Malmi <mmalmi@cc.hut.fi>

이 문제에 대해 어떤 상황이 벌어지고 있는지 궁금하시군요. 매번 확인할 때마다 사이트는 문제가 없어 보인다고 하셨습니다.

Eugen Leitl이 썼습니다: 2019년 10월 24일 금요일, Satoshi Nakamoto가 쓴 글:

bitcoin.sourceforge.net는 지금 잘 보입니다. 아마 sourceforge가 어떤 유지보수를 하고 있었나 봅니다.

지금은 작동하지 않습니다.

어떤 유지보수를 하고 있었나 봅니다.

Liberty Standard가 썼습니다:

혹시 모르셨을 수도 있어서 말씀드립니다만, Bitcoin 웹사이트가 다운되었습니다.

http://bitcoin.sourceforge.net/


bitweaver를 테스트 모드로 실행 중입니다.

* 이게 애플리케이션 오류로 보인다면, 여기를 클릭하여 버그를 로그하세요.
* 설치 과정을 아직 시작하지 않았다면, 여기로 가서 설치 과정을 시작하세요.
* 이 메시지를 숨기려면, kernel/config_inc.php 파일에서 IS_LIVE 상수를 TRUE로 설정하세요.

이 메일들로부터, 사이트가 때때로 접근 불가능한 상태에 있음을 알 수 있습니다. 이는 여러 요인에 의해 발생할 수 있는데, 유지보수 작업, 서버 문제, 또는 설정 오류 등이 포함됩니다. Satoshi Nakamoto의 의견처럼, SourceForge가 유지보수를 진행하고 있었을 가능성이 있습니다. 또한, Liberty Standard와 Eugen Leitl의 메시지는 사이트 접근 문제가 지속적으로 발생하고 있음을 시사합니다.

사이트가 정상적으로 보일 때와 접근할 수 없을 때의 차이점을 파악하기 위해서는, 문제가 발생했을 때의 서버 로그, 사용자의 위치, 사용 중인 인터넷 서비스 제공업체(ISP), 그리고 접속 시도 시간 등 다양한 요소를 고려해야 할 수 있습니다. 문제의 원인을 좀 더 정확히 진단하기 위해서는 추가적인 정보가 필요할 것입니다.

Email-43

Date: Tue, 27 Oct 2009 05:02:49 +0200
From: mmalmi@cc.hut.fi
To: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Fw: bitcoin.sourceforge.net

알겠습니다. 번역본에 인용문을 명확히 표시해드리겠습니다.

IS_LIVE 옵션은 실제로 false로 설정되어 있었지만, 이는 사용자에게 오류 메시지를 보여주는 것에만 영향을 미칩니다. 사이트가 때때로 느려지며, 가끔은 로드하는 데 최대 30초까지 소요된다는 것을 알아차렸습니다. 이 문제는 Sourceforge 호스팅과 관련이 있을 것 같습니다. Bitweaver는 가장 가벼운 PHP CMS 중 하나여야 하지만, 문제가 있는지 확인해 볼 수 있습니다.

주제에서 벗어난 질문으로, Boost의 스레드 및 소켓 라이브러리를 Windows 특정 라이브러리 대신 사용할 수 있는지, 그리고 코드에서 사용되는 다른 Windows 전용 함수가 있는지 궁금합니다.

어떤 문제가 있는지 아시나요? 제가 볼 때마다 문제가 없어 보입니다.

Eugen Leitl이 썼습니다: 2009년 10월 24일 토요일, Satoshi Nakamoto가 쓴 글:

bitcoin.sourceforge.net는 지금 잘 보입니다. 아마 Sourceforge가 어떤 유지보수를 하고 있었나 봅니다.

지금은 작동하지 않네요.

어떤 유지보수를 하고 있었나 봅니다.

Liberty Standard가 썼습니다:

혹시 모르셨을 수도 있어서 말씀드립니다만, Bitcoin 웹사이트가 다운되었습니다.

http://bitcoin.sourceforge.net/


Bitweaver를 테스트 모드로 실행 중입니다.

* 이게 애플리케이션 오류로 보인다면, 여기를 클릭하여 버그를 로그하세요.
* 설치 과정을 아직 시작하지 않았다면, 여기로 가서 설치 과정을 시작하세요.
* 이 메시지를 숨기려면, kernel/config_inc.php 파일에서 IS_LIVE 상수를 TRUE로 설정하세요.

Email-44

Date: Tue, 27 Oct 2009 04:45:47 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Fw: bitcoin.sourceforge.net
To: mmalmi@cc.hut.fi

Sourceforge의 느린 속도가 문제라고 느끼시는 것 같네요. 많은 프로젝트들이 projectname.sourceforge.net 사이트를 가지고 있기 때문에, 그것이 공식 사이트라고 가정하는 것이 당연합니다.

Bitweaver에서 사용자가 자신의 메시지를 편집하거나 삭제할 수 있도록 하는 방법에 대해 궁금해하시는군요. Bitweaver는 매우 유연한 CMS로, 사용자 권한 관리 기능을 제공합니다. 사용자가 포럼 내에서 자신의 메시지를 편집하거나 삭제할 수 있도록 하려면, 관리자 인터페이스를 통해 해당 권한을 설정할 수 있습니다. 일반적으로 이러한 권한은 사용자 그룹 또는 역할에 따라 설정되며, 포럼 모듈 또는 플러그인의 설정 섹션에서 이를 조정할 수 있습니다.

Linux로 포팅하는 것에 대해 고민하고 계시네요. 한 번 결정하면 테스팅과 빌딩 작업량이 두 배로 증가하기 때문에 가볍게 결정할 사항은 아닙니다. Liberty의 Wine 충돌 문제에 대해서도 우려하고 계신 것 같습니다.

가능한 한 휴대성을 고려하여 표준 C 기능을 사용하고 Windows 호출 대신 다른 방법을 사용하려고 노력했다고 합니다. 스레딩은 표준 C 라이브러리의 일부인 _beginthread를 사용하고 있고, wxWidgets는 크로스 플랫폼 지원 기능을 제공하는 좋은 선택지입니다. 소켓 코드는 BSD에서 포팅한 Microsoft의 send/recv와 같은 것을 사용하고 있어, 직접 소켓을 제어하는 것이 중요합니다.

코드에 #ifdef을 사용하지 않으려고 하지만, 두 번 이상 사용되는 모든 것은 util.cpp에 함수로 변환되며, 그 안에 #ifdef이 포함되어 있다고 합니다.

현재 많은 미커밋 변경사항이 있는데, 이는 네트워크에 공개하기 전에 충분히 테스트해야 하는 중요한 프로토콜 전환을 포함하고 있기 때문입니다. 이제 곧 마무리될 것 같습니다.

설치 프로그램이 시작 폴더 아이콘을 제거하도록 만드는 것에 대해 문의하셨군요. 정규 프로그램 그룹에 아이콘을 설치하고 제거하는 것과 시작 폴더 아이콘은 단지 제거하는 것이 좋을 것 같습니다.

mmalmi@cc.hut.fi가 썼습니다:

IS_LIVE 옵션이 실제로 false로 설정되어 있었지만, 이는 사용자에게 오류 메시지의 가시성에만 영향을 미칩니다. 사이트가 때때로 느리며, 때로는 로드하는 데 최대 30초까지 걸립니다. 이는 Sourceforge 호스팅과 관련이 있을 것 같습니다. Bitweaver는 가장 가벼운 PHP CMS 중 하나여야 하지만, 문제가 있는지 확인해 볼 수 있습니다.

주제에서 벗어난 질문으로, Boost의 스레드 및 소켓 라이브러리를 Windows 특정 라이브러리 대신 사용할 수 있는지, 그리고 코드에서 사용되는 다른 Windows 전용 함수가 있는지 궁금합니다.

어떤 문제가 있는지 아시나요? 제가 볼 때마다 문제가 없어 보입니다.

Eugen Leitl이 썼습니다: 2009년 10월 24일 토요일, Satoshi Nakamoto가 쓴 글:

bitcoin.sourceforge.net는 지금 잘 보입니다. 아마 Sourceforge가 어떤 유지보수를 하고 있었나 봅니다.

지금은 작동하지 않네요.

어떤 유지보수를 하고 있었나 봅니다.

Liberty Standard가 썼습니다:

혹시 모르셨을 수도 있어서 말씀드립니다만, Bitcoin 웹사이트가 다운되었습니다.

http://bitcoin.sourceforge.net/

Bitweaver를 테스트 모드로 실행 중입니다.

* 이게 애플리케이션 오류로 보인다면, 여기를 클릭하여 버그를 로그하세요.
* 설치 과정을 아직 시작하지 않았다면, 여기로 가서 설치 과정을 시작하세요.
* 이 메시지를 숨기려면, kernel/config_inc.php 파일에서 IS_LIVE 상수를 TRUE로 설정하세요.

Email-45

Date: Wed, 28 Oct 2009 23:27:35 +0200
From: mmalmi@cc.hut.fi
To: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Fw: bitcoin.sourceforge.net

Sourceforge는 정말 느립니다. 하지만 다른 대안을 모르겠어요. 대부분의 프로젝트가 projectname.sourceforge.net 사이트를 갖고 있어서, Google 검색에서 whatever.sourceforge.net을 보면 그게 공식 사이트라고 가정합니다.

Bitweaver에서 사용자가 자신의 포럼 메시지를 편집하거나 삭제할 수 있는 방법이 있나요?

현재 버전의 Bitweaver에서는 불가능합니다. Bitweaver의 위키와 포럼 패키지는 그다지 고급 기능을 제공하지 않습니다. SF 호스팅에도 가끔 느린 속도와 이메일러 및 사용자 IP 검색 기능 부재와 같은 단점이 있습니다. 나중에 교환 서비스에 사용할 목적으로 prq.se(위키리크스와 해적만, 등이 호스팅되는 곳)에서 웹 호스팅을 구입하는 것을 고려 중입니다. 프로젝트 사이트도 거기에 호스트할 수 있을지도 모르겠습니다, 보안을 위해 별도의 사용자 계정으로 말이죠. 거기서는 Drupal이나 TikiWiki 같은 더 고급 기능을 갖추고 훨씬 더 크고 활동적인 개발자/사용자 커뮤니티를 가진 것을 설정할 수 있을 겁니다.

리눅스로 포팅하는 것에 대해 조급해하나요? 한 번 결정하면 테스팅과 빌딩 작업량이 두 배가 되므로 가볍게 결정할 사항이 아닙니다. 그래도 Liberty의 Wine 충돌 문제가 걱정되긴 합니다.

가능한 한 휴대성을 고려하여 표준 C 기능을 사용하려고 하고 있습니다. 스레딩은 표준 C 라이브러리의 일부인 _beginthread를 사용하고 있습니다. wxWidgets에는 우리가 사용할 수 있는 wxCriticalSection 같은 것이 있습니다. 소켓 코드는 Microsoft가 BSD에서 포팅한 소켓과 같은 send/recv 기능을 사용하고 있어서, 추상화 계층 뒤에 숨는 것은 좋지 않을 것 같습니다. wxWidgets는 크로스 플랫폼 지원 기능을 찾기에 좋은 곳입니다. 가능하다면 코드에 #ifdef을 사용하지 않으려고 합니다. 두 번 이상 사용된 모든 것은 util.cpp에 함수로 변환될 것이고, 그 안에 #ifdef가 들어갈 겁니다.

Windows 스레드와 소켓 라이브러리 include를 POSIX 등가물로 교체했더니, 몇 가지 오류만 발생하네요, 대부분 svn/branches에서의 오류입니다, 아직 공식 릴리즈일 필요는 없습니다.

설치 시 스타트업 폴더 아이콘을 제거하도록 설정할 수 있나요? 일반 프로그램 그룹에 아이콘을 설치하고 제거해야 하며, 스타트업 폴더 아이콘은 단순히 제거만 해야 합니다. 스타트업 폴더 아이콘을 설치하고 제거하는 것이 중요한지 아니면 단순히 제거만 하는 것이 중요한지는 그다지 중요하지 않습니다.

처리하겠습니다.

Email-46

Date: Thu, 29 Oct 2009 02:05:30 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Fw: bitcoin.sourceforge.net
To: mmalmi@cc.hut.fi

CriticalSection 코드를 wxCriticalSection으로 변환해서 SVN에 업로드할 거예요(조금 까다롭네요). 그러나 TryEnterCriticalSection에 대해서는 어떻게 해야 할지 모르겠어요. 거의 모든 것을 체크인할 준비가 된 것 같아요.

맞아요, 리눅스 빌드를 할 때가 된 것 같아요. 리눅스 기계를 설정하고 종속성을 빌드하는 작업에 착수했어요.

Ok. Windows 스레드와 소켓 라이브러리 include를 그들의 POSIX 등가물로 교체했더니, 이제 몇 가지 오류만 나오네요, 대부분 CriticalSections에서 오는 오류들입니다. 작동하게 만들면, svn/branches에 넣을 거예요, 아직 공식 릴리즈일 필요는 없어요.

Email-47

Date: Thu, 29 Oct 2009 06:08:10 +0200
From: mmalmi@cc.hut.fi
To: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Fw: bitcoin.sourceforge.net

CriticalSection 코드를 wxCriticalSection으로 변환해서 SVN에 업로드할 예정입니다(조금 까다로워요). 그러나 TryEnterCriticalSection에 대해서는 어떻게 할지 모르겠네요. 거의 모든 것을 체크인할 준비가 된 것 같습니다.

Boost 뮤텍스가 여기서 도움이 될 수 있을까요?

https://www.boost.org/doc/libs/1_40_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts

Email-48

Date: Thu, 29 Oct 2009 06:38:30 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: mmalmi@cc.hut.fi

저는 wxWidgets 소스 코드를 보고 그들이 어떻게 했는지 확인하는 간단한 해결책을 선택했습니다. 그들은 MSW가 아닌 경우에는 wxMutex로 매핑했으며, wxMutex는 TryEnter를 지원하므로 완벽하게 매핑되었습니다.

저는 SVN에 모든 변경 사항을 체크인했습니다. 이는 util.h의 CCriticalSection 개편과 Windows가 아닐 때 wxWidgets를 사용하여 모든 것을 처리하는 util.cpp의 OpenSSL 뮤텍스 콜백을 포함합니다.

리눅스에서 작동하면, 우선 네트워크 외부에서 제 테스트 스위트를 실행한 후, 공개하기 전에 잠시 동안 LibertyStandard에게 미발표 빌드를 테스트해 볼 것을 제안할 수 있습니다.

mmalmi@cc.hut.fi가 썼습니다:

저는 CriticalSection 코드를 wxCriticalSection으로 변환하고 SVN에 업로드할 것입니다(조금 까다롭습니다). TryEnterCriticalSection을 어떻게 처리해야 할지 모르겠습니다. 저는 거의 모든 것을 체크인할 준비가 되었다고 생각합니다.

여기서 Boost 뮤텍스가 도움이 될까요? http://www.boost.org/doc/libs/1_40_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts

Email-49

Date: Fri, 30 Oct 2009 01:05:45 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: Martti Malmi <mmalmi@cc.hut.fi>

저는 발견한 일부 비휴대용 문제들을 수정했습니다: QueryPerformanceCounter printf 형식 문자열에서의 %I64d Sleep CheckDiskSpace

다른 비휴대용 문제가 있다면 알려주세요.

저는 debug.log와 db.log를 현재 디렉터리가 아닌 데이터 파일들과 같은 디렉터리(%appdata%\Bitcoin)로 이동할 생각입니다.

Email-50

Date: Sat, 31 Oct 2009 11:21:50 +0200
From: mmalmi@cc.hut.fi
To: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build

저는 util.h에서 QueryPerformanceCounter를 리눅스의 gettimeofday로 대체하기 위해 #ifdef를 만들었습니다. wxWidgets 2.9로 업데이트하면서 일부 유니코드/ANSI 오류들이 코드 변경 없이 해결되었습니다. 현재 리눅스에서 받고 있는 유일한 컴파일 에러는 util.h의 heapchk()에서 발생합니다.

저는 발견한 일부 비휴대용 문제들을 수정했습니다: QueryPerformanceCounter printf 형식 문자열에서의 %I64d Sleep CheckDiskSpace

다른 비휴대용 문제가 있다면 알려주세요.

저는 debug.log와 db.log를 현재 디렉터리가 아닌 데이터 파일들과 같은 디렉터리(%appdata%\Bitcoin)로 이동할 생각입니다.

Email-51

Date: Sat, 31 Oct 2009 20:09:58 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: mmalmi@cc.hut.fi

heapchk()는 그저 MSVCRT 디버깅 기능이며 리눅스에서는 사용되지 않습니다. 리눅스에서는 no-op(아무 작업도 하지 않는 연산)으로 처리될 수 있습니다. OpenSSL은 리눅스에서 자동으로 /dev/urandom을 사용하여 시드를 생성하므로, RandAddSeedPerfmon 역시 no-op으로 처리될 수 있습니다.

네트워크에 연결하기 전에 오프넷에서 철저히 테스트했는지 확인하세요. 두 대의 컴퓨터가 있다면, 인터넷을 끊고 "bitcoin -connect="를 사용하여 서로 연결하세요. 하나는 윈도우, 다른 하나는 리눅스로 하세요. -connect는 192.168.x.x와 같은 비경유 가능한 주소에 연결할 수 있게 해줍니다. 아직 확인하지 못한 어떤 잘못된 데이터를 네트워크에 전송하거나, 네트워크에서 반사회적인 행위를 발견하게 되어 네트워크의 신뢰성에 부정적인 영향을 끼치고 싶지 않습니다.

테스트할 수 있는 빌드가 준비되면, 테스트를 진행할 시간이 있습니다. 현재 진행 중인 변경 사항에 대한 스트레스 테스트에 포함시킬 수 있습니다.

mmalmi@cc.hut.fi가 썼습니다:

저는 util.h에서 QueryPerformanceCounter를 리눅스의 gettimeofday로 대체하기 위한 #ifdef를 만들었습니다. wxWidgets 2.9로 업데이트하면서 일부 유니코드/ANSI 오류들이 코드 변경 없이 해결되었습니다. 현재 리눅스에서 받고 있는 유일한 컴파일 에러는 util.h의 heapchk()에서 발생합니다.

저는 발견한 일부 비휴대용 문제들을 수정했습니다: QueryPerformanceCounter printf 형식 문자열에서의 %I64d Sleep CheckDiskSpace

다른 비휴대용 문제가 있다면 알려주세요.

저는 debug.log와 db.log를 현재 디렉터리가 아닌 데이터 파일들과 같은 디렉터리(%appdata%\Bitcoin)로 이동할 생각입니다.

Email-52

Date: Tue, 03 Nov 2009 09:31:41 +0200
From: mmalmi@cc.hut.fi
To: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build

지금까지 포팅한 것을 svn/branches에 업로드했습니다. Util, script, db 및 헤더 파일은 완전히 컴파일되며 net.cpp는 부분적으로 컴파일되므로 아직 해야 할 일이 남아 있습니다.

_beginthread에는 리눅스에 직접적인 대응이 없어서 대신 Boost 스레드를 사용했습니다.

Tor SOCKS 프록시를 사용하여 연결할 수 없었습니다. 이는 Freenode Tor 정책 때문일 수 있는데, 이 정책은 그들의 숨겨진 서비스로 연결하는 것을 요구합니다: http://freenode.net/irc_servers.shtml#tor

heapchk()는 사용되지 않는 MSVCRT 디버깅 기능입니다. 리눅스에서는 no-op일 수 있습니다. OpenSSL은 자동으로 리눅스에서 /dev/urandom을 사용하여 시드를 생성하므로, RandAddSeedPerfmon 역시 no-op일 수 있습니다.

오프넷에서 철저히 테스트하기 전까지 네트워크에 연결하지 마세요. 두 대의 컴퓨터가 있다면, 인터넷을 끊고 "bitcoin -connect="를 사용하여 서로 연결하세요. 하나는 윈도우, 다른 하나는 리눅스로 하세요. -connect는 192.168.x.x와 같은 비경유 가능한 주소에 연결할 수 있게 해줍니다. 아직 확인하지 못한 어떤 잘못된 데이터를 네트워크에 전송하거나, 네트워크에서 반사회적인 행위를 발견하게 되어 네트워크의 신뢰성에 부정적인 영향을 끼치고 싶지 않습니다.

테스트할 수 있는 빌드가 준비되면, 테스트를 진행할 시간이 있습니다. 현재 진행 중인 변경 사항에 대한 스트레스 테스트에 포함시킬 수 있습니다.

mmalmi@cc.hut.fi가 썼습니다:

저는 util.h에서 QueryPerformanceCounter를 리눅스의 gettimeofday로 대체하기 위한 #ifdef를 만들었습니다. wxWidgets 2.9로 업데이트하면서 일부 유니코드/ANSI 오류들이 코드 변경 없이 해결되었습니다. 현재 리눅스에서 받고 있는 유일한 컴파일 에러는 util.h의 heapchk()에서 발생합니다.

저는 발견한 일부 비휴대용 문제들을 수정했습니다: QueryPerformanceCounter printf 형식 문자열에서의 %I64d Sleep CheckDiskSpace

다른 비휴대용 문제가 있다면 알려주세요.

저는 debug.log와 db.log를 현재 디렉터리가 아닌 데이터 파일들과 같은 디렉터리(%appdata%\Bitcoin)로 이동할 생각입니다.

Email-53

Date: Tue, 03 Nov 2009 15:53:25 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build, proxy
To: mmalmi@cc.hut.fi

리눅스 빌드 작업을 기대하고 있었습니다. 정말 좋습니다.

Freenode의 숨겨진 서비스에 연결하면, 그들이 TOR를 남용으로 인해 금지했다고 알려주고 연결이 끊어집니다. 유닉스에서 비밀번호 유틸리티를 실행하고 이메일로 계정을 요청하는 몇 단계 절차를 거쳐 로그인할 수 있는 계정을 받을 수 있지만, 이는 상당히 복잡해집니다. 우리 모두가 같은 계정을 사용하는 것으로 하나의 계정을 신청하는 것이 가능할지 궁금합니다. IRC 서버는 아마도 계정을 한 번에 하나의 로그인으로 제한하거나, 어떤 관리자는 같은 계정에 여러 로그인이 있는 것을 좋아하지 않을 것입니다.

IRC 부분을 제외하고, 프록시 테스트는 어떻게 진행되었나요? 이전에 연결한 적이 있으므로, addr.dat에는 알려진 노드 주소가 포함되어 있지만, IRC 없이는 어떤 노드가 온라인인지 알 수 없어 찾는 데 오랜 시간이 걸립니다. 보통 본인을 포함해 1에서 3개의 다른 노드가 들어오는 연결을 허용할 수 있으며, 이미 본인을 알고 있는 기존 노드들이 결국에는 본인에게 연결할 것입니다. 몇 개의 연결이 이루어졌으며, 얼마나 걸렸나요? TOR를 통해 성공적으로 외부로 연결되었는지 알아보려면 "connected"를 검색하여 debug.log를 확인해야 할 것입니다.

TOR를 사용하여 정상적으로 연결하지 않고 처음 연결하려면, 들어오는 연결을 허용할 수 있는 기존 노드의 주소를 알고 이렇게 시드해야 합니다: bitcoin -proxy=127.0.0.1:9050 -addnode=<노드의 ip>

들어오는 연결을 허용하는 일부 노드가 자신의 IP를 프로그램에 코드화하는 것을 허용한다면, 자동으로 시드할 수 있습니다. 또는 지침과 함께 위키 페이지에 일부 IP 시드 주소를 게시할 수 있습니다.

TOR 노드를 금지하지 않는 IRC 서버를 다시 찾는 것이 다른 옵션일 수 있습니다. 또는 누군가 하나를 설정할 수 있다면 좋겠습니다. IRC 서버는 실제 텍스트 채팅이 있기 때문에 TOR를 금지하지만, 봇과 잡다한 것만 있는 경우라면 신경 쓰지 않을 것입니다. 포럼이나 메일링 리스트에 질문을 게시하여 누군가 알고 있는지 확인해 보는 것이 좋을 것입니다.

또 다른 문제는 TOR 사용자가 들어오는 연결을 허용할 수 없고, 들어오는 연결을 허용할 수 있는 노드가 매우 적다는 것입니다. 모두가 TOR로 전환하면 연결할 노드가 없게 됩니다.

들어오는 연결을 허용할 수 있는 노드가 부족합니다. 최근에는 보통 2에서 4개 사이입니다. 라우터에서 포트 포워딩을 설정하는 것의 중요성을 사람들에게 강조해야 합니다. 모든 P2P 파일 공유 프로그램에

는 이를 수행하는 방법에 대한 지침이 있습니다. bitcoin.sourceforge.net 홈페이지에 사람들이 들어오는 연결을 허용하기 위해 포트 포워딩을 설정하도록 촉구하는 문단과 각 라우터에 대해 설명하는 사이트로의 링크를 추가해야 합니다.

지금까지 포팅한 것을 svn/branches에 업로드했습니다. Util, script, db 및 헤더 파일은 완전히 컴파일되며 net.cpp는 부분적으로 컴파일되므로 아직 해야 할 일이 남아 있습니다.

_beginthread에는 리눅스에 직접적인 대응이 없어서 대신 Boost 스레드를 사용했습니다.

Tor SOCKS 프록시를 사용하여 연결할 수 없었습니다. 이는 Freenode Tor 정책 때문일 수 있는데, 이 정책은 그들의 숨겨진 서비스로 연결하는 것을 요구합니다: http://freenode.net/irc_servers.shtml#tor

heapchk()는 사용되지 않는 MSVCRT 디버깅 기능입니다. 리눅스에서는 no-op일 수 있습니다. OpenSSL은 자동으로 리눅스에서 /dev/urandom을 사용하여 시드를 생성하므로, RandAddSeedPerfmon 역시 no-op일 수 있습니다.

오프넷에서 철저히 테스트하기 전까지 네트워크에 연결하지 마세요. 두 대의 컴퓨터가 있다면, 인터넷을 끊고 "bitcoin -connect="를 사용하여 서로 연결하세요. 하나는 윈도우, 다른 하나는 리눅스로 하세요. -connect는 192.168.x.x와 같은 비경유 가능한 주소에 연결할 수 있게 해줍니다. 아직 확인하지 못한 어떤 잘못된 데이터를 네트워크에 전송하거나, 네트워크에서 반사회적인 행위를 발견하게 되어 네트워크의 신뢰성에 부정적인 영향을 끼치고 싶지 않습니다.

테스트할 수 있는 빌드가 준비되면, 테스트를 진행할 시간이 있습니다. 현재 진행 중인 변경 사항에 대한 스트레스 테스트에 포함시킬 수 있습니다.

mmalmi@cc.hut.fi가 썼습니다:

저는 util.h에서 QueryPerformanceCounter를 리눅스의 gettimeofday로 대체하기 위한 #ifdef를 만들었습니다. wxWidgets 2.9로 업데이트하면서 일부 유니코드/ANSI 오류들이 코드 변경 없이 해결되었습니다. 현재 리눅스에서 받고 있는 유일한 컴파일 에러는 util.h의 heapchk()에서 발생합니다.

저는 발견한 일부 비휴대용 문제들을 수정했습니다: QueryPerformanceCounter printf 형식 문자열에서의 %I64d Sleep CheckDiskSpace

다른 비휴대용 문제가 있다면 알려주세요.

저는 debug.log와 db.log를 현재 디렉터리가 아닌 데이터 파일들과 같은 디렉터리(%appdata%\Bitcoin)로 이동할 생각입니다.

Email-54

Date: Wed, 04 Nov 2009 05:38:17 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: mmalmi@cc.hut.fi

거의 다 왔습니다. 몇 가지를 수정하여 컴파일을 완료했지만, 링크해야 할 시스템 라이브러리를 모르기 때문에 정의되지 않은 참조가 많습니다.

makefile을 수정하여 /usr/local 및 기본 "make install" 위치에서 항목을 찾도록 했습니다. build-unix.txt에 제가 한 일과 사용한 스위치를 작성했습니다. 현재 wxWidgets 2.8.9를 사용하고 있는데, 이는 Windows와 동일한 버전이기 때문이며, 플랫폼 변경과 동시에 버전 변경 문제가 있는지 궁금해하고 싶지 않습니다. 그러나 2.8.10이나 2.9.0도 아마 괜찮을 것입니다. 우리가 거의 모든 라이브러리에 링크하고 있기 때문에 wxWidgets의 단일 라이브러리 컴파일을 선택했습니다.

RC 파일 대신 Windows가 아닌 곳에서 사용하는 xpm 파일을 추가했습니다. 이는 정적 배열에 그래픽을 정의하는 영리한 C 파일입니다. 비트코인 아이콘에는 5가지 다른 버전이 있지만, xpm에서 이것이 어떻게 작동하는지 알아내지 못해서 가장 큰 것만 넣었습니다. 아마 GTK에서는 이를 위해 스케일을 조정해 줄 것입니다. 이것들이 올바른지 또는 어떤지 모르겠지만, 컴파일은 됩니다.

mmalmi@cc.hut.fi가 썼습니다:

지금까지 포팅한 것을 svn/branches에 업로드했습니다. Util, script, db 및 헤더 파일은 완전히 컴파일되며 net.cpp는 부분적으로 컴파일되므로 아직 해야 할 일이 남아 있습니다.

_beginthread에는 리눅스에 직접적인 대응이 없어서 대신 Boost 스레드를 사용했습니다.

Email-55

Date: Wed, 04 Nov 2009 20:38:03 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: mmalmi@cc.hut.fi

작업 중복을 방지하기 위해 리눅스 빌드 작업을 계속 진행 중임을 알려드립니다. 링크를 완료하고 실행한 후, 리소스 대신 xpm에서 비트맵을 로드하도록 전환하는 것과 같은 런타임 문제들을 해결하고 있습니다.

의존성 일부에 대해 우리가 직접 컴파일하지 않아도 되는 데비안 패키지가 있습니다:

  • apt-get install build-essential

  • apt-get install libgtk2.0-dev

  • apt-get install libssl-dev

Berkeley DB나 Boost에 패키지가 있는지 확인해야 합니다.

OpenSSL은 공유 링크할 예정입니다. 리눅스에는 항상 사전 설치되어 있을 거라고 확신합니다. GTK는 공유 링크해야 합니다. 기본적으로 사전 설치되어 있는지 완전히 확실하지는 않습니다.

Email-56

Date: Wed, 04 Nov 2009 23:42:44 +0200
From: mmalmi@cc.hut.fi
To: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build

IRC 부분을 제외하고, 프록시 테스트는 어떻게 진행되었나요? 이전에 연결된 적이 있기 때문에, addr.dat에는 알려진 노드 주소들이 들어있지만, IRC 없이는 어떤 노드들이 온라인 상태인지 알 수 없어 그들을 찾는 데 오랜 시간이 걸립니다. 보통 당신 외에 1에서 3개의 다른 노드들이 들어오는 연결을 수락할 수 있고, 이미 당신을 알고 있는 기존 노드들은 결국 당신에게 연결될 것입니다. 몇 개의 연결을 받았으며, 얼마나 걸렸나요? TOR를 통해 성공적으로 외부로 연결되었는지 알기 위해서는 "connected"라고 적힌 debug.log를 찾아봐야 할 것 같습니다.

프록시 설정을 활성화하고 비트코인을 재시작한 후, 첫 연결이 1분도 채 되지 않아 이루어졌고, 결국 8개의 연결까지 얻었습니다. 그들이 모두 정말 TOR를 통한 것인지 궁금합니다. Netstat은 localhost:9050에 대한 2개의 연결과 다른 곳으로의 8333 로컬 포트에서 나가는 7개의 연결만을 보여줍니다. (표시된 몇몇 연결은 이미 끊긴 것일 수 있습니다.) 어떤 이유에서인지, 실행 중인 폴더에 debug.log가 없습니다.

들어오는 연결을 수락할 준비가 된 몇몇 노드들이 그들의 IP를 프로그램에 코드화하는 것에 동의한다면, 자동으로 시드를 생성할 수 있을 것입니다. 또는 일부 IP 시드 주소를 지침과 함께 위키 페이지에 게시할 수 있습니다.

위키 페이지는 좋고 신속하게 적용 가능한 해결책으로 보입니다. 제 ip를 거기에 업데이트해 둘 수 있고, 다른 이들에게도 같이 하도록 요청할 수 있을 것입니다. 리눅스 빌드가 작동하면, 대부분의 시간 온라인 상태이고 정적 IP를 가진 서버에 노드를 설정하기 더 쉬워집니다. 비트코인과 함께 제공되는 정적 ip 목록과 피어 교환 프로토콜이 멋질 것 같습니다. 그렇게 하면 IRC 서버가 필요 없게 됩니다.

리눅스 빌드 작업을 계속하고 있으니, 작업을 중복하지 않도록 알려드립니다. 링크를 하고 실행해 보았으며, 리소스 대신 xpm에서 비트맵을 로드하도록 전환하는 것과 같은 런타임 문제를 해결하는 중입니다.

알겠습니다. 처음 시도했을 때 링크에 성공하지 못했지만, 아직 의존성을 자세히 살펴보지는 않았습니다.

Email-57

Date: Thu, 05 Nov 2009 05:31:03 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: Martti Malmi <mmalmi@cc.hut.fi>

리눅스 변경 사항을 SVN의 메인 트렁크에 병합했습니다. 이제 컴파일하고 실행됩니다. 모든 문제는 UI에 있는 것 같습니다. 메뉴가 금방 작동을 멈추고, 리사이즈할 때가 아니면 제대로 다시 그려지지 않으며, UI에서 몇 가지 segfaults가 발생합니다. gdb로 디버깅하는 것이 너무 어렵지 않을 것입니다. 아직 다른 노드와 잘 작동하는지 테스트하지 않았으니 네트워크에서는 실행하지 마세요.

build-unix.txt와 makefile.unix가 추가되었습니다.

Email-58

Date: Thu, 05 Nov 2009 15:25:27 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Proxy
To: mmalmi@cc.hut.fi

mmalmi@cc.hut.fi가 작성:

프록시 설정을 활성화하고 비트코인을 재시작한 후, 첫 연결이 1분도 채 되지 않아 이루어졌고, 결국 8개의 연결까지 얻었습니다. 그들이 모두 정말 TOR를 통한 것인지 궁금합니다. Netstat은 localhost:9050에 대한 2개의 연결과 다른 곳으로의 8333 로컬 포트에서 나가는 7개의 연결만을 보여줍니다. (표시된 몇몇 연결은 이미 끊긴 것일 수 있습니다.) 어떤 이유에서인지, 실행 중인 폴더에 debug.log가 없습니다.

debug.log 파일이 데이터 디렉토리 "%appdata%/bitcoin/debug.log"로 이동되었습니다.

7개의 들어오는 연결과 2개의 나가는 연결은 예상했던 대로입니다.

마지막 SVN 커밋에는 연결할 주소를 선택하는 코드의 대대적인 수정이 포함되어, IRC가 사용 불가능할 경우에도 더 합리적인 시간 내에 연결될 수 있도록 최근에 온라인 상태였던 순서대로 시도하도록 했습니다. IRC는 사실 첫 연결을 시드하는 데만 필요하지만, 우리는 더 빠르게 연결하기 위해 지팡이처럼 사용해 왔습니다.

들어오는 연결을 수락할 준비가 된 몇몇 노드들이 그들의 IP를 프로그램에 코드화하는 것에 동의한다면, 자동으로 시드를 생성할 수 있을 것입니다. 또는 일부 IP 시드 주소를 지침과 함께 위키 페이지에 게시할 수 있습니다.

위키 페이지는 좋고 신속하게 적용 가능한 해결책으로 보입니다. 제 ip를 거기에 업데이트해 둘 수 있고, 다른 이들에게도 같이 하도록 요청할 수 있을 것입니다. 리눅스 빌드가 작동하면, 대부분의 시간 온라인 상태이고 정적 IP를 가진 서버에 노드를 설정하기 더 쉬워집니다. 비트코인과 함께 제공되는 정적 ip 목록과 피어 교환 프로토콜이 멋질 것 같습니다. 그렇게 하면 IRC 서버가 필요 없게 됩니다.

그렇게 되면 정말 좋겠습니다. TOR 사용자만이 필요로 하므로, 지침에서 "bitcoin -proxy=127.0.0.1:9050 -addnode="라고 말할 때, someip는 실제 정적 IP가 될 수 있으며, 위키에 자유롭게 자신의 IP를 추가할 수 있는 목록이나 그 링크가 있을 수 있습니다. 정적 IP를 가지고 있어 들어오는 연결을 수락할 수 있다면, 이제 그 목록에 자신의 IP를 추가하는 선택적 단계에 대한 링크가 있어야 합니다.

익명의 사용자들이 비트코인을 사용한다는 것을 아무도 모르게 완전히 은밀하게 연결하고 싶어 하는지, 아니면 거래를 하기 전에 TOR로 전환하기만 원하는지 궁금합니다. 완전히 은밀하게 하고 싶다면 -proxy -addnode 수동 시딩을 거쳐야 합니다. 처음에 비트코인을 정상적으로 실행하면 즉시 자동으로 연결하기 시작하므로, 이를 잘못 다루기 쉽습니다.

Email-59

Date: Thu, 05 Nov 2009 17:33:58 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Forum
To: Martti Malmi <mmalmi@cc.hut.fi>

이제 bitcoin.sourceforge.net 포럼이 인기를 얻고 있으므로, 완전한 포럼 소프트웨어를 무료로 호스팅하는 곳을 찾아보는 것이 정말 중요합니다. bitweaver 포럼 기능은 너무 기본적입니다. 홈페이지의 "포럼" 탭은 포럼이 호스팅되는 곳이 어디든 그곳으로 링크될 수 있다고 가정합니다.

아직 어떤 코드도 없이 포럼 토론과 하늘을 찌르는 계획만으로 큰 관심을 받는 프로젝트를 본 적이 있습니다. 포럼에서 많은 대화가 이루어지면 프로젝트가 네트워크상에서 더 많은 존재감을 갖게 되고, 검색 결과도 많아지며, 프로젝트가 크게 보이고 새로운 사용자를 끌어들이며, 지원 질문을 해결하는 데 도움이 되고, 가장 원하는 기능이 무엇인지 정리하는 데 도움이 됩니다.

로그인 페이지는 물론이고 사이트 전체에서 SSL을 지원할 수 있다면 큰 장점이 될 것입니다. 포럼의 여러 사람들이 TOR/I2P에 관심을 표현했으며, 이러한 사용자들은 많은 TOR 출구 노드가 아마도 신원 도용범들이 운영하는 비밀번호 수집기일 수 있기 때문에 SSL이 필요합니다. 비트코인에 대한 핵심적인 관심은 프라이버시를 중시하는 사람들로부터 올 것입니다.

무료 포럼을 어디에서 구할 수 있을까요? 다른 프로젝트들이 포럼을 어디에 호스팅하는지 살펴보며 아이디어를 얻는 것도 좋을 것 같습니다.

Email-60

Date: Fri, 06 Nov 2009 06:20:15 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Linux build
To: Martti Malmi <mmalmi@cc.hut.fi>

이제 리눅스에서는 wxMessageBox()를 GUI 스레드가 아닌 곳에서 사용하면, 비-GUI 스레드가 리눅스에서 창을 열 수 없기 때문에 충돌이 발생하여 제외하고는 안정적으로 작동합니다. 이 부분을 고치는 것에는 아직 착수하지 못했습니다. 스트레스 테스트를 계속 진행해 왔고, 정상적으로 기능하고 있습니다.

wxWidgets의 대부분은 UI 스레드가 아닌 다른 스레드에서 사용하기에는 스레드 안전하지 않지만, 윈도우에서는 UI와 관련되지 않은 것이라면 대체로 괜찮다는 경험칙이 있습니다. GTK에서는 더 스레드 안전하지 않다는 것이 밝혀졌습니다. 한 번에 여러 가지를 바꿔서 무엇 때문인지 확실히 모르겠지만 (아마도 Repaint), UI 스레드 외부에서 wxString을 사용하는 wx 함수라도 안전하지 않다고 가정해야 합니다. 그래서, 좋았던 wxWidgets의 이식성 지원 기능이 모두 사라졌네요. 소스를 확인해 본 결과 숫자로만 이루어져 있는 wxThread::GetCPUCount() 같은 몇 가지 간단한 것들과, wxMutex가 안전해야 한다고 생각되는 것들은 남겨두었습니다. 그렇지 않으면 쓸모가 없을 테니까요.

프로그램을 종료하고 바로 다시 실행하려고 하면, 8333 포트에 바인딩할 수 없는 문제가 있습니다. 포트는 대략 1분 후에 사용 가능해집니다. 놓치고 있는 것이 없는 한, 종료하기 전에 소켓을 닫고 있으므로 무엇을 더 할 수 있을지 모르겠습니다. 리눅스에는 바인딩했던 포트를 해제하는 데 1분 정도 걸리는 것이 특징인 것 같습니다. 아마도 트로이 목마가 웹 서버를 종료시키고 그 자리를 빠르게 차지해 모든 클라이언트 재시도를 받아내는 것을 방지하기 위한 보안 기능일 수 있습니다.

아이콘의 xpm 버전을 어떻게 제대로 만드는지 아직 파악해야 합니다.

데이터베이스 데이터 파일이 윈도우와 호환되는지 궁금합니다.

Last updated