본문으로 건너뛰기

이메일 #056 - #060

원본 출처: Satoshi - Sirius emails 2009-2011

이메일 #056

Date: Wed, 04 Nov 2009 23:42:44 +0200
From: [email protected]
To: Satoshi Nakamoto <[email protected]>
Subject: Re: Linux build

한글 번역

IRC 부분 말고, 프록시 테스트는 어떻게 됐나요? 전에 접속한 적이 있으니 addr.dat에 알려진 노드 주소들이 들어 있겠지만, 어떤 노드가 온라인인지 알 수 있는 IRC가 없으면 찾는 데 오래 걸립니다. 당신 말고도 들어오는 연결을 받을 수 있는 노드는 보통 1~3개 정도 있고, 당신을 이미 아는 기존 노드들은 결국 당신에게 연결할 겁니다. 연결이 몇 개나 됐고, 얼마나 걸렸나요? TOR를 통해 아웃바운드 연결이 성공했는지 알려면 debug.log에서 "connected"를 검색해 봐야 할 것 같은데요.

프록시 설정을 켜고 비트코인을 다시 시작했더니 1분도 안 돼서 첫 연결이 됐고 결국 8개까지 연결됐습니다. 정말 모두 TOR를 통한 건지 궁금합니다. Netstat를 보면 localhost:9050으로 가는 연결은 2개뿐이고 로컬 포트 8333에서 다른 곳으로 나가는 연결이 7개 있습니다. (표시된 연결 중 일부는 이미 끊긴 것일 수도 있습니다.) 이상하게도 실행 중인 폴더에 debug.log가 없습니다.

들어오는 연결을 받을 수 있는 노드들 중 일부가 자신의 IP를 프로그램에 넣어두는 데 동의한다면 자동으로 시드할 수 있을 겁니다. 아니면 설명과 함께 위키 페이지에 IP 시드 주소를 올려두는 방법도 있고요.

위키 페이지가 좋고 바로 적용할 수 있는 해결책처럼 들립니다. 거기에 제 IP를 계속 최신으로 유지할 수 있고 다른 사람들에게도 같이 하자고 부탁할 수 있겠네요. Linux 빌드가 동작하면 대부분의 시간 온라인이고 고정 IP를 가진 서버에 노드를 세우기가 더 쉬워집니다. 비트코인에 동봉되는 고정 IP 목록과 피어 교환 프로토콜이 있으면 좋겠네요. 그렇게 되면 IRC 서버가 필요 없어질 겁니다.

Linux 빌드는 제가 계속 작업 중이니 작업이 겹치지 않게 참고하세요. 링크까지 됐고 실행도 됐으며, 리소스 대신 xpm에서 비트맵을 불러오도록 바꾸는 등의 런타임 문제들을 해결하는 중입니다.

알겠습니다. 첫 시도에서는 링크가 안 됐는데, 의존성은 아직 더 살펴보지 않았습니다.

영어 원문

> Besides the IRC part, how did your test of proxy go?  Since you've been
> connected before, your addr.dat contains known node addresses, but
> without IRC to know which ones are online, it takes a long time to find
> them. There are normally 1 to 3 other nodes besides you that can
> accept incoming connections, and existing nodes that already know you
> would eventually connect to you. How many connections did you get, and
> how long did it take? I guess to know whether it successfully
> connected outbound through TOR you'd need to search debug.log for
> "connected".

Enabling the proxy setting and restarting Bitcoin I got the first
connections in less than a minute and ultimately even 8 connections. I
wonder if they're all really through TOR. Netstat shows only 2
connections to localhost:9050 and 7 connections from local port 8333
to elsewhere. (Some of the shown connections may be already
disconnected ones.) For some reason there's no debug.log in the folder
where I'm running it.

> If some nodes that accept incoming connects were willing to have their
> IP coded into the program, it could seed automatically. Or some IP
> seed addresses posted on a Wiki page with the instructions.

The wiki page sounds like a good and quickly applicable solution. I
could keep my ip updated there and we could ask others to do the same.
When the Linux build works, it's easier to set up nodes on servers
that are online most of the time and have a static IP. A static ip
list shipped with Bitcoin and a peer exchange protocol would be cool.
That way there'd be no need for an IRC server.

> Just letting you know I'm still working on the Linux build so we don't
> duplicate work. I got it linked and ran it and working through runtime
> issues like getting it switched to load bitmaps from xpm instead of
> resources.

Ok. I didn't get it linked on the first attempt, but I didn't look
further into the dependencies yet.

이메일 #057

Date: Thu, 05 Nov 2009 05:31:03 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Linux build
To: Martti Malmi <[email protected]>

한글 번역

SVN 메인 트렁크에 Linux 변경 사항을 합쳤습니다. 이제 컴파일되고 실행됩니다. 문제는 모두 UI에 있는 것 같습니다. 메뉴가 금방 동작을 멈추고, 창 크기를 바꾸지 않으면 다시 그려져야 할 때 다시 그려지지 않으며, UI에서 세그폴트가 좀 발생합니다. gdb로 디버깅하면 그리 어렵지 않을 겁니다. 다른 노드들과 잘 어울려 동작하는지는 아직 테스트하지 않았으니 네트워크에 연결하지 말고 두세요.

build-unix.txt와 makefile.unix를 추가했습니다.

영어 원문

I merged the linux changes into the main trunk on SVN.  It compiles and 
runs now. I think all the problems are in the UI. The menus quickly
quit working and it doesn't repaint when it's supposed to unless I
resize it, and the UI is getting some segfaults. Shouldn't be too hard
to debug with gdb. I haven't tested if it plays nice with other nodes
yet so keep it off-net.

build-unix.txt and makefile.unix added

이메일 #058

Date: Thu, 05 Nov 2009 15:25:27 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Proxy
To: [email protected]

한글 번역

[email protected]님이 쓰셨습니다:

프록시 설정을 켜고 비트코인을 다시 시작했더니 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를 계속 최신으로 유지할 수 있고 다른 사람들에게도 같이 하자고 부탁할 수 있겠네요. Linux 빌드가 동작하면 대부분의 시간 온라인이고 고정 IP를 가진 서버에 노드를 세우기가 더 쉬워집니다. 비트코인에 동봉되는 고정 IP 목록과 피어 교환 프로토콜이 있으면 좋겠네요. 그렇게 되면 IRC 서버가 필요 없어질 겁니다.

좋겠네요. 그게 필요한 건 TOR 사용자뿐이니, 설명서에 "bitcoin -proxy=127.0.0.1:9050 -addnode=<someip>"라고 쓸 때 someip에는 실제 고정 IP를 넣고, 근처에 위키의 자유로운 add-your-ip 목록이나 그 목록으로 가는 링크를 두면 되겠죠. 고정 IP라서 이제 들어오는 연결을 받을 수 있게 됐다면 이 목록에 자신의 IP를 추가하라는, 그 선택 단계로 가는 링크가 있어야 합니다.

익명을 원하는 사람들은 TOR 없이 단 한 번도 접속하지 않아서 아무도 자신이 비트코인을 쓴다는 걸 모르게 하는 완전한 은신을 원하는 걸까요, 아니면 거래를 하기 전에 TOR로 바꾸기만 하면 되는 걸까요? 완전히 은신하고 싶을 때만 -proxy -addnode 수동 시딩을 거쳐야 합니다. 그걸 실수하기가 아주 쉬울 겁니다. 처음부터 비트코인을 보통대로 실행하면 즉시 자동으로 연결을 시작하니까요.

영어 원문

[email protected] wrote:
> Enabling the proxy setting and restarting Bitcoin I got the first
> connections in less than a minute and ultimately even 8 connections. I
> wonder if they're all really through TOR. Netstat shows only 2
> connections to localhost:9050 and 7 connections from local port 8333 to
> elsewhere. (Some of the shown connections may be already disconnected
> ones.) For some reason there's no debug.log in the folder where I'm
> running it.

debug.log moved to the data directory "%appdata%/bitcoin/debug.log"

7 inbound and 2 outbound sounds about as expected.

My last SVN commit included an overhaul of the code that selects the
order of addresses to connect to, trying them in the order of most
recently seen online, so it should get connected in a more reasonable
amount of time if IRC is unavailable. IRC is really only needed to seed
the first connection, but we've been using it as a crutch to get
connected faster.

>> If some nodes that accept incoming connects were willing to have their
>> IP coded into the program, it could seed automatically. Or some IP
>> seed addresses posted on a Wiki page with the instructions.
>
> The wiki page sounds like a good and quickly applicable solution. I
> could keep my ip updated there and we could ask others to do the same.
> When the Linux build works, it's easier to set up nodes on servers that
> are online most of the time and have a static IP. A static ip list
> shipped with Bitcoin and a peer exchange protocol would be cool. That
> way there'd be no need for an IRC server.

That would be great. It's only TOR users that need it, so in the
instructions saying "bitcoin -proxy=127.0.0.1:9050 -addnode=<someip>",
someip could be an actual static IP, with the wiki free-for-all
add-your-ip list nearby or a link to it. There should be a link to that optional step, add your IP to this list now that you can accept incoming
if you're static.

Do you think anonymous people are looking to be completely stealth, as
in never connect once without TOR so nobody knows they use bitcoin, or
just want to switch to TOR before doing any transactions? It's just if
you want to be completely stealth that you'd have to go through the
-proxy -addnode manual seeding. It would be very easy to fumble that
up; if you run bitcoin normally to begin with it immediately
automatically starts connecting.

이메일 #059

Date: Thu, 05 Nov 2009 17:33:58 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Forum
To: Martti Malmi <[email protected]>

한글 번역

bitcoin.sourceforge.net의 포럼이 자리를 잡아가는 지금, 제대로 된 포럼 소프트웨어를 무료로 호스팅해 주는 곳을 정말 찾아봐야 합니다. bitweaver의 포럼 기능은 너무 가볍습니다. 홈페이지의 "Forum" 탭은 포럼이 호스팅되는 곳으로 바깥 링크를 걸 수 있겠죠.

코드 한 줄 없이 포럼 대화와 뜬구름 잡는 계획만으로 큰 추종자를 얻은 프로젝트들을 본 적이 있습니다. 포럼 대화가 많으면 프로젝트가 인터넷에서 존재감이 커지고, 검색 결과도 많아지고, 커 보이고, 새 사용자를 끌어들이고, 지원 질문 해결을 돕고, 가장 원하는 기능이 무엇인지 다듬게 됩니다.

사이트 전체가 아니더라도 최소한 로그인 페이지라도 SSL을 지원하면 큰 장점이 될 겁니다. 포럼에서 여러 사람이 TOR/I2P에 관심을 표했는데, 그런 사용자들에게는 SSL이 필요합니다. TOR 종료 노드 중 상당수는 아마 신원 도용범이 운영하는 비밀번호 수집기일 테니까요. 비트코인에 대한 핵심 관심의 상당 부분은 프라이버시를 중시하는 사람들로부터 나올 겁니다.

무료 포럼을 구할 만한 곳에 아이디어 있나요? 어디를 알아봐야 할지 감을 잡으려고 다른 프로젝트들의 포럼이 어디에 호스팅되는지 살펴봐야 할지도 모르겠습니다.

영어 원문

Now that the forum on bitcoin.sourceforge.net is catching on, we really 
should look for somewhere that freehosts full blown forum software. The
bitweaver forum feature is just too lightweight. I assume the "Forum"
tab on the homepage can link out to wherever the forum is hosted.

I've seen projects that have major following just from forum talk and
pie-in-the-sky planning without even having any code yet. Having a lot
of forum talk gives a project more presence on the net, more search
hits, makes it look big, draws new users in, helps solve support
questions, hashes out what features are most of wanted.

It would be a big plus if it could support SSL, at least for the login
page if not sitewide. Multiple people on the forum have expressed
interest in TOR/I2P, and those users need SSL because a lot of TOR exit
nodes are probably password scrapers run by identity thieves. A lot of
the core interest in Bitcoin is going to be from the privacy crowd.

Any ideas where we can get a free forum? Maybe we should look at where
some other projects have their forums hosted for ideas where to look.

이메일 #060

Date: Fri, 06 Nov 2009 06:20:15 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Linux build
To: Martti Malmi <[email protected]>

한글 번역

이제 Linux에서는 안정적으로 동작합니다. 다만 GUI 스레드 바깥에서 wxMessageBox()를 쓰면 충돌하는데, Linux에서는 GUI가 아닌 스레드가 창을 열 수 없기 때문입니다. 그건 아직 고치지 못했습니다. 스트레스 테스트를 돌려 보고 있는데 정상적으로 동작합니다.

wxWidgets의 대부분은 UI 스레드가 아닌 스레드에서 쓰기에 스레드 안전하지 않습니다. 하지만 Windows에서는 대략 UI와 관련 없는 것은 괜찮습니다. GTK에서는 스레드에 더 안전하지 않은 것으로 드러났습니다. 여러 부분을 한꺼번에 바꿔서 한 가지 때문이었는지(아마 Repaint였을 겁니다)는 모르겠지만, UI 스레드 바깥에서는 wxString을 쓰는 어떤 wx 함수도 안전하지 않다고 가정해야 합니다. 젠장, 이러니 근사한 wxWidgets 이식성 지원 함수들이 다 날아갔네요. 소스를 확인해서 전부 숫자 연산뿐인 wxThread::GetCPUCount() 같은 간단한 몇 가지는 남겼고, wxMutex는 안전해야지 아니면 쓸모가 없을 겁니다.

종료하고 바로 다시 실행하면 포트 8333에 바인드할 수 없는 문제가 있습니다. 포트는 1분쯤 지나면 풀립니다. 제가 뭔가 놓치지 않았다면 종료 전에 소켓을 닫고 있는데, 그 밖에 무엇을 할 수 있을지 모르겠습니다. 바인드했던 포트를 푸는 데 1분이 걸리는 건 그냥 Linux의 특성일지도 모르겠습니다. 트로이 목마가 웹 서버를 죽이고 재빨리 그 자리를 차지해서 클라이언트 재시도를 전부 가로채지 못하게 하는 보안 기능일 수도 있겠죠.

아이콘의 xpm 버전을 제대로 만드는 방법은 아직 알아내야 합니다.

데이터베이스 dat 파일들이 Windows와 서로 바꿔 쓸 수 있는지 궁금합니다.

영어 원문

It works reliably on Linux now, except if it uses wxMessageBox() outside 
the GUI thread, it'll crash because non-GUI threads can't open a window
on Linux. I haven't got to fixing that yet. I've been running my
stress test on it and it's functioning normally.

Most of wxWidgets is not thread-safe to use in threads other than the UI
thread, but as a rule of thumb on Windows anything not UI related is OK.
It turns out its more thread-unsafe on GTK. I replaced a bunch of
stuff at once so I don't know if it was just one thing (probably
Repaint), but I have to assume even any wx function that uses wxString
is not safe to use outside the UI thread. So dang, there goes all the
nice wxWidgets portability support functions. I left a few simple
things like wxThread::GetCPUCount() that I checked the source and it's
all numerical, and wxMutex has to be safe or it'd be useless.

There's an issue that if you exit and run it again right away, it can't
bind port 8333. The port frees up after about a minute. Unless I'm
missing something, I am closing the socket before exit, so I don't know
what else I can do. Maybe this is just something about Linux that it
takes a minute to free up a port you had bound. Possibly a security
feature so some trojan doesn't kill the web server and quickly jump into
its place and pick up all the client retries.

Still gotta figure out how to do the xpm version of the icon correctly.

I wonder if the database dat files are interchangeable with Windows.
링크 복사하기X에 공유페이스북에 공유쓰레드에 공유