이메일 #186 - #190
원본 출처: Satoshi - Sirius emails 2009-2011
이메일 #186
Date: Fri, 05 Mar 2010 00:54:40 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Bitcoind
To: [email protected]
한글 번역
사실은 이걸 대신 시도해 보세요, 이게 더 정확합니다:
void ParseString(const string& str, char c, vector<string>& v) { string::size_type i1 = 0; string::size_type i2; loop { i2 = str.find(c, i1); if (i2 == str.npos) { v.push_back(str.substr(i1)); return; } v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } }
Satoshi Nakamoto가 썼습니다:
그건 util.c의 ParseString에 있습니다. 문제는 아마 "unsigned int" 타입과 str.npos의 타입인 size_type 사이의 호환성 문제인 것 같습니다.
두 군데의 "unsigned int"를 "size_type"으로 바꿔 보세요.
기존: void ParseString(const string& str, char c, vector<string>& v) { unsigned int i1 = 0; unsigned int i2; do { i2 = str.find(c, i1); v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } while (i2 != str.npos); }
새로운 코드: void ParseString(const string& str, char c, vector<string>& v) { size_type i1 = 0; size_type i2; do { i2 = str.find(c, i1); v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } while (i2 != str.npos); }
[email protected]님이 쓰셨습니다:
gdb로 디버깅하면서 얻은 또 다른 테스트 실행의 debug.log입니다. 프로그램은 "irc 8"이라는 디버그 줄이 나온 뒤부터 메모리를 먹기 시작하더니 몇 초 안에 "terminate called after throwing an instance of 'std::bad_alloc'"라는 메시지와 함께 충돌했습니다.
RecvUntil 쪽 문제인데, 아직도 거기서 뭐가 잘못됐는지 모르겠습니다. 생각할 수 있는 유일한 가능성은 소켓이 문자들을 마구 받아들이고 있는 경우입니다.
이 irc.cpp로 시도해 보세요. debug.log가 급격히 커질 수 있으니 바로 중단할 준비를 하세요.
[email protected]님이 쓰셨습니다:
debug.log를 첨부합니다.
범위가 많이 좁혀졌네요. debug.log에 IRC 활동 기록이 전혀 출력되지 않았으니 RecvUntil을 통과하지 못했을 겁니다. 눈으로 봐서는 딱히 이상한 점이 안 보이네요. ConnectSocket이나 RecvUntil 중 하나에 있을 수밖에 없을 것 같습니다.
첨부한 irc.cpp와 net.cpp로 실행해 보고 debug.log를 보내 주세요.
아니면 gdb에서 실행하면서 ThreadIRCSeed를 단계별로 따라가 볼 수도 있습니다. gdb --args bitcoin [switches] b ThreadIRCSeed run step 또는 u를 눌러 루틴을 건너뛰고 빠져나오면서 단계별로 실행하세요.
[email protected]님이 쓰셨습니다:
getinfo와 관계없이 오류가 발생합니다. ThreadIRCSeed를 주석 처리하니 문제가 해결됐습니다.
getinfo를 하지 않아도 여전히 그런가요?
아래에 나열된 CreateThread들을 주석 처리한 뒤, 다시 문제가 생길 때까지 하나씩 다시 켜 보세요. 그러면 문제가 어느 스레드에 있는지 알 수 있을 겁니다.
net.cpp의 // Start threads 아래 CreateThread(ThreadIRCSeed, NULL) CreateThread(ThreadSocketHandler, NULL, true) CreateThread(ThreadOpenConnections, NULL) CreateThread(ThreadMessageHandler, NULL)
init.cpp: CreateThread(ThreadRPCServer, NULL);
[email protected]님이 쓰셨습니다:
여기 있습니다. 충돌 오류 메시지를 말하는 걸 깜빡했네요:
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
debug.log를 보내 주시겠어요?
[email protected]님이 쓰셨습니다:
ddd 디버거로 제가 빌드한 bitcoind를 디버깅해 봤는데, 아직 별 성과가 없습니다. 항상 시스템 메모리를 전부 잡아먹고 끝내 충돌합니다. 제 빌드 문제인지 확인할 수 있게 최신 64비트 bitcoind 빌드를 다시 보내 주시겠어요?
영어 원문
Actually, please try this instead, this is more correct:
void ParseString(const string& str, char c, vector<string>& v)
{
string::size_type i1 = 0;
string::size_type i2;
loop
{
i2 = str.find(c, i1);
if (i2 == str.npos)
{
v.push_back(str.substr(i1));
return;
}
v.push_back(str.substr(i1, i2-i1));
i1 = i2+1;
}
}
Satoshi Nakamoto wrote:
> It's in util.c ParseString. I'm guessing the problem is incompatibility
> between the type "unsigned int" and the type of str.npos, which is
> size_type.
>
> Try changing the two "unsigned int"s to "size_type".
>
> old:
> void ParseString(const string& str, char c, vector<string>& v)
> {
> unsigned int i1 = 0;
> unsigned int i2;
> do
> {
> i2 = str.find(c, i1);
> v.push_back(str.substr(i1, i2-i1));
> i1 = i2+1;
> }
> while (i2 != str.npos);
> }
>
> new:
> void ParseString(const string& str, char c, vector<string>& v)
> {
> size_type i1 = 0;
> size_type i2;
> do
> {
> i2 = str.find(c, i1);
> v.push_back(str.substr(i1, i2-i1));
> i1 = i2+1;
> }
> while (i2 != str.npos);
> }
>
>
> [email protected] wrote:
>> Here's another test run debug.log I got when debugging with gdb. The
>> program started eating memory after the debug line "irc 8" and within
>> a few seconds crashed with "terminate called after throwing an
>> instance of 'std::bad_alloc'".
>>
>>> It's in RecvUntil, but I still can't see anything wrong with it. The
>>> only thing I can think of is if the socket is receiving a spew of
>>> characters.
>>>
>>> Try this irc.cpp. debug.log may grow rapidly so be ready to kill it.
>>>
>>> [email protected] wrote:
>>>> debug.log attached
>>>>
>>>>> That narrows it down a lot. It didn't print any IRC activity in
>>>>> debug.log, so I guess it couldn't have gotten past the RecvUntil.
>>>>> Eyeballing it I don't see anything obvious. I guess it would have to
>>>>> be either in ConnectSocket or RecvUntil.
>>>>>
>>>>> Try it with the attached irc.cpp and net.cpp and send me the
>>>>> debug.log.
>>>>>
>>>>> Or you could run it in gdb and step through ThreadIRCSeed
>>>>> gdb --args bitcoin [switches]
>>>>> b ThreadIRCSeed
>>>>> run
>>>>> step
>>>>> or u to step over and up out of routines.
>>>>>
>>>>> [email protected] wrote:
>>>>>> I get the error regardless of the getinfo. Commenting out
>>>>>> ThreadIRCSeed fixed the problem.
>>>>>>
>>>>>>> Does it still do it if you didn't do getinfo?
>>>>>>>
>>>>>>> You could comment out the CreateThreads listed below, then re-enable
>>>>>>> them one at a time until it does it again. Then we would know which
>>>>>>> thread the problem is in.
>>>>>>>
>>>>>>> net.cpp, under // Start threads
>>>>>>> CreateThread(ThreadIRCSeed, NULL)
>>>>>>> CreateThread(ThreadSocketHandler, NULL, true)
>>>>>>> CreateThread(ThreadOpenConnections, NULL)
>>>>>>> CreateThread(ThreadMessageHandler, NULL)
>>>>>>>
>>>>>>> init.cpp:
>>>>>>> CreateThread(ThreadRPCServer, NULL);
>>>>>>>
>>>>>>> [email protected] wrote:
>>>>>>>> Here goes. I forgot to mention the crash error message:
>>>>>>>>
>>>>>>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>>>>>> what(): std::bad_alloc
>>>>>>>>
>>>>>>>>> Could you send me the debug.log?
>>>>>>>>>
>>>>>>>>> [email protected] wrote:
>>>>>>>>>> I tried debugging my build of bitcoind with ddd debugger, but
>>>>>>>>>> didn't have much success yet. It always ends up taking
>>>>>>>>>> all the system's memory and finally crashes. Could you
>>>>>>>>>> please send me again the latest 64 bit build of bitcoind,
>>>>>>>>>> so I can see if the problem is about my build?
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>
>
이메일 #187
Date: Fri, 05 Mar 2010 03:33:34 +0200
From: [email protected]
To: Satoshi Nakamoto <[email protected]>
Subject: Re: Bitcoind
한글 번역
좋아요! 이제 잘 작동합니다.
사실은 이걸 대신 시도해 보세요, 이게 더 정확합니다:
void ParseString(const string& str, char c, vector<string>& v) { string::size_type i1 = 0; string::size_type i2; loop { i2 = str.find(c, i1); if (i2 == str.npos) { v.push_back(str.substr(i1)); return; } v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } }
Satoshi Nakamoto가 썼습니다:
그건 util.c의 ParseString에 있습니다. 문제는 아마 "unsigned int" 타입과 str.npos의 타입인 size_type 사이의 호환성 문제인 것 같습니다.
두 군데의 "unsigned int"를 "size_type"으로 바꿔 보세요.
기존: void ParseString(const string& str, char c, vector<string>& v) { unsigned int i1 = 0; unsigned int i2; do { i2 = str.find(c, i1); v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } while (i2 != str.npos); }
새로운 코드: void ParseString(const string& str, char c, vector<string>& v) { size_type i1 = 0; size_type i2; do { i2 = str.find(c, i1); v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } while (i2 != str.npos); }
[email protected]님이 쓰셨습니다:
gdb로 디버깅하면서 얻은 또 다른 테스트 실행의 debug.log입니다. 프로그램은 "irc 8"이라는 디버그 줄이 나온 뒤부터 메모리를 먹기 시작하더니 몇 초 안에 "terminate called after throwing an instance of 'std::bad_alloc'"라는 메시지와 함께 충돌했습니다.
RecvUntil 쪽 문제인데, 아직도 거기서 뭐가 잘못됐는지 모르겠습니다. 생각할 수 있는 유일한 가능성은 소켓이 문자들을 마구 받아들이고 있는 경우입니다.
이 irc.cpp로 시도해 보세요. debug.log가 급격히 커질 수 있으니 바로 중단할 준비를 하세요.
[email protected]님이 쓰셨습니다:
debug.log를 첨부합니다.
범위가 많이 좁혀졌네요. debug.log에 IRC 활동 기록이 전혀 출력되지 않았으니 RecvUntil을 통과하지 못했을 겁니다. 눈으로 봐서는 딱히 이상한 점이 안 보이네요. ConnectSocket이나 RecvUntil 중 하나에 있을 수밖에 없을 것 같습니다.
첨부한 irc.cpp와 net.cpp로 실행해 보고 debug.log를 보내 주세요.
아니면 gdb에서 실행하면서 ThreadIRCSeed를 단계별로 따라가 볼 수도 있습니다. gdb --args bitcoin [switches] b ThreadIRCSeed run step 또는 u를 눌러 루틴을 건너뛰고 빠져나오면서 단계별로 실행하세요.
[email protected]님이 쓰셨습니다:
getinfo와 관계없이 오류가 발생합니다. ThreadIRCSeed를 주석 처리하니 문제가 해결됐습니다.
getinfo를 하지 않아도 여전히 그런가요?
아래에 나열된 CreateThread들을 주석 처리한 뒤, 다시 문제가 생길 때까지 하나씩 다시 켜 보세요. 그러면 문제가 어느 스레드에 있는지 알 수 있을 겁니다.
net.cpp, under // Start threads 아래 CreateThread(ThreadIRCSeed, NULL) CreateThread(ThreadSocketHandler, NULL, true) CreateThread(ThreadOpenConnections, NULL) CreateThread(ThreadMessageHandler, NULL)
init.cpp: CreateThread(ThreadRPCServer, NULL);
[email protected]님이 쓰셨습니다:
여기 있습니다. 충돌 오류 메시지를 말하는 걸 깜빡했네요:
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
debug.log를 보내 주시겠어요?
[email protected]님이 쓰셨습니다:
ddd 디버거로 제가 빌드한 bitcoind를 디버깅해 봤는데, 아직 별 성과가 없습니다. 항상 시스템 메모리를 전부 잡아먹고 끝내 충돌합니다. 제 빌드 문제인지 확인할 수 있게 최신 64비트 bitcoind 빌드를 다시 보내 주시겠어요?
영어 원문
Great! Works fine now.
> Actually, please try this instead, this is more correct:
>
> void ParseString(const string& str, char c, vector<string>& v)
> {
> string::size_type i1 = 0;
> string::size_type i2;
> loop
> {
> i2 = str.find(c, i1);
> if (i2 == str.npos)
> {
> v.push_back(str.substr(i1));
> return;
> }
> v.push_back(str.substr(i1, i2-i1));
> i1 = i2+1;
> }
> }
>
>
>
> Satoshi Nakamoto wrote:
>> It's in util.c ParseString. I'm guessing the problem is
>> incompatibility between the type "unsigned int" and the type of
>> str.npos, which is size_type.
>>
>> Try changing the two "unsigned int"s to "size_type".
>>
>> old:
>> void ParseString(const string& str, char c, vector<string>& v)
>> {
>> unsigned int i1 = 0;
>> unsigned int i2;
>> do
>> {
>> i2 = str.find(c, i1);
>> v.push_back(str.substr(i1, i2-i1));
>> i1 = i2+1;
>> }
>> while (i2 != str.npos);
>> }
>>
>> new:
>> void ParseString(const string& str, char c, vector<string>& v)
>> {
>> size_type i1 = 0;
>> size_type i2;
>> do
>> {
>> i2 = str.find(c, i1);
>> v.push_back(str.substr(i1, i2-i1));
>> i1 = i2+1;
>> }
>> while (i2 != str.npos);
>> }
>>
>>
>> [email protected] wrote:
>>> Here's another test run debug.log I got when debugging with gdb.
>>> The program started eating memory after the debug line "irc 8" and
>>> within a few seconds crashed with "terminate called after
>>> throwing an instance of 'std::bad_alloc'".
>>>
>>>> It's in RecvUntil, but I still can't see anything wrong with it. The
>>>> only thing I can think of is if the socket is receiving a spew of
>>>> characters.
>>>>
>>>> Try this irc.cpp. debug.log may grow rapidly so be ready to kill it.
>>>>
>>>> [email protected] wrote:
>>>>> debug.log attached
>>>>>
>>>>>> That narrows it down a lot. It didn't print any IRC activity in
>>>>>> debug.log, so I guess it couldn't have gotten past the RecvUntil.
>>>>>> Eyeballing it I don't see anything obvious. I guess it would have to
>>>>>> be either in ConnectSocket or RecvUntil.
>>>>>>
>>>>>> Try it with the attached irc.cpp and net.cpp and send me the debug.log.
>>>>>>
>>>>>> Or you could run it in gdb and step through ThreadIRCSeed
>>>>>> gdb --args bitcoin [switches]
>>>>>> b ThreadIRCSeed
>>>>>> run
>>>>>> step
>>>>>> or u to step over and up out of routines.
>>>>>>
>>>>>> [email protected] wrote:
>>>>>>> I get the error regardless of the getinfo. Commenting out
>>>>>>> ThreadIRCSeed fixed the problem.
>>>>>>>
>>>>>>>> Does it still do it if you didn't do getinfo?
>>>>>>>>
>>>>>>>> You could comment out the CreateThreads listed below, then re-enable
>>>>>>>> them one at a time until it does it again. Then we would know which
>>>>>>>> thread the problem is in.
>>>>>>>>
>>>>>>>> net.cpp, under // Start threads
>>>>>>>> CreateThread(ThreadIRCSeed, NULL)
>>>>>>>> CreateThread(ThreadSocketHandler, NULL, true)
>>>>>>>> CreateThread(ThreadOpenConnections, NULL)
>>>>>>>> CreateThread(ThreadMessageHandler, NULL)
>>>>>>>>
>>>>>>>> init.cpp:
>>>>>>>> CreateThread(ThreadRPCServer, NULL);
>>>>>>>>
>>>>>>>> [email protected] wrote:
>>>>>>>>> Here goes. I forgot to mention the crash error message:
>>>>>>>>>
>>>>>>>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>>>>>>> what(): std::bad_alloc
>>>>>>>>>
>>>>>>>>>> Could you send me the debug.log?
>>>>>>>>>>
>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>> I tried debugging my build of bitcoind with ddd debugger,
>>>>>>>>>>> but didn't have much success yet. It always ends up
>>>>>>>>>>> taking all the system's memory and finally crashes.
>>>>>>>>>>> Could you please send me again the latest 64 bit build
>>>>>>>>>>> of bitcoind, so I can see if the problem is about my
>>>>>>>>>>> build?
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>>
이메일 #188
Date: Fri, 05 Mar 2010 01:42:00 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Bitcoind
To: [email protected]
한글 번역
ParseString에 이 문제가 있음을 확인했고, 고친 util.cpp를 SVN에 올렸습니다.
string::npos == -1
unsigned int -1 (0xffffffff)을 long unsigned int -1 (0xffffffffffffffff)과 비교하면 unsigned int가 64비트로 확장되어, 0x00000000ffffffff != 0xffffffffffffffff이 됩니다.
[email protected]님이 쓰셨습니다:
gdb로 디버깅하면서 얻은 또 다른 테스트 실행의 debug.log입니다. 프로그램은 "irc 8"이라는 디버그 줄이 나온 뒤부터 메모리를 먹기 시작하더니 몇 초 안에 "terminate called after throwing an instance of 'std::bad_alloc'"라는 메시지와 함께 충돌했습니다.
RecvUntil 쪽 문제인데, 아직도 거기서 뭐가 잘못됐는지 모르겠습니다. 생각할 수 있는 유일한 가능성은 소켓이 문자들을 마구 받아들이고 있는 경우입니다.
이 irc.cpp로 시도해 보세요. debug.log가 급격히 커질 수 있으니 바로 중단할 준비를 하세요.
[email protected]님이 쓰셨습니다:
debug.log를 첨부합니다.
범위가 많이 좁혀졌네요. debug.log에 IRC 활동 기록이 전혀 출력되지 않았으니 RecvUntil을 통과하지 못했을 겁니다. 눈으로 봐서는 딱히 이상한 점이 안 보이네요. ConnectSocket이나 RecvUntil 중 하나에 있을 수밖에 없을 것 같습니다.
첨부한 irc.cpp와 net.cpp로 실행해 보고 debug.log를 보내 주세요.
아니면 gdb에서 실행하면서 ThreadIRCSeed를 단계별로 따라가 볼 수도 있습니다. gdb --args bitcoin [switches] b ThreadIRCSeed run step 또는 u를 눌러 루틴을 건너뛰고 빠져나오면서 단계별로 실행하세요.
[email protected]님이 쓰셨습니다:
getinfo와 관계없이 오류가 발생합니다. ThreadIRCSeed를 주석 처리하니 문제가 해결됐습니다.
getinfo를 하지 않아도 여전히 그런가요?
아래에 나열된 CreateThread들을 주석 처리한 뒤, 다시 문제가 생길 때까지 하나씩 다시 켜 보세요. 그러면 문제가 어느 스레드에 있는지 알 수 있을 겁니다.
net.cpp, under // Start threads 아래 CreateThread(ThreadIRCSeed, NULL) CreateThread(ThreadSocketHandler, NULL, true) CreateThread(ThreadOpenConnections, NULL) CreateThread(ThreadMessageHandler, NULL)
init.cpp: CreateThread(ThreadRPCServer, NULL);
[email protected]님이 쓰셨습니다:
여기 있습니다. 충돌 오류 메시지를 말하는 걸 깜빡했네요:
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
debug.log를 보내 주시겠어요?
[email protected]님이 쓰셨습니다:
ddd 디버거로 제가 빌드한 bitcoind를 디버깅해 봤는데, 아직 별 성과가 없습니다. 항상 시스템 메모리를 전부 잡아먹고 끝내 충돌합니다. 제 빌드 문제인지 확인할 수 있게 최신 64비트 bitcoind 빌드를 다시 보내 주시겠어요?
영어 원문
I confirmed that ParseString has this problem, and uploaded the fixed
util.cpp to SVN.
string::npos == -1
Comparing unsigned int -1 (0xffffffff) with long unsigned int -1
(0xffffffffffffffff) results in the unsigned int being promoted to
64-bit, which is 0x00000000ffffffff != 0xffffffffffffffff.
[email protected] wrote:
> Here's another test run debug.log I got when debugging with gdb. The
> program started eating memory after the debug line "irc 8" and within a
> few seconds crashed with "terminate called after throwing an instance of
> 'std::bad_alloc'".
>
>> It's in RecvUntil, but I still can't see anything wrong with it. The
>> only thing I can think of is if the socket is receiving a spew of
>> characters.
>>
>> Try this irc.cpp. debug.log may grow rapidly so be ready to kill it.
>>
>> [email protected] wrote:
>>> debug.log attached
>>>
>>>> That narrows it down a lot. It didn't print any IRC activity in
>>>> debug.log, so I guess it couldn't have gotten past the RecvUntil.
>>>> Eyeballing it I don't see anything obvious. I guess it would have to
>>>> be either in ConnectSocket or RecvUntil.
>>>>
>>>> Try it with the attached irc.cpp and net.cpp and send me the debug.log.
>>>>
>>>> Or you could run it in gdb and step through ThreadIRCSeed
>>>> gdb --args bitcoin [switches]
>>>> b ThreadIRCSeed
>>>> run
>>>> step
>>>> or u to step over and up out of routines.
>>>>
>>>> [email protected] wrote:
>>>>> I get the error regardless of the getinfo. Commenting out
>>>>> ThreadIRCSeed fixed the problem.
>>>>>
>>>>>> Does it still do it if you didn't do getinfo?
>>>>>>
>>>>>> You could comment out the CreateThreads listed below, then re-enable
>>>>>> them one at a time until it does it again. Then we would know which
>>>>>> thread the problem is in.
>>>>>>
>>>>>> net.cpp, under // Start threads
>>>>>> CreateThread(ThreadIRCSeed, NULL)
>>>>>> CreateThread(ThreadSocketHandler, NULL, true)
>>>>>> CreateThread(ThreadOpenConnections, NULL)
>>>>>> CreateThread(ThreadMessageHandler, NULL)
>>>>>>
>>>>>> init.cpp:
>>>>>> CreateThread(ThreadRPCServer, NULL);
>>>>>>
>>>>>> [email protected] wrote:
>>>>>>> Here goes. I forgot to mention the crash error message:
>>>>>>>
>>>>>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>>>>> what(): std::bad_alloc
>>>>>>>
>>>>>>>> Could you send me the debug.log?
>>>>>>>>
>>>>>>>> [email protected] wrote:
>>>>>>>>> I tried debugging my build of bitcoind with ddd debugger, but
>>>>>>>>> didn't have much success yet. It always ends up taking all
>>>>>>>>> the system's memory and finally crashes. Could you please
>>>>>>>>> send me again the latest 64 bit build of bitcoind, so I can
>>>>>>>>> see if the problem is about my build?
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>
>
>
이메일 #189
Date: Sat, 06 Mar 2010 06:39:53 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Blog
To: Martti Malmi <[email protected]>
한글 번역
비트코인에 대한 기사를 쓰고 싶어 하는 블로그 필자가 있는데, 지금은 그의 질문에 답할 시간이 없습니다. 제가 그에게 당신을 소개해 주면 그의 질문에 답해 주실 생각이 있으신가요? 좋은 링크를 하나 얻을 수 있을지도 모릅니다.
블로그는 다음과 같습니다 http://themonetaryfuture.blogspot.com
영어 원문
There's a blog writer who wants to write a story about Bitcoin, but I
don't have time right now to answer his questions. Would you be
interested in answering his questions if I refer him to you? We might
get a good link out of it.
The blog is
http://themonetaryfuture.blogspot.com
이메일 #190
Date: Sun, 07 Mar 2010 02:46:35 +0200
From: [email protected]
To: Satoshi Nakamoto <[email protected]>
Subject: Re: Blog
한글 번역
네, 제가 할 수 있습니다.
비트코인에 대한 기사를 쓰고 싶어 하는 블로그 필자가 있는데, 지금은 그의 질문에 답할 시간이 없습니다. 제가 그에게 당신을 소개해 주면 그의 질문에 답해 주실 생각이 있으신가요? 좋은 링크를 하나 얻을 수 있을지도 모릅니다.
블로그는 다음과 같습니다 http://themonetaryfuture.blogspot.com
영어 원문
Yes, I could do that.
> There's a blog writer who wants to write a story about Bitcoin, but I
> don't have time right now to answer his questions. Would you be
> interested in answering his questions if I refer him to you? We might
> get a good link out of it.
>
> The blog is
> http://themonetaryfuture.blogspot.com