{"records":[{"id":1,"sid":1,"sat":1,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Satoshi Nakamoto","date":"2009-02-11","ts":"2009-02-11T22:27:00Z","url":"http://p2pfoundation.ning.com/forum/topics/bitcoin-open-source","zh":"<p>我开发了一套全新的开源 P2P 电子现金系统，名为 Bitcoin。它完全去中心化，并无中央服务器，亦无需可信第三方，因为一切皆以密码学证明代替信任。欢迎试用，抑或先看看截图与设计论文：\n在 <a href=\"http://www.bitcoin.org\">http://www.bitcoin.org</a> 下载 Bitcoin v0.1\n传统货币的根本问题在于，令其运转起来，需要全然依赖信任。人们必须信任中央银行不会令货币贬值，然而在法定货币的历史上，这种信任屡遭背弃。人们必须信任银行替我们保管钱财、并以电子方式转账，但它们在准备金微乎其微的情况之下，却一波波地放出信贷、吹起泡沫。我们还得把隐私托付于它们，指望它们不让骗子冒用身份、掏空我们的账户。而它们那庞大的管理开销，使微支付根本无法实现。\n上一代人就曾在多用户分时计算机系统上遭遇过类似的问题。在强加密出现之前，用户只能凭密码保护自己的文件，把隐私托付给系统管理员。管理员总能凭自己的判断凌驾于隐私之上——无论在他权衡隐私原则与其他考量之时，抑或是在上级的授意之下。后来强加密走向大众，信任便不再被需要。数据可以被保护到这样的程度：别人在物理上不可能接触，无论出于何种理由，无论借口多么动听，无论如何都不行。\n货币也该拥有同样的东西了。基于密码学证明、无需信任第三方中介的电子货币，可以让资金安全、交易轻松。\n这套系统的基础构件之一是数字签名。一枚数字硬币包含其所有者的公钥。转账之时，所有者对硬币与下一位所有者的公钥一同签名。任何人都可以验证这些签名，确认所有权链条。用它来保护所有权固然很好，却有一个大问题悬而未决：双重支出。任何所有者都可以把已经花掉的硬币再签给另一位所有者，试图重复花费。常规的解法，是由一家可信公司用中央数据库来检查双重支出，但这就又回到了信任模型。这家公司身处中枢位置，可以凌驾于用户之上，而维持公司运转所需的费用，也使微支付变得不切实际。\nBitcoin 的解法，是用点对点网络来检查双重支出。简而言之，这个网络就像一台分布式时间戳服务器，为花费硬币的第一笔交易盖章。它利用了信息易于传播、而难以扼杀的天性。工作原理详见设计论文：<a href=\"http://www.bitcoin.org/bitcoin.pdf\">http://www.bitcoin.org/bitcoin.pdf</a>\n结果，是一个没有单点故障的分布式系统。用户自己掌握资金的密码学密钥，彼此直接交易，由 P2P 网络帮助检查双重支出。\nSatoshi Nakamoto\n<a href=\"http://www.bitcoin.org\">http://www.bitcoin.org</a></p>","zhText":"我开发了一套全新的开源 P2P 电子现金系统，名为 Bitcoin。它完全去中心化，并无中央服务器，亦无需可信第三方，因为一切皆以密码学证明代替信任。欢迎试用，抑或先看看截图与设计论文：\n在 http://www.bitcoin.org 下载 Bitcoin v0.1\n传统货币的根本问题在于，令其运转起来，需要全然依赖信任。人们必须信任中央银行不会令货币贬值，然而在法定货币的历史上，这种信任屡遭背弃。人们必须信任银行替我们保管钱财、并以电子方式转账，但它们在准备金微乎其微的情况之下，却一波波地放出信贷、吹起泡沫。我们还得把隐私托付于它们，指望它们不让骗子冒用身份、掏空我们的账户。而它们那庞大的管理开销，使微支付根本无法实现。\n上一代人就曾在多用户分时计算机系统上遭遇过类似的问题。在强加密出现之前，用户只能凭密码保护自己的文件，把隐私托付给系统管理员。管理员总能凭自己的判断凌驾于隐私之上——无论在他权衡隐私原则与其他考量之时，抑或是在上级的授意之下。后来强加密走向大众，信任便不再被需要。数据可以被保护到这样的程度：别人在物理上不可能接触，无论出于何种理由，无论借口多么动听，无论如何都不行。\n货币也该拥有同样的东西了。基于密码学证明、无需信任第三方中介的电子货币，可以让资金安全、交易轻松。\n这套系统的基础构件之一是数字签名。一枚数字硬币包含其所有者的公钥。转账之时，所有者对硬币与下一位所有者的公钥一同签名。任何人都可以验证这些签名，确认所有权链条。用它来保护所有权固然很好，却有一个大问题悬而未决：双重支出。任何所有者都可以把已经花掉的硬币再签给另一位所有者，试图重复花费。常规的解法，是由一家可信公司用中央数据库来检查双重支出，但这就又回到了信任模型。这家公司身处中枢位置，可以凌驾于用户之上，而维持公司运转所需的费用，也使微支付变得不切实际。\nBitcoin 的解法，是用点对点网络来检查双重支出。简而言之，这个网络就像一台分布式时间戳服务器，为花费硬币的第一笔交易盖章。它利用了信息易于传播、而难以扼杀的天性。工作原理详见设计论文：http://www.bitcoin.org/bitcoin.pdf\n结果，是一个没有单点故障的分布式系统。用户自己掌握资金的密码学密钥，彼此直接交易，由 P2P 网络帮助检查双重支出。\nSatoshi Nakamoto\nhttp://www.bitcoin.org"},{"id":3,"sid":null,"sat":0,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Sepp Hasslberger","date":"2009-02-14","ts":"2009-02-14T15:30:00Z","url":"http://p2pfoundation.ning.com/xn/detail/2003008:Comment:9478","zh":"<p><a href=\"http://p2pfoundation.ning.com/profile/DanteGabryellMonson\">Dante</a> 在一封邮件里提到一个叫 Open Coin 的英国项目，方向似乎与 bitcoin 相近。\n两者之间会有协同效应吗？\n<a href=\"http://opencoin.org/\">http://opencoin.org/</a></p>","zhText":"Dante 在一封邮件里提到一个叫 Open Coin 的英国项目，方向似乎与 bitcoin 相近。\n两者之间会有协同效应吗？\nhttp://opencoin.org/"},{"id":4,"sid":2,"sat":1,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Satoshi Nakamoto","date":"2009-02-15","ts":"2009-02-15T16:42:00Z","url":"http://p2pfoundation.ning.com/xn/detail/2003008:Comment:9493","zh":"<p>有可能。他们谈的还是老的 Chaum 式中央铸币那一套，不过也许只是苦于除此之外别无选择。兴许他们会乐意走一条新路。\n很多人因为 1990 年代以来倒下的一批公司，便断定电子货币是条死路。我希望大家能够看清：埋葬那些系统的，仅仅是它们中心化受控的本质。而这一次，是我们头一回尝试一套去中心化的、不依赖信任的系统。</p>","zhText":"有可能。他们谈的还是老的 Chaum 式中央铸币那一套，不过也许只是苦于除此之外别无选择。兴许他们会乐意走一条新路。\n很多人因为 1990 年代以来倒下的一批公司，便断定电子货币是条死路。我希望大家能够看清：埋葬那些系统的，仅仅是它们中心化受控的本质。而这一次，是我们头一回尝试一套去中心化的、不依赖信任的系统。"},{"id":6,"sid":null,"sat":0,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Sepp Hasslberger","date":"2009-02-18","ts":"2009-02-18T14:41:00Z","url":"http://p2pfoundation.ning.com/xn/detail/2003008:Comment:9559","zh":"<p>我有两个问题，Satoshi。\n第一个与 Joerg 对代币/硬币供应需要信任的疑虑相关。\n据我理解，可创建的代币总量存在上限，且制造代币的难度梯度会随时间变化，开采会越来越难。是这样吗？\n代币/硬币总量有上限，这一点很重要。但同样重要的是，这个上限应当可以调整，以适应系统的采用人数。倘若用户数量随时间变化，硬币总量也得跟着变。\n有没有一个公式来决定代币总量应该是多少？如果有，是什么公式？\n倘若没有公式，那么由谁来做这个决定，依据什么标准来定？\n第二个问题我留着以后问。一次问一件事……</p>","zhText":"我有两个问题，Satoshi。\n第一个与 Joerg 对代币/硬币供应需要信任的疑虑相关。\n据我理解，可创建的代币总量存在上限，且制造代币的难度梯度会随时间变化，开采会越来越难。是这样吗？\n代币/硬币总量有上限，这一点很重要。但同样重要的是，这个上限应当可以调整，以适应系统的采用人数。倘若用户数量随时间变化，硬币总量也得跟着变。\n有没有一个公式来决定代币总量应该是多少？如果有，是什么公式？\n倘若没有公式，那么由谁来做这个决定，依据什么标准来定？\n第二个问题我留着以后问。一次问一件事……"},{"id":7,"sid":3,"sat":1,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Satoshi Nakamoto","date":"2009-02-18","ts":"2009-02-18T20:50:00Z","url":"http://p2pfoundation.ning.com/xn/detail/2003008:Comment:9562","zh":"<p>它是一个全球性的分布式数据库，按照参与者共同遵循的一套规则，经多数人同意向数据库添加条目：\n- 每当有人找到生成区块所需的工作证明，就会得到一些新硬币\n- 工作证明的难度每两周调整一次，目标为全网络平均每小时 6 个区块\n- 每个区块产出的硬币数量每 4 年减半\n可以说，硬币是由多数人发行的，发行量有限、且早已预定。\n举例来说，倘若你有 1000 个节点，每小时有 6 个节点能获得硬币，那么你很可能要等上一个星期，才能有所收获。\n关于 Sepp 的问题：确实并无任何机构充当中央银行或美联储，随着用户增长去调节货币供应。因为那需要一个可信方来决定价值，而我并不知道有什么办法，能让软件知晓现实世界中事物的价值。倘若真有某种聪明的办法，或者我们愿意信任某人去主动管理货币供应、将其与某种东西挂钩，那这些规则也完全可以编进程序。\n从这个意义上说，它更像一种贵金属。供应量并不因保值而变，而是预先确定，价值随行就市。随着用户增多，每枚硬币的价值上升。这有可能形成正反馈循环：用户增加，价值上涨，进而吸引更多用户来分享升值。</p>","zhText":"它是一个全球性的分布式数据库，按照参与者共同遵循的一套规则，经多数人同意向数据库添加条目：\n- 每当有人找到生成区块所需的工作证明，就会得到一些新硬币\n- 工作证明的难度每两周调整一次，目标为全网络平均每小时 6 个区块\n- 每个区块产出的硬币数量每 4 年减半\n可以说，硬币是由多数人发行的，发行量有限、且早已预定。\n举例来说，倘若你有 1000 个节点，每小时有 6 个节点能获得硬币，那么你很可能要等上一个星期，才能有所收获。\n关于 Sepp 的问题：确实并无任何机构充当中央银行或美联储，随着用户增长去调节货币供应。因为那需要一个可信方来决定价值，而我并不知道有什么办法，能让软件知晓现实世界中事物的价值。倘若真有某种聪明的办法，或者我们愿意信任某人去主动管理货币供应、将其与某种东西挂钩，那这些规则也完全可以编进程序。\n从这个意义上说，它更像一种贵金属。供应量并不因保值而变，而是预先确定，价值随行就市。随着用户增多，每枚硬币的价值上升。这有可能形成正反馈循环：用户增加，价值上涨，进而吸引更多用户来分享升值。"},{"id":15,"sid":5,"sat":1,"tid":2,"tt":"Welcome to the new Bitcoin forum!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-11-22","ts":"2009-11-22T18:04:28Z","url":"https://bitcointalk.org/index.php?topic=5.msg28#msg28","zh":"<p>欢迎来到新的 Bitcoin 论坛！</p><p>旧论坛仍可访问：\n<a href=\"http://bitcoin.sourceforge.net/boards/index.php\">http://bitcoin.sourceforge.net/boards/index.php</a></p><p>我会在这里转载一些精选帖子，并在力所能及之处，对问题给出更新的回答。</p><p>FAQ\n<a href=\"http://bitcoin.sourceforge.net/wiki/index.php?page=FAQ\">http://bitcoin.sourceforge.net/wiki/index.php?page=FAQ</a></p><p>下载\n<a href=\"http://sourceforge.net/projects/bitcoin/files/\">http://sourceforge.net/projects/bitcoin/files/</a></p>","zhText":"欢迎来到新的 Bitcoin 论坛！\n旧论坛仍可访问：\nhttp://bitcoin.sourceforge.net/boards/index.php\n我会在这里转载一些精选帖子，并在力所能及之处，对问题给出更新的回答。\nFAQ\nhttp://bitcoin.sourceforge.net/wiki/index.php?page=FAQ\n下载\nhttp://sourceforge.net/projects/bitcoin/files/"},{"id":16,"sid":6,"sat":1,"tid":3,"tt":"Repost: Bitcoin Maturation","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-22","ts":"2009-11-22T18:31:44Z","url":"https://bitcointalk.org/index.php?topic=6.msg29#msg29","zh":"<p>--------------------\nbitcoinbitcoin:\nBitcoin 成熟过程\nPosted:Thu 01 of Oct, 2009 (14:12 UTC)</p><p>从用户视角看，比特币的成熟过程可以分为 8 个阶段。</p><p>1. 第一次点击 Generate Coins 时发生的初始网络交易。\n2. 从初始网络交易到比特币条目准备出现在 All Transactions 列表之间的时间。\n3. 比特币条目从 All Transaction 区域之外进入其内的变化。\n4. 比特币出现在 All Transfers 列表之后，到 Description 准备变为 Generated (50.00 matures in x more blocks) 之间的时间。\n5. Description 变为 Generated (50.00 matures in x more blocks) 的变化。\n6. 从 Description 显示 Generated (50.00 matures in x more blocks) 到它准备变为 Generated 之间的时间。\n7. Description 变为 Generated 的变化。\n8. Description 变为 Generated 之后的时间。</p><p>哪些阶段需要网络连接、大量本地 CPU 占用或大量远程 CPU 占用？这些阶段有没有名称？</p><p>--------------------\nsirius-m:\nRe: Bitcoin 成熟过程\nPosted:Thu 22 of Oct, 2009 (02:36 UTC)</p><p>据我所知，点击 Generate Coins 之时，并无网络交易——你的计算机不过是开始计算下一个工作证明罢了。生成硬币时，CPU 占用率是 100%。</p><p>在这个例子当中，网络连接用于广播你已创建的工作证明区块的信息（正是它使你得以获得新硬币）。若要成功生成硬币，则需要持续的网络连接——如此这般，当别人赶在你之前拿到当前区块时，你才能立即开始计算下一个区块。</p>","zhText":"--------------------\nbitcoinbitcoin:\nBitcoin 成熟过程\nPosted:Thu 01 of Oct, 2009 (14:12 UTC)\n从用户视角看，比特币的成熟过程可以分为 8 个阶段。\n1. 第一次点击 Generate Coins 时发生的初始网络交易。\n2. 从初始网络交易到比特币条目准备出现在 All Transactions 列表之间的时间。\n3. 比特币条目从 All Transaction 区域之外进入其内的变化。\n4. 比特币出现在 All Transfers 列表之后，到 Description 准备变为 Generated (50.00 matures in x more blocks) 之间的时间。\n5. Description 变为 Generated (50.00 matures in x more blocks) 的变化。\n6. 从 Description 显示 Generated (50.00 matures in x more blocks) 到它准备变为 Generated 之间的时间。\n7. Description 变为 Generated 的变化。\n8. Description 变为 Generated 之后的时间。\n哪些阶段需要网络连接、大量本地 CPU 占用或大量远程 CPU 占用？这些阶段有没有名称？\n--------------------\nsirius-m:\nRe: Bitcoin 成熟过程\nPosted:Thu 22 of Oct, 2009 (02:36 UTC)\n据我所知，点击 Generate Coins 之时，并无网络交易——你的计算机不过是开始计算下一个工作证明罢了。生成硬币时，CPU 占用率是 100%。\n在这个例子当中，网络连接用于广播你已创建的工作证明区块的信息（正是它使你得以获得新硬币）。若要成功生成硬币，则需要持续的网络连接——如此这般，当别人赶在你之前拿到当前区块时，你才能立即开始计算下一个区块。"},{"id":18,"sid":7,"sat":1,"tid":4,"tt":"Repost: Request: Make this anonymous?","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-22","ts":"2009-11-22T18:32:00Z","url":"https://bitcointalk.org/index.php?topic=7.msg30#msg30","zh":"<p>--------------------\nanonguy54:\n请求：能不能做成匿名的？\nPosted:Thu 15 of Oct, 2009 (19:58 UTC)</p><p>有没有计划把这个服务做成匿名的？</p><p>例如，能通过 Tor 路由 BitCoin。</p>","zhText":"--------------------\nanonguy54:\n请求：能不能做成匿名的？\nPosted:Thu 15 of Oct, 2009 (19:58 UTC)\n有没有计划把这个服务做成匿名的？\n例如，能通过 Tor 路由 BitCoin。"},{"id":17,"sid":8,"sat":1,"tid":3,"tt":"Repost: Bitcoin Maturation","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-22","ts":"2009-11-22T18:34:21Z","url":"https://bitcointalk.org/index.php?topic=6.msg31#msg31","zh":"<p>在尝试生成硬币（区块）期间，以及成功生成的那一刻，保持网络连接极为重要。</p><p>1) 生成期间（状态栏显示 \"Generating\"、你正用 CPU 寻找工作证明之时），务必持续与网络保持联系以接收最新区块。倘若你的区块没有链接到最新区块，它兴许就不被接受。</p><p>2) 你成功生成一个区块之后，它便会立即广播到网络。其他节点必须收到它、并链接到它，它才能被接受为新的最新区块。</p><p>可以把它想象成众人协作连成一条链。你要加上一环，必先找到链的当前末端。倘若你在找到最后一环之后离开一小时，方才锻造出自己的链环，回来再把它接到一小时前的末端之上，别人兴许已经加了若干环，他们不会愿意使用你这个如今从中间岔出去的链环。</p><p>区块创建之后，有 120 个区块的成熟期，以便在可以花费之前，百分之百确认该区块属于主链。在此期间，你的节点对这个区块什么也不做，不过是等待别的区块添加到你的区块之后。这段时间你并不必在线。</p>","zhText":"在尝试生成硬币（区块）期间，以及成功生成的那一刻，保持网络连接极为重要。\n1) 生成期间（状态栏显示 \"Generating\"、你正用 CPU 寻找工作证明之时），务必持续与网络保持联系以接收最新区块。倘若你的区块没有链接到最新区块，它兴许就不被接受。\n2) 你成功生成一个区块之后，它便会立即广播到网络。其他节点必须收到它、并链接到它，它才能被接受为新的最新区块。\n可以把它想象成众人协作连成一条链。你要加上一环，必先找到链的当前末端。倘若你在找到最后一环之后离开一小时，方才锻造出自己的链环，回来再把它接到一小时前的末端之上，别人兴许已经加了若干环，他们不会愿意使用你这个如今从中间岔出去的链环。\n区块创建之后，有 120 个区块的成熟期，以便在可以花费之前，百分之百确认该区块属于主链。在此期间，你的节点对这个区块什么也不做，不过是等待别的区块添加到你的区块之后。这段时间你并不必在线。"},{"id":19,"sid":9,"sat":1,"tid":4,"tt":"Repost: Request: Make this anonymous?","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-22","ts":"2009-11-22T18:35:15Z","url":"https://bitcointalk.org/index.php?topic=7.msg32#msg32","zh":"<p>0.2 版会加入代理设置，可以通过 TOR 连接。我已经仔细排查过，确保在代理模式下它不使用 DNS，也不会做任何泄露你 IP 的事情。</p>","zhText":"0.2 版会加入代理设置，可以通过 TOR 连接。我已经仔细排查过，确保在代理模式下它不使用 DNS，也不会做任何泄露你 IP 的事情。"},{"id":25,"sid":10,"sat":1,"tid":5,"tt":"Repost: How anonymous are bitcoins?","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-25","ts":"2009-11-25T18:15:57Z","url":"https://bitcointalk.org/index.php?topic=8.msg33#msg33","zh":"<p>--------------------\nbitcoinbitcoin:\n比特币的匿名性如何？</p><p>网络上的节点能分辨硬币从哪个比特币地址发出、发到哪个比特币地址吗？区块里是否保存着比特币转来转去的历史？节点能判断哪些比特币地址属于哪些 IP 地址吗？bitcoin 首次启动时，有没有命令行选项可以启用 sock 代理？如果向一个通过 NAT（网络地址转换）接入了多个客户端的 IP 地址发送比特币，会发生什么？</p>","zhText":"--------------------\nbitcoinbitcoin:\n比特币的匿名性如何？\n网络上的节点能分辨硬币从哪个比特币地址发出、发到哪个比特币地址吗？区块里是否保存着比特币转来转去的历史？节点能判断哪些比特币地址属于哪些 IP 地址吗？bitcoin 首次启动时，有没有命令行选项可以启用 sock 代理？如果向一个通过 NAT（网络地址转换）接入了多个客户端的 IP 地址发送比特币，会发生什么？"},{"id":26,"sid":11,"sat":1,"tid":5,"tt":"Repost: How anonymous are bitcoins?","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-25","ts":"2009-11-25T18:17:23Z","url":"https://bitcointalk.org/index.php?topic=8.msg34#msg34","zh":"<p>> 网络上的节点能分辨硬币从哪个比特币\n> 地址发出、发到哪个比特币地址吗？区块里是否保存着\n> 比特币转来转去的历史？</p><p>比特币从一个比特币地址发往另一个比特币地址，而比特币地址，本质上便是不含任何身份信息的随机数。</p><p>按 IP 地址发送时，交易仍会写入一个比特币地址。IP 地址只是用来连接收款方的计算机，向其索取一个新的比特币地址、把交易直接交给对方并获得确认。</p><p>区块保存着硬币被转往哪些比特币地址的历史。倘若使用这些比特币地址的人身份不明、且每个地址只用一次，那么这些信息所能表明的，不过是：某个身份不明的人，给另一个人转了某个数额。</p><p>匿名或化名的可能性，取决于你并不把任何身份信息与你所用的比特币地址关联起来。倘若你在网上公布了自己的比特币地址，那么这个地址及其全部交易，便与你发帖所用的名字关联在了一起。倘若你用的是未曾关联真实身份的马甲，那仍然是化名。</p><p>若想获得更高的隐私，最好每个比特币地址只用一次。你随时可以在 Options->Change Your Address 里更换地址。按 IP 地址转账之时，每次都会自动使用新的比特币地址。</p><p>> 节点能判断哪些比特币地址属于哪些 IP 地址吗？</p><p>不能。</p><p>> bitcoin 首次启动时，有没有命令行选项\n> 可以启用 sock 代理？</p><p>在下一个版本（0.2 版）中，从第一次运行就走代理的命令行是：\nbitcoin -proxy=127.0.0.1:9050</p><p>TOR 的问题在于，Bitcoin 用来初始发现其他节点的 IRC 服务器封禁 TOR 出口节点——所有 IRC 服务器都这么干。如果你之前已经连上过一次，那已经有了种子节点；但第一次运行时，你需要提供一个节点地址，像这样：\nbitcoin -proxy=127.0.0.1:9050 -addnode=<someipaddress></p><p>如果有谁运行着静态 IP、可接受入站连接的节点，愿意把自己的 IP 贴出来供 -addnode 使用，那就太好了。</p><p>> 如果向一个通过 NAT（网络地址转换）接入了\n> 多个客户端的 IP 地址发送比特币，会发生什么？</p><p>你在 NAT 上把 8333 端口转发给哪台机器，哪台机器就会收到。如果你的路由器转发时能改端口号，你可以让不止一个客户端收到。比如把 8334 转发到某台计算机的 8333 端口，发送方就可以发到 \"x.x.x.x:8334\"</p><p>如果你的 NAT 不能转换端口号，目前没有修改 bitcoin 入站绑定端口的命令行选项，但我会研究一下。</p>","zhText":"> 网络上的节点能分辨硬币从哪个比特币\n> 地址发出、发到哪个比特币地址吗？区块里是否保存着\n> 比特币转来转去的历史？\n比特币从一个比特币地址发往另一个比特币地址，而比特币地址，本质上便是不含任何身份信息的随机数。\n按 IP 地址发送时，交易仍会写入一个比特币地址。IP 地址只是用来连接收款方的计算机，向其索取一个新的比特币地址、把交易直接交给对方并获得确认。\n区块保存着硬币被转往哪些比特币地址的历史。倘若使用这些比特币地址的人身份不明、且每个地址只用一次，那么这些信息所能表明的，不过是：某个身份不明的人，给另一个人转了某个数额。\n匿名或化名的可能性，取决于你并不把任何身份信息与你所用的比特币地址关联起来。倘若你在网上公布了自己的比特币地址，那么这个地址及其全部交易，便与你发帖所用的名字关联在了一起。倘若你用的是未曾关联真实身份的马甲，那仍然是化名。\n若想获得更高的隐私，最好每个比特币地址只用一次。你随时可以在 Options->Change Your Address 里更换地址。按 IP 地址转账之时，每次都会自动使用新的比特币地址。\n> 节点能判断哪些比特币地址属于哪些 IP 地址吗？\n不能。\n> bitcoin 首次启动时，有没有命令行选项\n> 可以启用 sock 代理？\n在下一个版本（0.2 版）中，从第一次运行就走代理的命令行是：\nbitcoin -proxy=127.0.0.1:9050\nTOR 的问题在于，Bitcoin 用来初始发现其他节点的 IRC 服务器封禁 TOR 出口节点——所有 IRC 服务器都这么干。如果你之前已经连上过一次，那已经有了种子节点；但第一次运行时，你需要提供一个节点地址，像这样：\nbitcoin -proxy=127.0.0.1:9050 -addnode=\n如果有谁运行着静态 IP、可接受入站连接的节点，愿意把自己的 IP 贴出来供 -addnode 使用，那就太好了。\n> 如果向一个通过 NAT（网络地址转换）接入了\n> 多个客户端的 IP 地址发送比特币，会发生什么？\n你在 NAT 上把 8333 端口转发给哪台机器，哪台机器就会收到。如果你的路由器转发时能改端口号，你可以让不止一个客户端收到。比如把 8334 转发到某台计算机的 8333 端口，发送方就可以发到 \"x.x.x.x:8334\"\n如果你的 NAT 不能转换端口号，目前没有修改 bitcoin 入站绑定端口的命令行选项，但我会研究一下。"},{"id":27,"sid":12,"sat":1,"tid":6,"tt":"Repost: Linux/UNIX compile","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-27","ts":"2009-11-27T17:17:22Z","url":"https://bitcointalk.org/index.php?topic=9.msg36#msg36","zh":"<p>--------------------\nscott:\nLinux/UNIX 编译\nPosted:Thu 08 of Oct, 2009 (05:49 UTC)</p><p>能否提供在 Linux 上编译安装 BitCoin 的说明或补丁？能有一个命令行版本就太好了。</p>","zhText":"--------------------\nscott:\nLinux/UNIX 编译\nPosted:Thu 08 of Oct, 2009 (05:49 UTC)\n能否提供在 Linux 上编译安装 BitCoin 的说明或补丁？能有一个命令行版本就太好了。"},{"id":28,"sid":13,"sat":1,"tid":6,"tt":"Repost: Linux/UNIX compile","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2009-11-27","ts":"2009-11-27T17:27:09Z","url":"https://bitcointalk.org/index.php?topic=9.msg37#msg37","zh":"<p>Linux 版马上就到。Martti 的 Linux 移植已合并进主代码分支，New Liberty Standard 一直在测试。它会随下一个版本 0.2 一起发布。</p><p>命令行排在 0.2 之后的待办清单上。</p>","zhText":"Linux 版马上就到。Martti 的 Linux 移植已合并进主代码分支，New Liberty Standard 一直在测试。它会随下一个版本 0.2 一起发布。\n命令行排在 0.2 之后的待办清单上。"},{"id":29,"sid":14,"sat":1,"tid":7,"tt":"[OLD THREAD] Bitcoin version 0.2 development status","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-11-27","ts":"2009-11-27T22:48:39Z","url":"https://bitcointalk.org/index.php?topic=10.msg38#msg38","zh":"<p>我们一直在为下一个版本努力改进。Martti（sirius-m）加入了一些不错的特性，让它更易用、更容易在后台运行：\n - 最小化到系统托盘选项\n - 开机自启选项，可以自动在后台保持运行\n - 全新的选项对话框布局\n - 除压缩包下载外，新增 Windows 安装 EXE</p><p>我则一直在打磨网络代码，并为后续功能打基础。0.2 版还将带来：\n - 生成硬币的多处理器支持\n - 代理支持</p>","zhText":"我们一直在为下一个版本努力改进。Martti（sirius-m）加入了一些不错的特性，让它更易用、更容易在后台运行：\n - 最小化到系统托盘选项\n - 开机自启选项，可以自动在后台保持运行\n - 全新的选项对话框布局\n - 除压缩包下载外，新增 Windows 安装 EXE\n我则一直在打磨网络代码，并为后续功能打基础。0.2 版还将带来：\n - 生成硬币的多处理器支持\n - 代理支持"},{"id":30,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"madhatter","date":"2009-12-09","ts":"2009-12-09T05:34:46Z","url":"https://bitcointalk.org/index.php?topic=12.msg40#msg40","zh":"<p>嘿，</p><p>首先必须说，这是一个绝妙的构想。我梦想 P2P 货币系统已经很久很久了。</p><p>致以我全部的赞许与敬意。</p><p>有几点建议：</p><p>- bitcoin 软件与对端建立连接时（客户端 TCP 套接字），应改由客户端发送握手字符串。现在是服务端（服务端 TCP 套接字）先发握手。我的理由当然是为了匿名。ISP 对客户端做端口扫描、探测到他们在运行这个程序，实在是太容易了。</p><p>- 在握手阶段使用某种加密（和上面的建议相配），在 DPI（深度包检测）面前混淆软件的身份。我真正惦记的是中国、伊朗这类不自由（指自由意义上的）国家的人们。</p><p>- 需要某种 API，让这套系统能与网站集成、提供即时开通的服务。一个简单的 https 回执机制就能创造奇迹。让客户端把每笔收到的付款连同全部相关信息 POST 到一个 https url，并提供状态更新。最好还有一个出账支付机制，这样可以自动化地付款（以及批量付款）。状态可以通过 https 回执接口返回。</p><p>- 固定端口/随机端口。加一个设置项，随机分配运行端口（同时也能为防火墙极严的环境固定端口）。</p><p>- UPnP 支持。让客户端自动在上级路由器上创建端口转发。默认启用，可在选项菜单关闭。</p><p>- 支持为 *NIX 系统编译无头（仅控制台）版本。还能直接作为网络服务运行，不妨留一个可 telnet 的控制端口（甚至用 unix 套接字也行）。</p>","zhText":"嘿，\n首先必须说，这是一个绝妙的构想。我梦想 P2P 货币系统已经很久很久了。\n致以我全部的赞许与敬意。\n有几点建议：\n- bitcoin 软件与对端建立连接时（客户端 TCP 套接字），应改由客户端发送握手字符串。现在是服务端（服务端 TCP 套接字）先发握手。我的理由当然是为了匿名。ISP 对客户端做端口扫描、探测到他们在运行这个程序，实在是太容易了。\n- 在握手阶段使用某种加密（和上面的建议相配），在 DPI（深度包检测）面前混淆软件的身份。我真正惦记的是中国、伊朗这类不自由（指自由意义上的）国家的人们。\n- 需要某种 API，让这套系统能与网站集成、提供即时开通的服务。一个简单的 https 回执机制就能创造奇迹。让客户端把每笔收到的付款连同全部相关信息 POST 到一个 https url，并提供状态更新。最好还有一个出账支付机制，这样可以自动化地付款（以及批量付款）。状态可以通过 https 回执接口返回。\n- 固定端口/随机端口。加一个设置项，随机分配运行端口（同时也能为防火墙极严的环境固定端口）。\n- UPnP 支持。让客户端自动在上级路由器上创建端口转发。默认启用，可在选项菜单关闭。\n- 支持为 *NIX 系统编译无头（仅控制台）版本。还能直接作为网络服务运行，不妨留一个可 telnet 的控制端口（甚至用 unix 套接字也行）。"},{"id":31,"sid":15,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-09","ts":"2009-12-09T18:45:10Z","url":"https://bitcointalk.org/index.php?topic=12.msg41#msg41","zh":"<p>有用的建议，谢谢。</p><blockquote><p>- bitcoin 软件与对端建立连接时（客户端 TCP 套接字），应改由客户端发送握手字符串。现在是服务端（服务端 TCP 套接字）先发握手。我的理由当然是为了匿名。ISP 对客户端做端口扫描、探测到他们在运行这个程序，实在是太容易了。</p></blockquote><p>这确是个好主意。接受连接的一方，只需忍住不发任何东西，直到收到有效的握手。端口扫描所能碰到的，不过是一条不会自报家门的死连接。</p><blockquote><p>- 在握手阶段使用某种加密（和上面的建议相配），在 DPI（深度包检测）面前混淆软件的身份。我真正惦记的是中国、伊朗这类不自由（指自由意义上的）国家的人们。</p></blockquote><p>我想过最终给所有连接加上 SSL。我猜在 DPI 面前，不上 SSL 的一切手段都是白搭。兴许更好更快的办法，是走 TOR 连接，0.2 就可以做到。</p><blockquote><p>- 需要某种 API，让这套系统能与网站集成、提供即时开通的服务。一个简单的 https 回执机制就能创造奇迹。让客户端把每笔收到的付款连同全部相关信息 POST 到一个 https url，并提供状态更新。最好还有一个出账支付机制，这样可以自动化地付款（以及批量付款）。状态可以通过 https 回执接口返回。</p></blockquote><p>这是 0.2 之后日程表上的头等大事之一。</p><blockquote><p>- 固定端口/随机端口。加一个设置项，随机分配运行端口（同时也能为防火墙极严的环境固定端口）。</p></blockquote><p>是啊，倘若端口永远是同一个，其他隐身手段，也就没什么意义了。</p><blockquote><p>- UPnP 支持。让客户端自动在上级路由器上创建端口转发。默认启用，可在选项菜单关闭。</p></blockquote><p>我很期待试 UPnP。大多数 P2P 客户端一般默认都启用 UPnP 吗？</p><blockquote><p>- 支持为 *NIX 系统编译无头（仅控制台）版本。还能直接作为网络服务运行，不妨留一个可 telnet 的控制端口（甚至用 unix 套接字也行）。</p></blockquote><p>我还在思量管理接口怎样设计为最好。兴许用命令行命令与后台守护进程通信，查询收到的交易、发起转账，如此这般对自动化更为友好。抑或在某些非 80 端口上开一个 http 接口，用浏览器管理，如何？</p>","zhText":"有用的建议，谢谢。\n- bitcoin 软件与对端建立连接时（客户端 TCP 套接字），应改由客户端发送握手字符串。现在是服务端（服务端 TCP 套接字）先发握手。我的理由当然是为了匿名。ISP 对客户端做端口扫描、探测到他们在运行这个程序，实在是太容易了。\n\n这确是个好主意。接受连接的一方，只需忍住不发任何东西，直到收到有效的握手。端口扫描所能碰到的，不过是一条不会自报家门的死连接。\n- 在握手阶段使用某种加密（和上面的建议相配），在 DPI（深度包检测）面前混淆软件的身份。我真正惦记的是中国、伊朗这类不自由（指自由意义上的）国家的人们。\n\n我想过最终给所有连接加上 SSL。我猜在 DPI 面前，不上 SSL 的一切手段都是白搭。兴许更好更快的办法，是走 TOR 连接，0.2 就可以做到。\n- 需要某种 API，让这套系统能与网站集成、提供即时开通的服务。一个简单的 https 回执机制就能创造奇迹。让客户端把每笔收到的付款连同全部相关信息 POST 到一个 https url，并提供状态更新。最好还有一个出账支付机制，这样可以自动化地付款（以及批量付款）。状态可以通过 https 回执接口返回。\n\n这是 0.2 之后日程表上的头等大事之一。\n- 固定端口/随机端口。加一个设置项，随机分配运行端口（同时也能为防火墙极严的环境固定端口）。\n\n是啊，倘若端口永远是同一个，其他隐身手段，也就没什么意义了。\n- UPnP 支持。让客户端自动在上级路由器上创建端口转发。默认启用，可在选项菜单关闭。\n\n我很期待试 UPnP。大多数 P2P 客户端一般默认都启用 UPnP 吗？\n- 支持为 *NIX 系统编译无头（仅控制台）版本。还能直接作为网络服务运行，不妨留一个可 telnet 的控制端口（甚至用 unix 套接字也行）。\n\n我还在思量管理接口怎样设计为最好。兴许用命令行命令与后台守护进程通信，查询收到的交易、发起转账，如此这般对自动化更为友好。抑或在某些非 80 端口上开一个 http 接口，用浏览器管理，如何？"},{"id":61,"sid":null,"sat":0,"tid":9,"tt":"Questions about Bitcoin","src":"Bitcointalk","author":"SmokeTooMuch","date":"2009-12-10","ts":"2009-12-10T13:13:51Z","url":"https://bitcointalk.org/index.php?topic=13.msg43#msg43","zh":"<p>你好，昨天我偶然发现了这个了不起的支付方案。</p><p>我在许多网站上读了个遍，现在还有一些问题没找到答案。</p><p>1. Bitcoin 真的匿名吗？我是说彻底、完全的匿名？我的 ISP 能检测到我发送或接收过 Bitcoin 付款吗？甚至能看出我正在运行 Bitcoin 吗？</p><p>2. 如果我理解得对，付款对象看不到我是谁。这是否意味着他们看不到我的真实 IP 地址，只能看到比特币地址？就算他们监控自己的网络连接之类的东西也一样？</p><p>3. 如果 ISP 有办法看出我在运行 Bitcoin，或者付款对象能查到我的 IP，那么把流量通过 VPN 隧道（比如用 Paysafecard 付费购买）是不是更安全？这会不会反而危险，因为 VPN 提供商能截获我的付款？</p><p>4. 要不丢\"钱\"，需要备份哪些文件？只备份 wallet.dat，还是整个 Bitcoin AppData 目录？</p><p>5. 难道不能把钱包复制多份、在不同机器上使用吗？这样什么也不用干就能让钱翻倍。\n针对这种情况有安全措施吗？</p><p>6. 有人丢了钱包，系统里有办法重新生成丢失的硬币吗？否则 2100 万的总量上限就不成立了。\n（我不是说要为某个人找回丢失的硬币，而是说：假如全部 2100 万枚硬币都已生成，有人丢了装有 100 万枚的钱包，其他人现在能再生成这 100 万枚吗？还是说它们对比特币网络而言彻底消失了？）</p><p>7. 我看到目前大约有 130k 个区块。但我的电脑上只显示约 24k。是出了什么问题，还是这是正常现象？</p><p>8. 恐怕我还没完全搞懂比特币的生成机制。一台机器平均 24 小时能生成多少硬币？</p><p>9. 我知道应该把 8333 端口转发到运行 bitcoin 的机器。那这个端口是 TCP 还是 UDP？\n生成硬币需要这个端口吗？还是只有支付交易才需要？</p><p>10. 我看到 bitcoin 的源码对所有人开放。这会不会构成实际危险？如果代码被动了手脚，某些人就能比别人生成更多比特币，不是吗？这将是严重的安全漏洞。</p><p>11. 我见过一个公式，可以算出一段时间内会生成的硬币数量，似乎与最大 CPU 速度和可用算力有关。找不到了，所以想请你解释一下硬币生成机制。慢机器产出的硬币和高档机器一样多吗？</p><p>12. 除 new liberty standard 之外，还有其他兑换系统或潜在的交易对象吗？</p><p>13. 我的系统崩溃时会怎样？钱包是自动保存的，还是只在手动关闭 bitcoin 时保存？（甚至在硬币生成或付款完成时实时保存？）</p><p>14. 有办法看到迄今为止生成了多少比特币吗？Bitcoin 诞生多久了？</p><p>我知道……问题很多很多，但我对这个服务真的很感兴趣，想在更频繁地使用它之前弄懂一切。</p><p>（抱歉我英语不好……）</p><p><b>EDIT 2014-10-31:</b> 语法与笔误</p>","zhText":"你好，昨天我偶然发现了这个了不起的支付方案。\n我在许多网站上读了个遍，现在还有一些问题没找到答案。\n1. Bitcoin 真的匿名吗？我是说彻底、完全的匿名？我的 ISP 能检测到我发送或接收过 Bitcoin 付款吗？甚至能看出我正在运行 Bitcoin 吗？\n2. 如果我理解得对，付款对象看不到我是谁。这是否意味着他们看不到我的真实 IP 地址，只能看到比特币地址？就算他们监控自己的网络连接之类的东西也一样？\n3. 如果 ISP 有办法看出我在运行 Bitcoin，或者付款对象能查到我的 IP，那么把流量通过 VPN 隧道（比如用 Paysafecard 付费购买）是不是更安全？这会不会反而危险，因为 VPN 提供商能截获我的付款？\n4. 要不丢\"钱\"，需要备份哪些文件？只备份 wallet.dat，还是整个 Bitcoin AppData 目录？\n5. 难道不能把钱包复制多份、在不同机器上使用吗？这样什么也不用干就能让钱翻倍。\n针对这种情况有安全措施吗？\n6. 有人丢了钱包，系统里有办法重新生成丢失的硬币吗？否则 2100 万的总量上限就不成立了。\n（我不是说要为某个人找回丢失的硬币，而是说：假如全部 2100 万枚硬币都已生成，有人丢了装有 100 万枚的钱包，其他人现在能再生成这 100 万枚吗？还是说它们对比特币网络而言彻底消失了？）\n7. 我看到目前大约有 130k 个区块。但我的电脑上只显示约 24k。是出了什么问题，还是这是正常现象？\n8. 恐怕我还没完全搞懂比特币的生成机制。一台机器平均 24 小时能生成多少硬币？\n9. 我知道应该把 8333 端口转发到运行 bitcoin 的机器。那这个端口是 TCP 还是 UDP？\n生成硬币需要这个端口吗？还是只有支付交易才需要？\n10. 我看到 bitcoin 的源码对所有人开放。这会不会构成实际危险？如果代码被动了手脚，某些人就能比别人生成更多比特币，不是吗？这将是严重的安全漏洞。\n11. 我见过一个公式，可以算出一段时间内会生成的硬币数量，似乎与最大 CPU 速度和可用算力有关。找不到了，所以想请你解释一下硬币生成机制。慢机器产出的硬币和高档机器一样多吗？\n12. 除 new liberty standard 之外，还有其他兑换系统或潜在的交易对象吗？\n13. 我的系统崩溃时会怎样？钱包是自动保存的，还是只在手动关闭 bitcoin 时保存？（甚至在硬币生成或付款完成时实时保存？）\n14. 有办法看到迄今为止生成了多少比特币吗？Bitcoin 诞生多久了？\n我知道……问题很多很多，但我对这个服务真的很感兴趣，想在更频繁地使用它之前弄懂一切。\n（抱歉我英语不好……）\nEDIT 2014-10-31: 语法与笔误"},{"id":33,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-10","ts":"2009-12-10T14:00:17Z","url":"https://bitcointalk.org/index.php?topic=12.msg44#msg44","zh":"<p>大多数现代 P2P 软件默认都尝试 UPnP，当然一般都可以在选项里关掉。</p><p>嗯，我也想过这个问题。你的第一个方案兴许最好。如此这般，你可以把服务端守护进程\"无头\"地跑着，前端随你挑。（前端之一，可以是跑在你喜欢的 web 服务器上的 PHP [或 C++ CGI] 程序。）</p><p>如此这般，前后端还能跑在不同的机器上。（比如把无头后端放在有静态 IP 的 Linux 服务器上方便收款 [按 ip 付款模式]，管理用的前端客户端则跑在 windows/mac 或别的什么上。）前端还可以跑在手机这类 CPU 算力很低的设备上。*暗示暗示*</p><p>我还想到一件事：种子引导。应用可以在下载之前预置种子。你可以每天准备一份预置种子的新压缩包。如此，便可以完全抛弃 IRC 连接。（或者如你所说，当备用手段。我还没审计 IRC 连接的代码，我想到几种可能的利用方式，但在确认它们真实存在之前，不想说。）预置种子，还能一并解决 TOR+IRC 的问题。我知道会有人想通过 I2P+TOR 运行这套系统。</p><p>另外还可以预置区块，如此，首次运行就不用下载了。（在较慢的 ADSL 上下载 28,000 个区块要花很久，我不敢想象有几百万个区块时得等多久——一辈子。）</p><p>能否给我 CVS 权限什么的？（不行的话，我可以给你发补丁。）我想帮上忙。我主要是 Linux/BSD 背景，愿意在这些方面出力。</p><p>干杯！</p><blockquote><p>我很期待试 UPnP。大多数 P2P 客户端一般默认都启用 UPnP 吗？</p><p>我还在思量管理接口怎样设计为最好。兴许用命令行命令与后台守护进程通信，查询收到的交易、发起转账，如此这般对自动化更为友好。抑或在某些非 80 端口上开一个 http 接口，用浏览器管理，如何？</p></blockquote>","zhText":"大多数现代 P2P 软件默认都尝试 UPnP，当然一般都可以在选项里关掉。\n嗯，我也想过这个问题。你的第一个方案兴许最好。如此这般，你可以把服务端守护进程\"无头\"地跑着，前端随你挑。（前端之一，可以是跑在你喜欢的 web 服务器上的 PHP [或 C++ CGI] 程序。）\n如此这般，前后端还能跑在不同的机器上。（比如把无头后端放在有静态 IP 的 Linux 服务器上方便收款 [按 ip 付款模式]，管理用的前端客户端则跑在 windows/mac 或别的什么上。）前端还可以跑在手机这类 CPU 算力很低的设备上。*暗示暗示*\n我还想到一件事：种子引导。应用可以在下载之前预置种子。你可以每天准备一份预置种子的新压缩包。如此，便可以完全抛弃 IRC 连接。（或者如你所说，当备用手段。我还没审计 IRC 连接的代码，我想到几种可能的利用方式，但在确认它们真实存在之前，不想说。）预置种子，还能一并解决 TOR+IRC 的问题。我知道会有人想通过 I2P+TOR 运行这套系统。\n另外还可以预置区块，如此，首次运行就不用下载了。（在较慢的 ADSL 上下载 28,000 个区块要花很久，我不敢想象有几百万个区块时得等多久——一辈子。）\n能否给我 CVS 权限什么的？（不行的话，我可以给你发补丁。）我想帮上忙。我主要是 Linux/BSD 背景，愿意在这些方面出力。\n干杯！\n我很期待试 UPnP。大多数 P2P 客户端一般默认都启用 UPnP 吗？\n我还在思量管理接口怎样设计为最好。兴许用命令行命令与后台守护进程通信，查询收到的交易、发起转账，如此这般对自动化更为友好。抑或在某些非 80 端口上开一个 http 接口，用浏览器管理，如何？"},{"id":34,"sid":16,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-10","ts":"2009-12-10T19:31:49Z","url":"https://bitcointalk.org/index.php?topic=12.msg45#msg45","zh":"<blockquote><p>前端还可以跑在手机这类 CPU 算力很低的设备上。</p></blockquote><p>对移动设备而言，这确是个好思路。用 PHP（任何语言皆可）调用的编程式 API，配一个 web UI，便能覆盖远程管理、移动设备，以及一切无法全天在线、没有静态 IP 的客户端。这有点像 webmail。新用户只需在网站注册个账号、不必安装软件，上手便会容易许多。</p><blockquote><p>应用可以在下载前预置种子。预置种子还能一并解决 TOR+IRC 的问题。我知道会有人想通过 I2P+TOR 运行这套系统。</p></blockquote><p>是啊，待静态节点多到可以预先编一份种子列表，便可以逐步停用 IRC。一旦有了种子，也就不再需要 IRC 了。</p><blockquote><p>另外还可以预置区块，如此，首次运行就不用下载了。（在较慢的 ADSL 上下载 28,000 个区块要花很久，我不敢想象有几百万个区块时得等多久——一辈子。）</p></blockquote><p>0.1.5 里初始区块下载偶尔会卡住。0.2 加了代码以保证顺畅。我想应该用不了一小时。我得抓紧把 0.2 发出去。</p><p>区块是线性增长的，要过几十年，才会到几百万。理论上，区块下载时间会在 8 个月之后到顶，那时，摩尔定律的增速，将超过区块链的增速。</p><blockquote><p>能否给我 CVS 权限什么的？（不行的话，我可以给你发补丁。）我想帮上忙。</p></blockquote><p>这里用的是 sourceforge 的 SVN。把你的 sourceforge 账号私信或邮件给我，我给你权限。</p><blockquote><p>我主要是 Linux/BSD 背景，愿意在这些方面出力。</p></blockquote><p>那太好了，因为这些恰好是我不太在行的地方。比如，Linux 上\"开机启动 Bitcoin\"怎样实现为最好，我还没研究过。Windows 上这个选项，就是在\"启动\"文件夹里添加或删除一个图标。</p>","zhText":"前端还可以跑在手机这类 CPU 算力很低的设备上。\n\n对移动设备而言，这确是个好思路。用 PHP（任何语言皆可）调用的编程式 API，配一个 web UI，便能覆盖远程管理、移动设备，以及一切无法全天在线、没有静态 IP 的客户端。这有点像 webmail。新用户只需在网站注册个账号、不必安装软件，上手便会容易许多。\n应用可以在下载前预置种子。预置种子还能一并解决 TOR+IRC 的问题。我知道会有人想通过 I2P+TOR 运行这套系统。\n\n是啊，待静态节点多到可以预先编一份种子列表，便可以逐步停用 IRC。一旦有了种子，也就不再需要 IRC 了。\n另外还可以预置区块，如此，首次运行就不用下载了。（在较慢的 ADSL 上下载 28,000 个区块要花很久，我不敢想象有几百万个区块时得等多久——一辈子。）\n\n0.1.5 里初始区块下载偶尔会卡住。0.2 加了代码以保证顺畅。我想应该用不了一小时。我得抓紧把 0.2 发出去。\n区块是线性增长的，要过几十年，才会到几百万。理论上，区块下载时间会在 8 个月之后到顶，那时，摩尔定律的增速，将超过区块链的增速。\n能否给我 CVS 权限什么的？（不行的话，我可以给你发补丁。）我想帮上忙。\n\n这里用的是 sourceforge 的 SVN。把你的 sourceforge 账号私信或邮件给我，我给你权限。\n我主要是 Linux/BSD 背景，愿意在这些方面出力。\n\n那太好了，因为这些恰好是我不太在行的地方。比如，Linux 上\"开机启动 Bitcoin\"怎样实现为最好，我还没研究过。Windows 上这个选项，就是在\"启动\"文件夹里添加或删除一个图标。"},{"id":62,"sid":17,"sat":1,"tid":9,"tt":"Questions about Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-10","ts":"2009-12-10T20:49:02Z","url":"https://bitcointalk.org/index.php?topic=13.msg46#msg46","zh":"<p>1-3：\n这种级别的匿名需要通过 TOR 连接，0.2 版就能做到，离发布只有几个星期了。到时我会贴出 TOR 使用说明。</p><p>4：\n0.1.5 版：备份整个 %appdata%\\Bitcoin 目录。\n0.2 版：只备份 wallet.dat 即可。</p><p>5：\n不行。整个设计就是为了防止这种情况得逞。</p><p>6：\n那些硬币将永远无法找回，总流通量随之减少。由于有效流通量下降，剩下的所有硬币，都会略微升值。这与政府印钞、令现有货币贬值，正好相反。</p><p>7：\n目前是 29,296 个区块。流通量等于区块数乘以 50，所以当前流通量是 1,464,800 bc。</p><p>如果你只有 24k 个区块，说明初始区块下载还没完成。退出 bitcoin 再重新启动。0.2 版的初始区块下载更快更好。</p><p>8：\n眼下典型情况是几百枚。现在很容易，但网络壮大后会越来越难。</p><p>9：\n好问题，是 TCP。网站应该更新为\"TCP 端口 8333\"。</p><p>端口转发是为了让其他节点能连上你，这样你能与更多节点保持连接。按 IP 地址收款也需要它。</p><p>10：\n不会，其他节点不会接受那种东西。</p><p>开源意味着任何人都可以独立审查代码。倘若闭源，谁也无法验证其安全性。我认为，对这种性质的程序而言，开源是必不可少的。</p><p>11：\n慢机器产出的硬币更少。产出与 CPU 速度成正比。</p><p>12：\n还会有更多。</p><p>13：\n它用的是名为 Berkeley DB 的事务型数据库。系统崩溃也不会丢数据。交易在收到的那一刻就写入了数据库。</p><p>14：\n眼下你可以直接用区块总数乘以 50。比特币网络已经运行了将近一年。设计和编码始于 2007 年。</p>","zhText":"1-3：\n这种级别的匿名需要通过 TOR 连接，0.2 版就能做到，离发布只有几个星期了。到时我会贴出 TOR 使用说明。\n4：\n0.1.5 版：备份整个 %appdata%\\Bitcoin 目录。\n0.2 版：只备份 wallet.dat 即可。\n5：\n不行。整个设计就是为了防止这种情况得逞。\n6：\n那些硬币将永远无法找回，总流通量随之减少。由于有效流通量下降，剩下的所有硬币，都会略微升值。这与政府印钞、令现有货币贬值，正好相反。\n7：\n目前是 29,296 个区块。流通量等于区块数乘以 50，所以当前流通量是 1,464,800 bc。\n如果你只有 24k 个区块，说明初始区块下载还没完成。退出 bitcoin 再重新启动。0.2 版的初始区块下载更快更好。\n8：\n眼下典型情况是几百枚。现在很容易，但网络壮大后会越来越难。\n9：\n好问题，是 TCP。网站应该更新为\"TCP 端口 8333\"。\n端口转发是为了让其他节点能连上你，这样你能与更多节点保持连接。按 IP 地址收款也需要它。\n10：\n不会，其他节点不会接受那种东西。\n开源意味着任何人都可以独立审查代码。倘若闭源，谁也无法验证其安全性。我认为，对这种性质的程序而言，开源是必不可少的。\n11：\n慢机器产出的硬币更少。产出与 CPU 速度成正比。\n12：\n还会有更多。\n13：\n它用的是名为 Berkeley DB 的事务型数据库。系统崩溃也不会丢数据。交易在收到的那一刻就写入了数据库。\n14：\n眼下你可以直接用区块总数乘以 50。比特币网络已经运行了将近一年。设计和编码始于 2007 年。"},{"id":35,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-11","ts":"2009-12-11T04:59:19Z","url":"https://bitcointalk.org/index.php?topic=12.msg47#msg47","zh":"<p>好，我去 SF 注册个账号，把用户名给你。我很久没用 SF 了，得先熟悉一下。这个权限能访问你们现在正在开发的分支吗？（0.2）</p><p>我一直在想后端进程需要哪些选项。不知道哪个更好：一长串命令行开关，还是一个配置文件。嗯……</p><p>我在全球各地有很多服务器。如果后端进程能跑在 FreeBSD 上，我可以运行全天候的种子节点。</p><p>我真心认为，下载包里带上每日种子快照，会改善引导过程。我在这里见过几次：全新安装的应用一直停在 0 连接 / 1 区块。查看 debug.log 才发现，IRC 服务器（应该是 freenode）说我已经连接着，拒绝让我为应用引导种子。（仅举例）</p><p>我觉得再做一个简单的 Nagios 网络监控插件也会有帮助：模拟一个连接中的客户端，从后端进程取回有效的状态码。我有很多想法。</p><p>总之，我愿意帮忙。我有大把时间，这样的项目让人非常兴奋。</p><p>谢谢让我参与其中。</p>","zhText":"好，我去 SF 注册个账号，把用户名给你。我很久没用 SF 了，得先熟悉一下。这个权限能访问你们现在正在开发的分支吗？（0.2）\n我一直在想后端进程需要哪些选项。不知道哪个更好：一长串命令行开关，还是一个配置文件。嗯……\n我在全球各地有很多服务器。如果后端进程能跑在 FreeBSD 上，我可以运行全天候的种子节点。\n我真心认为，下载包里带上每日种子快照，会改善引导过程。我在这里见过几次：全新安装的应用一直停在 0 连接 / 1 区块。查看 debug.log 才发现，IRC 服务器（应该是 freenode）说我已经连接着，拒绝让我为应用引导种子。（仅举例）\n我觉得再做一个简单的 Nagios 网络监控插件也会有帮助：模拟一个连接中的客户端，从后端进程取回有效的状态码。我有很多想法。\n总之，我愿意帮忙。我有大把时间，这样的项目让人非常兴奋。\n谢谢让我参与其中。"},{"id":63,"sid":null,"sat":0,"tid":9,"tt":"Questions about Bitcoin","src":"Bitcointalk","author":"SmokeTooMuch","date":"2009-12-11","ts":"2009-12-11T17:20:29Z","url":"https://bitcointalk.org/index.php?topic=13.msg48#msg48","zh":"<p>哇，非常感谢这么详细的回答。</p><p>但今天我又想到一个问题。</p><p>假设我们知道邻居在用 Bitcoin，还知道他很快会收到一笔付款（比如他开了网店、接受 bitcoin 付款）。</p><p>我们还知道他用 WLAN，网络无防护或防护很弱，路由器配置也一样。</p><p>那我们就可以登录他的路由器配置，把 8333 端口转发改到我们系统的 IP。\n这样一来，每笔付款都会被我们的 bitcoin 客户端收到。</p><p>这在实际中真的可行吗？</p><p>我知道这是严重的犯罪，这个场景嘛……姑且叫它\"非常罕见\"，但理论上应该可行，对吧？\n（并不是我想害人，而是我知道犯罪分子会千方百计搞钱。）</p><p>顺便说一句：在 LAN party 上遇到无防护的路由器配置，同样的手法也应该管用。</p><p>编辑：还是说这些场景根本不可能——因为无论端口指向哪个 IP，付款都会发给付款人指定的那个比特币地址或 IP 地址？</p>","zhText":"哇，非常感谢这么详细的回答。\n但今天我又想到一个问题。\n假设我们知道邻居在用 Bitcoin，还知道他很快会收到一笔付款（比如他开了网店、接受 bitcoin 付款）。\n我们还知道他用 WLAN，网络无防护或防护很弱，路由器配置也一样。\n那我们就可以登录他的路由器配置，把 8333 端口转发改到我们系统的 IP。\n这样一来，每笔付款都会被我们的 bitcoin 客户端收到。\n这在实际中真的可行吗？\n我知道这是严重的犯罪，这个场景嘛……姑且叫它\"非常罕见\"，但理论上应该可行，对吧？\n（并不是我想害人，而是我知道犯罪分子会千方百计搞钱。）\n顺便说一句：在 LAN party 上遇到无防护的路由器配置，同样的手法也应该管用。\n编辑：还是说这些场景根本不可能——因为无论端口指向哪个 IP，付款都会发给付款人指定的那个比特币地址或 IP 地址？"},{"id":64,"sid":18,"sat":1,"tid":9,"tt":"Questions about Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-11","ts":"2009-12-11T17:58:57Z","url":"https://bitcointalk.org/index.php?topic=13.msg49#msg49","zh":"<p>是真的。用按 IP 发送选项，你便是在把币发给应答那个 IP 的任何人。发送到比特币地址，则没有这个问题。</p><p>计划是实现一个 IP + 比特币地址的组合选项，兼得两者之利。每笔交易仍会用不同的地址，但收款方会用给定的比特币地址，对这个一次性地址签名，以证明它属于预期的收款人。</p>","zhText":"是真的。用按 IP 发送选项，你便是在把币发给应答那个 IP 的任何人。发送到比特币地址，则没有这个问题。\n计划是实现一个 IP + 比特币地址的组合选项，兼得两者之利。每笔交易仍会用不同的地址，但收款方会用给定的比特币地址，对这个一次性地址签名，以证明它属于预期的收款人。"},{"id":36,"sid":19,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-11","ts":"2009-12-11T19:27:55Z","url":"https://bitcointalk.org/index.php?topic=12.msg50#msg50","zh":"<p>对，SVN 上是接近候选版的 0.2 源码，也能在 Linux 上构建运行。FreeBSD 上还没测过。</p><blockquote><p>如果后端进程能跑在 FreeBSD 上，我可以运行全天候的种子节点。</p></blockquote><p>那会帮大忙。TOR 用户不必再操心如何引导种子，我们也不必依赖 IRC。</p><p>如果你不介意桌面上有个最小化窗口，它可以按几种简单模式在无 UI 的情况下运行。（0.1.5 没有 -min 参数，所以会是一个打开着的窗口）</p><p>只做种子节点：\nbitcoin -min -gen=0</p><p>你可以看着 debug.log 来监控它。要停止就 kill 进程，数据库不会介意。</p><p>要生成硬币：\nbitcoin -min -gen</p><p>要取出生成的比特币，得把 wallet.dat（0.2 版）复制到一台有 UI 的机器上，换入 wallet.dat，运行 bitcoin，再把硬币转到你的主账户。（0.1.5 版则要复制整个 \"%appdata%/Bitcoin\" 目录。）复制 wallet.dat 有一个注意事项：如果你恰好在程序生成硬币或收到付款的那一瞬间杀掉了它，wallet.dat 可能单独用不了，得复制整个目录。</p><blockquote><p>我真心认为，下载包里带上每日种子快照，会改善引导过程。我在这里见过几次：全新安装的应用一直停在 0 连接 / 1 区块。查看 debug.log 才发现，IRC 服务器（应该是 freenode）说我已经连接着，拒绝让我为应用引导种子。（仅举例）</p></blockquote><p>明白了。多个节点共用同一 NAT 或 VPN、或某个把所有人经少数代理服务器汇流的 ISP 时，就会出现这种情况。我刚为此向 SVN 提交了一个修复。如果收到 \"433\" 名称已被占用（是 433 错误吧？），就改用一个非地址形式的随机用户名重试。</p><blockquote><p>总之，我愿意帮忙。我有大把时间，这样的项目让人非常兴奋。</p></blockquote><p>那太好了，任何帮助都由衷感谢！</p>","zhText":"对，SVN 上是接近候选版的 0.2 源码，也能在 Linux 上构建运行。FreeBSD 上还没测过。\n如果后端进程能跑在 FreeBSD 上，我可以运行全天候的种子节点。\n\n那会帮大忙。TOR 用户不必再操心如何引导种子，我们也不必依赖 IRC。\n如果你不介意桌面上有个最小化窗口，它可以按几种简单模式在无 UI 的情况下运行。（0.1.5 没有 -min 参数，所以会是一个打开着的窗口）\n只做种子节点：\nbitcoin -min -gen=0\n你可以看着 debug.log 来监控它。要停止就 kill 进程，数据库不会介意。\n要生成硬币：\nbitcoin -min -gen\n要取出生成的比特币，得把 wallet.dat（0.2 版）复制到一台有 UI 的机器上，换入 wallet.dat，运行 bitcoin，再把硬币转到你的主账户。（0.1.5 版则要复制整个 \"%appdata%/Bitcoin\" 目录。）复制 wallet.dat 有一个注意事项：如果你恰好在程序生成硬币或收到付款的那一瞬间杀掉了它，wallet.dat 可能单独用不了，得复制整个目录。\n我真心认为，下载包里带上每日种子快照，会改善引导过程。我在这里见过几次：全新安装的应用一直停在 0 连接 / 1 区块。查看 debug.log 才发现，IRC 服务器（应该是 freenode）说我已经连接着，拒绝让我为应用引导种子。（仅举例）\n\n明白了。多个节点共用同一 NAT 或 VPN、或某个把所有人经少数代理服务器汇流的 ISP 时，就会出现这种情况。我刚为此向 SVN 提交了一个修复。如果收到 \"433\" 名称已被占用（是 433 错误吧？），就改用一个非地址形式的随机用户名重试。\n总之，我愿意帮忙。我有大把时间，这样的项目让人非常兴奋。\n\n那太好了，任何帮助都由衷感谢！"},{"id":37,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-12","ts":"2009-12-12T06:34:21Z","url":"https://bitcointalk.org/index.php?topic=12.msg51#msg51","zh":"<p>svn 0.2 在 Mac OS X 10.4.11/Intel 上就快编译过了（我这里还有一台 PPC970 的机器，PPC 构建也做得了）。窗口部分通过 wxwidgets 用上了原生 carbon！非常快！我不得不新建了一个 makefile（makefile.osx；当然基于 makefile.unix……考虑过用 autoconf 吗？），并在 header.h 里加了些 ifdef。我手上有补丁。我会继续捣鼓，接下来也许会在 FreeBSD 上试试。</p><p>我已经运行着大量 TOR 和 I2P 节点，把这个应用加到那些服务器上轻而易举。</p><p>我认为把 bitcoin 拆成两个应用最理想：一个 wxwidgets 前端（功能基本都在了），加一个绑定控制 TCP 套接字的后端。我一直在读源码，估计拆分难度，应该相当简单。当然，还得开发一个 API。</p><p>我会继续摆弄源码，看看能折腾出什么来。</p>","zhText":"svn 0.2 在 Mac OS X 10.4.11/Intel 上就快编译过了（我这里还有一台 PPC970 的机器，PPC 构建也做得了）。窗口部分通过 wxwidgets 用上了原生 carbon！非常快！我不得不新建了一个 makefile（makefile.osx；当然基于 makefile.unix……考虑过用 autoconf 吗？），并在 header.h 里加了些 ifdef。我手上有补丁。我会继续捣鼓，接下来也许会在 FreeBSD 上试试。\n我已经运行着大量 TOR 和 I2P 节点，把这个应用加到那些服务器上轻而易举。\n我认为把 bitcoin 拆成两个应用最理想：一个 wxwidgets 前端（功能基本都在了），加一个绑定控制 TCP 套接字的后端。我一直在读源码，估计拆分难度，应该相当简单。当然，还得开发一个 API。\n我会继续摆弄源码，看看能折腾出什么来。"},{"id":38,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"SmokeTooMuch","date":"2009-12-12","ts":"2009-12-12T13:08:17Z","url":"https://bitcointalk.org/index.php?topic=12.msg52#msg52","zh":"<p>建议：</p><p>由于快机器生成硬币更快，很多人会想用 GPU 算力来干这个。</p><p>所以我的建议是，用 ATI Stream 和 Nvidia CUDA 实现 GPU 计算支持。</p>","zhText":"建议：\n由于快机器生成硬币更快，很多人会想用 GPU 算力来干这个。\n所以我的建议是，用 ATI Stream 和 Nvidia CUDA 实现 GPU 计算支持。"},{"id":39,"sid":20,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-12","ts":"2009-12-12T17:52:44Z","url":"https://bitcointalk.org/index.php?topic=12.msg54#msg54","zh":"<p>全网络每天产出的硬币总量，并不因之而变。快的机器，不过是比慢的机器分到更大的一份罢了。即便人人都买了更快的机器，也并不会比从前得到更多的硬币。</p><p>我们应该达成一个君子协定：为了网络之好，尽量把 GPU 军备竞赛往后推延。倘若新用户不必操心 GPU 驱动与兼容性，让他们上手便会容易许多。如今，光凭一个 CPU 的人，就能相当公平地参与竞争，这很好。</p>","zhText":"全网络每天产出的硬币总量，并不因之而变。快的机器，不过是比慢的机器分到更大的一份罢了。即便人人都买了更快的机器，也并不会比从前得到更多的硬币。\n我们应该达成一个君子协定：为了网络之好，尽量把 GPU 军备竞赛往后推延。倘若新用户不必操心 GPU 驱动与兼容性，让他们上手便会容易许多。如今，光凭一个 CPU 的人，就能相当公平地参与竞争，这很好。"},{"id":40,"sid":21,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-12","ts":"2009-12-12T18:17:10Z","url":"https://bitcointalk.org/index.php?topic=12.msg55#msg55","zh":"<blockquote><p>svn 0.2 在 Mac OS X 10.4.11/Intel 上就快编译过了（我这里还有一台 PPC970 的机器，PPC 构建也做得了）。窗口部分通过 wxwidgets 用上了原生 carbon！非常快！我不得不新建了一个 makefile（makefile.osx；当然基于 makefile.unix……考虑过用 autoconf 吗？），并在 header.h 里加了些 ifdef。我手上有补丁。我会继续捣鼓，接下来也许会在 FreeBSD 上试试。</p></blockquote><p>有 Mac 支持是好事。wxWidgets 的跨平台能力物有所值。</p><p>请不要试 PPC。PPC 是大端序，Bitcoin 是小端序，会有没完没了的字节序 bug；一旦网络上存在一个可能交换字节的节点，我调试网络就更难了。反正 PPC 也在被淘汰。</p><p>考虑过 autoconf。对 makefile 已经变成泥潭的大型项目来说，autoconf 是必需品，但我们规模还小，不用它反而更优。我宁愿让 makefile 尽量保持简单。</p><blockquote><p>我认为把 bitcoin 拆成两个应用最理想：一个 wxwidgets 前端（功能基本都在了），加一个绑定控制 TCP 套接字的后端。我一直在读源码，估计拆分难度，应该相当简单。当然，还得开发一个 API。</p></blockquote><p>光是想想，我头就大了。把整个 UI 后端都从 TCP 连接里过一遍，会让所有事情的难度翻倍。UI 与内部数据结构之间的带宽，实在太大了——listview 控件的工作方式，决定了要保持它更新，就得频繁通信。</p><p>我更想要命令行控制，那样能同时获得远程管理和批量自动化。</p>","zhText":"svn 0.2 在 Mac OS X 10.4.11/Intel 上就快编译过了（我这里还有一台 PPC970 的机器，PPC 构建也做得了）。窗口部分通过 wxwidgets 用上了原生 carbon！非常快！我不得不新建了一个 makefile（makefile.osx；当然基于 makefile.unix……考虑过用 autoconf 吗？），并在 header.h 里加了些 ifdef。我手上有补丁。我会继续捣鼓，接下来也许会在 FreeBSD 上试试。\n\n有 Mac 支持是好事。wxWidgets 的跨平台能力物有所值。\n请不要试 PPC。PPC 是大端序，Bitcoin 是小端序，会有没完没了的字节序 bug；一旦网络上存在一个可能交换字节的节点，我调试网络就更难了。反正 PPC 也在被淘汰。\n考虑过 autoconf。对 makefile 已经变成泥潭的大型项目来说，autoconf 是必需品，但我们规模还小，不用它反而更优。我宁愿让 makefile 尽量保持简单。\n我认为把 bitcoin 拆成两个应用最理想：一个 wxwidgets 前端（功能基本都在了），加一个绑定控制 TCP 套接字的后端。我一直在读源码，估计拆分难度，应该相当简单。当然，还得开发一个 API。\n\n光是想想，我头就大了。把整个 UI 后端都从 TCP 连接里过一遍，会让所有事情的难度翻倍。UI 与内部数据结构之间的带宽，实在太大了——listview 控件的工作方式，决定了要保持它更新，就得频繁通信。\n我更想要命令行控制，那样能同时获得远程管理和批量自动化。"},{"id":45,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-13","ts":"2009-12-13T06:50:05Z","url":"https://bitcointalk.org/index.php?topic=12.msg61#msg61","zh":"<p>关于我称之为\"自然通缩\"的现象，想快问一句。我注意到，可以向那些已经失效的旧地址付款——实质上这些硬币没人能再认领。这样不会产生自然通缩效应吗？我是说，如果硬币总量封顶在 21,000,000，付款失误难道不会让流通中的硬币数量慢慢变少吗？</p>","zhText":"关于我称之为\"自然通缩\"的现象，想快问一句。我注意到，可以向那些已经失效的旧地址付款——实质上这些硬币没人能再认领。这样不会产生自然通缩效应吗？我是说，如果硬币总量封顶在 21,000,000，付款失误难道不会让流通中的硬币数量慢慢变少吗？"},{"id":46,"sid":22,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-13","ts":"2009-12-13T16:51:25Z","url":"https://bitcointalk.org/index.php?topic=12.msg62#msg62","zh":"<p>到时候会有运行时的命令行开关让它无 UI 运行。它要做的只是不创建主窗口。一个简化的做法是把 ui.cpp 里的 \"pframeMain->Show\" 和 \"ptaskbaricon->Show\" 禁掉。网络线程并不在乎 UI 在不在。UI 方面仅剩的另一处，是 CheckDiskSpace 里磁盘空间不足时的消息框。</p><p>然后配一个独立的命令行工具与它通信、执行操作。名字还没想好。</p><p>\"自然通缩\"——这名字我喜欢。是的，付款失误与数据丢失，会造成自然通缩。硬币的产出，最终会慢到被自然通缩所超过，届时，我们便将迎来净通缩。</p>","zhText":"到时候会有运行时的命令行开关让它无 UI 运行。它要做的只是不创建主窗口。一个简化的做法是把 ui.cpp 里的 \"pframeMain->Show\" 和 \"ptaskbaricon->Show\" 禁掉。网络线程并不在乎 UI 在不在。UI 方面仅剩的另一处，是 CheckDiskSpace 里磁盘空间不足时的消息框。\n然后配一个独立的命令行工具与它通信、执行操作。名字还没想好。\n\"自然通缩\"——这名字我喜欢。是的，付款失误与数据丢失，会造成自然通缩。硬币的产出，最终会慢到被自然通缩所超过，届时，我们便将迎来净通缩。"},{"id":49,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-14","ts":"2009-12-14T15:01:39Z","url":"https://bitcointalk.org/index.php?topic=12.msg66#msg66","zh":"<p>有人能指点一下吗？</p><pre><code>g++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D__WXMAC__ -DNOPCH -DBUILD_MACOSX -I\"/usr/include\" -I\"/usr/local/include/wx-2.8\" -I\"/usr/local/include\" -I\"/usr/local/boost_1_41_0\" -I\"/sw/include/db4\" -I\"/usr/local/ssl/include\" -I\"/usr/local/lib/wx/include/mac-ansi-release-2.8\" -o headers.h.gch headers.h\nui.h: In constructor 'CGetTextFromUserDialog::CGetTextFromUserDialog(wxWindow*, const std::string&amp;, const std::string&amp;, const std::string&amp;, const std::string&amp;, const std::string&amp;)':\nui.h:421: error: no matching function for call to 'CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(wxWindow*&amp;, &lt;anonymous enum>, const std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> >&amp;)'\nuibase.h:673: note: candidates are: CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(wxWindow*, wxWindowID, const wxString&amp;, const wxPoint&amp;, const wxSize&amp;, long int)\nuibase.h:651: note:                 CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(const CGetTextFromUserDialogBase&amp;)\nui.h:423: error: no matching function for call to 'wxStaticText::SetLabel(const std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> >&amp;)'\n/usr/local/include/wx-2.8/wx/mac/carbon/stattext.h:38: note: candidates are: virtual void wxStaticText::SetLabel(const wxString&amp;)\nui.h:424: error: no matching function for call to 'wxTextCtrl::SetValue(const std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> >&amp;)'\n/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(const wxString&amp;)\nui.h:428: error: no matching function for call to 'wxStaticText::SetLabel(const std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> >&amp;)'\n/usr/local/include/wx-2.8/wx/mac/carbon/stattext.h:38: note: candidates are: virtual void wxStaticText::SetLabel(const wxString&amp;)\nui.h:430: error: no matching function for call to 'wxTextCtrl::SetValue(const std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> >&amp;)'\n/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(const wxString&amp;)\nmake: *** [headers.h.gch] Error 1</code></pre>","zhText":"有人能指点一下吗？\ng++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D__WXMAC__ -DNOPCH -DBUILD_MACOSX -I\"/usr/include\" -I\"/usr/local/include/wx-2.8\" -I\"/usr/local/include\" -I\"/usr/local/boost_1_41_0\" -I\"/sw/include/db4\" -I\"/usr/local/ssl/include\" -I\"/usr/local/lib/wx/include/mac-ansi-release-2.8\" -o headers.h.gch headers.h\nui.h: In constructor 'CGetTextFromUserDialog::CGetTextFromUserDialog(wxWindow*, const std::string&, const std::string&, const std::string&, const std::string&, const std::string&)':\nui.h:421: error: no matching function for call to 'CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(wxWindow*&, <anonymous enum>, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'\nuibase.h:673: note: candidates are: CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(wxWindow*, wxWindowID, const wxString&, const wxPoint&, const wxSize&, long int)\nuibase.h:651: note: CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(const CGetTextFromUserDialogBase&)\nui.h:423: error: no matching function for call to 'wxStaticText::SetLabel(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'\n/usr/local/include/wx-2.8/wx/mac/carbon/stattext.h:38: note: candidates are: virtual void wxStaticText::SetLabel(const wxString&)\nui.h:424: error: no matching function for call to 'wxTextCtrl::SetValue(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'\n/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(const wxString&)\nui.h:428: error: no matching function for call to 'wxStaticText::SetLabel(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'\n/usr/local/include/wx-2.8/wx/mac/carbon/stattext.h:38: note: candidates are: virtual void wxStaticText::SetLabel(const wxString&)\nui.h:430: error: no matching function for call to 'wxTextCtrl::SetValue(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'\n/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(const wxString&)\nmake: *** [headers.h.gch] Error 1"},{"id":50,"sid":23,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-14","ts":"2009-12-14T17:15:56Z","url":"https://bitcointalk.org/index.php?topic=12.msg67#msg67","zh":"<blockquote><p>有人能指点一下吗？</p><p>g++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D<b>__WXMAC__</b> -DNOPCH -DBUILD_MACOSX -I\"/usr/include\" -I\"/usr/local/include/wx-2.8\" -I\"/usr/local/include\" -I\"/usr/local/boost_1_41_0\" -I\"/sw/include/db4\" -I\"/usr/local/ssl/include\" -I\"/usr/local/lib/wx/include/mac-ansi-release-2.8\" -o headers.h.gch headers.h\n...\nui.h:430: error: no matching function for call to 'wxTextCtrl::SetValue(const <b>std::basic_string</b><char, std::char_traits<char>, std::allocator<char> >&)'\n/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(<b>const wxString&</b>)</p></blockquote><p>看起来 std::string 到 wxString 的隐式转换不工作。这转换到处都在用，必须能用。</p><p>wxString 情况复杂，因为要同时支持 win32 的 16 位 wchar 和 8 位 ansi 双编译。Windows 上如果用了 \"unicode\"（即 wchar）构建，wxString 是 wchar 而 std::string 是 char，就会出这个问题。</p><p>多半是某个 wxWidgets 编译宏或构建配置的问题。你用的 \"configure\" 选项是什么？</p><p>我不确定 __WXMAC__ 是不是正确的宏。也许是 Mac Classic 支持把 wxString 搞复杂了，而我们只要 OSX。试试 __WXOSX__（或见下文）</p><p><a href=\"http://docs.wxwidgets.org/stable/wx_cppconst.html\">http://docs.wxwidgets.org/stable/wx_cppconst.html</a>\n\"wxWidgets 有两个移植到 Mac OS 的版本。其中一个 wxMac 又分两个版本：Classic 和 Carbon。Classic 版是唯一能跑在 Mac OS 8 上的。Carbon 版既可构建为 CFM 也可构建为 Mach-O（二进制格式，类似 ELF），前者或许能在 OS 9 下运行，后者只能在 OS X 下运行。最后还有一个只能在 OS X 下使用的新 Cocoa 移植。总结一下：</p><p>* 如果要测试所有 Mac 平台（classic 和 OS X），应同时测试 __WXMAC__ 和 __WXCOCOA__。\n    * 如果要测试 OS X 下任何 GUI Mac 移植，用 __WXOSX__。\n    * 如果要测试 Mac OS X 下的任何移植（比如 wxGTK 以及 wxBase），用 __DARWIN__\"</p>","zhText":"有人能指点一下吗？\ng++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D__WXMAC__ -DNOPCH -DBUILD_MACOSX -I\"/usr/include\" -I\"/usr/local/include/wx-2.8\" -I\"/usr/local/include\" -I\"/usr/local/boost_1_41_0\" -I\"/sw/include/db4\" -I\"/usr/local/ssl/include\" -I\"/usr/local/lib/wx/include/mac-ansi-release-2.8\" -o headers.h.gch headers.h\n...\nui.h:430: error: no matching function for call to 'wxTextCtrl::SetValue(const std::basic_string, std::allocator >&)'\n/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(const wxString&)\n\n看起来 std::string 到 wxString 的隐式转换不工作。这转换到处都在用，必须能用。\nwxString 情况复杂，因为要同时支持 win32 的 16 位 wchar 和 8 位 ansi 双编译。Windows 上如果用了 \"unicode\"（即 wchar）构建，wxString 是 wchar 而 std::string 是 char，就会出这个问题。\n多半是某个 wxWidgets 编译宏或构建配置的问题。你用的 \"configure\" 选项是什么？\n我不确定 __WXMAC__ 是不是正确的宏。也许是 Mac Classic 支持把 wxString 搞复杂了，而我们只要 OSX。试试 __WXOSX__（或见下文）\nhttp://docs.wxwidgets.org/stable/wx_cppconst.html\n\"wxWidgets 有两个移植到 Mac OS 的版本。其中一个 wxMac 又分两个版本：Classic 和 Carbon。Classic 版是唯一能跑在 Mac OS 8 上的。Carbon 版既可构建为 CFM 也可构建为 Mach-O（二进制格式，类似 ELF），前者或许能在 OS 9 下运行，后者只能在 OS X 下运行。最后还有一个只能在 OS X 下使用的新 Cocoa 移植。总结一下：\n* 如果要测试所有 Mac 平台（classic 和 OS X），应同时测试 __WXMAC__ 和 __WXCOCOA__。\n * 如果要测试 OS X 下任何 GUI Mac 移植，用 __WXOSX__。\n * 如果要测试 Mac OS X 下的任何移植（比如 wxGTK 以及 wxBase），用 __DARWIN__\""},{"id":51,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-15","ts":"2009-12-15T05:21:09Z","url":"https://bitcointalk.org/index.php?topic=12.msg68#msg68","zh":"<p>好，我去查 std::string 的问题。最新版 Ubuntu Linux 上也报同样的 std::string 错误，所以这不只是 OSX 的事。我得说我的底子是 C 不是 C++，那些 C++ 的数据类型/头文件和其他细节我还在\"边走边学\"。</p><p>wx/defs.h 里只有 __WXCOCOA__ 和 __WXMAC__ 两个宏（我一定是漏了什么……也许我的 wxwidgets 得重新构建——我试试）。已有的宏组合我都试过了，没用。另一个选择是在 OSX 上用 gtk，但窗口会慢而且（依我之见）\"丑\"。Carbon 才是 OSX 的最佳选择。我会继续 hack 直到弄好。</p><p>我现在还有一个能用的 FreeBSD 启动脚本：把 xorg 的虚拟帧缓冲启动到 localhost，拉起 bitcoin，让 X11 的屏幕输出全部塞进内存（而不是显示器）。确实是个大 hack，但它能让人把 bitcoin 当伪 unix 守护进程跑。这代码已经连续跑了 12 个小时以上，我没发现内存泄漏或其他怪事。</p><p>另外我有一个简单的网络监控器，能检测 bitcoin 在 8333 端口崩溃/停止响应，给我发个寻呼，再把守护进程重新拉起来。这套配置很理想。我已经开始在我掌控的、遍布世界各地的服务器上部署种子节点了。</p><p>问一句：debug.log 怎么启用？我试过停掉 bitcoin、touch ~/.bitcoin/debug.log、再启动 bitcoin，但它从来不往文件里写。我是不是漏了什么？</p><p>等我把 SF 配置好，会把这些工具一并提交。</p><p>干杯！</p>","zhText":"好，我去查 std::string 的问题。最新版 Ubuntu Linux 上也报同样的 std::string 错误，所以这不只是 OSX 的事。我得说我的底子是 C 不是 C++，那些 C++ 的数据类型/头文件和其他细节我还在\"边走边学\"。\nwx/defs.h 里只有 __WXCOCOA__ 和 __WXMAC__ 两个宏（我一定是漏了什么……也许我的 wxwidgets 得重新构建——我试试）。已有的宏组合我都试过了，没用。另一个选择是在 OSX 上用 gtk，但窗口会慢而且（依我之见）\"丑\"。Carbon 才是 OSX 的最佳选择。我会继续 hack 直到弄好。\n我现在还有一个能用的 FreeBSD 启动脚本：把 xorg 的虚拟帧缓冲启动到 localhost，拉起 bitcoin，让 X11 的屏幕输出全部塞进内存（而不是显示器）。确实是个大 hack，但它能让人把 bitcoin 当伪 unix 守护进程跑。这代码已经连续跑了 12 个小时以上，我没发现内存泄漏或其他怪事。\n另外我有一个简单的网络监控器，能检测 bitcoin 在 8333 端口崩溃/停止响应，给我发个寻呼，再把守护进程重新拉起来。这套配置很理想。我已经开始在我掌控的、遍布世界各地的服务器上部署种子节点了。\n问一句：debug.log 怎么启用？我试过停掉 bitcoin、touch ~/.bitcoin/debug.log、再启动 bitcoin，但它从来不往文件里写。我是不是漏了什么？\n等我把 SF 配置好，会把这些工具一并提交。\n干杯！"},{"id":52,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-15","ts":"2009-12-15T05:30:53Z","url":"https://bitcointalk.org/index.php?topic=12.msg69#msg69","zh":"<p>好，我上 SF 了。用户名 \"madhatter2\"。</p>","zhText":"好，我上 SF 了。用户名 \"madhatter2\"。"},{"id":53,"sid":24,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-15","ts":"2009-12-15T20:37:32Z","url":"https://bitcointalk.org/index.php?topic=12.msg70#msg70","zh":"<blockquote><p>最新版 Ubuntu Linux 上也报同样的 std::string 错误。</p></blockquote><p>那一定是你在构建或配置 wxWidgets 时有什么地方做得不一样。</p><p>你给 wxWidgets 的 \"configure\" 脚本用了哪些选项？我用的选项写在 build-unix.txt 里。</p><blockquote><p>问一句：debug.log 怎么启用？我试过停掉 bitcoin、touch ~/.bitcoin/debug.log、再启动 bitcoin，但它从来不往文件里写。我是不是漏了什么？</p></blockquote><p>从没听说过这种事。debug.log 里有东西吗？你既然 touch 过文件，听起来里面应该有内容。程序对这个文件有写权限吗？</p>","zhText":"最新版 Ubuntu Linux 上也报同样的 std::string 错误。\n\n那一定是你在构建或配置 wxWidgets 时有什么地方做得不一样。\n你给 wxWidgets 的 \"configure\" 脚本用了哪些选项？我用的选项写在 build-unix.txt 里。\n问一句：debug.log 怎么启用？我试过停掉 bitcoin、touch ~/.bitcoin/debug.log、再启动 bitcoin，但它从来不往文件里写。我是不是漏了什么？\n\n从没听说过这种事。debug.log 里有东西吗？你既然 touch 过文件，听起来里面应该有内容。程序对这个文件有写权限吗？"},{"id":65,"sid":25,"sat":1,"tid":10,"tt":"Bitcoin 0.2 released!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-16","ts":"2009-12-16T22:45:36Z","url":"https://bitcointalk.org/index.php?topic=16.msg73#msg73","zh":"<p>Bitcoin 0.2 版来了！</p><p>下载链接：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32-setup.exe/download\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32-setup.exe/download</a>\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32.zip/download\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32.zip/download</a>\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download</a></p><p>新特性</p><p>Martti Malmi\n - 最小化到系统托盘选项\n - 开机自启选项，可以自动在后台保持运行\n - 面向未来扩展的全新选项对话框布局\n - Windows 安装程序\n - Linux 版（已在 Ubuntu 上测试）\nSatoshi Nakamoto\n - 生成硬币的多处理器支持\n - 配合 TOR 使用的代理支持\n - 修复了初始区块下载的一些卡顿</p><p>特别感谢 Martti Malmi（sirius-m）的全部编码工作以及新网站和本论坛的托管，也感谢 New Liberty Standard 帮助测试 Linux 版。</p>","zhText":"Bitcoin 0.2 版来了！\n下载链接：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32-setup.exe/download\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32.zip/download\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download\n新特性\nMartti Malmi\n - 最小化到系统托盘选项\n - 开机自启选项，可以自动在后台保持运行\n - 面向未来扩展的全新选项对话框布局\n - Windows 安装程序\n - Linux 版（已在 Ubuntu 上测试）\nSatoshi Nakamoto\n - 生成硬币的多处理器支持\n - 配合 TOR 使用的代理支持\n - 修复了初始区块下载的一些卡顿\n特别感谢 Martti Malmi（sirius-m）的全部编码工作以及新网站和本论坛的托管，也感谢 New Liberty Standard 帮助测试 Linux 版。"},{"id":57,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Madhatter","date":"2009-12-17","ts":"2009-12-17T13:23:43Z","url":"https://bitcointalk.org/index.php?topic=12.msg76#msg76","zh":"<p>在 FreeBSD 上构建：</p><p>从 /usr/ports 装好全部必需软件，然后用 makefile.fbsd 编译</p><p>\"开箱即用\"。</p>","zhText":"在 FreeBSD 上构建：\n从 /usr/ports 装好全部必需软件，然后用 makefile.fbsd 编译\n\"开箱即用\"。"},{"id":58,"sid":26,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-17","ts":"2009-12-17T18:38:06Z","url":"https://bitcointalk.org/index.php?topic=12.msg77#msg77","zh":"<p>那就好，在 FreeBSD 上跑得正常吗？</p><p>我把改动提交到 headers.h 了。为保持一致，我用的是 __BSD__。宏的完整列表在 <a href=\"http://docs.wxwidgets.org/stable/wx_cppconst.html\">http://docs.wxwidgets.org/stable/wx_cppconst.html</a>\n#ifdef __BSD__\n#include <netinet/in.h>\n#endif</p><p>malloc.h 只在 windows 上需要，我会在它再惹麻烦之前把它挪进 __WXMSW__ 区段。</p>","zhText":"那就好，在 FreeBSD 上跑得正常吗？\n我把改动提交到 headers.h 了。为保持一致，我用的是 __BSD__。宏的完整列表在 http://docs.wxwidgets.org/stable/wx_cppconst.html\n#ifdef __BSD__\n#include \n#endif\nmalloc.h 只在 windows 上需要，我会在它再惹麻烦之前把它挪进 __WXMSW__ 区段。"},{"id":59,"sid":null,"sat":0,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"The Doctor","date":"2009-12-18","ts":"2009-12-18T15:11:53Z","url":"https://bitcointalk.org/index.php?topic=12.msg78#msg78","zh":"<p>你好。我想附议为 /*nix/i 系统提供无头/非 GUI 模式。能从 initscript 或 ~/.bashrc（或等价文件）启动 Bitcoin 软件并让它在后台默默运转，会非常有用。</p><p>另外，Win32 客户端改 wallet.dat 文件位置的可行性如何？我问这个是因为昨天在玩 Windows 版 .zip 客户端时突然想到，它很适合做成便携应用。我琢磨着把它解压到 USB 盘上的 TrueCrypt 卷里，这样就能带在身上，路上跑几小时，在卸载卷之前关掉。但它把 wallet.dat 建在了 C:\\Documents and Settings\\username\\Application Data\\Bitcoin 目录。也就是说，用便携版 Bitcoin 逐步养成一个便携钱包。</p>","zhText":"你好。我想附议为 /*nix/i 系统提供无头/非 GUI 模式。能从 initscript 或 ~/.bashrc（或等价文件）启动 Bitcoin 软件并让它在后台默默运转，会非常有用。\n另外，Win32 客户端改 wallet.dat 文件位置的可行性如何？我问这个是因为昨天在玩 Windows 版 .zip 客户端时突然想到，它很适合做成便携应用。我琢磨着把它解压到 USB 盘上的 TrueCrypt 卷里，这样就能带在身上，路上跑几小时，在卸载卷之前关掉。但它把 wallet.dat 建在了 C:\\Documents and Settings\\username\\Application Data\\Bitcoin 目录。也就是说，用便携版 Bitcoin 逐步养成一个便携钱包。"},{"id":60,"sid":27,"sat":1,"tid":8,"tt":"A few suggestions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2009-12-18","ts":"2009-12-18T17:37:48Z","url":"https://bitcointalk.org/index.php?topic=12.msg79#msg79","zh":"<p>现在可以这样做：在选项里设置 \"Minimize to the tray\"，然后用 \"bitcoin -min\" 运行，启动即最小化。可见的只有托盘上一个小（20x20）图标，想用 UI 双击即可。注意：64 位 Karmic Koala 上托盘图标有时会消失，不确定是 64 位还是 Karmic 的问题，32 位 Jaunty 上没这毛病。</p><p>Linux 上\"开机启动 Bitcoin\"没来得及在 0.2 之前实现，所以是灰的。我想 Linux 用户反正不介意手动弄。他们大概需要知道 -min 开关才能弄对。</p><p>你可以用 \"-datadir=<directory>\" 开关把数据目录放到任何你想要的位置。我知道已经有人在这么干，把它放进 TrueCrypt 的 USB 盘。</p>","zhText":"现在可以这样做：在选项里设置 \"Minimize to the tray\"，然后用 \"bitcoin -min\" 运行，启动即最小化。可见的只有托盘上一个小（20x20）图标，想用 UI 双击即可。注意：64 位 Karmic Koala 上托盘图标有时会消失，不确定是 64 位还是 Karmic 的问题，32 位 Jaunty 上没这毛病。\nLinux 上\"开机启动 Bitcoin\"没来得及在 0.2 之前实现，所以是灰的。我想 Linux 用户反正不介意手动弄。他们大概需要知道 -min 开关才能弄对。\n你可以用 \"-datadir=\" 开关把数据目录放到任何你想要的位置。我知道已经有人在这么干，把它放进 TrueCrypt 的 USB 盘。"},{"id":67,"sid":null,"sat":0,"tid":11,"tt":"Is my second Transaction working correctly? +Transfer Question","src":"Bitcointalk","author":"sirius","date":"2010-01-05","ts":"2010-01-05T01:20:06Z","url":"https://bitcointalk.org/index.php?topic=17.msg84#msg84","zh":"<blockquote><p>终于让客户端开始生成了。把笔记本电脑为这事优化了一番，等了一夜，第一笔交易完成，+50 硬币。太棒了！</p></blockquote><p>恭喜你，欢迎来到论坛</p><blockquote><p>不过那笔交易完成后，新的交易没有开始。也许开始了？列表里只有一笔交易，但 \"Status\" 下的区块数已经到 131 了。事情本来就是这样运作的吗？它是在同一笔交易上继续处理、每 120 个区块左右生成一次硬币吗？还是说应该开始一笔新交易？</p></blockquote><p>一笔交易的区块数，指的是这笔交易之后，整个网络生成的新区块数量。链上每个新区块，都意味着新硬币归其创建者。你交易列表里的一条 \"generated\" 交易，表示的便是你生成了一个区块。\"区块\"这个概念，第一眼看不明白，你并非第一个。</p><blockquote><p><b>EDIT:</b> 我决定不瞎玩了，把 BitCoin 装到高性能游戏机上，把 8333 转发过去，改用它来生成。然后我把之前的 50 枚硬币转到了那个客户端，但已经过去一小时了，那边没有任何待接收的转账出现。</p></blockquote><p>有人发送到你的 Bitcoin 地址时，来账交易不会有确认提示，所有交易都自动完成。那笔交易在交易列表里显示了吗？</p><blockquote><p>两台电脑在同一个无线局域网里。我发的是 Bitcoin 地址，因为不确定应该发到内网还是外网 IP。我猜是外网，因为交易需要其他节点验证。对吗？</p></blockquote><p>其他节点并不知道你发往哪个 IP，你的客户端是直接连过去的。两个 IP 都行，只要连接能路由到正确的计算机。不过为了省事，局域网内我会用内网地址。</p>","zhText":"终于让客户端开始生成了。把笔记本电脑为这事优化了一番，等了一夜，第一笔交易完成，+50 硬币。太棒了！\n\n恭喜你，欢迎来到论坛\n不过那笔交易完成后，新的交易没有开始。也许开始了？列表里只有一笔交易，但 \"Status\" 下的区块数已经到 131 了。事情本来就是这样运作的吗？它是在同一笔交易上继续处理、每 120 个区块左右生成一次硬币吗？还是说应该开始一笔新交易？\n\n一笔交易的区块数，指的是这笔交易之后，整个网络生成的新区块数量。链上每个新区块，都意味着新硬币归其创建者。你交易列表里的一条 \"generated\" 交易，表示的便是你生成了一个区块。\"区块\"这个概念，第一眼看不明白，你并非第一个。\nEDIT: 我决定不瞎玩了，把 BitCoin 装到高性能游戏机上，把 8333 转发过去，改用它来生成。然后我把之前的 50 枚硬币转到了那个客户端，但已经过去一小时了，那边没有任何待接收的转账出现。\n\n有人发送到你的 Bitcoin 地址时，来账交易不会有确认提示，所有交易都自动完成。那笔交易在交易列表里显示了吗？\n两台电脑在同一个无线局域网里。我发的是 Bitcoin 地址，因为不确定应该发到内网还是外网 IP。我猜是外网，因为交易需要其他节点验证。对吗？\n\n其他节点并不知道你发往哪个 IP，你的客户端是直接连过去的。两个 IP 都行，只要连接能路由到正确的计算机。不过为了省事，局域网内我会用内网地址。"},{"id":68,"sid":28,"sat":1,"tid":11,"tt":"Is my second Transaction working correctly? +Transfer Question","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-05","ts":"2010-01-05T20:00:46Z","url":"https://bitcointalk.org/index.php?topic=17.msg85#msg85","zh":"<p>按 IP 地址发送是即时的。按比特币地址发送而收款方当时不在线的话，可能要过 30 分钟以上才能看到。</p><p>另外，收款方要先与区块链同步才能看到收到的交易。也就是说底部状态栏至少要显示 33000 区块，比如 \"x connections  33200 blocks  x transactions\"。</p><blockquote><p>一笔交易的区块数，指的是这笔交易之后，整个网络生成的新区块数量。链上每个新区块，都意味着新硬币归其创建者。你交易列表里的一条 \"generated\" 交易，表示的便是你生成了一个区块。\"区块\"这个概念，第一眼看不明白，你并非第一个。</p></blockquote><p>如果状态显示 \"x confirmations\" 会不会更清楚，比如：\n2/unconfirmed\n3/unconfirmed\n4/unconfirmed\n5/unconfirmed\n6 confirmations\n7 confirmations\n8 confirmations</p><p>每个区块实质上意味着又一个节点确认了它认同截至该处为止的全部交易。</p>","zhText":"按 IP 地址发送是即时的。按比特币地址发送而收款方当时不在线的话，可能要过 30 分钟以上才能看到。\n另外，收款方要先与区块链同步才能看到收到的交易。也就是说底部状态栏至少要显示 33000 区块，比如 \"x connections 33200 blocks x transactions\"。\n一笔交易的区块数，指的是这笔交易之后，整个网络生成的新区块数量。链上每个新区块，都意味着新硬币归其创建者。你交易列表里的一条 \"generated\" 交易，表示的便是你生成了一个区块。\"区块\"这个概念，第一眼看不明白，你并非第一个。\n\n如果状态显示 \"x confirmations\" 会不会更清楚，比如：\n2/unconfirmed\n3/unconfirmed\n4/unconfirmed\n5/unconfirmed\n6 confirmations\n7 confirmations\n8 confirmations\n每个区块实质上意味着又一个节点确认了它认同截至该处为止的全部交易。"},{"id":69,"sid":null,"sat":0,"tid":12,"tt":"64bit support","src":"Bitcointalk","author":"The Madhatter","date":"2010-01-11","ts":"2010-01-11T16:13:20Z","url":"https://bitcointalk.org/index.php?topic=18.msg87#msg87","zh":"<p>bitcoin 现在能编译成 64 位系统上运行的版本吗？-m64 似乎会让编译挂掉。</p><p>（没有催促的意思哈。）</p><p>顺便说一句：我注意到网络规模现在是平时的约 3 倍。节点变多了！</p>","zhText":"bitcoin 现在能编译成 64 位系统上运行的版本吗？-m64 似乎会让编译挂掉。\n（没有催促的意思哈。）\n顺便说一句：我注意到网络规模现在是平时的约 3 倍。节点变多了！"},{"id":70,"sid":29,"sat":1,"tid":12,"tt":"64bit support","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-14","ts":"2010-01-14T20:17:20Z","url":"https://bitcointalk.org/index.php?topic=18.msg97#msg97","zh":"<p>我还没试过编译 64 位。64 位不会更快，因为它只在少数几处用到 64 位数字，而且 SHA-256 是 32 位算法；不过对运行 64 位系统的人来说可能更方便。有时间我会试试 -m64，看看问题出在哪。</p><p>安装 ia32-libs 就能在 64 位 Linux 上运行 32 位版本。（sudo apt-get install ia32-libs）如果我们做 Debian 包，它可以自动把这个作为依赖拉进来。</p>","zhText":"我还没试过编译 64 位。64 位不会更快，因为它只在少数几处用到 64 位数字，而且 SHA-256 是 32 位算法；不过对运行 64 位系统的人来说可能更方便。有时间我会试试 -m64，看看问题出在哪。\n安装 ia32-libs 就能在 64 位 Linux 上运行 32 位版本。（sudo apt-get install ia32-libs）如果我们做 Debian 包，它可以自动把这个作为依赖拉进来。"},{"id":74,"sid":null,"sat":0,"tid":13,"tt":"Number of connections?","src":"Bitcointalk","author":"RogerRabbit","date":"2010-01-16","ts":"2010-01-16T14:27:15Z","url":"https://bitcointalk.org/index.php?topic=21.msg102#msg102","zh":"<p>连接数到底对我有什么用？连接越多生成的硬币就越多吗？还是不管多少都一样？</p><p>好像时不时地，Tor 会卡住，可以连续几个小时只有 3、4 个连接。然后我重启 bitcoin 或重启 Tor 刷新连接，就能有 7、8 个甚至更多（现在 9 个）。\n我分辨不出连接少的时候硬币生成是否变慢了，但好奇两者是否相关。如果不相关，那连接多些到底怎么帮到我？</p>","zhText":"连接数到底对我有什么用？连接越多生成的硬币就越多吗？还是不管多少都一样？\n好像时不时地，Tor 会卡住，可以连续几个小时只有 3、4 个连接。然后我重启 bitcoin 或重启 Tor 刷新连接，就能有 7、8 个甚至更多（现在 9 个）。\n我分辨不出连接少的时候硬币生成是否变慢了，但好奇两者是否相关。如果不相关，那连接多些到底怎么帮到我？"},{"id":76,"sid":null,"sat":0,"tid":14,"tt":"TOR and I2P","src":"Bitcointalk","author":"The Madhatter","date":"2010-01-16","ts":"2010-01-16T23:22:55Z","url":"https://bitcointalk.org/index.php?topic=22.msg104#msg104","zh":"<p>你好，</p><p>我又想到一个主意。</p><p>能有 TOR 和 I2P 的种子节点就太酷了。比如：我可以在 TOR 环境里用 .onion 地址跑 BT。客户端把 BT 连到 TOR，从一个 .onion 地址取种子，把它当作已连接的对端。（I2P 同理：有人可以跑一个 .i2p 服务，内容嘛——就是 BC。）</p><p>我也许会用这种方式架几个节点，把隧道发布到这个论坛。我已经运行了很多 I2P 和 TOR 节点，加上 BC 很容易。</p><p>我支持让 BC 兼容 TOR 和 I2P 以增强系统隐私的设想。我的意思是：何必重复造轮子？那里有成千上万的混合网络节点闲置着，可以用来增强 BC。</p><p>干杯！</p>","zhText":"你好，\n我又想到一个主意。\n能有 TOR 和 I2P 的种子节点就太酷了。比如：我可以在 TOR 环境里用 .onion 地址跑 BT。客户端把 BT 连到 TOR，从一个 .onion 地址取种子，把它当作已连接的对端。（I2P 同理：有人可以跑一个 .i2p 服务，内容嘛——就是 BC。）\n我也许会用这种方式架几个节点，把隧道发布到这个论坛。我已经运行了很多 I2P 和 TOR 节点，加上 BC 很容易。\n我支持让 BC 兼容 TOR 和 I2P 以增强系统隐私的设想。我的意思是：何必重复造轮子？那里有成千上万的混合网络节点闲置着，可以用来增强 BC。\n干杯！"},{"id":75,"sid":30,"sat":1,"tid":13,"tt":"Number of connections?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-20","ts":"2010-01-20T20:07:15Z","url":"https://bitcointalk.org/index.php?topic=21.msg112#msg112","zh":"<p>连接数只要 >= 1，硬币生成的速度便都一样。</p><p>更多的连接，不过是增加冗余罢了。倘若你只有一条连接，而那个节点又慢又忙、抑或只与你一人相连，那该如何是好？多几条连接，能让你更确信自己与网络保持着良好的连通。实践中，这从没成为过问题，网络的连接非常充分。有 2、3 条连接，你就没有问题。</p>","zhText":"连接数只要 >= 1，硬币生成的速度便都一样。\n更多的连接，不过是增加冗余罢了。倘若你只有一条连接，而那个节点又慢又忙、抑或只与你一人相连，那该如何是好？多几条连接，能让你更确信自己与网络保持着良好的连通。实践中，这从没成为过问题，网络的连接非常充分。有 2、3 条连接，你就没有问题。"},{"id":77,"sid":31,"sat":1,"tid":14,"tt":"TOR and I2P","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-20","ts":"2010-01-20T22:05:28Z","url":"https://bitcointalk.org/index.php?topic=22.msg113#msg113","zh":"<p>这事我想了一阵了。我想先给 .onion 地址加上后端支持和连接能力，然后从这里继续。</p><p>现在没什么人用 .onion 地址，因为用户得走一堆步骤才能建一个：配置 TOR 生成 .onion 地址，重启 TOR，再把生成的地址配置进去。也许这是有意的，好让 TOR 无法以足够自动化的方式集成进文件分享程序。</p>","zhText":"这事我想了一阵了。我想先给 .onion 地址加上后端支持和连接能力，然后从这里继续。\n现在没什么人用 .onion 地址，因为用户得走一堆步骤才能建一个：配置 TOR 生成 .onion 地址，重启 TOR，再把生成的地址配置进去。也许这是有意的，好让 TOR 无法以足够自动化的方式集成进文件分享程序。"},{"id":72,"sid":null,"sat":0,"tid":12,"tt":"64bit support","src":"Bitcointalk","author":"Sabunir","date":"2010-01-25","ts":"2010-01-25T05:13:23Z","url":"https://bitcointalk.org/index.php?topic=18.msg127#msg127","zh":"<p>我附议 64 位支持的请求，就算它不能让程序跑得更快。我不是专家，但看不出有什么坏处。反过来说，这也是拥抱未来的好方式。</p>","zhText":"我附议 64 位支持的请求，就算它不能让程序跑得更快。我不是专家，但看不出有什么坏处。反过来说，这也是拥抱未来的好方式。"},{"id":92,"sid":null,"sat":0,"tid":15,"tt":"A newb's test - anyone want to buy a picture for $1?","src":"Bitcointalk","author":"sirius","date":"2010-01-25","ts":"2010-01-25T19:25:29Z","url":"https://bitcointalk.org/index.php?topic=25.msg132#msg132","zh":"<blockquote><p>除非用 IP，否则没法给 Bitcoin 用户发消息？这看起来没必要。背后有什么原因吗？我觉得人们收发硬币时用比特币地址会比用 IP 地址多得多。</p></blockquote><p>我想是某种技术限制。Satoshi 能多讲讲吗？</p>","zhText":"除非用 IP，否则没法给 Bitcoin 用户发消息？这看起来没必要。背后有什么原因吗？我觉得人们收发硬币时用比特币地址会比用 IP 地址多得多。\n\n我想是某种技术限制。Satoshi 能多讲讲吗？"},{"id":99,"sid":null,"sat":0,"tid":16,"tt":"Bitcoin crash when sending coins","src":"Bitcointalk","author":"riX","date":"2010-01-25","ts":"2010-01-25T23:07:16Z","url":"https://bitcointalk.org/index.php?topic=27.msg135#msg135","zh":"<p>最近我尝试发送硬币时，下面这个弹窗出现两次，然后程序退出。</p><pre><code>EXCEPTION: St13runtime_error\nSendMoney() : wtxNew.AcceptTransaction() failed\n\nc:\\Documents and Settings\\username\\bitcoin-0.2.0\\bitcoin.exe in\nCMyApp::OnExceptionInMainLoop()</code></pre><p>重启 bitcoin.exe 后，该交易显示为 0/unconfirmed。即使区块总数增加，状态也不变。</p><p>我在家庭局域网里跑着两个 bitcoin 实例：一个在台式机上，一个在笔记本的虚拟机里，用开关 -connect=192.168.0.2（台式机的 IP）。</p><p>发往我自己的比特币地址、发往我另一台电脑的比特币地址、发往一个当前没有任何地方在线的比特币地址时都会发生。我不是按 IP 发送的。</p><p>我来回搬过钱包和索引文件，这会不会与此有关？</p>","zhText":"最近我尝试发送硬币时，下面这个弹窗出现两次，然后程序退出。\nEXCEPTION: St13runtime_error\nSendMoney() : wtxNew.AcceptTransaction() failed\n\nc:\\Documents and Settings\\username\\bitcoin-0.2.0\\bitcoin.exe in\nCMyApp::OnExceptionInMainLoop()重启 bitcoin.exe 后，该交易显示为 0/unconfirmed。即使区块总数增加，状态也不变。\n我在家庭局域网里跑着两个 bitcoin 实例：一个在台式机上，一个在笔记本的虚拟机里，用开关 -connect=192.168.0.2（台式机的 IP）。\n发往我自己的比特币地址、发往我另一台电脑的比特币地址、发往一个当前没有任何地方在线的比特币地址时都会发生。我不是按 IP 发送的。\n我来回搬过钱包和索引文件，这会不会与此有关？"},{"id":107,"sid":null,"sat":0,"tid":17,"tt":"Blocks never stop generating?","src":"Bitcointalk","author":"riX","date":"2010-01-26","ts":"2010-01-26T22:51:47Z","url":"https://bitcointalk.org/index.php?topic=28.msg142#msg142","zh":"<p>是的，有用。</p><p>重要性是相对的。你可以用区块数来算些统计。另外，按下 ctrl+[numpad+]，你会看到区块的序号和哈希。（至少在 windows 上如此。）</p>","zhText":"是的，有用。\n重要性是相对的。你可以用区块数来算些统计。另外，按下 ctrl+[numpad+]，你会看到区块的序号和哈希。（至少在 windows 上如此。）"},{"id":115,"sid":null,"sat":0,"tid":18,"tt":"Payment server","src":"Bitcointalk","author":"giik","date":"2010-01-27","ts":"2010-01-27T13:23:17Z","url":"https://bitcointalk.org/index.php?topic=29.msg152#msg152","zh":"<blockquote><p>钱包已经支持多个比特币地址。</p><p>你应该看看 bitcoin 应用里的 \"Options/Change your address\"</p></blockquote><p>riX，你说得完全正确！</p><p>现在我只差一个命令行版的 Bitcoin 了。</p><blockquote><p>命令行排在 0.2 之后的待办清单上。</p></blockquote><p>Satoshi，什么时候能指望有支持命令行的新版 Bitcoin？或者说，有没有办法把 Bitcoin 0.2 编译成可以用命令行驱动的形式？</p>","zhText":"钱包已经支持多个比特币地址。\n你应该看看 bitcoin 应用里的 \"Options/Change your address\"\n\nriX，你说得完全正确！\n现在我只差一个命令行版的 Bitcoin 了。\n命令行排在 0.2 之后的待办清单上。\n\nSatoshi，什么时候能指望有支持命令行的新版 Bitcoin？或者说，有没有办法把 Bitcoin 0.2 编译成可以用命令行驱动的形式？"},{"id":100,"sid":32,"sat":1,"tid":16,"tt":"Bitcoin crash when sending coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-27","ts":"2010-01-27T21:52:27Z","url":"https://bitcointalk.org/index.php?topic=27.msg156#msg156","zh":"<p>到处复制钱包文件，就会出现这种情况。倘若你把钱包文件复制到第二台电脑，两台机器都会以为钱包里的钱是自己的。一台花掉了其中一些，另一台却并不知道这些硬币已被花掉，便会试图再花一次——你碰到的，就是这个错误。</p><p>既然现在明确了这是条关键错误信息，它应该写成类似\"这笔钱似乎已被花掉……如果你在另一台电脑上使用过钱包文件的副本，就可能发生这种情况。\"</p><p>你可以移动或备份钱包文件，但它只能有一条\"血脉\"，同一时间只能在一处使用。一旦把钱转出去，便不能再使用任何先前的副本。</p><p>这引出了一个好问题。对于恢复一份可能早于某次花钱之前的备份的情况，我们需要加上重新同步的功能，找出哪些硬币已被花掉。这不难做，只是还没实现。我加进清单了。有了它，多数情况下能直接修好，而不是抛出那条错误信息。</p>","zhText":"到处复制钱包文件，就会出现这种情况。倘若你把钱包文件复制到第二台电脑，两台机器都会以为钱包里的钱是自己的。一台花掉了其中一些，另一台却并不知道这些硬币已被花掉，便会试图再花一次——你碰到的，就是这个错误。\n既然现在明确了这是条关键错误信息，它应该写成类似\"这笔钱似乎已被花掉……如果你在另一台电脑上使用过钱包文件的副本，就可能发生这种情况。\"\n你可以移动或备份钱包文件，但它只能有一条\"血脉\"，同一时间只能在一处使用。一旦把钱转出去，便不能再使用任何先前的副本。\n这引出了一个好问题。对于恢复一份可能早于某次花钱之前的备份的情况，我们需要加上重新同步的功能，找出哪些硬币已被花掉。这不难做，只是还没实现。我加进清单了。有了它，多数情况下能直接修好，而不是抛出那条错误信息。"},{"id":101,"sid":null,"sat":0,"tid":16,"tt":"Bitcoin crash when sending coins","src":"Bitcointalk","author":"riX","date":"2010-01-27","ts":"2010-01-27T22:14:20Z","url":"https://bitcointalk.org/index.php?topic=27.msg157#msg157","zh":"<p>是，我也觉得与此有关。</p><p>要是能有个钱包工具来合并钱包文件、清理不再使用的比特币地址、以及你说的重新同步，就太好了。（我试过干脆重新下载全部区块，但你知道的，交易记录还是留在那里。）\n将来 Merkle 树修剪之后，重新同步怎么办？</p>","zhText":"是，我也觉得与此有关。\n要是能有个钱包工具来合并钱包文件、清理不再使用的比特币地址、以及你说的重新同步，就太好了。（我试过干脆重新下载全部区块，但你知道的，交易记录还是留在那里。）\n将来 Merkle 树修剪之后，重新同步怎么办？"},{"id":93,"sid":33,"sat":1,"tid":15,"tt":"A newb's test - anyone want to buy a picture for $1?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-28","ts":"2010-01-28T01:01:48Z","url":"https://bitcointalk.org/index.php?topic=25.msg159#msg159","zh":"<p>对，是技术限制。按比特币地址发送，是把交易注入网络，由收款方从网络上发现它。你们并不直接连接，对方当时也不必在线。</p><p>我非常想找到附带一条短消息的办法，但问题在于，全世界都能看到这条消息。无论你怎样反复提醒人们这条消息毫无隐私可言，它都会是一起等着发生的事故。</p><p>遗憾的是，ECDSA 只能用于签名，不能加密消息，而我们需要的正是 ECDSA 的小体积。RSA 能加密消息，却比 ECDSA 大上好多倍。</p>","zhText":"对，是技术限制。按比特币地址发送，是把交易注入网络，由收款方从网络上发现它。你们并不直接连接，对方当时也不必在线。\n我非常想找到附带一条短消息的办法，但问题在于，全世界都能看到这条消息。无论你怎样反复提醒人们这条消息毫无隐私可言，它都会是一起等着发生的事故。\n遗憾的是，ECDSA 只能用于签名，不能加密消息，而我们需要的正是 ECDSA 的小体积。RSA 能加密消息，却比 ECDSA 大上好多倍。"},{"id":108,"sid":34,"sat":1,"tid":17,"tt":"Blocks never stop generating?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-28","ts":"2010-01-28T01:08:33Z","url":"https://bitcointalk.org/index.php?topic=28.msg160#msg160","zh":"<p>状态栏里的 \"# blocks\" 我正改成 \"# confirmations\"。那样也许更清楚。</p><p>双击交易可以看到更多信息。</p>","zhText":"状态栏里的 \"# blocks\" 我正改成 \"# confirmations\"。那样也许更清楚。\n双击交易可以看到更多信息。"},{"id":97,"sid":null,"sat":0,"tid":15,"tt":"A newb's test - anyone want to buy a picture for $1?","src":"Bitcointalk","author":"riX","date":"2010-01-28","ts":"2010-01-28T13:07:37Z","url":"https://bitcointalk.org/index.php?topic=25.msg168#msg168","zh":"<blockquote><p>现在我需要给我发比特币的客户再发一封邮件。这并不理想，因为如果有别人知道了某笔正在发生的交易，就可以抢在付款人之前发邮件，冒领这笔交易。</p></blockquote><p>为什么不让他们在交易之前先发邮件？然后你回复那封邮件，附上一个全新且唯一的比特币地址。其实连邮件都不需要：把客户邮箱连同比特币地址一起公布在你网站首页，也同等安全，只是没那么匿名。</p><p>你现在用的方法，等于有人匿名把现金装进信封寄给你，里面附一张写着寄出时间的纸条，然后你根据第一个打电话给你的人所报出的时间与信封里的金额，把货发给他。（包括邮递员，以及任何能碰到你邮箱的人。）</p><p>在交易之前发邮件，则等于有人先打电话给你，得到一个用于寄钱的唯一信箱地址。钱一到那个信箱，你便把货发给客户。</p>","zhText":"现在我需要给我发比特币的客户再发一封邮件。这并不理想，因为如果有别人知道了某笔正在发生的交易，就可以抢在付款人之前发邮件，冒领这笔交易。\n\n为什么不让他们在交易之前先发邮件？然后你回复那封邮件，附上一个全新且唯一的比特币地址。其实连邮件都不需要：把客户邮箱连同比特币地址一起公布在你网站首页，也同等安全，只是没那么匿名。\n你现在用的方法，等于有人匿名把现金装进信封寄给你，里面附一张写着寄出时间的纸条，然后你根据第一个打电话给你的人所报出的时间与信封里的金额，把货发给他。（包括邮递员，以及任何能碰到你邮箱的人。）\n在交易之前发邮件，则等于有人先打电话给你，得到一个用于寄钱的唯一信箱地址。钱一到那个信箱，你便把货发给客户。"},{"id":102,"sid":35,"sat":1,"tid":16,"tt":"Bitcoin crash when sending coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-28","ts":"2010-01-28T23:08:02Z","url":"https://bitcointalk.org/index.php?topic=27.msg170#msg170","zh":"<p>重新同步的做法是遍历你的钱包，对照区块索引，找出你当前这台电脑不知道已被花掉的交易。如果你在另一台用钱包副本的电脑上花了钱，或者你不得不把钱包恢复到花钱之前的备份，就会出现这种情况。目前软件只是默认自己总是知道哪些交易已花掉，因为花钱时它会在 wallet.dat 里做标记。</p><p>钱包合并工具可以做，但一旦重新同步解决了大部分问题，对它的需求就小多了。有了重新同步，你把一个钱包里的全部钱发给另一个钱包，效果差不多。接收方重新同步后发现所有重叠的硬币都已花掉，然后在新的交易里再收一遍。</p>","zhText":"重新同步的做法是遍历你的钱包，对照区块索引，找出你当前这台电脑不知道已被花掉的交易。如果你在另一台用钱包副本的电脑上花了钱，或者你不得不把钱包恢复到花钱之前的备份，就会出现这种情况。目前软件只是默认自己总是知道哪些交易已花掉，因为花钱时它会在 wallet.dat 里做标记。\n钱包合并工具可以做，但一旦重新同步解决了大部分问题，对它的需求就小多了。有了重新同步，你把一个钱包里的全部钱发给另一个钱包，效果差不多。接收方重新同步后发现所有重叠的硬币都已花掉，然后在新的交易里再收一遍。"},{"id":116,"sid":36,"sat":1,"tid":18,"tt":"Payment server","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-28","ts":"2010-01-28T23:26:09Z","url":"https://bitcointalk.org/index.php?topic=29.msg172#msg172","zh":"<p>如 riX 所说，这才是正路。软件可以在每次收款时按需生成新的比特币地址。\"请发送 X bc 至 [一次性比特币地址] 以完成订单\"。服务器收到该地址上的这笔金额，就可以触发自动发货或给店主发邮件。</p><p>加命令行支持是高优先级。只是要有时间写代码。</p>","zhText":"如 riX 所说，这才是正路。软件可以在每次收款时按需生成新的比特币地址。\"请发送 X bc 至 [一次性比特币地址] 以完成订单\"。服务器收到该地址上的这笔金额，就可以触发自动发货或给店主发邮件。\n加命令行支持是高优先级。只是要有时间写代码。"},{"id":98,"sid":37,"sat":1,"tid":15,"tt":"A newb's test - anyone want to buy a picture for $1?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-29","ts":"2010-01-29T00:22:13Z","url":"https://bitcointalk.org/index.php?topic=25.msg173#msg173","zh":"<p>下单付款的推荐方式：\n1) 商家有静态 IP，客户带备注直接发过去。\n2) 商家新建一个比特币地址交给客户，客户发到该地址。这将成为网站软件的标准做法。</p><p>RSA 对 ECDSA：关键不在可执行文件的体积，而在数据的体积。我当时想，如果区块链、比特币地址、磁盘空间和带宽需求都要大一个数量级，那就不实用了。另外，即便用 RSA 传消息，整个比特币网络仍用 ECDSA、只对消息部分并行使用 RSA 也更合理。那样的话，到目前为止已实现的一切都可以原样保留。</p><p>这件事可以等很久之后再想最优做法。它可以用独立的（也许是现有的）电子邮件或 IM 基础设施来传消息；也可以不用 RSA，只在交易里放进消息的哈希，以证明这笔交易对应消息中描述的订单。消息里必须带盐，否则没人能阻止别人暴力破解哈希、还原短消息。</p>","zhText":"下单付款的推荐方式：\n1) 商家有静态 IP，客户带备注直接发过去。\n2) 商家新建一个比特币地址交给客户，客户发到该地址。这将成为网站软件的标准做法。\nRSA 对 ECDSA：关键不在可执行文件的体积，而在数据的体积。我当时想，如果区块链、比特币地址、磁盘空间和带宽需求都要大一个数量级，那就不实用了。另外，即便用 RSA 传消息，整个比特币网络仍用 ECDSA、只对消息部分并行使用 RSA 也更合理。那样的话，到目前为止已实现的一切都可以原样保留。\n这件事可以等很久之后再想最优做法。它可以用独立的（也许是现有的）电子邮件或 IM 基础设施来传消息；也可以不用 RSA，只在交易里放进消息的哈希，以证明这笔交易对应消息中描述的订单。消息里必须带盐，否则没人能阻止别人暴力破解哈希、还原短消息。"},{"id":73,"sid":38,"sat":1,"tid":12,"tt":"64bit support","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-01-29","ts":"2010-01-29T00:42:49Z","url":"https://bitcointalk.org/index.php?topic=18.msg174#msg174","zh":"<p>我提交了 64 位编译的修复，以及一些支持 wxWidgets 2.9.0 的修复。</p><p>serialize.h 里有一个 min(sizeof()) 的编译错误，我为 64 位修掉了。其余 64 位编译错误都出在 wxWidgets 2.8.9 上，所以我开始做 wxWidgets 2.9.0 的支持。</p><p>wxWidgets 2.9.0 是 UTF-8 的。我们一直在用 ANSI 版的 wxWidgets 2.8.9，就是在等 wxWidgets 的 UTF-8 支持。</p><p>我在 64 位 Ubuntu 9.10 Karmic 上编译并运行成功。</p><p>我想剩下的唯一 bug 是状态数字显示混乱。原因不明，我怀疑与 UTF-8 有关，但想不出怎么会。还没深究。</p><p>build-unix.txt 已更新，SVN 上有两个 makefile：\nmakefile.unix.wx2.8\nmakefile.unix.wx2.9</p><p>遗憾的是，我们用的两个版本的 wxWidgets 都还没有 debian 包。系统里只有 wchar（\"unicode\"）版的 wxWidgets 2.8，那很麻烦，因为 wchar 版 wxString 无法转换为 std::string。我们要么用 ANSI 版 wxWidgets 2.8，要么用 wxWidgets 2.9。所以你还是得自己下载构建。</p>","zhText":"我提交了 64 位编译的修复，以及一些支持 wxWidgets 2.9.0 的修复。\nserialize.h 里有一个 min(sizeof()) 的编译错误，我为 64 位修掉了。其余 64 位编译错误都出在 wxWidgets 2.8.9 上，所以我开始做 wxWidgets 2.9.0 的支持。\nwxWidgets 2.9.0 是 UTF-8 的。我们一直在用 ANSI 版的 wxWidgets 2.8.9，就是在等 wxWidgets 的 UTF-8 支持。\n我在 64 位 Ubuntu 9.10 Karmic 上编译并运行成功。\n我想剩下的唯一 bug 是状态数字显示混乱。原因不明，我怀疑与 UTF-8 有关，但想不出怎么会。还没深究。\nbuild-unix.txt 已更新，SVN 上有两个 makefile：\nmakefile.unix.wx2.8\nmakefile.unix.wx2.9\n遗憾的是，我们用的两个版本的 wxWidgets 都还没有 debian 包。系统里只有 wchar（\"unicode\"）版的 wxWidgets 2.8，那很麻烦，因为 wchar 版 wxString 无法转换为 std::string。我们要么用 ANSI 版 wxWidgets 2.8，要么用 wxWidgets 2.9。所以你还是得自己下载构建。"},{"id":182,"sid":null,"sat":0,"tid":21,"tt":"Win32 CPU Cycles vs 'Live Protection' Engines ?","src":"Bitcointalk","author":"BitcoinFX","date":"2010-02-01","ts":"2010-02-01T18:51:53Z","url":"https://bitcointalk.org/index.php?topic=35.msg189#msg189","zh":"<p>我想记录一下首次安装使用 Bitcoin 软件时遇到的一个问题。</p><p>尽管安装正确、端口转发设置无误，前 24 小时内 Bitcoin 有 20 多条连接，却既不生成硬币也不生成\"区块\"。区块数一直停在 0。意识到 Bitcoin 没有\"追赶\"网络的区块下载或生成之后，我打开任务管理器进一步调查。</p><p>我注意到 bitcoin.exe 进程似乎在与 MsMpEng.exe（Microsoft Security Essentials）\"争夺\" CPU。我的电脑配置相当高，所以之前没察觉系统变慢。把 bitcoin.exe 和相应的程序文件夹位置加入 Exclude 'Files and Locations' 和 'Exclude Processes' 之后——Bitcoin 立刻开始生成区块，CPU 进程恢复正常。</p><p>我<b>没有</b>收到任何病毒警报，甚至没有对 Bitcoin 的\"误报\"。<b>我知道这软件 100% 没问题</b>。我猜是 Microsoft Security Essentials 的'实时防护'引擎跟\"区块\"生成所用的高耗 CPU 循环的某些方面\"合不来\"。</p><p>我还没做更多测试，不过用 Comodo Internet Security（免费版）时也遇到了同样的问题。</p><p>对许多可能不那么\"懂技术\"的新 Bitcoin 用户来说，这显然会是个问题。还有别人遇到类似情况吗？</p>","zhText":"我想记录一下首次安装使用 Bitcoin 软件时遇到的一个问题。\n尽管安装正确、端口转发设置无误，前 24 小时内 Bitcoin 有 20 多条连接，却既不生成硬币也不生成\"区块\"。区块数一直停在 0。意识到 Bitcoin 没有\"追赶\"网络的区块下载或生成之后，我打开任务管理器进一步调查。\n我注意到 bitcoin.exe 进程似乎在与 MsMpEng.exe（Microsoft Security Essentials）\"争夺\" CPU。我的电脑配置相当高，所以之前没察觉系统变慢。把 bitcoin.exe 和相应的程序文件夹位置加入 Exclude 'Files and Locations' 和 'Exclude Processes' 之后——Bitcoin 立刻开始生成区块，CPU 进程恢复正常。\n我没有收到任何病毒警报，甚至没有对 Bitcoin 的\"误报\"。我知道这软件 100% 没问题。我猜是 Microsoft Security Essentials 的'实时防护'引擎跟\"区块\"生成所用的高耗 CPU 循环的某些方面\"合不来\"。\n我还没做更多测试，不过用 Comodo Internet Security（免费版）时也遇到了同样的问题。\n对许多可能不那么\"懂技术\"的新 Bitcoin 用户来说，这显然会是个问题。还有别人遇到类似情况吗？"},{"id":175,"sid":null,"sat":0,"tid":20,"tt":"Questions about Addresses","src":"Bitcointalk","author":"BitcoinFX","date":"2010-02-03","ts":"2010-02-03T14:57:15Z","url":"https://bitcointalk.org/index.php?topic=34.msg206#msg206","zh":"<blockquote><p>端口不做转发的话，连接根本进不来。</p></blockquote><p>是这样吗？我有 2 台机器（各自 4+ 条连接）在同一个静态 IP 地址上生成比特币。8333 端口当然为了穿过防火墙连接做了转发，我猜你说的是这个。不过与其他节点的连接，并不需要 8333 端口在路由器上特定转发到某台机器（子网 IP）——不转发反而是最大化连接数的好办法。我理解 Bitcoin 交易只需要另外 1 条连接，对吗？</p><p>我认为我最初的问题是有效的，感谢各位澄清。我想 NewLibertyStandard 是对的：\"如果我没记错，我记得有人告诉过我，币会发给发送者所连接到的第一个 bitcoin 应用。\"</p><p>我不喜欢论坛交流——有时各方说的是同一个意思、却用不同方式表达，很难讨论清楚！</p><p>我有足够的网络连接、路由器和 PC 设备——那我去给自己做一个'正式'测试，边测边读手册。</p>","zhText":"端口不做转发的话，连接根本进不来。\n\n是这样吗？我有 2 台机器（各自 4+ 条连接）在同一个静态 IP 地址上生成比特币。8333 端口当然为了穿过防火墙连接做了转发，我猜你说的是这个。不过与其他节点的连接，并不需要 8333 端口在路由器上特定转发到某台机器（子网 IP）——不转发反而是最大化连接数的好办法。我理解 Bitcoin 交易只需要另外 1 条连接，对吗？\n我认为我最初的问题是有效的，感谢各位澄清。我想 NewLibertyStandard 是对的：\"如果我没记错，我记得有人告诉过我，币会发给发送者所连接到的第一个 bitcoin 应用。\"\n我不喜欢论坛交流——有时各方说的是同一个意思、却用不同方式表达，很难讨论清楚！\n我有足够的网络连接、路由器和 PC 设备——那我去给自己做一个'正式'测试，边测边读手册。"},{"id":82,"sid":null,"sat":0,"tid":14,"tt":"TOR and I2P","src":"Bitcointalk","author":"BitcoinFX","date":"2010-02-03","ts":"2010-02-03T15:31:33Z","url":"https://bitcointalk.org/index.php?topic=22.msg207#msg207","zh":"<p>好，谢谢 riX。</p><p>那么，Bitcoin 一旦连上至少一个节点，-connect 选项就能消除 6667 的警告了。</p><p>Bitcoin 有没有用某种\"节点交换\"或 DHT？因为这似乎仍然挡不住 Tor 持续的 'exit' 警告，于是 Tor 得不断尝试换新的 'exit' 节点来连接。（这很成问题！对 Tor 而言，不是 Bitcoin 哦）这才是我说的\"然而 Bitcoin 必须尝试连接所有节点以确认没漏掉任何区块？\"的本意，我之前表达得不对。</p><p>要提升 Bitcoin 用户的匿名性，I2P 看起来是更容易实现的方案。\n<a href=\"http://forum.i2p2.de/viewtopic.php?t=3946&sid=213e3cd998db98c4511675ecbba17af4\">http://forum.i2p2.de/viewtopic.php?t=3946&sid=213e3cd998db98c4511675ecbba17af4</a></p><p>我也在测试 JonDonym <a href=\"http://anonymous-proxy-servers.net/\">http://anonymous-proxy-servers.net/</a>（只有付费服务支持 socks！）不过他们接受 paysafecard，而 paysafecard 目前可以换购 Bitcoin。</p>","zhText":"好，谢谢 riX。\n那么，Bitcoin 一旦连上至少一个节点，-connect 选项就能消除 6667 的警告了。\nBitcoin 有没有用某种\"节点交换\"或 DHT？因为这似乎仍然挡不住 Tor 持续的 'exit' 警告，于是 Tor 得不断尝试换新的 'exit' 节点来连接。（这很成问题！对 Tor 而言，不是 Bitcoin 哦）这才是我说的\"然而 Bitcoin 必须尝试连接所有节点以确认没漏掉任何区块？\"的本意，我之前表达得不对。\n要提升 Bitcoin 用户的匿名性，I2P 看起来是更容易实现的方案。\nhttp://forum.i2p2.de/viewtopic.php?t=3946&sid=213e3cd998db98c4511675ecbba17af4\n我也在测试 JonDonym http://anonymous-proxy-servers.net/（只有付费服务支持 socks！）不过他们接受 paysafecard，而 paysafecard 目前可以换购 Bitcoin。"},{"id":103,"sid":39,"sat":1,"tid":16,"tt":"Bitcoin crash when sending coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-03","ts":"2010-02-03T23:29:57Z","url":"https://bitcointalk.org/index.php?topic=27.msg219#msg219","zh":"<p>我已把这个修复上传到 SVN。它会在加载时监视已花掉的硬币并更新你的钱包，也会随区块到来持续更新。我还放了一条更好的错误信息，但应该永远不会碰到它，因为它总能提前发现已花掉的硬币——除非你同时在两台电脑上把同一笔钱花掉。</p><p>想试用的话，把你的邮箱私信或邮件给我，我以附件方式发送，并注明操作系统（win、linux 32 位、linux 64 位）。</p>","zhText":"我已把这个修复上传到 SVN。它会在加载时监视已花掉的硬币并更新你的钱包，也会随区块到来持续更新。我还放了一条更好的错误信息，但应该永远不会碰到它，因为它总能提前发现已花掉的硬币——除非你同时在两台电脑上把同一笔钱花掉。\n想试用的话，把你的邮箱私信或邮件给我，我以附件方式发送，并注明操作系统（win、linux 32 位、linux 64 位）。"},{"id":183,"sid":40,"sat":1,"tid":21,"tt":"Win32 CPU Cycles vs 'Live Protection' Engines ?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-03","ts":"2010-02-03T23:36:54Z","url":"https://bitcointalk.org/index.php?topic=35.msg220#msg220","zh":"<p>谢谢反馈。哪个版本的 Windows？</p>","zhText":"谢谢反馈。哪个版本的 Windows？"},{"id":176,"sid":41,"sat":1,"tid":20,"tt":"Questions about Addresses","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-04","ts":"2010-02-04T00:07:07Z","url":"https://bitcointalk.org/index.php?topic=34.msg222#msg222","zh":"<p>端口转发是把一个端口指向一台计算机。它告诉路由器由哪台计算机处理发往该端口的连接。所以收款的就是那台机器。</p><p>如果没设置端口转发，入站连接不会到达任何一台计算机，向该 IP 发送时只会提示无法连接收款方，什么也发不出去。按 IP 发送时，你其实仍是发到一个比特币地址：你的计算机连上那个 IP，向它索取一个新的比特币地址，把交易直接交给它，并确认它收到且接受。</p><p>应该有人把自己的静态 IP 贴出来，让大家试试按 IP 发送，顺便白送那个人一些钱。</p><p>比特币地址里有 32 位校验和，所以你不会不小心打错一个无效地址。</p><p>如果 4) 你发给了某个已抛弃或丢失 wallet.dat 的收款人，钱就丢了。这里有个微妙之处：既然流通中的总钱数变少了，每个人剩下的钱都会略微升值，即\"自然通缩\"。</p>","zhText":"端口转发是把一个端口指向一台计算机。它告诉路由器由哪台计算机处理发往该端口的连接。所以收款的就是那台机器。\n如果没设置端口转发，入站连接不会到达任何一台计算机，向该 IP 发送时只会提示无法连接收款方，什么也发不出去。按 IP 发送时，你其实仍是发到一个比特币地址：你的计算机连上那个 IP，向它索取一个新的比特币地址，把交易直接交给它，并确认它收到且接受。\n应该有人把自己的静态 IP 贴出来，让大家试试按 IP 发送，顺便白送那个人一些钱。\n比特币地址里有 32 位校验和，所以你不会不小心打错一个无效地址。\n如果 4) 你发给了某个已抛弃或丢失 wallet.dat 的收款人，钱就丢了。这里有个微妙之处：既然流通中的总钱数变少了，每个人剩下的钱都会略微升值，即\"自然通缩\"。"},{"id":83,"sid":42,"sat":1,"tid":14,"tt":"TOR and I2P","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-04","ts":"2010-02-04T00:30:50Z","url":"https://bitcointalk.org/index.php?topic=22.msg223#msg223","zh":"<p>用代理端口 9050 时，它只会尝试连接 IRC 一次就放弃，因为它知道 IRC 服务器封禁所有 TOR 出口节点，多半永远连不上。如果用别的端口，它会以为那是个普通的老式代理，会以越来越长的间隔不断重试 IRC。不要用 Polipo 或 Privoxy，那些是 http 过滤器和缓存，一旦改动内容就会破坏 Bitcoin 的消息。Bitcoin 可能正试图通过重连来克服这个问题。你应该用 9050 端口。</p><p>如 riX 所说，\"is giving Tor only an IP address. Apps that do DNS...\" 这类警告不用理会。Bitcoin 在代理模式下完全不用 DNS。</p><p>由于 Bitcoin 经 Tor 无法连上 IRC，它不知道当前哪些节点在线，只能尝试所有最近见过的节点。它尽量节省连接尝试，但人们也希望它启动时快速连接、断线后快速重连。它用了一个算法：一个 IP 距上次连接成功越久，尝试频率越低。比如对一个 24 小时前见过的节点，它会等 5 小时再试。一旦有至少 2 条连接，超过一周没见过的就不再尝试；有 5 条连接时，超过 24 小时不再尝试。</p>","zhText":"用代理端口 9050 时，它只会尝试连接 IRC 一次就放弃，因为它知道 IRC 服务器封禁所有 TOR 出口节点，多半永远连不上。如果用别的端口，它会以为那是个普通的老式代理，会以越来越长的间隔不断重试 IRC。不要用 Polipo 或 Privoxy，那些是 http 过滤器和缓存，一旦改动内容就会破坏 Bitcoin 的消息。Bitcoin 可能正试图通过重连来克服这个问题。你应该用 9050 端口。\n如 riX 所说，\"is giving Tor only an IP address. Apps that do DNS...\" 这类警告不用理会。Bitcoin 在代理模式下完全不用 DNS。\n由于 Bitcoin 经 Tor 无法连上 IRC，它不知道当前哪些节点在线，只能尝试所有最近见过的节点。它尽量节省连接尝试，但人们也希望它启动时快速连接、断线后快速重连。它用了一个算法：一个 IP 距上次连接成功越久，尝试频率越低。比如对一个 24 小时前见过的节点，它会等 5 小时再试。一旦有至少 2 条连接，超过一周没见过的就不再尝试；有 5 条连接时，超过 24 小时不再尝试。"},{"id":180,"sid":null,"sat":0,"tid":20,"tt":"Questions about Addresses","src":"Bitcointalk","author":"Sabunir","date":"2010-02-05","ts":"2010-02-05T17:31:30Z","url":"https://bitcointalk.org/index.php?topic=34.msg246#msg246","zh":"<blockquote><p>我猜那种情况下钱就只是丢了。</p></blockquote><p>是否应该有个针对这种情况的功能？比如，一笔交易长时间（一个月？）未被收款方接受，就取消交易、把硬币退回发送者？</p>","zhText":"我猜那种情况下钱就只是丢了。\n\n是否应该有个针对这种情况的功能？比如，一笔交易长时间（一个月？）未被收款方接受，就取消交易、把硬币退回发送者？"},{"id":184,"sid":43,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-05","ts":"2010-02-05T19:19:12Z","url":"https://bitcointalk.org/index.php?topic=43.msg249#msg249","zh":"<p>2009 年 12 月 30 日，我们完成了第一次工作证明难度的自动调整。</p><p>最小难度是 32 个零位，所以哪怕只有一个人运行节点，难度也不会低于它。去年大部分时间，我们都在最小值以下徘徊。12 月 30 日，我们突破了它，算法随即上调了难度。此后，每次调整，难度都在上升。</p><p>2 月 4 日的调整，把它从去年的 1.34 倍提到 1.82 倍。这意味着，同样多的工作，只能生成 55% 的硬币。</p><p>难度按全网总算力成比例调整。节点数翻倍，难度也会翻倍，总产出便回到目标速率。</p><p>给技术型读者：工作证明难度可以在 debug.log 里搜 \"target:\" 看到。它是一个 256 位无符号十六进制数，SHA-256 值必须小于它才能成功生成区块。它每 2016 个区块调整一次，典型是两周。那时 debug.log 会打印 \"GetNextWorkRequired RETARGET\"。</p><p>minimum    00000000ffff0000000000000000000000000000000000000000000000000000\n30/12/2009 00000000d86a0000000000000000000000000000000000000000000000000000\n11/01/2010 00000000c4280000000000000000000000000000000000000000000000000000\n25/01/2010 00000000be710000000000000000000000000000000000000000000000000000\n04/02/2010 000000008cc30000000000000000000000000000000000000000000000000000\n14/02/2010 0000000065465700000000000000000000000000000000000000000000000000\n24/02/2010 0000000043b3e500000000000000000000000000000000000000000000000000\n08/03/2010 00000000387f6f00000000000000000000000000000000000000000000000000\n21/03/2010 0000000038137500000000000000000000000000000000000000000000000000\n01/04/2010 000000002a111500000000000000000000000000000000000000000000000000\n12/04/2010 0000000020bca700000000000000000000000000000000000000000000000000\n21/04/2010 0000000016546f00000000000000000000000000000000000000000000000000\n04/05/2010 0000000013ec5300000000000000000000000000000000000000000000000000\n19/05/2010 00000000159c2400000000000000000000000000000000000000000000000000\n29/05/2010 000000000f675c00000000000000000000000000000000000000000000000000\n11/06/2010 000000000eba6400000000000000000000000000000000000000000000000000\n24/06/2010 000000000d314200000000000000000000000000000000000000000000000000\n06/07/2010 000000000ae49300000000000000000000000000000000000000000000000000\n13/07/2010 0000000005a3f400000000000000000000000000000000000000000000000000\n16/07/2010 000000000168fd00000000000000000000000000000000000000000000000000\n27/07/2010 00000000010c5a00000000000000000000000000000000000000000000000000\n05/08/2010 0000000000ba1800000000000000000000000000000000000000000000000000\n15/08/2010 0000000000800e00000000000000000000000000000000000000000000000000\n26/08/2010 0000000000692000000000000000000000000000000000000000000000000000</p><p>date, difficulty factor, % change\n2009           1.00\n30/12/2009     1.18   +18%\n11/01/2010     1.31   +11%\n25/01/2010     1.34    +2%\n04/02/2010     1.82   +36%\n14/02/2010     2.53   +39%\n24/02/2010     3.78   +49%\n08/03/2010     4.53   +20%\n21/03/2010     4.57    +9%\n01/04/2010     6.09   +33%\n12/04/2010     7.82   +28%\n21/04/2010    11.46   +47%\n04/05/2010    12.85   +12%\n19/05/2010    11.85    -8%\n29/05/2010    16.62   +40%\n11/06/2010    17.38    +5%\n24/06/2010    19.41   +12%\n06/07/2010    23.50   +21%\n13/07/2010    45.38   +93%\n16/07/2010   181.54  +300%\n27/07/2010   244.21   +35%\n05/08/2010   352.17   +44%\n15/08/2010   511.77   +45%\n26/08/2010   623.39   +22%</p>","zhText":"2009 年 12 月 30 日，我们完成了第一次工作证明难度的自动调整。\n最小难度是 32 个零位，所以哪怕只有一个人运行节点，难度也不会低于它。去年大部分时间，我们都在最小值以下徘徊。12 月 30 日，我们突破了它，算法随即上调了难度。此后，每次调整，难度都在上升。\n2 月 4 日的调整，把它从去年的 1.34 倍提到 1.82 倍。这意味着，同样多的工作，只能生成 55% 的硬币。\n难度按全网总算力成比例调整。节点数翻倍，难度也会翻倍，总产出便回到目标速率。\n给技术型读者：工作证明难度可以在 debug.log 里搜 \"target:\" 看到。它是一个 256 位无符号十六进制数，SHA-256 值必须小于它才能成功生成区块。它每 2016 个区块调整一次，典型是两周。那时 debug.log 会打印 \"GetNextWorkRequired RETARGET\"。\nminimum 00000000ffff0000000000000000000000000000000000000000000000000000\n30/12/2009 00000000d86a0000000000000000000000000000000000000000000000000000\n11/01/2010 00000000c4280000000000000000000000000000000000000000000000000000\n25/01/2010 00000000be710000000000000000000000000000000000000000000000000000\n04/02/2010 000000008cc30000000000000000000000000000000000000000000000000000\n14/02/2010 0000000065465700000000000000000000000000000000000000000000000000\n24/02/2010 0000000043b3e500000000000000000000000000000000000000000000000000\n08/03/2010 00000000387f6f00000000000000000000000000000000000000000000000000\n21/03/2010 0000000038137500000000000000000000000000000000000000000000000000\n01/04/2010 000000002a111500000000000000000000000000000000000000000000000000\n12/04/2010 0000000020bca700000000000000000000000000000000000000000000000000\n21/04/2010 0000000016546f00000000000000000000000000000000000000000000000000\n04/05/2010 0000000013ec5300000000000000000000000000000000000000000000000000\n19/05/2010 00000000159c2400000000000000000000000000000000000000000000000000\n29/05/2010 000000000f675c00000000000000000000000000000000000000000000000000\n11/06/2010 000000000eba6400000000000000000000000000000000000000000000000000\n24/06/2010 000000000d314200000000000000000000000000000000000000000000000000\n06/07/2010 000000000ae49300000000000000000000000000000000000000000000000000\n13/07/2010 0000000005a3f400000000000000000000000000000000000000000000000000\n16/07/2010 000000000168fd00000000000000000000000000000000000000000000000000\n27/07/2010 00000000010c5a00000000000000000000000000000000000000000000000000\n05/08/2010 0000000000ba1800000000000000000000000000000000000000000000000000\n15/08/2010 0000000000800e00000000000000000000000000000000000000000000000000\n26/08/2010 0000000000692000000000000000000000000000000000000000000000000000\ndate, difficulty factor, % change\n2009 1.00\n30/12/2009 1.18 +18%\n11/01/2010 1.31 +11%\n25/01/2010 1.34 +2%\n04/02/2010 1.82 +36%\n14/02/2010 2.53 +39%\n24/02/2010 3.78 +49%\n08/03/2010 4.53 +20%\n21/03/2010 4.57 +9%\n01/04/2010 6.09 +33%\n12/04/2010 7.82 +28%\n21/04/2010 11.46 +47%\n04/05/2010 12.85 +12%\n19/05/2010 11.85 -8%\n29/05/2010 16.62 +40%\n11/06/2010 17.38 +5%\n24/06/2010 19.41 +12%\n06/07/2010 23.50 +21%\n13/07/2010 45.38 +93%\n16/07/2010 181.54 +300%\n27/07/2010 244.21 +35%\n05/08/2010 352.17 +44%\n15/08/2010 511.77 +45%\n26/08/2010 623.39 +22%"},{"id":181,"sid":44,"sat":1,"tid":20,"tt":"Questions about Addresses","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-05","ts":"2010-02-05T19:44:46Z","url":"https://bitcointalk.org/index.php?topic=34.msg250#msg250","zh":"<blockquote><p>是否应该有个针对这种情况的功能？比如，一笔交易长时间（一个月？）未被收款方接受，就取消交易、把硬币退回发送者？</p></blockquote><p>那不可能。你已经把钱交到了收款方密钥对的控制之下。只有那把密钥能支配它。</p><p>这就像你用 AES 和一个强密码加密了一个文件，然后丢了密码。数据就丢了。</p>","zhText":"是否应该有个针对这种情况的功能？比如，一笔交易长时间（一个月？）未被收款方接受，就取消交易、把硬币退回发送者？\n\n那不可能。你已经把钱交到了收款方密钥对的控制之下。只有那把密钥能支配它。\n这就像你用 AES 和一个强密码加密了一个文件，然后丢了密码。数据就丢了。"},{"id":20,"sid":null,"sat":0,"tid":4,"tt":"Repost: Request: Make this anonymous?","src":"SourceForge 遗留（转贴）","author":"Suggester","date":"2010-02-06","ts":"2010-02-06T18:50:09Z","url":"https://bitcointalk.org/index.php?topic=7.msg262#msg262","zh":"<blockquote><p>--------------------\nanonguy54:\n请求：能不能做成匿名的？\nPosted:Thu 15 of Oct, 2009 (19:58 UTC)</p><p>有没有计划把这个服务做成匿名的？</p><p>例如，能通过 Tor 路由 BitCoin。</p></blockquote><p>各位纠正我吧，但我觉得它本来就已经是匿名的了！我转账给的那个人能知道我的 IP 什么的吗？</p>","zhText":"--------------------\nanonguy54:\n请求：能不能做成匿名的？\nPosted:Thu 15 of Oct, 2009 (19:58 UTC)\n有没有计划把这个服务做成匿名的？\n例如，能通过 Tor 路由 BitCoin。\n\n各位纠正我吧，但我觉得它本来就已经是匿名的了！我转账给的那个人能知道我的 IP 什么的吗？"},{"id":252,"sid":null,"sat":0,"tid":23,"tt":"How divisible are bitcoins and other market/economic questions","src":"Bitcointalk","author":"BlueSky","date":"2010-02-06","ts":"2010-02-06T19:08:31Z","url":"https://bitcointalk.org/index.php?topic=44.msg263#msg263","zh":"<p>移除或放宽 2100 万上限，将是一场灾难——正是这种数字现金的有限供给，让它得以作为货币发挥作用。</p><p>允许货币进一步细分，就能解决这个问题。任何人持有的货币价值，都不会损失（并无贬值或掺水），同时又可以把一枚 ฿ 掰成更小的块来交易。</p><p>再说，关键就在于供应没有（中央）控制——一旦有了控制，政府就能消灭它，抑或被中央当局所滥用（一如今天的央行与政府）。</p><p>我很好奇，Satoshi，把 ฿ 实现为 0.000（或更多零）而不是 0.00，技术上有多大难度？</p><p>这不是请求，因为目前还用不上，只是想为将来更大的用户群体预留余地。</p>","zhText":"移除或放宽 2100 万上限，将是一场灾难——正是这种数字现金的有限供给，让它得以作为货币发挥作用。\n允许货币进一步细分，就能解决这个问题。任何人持有的货币价值，都不会损失（并无贬值或掺水），同时又可以把一枚 ฿ 掰成更小的块来交易。\n再说，关键就在于供应没有（中央）控制——一旦有了控制，政府就能消灭它，抑或被中央当局所滥用（一如今天的央行与政府）。\n我很好奇，Satoshi，把 ฿ 实现为 0.000（或更多零）而不是 0.00，技术上有多大难度？\n这不是请求，因为目前还用不上，只是想为将来更大的用户群体预留余地。"},{"id":21,"sid":45,"sat":1,"tid":4,"tt":"Repost: Request: Make this anonymous?","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2010-02-06","ts":"2010-02-06T21:06:32Z","url":"https://bitcointalk.org/index.php?topic=7.msg264#msg264","zh":"<p>发送到比特币地址之时，你并不连接收款方。你把交易发到网络上，路径与转发交易并无二致。你发起的交易，与你从别的节点收到、再广播转发出去的交易，并无任何区别。只不过在网络尚小的当下，仍有人可能凭排除法推断出来。待网络壮大之后，便会好上许多。</p><p>倘若按 IP 发送，收款方就能看到你，因为是你连接到对方的 IP。可以用 TOR 来遮掩。</p><p>倘若你不想让任何人知道你连 Bitcoin 都在用，可以用 TOR。</p><p>Bitcoin 还很新，尚未经过独立的安全分析。倘若你认真对待隐私，TOR 便是一个值得考虑的预防措施。</p>","zhText":"发送到比特币地址之时，你并不连接收款方。你把交易发到网络上，路径与转发交易并无二致。你发起的交易，与你从别的节点收到、再广播转发出去的交易，并无任何区别。只不过在网络尚小的当下，仍有人可能凭排除法推断出来。待网络壮大之后，便会好上许多。\n倘若按 IP 发送，收款方就能看到你，因为是你连接到对方的 IP。可以用 TOR 来遮掩。\n倘若你不想让任何人知道你连 Bitcoin 都在用，可以用 TOR。\nBitcoin 还很新，尚未经过独立的安全分析。倘若你认真对待隐私，TOR 便是一个值得考虑的预防措施。"},{"id":253,"sid":46,"sat":1,"tid":23,"tt":"How divisible are bitcoins and other market/economic questions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-06","ts":"2010-02-06T23:25:53Z","url":"https://bitcointalk.org/index.php?topic=44.msg267#msg267","zh":"<p>真要变得巨大的话，最终不过是全球 68 亿人，去分最多 2100 万枚硬币。</p><p>不过别担心，还有 6 个小数位没有显示，内部总共 8 个小数位。显示 1.00，内部其实是 1.00000000。倘若未来出现大规模通缩，软件可以显示更多的小数位。</p><p>倘若小数字用起来太别扭，我们可以改一下显示小数点的位置。钱的数量不变，不过是 \",\" 与 \".\" 的摆放约定不同。比如把小数点移 3 位，你原来的 1.00000，就显示为 1,000.00。</p>","zhText":"真要变得巨大的话，最终不过是全球 68 亿人，去分最多 2100 万枚硬币。\n不过别担心，还有 6 个小数位没有显示，内部总共 8 个小数位。显示 1.00，内部其实是 1.00000000。倘若未来出现大规模通缩，软件可以显示更多的小数位。\n倘若小数字用起来太别扭，我们可以改一下显示小数点的位置。钱的数量不变，不过是 \",\" 与 \".\" 的摆放约定不同。比如把小数点移 3 位，你原来的 1.00000，就显示为 1,000.00。"},{"id":256,"sid":null,"sat":0,"tid":24,"tt":"Make your \"we accept Bitcoin\" logo","src":"Bitcointalk","author":"giik","date":"2010-02-07","ts":"2010-02-07T19:14:19Z","url":"https://bitcointalk.org/index.php?topic=45.msg276#msg276","zh":"<blockquote><p>大家打开图形编辑器，做一个\"we accept Bitcoin\"（我们接受 Bitcoin）标志。一个好看的标志（最好比我的强）会非常有用。</p></blockquote><p>有高分辨率的 bitcoin 标志吗？或者矢量图？</p>","zhText":"大家打开图形编辑器，做一个\"we accept Bitcoin\"（我们接受 Bitcoin）标志。一个好看的标志（最好比我的强）会非常有用。\n\n有高分辨率的 bitcoin 标志吗？或者矢量图？"},{"id":257,"sid":47,"sat":1,"tid":24,"tt":"Make your \"we accept Bitcoin\" logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-08","ts":"2010-02-08T01:22:29Z","url":"https://bitcointalk.org/index.php?topic=45.msg278#msg278","zh":"<p>没有，抱歉。我一直想重画一个。看起来还行的最大图标，是 20x20 那个，GNOME 的托盘图标用的就是它。再大，就难看了。16x16 和 20x20 的，都经过相当多手工调整，才让像素落位正确。倘若只是把大图缩小，\"BC\" 的线条没有正好落在像素上的地方，像素就会模糊、别扭。</p><p>带 alpha 通道的最好的 16x16 在 src/rc/bitcoin.ico。32x32 那版我不喜欢。</p><p>我附上了 bitcoin20x20.png，即全透明 20x20 版本。</p>","zhText":"没有，抱歉。我一直想重画一个。看起来还行的最大图标，是 20x20 那个，GNOME 的托盘图标用的就是它。再大，就难看了。16x16 和 20x20 的，都经过相当多手工调整，才让像素落位正确。倘若只是把大图缩小，\"BC\" 的线条没有正好落在像素上的地方，像素就会模糊、别扭。\n带 alpha 通道的最好的 16x16 在 src/rc/bitcoin.ico。32x32 那版我不喜欢。\n我附上了 bitcoin20x20.png，即全透明 20x20 版本。"},{"id":275,"sid":48,"sat":1,"tid":26,"tt":"Bitcoin client and website translation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-08","ts":"2010-02-08T01:27:02Z","url":"https://bitcointalk.org/index.php?topic=47.msg279#msg279","zh":"<p>谢谢你愿意帮忙翻译。这大概就是你能帮上的最好的事。</p><p>我需要先准备代码的翻译支持。wxWidgets 有本地化支持，大多数字符串在生成的代码里已经包好了，应该不太难。我们还必须完成向 wxWidgets-2.9.0 的升级以获得 UTF-8 支持。我用 2.9.0 做过测试构建，还剩一个 bug 要修。</p><p>你用的是什么操作系统？Windows，还是 Linux 32 位或 64 位？</p><p>拆分自<a href=\"https://www.bitcoin.org/smf/index.php?topic=44\">另一个帖子</a>。\nsirius-m</p>","zhText":"谢谢你愿意帮忙翻译。这大概就是你能帮上的最好的事。\n我需要先准备代码的翻译支持。wxWidgets 有本地化支持，大多数字符串在生成的代码里已经包好了，应该不太难。我们还必须完成向 wxWidgets-2.9.0 的升级以获得 UTF-8 支持。我用 2.9.0 做过测试构建，还剩一个 bug 要修。\n你用的是什么操作系统？Windows，还是 Linux 32 位或 64 位？\n拆分自另一个帖子。\nsirius-m"},{"id":276,"sid":null,"sat":0,"tid":26,"tt":"Bitcoin client and website translation","src":"Bitcointalk","author":"BlueSky","date":"2010-02-08","ts":"2010-02-08T08:47:08Z","url":"https://bitcointalk.org/index.php?topic=47.msg280#msg280","zh":"<p>我用的是 Windows 32 位（但机器是 AMD64 双核），需要的话也可以虚拟化装一个 Linux（我还得安装）。</p><p>目前最简单的办法是提供不同语言的二进制（比如 bitcoin_en.exe、bitcoin_zh.exe 等）。需要翻译时请发帖说一声，这意味着下一个版本可以出双语版（为什么不出三语版？你不是会说日语吗？）。</p>","zhText":"我用的是 Windows 32 位（但机器是 AMD64 双核），需要的话也可以虚拟化装一个 Linux（我还得安装）。\n目前最简单的办法是提供不同语言的二进制（比如 bitcoin_en.exe、bitcoin_zh.exe 等）。需要翻译时请发帖说一声，这意味着下一个版本可以出双语版（为什么不出三语版？你不是会说日语吗？）。"},{"id":273,"sid":null,"sat":0,"tid":25,"tt":"Simple to implement feature requests","src":"Bitcointalk","author":"BlueSky","date":"2010-02-08","ts":"2010-02-08T09:00:02Z","url":"https://bitcointalk.org/index.php?topic=46.msg281#msg281","zh":"<p>第一个请求：\n可选的\"连接到 IP\"对话框。</p><p>说明：\nBitCoin 目前通过从 IRC 获取若干 IP 之一来连接（对等）网络；一旦连上一个对端，就能建立更多连接。所以只要列表里有 1 个 IP 可用，你就能连上网络并连接到其他 IP（这是我的理解，有误请指正）。</p><p>这与 Tor 的工作方式有些相似：首次启动时它会尝试连接一份公开的 IP 列表（公共桥接节点）。这份列表是公开的，想要阻止 Tor 使用的组织（比如中国或伊朗政府）也能拿到它。于是这些 IP 被封禁，这些国家里的人无法连接。</p><p>不过可以选择连接某个桥的 IP（如果你知道一个——比如自由国家里一位朋友以桥接模式运行着 Tor），以此绕过政权封锁，而且非常稳健。</p><p>加入这个功能后，即便政权试图阻止，Bitcoin 也能照常运转。</p>","zhText":"第一个请求：\n可选的\"连接到 IP\"对话框。\n说明：\nBitCoin 目前通过从 IRC 获取若干 IP 之一来连接（对等）网络；一旦连上一个对端，就能建立更多连接。所以只要列表里有 1 个 IP 可用，你就能连上网络并连接到其他 IP（这是我的理解，有误请指正）。\n这与 Tor 的工作方式有些相似：首次启动时它会尝试连接一份公开的 IP 列表（公共桥接节点）。这份列表是公开的，想要阻止 Tor 使用的组织（比如中国或伊朗政府）也能拿到它。于是这些 IP 被封禁，这些国家里的人无法连接。\n不过可以选择连接某个桥的 IP（如果你知道一个——比如自由国家里一位朋友以桥接模式运行着 Tor），以此绕过政权封锁，而且非常稳健。\n加入这个功能后，即便政权试图阻止，Bitcoin 也能照常运转。"},{"id":277,"sid":49,"sat":1,"tid":26,"tt":"Bitcoin client and website translation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-08","ts":"2010-02-08T16:10:37Z","url":"https://bitcointalk.org/index.php?topic=47.msg283#msg283","zh":"<p>单一二进制加多个 .mo 文件容易得多。维护一大堆构建变体太费事。软件支持一旦实现，任何人都能贡献翻译。</p><p>wxWidgets 用的是 gettext 标准。用 gettext 工具或 poedit 之类，扫描源文件提取字符串生成 .po 文件，把译文填进去，再编译成 .mo 文件。程序在运行时加载 .mo 文件，给所有字符串换皮。给现有程序加语言只需加 .mo 文件，无需重新编译。</p><p>在 Windows 上，.mo 文件放在 EXE 所在目录的 lang 子目录里。</p><p>现在我在做 JSON-RPC 和命令行支持，完成后希望接下来就做这个。</p>","zhText":"单一二进制加多个 .mo 文件容易得多。维护一大堆构建变体太费事。软件支持一旦实现，任何人都能贡献翻译。\nwxWidgets 用的是 gettext 标准。用 gettext 工具或 poedit 之类，扫描源文件提取字符串生成 .po 文件，把译文填进去，再编译成 .mo 文件。程序在运行时加载 .mo 文件，给所有字符串换皮。给现有程序加语言只需加 .mo 文件，无需重新编译。\n在 Windows 上，.mo 文件放在 EXE 所在目录的 lang 子目录里。\n现在我在做 JSON-RPC 和命令行支持，完成后希望接下来就做这个。"},{"id":274,"sid":50,"sat":1,"tid":25,"tt":"Simple to implement feature requests","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-08","ts":"2010-02-08T16:37:24Z","url":"https://bitcointalk.org/index.php?topic=46.msg284#msg284","zh":"<p>有命令行选项：</p><p>bitcoin -addnode=1.2.3.4    告诉 bitcoin 要连接的一个节点\nbitcoin -connect=1.2.3.4    只连接指定节点</p><p>这些选项可以叠加使用，比如\nbitcoin -connect=(先试这个) -connect=(下一个) ...</p><p>-connect 可以指定不可路由的 IP，比如 192.168.x.x，所以如果你有一个服务器集群，想让一台连接外部世界、其余都连到那一台，也能做到。</p><p>特别是，如果你打算一直通过 TOR 连接，就需要 -addnode，因为 IRC 服务器封禁所有 TOR 出口节点。通过 TOR 连接可以用：</p><p>bitcoin -proxy=127.0.0.1:9050 -addnode=212.159.72.216</p>","zhText":"有命令行选项：\nbitcoin -addnode=1.2.3.4 告诉 bitcoin 要连接的一个节点\nbitcoin -connect=1.2.3.4 只连接指定节点\n这些选项可以叠加使用，比如\nbitcoin -connect=(先试这个) -connect=(下一个) ...\n-connect 可以指定不可路由的 IP，比如 192.168.x.x，所以如果你有一个服务器集群，想让一台连接外部世界、其余都连到那一台，也能做到。\n特别是，如果你打算一直通过 TOR 连接，就需要 -addnode，因为 IRC 服务器封禁所有 TOR 出口节点。通过 TOR 连接可以用：\nbitcoin -proxy=127.0.0.1:9050 -addnode=212.159.72.216"},{"id":289,"sid":null,"sat":0,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"BitcoinFX","date":"2010-02-11","ts":"2010-02-11T16:57:50Z","url":"https://bitcointalk.org/index.php?topic=48.msg313#msg313","zh":"<p>真奇怪 !?! 我自己目前也只有过 50.00 的生成。</p>","zhText":"真奇怪 !?! 我自己目前也只有过 50.00 的生成。"},{"id":297,"sid":null,"sat":0,"tid":28,"tt":"DEB Package?","src":"Bitcointalk","author":"nphyx","date":"2010-02-12","ts":"2010-02-12T00:31:35Z","url":"https://bitcointalk.org/index.php?topic=49.msg314#msg314","zh":"<p>我用 wxWidgets 编译的成功率为 0。试着从源码编译 wx 直接没戏（各种语法错误，我没深究），下载了 ubuntu karmic 最新的 wx 预编译包，但据我所看与你的静态链接对不上。我想说的是，与其折腾这些问题，我真想要一个 .deb <.< 我很想参与——作为一个无政府资本主义者（agorist）和密码无政府主义理论的拥趸，这算是我的一个梦想，但坦率地说，我不可能双启动 windows，也不可能在 VM 这种不安全的环境里运行它。</p><p>DEB 不是坏路子，能覆盖绝大多数桌面 Linux 用户，他们大多数人本来也不会去折腾编译，所以我觉得这不算过分的要求。另外，如果你有兴趣帮我解决编译问题，只要由我来编译，我很乐意提供 ubuntu 的 x86_64 二进制。我没做过 .deb，但确信能搞定。告诉我一声。</p>","zhText":"我用 wxWidgets 编译的成功率为 0。试着从源码编译 wx 直接没戏（各种语法错误，我没深究），下载了 ubuntu karmic 最新的 wx 预编译包，但据我所看与你的静态链接对不上。我想说的是，与其折腾这些问题，我真想要一个 .deb DEB 不是坏路子，能覆盖绝大多数桌面 Linux 用户，他们大多数人本来也不会去折腾编译，所以我觉得这不算过分的要求。另外，如果你有兴趣帮我解决编译问题，只要由我来编译，我很乐意提供 ubuntu 的 x86_64 二进制。我没做过 .deb，但确信能搞定。告诉我一声。"},{"id":298,"sid":51,"sat":1,"tid":28,"tt":"DEB Package?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-12","ts":"2010-02-12T02:33:02Z","url":"https://bitcointalk.org/index.php?topic=49.msg315#msg315","zh":"<p>你只是想运行程序，还是真的需要编译？有一个 32 位 Linux 二进制，在 64 位 ubuntu 上运行只需 \"sudo apt-get ia32-libs\"。\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download</a></p><p>我最近更新了 SVN，以支持在 64 位 Karmic 上用 wxWidgets 2.9.0 构建。这是 0.2.0 发布之后的事。0.2.0 发布时还不能在 64 位上构建。</p><p>遗憾的是，我们可用的两个版本的 wxWidgets 目前都没有 -dev deb 包。Karmic 上只有 UTF-16 版。我们需要 ANSI（libwxgtk2.8-ansi-dev）版或 UTF-8（wxWidgets 2.9.0）版。我们正在向 2.9.0 过渡。</p><p>我知道你说过不想用 VM，但实在不行的话——据我上次检查，Windows 版在 Wine 里跑得挺好。</p>","zhText":"你只是想运行程序，还是真的需要编译？有一个 32 位 Linux 二进制，在 64 位 ubuntu 上运行只需 \"sudo apt-get ia32-libs\"。\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download\n我最近更新了 SVN，以支持在 64 位 Karmic 上用 wxWidgets 2.9.0 构建。这是 0.2.0 发布之后的事。0.2.0 发布时还不能在 64 位上构建。\n遗憾的是，我们可用的两个版本的 wxWidgets 目前都没有 -dev deb 包。Karmic 上只有 UTF-16 版。我们需要 ANSI（libwxgtk2.8-ansi-dev）版或 UTF-8（wxWidgets 2.9.0）版。我们正在向 2.9.0 过渡。\n我知道你说过不想用 VM，但实在不行的话——据我上次检查，Windows 版在 Wine 里跑得挺好。"},{"id":290,"sid":52,"sat":1,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-12","ts":"2010-02-12T03:08:08Z","url":"https://bitcointalk.org/index.php?topic=48.msg316#msg316","zh":"<p>超大交易有一笔小额交易费。生成包含该交易的区块的节点会得到这笔费用。</p><p>同一笔钱再次发送时，不会再次产生费用。倘若你的钱包里全是生成的硬币，把它们一次性全部发出去就得打成一笔巨大的交易，要把几百枚 50 bc 的硬币捆在一起。之后发送这个合并单位就只是一行了。</p>","zhText":"超大交易有一笔小额交易费。生成包含该交易的区块的节点会得到这笔费用。\n同一笔钱再次发送时，不会再次产生费用。倘若你的钱包里全是生成的硬币，把它们一次性全部发出去就得打成一笔巨大的交易，要把几百枚 50 bc 的硬币捆在一起。之后发送这个合并单位就只是一行了。"},{"id":23,"sid":null,"sat":0,"tid":4,"tt":"Repost: Request: Make this anonymous?","src":"SourceForge 遗留（转贴）","author":"Xunie","date":"2010-02-12","ts":"2010-02-12T04:23:11Z","url":"https://bitcointalk.org/index.php?topic=7.msg317#msg317","zh":"<p>Tor 亦可能危险，譬如出口节点会记录密码之类的信息。\n故而在配合 Tor（或任何其他代理服务）使用 Bitcoin 时，安全性上存在一个大问题：</p><ul><li>那么，Bitcoin 连接到一个 IP 时，究竟发送些什么？</li><li>我们在线上发送的一切，都经过加密吗？</li><li>会不会有人在代理的末端（在 Tor 里即\"出口节点\"）偷听，并\"偷走\"比特币？</li></ul><p>说到安全，我们兴许该在 bitcoin 里加一个简单的版本检查程序，在用户运行的\"bitcoin 版本不安全\"时发出提醒。</p>","zhText":"Tor 亦可能危险，譬如出口节点会记录密码之类的信息。\n故而在配合 Tor（或任何其他代理服务）使用 Bitcoin 时，安全性上存在一个大问题：\n那么，Bitcoin 连接到一个 IP 时，究竟发送些什么？\n我们在线上发送的一切，都经过加密吗？\n会不会有人在代理的末端（在 Tor 里即\"出口节点\"）偷听，并\"偷走\"比特币？\n说到安全，我们兴许该在 bitcoin 里加一个简单的版本检查程序，在用户运行的\"bitcoin 版本不安全\"时发出提醒。"},{"id":291,"sid":null,"sat":0,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"theymos","date":"2010-02-12","ts":"2010-02-12T08:31:52Z","url":"https://bitcointalk.org/index.php?topic=48.msg318#msg318","zh":"<blockquote><p>超大交易有一笔小额交易费。（通常在 10,000 bc 以上）生成包含该交易的区块的节点会得到这笔费用。</p><p>费用按交易的 KB 大小计算，用于补偿网络处理它所消耗的资源。</p><p>同一笔钱再次发送时不会再次产生费用，因为那时它已然很小了。第一次要把几百枚 50 bc 的硬币捆在一起，之后发送这个合并单位就只是一行了。</p></blockquote><p>发送方客户端会多发一些比特币来覆盖费用吗（这样收款方拿到的正是他期望的数额）？为什么不能有人干脆发 1000 笔小额交易来绕开费用？</p>","zhText":"超大交易有一笔小额交易费。（通常在 10,000 bc 以上）生成包含该交易的区块的节点会得到这笔费用。\n费用按交易的 KB 大小计算，用于补偿网络处理它所消耗的资源。\n同一笔钱再次发送时不会再次产生费用，因为那时它已然很小了。第一次要把几百枚 50 bc 的硬币捆在一起，之后发送这个合并单位就只是一行了。\n\n发送方客户端会多发一些比特币来覆盖费用吗（这样收款方拿到的正是他期望的数额）？为什么不能有人干脆发 1000 笔小额交易来绕开费用？"},{"id":292,"sid":null,"sat":0,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"SmokeTooMuch","date":"2010-02-12","ts":"2010-02-12T13:11:09Z","url":"https://bitcointalk.org/index.php?topic=48.msg319#msg319","zh":"<p>为什么我们还需要费用？我以为\"无费用\"正是比特币的优点之一呢 ?!</p>","zhText":"为什么我们还需要费用？我以为\"无费用\"正是比特币的优点之一呢 ?!"},{"id":293,"sid":null,"sat":0,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"riX","date":"2010-02-12","ts":"2010-02-12T14:31:15Z","url":"https://bitcointalk.org/index.php?topic=48.msg320#msg320","zh":"<blockquote><p>发送方客户端会多发一些比特币来覆盖费用吗（这样收款方拿到的正是他期望的数额）？为什么不能有人干脆发 1000 笔小额交易来绕开费用？</p></blockquote><p>可以，但你得在每两笔之间等一个区块生成出来。</p>","zhText":"发送方客户端会多发一些比特币来覆盖费用吗（这样收款方拿到的正是他期望的数额）？为什么不能有人干脆发 1000 笔小额交易来绕开费用？\n\n可以，但你得在每两笔之间等一个区块生成出来。"},{"id":299,"sid":53,"sat":1,"tid":28,"tt":"DEB Package?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-12","ts":"2010-02-12T15:57:37Z","url":"https://bitcointalk.org/index.php?topic=49.msg322#msg322","zh":"<blockquote><p>倘若你愿意，我可以给你提供预编译的二进制。</p></blockquote><p>我是不是漏了什么？bitcoin.org 上的 32 位 Linux 预编译二进制有什么问题吗？</p><p>发行版里的 bitcoin 二进制静态链接了 wxWidgets 库，其共享链接（openssl 和 GTK）Ubuntu 自带，故它不需要 .deb 来拉取依赖就能运行。</p><p>由于我们正在为 UTF-8 升级到 wxWidgets 2.9.0，而它还没有 DEB 包，我们仍需继续静态链接。</p>","zhText":"倘若你愿意，我可以给你提供预编译的二进制。\n\n我是不是漏了什么？bitcoin.org 上的 32 位 Linux 预编译二进制有什么问题吗？\n发行版里的 bitcoin 二进制静态链接了 wxWidgets 库，其共享链接（openssl 和 GTK）Ubuntu 自带，故它不需要 .deb 来拉取依赖就能运行。\n由于我们正在为 UTF-8 升级到 wxWidgets 2.9.0，而它还没有 DEB 包，我们仍需继续静态链接。"},{"id":24,"sid":54,"sat":1,"tid":4,"tt":"Repost: Request: Make this anonymous?","src":"SourceForge 遗留（转贴）","author":"Satoshi Nakamoto","date":"2010-02-12","ts":"2010-02-12T17:28:32Z","url":"https://bitcointalk.org/index.php?topic=7.msg324#msg324","zh":"<p>没错，通过 Tor 按 IP 发送，不过是用一个问题换另一个问题。Tor 出口节点能看见你消息的明文，还可能对你发起中间人攻击。</p><p>那么最好只发送到比特币地址。发往比特币地址的付款，作为正常网络流量的一部分在网络上广播。与网络的一切通信，皆属公开信息的广播。</p>","zhText":"没错，通过 Tor 按 IP 发送，不过是用一个问题换另一个问题。Tor 出口节点能看见你消息的明文，还可能对你发起中间人攻击。\n那么最好只发送到比特币地址。发往比特币地址的付款，作为正常网络流量的一部分在网络上广播。与网络的一切通信，皆属公开信息的广播。"},{"id":300,"sid":null,"sat":0,"tid":28,"tt":"DEB Package?","src":"Bitcointalk","author":"nphyx","date":"2010-02-13","ts":"2010-02-13T00:25:04Z","url":"https://bitcointalk.org/index.php?topic=49.msg325#msg325","zh":"<p>抱歉，我该说得更清楚些：我跑的是 AMD64。我之前是在用 0.2.0 编译，故这解释了我的很多问题。我*确实*想要一个原生 64 位二进制，但听起来目前不会有。ia32-lib 我已经装了，我会试试你提供的版本，不行的话 Wine 兴许是个选项。谢谢帮忙。我不记得在下载页见过 SVN 链接，不过等你们升到 wxWidgets2.9 我可以再试。2.8.10 我*怎么也*编译不过，我确信多半是我漏了什么，但听起来 2.9 至少能解决 utf-8/ansi 的问题。</p>","zhText":"抱歉，我该说得更清楚些：我跑的是 AMD64。我之前是在用 0.2.0 编译，故这解释了我的很多问题。我*确实*想要一个原生 64 位二进制，但听起来目前不会有。ia32-lib 我已经装了，我会试试你提供的版本，不行的话 Wine 兴许是个选项。谢谢帮忙。我不记得在下载页见过 SVN 链接，不过等你们升到 wxWidgets2.9 我可以再试。2.8.10 我*怎么也*编译不过，我确信多半是我漏了什么，但听起来 2.9 至少能解决 utf-8/ansi 的问题。"},{"id":301,"sid":55,"sat":1,"tid":28,"tt":"DEB Package?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-13","ts":"2010-02-13T01:38:37Z","url":"https://bitcointalk.org/index.php?topic=49.msg326#msg326","zh":"<p>我在 Karmic 64 位上也没能把 wxWidgets 2.8.9 编译过去。</p><p>我一直在 Karmic 64 位上用 wxWidgets 2.9.0 编译最新的 SVN，它在 64 位上编译正常。读一下 build-unix.txt，对 wxWidgets 使用给定的 ../configure 参数，这样就能直接用现成的 makefile.unix.wx2.9。（--enable-debug --disable-shared --enable-monolithic）</p><p><del>2.9.0 还有一个外观 bug 要修：状态数字显示不知为何挤在一起。</del> —— 已修复</p><p>主页的下载链接指向 sourceforge 的 tar.gz 压缩包，里面有 32 位二进制和 0.2.0 源码，那时它们还不能在 64 位上构建。</p><p>SVN 第一次在 64 位上用 wx2.9.0 构建成功是 2010 年 1 月 28 日。</p><p>希望他们哪天能出 wxWidgets 2.9.0 的 debian 包。</p>","zhText":"我在 Karmic 64 位上也没能把 wxWidgets 2.8.9 编译过去。\n我一直在 Karmic 64 位上用 wxWidgets 2.9.0 编译最新的 SVN，它在 64 位上编译正常。读一下 build-unix.txt，对 wxWidgets 使用给定的 ../configure 参数，这样就能直接用现成的 makefile.unix.wx2.9。（--enable-debug --disable-shared --enable-monolithic）\n2.9.0 还有一个外观 bug 要修：状态数字显示不知为何挤在一起。 —— 已修复\n主页的下载链接指向 sourceforge 的 tar.gz 压缩包，里面有 32 位二进制和 0.2.0 源码，那时它们还不能在 64 位上构建。\nSVN 第一次在 64 位上用 wx2.9.0 构建成功是 2010 年 1 月 28 日。\n希望他们哪天能出 wxWidgets 2.9.0 的 debian 包。"},{"id":294,"sid":56,"sat":1,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-14","ts":"2010-02-14T06:28:03Z","url":"https://bitcointalk.org/index.php?topic=48.msg327#msg327","zh":"<blockquote><p>发送方客户端会多发一些比特币来覆盖费用吗（这样收款方拿到的正是他期望的数额）？</p></blockquote><p>会。</p><blockquote><p>为什么我们还需要费用？我以为\"无费用\"正是比特币的优点之一呢 ?!</p></blockquote><p>几乎所有交易都是免费的。倘若一笔交易必须把 500 多笔你收到的最大额付款加总才能凑够金额，它就超过了最大尺寸限制。超限交易加一笔小额费用仍可发出。</p><p>平均规模的交易，以及最大到 500 倍于平均规模的交易，都是免费的。</p><p>只有发送真正巨大的交易时交易费才会登场，即便如此，算下来也大约只有金额的 0.002%。这并非从系统里抽走的钱，它只是流向其他节点。倘若你为付这笔费而难过，你随时可以反客为主自己运行一个节点，说不定哪天你自己就捞到一笔 0.44 的费用。</p>","zhText":"发送方客户端会多发一些比特币来覆盖费用吗（这样收款方拿到的正是他期望的数额）？\n\n会。\n为什么我们还需要费用？我以为\"无费用\"正是比特币的优点之一呢 ?!\n\n几乎所有交易都是免费的。倘若一笔交易必须把 500 多笔你收到的最大额付款加总才能凑够金额，它就超过了最大尺寸限制。超限交易加一笔小额费用仍可发出。\n平均规模的交易，以及最大到 500 倍于平均规模的交易，都是免费的。\n只有发送真正巨大的交易时交易费才会登场，即便如此，算下来也大约只有金额的 0.002%。这并非从系统里抽走的钱，它只是流向其他节点。倘若你为付这笔费而难过，你随时可以反客为主自己运行一个节点，说不定哪天你自己就捞到一笔 0.44 的费用。"},{"id":295,"sid":null,"sat":0,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"theymos","date":"2010-02-14","ts":"2010-02-14T08:48:57Z","url":"https://bitcointalk.org/index.php?topic=48.msg328#msg328","zh":"<p>当比特币生成不再有利可图之后，这笔费用是否足以始终保证运行节点有利可图？</p>","zhText":"当比特币生成不再有利可图之后，这笔费用是否足以始终保证运行节点有利可图？"},{"id":296,"sid":57,"sat":1,"tid":27,"tt":"What's with this odd generation?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-14","ts":"2010-02-14T15:52:23Z","url":"https://bitcointalk.org/index.php?topic=48.msg329#msg329","zh":"<p>对。否则我们无法给硬币设 2100 万的有限上限，因为生成永远需要某个最低回报。几十年后当回报变得太小，交易费将成为节点的主要补偿。我相信 20 年后，要么交易量非常大，要么就没有交易量。</p>","zhText":"对。否则我们无法给硬币设 2100 万的有限上限，因为生成永远需要某个最低回报。几十年后当回报变得太小，交易费将成为节点的主要补偿。我相信 20 年后，要么交易量非常大，要么就没有交易量。"},{"id":185,"sid":58,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-15","ts":"2010-02-15T06:28:38Z","url":"https://bitcointalk.org/index.php?topic=43.msg346#msg346","zh":"<p>14/02/2010 0000000065465700000000000000000000000000000000000000000000000000</p><p>2009        1.00\n30/12/2009  1.18   +18%\n11/01/2010  1.31   +11%\n25/01/2010  1.34    +2%\n04/02/2010  1.82   +36%\n14/02/2010  2.53   +39%</p><p>昨天难度又是一次大幅跃升：从 1.82 倍到 2.53 倍，10 天里涨了 39%。间隔之所以是 10 天而非 14 天，是因为有更多节点加入，用更少时间便生成了 2016 个区块。</p>","zhText":"14/02/2010 0000000065465700000000000000000000000000000000000000000000000000\n2009 1.00\n30/12/2009 1.18 +18%\n11/01/2010 1.31 +11%\n25/01/2010 1.34 +2%\n04/02/2010 1.82 +36%\n14/02/2010 2.53 +39%\n昨天难度又是一次大幅跃升：从 1.82 倍到 2.53 倍，10 天里涨了 39%。间隔之所以是 10 天而非 14 天，是因为有更多节点加入，用更少时间便生成了 2016 个区块。"},{"id":302,"sid":null,"sat":0,"tid":29,"tt":"Setting up multiple bitcoin machines behind NAT","src":"Bitcointalk","author":"foobar","date":"2010-02-16","ts":"2010-02-16T00:35:25Z","url":"https://bitcointalk.org/index.php?topic=54.msg359#msg359","zh":"<p>你好，</p><p>标题基本说明了一切。我想在 NAT 后面架多台比特币机器。为此，倘若可以选择 8333 以外的端口就方便了，我猜这还会带来其他好处。兴许有人把这个端口用于别的东西，或者出于种种原因无法把端口转发设到这个端口。</p><p>还是有别的应该走的路？</p><p>问候，\nfoobar</p>","zhText":"你好，\n标题基本说明了一切。我想在 NAT 后面架多台比特币机器。为此，倘若可以选择 8333 以外的端口就方便了，我猜这还会带来其他好处。兴许有人把这个端口用于别的东西，或者出于种种原因无法把端口转发设到这个端口。\n还是有别的应该走的路？\n问候，\nfoobar"},{"id":303,"sid":59,"sat":1,"tid":29,"tt":"Setting up multiple bitcoin machines behind NAT","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-16","ts":"2010-02-16T01:34:56Z","url":"https://bitcointalk.org/index.php?topic=54.msg360#msg360","zh":"<p>目前还没有实现这个功能的端口设置。这是尚未实现的功能。你只能把 NAT 的端口转发设到其中一台计算机。（我之前说过 NAT 端口转换什么的，但那行不通，其他节点不知道要连到那个端口）</p><p>倘若愿意，作为一个小优化，你可以让其余计算机这样运行：\nbitcoin -connect=<第一台计算机的 IP></p><p>这样它们的全部网络通信都经由第一台计算机，而不必各自单独连到网上取同样的信息。这能节省带宽，不过一开始带宽占用就不大，故除非你有海量计算机，否则影响不大。</p><p>为了在第一台宕机时保有冗余，可以让两台向外连接、其余连接到这两台。头两台正常运行，其余这样运行：\nbitcoin -connect=<IP1> -connect=<IP2></p>","zhText":"目前还没有实现这个功能的端口设置。这是尚未实现的功能。你只能把 NAT 的端口转发设到其中一台计算机。（我之前说过 NAT 端口转换什么的，但那行不通，其他节点不知道要连到那个端口）\n倘若愿意，作为一个小优化，你可以让其余计算机这样运行：\nbitcoin -connect=\n这样它们的全部网络通信都经由第一台计算机，而不必各自单独连到网上取同样的信息。这能节省带宽，不过一开始带宽占用就不大，故除非你有海量计算机，否则影响不大。\n为了在第一台宕机时保有冗余，可以让两台向外连接、其余连接到这两台。头两台正常运行，其余这样运行：\nbitcoin -connect= -connect="},{"id":186,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Suggester","date":"2010-02-16","ts":"2010-02-16T02:15:49Z","url":"https://bitcointalk.org/index.php?topic=43.msg361#msg361","zh":"<p>[编辑：我后来发现自己生成的其实远比那多得多，只是因\"还需 xx 个区块成熟\"这一概念而未意识到。不过难度大幅上升时，我仍然认为那会是个大麻烦。为我的愚蠢致歉 ]</p><p>Satoshi，我算了一下，我这台新式 core 2 duo 大约要连续不停工作 20 小时才能生成 ฿50.00！老电脑就更没指望了。人们喜欢尽快\"拥有\"点什么的感受，有没有办法让生成更可分割？譬如，不是每 20 小时生成 ฿50，而是每 2 小时生成 ฿5？</p><p>我不知道这是否意味着减小区块大小，或是把 120 个区块的门槛降到 12 个区块之类，但由于难度在上升，我可以想象一年后情况会更糟（要 3 周以上才能见到第一批可花硬币！），我们最好尽快为这个问题寻个解法。</p>","zhText":"[编辑：我后来发现自己生成的其实远比那多得多，只是因\"还需 xx 个区块成熟\"这一概念而未意识到。不过难度大幅上升时，我仍然认为那会是个大麻烦。为我的愚蠢致歉 ]\nSatoshi，我算了一下，我这台新式 core 2 duo 大约要连续不停工作 20 小时才能生成 ฿50.00！老电脑就更没指望了。人们喜欢尽快\"拥有\"点什么的感受，有没有办法让生成更可分割？譬如，不是每 20 小时生成 ฿50，而是每 2 小时生成 ฿5？\n我不知道这是否意味着减小区块大小，或是把 120 个区块的门槛降到 12 个区块之类，但由于难度在上升，我可以想象一年后情况会更糟（要 3 周以上才能见到第一批可花硬币！），我们最好尽快为这个问题寻个解法。"},{"id":189,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Sabunir","date":"2010-02-16","ts":"2010-02-16T08:51:51Z","url":"https://bitcointalk.org/index.php?topic=43.msg372#msg372","zh":"<p>我的端口是开放的，软件和硬件防火墙都放行了。路由器处理得当。兴许与我连接的高延迟（平均 2000ms 以上）和/或高丢包率（有时高达 10%）有关？</p>","zhText":"我的端口是开放的，软件和硬件防火墙都放行了。路由器处理得当。兴许与我连接的高延迟（平均 2000ms 以上）和/或高丢包率（有时高达 10%）有关？"},{"id":285,"sid":null,"sat":0,"tid":26,"tt":"Bitcoin client and website translation","src":"Bitcointalk","author":"giik","date":"2010-02-16","ts":"2010-02-16T10:23:05Z","url":"https://bitcointalk.org/index.php?topic=47.msg374#msg374","zh":"<p>我的荷兰语翻译快完成了。本周内发给 sirius-m。</p>","zhText":"我的荷兰语翻译快完成了。本周内发给 sirius-m。"},{"id":190,"sid":60,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-16","ts":"2010-02-16T17:36:40Z","url":"https://bitcointalk.org/index.php?topic=43.msg376#msg376","zh":"<blockquote><p>Satoshi，我算了一下，我这台新式 core 2 duo 大约要连续不停工作 20 小时才能生成 ฿50.00！老电脑就更没指望了。人们喜欢尽快\"拥有\"点什么的感受，有没有办法让生成更可分割？譬如，不是每 20 小时生成 ฿50，而是每 2 小时生成 ฿5？</p></blockquote><p>我考虑过，但并无切实可行的办法做更小的增量。区块生成频率，是在\"尽快确认交易\"与\"网络延迟\"之间的平衡。</p><p>算法的目标是平均每小时 6 个区块。倘若改成 5 bc、每小时 60 个，区块数量会多出 10 倍，初始区块下载也要花 10 倍时间。反正也行不通：那样区块平均间隔仅剩 1 分钟，网络变大后便太接近广播延迟了。</p>","zhText":"Satoshi，我算了一下，我这台新式 core 2 duo 大约要连续不停工作 20 小时才能生成 ฿50.00！老电脑就更没指望了。人们喜欢尽快\"拥有\"点什么的感受，有没有办法让生成更可分割？譬如，不是每 20 小时生成 ฿50，而是每 2 小时生成 ฿5？\n\n我考虑过，但并无切实可行的办法做更小的增量。区块生成频率，是在\"尽快确认交易\"与\"网络延迟\"之间的平衡。\n算法的目标是平均每小时 6 个区块。倘若改成 5 bc、每小时 60 个，区块数量会多出 10 倍，初始区块下载也要花 10 倍时间。反正也行不通：那样区块平均间隔仅剩 1 分钟，网络变大后便太接近广播延迟了。"},{"id":191,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Suggester","date":"2010-02-17","ts":"2010-02-17T01:28:27Z","url":"https://bitcointalk.org/index.php?topic=43.msg381#msg381","zh":"<blockquote><p>倘若我不能连续在线约十四个小时（在卫星连接上极难做到！），那我实际上什么都得不到。</p></blockquote><p>Satoshi 能否确认：倘若会话被中断，机器已完成的计算会继续吗？还是在生成至少一个区块之前断线，就得从头再来？倘若计算会继续，兴许加一个显示\"距你的区块完成还剩百分之几\"的小指示器会是个贴心的补充，让人们抱有希望（其实不管断线后计算是否继续，这个功能都值得加！）</p><blockquote><p>我今天用我的奔腾处理器生成了 5 个区块，其中两个彼此仅差 3 分钟。</p></blockquote><p>好，我刚意识到自己从一开始就没搞懂 Bitcoin 是怎么运作的。不管你在不在生成硬币，区块都会被生成。平均产出与我之前的观察一致（120 个区块/20 小时，即 6 个/小时）。这跟你的 CPU 算力毫无关系，对所有实际用途而言它是恒定的。CPU 算力决定的是你创建的\"交易\"要\"xx 个区块后成熟\"。我的脑子刚刚长大了一点</p><p>这也意味着，theymos，你观察到的 3 分钟间隔很可能是巧合或错误！</p>","zhText":"倘若我不能连续在线约十四个小时（在卫星连接上极难做到！），那我实际上什么都得不到。\n\nSatoshi 能否确认：倘若会话被中断，机器已完成的计算会继续吗？还是在生成至少一个区块之前断线，就得从头再来？倘若计算会继续，兴许加一个显示\"距你的区块完成还剩百分之几\"的小指示器会是个贴心的补充，让人们抱有希望（其实不管断线后计算是否继续，这个功能都值得加！）\n我今天用我的奔腾处理器生成了 5 个区块，其中两个彼此仅差 3 分钟。\n\n好，我刚意识到自己从一开始就没搞懂 Bitcoin 是怎么运作的。不管你在不在生成硬币，区块都会被生成。平均产出与我之前的观察一致（120 个区块/20 小时，即 6 个/小时）。这跟你的 CPU 算力毫无关系，对所有实际用途而言它是恒定的。CPU 算力决定的是你创建的\"交易\"要\"xx 个区块后成熟\"。我的脑子刚刚长大了一点\n这也意味着，theymos，你观察到的 3 分钟间隔很可能是巧合或错误！"},{"id":192,"sid":61,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-17","ts":"2010-02-17T17:58:03Z","url":"https://bitcointalk.org/index.php?topic=43.msg388#msg388","zh":"<blockquote><p>. 兴许与我连接的高延迟（平均 2000ms 以上）有关</p></blockquote><p>双向各 2 秒的延迟，对你的生成成功率的影响理应小于 1%。</p><blockquote><p>和/或高丢包率（有时高达 10%）？</p></blockquote><p>大抵没问题，但我不确定。协议设计为重新同步到下一条消息，消息会向你连接的所有其他节点重新请求，直到收到。倘若错过一个区块，每当有新区块进来、它发现有空缺时，也会继续请求。在最初发布之前，我做过一个测试：在高负载下随机丢弃 1/4 的消息，直到能整夜运行、没有任何节点卡住。</p>","zhText":". 兴许与我连接的高延迟（平均 2000ms 以上）有关\n\n双向各 2 秒的延迟，对你的生成成功率的影响理应小于 1%。\n和/或高丢包率（有时高达 10%）？\n\n大抵没问题，但我不确定。协议设计为重新同步到下一条消息，消息会向你连接的所有其他节点重新请求，直到收到。倘若错过一个区块，每当有新区块进来、它发现有空缺时，也会继续请求。在最初发布之前，我做过一个测试：在高负载下随机丢弃 1/4 的消息，直到能整夜运行、没有任何节点卡住。"},{"id":286,"sid":62,"sat":1,"tid":26,"tt":"Bitcoin client and website translation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-17","ts":"2010-02-17T19:19:43Z","url":"https://bitcointalk.org/index.php?topic=47.msg389#msg389","zh":"<p>我更新了 SVN，加入了翻译支持。可翻译的字符串全部用 _(\"\") 包裹，所有平台都使用 UTF-8。</p><p>程序运行时，会在 EXE 所在目录找文件：locale\\<langcode>\\LC_MESSAGES\\bitcoin.mo</p><p><langcode> 是你的操作系统语言的两字母代码，譬如 \"de\" 或 \"nl\"。</p><p>在 Linux 上，它还会找：\n/usr/share/locale/<langcode>/LC_MESSAGES/bitcoin.mo\n/usr/local/share/locale/<langcode>/LC_MESSAGES/bitcoin.mo\n（Linux 上还有其他应该查找的标准位置吗？）</p><p>这里是用 poedit 快速制作 .po 和 .mo 文件的步骤：</p><p>- 从 SVN 下载 bitcoin 源码\n- 在 trunk 目录里 mkdir locale\\<lang>\\LC_MESSAGES\n- 在 poedit 里，File->New catalog->Paths 标签页\n- 点击 \"New item\" 虚线矩形按钮\n- 填入 \"../../..\" 并务必按回车确认添加路径\n- 点击 OK\n- 把文件保存为你建的 LC_MESSAGES 目录里的 \"bitcoin.po\"\n- 然后它会扫描源码，找到大约 170 个字符串\n- 如果什么都没找到，检查 Catalog->Settings->Path 标签页，确认 \"../../..\" 已添加</p><p>翻译完成后，同时提交 bitcoin.po（可编辑的目录文件）和 bitcoin.mo（程序使用的编译后数据）。</p>","zhText":"我更新了 SVN，加入了翻译支持。可翻译的字符串全部用 _(\"\") 包裹，所有平台都使用 UTF-8。\n程序运行时，会在 EXE 所在目录找文件：locale\\\\LC_MESSAGES\\bitcoin.mo\n 是你的操作系统语言的两字母代码，譬如 \"de\" 或 \"nl\"。\n在 Linux 上，它还会找：\n/usr/share/locale//LC_MESSAGES/bitcoin.mo\n/usr/local/share/locale//LC_MESSAGES/bitcoin.mo\n（Linux 上还有其他应该查找的标准位置吗？）\n这里是用 poedit 快速制作 .po 和 .mo 文件的步骤：\n- 从 SVN 下载 bitcoin 源码\n- 在 trunk 目录里 mkdir locale\\\\LC_MESSAGES\n- 在 poedit 里，File->New catalog->Paths 标签页\n- 点击 \"New item\" 虚线矩形按钮\n- 填入 \"../../..\" 并务必按回车确认添加路径\n- 点击 OK\n- 把文件保存为你建的 LC_MESSAGES 目录里的 \"bitcoin.po\"\n- 然后它会扫描源码，找到大约 170 个字符串\n- 如果什么都没找到，检查 Catalog->Settings->Path 标签页，确认 \"../../..\" 已添加\n翻译完成后，同时提交 bitcoin.po（可编辑的目录文件）和 bitcoin.mo（程序使用的编译后数据）。"},{"id":346,"sid":null,"sat":0,"tid":32,"tt":"Number of connections","src":"Bitcointalk","author":"sirius","date":"2010-02-19","ts":"2010-02-19T00:12:56Z","url":"https://bitcointalk.org/index.php?topic=58.msg403#msg403","zh":"<p>连接数量有写死的上限吗？我现在看到 45 条连接。最近几个月增长得很不错。就是再也挖不到那么多硬币了……</p>","zhText":"连接数量有写死的上限吗？我现在看到 45 条连接。最近几个月增长得很不错。就是再也挖不到那么多硬币了……"},{"id":344,"sid":null,"sat":0,"tid":31,"tt":"The current Bitcoin economic model doesn't work","src":"Bitcointalk","author":"xc","date":"2010-02-20","ts":"2010-02-20T06:39:33Z","url":"https://bitcointalk.org/index.php?topic=57.msg412#msg412","zh":"<p>大家不必焦虑。从来没有谁死于\"通缩螺旋\"。我同意 \"I-am-not-anonymous\" 的看法。市场会选出最好的类比特币货币。不过我恰好相信，Satoshi 为比特币奠定的规则，对一个繁荣的比特币经济的未来而言绰绰有余。</p><p>每个人都确切知道比特币的供应会以多快的速度增长：它白纸黑字地写在编程规则和比特币网络里。诚然，目前还没有一个完全成熟的市场来真正为比特币定价，但这样的市场和交易所正在建设中。至于未来的比特币生成者，问题不是他\"会要求……多少来补偿成本\"。他会问自己的问题是：\"以当前市场价值和我的电力与 CPU 资源利用能力，生成比特币对我划算吗？\"答案是肯定，他就参与；答案是否定，他就停止挖比特币，转而专注于用比特币作适当中介来交易有形资产。拿不准的话，他就试一阵子再做最终决定。</p><p>节点数量及其关联的 CPU 算力会不断变动，而这种竞争性变动会让成本趋近价值（而不是相反）。价值由市场和对比特币作为交易中介（即货币）的需求决定。在遥远的未来，交易费用的竞争将对潜在的节点运营者扮演更重要的角色。</p><p>与你提出的节俭悖论相反，囤积比特币、指望通过通缩赚取购买力并不是坏事。它将使比特币资本的汇集成为可能，让更大规模的资本投资得以成交。将来甚至可能出现比特币银行，以市场利率放出储户的比特币，从而削弱囤积的影响。不过这一切美好的储蓄都有一份代价：当下欲望的满足被推迟。从潜在储蓄者的角度看，问题永远是：是克制当下的欲望现在购买真实的有形资产，还是换取将来购买更多的可能性。这种时间偏好天然因人而异、因境而异。</p><p>鉴于比特币天生是电子的、易于细分，价格将能轻松适应通缩压力。如果储蓄的人太多，价格就会下跌、利率也会下降。这会刺激需求（价格更低），并削弱储蓄的意愿（利息更少）。</p><p>XC</p>","zhText":"大家不必焦虑。从来没有谁死于\"通缩螺旋\"。我同意 \"I-am-not-anonymous\" 的看法。市场会选出最好的类比特币货币。不过我恰好相信，Satoshi 为比特币奠定的规则，对一个繁荣的比特币经济的未来而言绰绰有余。\n每个人都确切知道比特币的供应会以多快的速度增长：它白纸黑字地写在编程规则和比特币网络里。诚然，目前还没有一个完全成熟的市场来真正为比特币定价，但这样的市场和交易所正在建设中。至于未来的比特币生成者，问题不是他\"会要求……多少来补偿成本\"。他会问自己的问题是：\"以当前市场价值和我的电力与 CPU 资源利用能力，生成比特币对我划算吗？\"答案是肯定，他就参与；答案是否定，他就停止挖比特币，转而专注于用比特币作适当中介来交易有形资产。拿不准的话，他就试一阵子再做最终决定。\n节点数量及其关联的 CPU 算力会不断变动，而这种竞争性变动会让成本趋近价值（而不是相反）。价值由市场和对比特币作为交易中介（即货币）的需求决定。在遥远的未来，交易费用的竞争将对潜在的节点运营者扮演更重要的角色。\n与你提出的节俭悖论相反，囤积比特币、指望通过通缩赚取购买力并不是坏事。它将使比特币资本的汇集成为可能，让更大规模的资本投资得以成交。将来甚至可能出现比特币银行，以市场利率放出储户的比特币，从而削弱囤积的影响。不过这一切美好的储蓄都有一份代价：当下欲望的满足被推迟。从潜在储蓄者的角度看，问题永远是：是克制当下的欲望现在购买真实的有形资产，还是换取将来购买更多的可能性。这种时间偏好天然因人而异、因境而异。\n鉴于比特币天生是电子的、易于细分，价格将能轻松适应通缩压力。如果储蓄的人太多，价格就会下跌、利率也会下降。这会刺激需求（价格更低），并削弱储蓄的意愿（利息更少）。\nXC"},{"id":347,"sid":63,"sat":1,"tid":32,"tt":"Number of connections","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-21","ts":"2010-02-21T03:43:48Z","url":"https://bitcointalk.org/index.php?topic=58.msg413#msg413","zh":"<p>节点一旦有 15 条连接就不再主动发起连接。倘若你能够接受入站连接，那么从连向你的节点那里可以收到远超此数的连接，否则你就封顶在 15。</p><p>我不知道有什么理由要 15 条连接。也许应该是 10。</p><p>由于只能向外连接的节点现在大部分时间都在 15 条上下，你应该会稳定到一个均衡。45 意味着每 1 个接受入站的节点对应 3 个只出不进的节点。</p><p>连接数不再是衡量网络规模的好指标了。应该有人定期通过 IRC 连到 chat.freenode.net 的 bitcoin 频道数一数用户数。那给出的是网络节点总数（TOR 节点除外）。</p><p>区块生成又一次跑在了节奏前面。大约 5 天后的下次调整，难度又要上一个台阶。</p>","zhText":"节点一旦有 15 条连接就不再主动发起连接。倘若你能够接受入站连接，那么从连向你的节点那里可以收到远超此数的连接，否则你就封顶在 15。\n我不知道有什么理由要 15 条连接。也许应该是 10。\n由于只能向外连接的节点现在大部分时间都在 15 条上下，你应该会稳定到一个均衡。45 意味着每 1 个接受入站的节点对应 3 个只出不进的节点。\n连接数不再是衡量网络规模的好指标了。应该有人定期通过 IRC 连到 chat.freenode.net 的 bitcoin 频道数一数用户数。那给出的是网络节点总数（TOR 节点除外）。\n区块生成又一次跑在了节奏前面。大约 5 天后的下次调整，难度又要上一个台阶。"},{"id":348,"sid":64,"sat":1,"tid":33,"tt":"Post your static IP","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-21","ts":"2010-02-21T04:19:53Z","url":"https://bitcointalk.org/index.php?topic=59.msg414#msg414","zh":"<p>要是有一份静态 IP 列表供新用户发测试捐赠、看看软件怎么运作，就太好了。如果你能接受入站连接、又有静态 IP 地址，就贴在这里！</p><p>发到这些 IP 的任何金额都应视为捐赠。</p><p>如果你确实请求往返，务必在备注里附上你的回程比特币地址或 IP，但请默认它是单向的。对方不一定守着来账交易等你回寄。</p>","zhText":"要是有一份静态 IP 列表供新用户发测试捐赠、看看软件怎么运作，就太好了。如果你能接受入站连接、又有静态 IP 地址，就贴在这里！\n发到这些 IP 的任何金额都应视为捐赠。\n如果你确实请求往返，务必在备注里附上你的回程比特币地址或 IP，但请默认它是单向的。对方不一定守着来账交易等你回寄。"},{"id":345,"sid":65,"sat":1,"tid":31,"tt":"The current Bitcoin economic model doesn't work","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-21","ts":"2010-02-21T05:44:24Z","url":"https://bitcointalk.org/index.php?topic=57.msg415#msg415","zh":"<p>精彩的分析，xc。</p><p>对某种预期会升值的物品，理性的市场价格本身就已经反映了预期未来增值的现值。你会在脑中做一个概率估计，权衡它继续升值的赔率。</p><p>在没有市场来确立价格的情况下，NewLibertyStandard 基于生产成本的估算是个不错的猜测，也是一项有益的服务（谢谢）。任何商品的价格都趋向于向生产成本靠拢。如果价格低于成本，生产就会放缓。如果价格高于成本，生成并卖出更多就能获利。与此同时，生产增加会推高难度，把生成成本向价格推近。</p><p>以后几年，当新硬币生成只占现有供应量的很小比例时，将是市场价格决定生产成本，而不是相反。</p><p>目前，生成投入正快速增加，说明人们估计的现值高于当前的生产成本。</p>","zhText":"精彩的分析，xc。\n对某种预期会升值的物品，理性的市场价格本身就已经反映了预期未来增值的现值。你会在脑中做一个概率估计，权衡它继续升值的赔率。\n在没有市场来确立价格的情况下，NewLibertyStandard 基于生产成本的估算是个不错的猜测，也是一项有益的服务（谢谢）。任何商品的价格都趋向于向生产成本靠拢。如果价格低于成本，生产就会放缓。如果价格高于成本，生成并卖出更多就能获利。与此同时，生产增加会推高难度，把生成成本向价格推近。\n以后几年，当新硬币生成只占现有供应量的很小比例时，将是市场价格决定生产成本，而不是相反。\n目前，生成投入正快速增加，说明人们估计的现值高于当前的生产成本。"},{"id":194,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-02-21","ts":"2010-02-21T18:52:43Z","url":"https://bitcointalk.org/index.php?topic=43.msg425#msg425","zh":"<blockquote><p>那么这个难度究竟是怎么调整的？（对一个去中心化系统做管理？）又是什么能阻止攻击者把难度调得极低或极高来干扰系统？</p></blockquote><p>我的理解是，每个 Bitcoin 客户端都内置了同样的算法（公式），每隔若干区块自动调整难度。不止如此，我想 Bitcoin 不会接受以不同难度生成的区块，因而倘若一个改动过的 Bitcoin 客户端试图发出更容易生成的区块，所有正宗的客户端都会拒绝这些假区块。</p>","zhText":"那么这个难度究竟是怎么调整的？（对一个去中心化系统做管理？）又是什么能阻止攻击者把难度调得极低或极高来干扰系统？\n\n我的理解是，每个 Bitcoin 客户端都内置了同样的算法（公式），每隔若干区块自动调整难度。不止如此，我想 Bitcoin 不会接受以不同难度生成的区块，因而倘若一个改动过的 Bitcoin 客户端试图发出更容易生成的区块，所有正宗的客户端都会拒绝这些假区块。"},{"id":349,"sid":66,"sat":1,"tid":34,"tt":"UI improvements","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-21","ts":"2010-02-21T21:48:01Z","url":"https://bitcointalk.org/index.php?topic=60.msg426#msg426","zh":"<p>上传了一些 UI 改动到 SVN，作为 0.2.5 版。</p><p>以前是 View->Show Generated，现在是标签页：\n- All Transactions\n- Sent/Received\n- Sent\n- Received</p><p>切到 Received 查看收款方便多了。</p><p>把\"你的地址\"簿挪进了主地址簿。两本地址簿太容易搞混。</p><p>我发现 \"From: unknown, To: (one of your bitcoin addresses)\" 里的 \"To:\" 仍然令人困惑，所以改成了 \"From: unknown, Received with:\"。比特币地址做了缩写，这样你能看到在地址簿 Receiving 标签页里设置的标签。</p><p>修掉了升级到 wxWidgets 2.9.0 后的几处 UI 小毛病。</p><p>我没忘记你们这些想要无 UI 版本的人，只是在更多构建打磨之前得先干点有趣的事。</p>","zhText":"上传了一些 UI 改动到 SVN，作为 0.2.5 版。\n以前是 View->Show Generated，现在是标签页：\n- All Transactions\n- Sent/Received\n- Sent\n- Received\n切到 Received 查看收款方便多了。\n把\"你的地址\"簿挪进了主地址簿。两本地址簿太容易搞混。\n我发现 \"From: unknown, To: (one of your bitcoin addresses)\" 里的 \"To:\" 仍然令人困惑，所以改成了 \"From: unknown, Received with:\"。比特币地址做了缩写，这样你能看到在地址簿 Receiving 标签页里设置的标签。\n修掉了升级到 wxWidgets 2.9.0 后的几处 UI 小毛病。\n我没忘记你们这些想要无 UI 版本的人，只是在更多构建打磨之前得先干点有趣的事。"},{"id":358,"sid":null,"sat":0,"tid":35,"tt":"generation slowed down dramatically","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-02-22","ts":"2010-02-22T19:33:53Z","url":"https://bitcointalk.org/index.php?topic=61.msg431#msg431","zh":"<p>我这里没问题。只是其他客户端碰巧在你之前生成了那些区块。</p>","zhText":"我这里没问题。只是其他客户端碰巧在你之前生成了那些区块。"},{"id":351,"sid":null,"sat":0,"tid":34,"tt":"UI improvements","src":"Bitcointalk","author":"giik","date":"2010-02-22","ts":"2010-02-22T20:04:42Z","url":"https://bitcointalk.org/index.php?topic=60.msg432#msg432","zh":"<p>你把\"你的地址\"和\"其他地址\"合并之后，怎么区分它们？也许我自己构建 0.2.5 版更好——有人有在 Mac OS X 10.6 上构建的指南吗？</p>","zhText":"你把\"你的地址\"和\"其他地址\"合并之后，怎么区分它们？也许我自己构建 0.2.5 版更好——有人有在 Mac OS X 10.6 上构建的指南吗？"},{"id":359,"sid":67,"sat":1,"tid":35,"tt":"generation slowed down dramatically","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-23","ts":"2010-02-23T00:49:56Z","url":"https://bitcointalk.org/index.php?topic=61.msg433#msg433","zh":"<p>只是运气不好的一阵连败而已。在我看来节奏很稳。</p><p>竞争要到下一次自动重定向调整才会起作用，而我们还没到下一次。</p><p>调整每 2016 个区块一次。要计算距下一次的进度，用区块总数除以 2016。小数部分就是距离下一次还有多远。</p><p>我的粗略估算：42032 区块/2016 = 20.85，即走完了 85%。距下一次还有约 1.5 天。那距上次只有约 10 天，目标是 14 天，所以 14/10 = 1.4，难度上升 40% 左右。</p>","zhText":"只是运气不好的一阵连败而已。在我看来节奏很稳。\n竞争要到下一次自动重定向调整才会起作用，而我们还没到下一次。\n调整每 2016 个区块一次。要计算距下一次的进度，用区块总数除以 2016。小数部分就是距离下一次还有多远。\n我的粗略估算：42032 区块/2016 = 20.85，即走完了 85%。距下一次还有约 1.5 天。那距上次只有约 10 天，目标是 14 天，所以 14/10 = 1.4，难度上升 40% 左右。"},{"id":352,"sid":68,"sat":1,"tid":34,"tt":"UI improvements","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-23","ts":"2010-02-23T01:16:28Z","url":"https://bitcointalk.org/index.php?topic=60.msg434#msg434","zh":"<p>地址簿现在有 \"Sending\" 和 \"Receiving\" 两个标签页。你自己的地址称为\"接收地址\"。</p><p>madhatter 一直在 Mac 上构建。他遇到的错误可能是 UTF-16 版 wxWidgets 2.8 导致的。用 2.9.0 应该会顺利些。wxWidgets 2.9.0 是 UTF-8 的，不会有那个问题。</p><p>我记得他在 FreeBSD 上搞定了，但他想要的是无 UI 版本。</p><p>命令行和 JSON-RPC 守护进程版本现在能用了。一两天内提交到 SVN。</p><p>我在我的 Ubuntu 系统上禁用了 gdm，让它启动进命令行。希望之后能用 rcconf 把它再启用回来。</p>","zhText":"地址簿现在有 \"Sending\" 和 \"Receiving\" 两个标签页。你自己的地址称为\"接收地址\"。\nmadhatter 一直在 Mac 上构建。他遇到的错误可能是 UTF-16 版 wxWidgets 2.8 导致的。用 2.9.0 应该会顺利些。wxWidgets 2.9.0 是 UTF-8 的，不会有那个问题。\n我记得他在 FreeBSD 上搞定了，但他想要的是无 UI 版本。\n命令行和 JSON-RPC 守护进程版本现在能用了。一两天内提交到 SVN。\n我在我的 Ubuntu 系统上禁用了 gdm，让它启动进命令行。希望之后能用 rcconf 把它再启用回来。"},{"id":354,"sid":null,"sat":0,"tid":34,"tt":"UI improvements","src":"Bitcointalk","author":"Xunie","date":"2010-02-23","ts":"2010-02-23T12:28:27Z","url":"https://bitcointalk.org/index.php?topic=60.msg439#msg439","zh":"<p>你可以登录 TTY1-8 之一（sirius-m 说的就是这个），执行 <i>/etc/init.d/gdm start</i>，gdm 就会启动！</p>","zhText":"你可以登录 TTY1-8 之一（sirius-m 说的就是这个），执行 /etc/init.d/gdm start，gdm 就会启动！"},{"id":363,"sid":null,"sat":0,"tid":36,"tt":"Bitcoin Address Collisions","src":"Bitcointalk","author":"ec","date":"2010-02-23","ts":"2010-02-23T16:17:56Z","url":"https://bitcointalk.org/index.php?topic=62.msg442#msg442","zh":"<blockquote><p>你是指一个人第一次运行 Bitcoin 时生成的私钥吗？如果有人成功复制了别人的密钥，那么在他下载全部区块之后，他就会拥有和原密钥主人相同的余额。你是这个意思吧？</p></blockquote><p>是的，没错。他们会共享同一个钱包，这就变成了谁先把钱花掉的竞赛。</p><blockquote><p>我指的是那些自定义比特币地址——你可以给它贴上将会给你发币的人的名字，这样你就知道付款来自谁。我想这些地址是由前面提到的私钥生成的。我担心的是碰撞：虽然它们非常独特，但所有比特币客户端都能轻易一遍又一遍地生成它们。</p></blockquote><p>如果我没读错源码，密钥总是成对生成。也就是说，每个地址都有一个关联的私钥。点击 \"New Address\" 时，你调用的是 main.cpp 里的 GenerateKey，它会生成一个新的密钥对。所以重复地址归根结底是重复公钥。那可能性<i>非常</i>低。</p><p>虽然密钥确实\"轻易可生成\"，但要发生碰撞，你得生成海量密钥才行。我不确定，但生成的密钥似乎有 256 位的空间，比 wikipedia 上 uuid 词条给出的 122 位大得多。记住，123 位的碰撞概率是 122 位的一半，124 位再减半，以此类推。</p>","zhText":"你是指一个人第一次运行 Bitcoin 时生成的私钥吗？如果有人成功复制了别人的密钥，那么在他下载全部区块之后，他就会拥有和原密钥主人相同的余额。你是这个意思吧？\n\n是的，没错。他们会共享同一个钱包，这就变成了谁先把钱花掉的竞赛。\n我指的是那些自定义比特币地址——你可以给它贴上将会给你发币的人的名字，这样你就知道付款来自谁。我想这些地址是由前面提到的私钥生成的。我担心的是碰撞：虽然它们非常独特，但所有比特币客户端都能轻易一遍又一遍地生成它们。\n\n如果我没读错源码，密钥总是成对生成。也就是说，每个地址都有一个关联的私钥。点击 \"New Address\" 时，你调用的是 main.cpp 里的 GenerateKey，它会生成一个新的密钥对。所以重复地址归根结底是重复公钥。那可能性非常低。\n虽然密钥确实\"轻易可生成\"，但要发生碰撞，你得生成海量密钥才行。我不确定，但生成的密钥似乎有 256 位的空间，比 wikipedia 上 uuid 词条给出的 122 位大得多。记住，123 位的碰撞概率是 122 位的一半，124 位再减半，以此类推。"},{"id":364,"sid":69,"sat":1,"tid":36,"tt":"Bitcoin Address Collisions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-23","ts":"2010-02-23T16:26:09Z","url":"https://bitcointalk.org/index.php?topic=62.msg443#msg443","zh":"<p>每个比特币地址都有独立的公钥/私钥对。不存在一把解锁一切的单一私钥。比特币地址是公钥的 160 位哈希，系统里其他一切都是 256 位的。</p><p>如果发生碰撞，撞出者可以花掉发往那个地址的任何钱。只是发往那个地址的钱，而不是整个钱包。</p><p>如果你存心要制造碰撞，目前生成一个碰撞的比特币地址要比生成一个区块多花 2^126 倍的时间。你靠生成区块能赚到多得多的钱。</p><p>随机种子是非常彻底的。在 Windows 上，它使用全部性能监视器数据——自你的计算机启动以来的每一项磁盘性能、网卡指标、CPU 时间、分页等。Linux 有内建的熵收集器。除此之外，每当你在 Bitcoin 窗口里移动鼠标，你就在产生熵，熵还会从磁盘操作的计时中采集。</p>","zhText":"每个比特币地址都有独立的公钥/私钥对。不存在一把解锁一切的单一私钥。比特币地址是公钥的 160 位哈希，系统里其他一切都是 256 位的。\n如果发生碰撞，撞出者可以花掉发往那个地址的任何钱。只是发往那个地址的钱，而不是整个钱包。\n如果你存心要制造碰撞，目前生成一个碰撞的比特币地址要比生成一个区块多花 2^126 倍的时间。你靠生成区块能赚到多得多的钱。\n随机种子是非常彻底的。在 Windows 上，它使用全部性能监视器数据——自你的计算机启动以来的每一项磁盘性能、网卡指标、CPU 时间、分页等。Linux 有内建的熵收集器。除此之外，每当你在 Bitcoin 窗口里移动鼠标，你就在产生熵，熵还会从磁盘操作的计时中采集。"},{"id":355,"sid":70,"sat":1,"tid":34,"tt":"UI improvements","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-23","ts":"2010-02-23T16:53:27Z","url":"https://bitcointalk.org/index.php?topic=60.msg446#msg446","zh":"<blockquote><p><i>/etc/init.d/gdm start</i>，gdm 就会启动！</p></blockquote><p>啊对，这就好了，一切恢复正常。</p><p>ctrl+alt+F[1-8] 在这台电脑上从来不管用。屏幕直接乱成一团。</p>","zhText":"/etc/init.d/gdm start，gdm 就会启动！\n\n啊对，这就好了，一切恢复正常。\nctrl+alt+F[1-8] 在这台电脑上从来不管用。屏幕直接乱成一团。"},{"id":365,"sid":null,"sat":0,"tid":36,"tt":"Bitcoin Address Collisions","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-02-23","ts":"2010-02-23T19:04:47Z","url":"https://bitcointalk.org/index.php?topic=62.msg450#msg450","zh":"<p>谢谢解释。我想全都说得通了。</p><p>生成的比特币是用主 Bitcoin 窗口当前显示的那个地址加密的吗？我很久以前也许在一封邮件里提过：要是将来的某个版本能让人看到自己的哪些比特币是用自己的哪个地址加密的，那就太酷了。</p>","zhText":"谢谢解释。我想全都说得通了。\n生成的比特币是用主 Bitcoin 窗口当前显示的那个地址加密的吗？我很久以前也许在一封邮件里提过：要是将来的某个版本能让人看到自己的哪些比特币是用自己的哪个地址加密的，那就太酷了。"},{"id":367,"sid":71,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-23","ts":"2010-02-23T22:15:41Z","url":"https://bitcointalk.org/index.php?topic=63.msg452#msg452","zh":"<p>SVN 上的 0.2.6 版现在可以作为守护进程运行，并用命令行或 JSON-RPC 控制。</p><p>在 Linux 上需要装 libgtk2.0-0，但不需要运行 GUI。希望 gtk 能在没有窗口系统的情况下安装。</p><p>以守护进程方式启动的命令是：\nbitcoin -daemon [switches...]</p><p>或者，既正常运行 UI、又能用命令行或 JSON-RPC 控制的话，用 \"-server\" 开关。\nbitcoin -server [switches...]</p><p>无论哪个开关，它都会运行一个 HTTP JSON-RPC 服务器，接受 127.0.0.1:8332 上的本地套接字连接。端口绑定在回环上，只能从本机访问，但任何账户都可以，不限运行它的那个用户。</p><p>用命令行控制它的接口是：一个不带任何开关的命令名，后跟参数（如有）。\nbitcoin <command> [params...]</p><p>例如：\nbitcoin getinfo\nbitcoin getdifficulty\nbitcoin setgenerate true\nbitcoin stop</p><p>它是一个简单的 JSON-RPC 客户端，会打印 JSON 结果。命令列表见 rpc.cpp。</p><p>Web 应用或任何自动化程序一般直接用 JSON-RPC，不用命令行。主流语言都有 JSON-RPC 库。在 PHP、Python 这类脚本语言里，语法就像调用本地函数一样自然。</p>","zhText":"SVN 上的 0.2.6 版现在可以作为守护进程运行，并用命令行或 JSON-RPC 控制。\n在 Linux 上需要装 libgtk2.0-0，但不需要运行 GUI。希望 gtk 能在没有窗口系统的情况下安装。\n以守护进程方式启动的命令是：\nbitcoin -daemon [switches...]\n或者，既正常运行 UI、又能用命令行或 JSON-RPC 控制的话，用 \"-server\" 开关。\nbitcoin -server [switches...]\n无论哪个开关，它都会运行一个 HTTP JSON-RPC 服务器，接受 127.0.0.1:8332 上的本地套接字连接。端口绑定在回环上，只能从本机访问，但任何账户都可以，不限运行它的那个用户。\n用命令行控制它的接口是：一个不带任何开关的命令名，后跟参数（如有）。\nbitcoin [params...]\n例如：\nbitcoin getinfo\nbitcoin getdifficulty\nbitcoin setgenerate true\nbitcoin stop\n它是一个简单的 JSON-RPC 客户端，会打印 JSON 结果。命令列表见 rpc.cpp。\nWeb 应用或任何自动化程序一般直接用 JSON-RPC，不用命令行。主流语言都有 JSON-RPC 库。在 PHP、Python 这类脚本语言里，语法就像调用本地函数一样自然。"},{"id":366,"sid":72,"sat":1,"tid":36,"tt":"Bitcoin Address Collisions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-23","ts":"2010-02-23T22:24:00Z","url":"https://bitcointalk.org/index.php?topic=62.msg453#msg453","zh":"<blockquote><p>生成的比特币是用主 Bitcoin 窗口当前显示的那个地址加密的吗？</p></blockquote><p>不是，每笔生成的交易都用一个新的、一次性的地址。</p><p>什么都不用主窗口里的地址，它只是放在那儿方便你复制。0.2.5 在它旁边加了个 \"New...\" 按钮，每次使用前都能轻松换新。</p>","zhText":"生成的比特币是用主 Bitcoin 窗口当前显示的那个地址加密的吗？\n\n不是，每笔生成的交易都用一个新的、一次性的地址。\n什么都不用主窗口里的地址，它只是放在那儿方便你复制。0.2.5 在它旁边加了个 \"New...\" 按钮，每次使用前都能轻松换新。"},{"id":308,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"The Madhatter","date":"2010-02-24","ts":"2010-02-24T02:37:55Z","url":"https://bitcointalk.org/index.php?topic=55.msg462#msg462","zh":"<p>是啊，我也完全想到过这个。磁力链接方案就太棒了。</p>","zhText":"是啊，我也完全想到过这个。磁力链接方案就太棒了。"},{"id":369,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"theymos","date":"2010-02-24","ts":"2010-02-24T03:07:37Z","url":"https://bitcointalk.org/index.php?topic=63.msg467#msg467","zh":"<blockquote><p>在 Linux 上需要装 libgtk2.0-0</p></blockquote><p>这个依赖以后会去掉吗？我宁愿不跟 GTK 打交道。</p>","zhText":"在 Linux 上需要装 libgtk2.0-0\n\n这个依赖以后会去掉吗？我宁愿不跟 GTK 打交道。"},{"id":371,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"The Madhatter","date":"2010-02-24","ts":"2010-02-24T05:00:45Z","url":"https://bitcointalk.org/index.php?topic=63.msg478#msg478","zh":"<p>* madhatter2 拔出了锋利无比的十六进制编辑器</p>","zhText":"* madhatter2 拔出了锋利无比的十六进制编辑器"},{"id":309,"sid":73,"sat":1,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-24","ts":"2010-02-24T05:57:43Z","url":"https://bitcointalk.org/index.php?topic=55.msg481#msg481","zh":"<p>在销售点用会很不错。收银机在屏幕上显示一个编码了比特币地址和金额的二维码，你用手机拍下来。</p>","zhText":"在销售点用会很不错。收银机在屏幕上显示一个编码了比特币地址和金额的二维码，你用手机拍下来。"},{"id":372,"sid":74,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-24","ts":"2010-02-24T06:17:23Z","url":"https://bitcointalk.org/index.php?topic=63.msg482#msg482","zh":"<blockquote><p>这个依赖以后会去掉吗？我宁愿不跟 GTK 打交道。</p></blockquote><p>GTK 实际需要多少\"打交道\"？不就是 \"sudo apt-get install libgtk2.0-0\" 装上、多几个闲置的库文件吗？GTK 什么都不用干，只要在 bitcoin 加载时供它链接、让 gtk-init-check 调用因无 GUI 而失败，就完事了。</p><p>这省得我们用 ifdef 把一切切得稀碎、再为 wxBase 单独编译一个二进制，只为绕开链接 GTK。</p>","zhText":"这个依赖以后会去掉吗？我宁愿不跟 GTK 打交道。\n\nGTK 实际需要多少\"打交道\"？不就是 \"sudo apt-get install libgtk2.0-0\" 装上、多几个闲置的库文件吗？GTK 什么都不用干，只要在 bitcoin 加载时供它链接、让 gtk-init-check 调用因无 GUI 而失败，就完事了。\n这省得我们用 ifdef 把一切切得稀碎、再为 wxBase 单独编译一个二进制，只为绕开链接 GTK。"},{"id":271,"sid":null,"sat":0,"tid":24,"tt":"Make your \"we accept Bitcoin\" logo","src":"Bitcointalk","author":"Sabunir","date":"2010-02-24","ts":"2010-02-24T18:00:34Z","url":"https://bitcointalk.org/index.php?topic=45.msg501#msg501","zh":"<p>我不那么挑剔。比特币网络的成长与更广泛使用的推广，对我而言便已是足够的回报了。</p>","zhText":"我不那么挑剔。比特币网络的成长与更广泛使用的推广，对我而言便已是足够的回报了。"},{"id":376,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"sirius","date":"2010-02-24","ts":"2010-02-24T18:17:35Z","url":"https://bitcointalk.org/index.php?topic=63.msg502#msg502","zh":"<p>这很奇怪……在我的 64 位 Linux 服务器上以守护进程方式启动 Bitcoin 时，它吃光了剩余的全部 250MB 内存、700MB 交换空间，最终崩溃。在我 32 位的 Ubuntu 桌面上却运行正常，内存占用稳定在 15MB。服务器上跑的是 64 位构建的 Bitcoin。也许构建本身出了什么问题。</p>","zhText":"这很奇怪……在我的 64 位 Linux 服务器上以守护进程方式启动 Bitcoin 时，它吃光了剩余的全部 250MB 内存、700MB 交换空间，最终崩溃。在我 32 位的 Ubuntu 桌面上却运行正常，内存占用稳定在 15MB。服务器上跑的是 64 位构建的 Bitcoin。也许构建本身出了什么问题。"},{"id":389,"sid":75,"sat":1,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-24","ts":"2010-02-24T21:24:23Z","url":"https://bitcointalk.org/index.php?topic=64.msg504#msg504","zh":"<p>新图标，大家觉得怎么样？比旧的好吗？</p><p>用于缩放到自定义尺寸的全尺寸 530x529 图片：\n<a href=\"http://www.bitcoin.org/download/bitcoin530.png\">http://www.bitcoin.org/download/bitcoin530.png</a></p><p>大尺寸下透视阴影太厚了。我更新了 32、48 和全尺寸版本。</p><p>我把这些图片发布到公共领域（无版权）。我请求衍生作品同样进入公共领域。</p>","zhText":"新图标，大家觉得怎么样？比旧的好吗？\n用于缩放到自定义尺寸的全尺寸 530x529 图片：\nhttp://www.bitcoin.org/download/bitcoin530.png\n大尺寸下透视阴影太厚了。我更新了 32、48 和全尺寸版本。\n我把这些图片发布到公共领域（无版权）。我请求衍生作品同样进入公共领域。"},{"id":272,"sid":76,"sat":1,"tid":24,"tt":"Make your \"we accept Bitcoin\" logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-24","ts":"2010-02-24T21:53:52Z","url":"https://bitcointalk.org/index.php?topic=45.msg507#msg507","zh":"<p>倘若是 GPL 的东西，我就得避免使用。对 GPL 本身并无意见，但 Bitcoin 是 MIT 许可的项目。凡是 GPL 的内容，请明确标注出来。</p>","zhText":"倘若是 GPL 的东西，我就得避免使用。对 GPL 本身并无意见，但 Bitcoin 是 MIT 许可的项目。凡是 GPL 的内容，请明确标注出来。"},{"id":377,"sid":77,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-24","ts":"2010-02-24T22:08:55Z","url":"https://bitcointalk.org/index.php?topic=63.msg509#msg509","zh":"<p>内存占用是什么时候、以多快的速度增长的？立刻、长时间缓慢、还是从某个后续事件开始？</p><p>我在 ubuntu 9.10 64 位上跑着 -daemon，内存占用是稳定的。</p><p>一定是服务器上除了 64 位以外的某种差异。也许是缺少 GUI 引起的某种故障。内存泄漏调试工具能给点线索。</p>","zhText":"内存占用是什么时候、以多快的速度增长的？立刻、长时间缓慢、还是从某个后续事件开始？\n我在 ubuntu 9.10 64 位上跑着 -daemon，内存占用是稳定的。\n一定是服务器上除了 64 位以外的某种差异。也许是缺少 GUI 引起的某种故障。内存泄漏调试工具能给点线索。"},{"id":195,"sid":78,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-24","ts":"2010-02-24T22:42:24Z","url":"https://bitcointalk.org/index.php?topic=43.msg510#msg510","zh":"<p>自动调整就在今天早些时候发生了。</p><p>24/02/2010 0000000043b3e500000000000000000000000000000000000000000000000000</p><p>24/02/2010  3.78  +49%</p><p>我更新了首帖。</p>","zhText":"自动调整就在今天早些时候发生了。\n24/02/2010 0000000043b3e500000000000000000000000000000000000000000000000000\n24/02/2010 3.78 +49%\n我更新了首帖。"},{"id":391,"sid":null,"sat":0,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Sabunir","date":"2010-02-25","ts":"2010-02-25T01:47:56Z","url":"https://bitcointalk.org/index.php?topic=64.msg519#msg519","zh":"<p>我喜欢。有更高分辨率的吗？</p>","zhText":"我喜欢。有更高分辨率的吗？"},{"id":392,"sid":79,"sat":1,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-25","ts":"2010-02-25T01:56:24Z","url":"https://bitcointalk.org/index.php?topic=64.msg521#msg521","zh":"<blockquote><p>我喜欢。有更高分辨率的吗？</p></blockquote><p>有，原图是 546x531 像素。</p><p>它在大尺寸下也很好看，不过小图标才是你几乎一直在看的，所以我想先以小图标来评判。稍后我会贴更大尺寸和全尺寸。</p>","zhText":"我喜欢。有更高分辨率的吗？\n\n有，原图是 546x531 像素。\n它在大尺寸下也很好看，不过小图标才是你几乎一直在看的，所以我想先以小图标来评判。稍后我会贴更大尺寸和全尺寸。"},{"id":394,"sid":null,"sat":0,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Sabunir","date":"2010-02-25","ts":"2010-02-25T02:28:49Z","url":"https://bitcointalk.org/index.php?topic=64.msg525#msg525","zh":"<blockquote><p>有，原图是 546x531 像素。</p></blockquote><p>太好了。这对参加横幅竞赛的人是个好资源。为什么尺寸不相等？</p><p>我唯一的建议是把硬币上的文字做得更突出。在极小分辨率下，轮廓线往往变得不可用，更好的选择也许是试验对比度。把文字做得比硬币其余部分明显更深，应该能提高可读性。或者，也可以把内圈颜色加深、文字变浅。</p>","zhText":"有，原图是 546x531 像素。\n\n太好了。这对参加横幅竞赛的人是个好资源。为什么尺寸不相等？\n我唯一的建议是把硬币上的文字做得更突出。在极小分辨率下，轮廓线往往变得不可用，更好的选择也许是试验对比度。把文字做得比硬币其余部分明显更深，应该能提高可读性。或者，也可以把内圈颜色加深、文字变浅。"},{"id":196,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Suggester","date":"2010-02-25","ts":"2010-02-25T04:34:59Z","url":"https://bitcointalk.org/index.php?topic=43.msg533#msg533","zh":"<blockquote><p>我的理解是，每个 Bitcoin 客户端都内置了同样的算法（公式），每隔若干区块自动调整难度。</p></blockquote><p>那它怎么又和连接到整个网络的 CPU 数量有关呢？</p><blockquote><p>不止如此，我想 Bitcoin 不会接受以不同难度生成的区块，因而倘若一个改动过的 Bitcoin 客户端试图发出更容易生成的区块，所有正宗的客户端都会拒绝这些假区块。</p></blockquote><p>这需要 Satoshi 来确认，因为每当 PoW 难度上升时，客户端一直在接受以更容易难度生成的区块。</p>","zhText":"我的理解是，每个 Bitcoin 客户端都内置了同样的算法（公式），每隔若干区块自动调整难度。\n\n那它怎么又和连接到整个网络的 CPU 数量有关呢？\n不止如此，我想 Bitcoin 不会接受以不同难度生成的区块，因而倘若一个改动过的 Bitcoin 客户端试图发出更容易生成的区块，所有正宗的客户端都会拒绝这些假区块。\n\n这需要 Satoshi 来确认，因为每当 PoW 难度上升时，客户端一直在接受以更容易难度生成的区块。"},{"id":378,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"sirius","date":"2010-02-25","ts":"2010-02-25T16:32:17Z","url":"https://bitcointalk.org/index.php?topic=63.msg538#msg538","zh":"<p>它是立刻开始增长的。我看看 valgrind 能不能帮上忙。</p>","zhText":"它是立刻开始增长的。我看看 valgrind 能不能帮上忙。"},{"id":379,"sid":80,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-25","ts":"2010-02-25T22:54:17Z","url":"https://bitcointalk.org/index.php?topic=63.msg539#msg539","zh":"<p>好，我做了一个构建目标 bitcoind，它只链接 wxBase、不链接 GTK。SVN 上的 0.2.7 版。</p><p>我把初始化和关闭的代码从 ui.cpp 拆到了 init.cpp，现在 ui.cpp 是纯 UI。ui.h 在 wxUSE_GUI=0 时提供内联桩。从节点到 UI 只有四个接口函数。bitcoind 构建里不链接 ui.o 和 uibase.o。</p><blockquote><p>它是立刻开始增长的。我看看 valgrind 能不能帮上忙。</p></blockquote><p>感觉很像是 wxWidgets 里有什么东西在无休止重试——某个 UI 东西失败或没正确初始化。我们那个\"忽略初始化失败、照样运行\"的 hack，意味着我们正走在无人涉足的地带。我们依赖的事实是：这种模式下我们几乎不用 wx。不过仍有少数东西在用，比如 wxGetTranslation 和 wxMutex。</p><p>另一种调试方法是放进 gdb 里运行，等一切安静、所有线程都该空闲时中断它，看看哪个线程在忙、在忙什么。</p><p>我猜 bitcoind 大概能正常工作，但还是希望你能把那个问题调试出来。</p>","zhText":"好，我做了一个构建目标 bitcoind，它只链接 wxBase、不链接 GTK。SVN 上的 0.2.7 版。\n我把初始化和关闭的代码从 ui.cpp 拆到了 init.cpp，现在 ui.cpp 是纯 UI。ui.h 在 wxUSE_GUI=0 时提供内联桩。从节点到 UI 只有四个接口函数。bitcoind 构建里不链接 ui.o 和 uibase.o。\n它是立刻开始增长的。我看看 valgrind 能不能帮上忙。\n\n感觉很像是 wxWidgets 里有什么东西在无休止重试——某个 UI 东西失败或没正确初始化。我们那个\"忽略初始化失败、照样运行\"的 hack，意味着我们正走在无人涉足的地带。我们依赖的事实是：这种模式下我们几乎不用 wx。不过仍有少数东西在用，比如 wxGetTranslation 和 wxMutex。\n另一种调试方法是放进 gdb 里运行，等一切安静、所有线程都该空闲时中断它，看看哪个线程在忙、在忙什么。\n我猜 bitcoind 大概能正常工作，但还是希望你能把那个问题调试出来。"},{"id":197,"sid":81,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-25","ts":"2010-02-25T23:06:29Z","url":"https://bitcointalk.org/index.php?topic=43.msg540#msg540","zh":"<p>公式基于生成 2016 个区块所花的时间。难度乘以 14/(实际天数)。譬如这次用了 9.4 天，计算就是 14/9.4 = 1.49。之前的难度 2.53 * 1.49 = 3.78，上涨 49%。</p><p>我不知道你说的\"接受更容易的难度\"是什么意思。</p>","zhText":"公式基于生成 2016 个区块所花的时间。难度乘以 14/(实际天数)。譬如这次用了 9.4 天，计算就是 14/9.4 = 1.49。之前的难度 2.53 * 1.49 = 3.78，上涨 49%。\n我不知道你说的\"接受更容易的难度\"是什么意思。"},{"id":380,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"theymos","date":"2010-02-26","ts":"2010-02-26T09:18:32Z","url":"https://bitcointalk.org/index.php?topic=63.msg553#msg553","zh":"<p>我只用 wxBase 编译时遇到了错误。</p><pre><code>g++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -I\"/opt/tdep/include\" -I\"/usr/include\" -DwxUSE_GUI=0 -o obj/nogui/util.o util.cpp\nIn file included from util.cpp:5:\nheaders.h:22:24: error: wx/clipbrd.h: No such file or directory\nIn file included from headers.h:100,\n                 from util.cpp:5:\ndb.h: In member function 'bool CDB::Exists(const K&amp;)':\ndb.h:140: error: 'class Db' has no member named 'exists'\nmake: *** [obj/nogui/util.o] Error 1</code></pre><p>wxBase 不安装 Clipbrd.h。把 wxWidgets-2.9.0/include/wx/clipbrd.h 挪到我的 include 目录，就消掉了那两行 \"no such file\"。</p>","zhText":"我只用 wxBase 编译时遇到了错误。\ng++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -I\"/opt/tdep/include\" -I\"/usr/include\" -DwxUSE_GUI=0 -o obj/nogui/util.o util.cpp\nIn file included from util.cpp:5:\nheaders.h:22:24: error: wx/clipbrd.h: No such file or directory\nIn file included from headers.h:100,\n from util.cpp:5:\ndb.h: In member function 'bool CDB::Exists(const K&)':\ndb.h:140: error: 'class Db' has no member named 'exists'\nmake: *** [obj/nogui/util.o] Error 1wxBase 不安装 Clipbrd.h。把 wxWidgets-2.9.0/include/wx/clipbrd.h 挪到我的 include 目录，就消掉了那两行 \"no such file\"。"},{"id":381,"sid":82,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-26","ts":"2010-02-26T16:29:21Z","url":"https://bitcointalk.org/index.php?topic=63.msg555#msg555","zh":"<p>wx/clipbrd.h 并没有被用到，把它挪进 #if wxUSE_GUI 里面。</p><p>SVN 上的 headers.h 已更新。</p><p>抱歉，我链接的是 wxbase，但我电脑上装的是完整的 wxWidgets。</p><p>db.h:140 的 \"class Db no member named 'exisits'\" 更奇怪。pdb->get、pdb->put、pdb->del 在那之前都编译过了。你的 Berkeley DB 是 4.7.25 版吗？</p><p>Db::exists()\n<a href=\"http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/CXX/frame_main.html\">http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/CXX/frame_main.html</a>\n<a href=\"http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/CXX/dbexists.html\">http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/CXX/dbexists.html</a></p><p>我猜 exists 是最近才加的，在那之前用的是 get。</p>","zhText":"wx/clipbrd.h 并没有被用到，把它挪进 #if wxUSE_GUI 里面。\nSVN 上的 headers.h 已更新。\n抱歉，我链接的是 wxbase，但我电脑上装的是完整的 wxWidgets。\ndb.h:140 的 \"class Db no member named 'exisits'\" 更奇怪。pdb->get、pdb->put、pdb->del 在那之前都编译过了。你的 Berkeley DB 是 4.7.25 版吗？\nDb::exists()\nhttp://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/CXX/frame_main.html\nhttp://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/CXX/dbexists.html\n我猜 exists 是最近才加的，在那之前用的是 get。"},{"id":383,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"theymos","date":"2010-02-26","ts":"2010-02-26T19:37:50Z","url":"https://bitcointalk.org/index.php?topic=63.msg558#msg558","zh":"<p>用 DB-4.7.25 解决了那个问题。</p><p>不过现在我收到这个错误：</p><pre><code>g++ -O0 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -I\"/usr/include\" -I\"/opt/tdep/include\" -o bitcoind -L\"/usr/lib\" -L\"/usr/local/lib\" -L\"/opt/tdep/lib\" obj/nogui/util.o obj/nogui/script.o obj/nogui/db.o obj/nogui/net.o obj/nogui/irc.o obj/nogui/main.o obj/nogui/rpc.o obj/nogui/init.o obj/sha.o -l wx_baseu-2.9 -Wl,-Bstatic -l boost_system -l boost_filesystem -l db_cxx -Wl,-Bdynamic -l crypto -l gthread-2.0\nobj/nogui/init.o: In function `wxArrayString::Item(unsigned int) const':\ninit.cpp:(.text._ZNK13wxArrayString4ItemEj[wxArrayString::Item(unsigned int) const]+0x7): undefined reference to `wxTheAssertHandler'\ninit.cpp:(.text._ZNK13wxArrayString4ItemEj[wxArrayString::Item(unsigned int) const]+0x42): undefined reference to `wxOnAssert(char const*, int, char const*, char const*, wchar_t const*)'\ncollect2: ld returned 1 exit status\nmake: *** [bitcoind] Error 1</code></pre>","zhText":"用 DB-4.7.25 解决了那个问题。\n不过现在我收到这个错误：\ng++ -O0 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -I\"/usr/include\" -I\"/opt/tdep/include\" -o bitcoind -L\"/usr/lib\" -L\"/usr/local/lib\" -L\"/opt/tdep/lib\" obj/nogui/util.o obj/nogui/script.o obj/nogui/db.o obj/nogui/net.o obj/nogui/irc.o obj/nogui/main.o obj/nogui/rpc.o obj/nogui/init.o obj/sha.o -l wx_baseu-2.9 -Wl,-Bstatic -l boost_system -l boost_filesystem -l db_cxx -Wl,-Bdynamic -l crypto -l gthread-2.0\nobj/nogui/init.o: In function `wxArrayString::Item(unsigned int) const':\ninit.cpp:(.text._ZNK13wxArrayString4ItemEj[wxArrayString::Item(unsigned int) const]+0x7): undefined reference to `wxTheAssertHandler'\ninit.cpp:(.text._ZNK13wxArrayString4ItemEj[wxArrayString::Item(unsigned int) const]+0x42): undefined reference to `wxOnAssert(char const*, int, char const*, char const*, wchar_t const*)'\ncollect2: ld returned 1 exit status\nmake: *** [bitcoind] Error 1"},{"id":395,"sid":83,"sat":1,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-26","ts":"2010-02-26T23:17:19Z","url":"https://bitcointalk.org/index.php?topic=64.msg561#msg561","zh":"<p>好建议。我把 B 调亮了一点，背景调深了一点。非常轻微。前景色现在与旧版的 BC 完全同色。</p><p>如果 16x16 里看不清 B，问题不大。那个尺寸下，你只需要看出它是一枚硬币。上面压印的是什么并不太重要，重要的是有些细节——如果是一个空白光滑的圆，看起来就不像硬币了。</p><p>它比高略宽，是因为底下的深色透视向右延伸得比向下多。</p><p>我完成了 32x31 和 48x47 版本，贴在首帖里。我很喜欢 48 那个。</p><p>大家觉得带双横线的 B 符号怎么样？横线穿出外面那种。我们能接受它作为我们的标志吗？</p>","zhText":"好建议。我把 B 调亮了一点，背景调深了一点。非常轻微。前景色现在与旧版的 BC 完全同色。\n如果 16x16 里看不清 B，问题不大。那个尺寸下，你只需要看出它是一枚硬币。上面压印的是什么并不太重要，重要的是有些细节——如果是一个空白光滑的圆，看起来就不像硬币了。\n它比高略宽，是因为底下的深色透视向右延伸得比向下多。\n我完成了 32x31 和 48x47 版本，贴在首帖里。我很喜欢 48 那个。\n大家觉得带双横线的 B 符号怎么样？横线穿出外面那种。我们能接受它作为我们的标志吗？"},{"id":384,"sid":84,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-26","ts":"2010-02-26T23:48:44Z","url":"https://bitcointalk.org/index.php?topic=63.msg562#msg562","zh":"<p>你用的是 wxWidgets 2.9.0 吗？我建议除了 2.9.0 别用其他版本。</p><p>看起来是 wx 头文件（arrstr.h）里引用了 wxBase 之外的某个东西。</p><p>从 bitcoin 的 makefile 里去掉 -D__WXDEBUG__ 大概就能解决。</p><p>如果那样还不行、而你只求能跑起来，可以编辑 wxWidgets 的 include/wx/arrstr.h 第 167 行，把 wxASSERT_MSG 注释掉。</p>","zhText":"你用的是 wxWidgets 2.9.0 吗？我建议除了 2.9.0 别用其他版本。\n看起来是 wx 头文件（arrstr.h）里引用了 wxBase 之外的某个东西。\n从 bitcoin 的 makefile 里去掉 -D__WXDEBUG__ 大概就能解决。\n如果那样还不行、而你只求能跑起来，可以编辑 wxWidgets 的 include/wx/arrstr.h 第 167 行，把 wxASSERT_MSG 注释掉。"},{"id":397,"sid":null,"sat":0,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Cdecker","date":"2010-02-27","ts":"2010-02-27T03:24:07Z","url":"https://bitcointalk.org/index.php?topic=64.msg565#msg565","zh":"<p>出一个 SVG 版怎么样？那样就能按需自动生成更小和更大的版本，也方便存进版本控制系统。</p>","zhText":"出一个 SVG 版怎么样？那样就能按需自动生成更小和更大的版本，也方便存进版本控制系统。"},{"id":398,"sid":85,"sat":1,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-27","ts":"2010-02-27T04:28:29Z","url":"https://bitcointalk.org/index.php?topic=64.msg566#msg566","zh":"<blockquote><p>出一个 SVG 版怎么样？那样就能按需自动生成更小和更大的版本。</p></blockquote><p>我不会做 SVG，不过原图我做得非常大，横跨 500 多像素，所以可以缩小。完工后我会交出原图。</p><p>每个图标尺寸我都得单独手工调整，让竖线正好落在像素上，否则就会难看地模糊、彼此不一致。这就是做图标难的所在。原图适合缩放到 48 到 500 之间的自定义尺寸，再小就不行了。</p>","zhText":"出一个 SVG 版怎么样？那样就能按需自动生成更小和更大的版本。\n\n我不会做 SVG，不过原图我做得非常大，横跨 500 多像素，所以可以缩小。完工后我会交出原图。\n每个图标尺寸我都得单独手工调整，让竖线正好落在像素上，否则就会难看地模糊、彼此不一致。这就是做图标难的所在。原图适合缩放到 48 到 500 之间的自定义尺寸，再小就不行了。"},{"id":420,"sid":null,"sat":0,"tid":39,"tt":"wxWidgets 2.9.0","src":"Bitcointalk","author":"Cdecker","date":"2010-02-27","ts":"2010-02-27T17:09:59Z","url":"https://bitcointalk.org/index.php?topic=65.msg569#msg569","zh":"<p>我正在尝试让 BitCoin 在 openSuse Build Service 上编译通过——那样我们就能为各种发行版制作大量的预编译包——但问题接连不断。其中最主要的是 wxWidgets 2.9.0 的依赖，它极难提供，也是论坛上许多问题的根源。为什么非要 2.9.0？翻了 2.8.10 的源码，看起来那个版本也能做 unicode。</p><p>此致，\ncdecker</p>","zhText":"我正在尝试让 BitCoin 在 openSuse Build Service 上编译通过——那样我们就能为各种发行版制作大量的预编译包——但问题接连不断。其中最主要的是 wxWidgets 2.9.0 的依赖，它极难提供，也是论坛上许多问题的根源。为什么非要 2.9.0？翻了 2.8.10 的源码，看起来那个版本也能做 unicode。\n此致，\ncdecker"},{"id":421,"sid":86,"sat":1,"tid":39,"tt":"wxWidgets 2.9.0","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-02-27","ts":"2010-02-27T21:22:53Z","url":"https://bitcointalk.org/index.php?topic=65.msg571#msg571","zh":"<blockquote><p>翻了 2.8.10 的源码，看起来那个版本也能做 <i>unicode</i>。</p></blockquote><p>在 Windows 世界里，\"unicode\" 指的是 UTF-16（wchar）。</p><p>2.8 有两种构建变体：ANSI 和 UTF-16（unicode）。Debian 包里提供的 \"unicode\" 版就是 UTF-16 版。我认为论坛里描述的构建问题，其根源正是 2.8 及其被简单标注为 \"unicode\" 的 UTF-16 构建。我们此前用 2.8 ANSI，就是为了期待直达 UTF-8、避开 UTF-16 的地狱。我们无法用 UTF-16 编译。</p><p>2.9 只有一个版本，UTF-8。在 Windows 上我们把代码页设为 UTF-8，于是所有平台上我们的代码都是 UTF-8，wxWidgets 与我们的接口也是 UTF-8。在 Linux 上我猜代码页本来就是 UTF-8。统一到 2.9 就避开了 2.8 的多构建混乱，而且我们需要 2.9 来做 UTF-8 国际化。</p><p>务必读一下 build-unix.txt，用给出的 configure 参数来配置 wxWidgets。</p><p>好奇问一句：提供 wxWidgets 2.9.0 为什么会\"极难\"？如果你指的是对用户而言，这正是我们静态链接它的原因。</p><p>我们需要这么多大型依赖，确实遗憾，但缺一不可。至少在 Debian/Ubuntu 上，除 wxWidgets 外全都有包。他们最终会提供 2.9 包的。</p>","zhText":"翻了 2.8.10 的源码，看起来那个版本也能做 unicode。\n\n在 Windows 世界里，\"unicode\" 指的是 UTF-16（wchar）。\n2.8 有两种构建变体：ANSI 和 UTF-16（unicode）。Debian 包里提供的 \"unicode\" 版就是 UTF-16 版。我认为论坛里描述的构建问题，其根源正是 2.8 及其被简单标注为 \"unicode\" 的 UTF-16 构建。我们此前用 2.8 ANSI，就是为了期待直达 UTF-8、避开 UTF-16 的地狱。我们无法用 UTF-16 编译。\n2.9 只有一个版本，UTF-8。在 Windows 上我们把代码页设为 UTF-8，于是所有平台上我们的代码都是 UTF-8，wxWidgets 与我们的接口也是 UTF-8。在 Linux 上我猜代码页本来就是 UTF-8。统一到 2.9 就避开了 2.8 的多构建混乱，而且我们需要 2.9 来做 UTF-8 国际化。\n务必读一下 build-unix.txt，用给出的 configure 参数来配置 wxWidgets。\n好奇问一句：提供 wxWidgets 2.9.0 为什么会\"极难\"？如果你指的是对用户而言，这正是我们静态链接它的原因。\n我们需要这么多大型依赖，确实遗憾，但缺一不可。至少在 Debian/Ubuntu 上，除 wxWidgets 外全都有包。他们最终会提供 2.9 包的。"},{"id":399,"sid":null,"sat":0,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"giik","date":"2010-03-01","ts":"2010-03-01T07:09:00Z","url":"https://bitcointalk.org/index.php?topic=64.msg584#msg584","zh":"<p>用 SVG 或别的矢量格式，就不会有你说的缩放问题。也许我会在 Illustrator 里试一试。</p>","zhText":"用 SVG 或别的矢量格式，就不会有你说的缩放问题。也许我会在 Illustrator 里试一试。"},{"id":400,"sid":87,"sat":1,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-02","ts":"2010-03-02T02:33:05Z","url":"https://bitcointalk.org/index.php?topic=64.msg588#msg588","zh":"<p>我们已经有标准图标尺寸，全尺寸图也能很好地缩放到其他任何尺寸。</p><p>我把全尺寸图加到首帖里了。</p>","zhText":"我们已经有标准图标尺寸，全尺寸图也能很好地缩放到其他任何尺寸。\n我把全尺寸图加到首帖里了。"},{"id":387,"sid":null,"sat":0,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"The Madhatter","date":"2010-03-02","ts":"2010-03-02T15:46:42Z","url":"https://bitcointalk.org/index.php?topic=63.msg603#msg603","zh":"<p>那个 wchar 问题就是我在 OSX 构建上卡住的地方。</p><p>很高兴看到它被熨平了。我继续 hack。</p>","zhText":"那个 wchar 问题就是我在 OSX 构建上卡住的地方。\n很高兴看到它被熨平了。我继续 hack。"},{"id":430,"sid":null,"sat":0,"tid":40,"tt":"Money Transfer Regulations","src":"Bitcointalk","author":"I-am-not-anonymous","date":"2010-03-03","ts":"2010-03-03T03:48:33Z","url":"https://bitcointalk.org/index.php?topic=69.msg612#msg612","zh":"<blockquote><p>记得 NLS</p><p>法律有两种……</p><p>一种是你能读到的那种，另一种是政府选择对你适用的那种……</p><p>你的律师朋友们也许是对的，但 joe stack 当初也是这么想的，结果他被起诉了……</p></blockquote><p>真让人鼓舞……你刚刚告诉这位可怜的兄弟：就算他每件事都做对，他还是可能进监狱——你让他的感觉跟少数族裔一样了！</p><p>不过在多数情况下，如果律师告诉你不会进监狱，你多半真不会。Newlibertstandard 用的是 paypal，后者本来就执行 know-your-customer，而且他操作的金额低于 1 万美元——那是反洗钱和税务稽查盯梢的门槛。这意味着他不太可能在做任何错事，也不太可能引来执法部门的注意。</p><p>但是——</p><p>展望比特币的未来——大规模运营、又不执行 know-your-customer 的货币兑换服务确实违法，因此只能在 onion 世界里运营，把比特币兑换成 paypal 以外的货币服务（也许像 pecunix 那样的离岸服务）。</p><p>另一个想法是，将来的某位加密创业者开一家夫妻店，名叫\"老爷爷乔的塞满现金的信封\"，只收比特币。哈哈。</p>","zhText":"记得 NLS\n法律有两种……\n一种是你能读到的那种，另一种是政府选择对你适用的那种……\n你的律师朋友们也许是对的，但 joe stack 当初也是这么想的，结果他被起诉了……\n\n真让人鼓舞……你刚刚告诉这位可怜的兄弟：就算他每件事都做对，他还是可能进监狱——你让他的感觉跟少数族裔一样了！\n不过在多数情况下，如果律师告诉你不会进监狱，你多半真不会。Newlibertstandard 用的是 paypal，后者本来就执行 know-your-customer，而且他操作的金额低于 1 万美元——那是反洗钱和税务稽查盯梢的门槛。这意味着他不太可能在做任何错事，也不太可能引来执法部门的注意。\n但是——\n展望比特币的未来——大规模运营、又不执行 know-your-customer 的货币兑换服务确实违法，因此只能在 onion 世界里运营，把比特币兑换成 paypal 以外的货币服务（也许像 pecunix 那样的离岸服务）。\n另一个想法是，将来的某位加密创业者开一家夫妻店，名叫\"老爷爷乔的塞满现金的信封\"，只收比特币。哈哈。"},{"id":431,"sid":88,"sat":1,"tid":40,"tt":"Money Transfer Regulations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-03","ts":"2010-03-03T04:28:56Z","url":"https://bitcointalk.org/index.php?topic=69.msg614#msg614","zh":"<p>等规模够了，也许可以做一个不做转账的兑换网站：只撮合买家和卖家直接互相兑换，类似 e-bay 的运作方式。</p><p>为了更安全，兑换站可以充当比特币一侧的托管。卖家把比特币付款放进托管，买家把传统付款直接发给卖家。兑换服务不经手任何现实世界的货币。</p><p>这会比 e-bay 更进一步。即便付款落空后寄出的货物无法追回，e-bay 也照样运转良好。</p>","zhText":"等规模够了，也许可以做一个不做转账的兑换网站：只撮合买家和卖家直接互相兑换，类似 e-bay 的运作方式。\n为了更安全，兑换站可以充当比特币一侧的托管。卖家把比特币付款放进托管，买家把传统付款直接发给卖家。兑换服务不经手任何现实世界的货币。\n这会比 e-bay 更进一步。即便付款落空后寄出的货物无法追回，e-bay 也照样运转良好。"},{"id":388,"sid":89,"sat":1,"tid":37,"tt":"Command Line and JSON-RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-05","ts":"2010-03-05T01:46:25Z","url":"https://bitcointalk.org/index.php?topic=63.msg633#msg633","zh":"<blockquote><p>这很奇怪……在我的 64 位 Linux 服务器上以守护进程方式启动 Bitcoin 时，它吃光了剩余的全部 250MB 内存、700MB 交换空间，最终崩溃。在我 32 位的 Ubuntu 桌面上却运行正常，内存占用稳定在 15MB。服务器上跑的是 64 位构建的 Bitcoin。也许构建本身出了什么问题。</p></blockquote><p>sirius-m 调试了这个问题，是 64 位相关的。</p><p>修复已提交 SVN，文件 util.cpp。</p>","zhText":"这很奇怪……在我的 64 位 Linux 服务器上以守护进程方式启动 Bitcoin 时，它吃光了剩余的全部 250MB 内存、700MB 交换空间，最终崩溃。在我 32 位的 Ubuntu 桌面上却运行正常，内存占用稳定在 15MB。服务器上跑的是 64 位构建的 Bitcoin。也许构建本身出了什么问题。\n\nsirius-m 调试了这个问题，是 64 位相关的。\n修复已提交 SVN，文件 util.cpp。"},{"id":432,"sid":null,"sat":0,"tid":41,"tt":"bitcoin auto-renice-ing","src":"Bitcointalk","author":"fergalish","date":"2010-03-08","ts":"2010-03-08T09:29:56Z","url":"https://bitcointalk.org/index.php?topic=72.msg673#msg673","zh":"<p>你好，我以 nice 20 级运行 bitcoin，以免干扰其他任务。然而时不时地，它似乎会自动把自己调整到 nice 2，甚至 0。这是设计使然吗？坦率说，对一个 Linux 应用而言这种事应该算违法的……至少可以说是有点怪。</p>","zhText":"你好，我以 nice 20 级运行 bitcoin，以免干扰其他任务。然而时不时地，它似乎会自动把自己调整到 nice 2，甚至 0。这是设计使然吗？坦率说，对一个 Linux 应用而言这种事应该算违法的……至少可以说是有点怪。"},{"id":433,"sid":90,"sat":1,"tid":41,"tt":"bitcoin auto-renice-ing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-15","ts":"2010-03-15T18:44:12Z","url":"https://bitcointalk.org/index.php?topic=72.msg717#msg717","zh":"<p>它为每个线程设置不同的优先级。生成线程以 PRIO_MIN 运行。其他线程几乎不占 CPU，以普通优先级运行。</p><pre><code>#define THREAD_PRIORITY_LOWEST          PRIO_MIN\n#define THREAD_PRIORITY_BELOW_NORMAL    2\n#define THREAD_PRIORITY_NORMAL          0</code></pre><p>由 Windows 优先级换算来的那些值，大概出自这样一张表：</p><p>\"下表展示了 nice 值与 Win32 优先级之间的映射。Win32 优先级问题的更多信息参见 SetThreadPriority() 的 Win32 文档。</p><p>nice 值    Win32 优先级\n-20 到 -16    THREAD_PRIORITY_HIGHEST\n-15 到 -6    THREAD_PRIORITY_ABOVE_NORMAL\n-5 到 +4    THREAD_PRIORITY_NORMAL\n+5 到 +14    THREAD_PRIORITY_BELOW_NORMAL\n+15 到 +19    THREAD_PRIORITY_LOWEST\"</p><p>如果你有更好的取值，欢迎建议。</p><p>另外，网上有些建议说 Linux 上应该用 PRIO_PROCESS，因为线程即进程。如果这说法不成立，也许这就解释了为什么整个应用的优先级被意外设置。</p><p>// threads are processes on linux, so PRIO_PROCESS affects just the one thread\n    setpriority(PRIO_PROCESS, getpid(), nPriority);</p>","zhText":"它为每个线程设置不同的优先级。生成线程以 PRIO_MIN 运行。其他线程几乎不占 CPU，以普通优先级运行。\n#define THREAD_PRIORITY_LOWEST PRIO_MIN\n#define THREAD_PRIORITY_BELOW_NORMAL 2\n#define THREAD_PRIORITY_NORMAL 0由 Windows 优先级换算来的那些值，大概出自这样一张表：\n\"下表展示了 nice 值与 Win32 优先级之间的映射。Win32 优先级问题的更多信息参见 SetThreadPriority() 的 Win32 文档。\nnice 值 Win32 优先级\n-20 到 -16 THREAD_PRIORITY_HIGHEST\n-15 到 -6 THREAD_PRIORITY_ABOVE_NORMAL\n-5 到 +4 THREAD_PRIORITY_NORMAL\n+5 到 +14 THREAD_PRIORITY_BELOW_NORMAL\n+15 到 +19 THREAD_PRIORITY_LOWEST\"\n如果你有更好的取值，欢迎建议。\n另外，网上有些建议说 Linux 上应该用 PRIO_PROCESS，因为线程即进程。如果这说法不成立，也许这就解释了为什么整个应用的优先级被意外设置。\n// threads are processes on linux, so PRIO_PROCESS affects just the one thread\n setpriority(PRIO_PROCESS, getpid(), nPriority);"},{"id":439,"sid":91,"sat":1,"tid":42,"tt":"Idea for file hosting and proxy services","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-15","ts":"2010-03-15T19:16:56Z","url":"https://bitcointalk.org/index.php?topic=83.msg719#msg719","zh":"<p>想把图片上传嵌入论坛帖子时，有 imageshack 之类的服务，但因为是免费的，它们限制查看次数。带宽成本微乎其微，但人家也不能白送，总得有点甜头。要是能付点钱买带宽、避开限制就好了，可对这么小的事，传统付款实在麻烦。</p><p>想上传文件供别人下载就更糟。有 rapidshare 之类的服务，但它们要求下载者多走额外步骤、忍受延迟，逼人看广告或升级付费订阅，还限制 10 次左右的下载。</p><p>如果我们写一套收费的免费 PHP 图片与文件托管服务代码，用比特币计费，那就好了。有点富余带宽额度的人都可以把它扔到自己的 web 服务器上运行。用户终于可以付点小钱覆盖带宽成本、避开限制和麻烦。理想情况下，它应该是 MIT 许可或公共领域。</p><p>这类服务对匿名用户会特别有用——他们付款本来就不容易。</p>","zhText":"想把图片上传嵌入论坛帖子时，有 imageshack 之类的服务，但因为是免费的，它们限制查看次数。带宽成本微乎其微，但人家也不能白送，总得有点甜头。要是能付点钱买带宽、避开限制就好了，可对这么小的事，传统付款实在麻烦。\n想上传文件供别人下载就更糟。有 rapidshare 之类的服务，但它们要求下载者多走额外步骤、忍受延迟，逼人看广告或升级付费订阅，还限制 10 次左右的下载。\n如果我们写一套收费的免费 PHP 图片与文件托管服务代码，用比特币计费，那就好了。有点富余带宽额度的人都可以把它扔到自己的 web 服务器上运行。用户终于可以付点小钱覆盖带宽成本、避开限制和麻烦。理想情况下，它应该是 MIT 许可或公共领域。\n这类服务对匿名用户会特别有用——他们付款本来就不容易。"},{"id":448,"sid":null,"sat":0,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"The Madhatter","date":"2010-03-16","ts":"2010-03-16T01:57:24Z","url":"https://bitcointalk.org/index.php?topic=84.msg725#msg725","zh":"<p>我自己投 I2P 方案一票。它很好用。</p>","zhText":"我自己投 I2P 方案一票。它很好用。"},{"id":440,"sid":null,"sat":0,"tid":42,"tt":"Idea for file hosting and proxy services","src":"Bitcointalk","author":"BitcoinFX","date":"2010-03-16","ts":"2010-03-16T10:17:55Z","url":"https://bitcointalk.org/index.php?topic=83.msg728#msg728","zh":"<p>好主意。</p><p>我最终会架一个\"单跳\"、SSL、http、登录保护的代理服务（类似 1st Psiphon 项目），并接受比特币付款。</p><p>我在英国，所以拿它看 BBC iplayer 之类会很方便。我会给比特币用户以及来自\"受限\"国家的用户提供优先服务。</p><p>文件托管服务的富余带宽我多半没有，也许吧。</p>","zhText":"好主意。\n我最终会架一个\"单跳\"、SSL、http、登录保护的代理服务（类似 1st Psiphon 项目），并接受比特币付款。\n我在英国，所以拿它看 BBC iplayer 之类会很方便。我会给比特币用户以及来自\"受限\"国家的用户提供优先服务。\n文件托管服务的富余带宽我多半没有，也许吧。"},{"id":449,"sid":92,"sat":1,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-16","ts":"2010-03-16T19:48:47Z","url":"https://bitcointalk.org/index.php?topic=84.msg729#msg729","zh":"<p>感谢 soultcer 与 Freenode 的工作人员沟通。很高兴知道当前规模没问题，而且他们现在知道我们是谁了。他们对 TOR 这样的项目都很支持，所以希望他们对我们大概也会友好。我们不想赖着不走。等我们规模太大时，同样地，我们也大到不再需要 IRC，到时我们会离开。</p><p>我们需要 IRC 只是因为没有人有静态 IP。早期有一些稳定的支持者，但他们的 IP 都是地址池分配的，每隔几天就变。IRC 本来就只是临时方案。Bitcoin 内建的 addr 系统才是主要方案。</p><p>Bitcoin 可以从任何 bitcoin 节点获取 IP 列表。在这个意义上，每个节点都是一台目录服务器。</p><p>当静态 IP 节点多到\"当前版本寿终正寝之前至少还有一个仍在运行\"有较大把握时，我们就可以预编一份种子列表。</p><p>你觉得种子列表该怎么编？从已经稳定了一段时间的当前连接 IP 里挑选，可以吗？</p><p>顺便说一句，如果我们想靠部署独立的目录服务器软件来补充，我建议用 IRC 行吗？IRC 是个很好的目录服务器（我听说它还有别的用途），有成熟的 IRC 服务器实现，谁都能运行。Bitcoin 的 IRC 客户端实现也已经过彻底测试。</p>","zhText":"感谢 soultcer 与 Freenode 的工作人员沟通。很高兴知道当前规模没问题，而且他们现在知道我们是谁了。他们对 TOR 这样的项目都很支持，所以希望他们对我们大概也会友好。我们不想赖着不走。等我们规模太大时，同样地，我们也大到不再需要 IRC，到时我们会离开。\n我们需要 IRC 只是因为没有人有静态 IP。早期有一些稳定的支持者，但他们的 IP 都是地址池分配的，每隔几天就变。IRC 本来就只是临时方案。Bitcoin 内建的 addr 系统才是主要方案。\nBitcoin 可以从任何 bitcoin 节点获取 IP 列表。在这个意义上，每个节点都是一台目录服务器。\n当静态 IP 节点多到\"当前版本寿终正寝之前至少还有一个仍在运行\"有较大把握时，我们就可以预编一份种子列表。\n你觉得种子列表该怎么编？从已经稳定了一段时间的当前连接 IP 里挑选，可以吗？\n顺便说一句，如果我们想靠部署独立的目录服务器软件来补充，我建议用 IRC 行吗？IRC 是个很好的目录服务器（我听说它还有别的用途），有成熟的 IRC 服务器实现，谁都能运行。Bitcoin 的 IRC 客户端实现也已经过彻底测试。"},{"id":441,"sid":93,"sat":1,"tid":42,"tt":"Idea for file hosting and proxy services","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-16","ts":"2010-03-16T20:17:34Z","url":"https://bitcointalk.org/index.php?topic=83.msg731#msg731","zh":"<p>好主意。这类服务的生意很兴旺，但我一直觉得标准支付方式与注重隐私的顾客格格不入。</p><p>你愿意把软件免费放出来，让任何人都能轻松架一套吗？出于竞争考虑你多半想留着自己用，但如果任何人只要把软件装上服务器就能给自己国家开放代理，使用量也许能大一个数量级。</p><p>我在想，还有没有其他类型的 web 应用服务器，我们只需要往现成系统上附加一个支付机制？</p>","zhText":"好主意。这类服务的生意很兴旺，但我一直觉得标准支付方式与注重隐私的顾客格格不入。\n你愿意把软件免费放出来，让任何人都能轻松架一套吗？出于竞争考虑你多半想留着自己用，但如果任何人只要把软件装上服务器就能给自己国家开放代理，使用量也许能大一个数量级。\n我在想，还有没有其他类型的 web 应用服务器，我们只需要往现成系统上附加一个支付机制？"},{"id":443,"sid":null,"sat":0,"tid":42,"tt":"Idea for file hosting and proxy services","src":"Bitcointalk","author":"BitcoinFX","date":"2010-03-18","ts":"2010-03-18T14:36:50Z","url":"https://bitcointalk.org/index.php?topic=83.msg752#msg752","zh":"<p>是的。任何做出来的代理实现都会开源，自动比特币付款自然再好不过。</p><p>我会贴出 Psiphon 的信息和链接，因为这个项目刚从 v1 走到 v2，两者的实现差别非常大。</p><p>Psiphon 是一个免费的\"规避\"工具，也应该保持免费。不过，我运行着一个私人的、由我个人更新和维护的 1.6 版，并确实接受部分用户的\"象征性\"捐赠。</p><p>\"Psiphon 是一个 web 代理，旨在帮助互联网用户安全地绕过用于审查互联网的内容过滤系统。Psiphon 由多伦多大学的 Citizen Lab 开发。</p><p>许可：GNU General Public License\n源代码：<a href=\"http://psiphon.ca/download/psiphon-src-1.6.tar.gz\">http://psiphon.ca/download/psiphon-src-1.6.tar.gz</a></p><p><a href=\"http://wikipedia.org/wiki/Psiphon\">http://wikipedia.org/wiki/Psiphon</a></p><p><a href=\"http://psiphon.ca/\">http://psiphon.ca/</a></p><p><a href=\"https://launchpad.net/psiphon\">https://launchpad.net/psiphon</a></p><p>Psiphon 是一个用户友好、易于管理的基于 web 的代理应用。它让互联网访问不受限制地区的用户，能够为受限地区的亲友和同事提供被拒内容的访问。</p><p>如果你有意帮我们把 Psiphon 推向前进，请联系项目负责人。</p><p>注意：Psiphon 1.x 与 2.x 系列本质上是架构不同的两种产品。Psiphon 1.x 是轻量级 web 代理，设计为运行在家庭 PC（MS Windows）上，没有中央管理组件。使用 Psiphon 1.x 时，用户请朋友运行一个代理，然后经由朋友的互联网连接访问被封锁的网站。Psiphon 1.x 源代码在此：<a href=\"https://code.launchpad.net/~psiphon-inc/psiphon/psiphon-1.6\">https://code.launchpad.net/~psiphon-inc/psiphon/psiphon-1.6</a>。</p><p>新项目是 Psiphon 2.x，一个由 Psiphon 公司部署的集中管理 web 代理系统，提供审查规避服务。\"</p><p>对于设计和构建我们自己的独立 bitcoin 风格实现，这里的源码很有参考价值。Satoshi，趁 1.6.tar.gz 还没变得太\"历史\"，建议你抓一份作参考。另外，现在要在 Linux 上编译 1.6 版也没那么容易了。</p><p>1.6 的 Win32 版现已从原项目网站移除。我现有的代理服务其实就跑在一台加装了额外安全措施的 Windows 机器上。我手里有 msi 和文档，如果有人在别处找不到、或想要参考，可以找我。我从以下来源保持它的更新与安全；</p><p>SSL - <a href=\"http://www.slproweb.com/products/Win32OpenSSL.html\">http://www.slproweb.com/products/Win32OpenSSL.html</a></p><p>Visual C++ 2008 Redistributables，用于 msvcpXX.dll 和 msvcrXX.dll</p><p><a href=\"http://www.sqlite.org/download.html\">http://www.sqlite.org/download.html</a></p><p>Precompiled Binaries For Windows，用于 sqlite3.dll</p><p>不过 Java 和一些 flash 支持始终是个麻烦！</p><p>我很乐意开发并分享一个\"比特币\"代理软件的贡献，但我的时间有限，开发经验也有限。Satoshi，也许你该自己联系 psiphon 的开发者，做一个独立的 v1.6 风格实现？</p><p>我了解到 Tor 项目也在为其服务器运营者寻找一种支付/激励系统。</p><p>能把帖子标题改成 \"Re: Idea for file hosting and proxy services\" 吗？谢谢。</p><p>此致，</p><p>BitcoinFX</p>","zhText":"是的。任何做出来的代理实现都会开源，自动比特币付款自然再好不过。\n我会贴出 Psiphon 的信息和链接，因为这个项目刚从 v1 走到 v2，两者的实现差别非常大。\nPsiphon 是一个免费的\"规避\"工具，也应该保持免费。不过，我运行着一个私人的、由我个人更新和维护的 1.6 版，并确实接受部分用户的\"象征性\"捐赠。\n\"Psiphon 是一个 web 代理，旨在帮助互联网用户安全地绕过用于审查互联网的内容过滤系统。Psiphon 由多伦多大学的 Citizen Lab 开发。\n许可：GNU General Public License\n源代码：http://psiphon.ca/download/psiphon-src-1.6.tar.gz\nhttp://wikipedia.org/wiki/Psiphon\nhttp://psiphon.ca/\nhttps://launchpad.net/psiphon\nPsiphon 是一个用户友好、易于管理的基于 web 的代理应用。它让互联网访问不受限制地区的用户，能够为受限地区的亲友和同事提供被拒内容的访问。\n如果你有意帮我们把 Psiphon 推向前进，请联系项目负责人。\n注意：Psiphon 1.x 与 2.x 系列本质上是架构不同的两种产品。Psiphon 1.x 是轻量级 web 代理，设计为运行在家庭 PC（MS Windows）上，没有中央管理组件。使用 Psiphon 1.x 时，用户请朋友运行一个代理，然后经由朋友的互联网连接访问被封锁的网站。Psiphon 1.x 源代码在此：https://code.launchpad.net/~psiphon-inc/psiphon/psiphon-1.6。\n新项目是 Psiphon 2.x，一个由 Psiphon 公司部署的集中管理 web 代理系统，提供审查规避服务。\"\n对于设计和构建我们自己的独立 bitcoin 风格实现，这里的源码很有参考价值。Satoshi，趁 1.6.tar.gz 还没变得太\"历史\"，建议你抓一份作参考。另外，现在要在 Linux 上编译 1.6 版也没那么容易了。\n1.6 的 Win32 版现已从原项目网站移除。我现有的代理服务其实就跑在一台加装了额外安全措施的 Windows 机器上。我手里有 msi 和文档，如果有人在别处找不到、或想要参考，可以找我。我从以下来源保持它的更新与安全；\nSSL - http://www.slproweb.com/products/Win32OpenSSL.html\nVisual C++ 2008 Redistributables，用于 msvcpXX.dll 和 msvcrXX.dll\nhttp://www.sqlite.org/download.html\nPrecompiled Binaries For Windows，用于 sqlite3.dll\n不过 Java 和一些 flash 支持始终是个麻烦！\n我很乐意开发并分享一个\"比特币\"代理软件的贡献，但我的时间有限，开发经验也有限。Satoshi，也许你该自己联系 psiphon 的开发者，做一个独立的 v1.6 风格实现？\n我了解到 Tor 项目也在为其服务器运营者寻找一种支付/激励系统。\n能把帖子标题改成 \"Re: Idea for file hosting and proxy services\" 吗？谢谢。\n此致，\nBitcoinFX"},{"id":491,"sid":null,"sat":0,"tid":45,"tt":"who is bitcoin.com","src":"Bitcointalk","author":"sirius","date":"2010-03-22","ts":"2010-03-22T20:18:15Z","url":"https://bitcointalk.org/index.php?topic=88.msg801#msg801","zh":"<p>与我们的项目无关。显然那是一家叫 Bitcoin Ltd 的公司。至少从去年夏天起，那个页面就一直写着\"alpha 测试即将开始\"。</p>","zhText":"与我们的项目无关。显然那是一家叫 Bitcoin Ltd 的公司。至少从去年夏天起，那个页面就一直写着\"alpha 测试即将开始\"。"},{"id":488,"sid":null,"sat":0,"tid":44,"tt":"Exchange Methods","src":"Bitcointalk","author":"The Madhatter","date":"2010-03-23","ts":"2010-03-23T03:03:49Z","url":"https://bitcointalk.org/index.php?topic=87.msg805#msg805","zh":"<p>给现金的\"缺点清单\"再加一条：</p><p>- 纸币里可能嵌入 RFID。你本地邮局的机器可以读取它们，对目的地地址亮出红旗。</p>","zhText":"给现金的\"缺点清单\"再加一条：\n- 纸币里可能嵌入 RFID。你本地邮局的机器可以读取它们，对目的地地址亮出红旗。"},{"id":492,"sid":94,"sat":1,"tid":45,"tt":"who is bitcoin.com","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-23","ts":"2010-03-23T15:22:41Z","url":"https://bitcointalk.org/index.php?topic=88.msg806#msg806","zh":"<p>没有关系的。我起步的时候那里什么都没有。</p><p>.com 域名注册的价格低于它应有的水平，所以你能想到的任何好名字，总是早被域名投机客抢注了。幸运的是，开源项目用 .org 是惯例。</p>","zhText":"没有关系的。我起步的时候那里什么都没有。\n.com 域名注册的价格低于它应有的水平，所以你能想到的任何好名字，总是早被域名投机客抢注了。幸运的是，开源项目用 .org 是惯例。"},{"id":489,"sid":95,"sat":1,"tid":44,"tt":"Exchange Methods","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-23","ts":"2010-03-23T17:35:34Z","url":"https://bitcointalk.org/index.php?topic=87.msg807#msg807","zh":"<p>LR 和 Pecunix 有许多成熟的、通过各种支付方式兑换纸币的交易所，也有不少商家接受它们付款，所以 Bitcoin 与 LR/Pecunix 之间的兑换通道会给我们通往这一切的第 2 跳。经由它们变现的可能性，有助于支撑比特币的价值。</p><p>Bitcoin 有一些独特的互补属性。LR/Pecunix 匿名花出去容易，匿名买到手难，小额购买又不值得费那个劲。而 Bitcoin 恰恰是匿名地小额获取很容易。用比特币购买 LR/Pecunix，而不是走传统支付方式，会方便得多。</p><p>大多数要换成 LR 去买东西的顾客，多半会先问卖家收不收 Bitcoin，这会鼓励他们开始接受。</p>","zhText":"LR 和 Pecunix 有许多成熟的、通过各种支付方式兑换纸币的交易所，也有不少商家接受它们付款，所以 Bitcoin 与 LR/Pecunix 之间的兑换通道会给我们通往这一切的第 2 跳。经由它们变现的可能性，有助于支撑比特币的价值。\nBitcoin 有一些独特的互补属性。LR/Pecunix 匿名花出去容易，匿名买到手难，小额购买又不值得费那个劲。而 Bitcoin 恰恰是匿名地小额获取很容易。用比特币购买 LR/Pecunix，而不是走传统支付方式，会方便得多。\n大多数要换成 LR 去买东西的顾客，多半会先问卖家收不收 Bitcoin，这会鼓励他们开始接受。"},{"id":444,"sid":96,"sat":1,"tid":42,"tt":"Idea for file hosting and proxy services","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-24","ts":"2010-03-24T18:01:57Z","url":"https://bitcointalk.org/index.php?topic=83.msg809#msg809","zh":"<p>标题已改。</p><p>有实际运行代理服务经验的人在，很有帮助。你觉得 Psiphon 是目前最好的吗？（有时你运行的这个在你入行时是最好的，但后来你发现了更好的）</p>","zhText":"标题已改。\n有实际运行代理服务经验的人在，很有帮助。你觉得 Psiphon 是目前最好的吗？（有时你运行的这个在你入行时是最好的，但后来你发现了更好的）"},{"id":445,"sid":97,"sat":1,"tid":42,"tt":"Idea for file hosting and proxy services","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-03-24","ts":"2010-03-24T18:02:55Z","url":"https://bitcointalk.org/index.php?topic=83.msg810#msg810","zh":"<p>Mihalism Multi Host 是一个流行的开源 PHP 文件托管服务器。</p><p>它偏向图片托管，但我认为只要提高文件大小上限、放宽允许的扩展名，它同样可以轻松用作通用文件上传托管。他们需要这些限制来维持免费服务的合理运转，但如果我们装上比特币支付机制，限制就可以放宽。</p><p>它没有一堆需要扒掉的客户端脚本或防嵌入的破烂。它生成正常工作的标准链接。</p><p>这些免费托管站点的更新换代很频繁。小站可以提供免费图片托管，但一旦开始走红，就会被蹭免费带宽的揩油者淹没。任何出了名的网站都得变得更咄咄逼人地催缴费，以覆盖带宽成本。这是服务定价的完美案例：所需价位落在无人区——免费送就略贵，而对大多数用户来说又便宜到犯不上走传统付款的麻烦。它就卡在 0 和 19.95 之间的鸿沟里。他们最好的办法也许是争取 1000 个用户里有 1 个付 9.95，但那意味着 999/1000 的用户被当成蹭饭的。靠广告也撑不住，因为图片是嵌在别的网站上、根本不经过托管站就被下载的。</p><p>运行这套软件的网站示例：\n<a href=\"http://www.imagez.ws/\">http://www.imagez.ws/</a></p><p>论坛：\n<a href=\"http://www.mihalism.net/\">http://www.mihalism.net/</a></p><p>下载：\n<a href=\"http://code.google.com/p/mihalismmh/\">http://code.google.com/p/mihalismmh/</a></p><p>大家怎么看？如果我为它做一个比特币支付集成，会有人有兴趣运行它吗？它也许是第一个可以用比特币购买的全自动服务。相比免费服务，它的优势在于提供大文件的通用上传托管，而不必让下载用户跑到上传站点、百般周折。它会给出直指文件的普通链接。</p>","zhText":"Mihalism Multi Host 是一个流行的开源 PHP 文件托管服务器。\n它偏向图片托管，但我认为只要提高文件大小上限、放宽允许的扩展名，它同样可以轻松用作通用文件上传托管。他们需要这些限制来维持免费服务的合理运转，但如果我们装上比特币支付机制，限制就可以放宽。\n它没有一堆需要扒掉的客户端脚本或防嵌入的破烂。它生成正常工作的标准链接。\n这些免费托管站点的更新换代很频繁。小站可以提供免费图片托管，但一旦开始走红，就会被蹭免费带宽的揩油者淹没。任何出了名的网站都得变得更咄咄逼人地催缴费，以覆盖带宽成本。这是服务定价的完美案例：所需价位落在无人区——免费送就略贵，而对大多数用户来说又便宜到犯不上走传统付款的麻烦。它就卡在 0 和 19.95 之间的鸿沟里。他们最好的办法也许是争取 1000 个用户里有 1 个付 9.95，但那意味着 999/1000 的用户被当成蹭饭的。靠广告也撑不住，因为图片是嵌在别的网站上、根本不经过托管站就被下载的。\n运行这套软件的网站示例：\nhttp://www.imagez.ws/\n论坛：\nhttp://www.mihalism.net/\n下载：\nhttp://code.google.com/p/mihalismmh/\n大家怎么看？如果我为它做一个比特币支付集成，会有人有兴趣运行它吗？它也许是第一个可以用比特币购买的全自动服务。相比免费服务，它的优势在于提供大文件的通用上传托管，而不必让下载用户跑到上传站点、百般周折。它会给出直指文件的普通链接。"},{"id":304,"sid":null,"sat":0,"tid":29,"tt":"Setting up multiple bitcoin machines behind NAT","src":"Bitcointalk","author":"Xunie","date":"2010-04-08","ts":"2010-04-08T20:06:37Z","url":"https://bitcointalk.org/index.php?topic=54.msg877#msg877","zh":"<blockquote><p>目前还没有实现这个功能的端口设置。</p></blockquote><p>那么，如果我以某种方式把 router:8333 转发到 bitcoinhost1:8333、把 router:8334 转发到 bitcoinhost2:8333，行为就是未定义的吗？因为在我看来，让任何 p2p 应用记住端口号都是件轻而易举的事。</p>","zhText":"目前还没有实现这个功能的端口设置。\n\n那么，如果我以某种方式把 router:8333 转发到 bitcoinhost1:8333、把 router:8334 转发到 bitcoinhost2:8333，行为就是未定义的吗？因为在我看来，让任何 p2p 应用记住端口号都是件轻而易举的事。"},{"id":494,"sid":null,"sat":0,"tid":46,"tt":"removing bitcoin addresses","src":"Bitcointalk","author":"sirius","date":"2010-04-10","ts":"2010-04-10T06:12:31Z","url":"https://bitcointalk.org/index.php?topic=101.msg888#msg888","zh":"<p>问 Satoshi 一个问题：你测试过程序在钱包里装上千个自有地址的情况吗？如果我为每笔自动化交易生成一个新地址，数量会很可观。或者，只要池子够大，我可以复用地址。</p>","zhText":"问 Satoshi 一个问题：你测试过程序在钱包里装上千个自有地址的情况吗？如果我为每笔自动化交易生成一个新地址，数量会很可观。或者，只要池子够大，我可以复用地址。"},{"id":501,"sid":null,"sat":0,"tid":47,"tt":"Is there a way to automate bitcoin payments for a website?","src":"Bitcointalk","author":"Link2VoIP","date":"2010-04-22","ts":"2010-04-22T00:31:46Z","url":"https://bitcointalk.org/index.php?topic=112.msg994#msg994","zh":"<p>你说对了一半。bitcoind 是一个\"驻留程序\"。你通过 JSON-RPC 套接字与它通信，发送付款、轮询收款。</p>","zhText":"你说对了一半。bitcoind 是一个\"驻留程序\"。你通过 JSON-RPC 套接字与它通信，发送付款、轮询收款。"},{"id":311,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"Karmicads","date":"2010-05-01","ts":"2010-05-01T06:06:53Z","url":"https://bitcointalk.org/index.php?topic=55.msg1038#msg1038","zh":"<p>我想知道是否有人在落实这个想法。我一直在研究实现某些互联网浏览器功能的可能性，如<a href=\"http://'http://bitcointalk.org/index.php?topic=123.0'\">这个帖子</a>以及<a href=\"http://'http://bitcointalk.org/index.php?topic=63.0'\">这里描述的</a>精彩进展。看起来作为第一步兴许更容易些（我边做边学）：先试起来，并把它并入 Firefox 附加组件将来演化出的其他功能里。</p><p>在此之前，需要先就 URI 采用什么形式达成共识。我对 URI 方案做了些快速调研：大多数做法在未经 W3C 批准时都遭人白眼；有一类是 W3C 批准一个试验性 URI 方案并保留观察，不作任何保证（类似临时专利）；而目前为止最合适的方案似乎是 magnet URI——它设计为靠内容唯一性产生的哈希来定位资源，而非靠特定地址。Magnet 本就为点对点网络上的应用而设计，并预留了引用应用特定数据的参数。基本用法是给应用特定参数加个 x 前缀，如 xbitcoin1:?</p><p>也许不去尝试实现一个全新的顶级 URI 方案是明智的，因为只要未被普遍承认，它就会被视作临场发挥的把戏。采用 magnet 体系可以避开这一点，但 magnet 本身也是个非正式、未注册的方案。magnet 的妙处在于它可以被共享，在这个意义上是开放的。</p><p>这一切看起来都很美好，毕竟 bitcoin 是 P2P 应用，它的网络也基于相似的原理运作。可是，倘若点击链接的人不是 bitcoin 用户怎么办？倘若你想纳入一些现有网络不携带的信息——比如所售商品、货运信息和各种其他事项——怎么办？据我理解，bitcoin 只处理交易本身，其他一切安排、契约和通信都由用户在 bitcoin 之外自行完成。匿名性正是在这里打折扣：因为在这一步，我们倾向于退回传统的\"层级式硬连线\"或非匿名技术。这绝不是对 bitcoin 的批评，bitcoin 是绝妙的交易方式，这毫无疑问。但交易只是硬币的一面，恕我用这个老套的双关。</p><p>在调研 URI 的过程中，我想起了 freenet 和它使用的类 magnet 系统，于是又回到那边考察了一番。既然 freenet 是一个用于信息存储的用户/身份空间，它难道不能同时用作人类可读数据文件的存储库吗——每个用户专属且唯一，可以纳入你想用来装点交易的任何数据格式？难道不能用它把 URI 挂进一个丰富的应用特定数据库——为发布者自己的网站功能或业务系统而设计？你的 bitcoin 节点负责实际交易，freenet 节点负责呈现个体数据。</p><p>这样一切就都置于同一种密码学 P2P 基础设施之下，并允许应用特定上下文的无限多样性。我想，一个唯一的 URI 哈希密钥可以从你的 freenet+bitcoin 哈希组合中产生：文件用你的 freenet 密钥加密、用你的 bitcoin 密钥解密找回，而你的 bitcoin 节点则可以反过来寻址。这听起来对吗？当然，倘若你在其中一边用了真实身份，我猜你的真实身份也会在另一边暴露。</p><p>总之，我确信总有些办法能做到。再说一遍，freenet 用的也是未注册的 URI 方案，但只要采用 magnet 的某种变体，这就不是问题。问题依然在于：倘若人们期望 bitcoin 成为一种正式被认可的货币、一桩非常正当的买卖，那么严格遵守其他一切互联网协议也许是明智的。到目前为止，我还没发现任何特别妨碍注册一个 magnet/freenet 式 URI 方案的东西。我没有搜遍全部，说不定已经存在一个。否则为什么不去注册一个？</p><p>所以 URI 方案需要就分类（即哪种 magnet 等，以及要不要走正规/正式路线）和格式（比如如何排布）达成一致：</p><p><b>URI 的组成</b>\n这涉及 Mozilla 解析 URI 时会遵循的约定。\n一个典型的 magnet URI 长这样</p><p>magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C</p><p>freenet URI 是这样的：</p><p><a href=\"http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf\">http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf</a></p><p>要被识别，就必须安装 freenet 程序，其中包括一个由 Java 驱动的 web 服务器，它把资源识别为 localhost 身份空间中的一项。也就是说，我的浏览器把整个 freenet 看作在我自己的机器上。我不知道这个身份空间能否在不要求用户运行 web 服务器的情况下被寻址，但我猜这个服务器只是为了能提供网页服务，并把 localhost 识别为必需的顶级域。'http:' 表明 freenet URI 本身没什么特别，但那个 IP 地址（localhost）确实特别。我猜程序可以不借助 web 服务器就寻址 freenet 用户空间，通用链接可以做成 magnet URI。至于那些没装 bitcoin 的人，我不知道如何让 URI 有个默认回退，把点击该链接的访客重定向到 Sourceforge 的 bitcoin 下载页。这可能需要在代码里实现，并借助 cookie 或环境变量记录 bitcoin 的存在。</p><p>这次调研中访问的其他相关网站包括：</p><ul><li><a href=\"http://infomesh.net/2001/09/urischemes\">http://infomesh.net/2001/09/urischemes</a></li><li><a href=\"http://www.search.com/reference/Magnet:_URI_scheme\">http://www.search.com/reference/Magnet:_URI_scheme</a></li><li><a href=\"http://magnet-uri.sourceforge.net/\">http://magnet-uri.sourceforge.net/</a></li><li><a href=\"http://magnet-uri.sourceforge.net/magnet-draft-overview.txt\">http://magnet-uri.sourceforge.net/magnet-draft-overview.txt</a></li><li><a href=\"http://www.w3.org/Addressing/schemes\">http://www.w3.org/Addressing/schemes</a></li><li><a href=\"http://www.w3.org/Addressing/schemes#Registration\">http://www.w3.org/Addressing/schemes#Registration</a></li></ul><p>欢迎任何想法/评论/反馈。\nSteve</p><p>我想知道是否有人在落实这个想法。我一直在研究实现某些互联网浏览器功能的可能性，如<a href=\"http://'http://bitcointalk.org/index.php?topic=123.0'\">这个帖子</a>以及<a href=\"http://'http://bitcointalk.org/index.php?topic=63.0'\">这里描述的</a>精彩进展。看起来作为第一步兴许更容易些（我边做边学）：先试起来，并把它并入 Firefox 附加组件将来演化出的其他功能里。</p><p>在此之前，需要先就 URI 采用什么形式达成共识。我对 URI 方案做了些快速调研：大多数做法在未经 W3C 批准时都遭人白眼；有一类是 W3C 批准一个试验性 URI 方案并保留观察，不作任何保证（类似临时专利）；而目前为止最合适的方案似乎是 magnet URI——它设计为靠内容唯一性产生的哈希来定位资源，而非靠特定地址。Magnet 本就为点对点网络上的应用而设计，并预留了引用应用特定数据的参数。基本用法是给应用特定参数加个 x 前缀，如 xbitcoin1:?</p><p>也许不去尝试实现一个全新的顶级 URI 方案是明智的，因为只要未被普遍承认，它就会被视作临场发挥的把戏。采用 magnet 体系可以避开这一点，但 magnet 本身也是个非正式、未注册的方案。magnet 的妙处在于它可以被共享，在这个意义上是开放的。</p><p>这一切看起来都很美好，毕竟 bitcoin 是 P2P 应用，它的网络也基于相似的原理运作。可是，倘若点击链接的人不是 bitcoin 用户怎么办？倘若你想纳入一些现有网络不携带的信息——比如所售商品、货运信息和各种其他事项——怎么办？据我理解，bitcoin 只处理交易本身，其他一切安排、契约和通信都由用户在 bitcoin 之外自行完成。匿名性正是在这里打折扣：因为在这一步，我们倾向于退回传统的\"层级式硬连线\"或非匿名技术。这绝不是对 bitcoin 的批评，bitcoin 是绝妙的交易方式，这毫无疑问。但交易只是硬币的一面，恕我用这个老套的双关。</p><p>在调研 URI 的过程中，我想起了 freenet 和它使用的类 magnet 系统，于是又回到那边考察了一番。既然 freenet 是一个用于信息存储的用户/身份空间，它难道不能同时用作人类可读数据文件的存储库吗——每个用户专属且唯一，可以纳入你想用来装点交易的任何数据格式？难道不能用它把 URI 挂进一个丰富的应用特定数据库——为发布者自己的网站功能或业务系统而设计？你的 bitcoin 节点负责实际交易，freenet 节点负责呈现个体数据。</p><p>这样一切就都置于同一种密码学 P2P 基础设施之下，并允许应用特定上下文的无限多样性。我想，一个唯一的 URI 哈希密钥可以从你的 freenet+bitcoin 哈希组合中产生：文件用你的 freenet 密钥加密、用你的 bitcoin 密钥解密找回，而你的 bitcoin 节点则可以反过来寻址。这听起来对吗？当然，倘若你在其中一边用了真实身份，我猜你的真实身份也会在另一边暴露。</p><p>总之，我确信总有些办法能做到。再说一遍，freenet 用的也是未注册的 URI 方案，但只要采用 magnet 的某种变体，这就不是问题。问题依然在于：倘若人们期望 bitcoin 成为一种正式被认可的货币、一桩非常正当的买卖，那么严格遵守其他一切互联网协议也许是明智的。到目前为止，我还没发现任何特别妨碍注册一个 magnet/freenet 式 URI 方案的东西。我没有搜遍全部，说不定已经存在一个。否则为什么不去注册一个？</p><p>所以 URI 方案需要就分类（即哪种 magnet 等，以及要不要走正规/正式路线）和格式（比如如何排布）达成一致：</p><p><b>URI 的组成</b>\n这涉及 Mozilla 解析 URI 时会遵循的约定。\n一个典型的 magnet URI 长这样</p><p>magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C</p><p>freenet URI 是这样的：</p><p><a href=\"http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf\">http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf</a></p><p>要被识别，就必须安装 freenet 程序，其中包括一个由 Java 驱动的 web 服务器，它把资源识别为 localhost 身份空间中的一项。也就是说，我的浏览器把整个 freenet 看作在我自己的机器上。我不知道这个身份空间能否在不要求用户运行 web 服务器的情况下被寻址，但我猜这个服务器只是为了能提供网页服务，并把 localhost 识别为必需的顶级域。'http:' 表明 freenet URI 本身没什么特别，但那个 IP 地址（localhost）确实特别。我猜程序可以不借助 web 服务器就寻址 freenet 用户空间，通用链接可以做成 magnet URI。至于那些没装 bitcoin 的人，我不知道如何让 URI 有个默认回退，把点击该链接的访客重定向到 Sourceforge 的 bitcoin 下载页。这可能需要在代码里实现，并借助 cookie 或环境变量记录 bitcoin 的存在。</p><p>这次调研中访问的其他相关网站包括：</p><ul><li><a href=\"http://infomesh.net/2001/09/urischemes\">http://infomesh.net/2001/09/urischemes</a></li><li><a href=\"http://www.search.com/reference/Magnet:_URI_scheme\">http://www.search.com/reference/Magnet:_URI_scheme</a></li><li><a href=\"http://magnet-uri.sourceforge.net/\">http://magnet-uri.sourceforge.net/</a></li><li><a href=\"http://magnet-uri.sourceforge.net/magnet-draft-overview.txt\">http://magnet-uri.sourceforge.net/magnet-draft-overview.txt</a></li><li><a href=\"http://www.w3.org/Addressing/schemes\">http://www.w3.org/Addressing/schemes</a></li><li><a href=\"http://www.w3.org/Addressing/schemes#Registration\">http://www.w3.org/Addressing/schemes#Registration</a></li></ul><p>欢迎任何想法/评论/反馈。\nSteve</p>","zhText":"我想知道是否有人在落实这个想法。我一直在研究实现某些互联网浏览器功能的可能性，如这个帖子以及这里描述的精彩进展。看起来作为第一步兴许更容易些（我边做边学）：先试起来，并把它并入 Firefox 附加组件将来演化出的其他功能里。\n在此之前，需要先就 URI 采用什么形式达成共识。我对 URI 方案做了些快速调研：大多数做法在未经 W3C 批准时都遭人白眼；有一类是 W3C 批准一个试验性 URI 方案并保留观察，不作任何保证（类似临时专利）；而目前为止最合适的方案似乎是 magnet URI——它设计为靠内容唯一性产生的哈希来定位资源，而非靠特定地址。Magnet 本就为点对点网络上的应用而设计，并预留了引用应用特定数据的参数。基本用法是给应用特定参数加个 x 前缀，如 xbitcoin1:?\n也许不去尝试实现一个全新的顶级 URI 方案是明智的，因为只要未被普遍承认，它就会被视作临场发挥的把戏。采用 magnet 体系可以避开这一点，但 magnet 本身也是个非正式、未注册的方案。magnet 的妙处在于它可以被共享，在这个意义上是开放的。\n这一切看起来都很美好，毕竟 bitcoin 是 P2P 应用，它的网络也基于相似的原理运作。可是，倘若点击链接的人不是 bitcoin 用户怎么办？倘若你想纳入一些现有网络不携带的信息——比如所售商品、货运信息和各种其他事项——怎么办？据我理解，bitcoin 只处理交易本身，其他一切安排、契约和通信都由用户在 bitcoin 之外自行完成。匿名性正是在这里打折扣：因为在这一步，我们倾向于退回传统的\"层级式硬连线\"或非匿名技术。这绝不是对 bitcoin 的批评，bitcoin 是绝妙的交易方式，这毫无疑问。但交易只是硬币的一面，恕我用这个老套的双关。\n在调研 URI 的过程中，我想起了 freenet 和它使用的类 magnet 系统，于是又回到那边考察了一番。既然 freenet 是一个用于信息存储的用户/身份空间，它难道不能同时用作人类可读数据文件的存储库吗——每个用户专属且唯一，可以纳入你想用来装点交易的任何数据格式？难道不能用它把 URI 挂进一个丰富的应用特定数据库——为发布者自己的网站功能或业务系统而设计？你的 bitcoin 节点负责实际交易，freenet 节点负责呈现个体数据。\n这样一切就都置于同一种密码学 P2P 基础设施之下，并允许应用特定上下文的无限多样性。我想，一个唯一的 URI 哈希密钥可以从你的 freenet+bitcoin 哈希组合中产生：文件用你的 freenet 密钥加密、用你的 bitcoin 密钥解密找回，而你的 bitcoin 节点则可以反过来寻址。这听起来对吗？当然，倘若你在其中一边用了真实身份，我猜你的真实身份也会在另一边暴露。\n总之，我确信总有些办法能做到。再说一遍，freenet 用的也是未注册的 URI 方案，但只要采用 magnet 的某种变体，这就不是问题。问题依然在于：倘若人们期望 bitcoin 成为一种正式被认可的货币、一桩非常正当的买卖，那么严格遵守其他一切互联网协议也许是明智的。到目前为止，我还没发现任何特别妨碍注册一个 magnet/freenet 式 URI 方案的东西。我没有搜遍全部，说不定已经存在一个。否则为什么不去注册一个？\n所以 URI 方案需要就分类（即哪种 magnet 等，以及要不要走正规/正式路线）和格式（比如如何排布）达成一致：\nURI 的组成\n这涉及 Mozilla 解析 URI 时会遵循的约定。\n一个典型的 magnet URI 长这样\nmagnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C\nfreenet URI 是这样的：\nhttp://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf\n要被识别，就必须安装 freenet 程序，其中包括一个由 Java 驱动的 web 服务器，它把资源识别为 localhost 身份空间中的一项。也就是说，我的浏览器把整个 freenet 看作在我自己的机器上。我不知道这个身份空间能否在不要求用户运行 web 服务器的情况下被寻址，但我猜这个服务器只是为了能提供网页服务，并把 localhost 识别为必需的顶级域。'http:' 表明 freenet URI 本身没什么特别，但那个 IP 地址（localhost）确实特别。我猜程序可以不借助 web 服务器就寻址 freenet 用户空间，通用链接可以做成 magnet URI。至于那些没装 bitcoin 的人，我不知道如何让 URI 有个默认回退，把点击该链接的访客重定向到 Sourceforge 的 bitcoin 下载页。这可能需要在代码里实现，并借助 cookie 或环境变量记录 bitcoin 的存在。\n这次调研中访问的其他相关网站包括：\nhttp://infomesh.net/2001/09/urischemes\nhttp://www.search.com/reference/Magnet:_URI_scheme\nhttp://magnet-uri.sourceforge.net/\nhttp://magnet-uri.sourceforge.net/magnet-draft-overview.txt\nhttp://www.w3.org/Addressing/schemes\nhttp://www.w3.org/Addressing/schemes#Registration\n欢迎任何想法/评论/反馈。\nSteve\n我想知道是否有人在落实这个想法。我一直在研究实现某些互联网浏览器功能的可能性，如这个帖子以及这里描述的精彩进展。看起来作为第一步兴许更容易些（我边做边学）：先试起来，并把它并入 Firefox 附加组件将来演化出的其他功能里。\n在此之前，需要先就 URI 采用什么形式达成共识。我对 URI 方案做了些快速调研：大多数做法在未经 W3C 批准时都遭人白眼；有一类是 W3C 批准一个试验性 URI 方案并保留观察，不作任何保证（类似临时专利）；而目前为止最合适的方案似乎是 magnet URI——它设计为靠内容唯一性产生的哈希来定位资源，而非靠特定地址。Magnet 本就为点对点网络上的应用而设计，并预留了引用应用特定数据的参数。基本用法是给应用特定参数加个 x 前缀，如 xbitcoin1:?\n也许不去尝试实现一个全新的顶级 URI 方案是明智的，因为只要未被普遍承认，它就会被视作临场发挥的把戏。采用 magnet 体系可以避开这一点，但 magnet 本身也是个非正式、未注册的方案。magnet 的妙处在于它可以被共享，在这个意义上是开放的。\n这一切看起来都很美好，毕竟 bitcoin 是 P2P 应用，它的网络也基于相似的原理运作。可是，倘若点击链接的人不是 bitcoin 用户怎么办？倘若你想纳入一些现有网络不携带的信息——比如所售商品、货运信息和各种其他事项——怎么办？据我理解，bitcoin 只处理交易本身，其他一切安排、契约和通信都由用户在 bitcoin 之外自行完成。匿名性正是在这里打折扣：因为在这一步，我们倾向于退回传统的\"层级式硬连线\"或非匿名技术。这绝不是对 bitcoin 的批评，bitcoin 是绝妙的交易方式，这毫无疑问。但交易只是硬币的一面，恕我用这个老套的双关。\n在调研 URI 的过程中，我想起了 freenet 和它使用的类 magnet 系统，于是又回到那边考察了一番。既然 freenet 是一个用于信息存储的用户/身份空间，它难道不能同时用作人类可读数据文件的存储库吗——每个用户专属且唯一，可以纳入你想用来装点交易的任何数据格式？难道不能用它把 URI 挂进一个丰富的应用特定数据库——为发布者自己的网站功能或业务系统而设计？你的 bitcoin 节点负责实际交易，freenet 节点负责呈现个体数据。\n这样一切就都置于同一种密码学 P2P 基础设施之下，并允许应用特定上下文的无限多样性。我想，一个唯一的 URI 哈希密钥可以从你的 freenet+bitcoin 哈希组合中产生：文件用你的 freenet 密钥加密、用你的 bitcoin 密钥解密找回，而你的 bitcoin 节点则可以反过来寻址。这听起来对吗？当然，倘若你在其中一边用了真实身份，我猜你的真实身份也会在另一边暴露。\n总之，我确信总有些办法能做到。再说一遍，freenet 用的也是未注册的 URI 方案，但只要采用 magnet 的某种变体，这就不是问题。问题依然在于：倘若人们期望 bitcoin 成为一种正式被认可的货币、一桩非常正当的买卖，那么严格遵守其他一切互联网协议也许是明智的。到目前为止，我还没发现任何特别妨碍注册一个 magnet/freenet 式 URI 方案的东西。我没有搜遍全部，说不定已经存在一个。否则为什么不去注册一个？\n所以 URI 方案需要就分类（即哪种 magnet 等，以及要不要走正规/正式路线）和格式（比如如何排布）达成一致：\nURI 的组成\n这涉及 Mozilla 解析 URI 时会遵循的约定。\n一个典型的 magnet URI 长这样\nmagnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C\nfreenet URI 是这样的：\nhttp://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf\n要被识别，就必须安装 freenet 程序，其中包括一个由 Java 驱动的 web 服务器，它把资源识别为 localhost 身份空间中的一项。也就是说，我的浏览器把整个 freenet 看作在我自己的机器上。我不知道这个身份空间能否在不要求用户运行 web 服务器的情况下被寻址，但我猜这个服务器只是为了能提供网页服务，并把 localhost 识别为必需的顶级域。'http:' 表明 freenet URI 本身没什么特别，但那个 IP 地址（localhost）确实特别。我猜程序可以不借助 web 服务器就寻址 freenet 用户空间，通用链接可以做成 magnet URI。至于那些没装 bitcoin 的人，我不知道如何让 URI 有个默认回退，把点击该链接的访客重定向到 Sourceforge 的 bitcoin 下载页。这可能需要在代码里实现，并借助 cookie 或环境变量记录 bitcoin 的存在。\n这次调研中访问的其他相关网站包括：\nhttp://infomesh.net/2001/09/urischemes\nhttp://www.search.com/reference/Magnet:_URI_scheme\nhttp://magnet-uri.sourceforge.net/\nhttp://magnet-uri.sourceforge.net/magnet-draft-overview.txt\nhttp://www.w3.org/Addressing/schemes\nhttp://www.w3.org/Addressing/schemes#Registration\n欢迎任何想法/评论/反馈。\nSteve"},{"id":315,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"D҉ataWraith","date":"2010-05-02","ts":"2010-05-02T11:13:09Z","url":"https://bitcointalk.org/index.php?topic=55.msg1045#msg1045","zh":"<p>Karmicaids，感谢花时间给出如此详细的回复。</p><blockquote><p>看起来，碰巧还真有一个现成的协议，专门用来与 freenet 上存储的数据文件交互   <太好了！></p></blockquote><p>哦，你说用 freenet 时我理解成那个意思了。用户运行 freenet，Bitcoin 通过它的控制协议与之通信。不过，运行 Freenet 需要相当多的计算机资源，尤其是带宽；仅凭这一点，我个人就不想运行 freenet 节点。这也是我希望它是可选的原因。</p><blockquote><p>我希望我没有造成这样的印象：我打算不加更多考虑、不与他人达成一致就使用 magnet 链接，或者我对它的暂时支持是基于它现有的流行度。</p></blockquote><p>我的印象是，你不想重复造轮子，所以流行度才起了作用——其他软件对 magnet 链接的既有接受度是个加分项。</p><blockquote><p>抱歉 DataWraith，恕我直言，我不得不反对。第一个问题是，硬盘上的文件映射到嵌套位置的层级命名空间，即域和目录。众多 P2P 网络在方法上的根本差异在于：命名空间不是层级的，其所支持的数据不是按地址引用，而是按内容的唯一性引用。无论目标是一个文件还是别的什么，它都不是由某个特定的固定地址引用，而是由其唯一内容的身份引用。相同的文件本质上是同一个身份，P2P 应用可以把多个实例用作同一事物的多条供给。magnet 的参数非常适合任何 P2P 应用。</p></blockquote><p>好，抱歉，看来我没把意思完全说清。我知道 magnet 链接指向的是内容，而不是层级命名空间中的某个位置。</p><p>也许这只是思维模型的差异：对我来说，一笔 bitcoin 交易——找不到更好的词——与其说是一个<b>东西</b>，不如说是一个<b>过程</b>。在我心里，magnet 链接指向的是东西（通常是一个文件——按内容哈希或按位置），用它们去指涉一个过程，让我觉得有点别扭。Magnet 链接标识出你还得去取回的东西，而 bitcoin 交易由链接本身完整描述（尽管点击链接后你仍要说一句\"是的，发送硬币。\"）。</p><p>在我看来，使用 magnet 链接是在（滥）用它们去描述它们本不打算描述的东西——它们起初是作为 ed2k://、freenet:// 等的替代品而生的，描述如何获取一个文件。</p><p>bitcoin 链接应该更像 mailto: 而不是 magnet:，恕我直言。</p><blockquote><p>嗯，实际上它是个 URN 处理器，而且我并没有对你所说的\"重量\"设定任何限制。</p></blockquote><p>是啊，我的错，抱歉。</p><blockquote><p>无论如何，我只是在这件事上盘算，希望不安装 freenet 也能做到——至少，读写 freenet 所需的那块代码，如果（如我所疑）不需要整个 freenet web 服务器，应该会小得多。</p></blockquote><p>如果我没记错，web 服务器基本是集成在 Freenet 自身里的。你可以用更简单的 FCP 协议与 Freenet 实例对话，但由于 Freenet 上的内容类型，愿意托管公开可访问实例的人不多，所以你只能自己运行一个。你想能做到这一点，我不眼红；只是我自己不愿意这么做。我更愿意托管一个 TOR 隐藏服务——这就是我建议用通用、全功能的 URL 作为 details 参数，而不是做成 freenet 专属的原因。</p><blockquote><p>除了你的 bitcoin 签名所提供的那个'地址'（它更像一个名字而非一个地点）之外，我不确定你说的地址是什么意思。我看不出你怎么能把不同的地址发给不同的人，除非你已经定义了一些别名。所以你是想再添一套命名系统，为 bitcoin 节点编码和翻译别名，是这个意思吗？我想这做起来不算太麻烦。</p></blockquote><p>嗯，对，我说的就是 bitcoin 签名。我叫它地址，是因为 bitcoin 客户端里就是这么写的（即 \"Change your address\"）。我确实想过应该使用不同的别名，就像现在的兑换网站那样：你会得到一个用于收币的地址（或签名，或随便叫什么），因为这个地址只给过你一个人，收款方就知道这笔付款来自你。</p><p>一套别名翻译系统当然很好，不过我觉得这事更适合用通讯录或者 <a href=\"http://mybitcoin.com\">mybitcoin.com</a> 之类的来解决。</p><blockquote><p>Message：这正是 URI 数据变得臃肿的地方。一条消息隐含地是\"有用分量\"的人际沟通，本来就无意放在 URI 自身里传递。如果接收方想传达一些文字，他们可以在自己发布的文档里做（即发布链接的那个地方）。发送方的文字可以走常规途径，因为链接会唤起 bitcoin 界面，那里提供了填写备注的栏目。接收方（收款人）有什么消息是非要传递、而无法在发布链接的文档里完成的呢？</p></blockquote><p>是的，完全正确！发送方的文字可以走常规途径。但如果我想预先指定应发送的文字呢？</p><p>这在 mailto: 链接里有对应物：你想让别人给你发邮件，还可以指定他/她该用的主题：mailto:alice@example.org?subject=Test。所以如果我在 ebay 之类的地方卖东西，我可以给买家一个 bitcoin 链接，内含消息\"Payment for Ebay auction #12345\"，这样他/她就不必自己输入，免得代码比 #12345 更晦涩时输错。</p><blockquote><p>Details：我从一开始就主张，URI 方案最好能够引用一个带有更丰富数据结构的文档，用来在必选参数传递的基本信息之上增色。我也提议过存放这些文档的候选仓库，这带来了一些可访问性问题，但若能解决，将增强 bitcoin 节点的匿名性，并摆脱对非 P2P 或层级命名空间的依赖。把一个优美的网络寻址协议，重新映射到（或者硬拗到）一个倒退的、劣等的、丑得不行的协议上——要求所有参与者采用固定位置的类比，位置一挪就丢掉全部硬连线关联——在我看来，就像给一座漂亮的石头建筑刷一层廉价的塑料漆；还是亮绿色的漆。拿 URL 当参数，恰恰是我想避免的那种糟蹋，因为 URL 不是 URN，它寻址的命名空间是层级的，最终必须落脚在一个固定 IP 上。</p></blockquote><p>抱歉，我总是错误地把 URI、URL 等术语混用，因为反正都是敲进地址栏的 %）。再次抱歉，如果这造成了混乱。</p><p>我想要的是让这些附加信息保持通用。几个例子也许能说清：</p><ul><li><a href=\"https://www.myonlineshop.com/purchaseDetails/123456\">https://www.myonlineshop.com/purchaseDetails/123456</a></li><li><a href=\"http://pastie.org/942292\">http://pastie.org/942292</a></li><li>freenet://[a ressource on freenet]/</li><li><a href=\"http://kpvz7ki2v5agwt35.onion/wiki/index.php/PurchaseDetailsHere\">http://kpvz7ki2v5agwt35.onion/wiki/index.php/PurchaseDetailsHere</a></li><li>magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C</li></ul><p>链接的创建者自己决定把附加细节放在哪里，接收者则决定自己是否迫切需要这些补充信息、以至于值得安装 Freenet/Tor/I2P。这也是把一条短消息放进链接本身的理由之一：附加信息不应是交易的关键所在。</p><blockquote><p>至于这句 <b><i>\"你还可以链接到 freenet、i2p 和 tor 以保持匿名。\"</i></b>——你显然没怎么想过这件事。如果我可以直接链接到 freenet，那我一开始就可以直接把 freenet 作为 URI 里引用的实际仓库了。</p></blockquote><p>但那不就把 Freenet 的使用变成强制的了吗？我希望这里保持更灵活。</p><p>而且，如果我要开网店，我更愿意让人们在我自己网站上查详情，而不是要求他们安装 freenet。那还可能把我店铺的声誉和 Freenet 捆在一起——鉴于 Freenet 的名声，这未必是好事。</p><blockquote><p>问题就在这里。你不能只在 freenet 上存文件，就指望任何人都能通过 URL 或 URN 在普通网站上取回它们——除非访客装有能处理该链接的客户端软件，否则这个引用毫无用处。</p></blockquote><p>是的。这也是我想同时允许普通 HTTP(S) URL 的另一个原因。如果我没理解错，你似乎想把 Freenet 变成交易的强制环节，这一点我强烈反对。</p><blockquote><p>因为 http/s 运行在层级命名空间上，而 P2P 客户端运行在非层级命名空间上，同一个参数无法同时兼顾两者地寻址。等你把身份固定到一个物理位置之后，再想匿名就有点晚了。</p></blockquote><p>并非每一笔交易都需要刀枪不入的匿名性。想想接受捐赠的开源项目，或者网店。如果你 (a) 需要比短消息参数更多的细节，并且 (b) 想要完全匿名，你只需指定一个 freenet 或 Tor 或 I2P 的 URL（或 URN？——这真让人犯迷糊 :-/）。如果你不需要额外的匿名性，就不必费劲去运行 Freenet/Tor/I2P/随便什么。</p><blockquote><p>如果我误解了你，我道歉 DataWraith，但你似乎并不领会这两种命名空间模型的差异，也不领会它们各自的优劣与负担。我仍然非常愿意考虑任何其他体系方案。我并非断然拒绝你的批评，也不是坚持我的偏好就该是默认项。我只愿无论如何做出最好的 URI 方案。依然感谢你的体谅。</p></blockquote><p>嗯，我们都在同一条船上。我只希望最终得到尽可能好的系统。:-)</p><p>谢谢你详尽的解释，以及对我的建议的耐心。</p><p>Karmicaids，感谢花时间给出如此详细的回复。</p><blockquote><p>看起来，碰巧还真有一个现成的协议，专门用来与 freenet 上存储的数据文件交互   <太好了！></p></blockquote><p>哦，你说用 freenet 时我理解成那个意思了。用户运行 freenet，Bitcoin 通过它的控制协议与之通信。不过，运行 Freenet 需要相当多的计算机资源，尤其是带宽；仅凭这一点，我个人就不想运行 freenet 节点。这也是我希望它是可选的原因。</p><blockquote><p>我希望我没有造成这样的印象：我打算不加更多考虑、不与他人达成一致就使用 magnet 链接，或者我对它的暂时支持是基于它现有的流行度。</p></blockquote><p>我的印象是，你不想重复造轮子，所以流行度才起了作用——其他软件对 magnet 链接的既有接受度是个加分项。</p><blockquote><p>抱歉 DataWraith，恕我直言，我不得不反对。第一个问题是，硬盘上的文件映射到嵌套位置的层级命名空间，即域和目录。众多 P2P 网络在方法上的根本差异在于：命名空间不是层级的，其所支持的数据不是按地址引用，而是按内容的唯一性引用。无论目标是一个文件还是别的什么，它都不是由某个特定的固定地址引用，而是由其唯一内容的身份引用。相同的文件本质上是同一个身份，P2P 应用可以把多个实例用作同一事物的多条供给。magnet 的参数非常适合任何 P2P 应用。</p></blockquote><p>好，抱歉，看来我没把意思完全说清。我知道 magnet 链接指向的是内容，而不是层级命名空间中的某个位置。</p><p>也许这只是思维模型的差异：对我来说，一笔 bitcoin 交易——找不到更好的词——与其说是一个<b>东西</b>，不如说是一个<b>过程</b>。在我心里，magnet 链接指向的是东西（通常是一个文件——按内容哈希或按位置），用它们去指涉一个过程，让我觉得有点别扭。Magnet 链接标识出你还得去取回的东西，而 bitcoin 交易由链接本身完整描述（尽管点击链接后你仍要说一句\"是的，发送硬币。\"）。</p><p>在我看来，使用 magnet 链接是在（滥）用它们去描述它们本不打算描述的东西——它们起初是作为 ed2k://、freenet:// 等的替代品而生的，描述如何获取一个文件。</p><p>bitcoin 链接应该更像 mailto: 而不是 magnet:，恕我直言。</p><blockquote><p>嗯，实际上它是个 URN 处理器，而且我并没有对你所说的\"重量\"设定任何限制。</p></blockquote><p>是啊，我的错，抱歉。</p><blockquote><p>无论如何，我只是在这件事上盘算，希望不安装 freenet 也能做到——至少，读写 freenet 所需的那块代码，如果（如我所疑）不需要整个 freenet web 服务器，应该会小得多。</p></blockquote><p>如果我没记错，web 服务器基本是集成在 Freenet 自身里的。你可以用更简单的 FCP 协议与 Freenet 实例对话，但由于 Freenet 上的内容类型，愿意托管公开可访问实例的人不多，所以你只能自己运行一个。你想能做到这一点，我不眼红；只是我自己不愿意这么做。我更愿意托管一个 TOR 隐藏服务——这就是我建议用通用、全功能的 URL 作为 details 参数，而不是做成 freenet 专属的原因。</p><blockquote><p>除了你的 bitcoin 签名所提供的那个'地址'（它更像一个名字而非一个地点）之外，我不确定你说的地址是什么意思。我看不出你怎么能把不同的地址发给不同的人，除非你已经定义了一些别名。所以你是想再添一套命名系统，为 bitcoin 节点编码和翻译别名，是这个意思吗？我想这做起来不算太麻烦。</p></blockquote><p>嗯，对，我说的就是 bitcoin 签名。我叫它地址，是因为 bitcoin 客户端里就是这么写的（即 \"Change your address\"）。我确实想过应该使用不同的别名，就像现在的兑换网站那样：你会得到一个用于收币的地址（或签名，或随便叫什么），因为这个地址只给过你一个人，收款方就知道这笔付款来自你。</p><p>一套别名翻译系统当然很好，不过我觉得这事更适合用通讯录或者 <a href=\"http://mybitcoin.com\">mybitcoin.com</a> 之类的来解决。</p><blockquote><p>Message：这正是 URI 数据变得臃肿的地方。一条消息隐含地是\"有用分量\"的人际沟通，本来就无意放在 URI 自身里传递。如果接收方想传达一些文字，他们可以在自己发布的文档里做（即发布链接的那个地方）。发送方的文字可以走常规途径，因为链接会唤起 bitcoin 界面，那里提供了填写备注的栏目。接收方（收款人）有什么消息是非要传递、而无法在发布链接的文档里完成的呢？</p></blockquote><p>是的，完全正确！发送方的文字可以走常规途径。但如果我想预先指定应发送的文字呢？</p><p>这在 mailto: 链接里有对应物：你想让别人给你发邮件，还可以指定他/她该用的主题：mailto:alice@example.org?subject=Test。所以如果我在 ebay 之类的地方卖东西，我可以给买家一个 bitcoin 链接，内含消息\"Payment for Ebay auction #12345\"，这样他/她就不必自己输入，免得代码比 #12345 更晦涩时输错。</p><blockquote><p>Details：我从一开始就主张，URI 方案最好能够引用一个带有更丰富数据结构的文档，用来在必选参数传递的基本信息之上增色。我也提议过存放这些文档的候选仓库，这带来了一些可访问性问题，但若能解决，将增强 bitcoin 节点的匿名性，并摆脱对非 P2P 或层级命名空间的依赖。把一个优美的网络寻址协议，重新映射到（或者硬拗到）一个倒退的、劣等的、丑得不行的协议上——要求所有参与者采用固定位置的类比，位置一挪就丢掉全部硬连线关联——在我看来，就像给一座漂亮的石头建筑刷一层廉价的塑料漆；还是亮绿色的漆。拿 URL 当参数，恰恰是我想避免的那种糟蹋，因为 URL 不是 URN，它寻址的命名空间是层级的，最终必须落脚在一个固定 IP 上。</p></blockquote><p>抱歉，我总是错误地把 URI、URL 等术语混用，因为反正都是敲进地址栏的 %）。再次抱歉，如果这造成了混乱。</p><p>我想要的是让这些附加信息保持通用。几个例子也许能说清：</p><ul><li><a href=\"https://www.myonlineshop.com/purchaseDetails/123456\">https://www.myonlineshop.com/purchaseDetails/123456</a></li><li><a href=\"http://pastie.org/942292\">http://pastie.org/942292</a></li><li>freenet://[a ressource on freenet]/</li><li><a href=\"http://kpvz7ki2v5agwt35.onion/wiki/index.php/PurchaseDetailsHere\">http://kpvz7ki2v5agwt35.onion/wiki/index.php/PurchaseDetailsHere</a></li><li>magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C</li></ul><p>链接的创建者自己决定把附加细节放在哪里，接收者则决定自己是否迫切需要这些补充信息、以至于值得安装 Freenet/Tor/I2P。这也是把一条短消息放进链接本身的理由之一：附加信息不应是交易的关键所在。</p><blockquote><p>至于这句 <b><i>\"你还可以链接到 freenet、i2p 和 tor 以保持匿名。\"</i></b>——你显然没怎么想过这件事。如果我可以直接链接到 freenet，那我一开始就可以直接把 freenet 作为 URI 里引用的实际仓库了。</p></blockquote><p>但那不就把 Freenet 的使用变成强制的了吗？我希望这里保持更灵活。</p><p>而且，如果我要开网店，我更愿意让人们在我自己网站上查详情，而不是要求他们安装 freenet。那还可能把我店铺的声誉和 Freenet 捆在一起——鉴于 Freenet 的名声，这未必是好事。</p><blockquote><p>问题就在这里。你不能只在 freenet 上存文件，就指望任何人都能通过 URL 或 URN 在普通网站上取回它们——除非访客装有能处理该链接的客户端软件，否则这个引用毫无用处。</p></blockquote><p>是的。这也是我想同时允许普通 HTTP(S) URL 的另一个原因。如果我没理解错，你似乎想把 Freenet 变成交易的强制环节，这一点我强烈反对。</p><blockquote><p>因为 http/s 运行在层级命名空间上，而 P2P 客户端运行在非层级命名空间上，同一个参数无法同时兼顾两者地寻址。等你把身份固定到一个物理位置之后，再想匿名就有点晚了。</p></blockquote><p>并非每一笔交易都需要刀枪不入的匿名性。想想接受捐赠的开源项目，或者网店。如果你 (a) 需要比短消息参数更多的细节，并且 (b) 想要完全匿名，你只需指定一个 freenet 或 Tor 或 I2P 的 URL（或 URN？——这真让人犯迷糊 :-/）。如果你不需要额外的匿名性，就不必费劲去运行 Freenet/Tor/I2P/随便什么。</p><blockquote><p>如果我误解了你，我道歉 DataWraith，但你似乎并不领会这两种命名空间模型的差异，也不领会它们各自的优劣与负担。我仍然非常愿意考虑任何其他体系方案。我并非断然拒绝你的批评，也不是坚持我的偏好就该是默认项。我只愿无论如何做出最好的 URI 方案。依然感谢你的体谅。</p></blockquote><p>嗯，我们都在同一条船上。我只希望最终得到尽可能好的系统。:-)</p><p>谢谢你详尽的解释，以及对我的建议的耐心。</p>","zhText":"Karmicaids，感谢花时间给出如此详细的回复。\n看起来，碰巧还真有一个现成的协议，专门用来与 freenet 上存储的数据文件交互 \n\n哦，你说用 freenet 时我理解成那个意思了。用户运行 freenet，Bitcoin 通过它的控制协议与之通信。不过，运行 Freenet 需要相当多的计算机资源，尤其是带宽；仅凭这一点，我个人就不想运行 freenet 节点。这也是我希望它是可选的原因。\n我希望我没有造成这样的印象：我打算不加更多考虑、不与他人达成一致就使用 magnet 链接，或者我对它的暂时支持是基于它现有的流行度。\n\n我的印象是，你不想重复造轮子，所以流行度才起了作用——其他软件对 magnet 链接的既有接受度是个加分项。\n抱歉 DataWraith，恕我直言，我不得不反对。第一个问题是，硬盘上的文件映射到嵌套位置的层级命名空间，即域和目录。众多 P2P 网络在方法上的根本差异在于：命名空间不是层级的，其所支持的数据不是按地址引用，而是按内容的唯一性引用。无论目标是一个文件还是别的什么，它都不是由某个特定的固定地址引用，而是由其唯一内容的身份引用。相同的文件本质上是同一个身份，P2P 应用可以把多个实例用作同一事物的多条供给。magnet 的参数非常适合任何 P2P 应用。\n\n好，抱歉，看来我没把意思完全说清。我知道 magnet 链接指向的是内容，而不是层级命名空间中的某个位置。\n也许这只是思维模型的差异：对我来说，一笔 bitcoin 交易——找不到更好的词——与其说是一个东西，不如说是一个过程。在我心里，magnet 链接指向的是东西（通常是一个文件——按内容哈希或按位置），用它们去指涉一个过程，让我觉得有点别扭。Magnet 链接标识出你还得去取回的东西，而 bitcoin 交易由链接本身完整描述（尽管点击链接后你仍要说一句\"是的，发送硬币。\"）。\n在我看来，使用 magnet 链接是在（滥）用它们去描述它们本不打算描述的东西——它们起初是作为 ed2k://、freenet:// 等的替代品而生的，描述如何获取一个文件。\nbitcoin 链接应该更像 mailto: 而不是 magnet:，恕我直言。\n嗯，实际上它是个 URN 处理器，而且我并没有对你所说的\"重量\"设定任何限制。\n\n是啊，我的错，抱歉。\n无论如何，我只是在这件事上盘算，希望不安装 freenet 也能做到——至少，读写 freenet 所需的那块代码，如果（如我所疑）不需要整个 freenet web 服务器，应该会小得多。\n\n如果我没记错，web 服务器基本是集成在 Freenet 自身里的。你可以用更简单的 FCP 协议与 Freenet 实例对话，但由于 Freenet 上的内容类型，愿意托管公开可访问实例的人不多，所以你只能自己运行一个。你想能做到这一点，我不眼红；只是我自己不愿意这么做。我更愿意托管一个 TOR 隐藏服务——这就是我建议用通用、全功能的 URL 作为 details 参数，而不是做成 freenet 专属的原因。\n除了你的 bitcoin 签名所提供的那个'地址'（它更像一个名字而非一个地点）之外，我不确定你说的地址是什么意思。我看不出你怎么能把不同的地址发给不同的人，除非你已经定义了一些别名。所以你是想再添一套命名系统，为 bitcoin 节点编码和翻译别名，是这个意思吗？我想这做起来不算太麻烦。\n\n嗯，对，我说的就是 bitcoin 签名。我叫它地址，是因为 bitcoin 客户端里就是这么写的（即 \"Change your address\"）。我确实想过应该使用不同的别名，就像现在的兑换网站那样：你会得到一个用于收币的地址（或签名，或随便叫什么），因为这个地址只给过你一个人，收款方就知道这笔付款来自你。\n一套别名翻译系统当然很好，不过我觉得这事更适合用通讯录或者 mybitcoin.com 之类的来解决。\nMessage：这正是 URI 数据变得臃肿的地方。一条消息隐含地是\"有用分量\"的人际沟通，本来就无意放在 URI 自身里传递。如果接收方想传达一些文字，他们可以在自己发布的文档里做（即发布链接的那个地方）。发送方的文字可以走常规途径，因为链接会唤起 bitcoin 界面，那里提供了填写备注的栏目。接收方（收款人）有什么消息是非要传递、而无法在发布链接的文档里完成的呢？\n\n是的，完全正确！发送方的文字可以走常规途径。但如果我想预先指定应发送的文字呢？\n这在 mailto: 链接里有对应物：你想让别人给你发邮件，还可以指定他/她该用的主题：mailto:alice@example.org?subject=Test。所以如果我在 ebay 之类的地方卖东西，我可以给买家一个 bitcoin 链接，内含消息\"Payment for Ebay auction #12345\"，这样他/她就不必自己输入，免得代码比 #12345 更晦涩时输错。\nDetails：我从一开始就主张，URI 方案最好能够引用一个带有更丰富数据结构的文档，用来在必选参数传递的基本信息之上增色。我也提议过存放这些文档的候选仓库，这带来了一些可访问性问题，但若能解决，将增强 bitcoin 节点的匿名性，并摆脱对非 P2P 或层级命名空间的依赖。把一个优美的网络寻址协议，重新映射到（或者硬拗到）一个倒退的、劣等的、丑得不行的协议上——要求所有参与者采用固定位置的类比，位置一挪就丢掉全部硬连线关联——在我看来，就像给一座漂亮的石头建筑刷一层廉价的塑料漆；还是亮绿色的漆。拿 URL 当参数，恰恰是我想避免的那种糟蹋，因为 URL 不是 URN，它寻址的命名空间是层级的，最终必须落脚在一个固定 IP 上。\n\n抱歉，我总是错误地把 URI、URL 等术语混用，因为反正都是敲进地址栏的 %）。再次抱歉，如果这造成了混乱。\n我想要的是让这些附加信息保持通用。几个例子也许能说清：\nhttps://www.myonlineshop.com/purchaseDetails/123456\nhttp://pastie.org/942292\nfreenet://[a ressource on freenet]/\nhttp://kpvz7ki2v5agwt35.onion/wiki/index.php/PurchaseDetailsHere\nmagnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C\n链接的创建者自己决定把附加细节放在哪里，接收者则决定自己是否迫切需要这些补充信息、以至于值得安装 Freenet/Tor/I2P。这也是把一条短消息放进链接本身的理由之一：附加信息不应是交易的关键所在。\n至于这句 \"你还可以链接到 freenet、i2p 和 tor 以保持匿名。\"——你显然没怎么想过这件事。如果我可以直接链接到 freenet，那我一开始就可以直接把 freenet 作为 URI 里引用的实际仓库了。\n\n但那不就把 Freenet 的使用变成强制的了吗？我希望这里保持更灵活。\n而且，如果我要开网店，我更愿意让人们在我自己网站上查详情，而不是要求他们安装 freenet。那还可能把我店铺的声誉和 Freenet 捆在一起——鉴于 Freenet 的名声，这未必是好事。\n问题就在这里。你不能只在 freenet 上存文件，就指望任何人都能通过 URL 或 URN 在普通网站上取回它们——除非访客装有能处理该链接的客户端软件，否则这个引用毫无用处。\n\n是的。这也是我想同时允许普通 HTTP(S) URL 的另一个原因。如果我没理解错，你似乎想把 Freenet 变成交易的强制环节，这一点我强烈反对。\n因为 http/s 运行在层级命名空间上，而 P2P 客户端运行在非层级命名空间上，同一个参数无法同时兼顾两者地寻址。等你把身份固定到一个物理位置之后，再想匿名就有点晚了。\n\n并非每一笔交易都需要刀枪不入的匿名性。想想接受捐赠的开源项目，或者网店。如果你 (a) 需要比短消息参数更多的细节，并且 (b) 想要完全匿名，你只需指定一个 freenet 或 Tor 或 I2P 的 URL（或 URN？——这真让人犯迷糊 :-/）。如果你不需要额外的匿名性，就不必费劲去运行 Freenet/Tor/I2P/随便什么。\n如果我误解了你，我道歉 DataWraith，但你似乎并不领会这两种命名空间模型的差异，也不领会它们各自的优劣与负担。我仍然非常愿意考虑任何其他体系方案。我并非断然拒绝你的批评，也不是坚持我的偏好就该是默认项。我只愿无论如何做出最好的 URI 方案。依然感谢你的体谅。\n\n嗯，我们都在同一条船上。我只希望最终得到尽可能好的系统。:-)\n谢谢你详尽的解释，以及对我的建议的耐心。\nKarmicaids，感谢花时间给出如此详细的回复。\n看起来，碰巧还真有一个现成的协议，专门用来与 freenet 上存储的数据文件交互 \n\n哦，你说用 freenet 时我理解成那个意思了。用户运行 freenet，Bitcoin 通过它的控制协议与之通信。不过，运行 Freenet 需要相当多的计算机资源，尤其是带宽；仅凭这一点，我个人就不想运行 freenet 节点。这也是我希望它是可选的原因。\n我希望我没有造成这样的印象：我打算不加更多考虑、不与他人达成一致就使用 magnet 链接，或者我对它的暂时支持是基于它现有的流行度。\n\n我的印象是，你不想重复造轮子，所以流行度才起了作用——其他软件对 magnet 链接的既有接受度是个加分项。\n抱歉 DataWraith，恕我直言，我不得不反对。第一个问题是，硬盘上的文件映射到嵌套位置的层级命名空间，即域和目录。众多 P2P 网络在方法上的根本差异在于：命名空间不是层级的，其所支持的数据不是按地址引用，而是按内容的唯一性引用。无论目标是一个文件还是别的什么，它都不是由某个特定的固定地址引用，而是由其唯一内容的身份引用。相同的文件本质上是同一个身份，P2P 应用可以把多个实例用作同一事物的多条供给。magnet 的参数非常适合任何 P2P 应用。\n\n好，抱歉，看来我没把意思完全说清。我知道 magnet 链接指向的是内容，而不是层级命名空间中的某个位置。\n也许这只是思维模型的差异：对我来说，一笔 bitcoin 交易——找不到更好的词——与其说是一个东西，不如说是一个过程。在我心里，magnet 链接指向的是东西（通常是一个文件——按内容哈希或按位置），用它们去指涉一个过程，让我觉得有点别扭。Magnet 链接标识出你还得去取回的东西，而 bitcoin 交易由链接本身完整描述（尽管点击链接后你仍要说一句\"是的，发送硬币。\"）。\n在我看来，使用 magnet 链接是在（滥）用它们去描述它们本不打算描述的东西——它们起初是作为 ed2k://、freenet:// 等的替代品而生的，描述如何获取一个文件。\nbitcoin 链接应该更像 mailto: 而不是 magnet:，恕我直言。\n嗯，实际上它是个 URN 处理器，而且我并没有对你所说的\"重量\"设定任何限制。\n\n是啊，我的错，抱歉。\n无论如何，我只是在这件事上盘算，希望不安装 freenet 也能做到——至少，读写 freenet 所需的那块代码，如果（如我所疑）不需要整个 freenet web 服务器，应该会小得多。\n\n如果我没记错，web 服务器基本是集成在 Freenet 自身里的。你可以用更简单的 FCP 协议与 Freenet 实例对话，但由于 Freenet 上的内容类型，愿意托管公开可访问实例的人不多，所以你只能自己运行一个。你想能做到这一点，我不眼红；只是我自己不愿意这么做。我更愿意托管一个 TOR 隐藏服务——这就是我建议用通用、全功能的 URL 作为 details 参数，而不是做成 freenet 专属的原因。\n除了你的 bitcoin 签名所提供的那个'地址'（它更像一个名字而非一个地点）之外，我不确定你说的地址是什么意思。我看不出你怎么能把不同的地址发给不同的人，除非你已经定义了一些别名。所以你是想再添一套命名系统，为 bitcoin 节点编码和翻译别名，是这个意思吗？我想这做起来不算太麻烦。\n\n嗯，对，我说的就是 bitcoin 签名。我叫它地址，是因为 bitcoin 客户端里就是这么写的（即 \"Change your address\"）。我确实想过应该使用不同的别名，就像现在的兑换网站那样：你会得到一个用于收币的地址（或签名，或随便叫什么），因为这个地址只给过你一个人，收款方就知道这笔付款来自你。\n一套别名翻译系统当然很好，不过我觉得这事更适合用通讯录或者 mybitcoin.com 之类的来解决。\nMessage：这正是 URI 数据变得臃肿的地方。一条消息隐含地是\"有用分量\"的人际沟通，本来就无意放在 URI 自身里传递。如果接收方想传达一些文字，他们可以在自己发布的文档里做（即发布链接的那个地方）。发送方的文字可以走常规途径，因为链接会唤起 bitcoin 界面，那里提供了填写备注的栏目。接收方（收款人）有什么消息是非要传递、而无法在发布链接的文档里完成的呢？\n\n是的，完全正确！发送方的文字可以走常规途径。但如果我想预先指定应发送的文字呢？\n这在 mailto: 链接里有对应物：你想让别人给你发邮件，还可以指定他/她该用的主题：mailto:alice@example.org?subject=Test。所以如果我在 ebay 之类的地方卖东西，我可以给买家一个 bitcoin 链接，内含消息\"Payment for Ebay auction #12345\"，这样他/她就不必自己输入，免得代码比 #12345 更晦涩时输错。\nDetails：我从一开始就主张，URI 方案最好能够引用一个带有更丰富数据结构的文档，用来在必选参数传递的基本信息之上增色。我也提议过存放这些文档的候选仓库，这带来了一些可访问性问题，但若能解决，将增强 bitcoin 节点的匿名性，并摆脱对非 P2P 或层级命名空间的依赖。把一个优美的网络寻址协议，重新映射到（或者硬拗到）一个倒退的、劣等的、丑得不行的协议上——要求所有参与者采用固定位置的类比，位置一挪就丢掉全部硬连线关联——在我看来，就像给一座漂亮的石头建筑刷一层廉价的塑料漆；还是亮绿色的漆。拿 URL 当参数，恰恰是我想避免的那种糟蹋，因为 URL 不是 URN，它寻址的命名空间是层级的，最终必须落脚在一个固定 IP 上。\n\n抱歉，我总是错误地把 URI、URL 等术语混用，因为反正都是敲进地址栏的 %）。再次抱歉，如果这造成了混乱。\n我想要的是让这些附加信息保持通用。几个例子也许能说清：\nhttps://www.myonlineshop.com/purchaseDetails/123456\nhttp://pastie.org/942292\nfreenet://[a ressource on freenet]/\nhttp://kpvz7ki2v5agwt35.onion/wiki/index.php/PurchaseDetailsHere\nmagnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C\n链接的创建者自己决定把附加细节放在哪里，接收者则决定自己是否迫切需要这些补充信息、以至于值得安装 Freenet/Tor/I2P。这也是把一条短消息放进链接本身的理由之一：附加信息不应是交易的关键所在。\n至于这句 \"你还可以链接到 freenet、i2p 和 tor 以保持匿名。\"——你显然没怎么想过这件事。如果我可以直接链接到 freenet，那我一开始就可以直接把 freenet 作为 URI 里引用的实际仓库了。\n\n但那不就把 Freenet 的使用变成强制的了吗？我希望这里保持更灵活。\n而且，如果我要开网店，我更愿意让人们在我自己网站上查详情，而不是要求他们安装 freenet。那还可能把我店铺的声誉和 Freenet 捆在一起——鉴于 Freenet 的名声，这未必是好事。\n问题就在这里。你不能只在 freenet 上存文件，就指望任何人都能通过 URL 或 URN 在普通网站上取回它们——除非访客装有能处理该链接的客户端软件，否则这个引用毫无用处。\n\n是的。这也是我想同时允许普通 HTTP(S) URL 的另一个原因。如果我没理解错，你似乎想把 Freenet 变成交易的强制环节，这一点我强烈反对。\n因为 http/s 运行在层级命名空间上，而 P2P 客户端运行在非层级命名空间上，同一个参数无法同时兼顾两者地寻址。等你把身份固定到一个物理位置之后，再想匿名就有点晚了。\n\n并非每一笔交易都需要刀枪不入的匿名性。想想接受捐赠的开源项目，或者网店。如果你 (a) 需要比短消息参数更多的细节，并且 (b) 想要完全匿名，你只需指定一个 freenet 或 Tor 或 I2P 的 URL（或 URN？——这真让人犯迷糊 :-/）。如果你不需要额外的匿名性，就不必费劲去运行 Freenet/Tor/I2P/随便什么。\n如果我误解了你，我道歉 DataWraith，但你似乎并不领会这两种命名空间模型的差异，也不领会它们各自的优劣与负担。我仍然非常愿意考虑任何其他体系方案。我并非断然拒绝你的批评，也不是坚持我的偏好就该是默认项。我只愿无论如何做出最好的 URI 方案。依然感谢你的体谅。\n\n嗯，我们都在同一条船上。我只希望最终得到尽可能好的系统。:-)\n谢谢你详尽的解释，以及对我的建议的耐心。"},{"id":511,"sid":null,"sat":0,"tid":48,"tt":"Ummmm... where did my bitcoins go?","src":"Bitcointalk","author":"laszlo","date":"2010-05-06","ts":"2010-05-06T14:11:41Z","url":"https://bitcointalk.org/index.php?topic=125.msg1075#msg1075","zh":"<p>说真的，从纯粹主义的角度，人们应该审计代码并自己构建。</p><p>但这样会把除我们这类怪咖之外的大部分人排除在外……所以你只能信任你从可靠来源取得它。我分发 Mac OS X 二进制版本，但如果你不信任我，就不该用它。同样，我可以做一个密码管理工具或 PayPal 助手工具，把你的密码和钱发给我。我猜你总得信任某个人，除非你愿意亲自审计代码。网络本身对不合作节点有一些防护，但用户显然是诈骗的目标。这让我想起人们装在 ATM 上的读卡器……受害者以为自己在用一台可信的机器，但它已被改装来窃取信息。</p>","zhText":"说真的，从纯粹主义的角度，人们应该审计代码并自己构建。\n但这样会把除我们这类怪咖之外的大部分人排除在外……所以你只能信任你从可靠来源取得它。我分发 Mac OS X 二进制版本，但如果你不信任我，就不该用它。同样，我可以做一个密码管理工具或 PayPal 助手工具，把你的密码和钱发给我。我猜你总得信任某个人，除非你愿意亲自审计代码。网络本身对不合作节点有一些防护，但用户显然是诈骗的目标。这让我想起人们装在 ATM 上的读卡器……受害者以为自己在用一台可信的机器，但它已被改装来窃取信息。"},{"id":517,"sid":null,"sat":0,"tid":49,"tt":"A New Currency System for the World","src":"Bitcointalk","author":"hugolp","date":"2010-05-08","ts":"2010-05-08T10:38:51Z","url":"https://bitcointalk.org/index.php?topic=128.msg1082#msg1082","zh":"<p>又一个疯狂的 Paul 党人来了……</p><p>我借这个主题自我介绍一下，我是看到 RonPaulForums.org 上一篇文章的链接才开始用 bitcoin 的。之前我就知道 bitcoin，觉得是个有意思的项目，但当时看着还太年轻。在那边和 dwdollar 聊过之后，我决定试试。</p><p>Bitcoin 现在跑在我家里的 linux 服务器上（应该正在生成硬币，我只是不知道生成一枚要多久）。跑在一台 atom 330、1G 内存上，CPU 和内存都没吃满，但我遇到一个问题。我用 VNC 连接我的服务器，一跑 bitcoin 界面就变得非常迟钝，几乎没法用。停掉 bitcoin 一切恢复正常。系统是 Ubuntu desktop 10.04 amd64，用 ia32libs 和 bitcoin 0.20 tarball 里的二进制。</p>","zhText":"又一个疯狂的 Paul 党人来了……\n我借这个主题自我介绍一下，我是看到 RonPaulForums.org 上一篇文章的链接才开始用 bitcoin 的。之前我就知道 bitcoin，觉得是个有意思的项目，但当时看着还太年轻。在那边和 dwdollar 聊过之后，我决定试试。\nBitcoin 现在跑在我家里的 linux 服务器上（应该正在生成硬币，我只是不知道生成一枚要多久）。跑在一台 atom 330、1G 内存上，CPU 和内存都没吃满，但我遇到一个问题。我用 VNC 连接我的服务器，一跑 bitcoin 界面就变得非常迟钝，几乎没法用。停掉 bitcoin 一切恢复正常。系统是 Ubuntu desktop 10.04 amd64，用 ia32libs 和 bitcoin 0.20 tarball 里的二进制。"},{"id":535,"sid":null,"sat":0,"tid":51,"tt":"Could the bitcoin network be destroyed by someone generating endless bitcoin add","src":"Bitcointalk","author":"dwdollar","date":"2010-05-09","ts":"2010-05-09T18:47:08Z","url":"https://bitcointalk.org/index.php?topic=130.msg1099#msg1099","zh":"<p>如果每笔交易都生成新的比特币地址，人们可能会不小心发到旧地址上去。旧地址还在他们的交易历史里，他们也许以为它还能多次使用。只是提个醒。</p><p>不过，不小心发到一个随机的比特币地址的概率小到离谱。</p>","zhText":"如果每笔交易都生成新的比特币地址，人们可能会不小心发到旧地址上去。旧地址还在他们的交易历史里，他们也许以为它还能多次使用。只是提个醒。\n不过，不小心发到一个随机的比特币地址的概率小到离谱。"},{"id":537,"sid":null,"sat":0,"tid":52,"tt":"Exception: 9key_error error","src":"Bitcointalk","author":"bitcoin2paysafe","date":"2010-05-14","ts":"2010-05-14T18:07:50Z","url":"https://bitcointalk.org/index.php?topic=135.msg1122#msg1122","zh":"<p>今天，我收到一条错误信息：</p><p>Exception: 9key_error\nCKey::CKey(); EC:KEY_new_by_curve_name failed\nbitcoin in ThreadBitcoinMiner()</p><p>控制台：</p><p>terminate called after throwing an instance of 'key_error'\n  what():  CKey::CKey() : EC_KEY_new_by_curve_name failed\nAborted</p><p>我希望这不是缓冲区溢出。还有别人也遇到这条错误信息吗？</p><p>操作系统：linux</p>","zhText":"今天，我收到一条错误信息：\nException: 9key_error\nCKey::CKey(); EC:KEY_new_by_curve_name failed\nbitcoin in ThreadBitcoinMiner()\n控制台：\nterminate called after throwing an instance of 'key_error'\n what(): CKey::CKey() : EC_KEY_new_by_curve_name failed\nAborted\n我希望这不是缓冲区溢出。还有别人也遇到这条错误信息吗？\n操作系统：linux"},{"id":530,"sid":null,"sat":0,"tid":50,"tt":"For a website taking payments with bitcoins, better: IP or bitcoin addresses?","src":"Bitcointalk","author":"Xunie","date":"2010-05-14","ts":"2010-05-14T21:52:53Z","url":"https://bitcointalk.org/index.php?topic=129.msg1124#msg1124","zh":"<blockquote><p>其实不对，通过 IP 地址转币是没有加密的。当你向一个 IP 转币时，收款方会为这笔交易新建一个地址，让你把币转到那个地址。恶意的出口节点可以嗅探全部比特币流量，轻易截获这些交易。</p><p>所以提醒所有人：不要用 IP 地址作为收款目标，永远使用比特币地址。</p></blockquote><p>我建议在用户使用代理时禁用 IP 交易！\n以求稳妥。</p>","zhText":"其实不对，通过 IP 地址转币是没有加密的。当你向一个 IP 转币时，收款方会为这笔交易新建一个地址，让你把币转到那个地址。恶意的出口节点可以嗅探全部比特币流量，轻易截获这些交易。\n所以提醒所有人：不要用 IP 地址作为收款目标，永远使用比特币地址。\n\n我建议在用户使用代理时禁用 IP 交易！\n以求稳妥。"},{"id":536,"sid":98,"sat":1,"tid":51,"tt":"Could the bitcoin network be destroyed by someone generating endless bitcoin add","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-16","ts":"2010-05-16T21:01:44Z","url":"https://bitcointalk.org/index.php?topic=130.msg1130#msg1130","zh":"<p>生成一个新的比特币地址，只在你自己的电脑上占用一点磁盘空间（大约 500 字节）。就像生成一个新的 PGP 私钥，只是 CPU 消耗更小，因为它是 ECC。地址空间实际上无限。它不伤害任何人，所以想生成多少就生成多少。</p>","zhText":"生成一个新的比特币地址，只在你自己的电脑上占用一点磁盘空间（大约 500 字节）。就像生成一个新的 PGP 私钥，只是 CPU 消耗更小，因为它是 ECC。地址空间实际上无限。它不伤害任何人，所以想生成多少就生成多少。"},{"id":531,"sid":99,"sat":1,"tid":50,"tt":"For a website taking payments with bitcoins, better: IP or bitcoin addresses?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-16","ts":"2010-05-16T21:37:36Z","url":"https://bitcointalk.org/index.php?topic=129.msg1131#msg1131","zh":"<blockquote><p>我建议在用户使用代理时禁用 IP 交易！\n以求稳妥。</p></blockquote><p>好主意。至少也该弹一个警告对话框，说明它将连接该 IP 并以明文发送信息，给用户取消的机会。</p>","zhText":"我建议在用户使用代理时禁用 IP 交易！\n以求稳妥。\n\n好主意。至少也该弹一个警告对话框，说明它将连接该 IP 并以明文发送信息，给用户取消的机会。"},{"id":316,"sid":100,"sat":1,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-16","ts":"2010-05-16T22:37:21Z","url":"https://bitcointalk.org/index.php?topic=55.msg1132#msg1132","zh":"<blockquote><p>freenet URI 是这样的：</p><p><a href=\"http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf\">http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf</a></p></blockquote><p>瞧，我们完全可以照同样的方式做，比如：\n<a href=\"http://127.0.0.1:8330/?to=\">http://127.0.0.1:8330/?to=</a><bitcoinaddress>;amount=<amount></p><p>Bitcoin 可以像在 8332 上应答 JSON-RPC 那样，在本地回环的 8330 端口上应答，给出 HTTP 应答。</p><blockquote><p>bitcoin 链接应该更像 mailto: 而不是 magnet:，恕我直言。</p></blockquote><p>我想我们能办到。</p><p>虽然 Bitcoin 有可能在 HTTP 应答里呈现 HTML 界面、直接把事情办了，但作为用户，我会疑惑：是某个网站想骗我，还是我真的在和自己的 Bitcoin 服务器对话？</p><p>HTTP 应答可以只是一段带 JavaScript 的 HTML，等价于后退按钮，把浏览器送回原页面。然后 Bitcoin 弹出发送比特币对话框，目标比特币地址和金额已经填好。工作方式就像 mailto: 链接弹出一个已填好地址的新邮件。</p><p>127.0.0.1 回环对机器上的任何用户都可访问，没有按用户隔离，但这没关系，因为它只提供\"预填对话框字段\"的便利功能。你仍然得按发送。我们要确保发送按钮不处于选中状态，免得你正在敲空格或回车时它跳到前台。</p>","zhText":"freenet URI 是这样的：\nhttp://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf\n\n瞧，我们完全可以照同样的方式做，比如：\nhttp://127.0.0.1:8330/?to=;amount=\nBitcoin 可以像在 8332 上应答 JSON-RPC 那样，在本地回环的 8330 端口上应答，给出 HTTP 应答。\nbitcoin 链接应该更像 mailto: 而不是 magnet:，恕我直言。\n\n我想我们能办到。\n虽然 Bitcoin 有可能在 HTTP 应答里呈现 HTML 界面、直接把事情办了，但作为用户，我会疑惑：是某个网站想骗我，还是我真的在和自己的 Bitcoin 服务器对话？\nHTTP 应答可以只是一段带 JavaScript 的 HTML，等价于后退按钮，把浏览器送回原页面。然后 Bitcoin 弹出发送比特币对话框，目标比特币地址和金额已经填好。工作方式就像 mailto: 链接弹出一个已填好地址的新邮件。\n127.0.0.1 回环对机器上的任何用户都可访问，没有按用户隔离，但这没关系，因为它只提供\"预填对话框字段\"的便利功能。你仍然得按发送。我们要确保发送按钮不处于选中状态，免得你正在敲空格或回车时它跳到前台。"},{"id":538,"sid":101,"sat":1,"tid":52,"tt":"Exception: 9key_error error","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-16","ts":"2010-05-16T22:53:59Z","url":"https://bitcointalk.org/index.php?topic=135.msg1133#msg1133","zh":"<p>是每次运行都发生，还是在某个随机时刻只发生过一次？</p><p>我以前从没见过它失败。那是一次对 OpenSSL 的调用，我以为它永远不会失败，但我还是在那里放了个错误检查以防万一。我想不出它会怎么失败。也许是内存耗尽。</p><p>代码是：</p><p>key.h:\n    EC_KEY* pkey;</p><pre><code>pkey = EC_KEY_new_by_curve_name(NID_secp256k1);\n        if (pkey == NULL)\n            throw key_error(\"CKey::CKey() : EC_KEY_new_by_curve_name failed\");</code></pre><p>NID_secp256k1 是个常量。</p>","zhText":"是每次运行都发生，还是在某个随机时刻只发生过一次？\n我以前从没见过它失败。那是一次对 OpenSSL 的调用，我以为它永远不会失败，但我还是在那里放了个错误检查以防万一。我想不出它会怎么失败。也许是内存耗尽。\n代码是：\nkey.h:\n EC_KEY* pkey;\npkey = EC_KEY_new_by_curve_name(NID_secp256k1);\n if (pkey == NULL)\n throw key_error(\"CKey::CKey() : EC_KEY_new_by_curve_name failed\");NID_secp256k1 是个常量。"},{"id":495,"sid":102,"sat":1,"tid":46,"tt":"removing bitcoin addresses","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-16","ts":"2010-05-16T23:34:40Z","url":"https://bitcointalk.org/index.php?topic=101.msg1134#msg1134","zh":"<p>SheriffWoody:\n你生成的比特币地址会永久保留。必须保留一个比特币地址，才能证明发往它的东西归你所有。如果你能删除一个比特币地址而有人向它发了款，钱就丢了。它们每个只有大约 500 字节。</p><p>sirius-m:\n上千个自有地址完全不成问题。如果你已经生成了 50000 BTC，那你其实已经有 1000 个自有地址了，每生成 50 个就有一个。它们是隐藏的，不在 UI 里显示。</p><p>加一小段代码、给同一个 IP 持续返回同一个地址，是个好主意。我是这样用 C++ 做的：在对方使用之前，一直给同一个 IP 返回同一个密钥（即比特币地址）：</p><p>// Keep giving the same key to the same ip until they use it\n    if (!mapReuseKey.count(pfrom->addr.ip))\n        mapReuseKey[pfrom->addr.ip] = GenerateNewKey();\n    ...sends the key mapReuseKey[pfrom->addr.ip]</p><p>……之后……</p><p>// Received something with this key\n    mapReuseKey.erase(pfrom->addr.ip);</p><p>如果不方便知道何时收到过款，就每 20 分钟清一次缓存的密钥。</p><p>我想给 getnewaddress 加一个参数：若该地址在多少天内无收款就过期。</p>","zhText":"SheriffWoody:\n你生成的比特币地址会永久保留。必须保留一个比特币地址，才能证明发往它的东西归你所有。如果你能删除一个比特币地址而有人向它发了款，钱就丢了。它们每个只有大约 500 字节。\nsirius-m:\n上千个自有地址完全不成问题。如果你已经生成了 50000 BTC，那你其实已经有 1000 个自有地址了，每生成 50 个就有一个。它们是隐藏的，不在 UI 里显示。\n加一小段代码、给同一个 IP 持续返回同一个地址，是个好主意。我是这样用 C++ 做的：在对方使用之前，一直给同一个 IP 返回同一个密钥（即比特币地址）：\n// Keep giving the same key to the same ip until they use it\n if (!mapReuseKey.count(pfrom->addr.ip))\n mapReuseKey[pfrom->addr.ip] = GenerateNewKey();\n ...sends the key mapReuseKey[pfrom->addr.ip]\n……之后……\n// Received something with this key\n mapReuseKey.erase(pfrom->addr.ip);\n如果不方便知道何时收到过款，就每 20 分钟清一次缓存的密钥。\n我想给 getnewaddress 加一个参数：若该地址在多少天内无收款就过期。"},{"id":305,"sid":103,"sat":1,"tid":29,"tt":"Setting up multiple bitcoin machines behind NAT","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-16","ts":"2010-05-16T23:56:03Z","url":"https://bitcointalk.org/index.php?topic=54.msg1135#msg1135","zh":"<p>目前，它总是假定入站端口是 8333，所以就算你从别的端口号转发的，它也会让其他 bitcoin 节点去连 router:8333。</p><p>我不急着修这个，因为我想不出多个入站连接端口能带来什么好处。你提供了一个入站端口，就已经为网络尽了一份力。同一个人开两个入站端口，对冗余毫无帮助。</p><p>如果你有很多台计算机，更合理的做法是在大部分机器上用 -connect 开关在本地互联。</p>","zhText":"目前，它总是假定入站端口是 8333，所以就算你从别的端口号转发的，它也会让其他 bitcoin 节点去连 router:8333。\n我不急着修这个，因为我想不出多个入站连接端口能带来什么好处。你提供了一个入站端口，就已经为网络尽了一份力。同一个人开两个入站端口，对冗余毫无帮助。\n如果你有很多台计算机，更合理的做法是在大部分机器上用 -connect 开关在本地互联。"},{"id":502,"sid":104,"sat":1,"tid":47,"tt":"Is there a way to automate bitcoin payments for a website?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-18","ts":"2010-05-18T02:58:11Z","url":"https://bitcointalk.org/index.php?topic=112.msg1143#msg1143","zh":"<p>回得有点晚，但万一别人也遇到同样的问题。编译输出有 2 条警告（各长达 20 行）和 2 个链接错误。错误是：</p><blockquote><p>obj/nogui/init.o(.gnu.linkonce.t._ZNK13wxArrayString4ItemEm+0x13): In function `wxArrayString::Item(unsigned long) const':\n/usr/local/include/wx-2.9/wx/buffer.h:42: undefined reference to `wxTheAssertHandler'</p><p>obj/nogui/init.o(.gnu.linkonce.t._ZNK13wxArrayString4ItemEm+0x45): In function `wxArrayString::Item(unsigned long) const':\n/usr/src/bitcoin/trunk/uint256.h:526: undefined reference to `wxOnAssert(char const*, int, char const*, char const*, wchar_t const*)'</p></blockquote><p>那多半是因为换用了 wxWidgets 的 release 构建而非 debug。他们正走向只保留 debug 构建、抛弃 release 构建，所以他们大概不在乎自己的 release 构建引用了不存在的断言东西而坏掉。debug 构建没什么可怕的，完全适合发布。</p><p>bitcoind 以守护进程方式运行，可以用命令行或 JSON-RPC 控制。</p><p>感谢 madhatter 和 generica 详细写出 freebsd 上的构建说明。</p>","zhText":"回得有点晚，但万一别人也遇到同样的问题。编译输出有 2 条警告（各长达 20 行）和 2 个链接错误。错误是：\nobj/nogui/init.o(.gnu.linkonce.t._ZNK13wxArrayString4ItemEm+0x13): In function `wxArrayString::Item(unsigned long) const':\n/usr/local/include/wx-2.9/wx/buffer.h:42: undefined reference to `wxTheAssertHandler'\nobj/nogui/init.o(.gnu.linkonce.t._ZNK13wxArrayString4ItemEm+0x45): In function `wxArrayString::Item(unsigned long) const':\n/usr/src/bitcoin/trunk/uint256.h:526: undefined reference to `wxOnAssert(char const*, int, char const*, char const*, wchar_t const*)'\n\n那多半是因为换用了 wxWidgets 的 release 构建而非 debug。他们正走向只保留 debug 构建、抛弃 release 构建，所以他们大概不在乎自己的 release 构建引用了不存在的断言东西而坏掉。debug 构建没什么可怕的，完全适合发布。\nbitcoind 以守护进程方式运行，可以用命令行或 JSON-RPC 控制。\n感谢 madhatter 和 generica 详细写出 freebsd 上的构建说明。"},{"id":512,"sid":105,"sat":1,"tid":48,"tt":"Ummmm... where did my bitcoins go?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-18","ts":"2010-05-18T20:06:46Z","url":"https://bitcointalk.org/index.php?topic=125.msg1149#msg1149","zh":"<p>耗时的其实不是下载，而是下载时验证所有区块里的全部签名。</p><p>初始区块下载通常要花多久？中途会变慢，还是全程速度差不多？</p><p>我想过对链条的大部分做更粗略的检查、只认真验证最后几千个区块。可行，但工作量大，而且还有许多优先级更高的事要做。</p><p>简化支付验证（SPV）是为轻量级纯客户端用户准备的：他们只做交易、不生成、不参与节点网络。他们不需要下载区块，只需下载哈希链——目前大约 2MB，验证极快（验证整条链不到一秒）。如果网络变得非常大，比如超过 100,000 个节点，我们就用这个让普通用户不必成为完整节点也能交易。到那个阶段，大多数用户应该开始运行纯客户端软件，只有专业服务器农场继续运行完整网络节点，有点像 usenet 网络的整合方式。</p><p>SPV 尚未实现，也要到很远的将来才会实现，但当前的所有实现都是围绕支持它而设计的。</p><p>与此同时，<a href=\"http://vekja.net\">vekja.net</a> 和 <a href=\"http://www.mybitcoin.com\">www.mybitcoin.com</a> 这类站点一直在试验基于账户的网站。你在网站上创建账户，把比特币存在那里的账户里，转入转出。在网站注册账户比安装、学习使用软件容易得多，对大多数人也是更熟悉的方式。唯一的缺点是你必须信任该站点，但对零钱数额的微支付和杂项开支来说这没问题。这是很好的入门方式，等金额大了再升级到真正的 bitcoin 软件。</p>","zhText":"耗时的其实不是下载，而是下载时验证所有区块里的全部签名。\n初始区块下载通常要花多久？中途会变慢，还是全程速度差不多？\n我想过对链条的大部分做更粗略的检查、只认真验证最后几千个区块。可行，但工作量大，而且还有许多优先级更高的事要做。\n简化支付验证（SPV）是为轻量级纯客户端用户准备的：他们只做交易、不生成、不参与节点网络。他们不需要下载区块，只需下载哈希链——目前大约 2MB，验证极快（验证整条链不到一秒）。如果网络变得非常大，比如超过 100,000 个节点，我们就用这个让普通用户不必成为完整节点也能交易。到那个阶段，大多数用户应该开始运行纯客户端软件，只有专业服务器农场继续运行完整网络节点，有点像 usenet 网络的整合方式。\nSPV 尚未实现，也要到很远的将来才会实现，但当前的所有实现都是围绕支持它而设计的。\n与此同时，vekja.net 和 www.mybitcoin.com 这类站点一直在试验基于账户的网站。你在网站上创建账户，把比特币存在那里的账户里，转入转出。在网站注册账户比安装、学习使用软件容易得多，对大多数人也是更熟悉的方式。唯一的缺点是你必须信任该站点，但对零钱数额的微支付和杂项开支来说这没问题。这是很好的入门方式，等金额大了再升级到真正的 bitcoin 软件。"},{"id":163,"sid":null,"sat":0,"tid":19,"tt":"We accept Bitcoins [moved to bitcoin.it/wiki/Trade]","src":"Bitcointalk","author":"D҉ataWraith","date":"2010-05-19","ts":"2010-05-19T19:52:42Z","url":"https://bitcointalk.org/index.php?topic=30.msg1161#msg1161","zh":"<p>容我插一句，问一下为什么会这样？在我看来，如果 Bitcoin 用公钥密码学来转移硬币的所有权，那么加入一条只有收款方可读的短消息应该是轻而易举的事。</p>","zhText":"容我插一句，问一下为什么会这样？在我看来，如果 Bitcoin 用公钥密码学来转移硬币的所有权，那么加入一条只有收款方可读的短消息应该是轻而易举的事。"},{"id":165,"sid":null,"sat":0,"tid":19,"tt":"We accept Bitcoins [moved to bitcoin.it/wiki/Trade]","src":"Bitcointalk","author":"laszlo","date":"2010-05-20","ts":"2010-05-20T02:41:51Z","url":"https://bitcointalk.org/index.php?topic=30.msg1164#msg1164","zh":"<p>你想创建多少新地址都行……大多数人现在的做法是：为用户生成一个新地址并显示给他，付款到达该地址后记入用户账上。你可以干脆为每笔交易生成一个新地址，实质上就像一个交易 ID。Link2VOIP 已经全自动地这么做了，其他人也有，用的就是内建的 JSON-RPC 功能。</p><p>关于附带消息的其他问题，得请 Satoshi 来回应了……</p>","zhText":"你想创建多少新地址都行……大多数人现在的做法是：为用户生成一个新地址并显示给他，付款到达该地址后记入用户账上。你可以干脆为每笔交易生成一个新地址，实质上就像一个交易 ID。Link2VOIP 已经全自动地这么做了，其他人也有，用的就是内建的 JSON-RPC 功能。\n关于附带消息的其他问题，得请 Satoshi 来回应了……"},{"id":540,"sid":null,"sat":0,"tid":53,"tt":"Odd amount of generated coins","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-05-20","ts":"2010-05-20T21:03:55Z","url":"https://bitcointalk.org/index.php?topic=141.msg1168#msg1168","zh":"<p>在内部，比特币被打包成 50.00 一份或任何经网络发出的数额。比特币每次发送通常都要重新打包。如果某一非常大量的比特币包需要重新打包，发送方就要付一笔极小的费用。这笔费用付给验证这次大规模重新打包的比特币客户端（此处即你的客户端）。这不是一个广为人知的行为，我希望未来版本会在收取此类费用前显示警告或确认。</p><p>某处有一个帖子有更具体的细节。我会找几分钟，碰巧找到就编辑这个帖子。一如既往，开源的源码会揭示确切行为。我没研究过代码，我对该行为的描述基于我不争气的记忆，所以未必完全正确。</p><p>编辑：<a href=\"http://bitcointalk.org/index.php?topic=48.msg327#msg327\">这就是我提到的那个解释</a>。看来如果超过 500 份比特币包被重新打包，大约会收 0.002% 的费用。所以在那十分钟里，一个或多个用户各自重新打包了 500 份比特币包，总计约 132,000 枚比特币。</p><p>既然费用由发送方支付，我想知道当一个人发走全部比特币时会发生什么。我预期，如果比特币不够支付费用，无法支付的那部分费用金额会从付款中扣除。如果不是这样，那么在发送大额付款之前先把全部硬币发给自己，就能避开费用。</p><blockquote><p>超限交易加一笔小额费用仍可发出。</p></blockquote><p>这听起来就像：如果钱不够付费用，付款就无法成功发出。</p>","zhText":"在内部，比特币被打包成 50.00 一份或任何经网络发出的数额。比特币每次发送通常都要重新打包。如果某一非常大量的比特币包需要重新打包，发送方就要付一笔极小的费用。这笔费用付给验证这次大规模重新打包的比特币客户端（此处即你的客户端）。这不是一个广为人知的行为，我希望未来版本会在收取此类费用前显示警告或确认。\n某处有一个帖子有更具体的细节。我会找几分钟，碰巧找到就编辑这个帖子。一如既往，开源的源码会揭示确切行为。我没研究过代码，我对该行为的描述基于我不争气的记忆，所以未必完全正确。\n编辑：这就是我提到的那个解释。看来如果超过 500 份比特币包被重新打包，大约会收 0.002% 的费用。所以在那十分钟里，一个或多个用户各自重新打包了 500 份比特币包，总计约 132,000 枚比特币。\n既然费用由发送方支付，我想知道当一个人发走全部比特币时会发生什么。我预期，如果比特币不够支付费用，无法支付的那部分费用金额会从付款中扣除。如果不是这样，那么在发送大额付款之前先把全部硬币发给自己，就能避开费用。\n超限交易加一笔小额费用仍可发出。\n\n这听起来就像：如果钱不够付费用，付款就无法成功发出。"},{"id":166,"sid":106,"sat":1,"tid":19,"tt":"We accept Bitcoins [moved to bitcoin.it/wiki/Trade]","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-20","ts":"2010-05-20T21:43:42Z","url":"https://bitcointalk.org/index.php?topic=30.msg1169#msg1169","zh":"<blockquote><p>容我插一句，问一下为什么会这样？在我看来，如果 Bitcoin 用公钥密码学来转移硬币的所有权，那么加入一条只有收款方可读的短消息应该是轻而易举的事。</p></blockquote><p>差一点，但并不对。Bitcoin 用的是 EC-DSA，它只能做数字签名，不能加密。RSA 两者皆能，但我没用它，因为它大出一个数量级，会不切实际。</p>","zhText":"容我插一句，问一下为什么会这样？在我看来，如果 Bitcoin 用公钥密码学来转移硬币的所有权，那么加入一条只有收款方可读的短消息应该是轻而易举的事。\n\n差一点，但并不对。Bitcoin 用的是 EC-DSA，它只能做数字签名，不能加密。RSA 两者皆能，但我没用它，因为它大出一个数量级，会不切实际。"},{"id":542,"sid":null,"sat":0,"tid":54,"tt":"CLI bitcoin generation","src":"Bitcointalk","author":"molybdenum","date":"2010-05-22","ts":"2010-05-22T18:44:20Z","url":"https://bitcointalk.org/index.php?topic=145.msg1194#msg1194","zh":"<p>我正在摆弄一个简单的 web 界面，用于简单的比特币使用（比全套 wx/GTK GUI 更轻、更少状态），但我没找到任何办法查看生成中区块的验证进度……我见过我的余额跳涨 50，但它当然不会出现在 getallreceived 里。</p><p>对一台无头的硬币生成机来说，能立刻看到我的状态就好了，或者至少能知道我是有 30 个区块在等待确认，还是在争取第一个……如果它是纯自动化的、只是核对并转发余额，那倒不是问题。</p><p>另外，在 GUI 客户端里，交易一经看到就会显示，而 getallreceived 只在一个区块过去后才显示交易……但余额却立刻跳涨相应的数额。</p><p>我能想象某个紧张的可怜客户来回踱步、担心他的付款没能通过，而那本来大可不必。虽然这*可能*被用来作弊——如果一台恶意机器恰好生成了中奖区块并把自己的付款排除在外——但即便需要一个\"确认数仍为 0 时不要接受交易\"的警告标签，能有一个即时的\"事情正在发生\"的提示仍然很好……也许加一个单独的函数，包含 0 确认交易？或者一个可选参数指定该交易之后的最小区块数（getallreceived 1 为当前行为，或直接 getallreceived，getallreceived 5 给偏执狂，getallreceived 0 为即时确认）？</p>","zhText":"我正在摆弄一个简单的 web 界面，用于简单的比特币使用（比全套 wx/GTK GUI 更轻、更少状态），但我没找到任何办法查看生成中区块的验证进度……我见过我的余额跳涨 50，但它当然不会出现在 getallreceived 里。\n对一台无头的硬币生成机来说，能立刻看到我的状态就好了，或者至少能知道我是有 30 个区块在等待确认，还是在争取第一个……如果它是纯自动化的、只是核对并转发余额，那倒不是问题。\n另外，在 GUI 客户端里，交易一经看到就会显示，而 getallreceived 只在一个区块过去后才显示交易……但余额却立刻跳涨相应的数额。\n我能想象某个紧张的可怜客户来回踱步、担心他的付款没能通过，而那本来大可不必。虽然这*可能*被用来作弊——如果一台恶意机器恰好生成了中奖区块并把自己的付款排除在外——但即便需要一个\"确认数仍为 0 时不要接受交易\"的警告标签，能有一个即时的\"事情正在发生\"的提示仍然很好……也许加一个单独的函数，包含 0 确认交易？或者一个可选参数指定该交易之后的最小区块数（getallreceived 1 为当前行为，或直接 getallreceived，getallreceived 5 给偏执狂，getallreceived 0 为即时确认）？"},{"id":544,"sid":null,"sat":0,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-05-23","ts":"2010-05-23T16:28:12Z","url":"https://bitcointalk.org/index.php?topic=149.msg1203#msg1203","zh":"<p>Bitcoin 在 Ubuntu 的新默认主题下很难看。似乎有一部分（但不是全部）主题设置被应用了。未选中的文件菜单应该是浅色文字配深色背景，但它错误地变成了浅色文字配浅色背景。两者太接近，在我的显示器上根本读不清。应该在下一个稳定版发布前修掉。</p>","zhText":"Bitcoin 在 Ubuntu 的新默认主题下很难看。似乎有一部分（但不是全部）主题设置被应用了。未选中的文件菜单应该是浅色文字配深色背景，但它错误地变成了浅色文字配浅色背景。两者太接近，在我的显示器上根本读不清。应该在下一个稳定版发布前修掉。"},{"id":656,"sid":null,"sat":0,"tid":57,"tt":"Share database blocks ?","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-05-25","ts":"2010-05-25T20:17:50Z","url":"https://bitcointalk.org/index.php?topic=153.msg1235#msg1235","zh":"<p>虽然我不熟悉用 C++ 实现该算法的细节，但我熟悉验证在总体上如何运作。虽然算法必须重写，但同时向两个方向验证区块确实应该可行。每个区块都包含前一个区块的哈希，但第一个区块包含的是创世哈希，不是任何前序区块的哈希。bitcoins 首次启动时，它可以把一个较新的哈希——比如一天前的哈希——当作临时创世哈希，快速验证到最新区块为止的约 144 个区块，然后继续验证并可选地生成新哈希。另一个线程抓取一个更早的哈希——比如两天前的哈希——把它当作新的临时创世哈希，快速验证约 144 个区块，并核对其最后一个哈希与前一个创世哈希匹配。第二个线程继续向前验证，直到抵达真正的创世区块——我记得它定义在 Bitcoin 自身之内。可以看到，区块始终在向前验证，只是起点不断前推，直到抵达真正的开端。甚至可以有第三个线程从真正的创世哈希出发验证区块，让它们在中间会合。这三个线程可以归组进另一个线程，对从其他 Bitcoin 对端听说的每条不同区块链各运行一遍。如果不止一条链被验证为真，Bitcoin 就计算并比较生成各链所需的总算力，只保留最强的链。随口说一个计算最强链的简单办法：找出各哈希数值的倒数之和最大的那条链。</p>","zhText":"虽然我不熟悉用 C++ 实现该算法的细节，但我熟悉验证在总体上如何运作。虽然算法必须重写，但同时向两个方向验证区块确实应该可行。每个区块都包含前一个区块的哈希，但第一个区块包含的是创世哈希，不是任何前序区块的哈希。bitcoins 首次启动时，它可以把一个较新的哈希——比如一天前的哈希——当作临时创世哈希，快速验证到最新区块为止的约 144 个区块，然后继续验证并可选地生成新哈希。另一个线程抓取一个更早的哈希——比如两天前的哈希——把它当作新的临时创世哈希，快速验证约 144 个区块，并核对其最后一个哈希与前一个创世哈希匹配。第二个线程继续向前验证，直到抵达真正的创世区块——我记得它定义在 Bitcoin 自身之内。可以看到，区块始终在向前验证，只是起点不断前推，直到抵达真正的开端。甚至可以有第三个线程从真正的创世哈希出发验证区块，让它们在中间会合。这三个线程可以归组进另一个线程，对从其他 Bitcoin 对端听说的每条不同区块链各运行一遍。如果不止一条链被验证为真，Bitcoin 就计算并比较生成各链所需的总算力，只保留最强的链。随口说一个计算最强链的简单办法：找出各哈希数值的倒数之和最大的那条链。"},{"id":567,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"D҉ataWraith","date":"2010-05-25","ts":"2010-05-25T21:15:52Z","url":"https://bitcointalk.org/index.php?topic=151.msg1239#msg1239","zh":"<p>我的荣幸。</p><p>SmokeTooMuch 提到的问题（谢谢！）我已在附件版本里修掉。FAQ 的翻译也应该快好了（初稿已完成）。</p><p>我们也许还该更新那些数字。尽管 FAQ 明确写着它成文于 2009 年 10 月，但声称每天生成 500 枚比特币是可达成的数量，可能会让人失望。</p>","zhText":"我的荣幸。\nSmokeTooMuch 提到的问题（谢谢！）我已在附件版本里修掉。FAQ 的翻译也应该快好了（初稿已完成）。\n我们也许还该更新那些数字。尽管 FAQ 明确写着它成文于 2009 年 10 月，但声称每天生成 500 枚比特币是可达成的数量，可能会让人失望。"},{"id":661,"sid":null,"sat":0,"tid":58,"tt":"Tracing a coin's lineage","src":"Bitcointalk","author":"Xunie","date":"2010-05-26","ts":"2010-05-26T00:50:04Z","url":"https://bitcointalk.org/index.php?topic=154.msg1242#msg1242","zh":"<p>我们能不能强制用户用新地址收款？每次收到付款，就在地址栏显示另一个比特币地址。（只针对经比特币地址的交易，当然不包括 IP——那本来就没用，对吧？）\n实际密钥仍然保留，确保用户仍能收到发往同一地址的付款。（我们想尽量减少\"丢失\"的比特币，对吧？）</p><p>这引出几个问题：</p><ul><li>技术上可行吗？（大概可以。）</li><li>强加给用户是不好的吗？（大概是的。）</li><li>该实现这样的功能吗？（我不知道，除非别无选择，否则我不会——半吊子的防御也比没有强！）</li></ul><p>那么，对付\"硬币血统\"追踪还有别的办法吗？</p>","zhText":"我们能不能强制用户用新地址收款？每次收到付款，就在地址栏显示另一个比特币地址。（只针对经比特币地址的交易，当然不包括 IP——那本来就没用，对吧？）\n实际密钥仍然保留，确保用户仍能收到发往同一地址的付款。（我们想尽量减少\"丢失\"的比特币，对吧？）\n这引出几个问题：\n技术上可行吗？（大概可以。）\n强加给用户是不好的吗？（大概是的。）\n该实现这样的功能吗？（我不知道，除非别无选择，否则我不会——半吊子的防御也比没有强！）\n那么，对付\"硬币血统\"追踪还有别的办法吗？"},{"id":662,"sid":null,"sat":0,"tid":58,"tt":"Tracing a coin's lineage","src":"Bitcointalk","author":"theymos","date":"2010-05-26","ts":"2010-05-26T03:39:50Z","url":"https://bitcointalk.org/index.php?topic=154.msg1244#msg1244","zh":"<p>BitCoin 可以在随机的时间把随机的一些硬币自动发到一个新地址。这会让攻击者掌握硬币血统变得毫无用处，因为这些新地址中的任何一个都可能是真人。</p>","zhText":"BitCoin 可以在随机的时间把随机的一些硬币自动发到一个新地址。这会让攻击者掌握硬币血统变得毫无用处，因为这些新地址中的任何一个都可能是真人。"},{"id":664,"sid":107,"sat":1,"tid":59,"tt":"JSON-RPC programming tips using labels","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-26","ts":"2010-05-26T18:27:25Z","url":"https://bitcointalk.org/index.php?topic=157.msg1252#msg1252","zh":"<p>我加了几个与标签相关的函数，帮助管理每个用户的多个地址。新增或更名的函数：\n getreceivedbyaddress -- 单个地址收到的金额\n getreceivedbylabel -- 带此标签的所有地址收到的金额\n listreceivedbyaddress -- 列出地址及其收到的金额\n listreceivedbylabel -- 列出标签及其收到的金额\n setlabel -- 为完整性补充的其他标签函数\n getlabel\n getaddressesbylabel</p><p>为保持一致，我把 getamountreceived 更名为 getreceivedbyaddress、getallreceived 更名为 listreceivedbyaddress。旧名字仍在，以免破坏现有代码，但已弃用。</p><p>思路是：只要你在调用 getnewaddress 时提供用户名，就能用 \"bylabel\" 函数取得该用户在所有地址上的收款总额。你可以随意更换他的地址，不必操心追踪他所有旧地址。</p><p>自动更换用户收款地址的好办法：就在显示他当前地址之前，检查它是否收到过任何东西，如果有就换成新地址：</p><p>// Get a new address whenever the current one has received anything\nif (strAddr == \"\" || getreceivedbyaddress(strAddr) > 0)\n   strAddr = getnewaddress(strUsername); // Label the address with username\nDisplay(strAddr); // Display their current receiving address</p><p>// Get total received by all the user's addresses\ngetreceivedbylabel(strUsername, 0) // unconfirmed\ngetreceivedbylabel(strUsername, 1) // available balance</p><p>如果只是取某个特定用户的余额，比如响应那个用户的页面请求，用 getreceivedbylabel；如果要遍历所有用户，最好用 listreceivedbylabel 拿到完整列表再对照结果扫描。用 getreceivedbylabel 扫描用户是 n 的平方，用 listreceivedbylabel 是 n-log-n（或 n 线性）。</p><p>其实只有当你为了\"一收到钱就自发采取行动\"而轮询、而不是用户打开网页看到余额后告诉你怎么处理时，才真正需要扫描全部用户。没必要轮询得太频繁。如果你要求 1 个确认，反正平均要 10 分钟，每几分钟轮询一次以上毫无意义。</p><p>如果你卖的是数字商品和服务——有人免费蹭到也没多大损失、也无法转卖牟利——我认为接受 0 确认没问题。</p><p>基本上只有卖黄金或货币时才需要多个确认。</p>","zhText":"我加了几个与标签相关的函数，帮助管理每个用户的多个地址。新增或更名的函数：\n getreceivedbyaddress -- 单个地址收到的金额\n getreceivedbylabel -- 带此标签的所有地址收到的金额\n listreceivedbyaddress -- 列出地址及其收到的金额\n listreceivedbylabel -- 列出标签及其收到的金额\n setlabel -- 为完整性补充的其他标签函数\n getlabel\n getaddressesbylabel\n为保持一致，我把 getamountreceived 更名为 getreceivedbyaddress、getallreceived 更名为 listreceivedbyaddress。旧名字仍在，以免破坏现有代码，但已弃用。\n思路是：只要你在调用 getnewaddress 时提供用户名，就能用 \"bylabel\" 函数取得该用户在所有地址上的收款总额。你可以随意更换他的地址，不必操心追踪他所有旧地址。\n自动更换用户收款地址的好办法：就在显示他当前地址之前，检查它是否收到过任何东西，如果有就换成新地址：\n// Get a new address whenever the current one has received anything\nif (strAddr == \"\" || getreceivedbyaddress(strAddr) > 0)\n strAddr = getnewaddress(strUsername); // Label the address with username\nDisplay(strAddr); // Display their current receiving address\n// Get total received by all the user's addresses\ngetreceivedbylabel(strUsername, 0) // unconfirmed\ngetreceivedbylabel(strUsername, 1) // available balance\n如果只是取某个特定用户的余额，比如响应那个用户的页面请求，用 getreceivedbylabel；如果要遍历所有用户，最好用 listreceivedbylabel 拿到完整列表再对照结果扫描。用 getreceivedbylabel 扫描用户是 n 的平方，用 listreceivedbylabel 是 n-log-n（或 n 线性）。\n其实只有当你为了\"一收到钱就自发采取行动\"而轮询、而不是用户打开网页看到余额后告诉你怎么处理时，才真正需要扫描全部用户。没必要轮询得太频繁。如果你要求 1 个确认，反正平均要 10 分钟，每几分钟轮询一次以上毫无意义。\n如果你卖的是数字商品和服务——有人免费蹭到也没多大损失、也无法转卖牟利——我认为接受 0 确认没问题。\n基本上只有卖黄金或货币时才需要多个确认。"},{"id":663,"sid":108,"sat":1,"tid":58,"tt":"Tracing a coin's lineage","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-26","ts":"2010-05-26T18:51:04Z","url":"https://bitcointalk.org/index.php?topic=154.msg1254#msg1254","zh":"<blockquote><p>我们能不能强制用户用新地址收款？每次收到付款，就在地址栏显示另一个比特币地址。（只针对经比特币地址的交易，当然不包括 IP——那本来就没用，对吧？）\n实际密钥仍然保留，确保用户仍能收到发往同一地址的付款。</p></blockquote><p>这在我的清单上。我很快会让\"你的比特币地址：\"窗口在显示的地址一旦收到任何东西时自动更换。</p><p>我也向 web 应用的实现者推荐这个做法。我刚贴了一些示例代码，展示一种建议的实现方式。</p><p>0.2.4 之后的 SVN 版本在地址栏旁边已经有 \"New...\" 按钮了，鼓励大家手动更换。</p><p>@theymos：退一万步说，将来我们还可以退回那个解决方案。</p>","zhText":"我们能不能强制用户用新地址收款？每次收到付款，就在地址栏显示另一个比特币地址。（只针对经比特币地址的交易，当然不包括 IP——那本来就没用，对吧？）\n实际密钥仍然保留，确保用户仍能收到发往同一地址的付款。\n\n这在我的清单上。我很快会让\"你的比特币地址：\"窗口在显示的地址一旦收到任何东西时自动更换。\n我也向 web 应用的实现者推荐这个做法。我刚贴了一些示例代码，展示一种建议的实现方式。\n0.2.4 之后的 SVN 版本在地址栏旁边已经有 \"New...\" 按钮了，鼓励大家手动更换。\n@theymos：退一万步说，将来我们还可以退回那个解决方案。"},{"id":543,"sid":109,"sat":1,"tid":54,"tt":"CLI bitcoin generation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-26","ts":"2010-05-26T20:09:34Z","url":"https://bitcointalk.org/index.php?topic=145.msg1256#msg1256","zh":"<blockquote><p>或者一个可选参数指定该交易之后的最小区块数（getallreceived 1 为当前行为，或直接 getallreceived，getallreceived 5 给偏执狂，getallreceived 0 为即时确认）？</p></blockquote><p>是的，实际上它就是这样。getallreceived 0 就能满足你的要求。（现在它已更名为 listreceivedbyaddress 0）默认是 1 个确认，但我认为实际上大多数数字商品和服务可以 0 确认。如你所说，如果你需要多于 0 个确认，可以显示两个数字：未确认余额和可用余额，这样他们立刻就能看到交易已经通过。</p><p>listreceivedbyaddress [minconf=1] [includeempty=false]\n[minconf] 是款项被计入所需的最少确认数。\n[includeempty] 是否包含尚未收到任何付款的地址。\n返回一个对象数组，包含：\n  \"address\" : 接收地址\n  \"label\" : 接收地址的标签\n  \"amount\" : 该地址收到的总金额\n  \"confirmations\" : 所含最近一笔交易的确认数</p><p>或者，如果你用用户名给地址贴标签，就用 listreceivedbylabel。</p><p>到目前为止，我集中精力于面向 web 商家的函数，无头硬币生成机的远程管理功能还没怎么顾上。</p>","zhText":"或者一个可选参数指定该交易之后的最小区块数（getallreceived 1 为当前行为，或直接 getallreceived，getallreceived 5 给偏执狂，getallreceived 0 为即时确认）？\n\n是的，实际上它就是这样。getallreceived 0 就能满足你的要求。（现在它已更名为 listreceivedbyaddress 0）默认是 1 个确认，但我认为实际上大多数数字商品和服务可以 0 确认。如你所说，如果你需要多于 0 个确认，可以显示两个数字：未确认余额和可用余额，这样他们立刻就能看到交易已经通过。\nlistreceivedbyaddress [minconf=1] [includeempty=false]\n[minconf] 是款项被计入所需的最少确认数。\n[includeempty] 是否包含尚未收到任何付款的地址。\n返回一个对象数组，包含：\n \"address\" : 接收地址\n \"label\" : 接收地址的标签\n \"amount\" : 该地址收到的总金额\n \"confirmations\" : 所含最近一笔交易的确认数\n或者，如果你用用户名给地址贴标签，就用 listreceivedbylabel。\n到目前为止，我集中精力于面向 web 商家的函数，无头硬币生成机的远程管理功能还没怎么顾上。"},{"id":657,"sid":110,"sat":1,"tid":57,"tt":"Share database blocks ?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-26","ts":"2010-05-26T20:34:34Z","url":"https://bitcointalk.org/index.php?topic=153.msg1258#msg1258","zh":"<p>它实际上一次下载 500 个区块，然后计数器随着区块的验证一块一块地累加。</p><p>让 bitcoin 下载并验证区块的好处是：你不必信任你下载它们的来源。如果你从某个网站下载 blk*.dat 文件，你就得信任那个网站，因为你在未亲自验证的情况下接受了数据。如果是从你自己的另一台电脑上拷贝 blk*.dat，那没问题。</p><p>你的初始区块下载要花多久？</p>","zhText":"它实际上一次下载 500 个区块，然后计数器随着区块的验证一块一块地累加。\n让 bitcoin 下载并验证区块的好处是：你不必信任你下载它们的来源。如果你从某个网站下载 blk*.dat 文件，你就得信任那个网站，因为你在未亲自验证的情况下接受了数据。如果是从你自己的另一台电脑上拷贝 blk*.dat，那没问题。\n你的初始区块下载要花多久？"},{"id":568,"sid":111,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-26","ts":"2010-05-26T21:16:34Z","url":"https://bitcointalk.org/index.php?topic=151.msg1259#msg1259","zh":"<p>有人愿意翻译 Bitcoin 客户端本身吗？0.3 版发布时能带上至少一门其他语言就太好了。</p><p>你要做的只是装个 poedit，翻译我附在本帖里的 po 文件。不到 750 个词。</p><p>已更新 0.3.1 的 bitcoin.po 附件</p>","zhText":"有人愿意翻译 Bitcoin 客户端本身吗？0.3 版发布时能带上至少一门其他语言就太好了。\n你要做的只是装个 poedit，翻译我附在本帖里的 po 文件。不到 750 个词。\n已更新 0.3.1 的 bitcoin.po 附件"},{"id":541,"sid":112,"sat":1,"tid":53,"tt":"Odd amount of generated coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-26","ts":"2010-05-26T21:34:32Z","url":"https://bitcointalk.org/index.php?topic=141.msg1260#msg1260","zh":"<p>在 SVN 版本里，如果一笔交易需要交易费，它会显示：\n\"这笔交易超过了尺寸限制。你仍可支付 # 的费用发送，\n费用将付给处理你的交易的节点，有助于支持网络。\n你愿意支付这笔费用吗？\"</p><p>如果加上费用后你的钱不够，它会显示：\n\"计入 # 交易费后，总额超出你的余额  \"</p>","zhText":"在 SVN 版本里，如果一笔交易需要交易费，它会显示：\n\"这笔交易超过了尺寸限制。你仍可支付 # 的费用发送，\n费用将付给处理你的交易的节点，有助于支持网络。\n你愿意支付这笔费用吗？\"\n如果加上费用后你的钱不够，它会显示：\n\"计入 # 交易费后，总额超出你的余额 \""},{"id":571,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"HostFat","date":"2010-05-27","ts":"2010-05-27T11:03:36Z","url":"https://bitcointalk.org/index.php?topic=151.msg1267#msg1267","zh":"<p>这是软件的意大利语翻译。可能有些错误，但对第一版来说够用了。希望能有人来做一版更好的。</p>","zhText":"这是软件的意大利语翻译。可能有些错误，但对第一版来说够用了。希望能有人来做一版更好的。"},{"id":572,"sid":113,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-05-27","ts":"2010-05-27T14:18:22Z","url":"https://bitcointalk.org/index.php?topic=151.msg1269#msg1269","zh":"<p>万岁！我们有了第一门语言。我已上传到 SVN，随 0.3 一起发布。</p>","zhText":"万岁！我们有了第一门语言。我已上传到 SVN，随 0.3 一起发布。"},{"id":573,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Xunie","date":"2010-05-27","ts":"2010-05-27T18:30:03Z","url":"https://bitcointalk.org/index.php?topic=151.msg1271#msg1271","zh":"<p>这是几乎完成（93%）的荷兰语翻译。不过可能有一些错误。</p><p>现在能给我记一功了吗？</p>","zhText":"这是几乎完成（93%）的荷兰语翻译。不过可能有一些错误。\n现在能给我记一功了吗？"},{"id":669,"sid":null,"sat":0,"tid":60,"tt":"Hostnames instead of IP Addresses","src":"Bitcointalk","author":"laszlo","date":"2010-06-01","ts":"2010-06-01T12:17:23Z","url":"https://bitcointalk.org/index.php?topic=158.msg1320#msg1320","zh":"<p>我不确定你说的\"again\"是什么意思（我不是开发者）……总之我只是想解释为什么我认为你不该用它收款。由于我上面说的原因，向主机名发送付款并不可靠，而且最大的问题是：发送者甚至无从知道付款发错了地方。有一个更好的（可靠的）替代方案，用一次性比特币地址。</p><p>我想说的是：基于网络地址的交易既无认证，也无从知道钱是否到了。我认为基于网络地址的付款只适合本地测试。选项在那里，但我不认为它适合在互联网或任何多用户网络上使用。</p><p>如果真有大量基于网络地址的交易和 Tor 用户，我会专门架一个出口节点去截获 Tor 付款……我仍可能这么做，只为看看能不能截到几个，因为那不过是每天多挣几枚比特币的又一条路子。</p><p>我想表达的是：这相当于在你的私人车道上留一堆现金、上面压块石头防风吹走。谁都能顺手捡走。所以如果你是服务提供商，你不会想鼓励客户用这种方式付款——当客户说他付了钱、而服务商说没收到时，麻烦就来了。它如今在互联网上居然还能用，唯一的原因是：与对许多人有感知价值的现金不同，比特币对随机的互联网用户来说就像一堆石头，他们只会路过。如果每个人的车道上都堆着这些比特币堆，而人们开始意识到它们有价值，你可以打赌它们会开始消失——所以最好一开始就别把它们堆在那儿。</p><p>Laszlo</p>","zhText":"我不确定你说的\"again\"是什么意思（我不是开发者）……总之我只是想解释为什么我认为你不该用它收款。由于我上面说的原因，向主机名发送付款并不可靠，而且最大的问题是：发送者甚至无从知道付款发错了地方。有一个更好的（可靠的）替代方案，用一次性比特币地址。\n我想说的是：基于网络地址的交易既无认证，也无从知道钱是否到了。我认为基于网络地址的付款只适合本地测试。选项在那里，但我不认为它适合在互联网或任何多用户网络上使用。\n如果真有大量基于网络地址的交易和 Tor 用户，我会专门架一个出口节点去截获 Tor 付款……我仍可能这么做，只为看看能不能截到几个，因为那不过是每天多挣几枚比特币的又一条路子。\n我想表达的是：这相当于在你的私人车道上留一堆现金、上面压块石头防风吹走。谁都能顺手捡走。所以如果你是服务提供商，你不会想鼓励客户用这种方式付款——当客户说他付了钱、而服务商说没收到时，麻烦就来了。它如今在互联网上居然还能用，唯一的原因是：与对许多人有感知价值的现金不同，比特币对随机的互联网用户来说就像一堆石头，他们只会路过。如果每个人的车道上都堆着这些比特币堆，而人们开始意识到它们有价值，你可以打赌它们会开始消失——所以最好一开始就别把它们堆在那儿。\nLaszlo"},{"id":209,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"teppy","date":"2010-06-02","ts":"2010-06-02T14:27:45Z","url":"https://bitcointalk.org/index.php?topic=43.msg1321#msg1321","zh":"<p>给 GUI 加一个不错的功能：估算它正在计算多少哈希/秒。可以直接显示原始数字，或者显示\"你预计每周能生成 X 份比特币\"。</p><p>这可以部分缓解新用户迟迟拿不到比特币的挫败感。</p>","zhText":"给 GUI 加一个不错的功能：估算它正在计算多少哈希/秒。可以直接显示原始数字，或者显示\"你预计每周能生成 X 份比特币\"。\n这可以部分缓解新用户迟迟拿不到比特币的挫败感。"},{"id":670,"sid":114,"sat":1,"tid":60,"tt":"Hostnames instead of IP Addresses","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-02","ts":"2010-06-02T18:18:15Z","url":"https://bitcointalk.org/index.php?topic=158.msg1322#msg1322","zh":"<p>现在的按 IP 发送没什么用：它连接到那个 IP，所以你为了匿名想用 TOR，可那样它就完全可能被窃听、被中间人攻击。</p><p>未来按 IP 发送的计划是做成比特币地址加 IP 的形式，比如：</p><p>1auaDZCFYqaGx4FKS5WenNfurk2SkoDu4h<someseparatorcharacter>1.2.3.4\n或\n1auaDZCFYqaGx4FKS5WenNfurk2SkoDu4h<someseparatorcharacter>domain.com</p><p>我需要分隔符字符的建议。\":\" 是个候选，但 IPv6 里也有 :，可能造成混淆。最好是 url 参数里允许的字符。</p><p>我想用 SSL 做连接，用比特币地址的公钥作为证书。这样你就能确定自己连上的正是你想要的对方，并且安全加密。比特币地址不用于交易，只用于认证。一个新生成的比特币地址会通过 SSL 连接发来。</p><p>既然经过了认证，允许 IP 地址是域名就安全了。需要留意的是：如果用了代理，要用 socks4a 而不是 DNS 查询。</p>","zhText":"现在的按 IP 发送没什么用：它连接到那个 IP，所以你为了匿名想用 TOR，可那样它就完全可能被窃听、被中间人攻击。\n未来按 IP 发送的计划是做成比特币地址加 IP 的形式，比如：\n1auaDZCFYqaGx4FKS5WenNfurk2SkoDu4h1.2.3.4\n或\n1auaDZCFYqaGx4FKS5WenNfurk2SkoDu4hdomain.com\n我需要分隔符字符的建议。\":\" 是个候选，但 IPv6 里也有 :，可能造成混淆。最好是 url 参数里允许的字符。\n我想用 SSL 做连接，用比特币地址的公钥作为证书。这样你就能确定自己连上的正是你想要的对方，并且安全加密。比特币地址不用于交易，只用于认证。一个新生成的比特币地址会通过 SSL 连接发来。\n既然经过了认证，允许 IP 地址是域名就安全了。需要留意的是：如果用了代理，要用 socks4a 而不是 DNS 查询。"},{"id":210,"sid":115,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-02","ts":"2010-06-02T18:45:38Z","url":"https://bitcointalk.org/index.php?topic=43.msg1323#msg1323","zh":"<p>好主意。我还不确定具体放在哪儿，但它完全可以计算出区块生成之间的预期平均时间，这样人们就知道该期待什么了。</p><p>每个节点、每个处理器在其区块里都有不同的公钥，所以它们保证在扫描不同的地盘。</p><p>每当 32 位 nonce 从 1 重新开始时，bnExtraNonce 就会递增，它是一个任意精度整数。</p>","zhText":"好主意。我还不确定具体放在哪儿，但它完全可以计算出区块生成之间的预期平均时间，这样人们就知道该期待什么了。\n每个节点、每个处理器在其区块里都有不同的公钥，所以它们保证在扫描不同的地盘。\n每当 32 位 nonce 从 1 重新开始时，bnExtraNonce 就会递增，它是一个任意精度整数。"},{"id":574,"sid":116,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-02","ts":"2010-06-02T22:18:09Z","url":"https://bitcointalk.org/index.php?topic=151.msg1324#msg1324","zh":"<p>93% 完成度的荷兰语翻译已上传 SVN。谢谢！</p>","zhText":"93% 完成度的荷兰语翻译已上传 SVN。谢谢！"},{"id":689,"sid":null,"sat":0,"tid":62,"tt":"What is the incentive to collect transactions?","src":"Bitcointalk","author":"theymos","date":"2010-06-05","ts":"2010-06-05T16:26:09Z","url":"https://bitcointalk.org/index.php?topic=165.msg1373#msg1373","zh":"<p>向你正在计算的区块添加交易会拖慢你的生成速度。是什么在阻止大多数生成节点无视广播交易、让网络变得不可靠？</p>","zhText":"向你正在计算的区块添加交易会拖慢你的生成速度。是什么在阻止大多数生成节点无视广播交易、让网络变得不可靠？"},{"id":694,"sid":null,"sat":0,"tid":62,"tt":"What is the incentive to collect transactions?","src":"Bitcointalk","author":"QuantumMechanic","date":"2010-06-05","ts":"2010-06-05T20:02:09Z","url":"https://bitcointalk.org/index.php?topic=165.msg1383#msg1383","zh":"<p>当用户通过比特币生成来支持网络的激励基本枯竭之后，对平均交易费有没有一些估算？它如何随用户数量、网络规模和总交易速率伸缩？</p>","zhText":"当用户通过比特币生成来支持网络的激励基本枯竭之后，对平均交易费有没有一些估算？它如何随用户数量、网络规模和总交易速率伸缩？"},{"id":577,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"SmokeTooMuch","date":"2010-06-06","ts":"2010-06-06T01:46:50Z","url":"https://bitcointalk.org/index.php?topic=151.msg1386#msg1386","zh":"<p>哈哈！</p>","zhText":"哈哈！"},{"id":687,"sid":null,"sat":0,"tid":61,"tt":"Can't Build r80 from SVN","src":"Bitcointalk","author":"lachesis","date":"2010-06-06","ts":"2010-06-06T22:57:43Z","url":"https://bitcointalk.org/index.php?topic=163.msg1388#msg1388","zh":"<blockquote><p>关于如何构建 linux 客户端的一些说明。我用的是 64 位系统，但流程对 i386 linux 几乎相同。</p></blockquote><p>我的流程也是这样，不过我事先会打各种补丁。boost 和（我记得的）libdb 我用的是 Ubuntu 软件仓库里的。</p>","zhText":"关于如何构建 linux 客户端的一些说明。我用的是 64 位系统，但流程对 i386 linux 几乎相同。\n\n我的流程也是这样，不过我事先会打各种补丁。boost 和（我记得的）libdb 我用的是 Ubuntu 软件仓库里的。"},{"id":458,"sid":null,"sat":0,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"lachesis","date":"2010-06-08","ts":"2010-06-08T13:57:09Z","url":"https://bitcointalk.org/index.php?topic=84.msg1409#msg1409","zh":"<p>我喜欢 Gnutella 那种分布式主机缓存的想法。目前对大多数人来说，IRC 是个单点故障。假设出于某种原因我们的 Freenode 频道没了——也许 Freenode 受够了把我们关掉；也许黑衣人看到我们的系统、疯狂大笑，然后施压 Freenode 关掉我们。</p><p>启动客户端后它什么也做不了。你可以退到命令行敲 \"-addnode\"（还是 -peer？随便什么）去连一个已知节点，但那时你得先知道一个节点。对我们中的一个来说也许不难，可新用户呢？我们可以在网站上维护一份节点列表供他们使用，但那时他们已经从\"双击那枚闪亮的金币就开始交易\"变成\"到我们网站查最新节点列表、打开命令提示符、进入 bitcoin 目录、敲对节点……\"。而且如果黑衣人盯上了我们，网站恐怕早就没了。</p><p>当然，我们可以用更友好的方式实现 addpeer。比如弹一个框：\"我连不上网络。请输入一个节点：\"，并附上几条寻找节点的方法说明——但那样我们就是在为一个技术问题做社会性解决方案了。</p><p>再说，规模变大后我们反正要摆脱 IRC（如楼主与 Freenode 工作人员的交谈所示）。Tor 用户怎么办？想用 Tor 匿名的人凭什么就得手动添加节点？</p><p>最后，任何在 Freenode 上的人都能轻易拿到所有在线 Bitcoin 客户端的列表、上线时间、下线时间等。这与项目宣称的匿名目标相悖。当然，有主机缓存系统，任何连上缓存的人也会被服务器运营者记录，但没有任何一个运营者能掌握全网全貌。</p><p>我认为 IRC 方案是个精彩的起点，它的稳定表现值得称赞。用它轻松把网络拉起来、专注于程序里更有趣更重要的考量，是个英明的决定。我只是觉得 Bitcoin 终有一天会超越它——如果还没有的话。</p>","zhText":"我喜欢 Gnutella 那种分布式主机缓存的想法。目前对大多数人来说，IRC 是个单点故障。假设出于某种原因我们的 Freenode 频道没了——也许 Freenode 受够了把我们关掉；也许黑衣人看到我们的系统、疯狂大笑，然后施压 Freenode 关掉我们。\n启动客户端后它什么也做不了。你可以退到命令行敲 \"-addnode\"（还是 -peer？随便什么）去连一个已知节点，但那时你得先知道一个节点。对我们中的一个来说也许不难，可新用户呢？我们可以在网站上维护一份节点列表供他们使用，但那时他们已经从\"双击那枚闪亮的金币就开始交易\"变成\"到我们网站查最新节点列表、打开命令提示符、进入 bitcoin 目录、敲对节点……\"。而且如果黑衣人盯上了我们，网站恐怕早就没了。\n当然，我们可以用更友好的方式实现 addpeer。比如弹一个框：\"我连不上网络。请输入一个节点：\"，并附上几条寻找节点的方法说明——但那样我们就是在为一个技术问题做社会性解决方案了。\n再说，规模变大后我们反正要摆脱 IRC（如楼主与 Freenode 工作人员的交谈所示）。Tor 用户怎么办？想用 Tor 匿名的人凭什么就得手动添加节点？\n最后，任何在 Freenode 上的人都能轻易拿到所有在线 Bitcoin 客户端的列表、上线时间、下线时间等。这与项目宣称的匿名目标相悖。当然，有主机缓存系统，任何连上缓存的人也会被服务器运营者记录，但没有任何一个运营者能掌握全网全貌。\n我认为 IRC 方案是个精彩的起点，它的稳定表现值得称赞。用它轻松把网络拉起来、专注于程序里更有趣更重要的考量，是个英明的决定。我只是觉得 Bitcoin 终有一天会超越它——如果还没有的话。"},{"id":222,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"theymos","date":"2010-06-09","ts":"2010-06-09T17:41:43Z","url":"https://bitcointalk.org/index.php?topic=43.msg1434#msg1434","zh":"<p>谢谢澄清，fergalish！</p>","zhText":"谢谢澄清，fergalish！"},{"id":705,"sid":null,"sat":0,"tid":64,"tt":"Bitcoin mobile.","src":"Bitcointalk","author":"sirius","date":"2010-06-10","ts":"2010-06-10T13:51:16Z","url":"https://bitcointalk.org/index.php?topic=177.msg1452#msg1452","zh":"<p>在手机浏览器上当然可以用 vekja.net 或 mybitcoin.com 这类服务，把你信得过的额度的钱存进去。不过某种意义上，也许手机钱包会更好。</p>","zhText":"在手机浏览器上当然可以用 vekja.net 或 mybitcoin.com 这类服务，把你信得过的额度的钱存进去。不过某种意义上，也许手机钱包会更好。"},{"id":678,"sid":null,"sat":0,"tid":60,"tt":"Hostnames instead of IP Addresses","src":"Bitcointalk","author":"lachesis","date":"2010-06-11","ts":"2010-06-11T14:33:55Z","url":"https://bitcointalk.org/index.php?topic=158.msg1482#msg1482","zh":"<p>我看不出这两个想法为何互斥，虽然我猜实现 SSL/TLS 并非易事。我们已经链接了 OpenSSL 库，所以不好说。</p><p>我个人更希望用 urn 方案来承载一个比特币地址。</p><blockquote><p>urn:bitcoin.org:19vcWM6EEbQHVdN2W8NXv9ySgsPjbZ6gU3@12.34.56.78</p></blockquote><p>那就完美了，不过我更希望在右边用主机名。</p><p>当然，我就是那种可能在 thenerdsshop.com 购物的人。</p><p>对老奶奶来说，整个比特币概念目前相当令人费解。即使抛开一切技术细节，UI 仍显示一大串数字和字母（你的接收地址），而现行最佳实践要求你每次把地址给别人时都得跟这串东西打交道。</p><p>另一个选择是用类似 OpenID 的做法：商店（最好是 SSL）网站上的隐藏标签。然后你只需输入网站的 URL 作为接收地址。它会访问那个网站，搜索类似</p><pre><code>&lt;link rel=\"bitcoin.address\" href=\"19vcWM6EEbQHVdN2W8NXv9ySgsPjbZ6gU3\">\n&lt;link rel=\"bitcoin.server\" href=\"12.34.56.78\"></code></pre><p>或其他某种表单的东西，然后尝试安全地发送过去。</p>","zhText":"我看不出这两个想法为何互斥，虽然我猜实现 SSL/TLS 并非易事。我们已经链接了 OpenSSL 库，所以不好说。\n我个人更希望用 urn 方案来承载一个比特币地址。\nurn:bitcoin.org:19vcWM6EEbQHVdN2W8NXv9ySgsPjbZ6gU3@12.34.56.78\n\n那就完美了，不过我更希望在右边用主机名。\n当然，我就是那种可能在 thenerdsshop.com 购物的人。\n对老奶奶来说，整个比特币概念目前相当令人费解。即使抛开一切技术细节，UI 仍显示一大串数字和字母（你的接收地址），而现行最佳实践要求你每次把地址给别人时都得跟这串东西打交道。\n另一个选择是用类似 OpenID 的做法：商店（最好是 SSL）网站上的隐藏标签。然后你只需输入网站的 URL 作为接收地址。它会访问那个网站，搜索类似\n<link rel=\"bitcoin.address\" href=\"19vcWM6EEbQHVdN2W8NXv9ySgsPjbZ6gU3\">\n<link rel=\"bitcoin.server\" href=\"12.34.56.78\">或其他某种表单的东西，然后尝试安全地发送过去。"},{"id":317,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"lachesis","date":"2010-06-11","ts":"2010-06-11T14:51:56Z","url":"https://bitcointalk.org/index.php?topic=55.msg1483#msg1483","zh":"<blockquote><p>瞧，我们完全可以照同样的方式做，比如：\n<a href=\"http://127.0.0.1:8330/?to=\">http://127.0.0.1:8330/?to=</a><bitcoinaddress>;amount=<amount></p></blockquote><p>这是个非常务实的答案，我喜欢。</p><p>不过，这与这里描述的 IP / 比特币地址组合 URI（URN？URL？）方案怎么配合呢？\n[link]http://bitcointalk.org/index.php?topic=158.msg1322#msg1322[/link]</p><p>我知道快一个月了，抱歉。</p>","zhText":"瞧，我们完全可以照同样的方式做，比如：\nhttp://127.0.0.1:8330/?to=;amount=\n\n这是个非常务实的答案，我喜欢。\n不过，这与这里描述的 IP / 比特币地址组合 URI（URN？URL？）方案怎么配合呢？\n[link]http://bitcointalk.org/index.php?topic=158.msg1322#msg1322[/link]\n我知道快一个月了，抱歉。"},{"id":717,"sid":null,"sat":0,"tid":65,"tt":"Technical clarifications","src":"Bitcointalk","author":"sirius","date":"2010-06-13","ts":"2010-06-13T10:14:19Z","url":"https://bitcointalk.org/index.php?topic=179.msg1540#msg1540","zh":"<blockquote><p>4) 能否请人写写交易费的更多细节：为什么需要它、如何使用、在哪些情况下使用等等。</p></blockquote><p>交易费是为了在多年之后、当区块价值变低时，给生成区块提供激励。另外，如果许多节点停止把交易记录进它们生成的区块（因为那点生成速度上的小便宜），你可以把交易费当作激励来用。</p><p>大概永远都会有愿意免费把你的交易纳入其区块的节点，但如果很多节点都不收，你可能得等上几个区块。</p>","zhText":"4) 能否请人写写交易费的更多细节：为什么需要它、如何使用、在哪些情况下使用等等。\n\n交易费是为了在多年之后、当区块价值变低时，给生成区块提供激励。另外，如果许多节点停止把交易记录进它们生成的区块（因为那点生成速度上的小便宜），你可以把交易费当作激励来用。\n大概永远都会有愿意免费把你的交易纳入其区块的节点，但如果很多节点都不收，你可能得等上几个区块。"},{"id":754,"sid":null,"sat":0,"tid":68,"tt":"Dealing with SHA-256 Collisions","src":"Bitcointalk","author":"theymos","date":"2010-06-14","ts":"2010-06-14T06:09:58Z","url":"https://bitcointalk.org/index.php?topic=191.msg1568#msg1568","zh":"<blockquote><p>那样一来，所有旧交易岂不全被攻破了（因为它们可以被轻而易举地重新计算）？</p></blockquote><p>再想了想，我意识到攻破区块所用的哈希函数，比我想象的还要灾难性。但\"动态\"更换哈希函数仍应可行：在新的 BitCoin 发行版里，把旧链上每个真实区块的安全哈希包含进去。某个这样做的机制（但愿更优雅些）对渐进式哈希更换同样适用。</p><blockquote><p>用户岂不是要丢币？</p></blockquote><p>每个人的余额都是公开可查的，所以无论 BitCoin 做什么改动，这些数据应该始终有办法保留。</p>","zhText":"那样一来，所有旧交易岂不全被攻破了（因为它们可以被轻而易举地重新计算）？\n\n再想了想，我意识到攻破区块所用的哈希函数，比我想象的还要灾难性。但\"动态\"更换哈希函数仍应可行：在新的 BitCoin 发行版里，把旧链上每个真实区块的安全哈希包含进去。某个这样做的机制（但愿更优雅些）对渐进式哈希更换同样适用。\n用户岂不是要丢币？\n\n每个人的余额都是公开可查的，所以无论 BitCoin 做什么改动，这些数据应该始终有办法保留。"},{"id":737,"sid":null,"sat":0,"tid":66,"tt":"Get 5 free bitcoins from freebitcoins.appspot.com","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-06-14","ts":"2010-06-14T17:48:44Z","url":"https://bitcointalk.org/index.php?topic=183.msg1577#msg1577","zh":"<p>Bitcoin Faucet（比特币水龙头）现在显示它有多少可供发放的硬币（页面左侧）。这个数字只是中等精确——捐赠要过 5 或 10 分钟才会反映到余额里。</p><p>我还实现了另一项反作弊措施，应该能让随手作弊难一点（我不想说太多，说多了作弊者就知道该怎么做了）。</p><p>freebitcoins 到目前为止运转之好令我惊喜；再次感谢所有试用它、并向它捐赠比特币的人！</p>","zhText":"Bitcoin Faucet（比特币水龙头）现在显示它有多少可供发放的硬币（页面左侧）。这个数字只是中等精确——捐赠要过 5 或 10 分钟才会反映到余额里。\n我还实现了另一项反作弊措施，应该能让随手作弊难一点（我不想说太多，说多了作弊者就知道该怎么做了）。\nfreebitcoins 到目前为止运转之好令我惊喜；再次感谢所有试用它、并向它捐赠比特币的人！"},{"id":459,"sid":117,"sat":1,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-14","ts":"2010-06-14T18:13:21Z","url":"https://bitcointalk.org/index.php?topic=84.msg1579#msg1579","zh":"<p>Bitcoin 有自己的分布式地址目录，用的是 \"addr\" 消息。是时候把当前长期运行的静态节点编成种子列表写进代码了。我可以加一段代码，让新节点不优先保持与种子节点的连接——连上、取列表、就走，这样不会给它们添负担。</p><p>你们怎么看，我该继续把种子加进去吗？</p><p>它仍会先试 IRC。IRC 的优点是列出当前在线的节点——它们必须保持连接才能留在列表上——缺点是单点故障。\"addr\" 系统没有单点故障，但只能告诉你最近见过哪些节点，所以连接会慢一点，因为你试的一些节点已经下线。两者结合让我们两全其美、总体更稳健。</p><p>有人愿意志愿运行一台 IRC 服务器，以防 freenode 哪天厌倦了我们吗？</p>","zhText":"Bitcoin 有自己的分布式地址目录，用的是 \"addr\" 消息。是时候把当前长期运行的静态节点编成种子列表写进代码了。我可以加一段代码，让新节点不优先保持与种子节点的连接——连上、取列表、就走，这样不会给它们添负担。\n你们怎么看，我该继续把种子加进去吗？\n它仍会先试 IRC。IRC 的优点是列出当前在线的节点——它们必须保持连接才能留在列表上——缺点是单点故障。\"addr\" 系统没有单点故障，但只能告诉你最近见过哪些节点，所以连接会慢一点，因为你试的一些节点已经下线。两者结合让我们两全其美、总体更稳健。\n有人愿意志愿运行一台 IRC 服务器，以防 freenode 哪天厌倦了我们吗？"},{"id":460,"sid":null,"sat":0,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"laszlo","date":"2010-06-14","ts":"2010-06-14T18:30:58Z","url":"https://bitcointalk.org/index.php?topic=84.msg1580#msg1580","zh":"<p>我运行着一台 IRC 服务器，你们可以用，它相当稳定，但没挂在冗余线路上什么的。现在只有两台服务器，不过我们从不折腾它，它就那么跑着。</p><p>我的机器是一台专用 irc 服务器：\n 2:28PM  up 838 days, 20:54, 1 user, load averages: 0.06, 0.08, 0.08</p><p>你可以用 irc.lfnet.org 连接。</p><p>我常驻在 #linuxos，谁想来串门都行。</p>","zhText":"我运行着一台 IRC 服务器，你们可以用，它相当稳定，但没挂在冗余线路上什么的。现在只有两台服务器，不过我们从不折腾它，它就那么跑着。\n我的机器是一台专用 irc 服务器：\n 2:28PM up 838 days, 20:54, 1 user, load averages: 0.06, 0.08, 0.08\n你可以用 irc.lfnet.org 连接。\n我常驻在 #linuxos，谁想来串门都行。"},{"id":679,"sid":118,"sat":1,"tid":60,"tt":"Hostnames instead of IP Addresses","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-14","ts":"2010-06-14T19:53:44Z","url":"https://bitcointalk.org/index.php?topic=158.msg1582#msg1582","zh":"<p>SirArthur 关于普通在线商家的观点很有道理，而那正是按 IP 发送选项更适合的场景。这种情况下，商家在静态 IP 上有自己的服务器、自己的域名和 SSL 证书。</p><p>我们可以不按 IP 连接，而是通过 SSL 连接一个域名，用现有的 CA 基础设施来认证你连上的确实是该域名的所有者。</p><p>用户发送到 domain.com（或 <a href=\"http://www.domain.com\">www.domain.com</a> 也行）。那会非常自然，用户可以看到并核实自己输入的正是他要付款的对象。</p><p>SSL 也让 TOR 用户的安全得到保障。</p><p>问题是，我认为商家仍会更愿意用比特币地址，好确切知道这笔付款对应什么订单。你根本不能指望用户在备注栏里填对内容来标识交易。只有当我们有了 mailto 式的链接、能把订单号预填进备注栏，这才接近实用——但那样的话，链接里放一个比特币地址也照样行。</p><p>仅仅在 domain.com 上开一个开放的比特币服务器、让用户把身份不明的付款发过去，责任太大了。普通用户不习惯\"必须标识付款\"这个概念。商家会收到太多空白付款，一周之后跟一句\"我付过钱了，我的东西呢？！\"</p><p>付款流程里确实有一个步骤：接收方在接受之前验证订单。如果不包含有效的订单号，它可以拒绝付款并返回错误消息。不过这需要把定制代码与比特币服务器做相当深度的集成。</p>","zhText":"SirArthur 关于普通在线商家的观点很有道理，而那正是按 IP 发送选项更适合的场景。这种情况下，商家在静态 IP 上有自己的服务器、自己的域名和 SSL 证书。\n我们可以不按 IP 连接，而是通过 SSL 连接一个域名，用现有的 CA 基础设施来认证你连上的确实是该域名的所有者。\n用户发送到 domain.com（或 www.domain.com 也行）。那会非常自然，用户可以看到并核实自己输入的正是他要付款的对象。\nSSL 也让 TOR 用户的安全得到保障。\n问题是，我认为商家仍会更愿意用比特币地址，好确切知道这笔付款对应什么订单。你根本不能指望用户在备注栏里填对内容来标识交易。只有当我们有了 mailto 式的链接、能把订单号预填进备注栏，这才接近实用——但那样的话，链接里放一个比特币地址也照样行。\n仅仅在 domain.com 上开一个开放的比特币服务器、让用户把身份不明的付款发过去，责任太大了。普通用户不习惯\"必须标识付款\"这个概念。商家会收到太多空白付款，一周之后跟一句\"我付过钱了，我的东西呢？！\"\n付款流程里确实有一个步骤：接收方在接受之前验证订单。如果不包含有效的订单号，它可以拒绝付款并返回错误消息。不过这需要把定制代码与比特币服务器做相当深度的集成。"},{"id":755,"sid":119,"sat":1,"tid":68,"tt":"Dealing with SHA-256 Collisions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-14","ts":"2010-06-14T20:39:50Z","url":"https://bitcointalk.org/index.php?topic=191.msg1585#msg1585","zh":"<p>SHA-256 非常强。它不像 MD5 到 SHA1 那种渐进的一步。除非出现某种重大的突破性攻击，它可以用上几十年。</p><p>倘若 SHA-256 被彻底攻破，我想我们可以就\"麻烦开始之前哪条是诚实的区块链\"达成共识，把它锁定，然后用新的哈希函数从那里继续。</p><p>倘若哈希是逐渐失效的，我们可以有序地过渡到新哈希。软件可以被设定为在某个区块号之后开始使用新哈希。所有人都必须在那时之前升级。软件可以保存所有旧区块的新哈希，确保无法使用一个与旧哈希相同的不同区块。</p>","zhText":"SHA-256 非常强。它不像 MD5 到 SHA1 那种渐进的一步。除非出现某种重大的突破性攻击，它可以用上几十年。\n倘若 SHA-256 被彻底攻破，我想我们可以就\"麻烦开始之前哪条是诚实的区块链\"达成共识，把它锁定，然后用新的哈希函数从那里继续。\n倘若哈希是逐渐失效的，我们可以有序地过渡到新哈希。软件可以被设定为在某个区块号之后开始使用新哈希。所有人都必须在那时之前升级。软件可以保存所有旧区块的新哈希，确保无法使用一个与旧哈希相同的不同区块。"},{"id":718,"sid":120,"sat":1,"tid":65,"tt":"Technical clarifications","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-14","ts":"2010-06-14T22:21:55Z","url":"https://bitcointalk.org/index.php?topic=179.msg1588#msg1588","zh":"<p>3) 按比特币地址发送的话，没什么。\n5) 它是去中心化的。第一次连上网络之后，你就不再需要 IRC 了。</p>","zhText":"3) 按比特币地址发送的话，没什么。\n5) 它是去中心化的。第一次连上网络之后，你就不再需要 IRC 了。"},{"id":688,"sid":121,"sat":1,"tid":61,"tt":"Can't Build r80 from SVN","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-14","ts":"2010-06-14T22:40:14Z","url":"https://bitcointalk.org/index.php?topic=163.msg1590#msg1590","zh":"<p>抱歉，最近几次修订我没在 linux 上测试编译。</p><p>makefile.unix 已回退。</p>","zhText":"抱歉，最近几次修订我没在 linux 上测试编译。\nmakefile.unix 已回退。"},{"id":695,"sid":122,"sat":1,"tid":62,"tt":"What is the incentive to collect transactions?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-15","ts":"2010-06-15T23:41:29Z","url":"https://bitcointalk.org/index.php?topic=165.msg1595#msg1595","zh":"<blockquote><p>向你正在计算的区块添加交易会拖慢你的生成速度</p></blockquote><p>这个前提是错的。向正在计算的区块添加更多交易不会拖慢你的生成速度。生成时扫描哈希，只对区块头做哈希，区块头是固定大小。区块头包含交易的哈希（Merkle 根），只是偶尔更新。</p><p>必要的话我可以写代码，让节点倾向不使用\"不包含它们所知的大部分交易\"的区块。一个不受欢迎的区块几乎总是进不了主链，但真进了也会被接受。我怀疑这不会有必要，因为节点不收录全部交易并没有什么实际好处。</p>","zhText":"向你正在计算的区块添加交易会拖慢你的生成速度\n\n这个前提是错的。向正在计算的区块添加更多交易不会拖慢你的生成速度。生成时扫描哈希，只对区块头做哈希，区块头是固定大小。区块头包含交易的哈希（Merkle 根），只是偶尔更新。\n必要的话我可以写代码，让节点倾向不使用\"不包含它们所知的大部分交易\"的区块。一个不受欢迎的区块几乎总是进不了主链，但真进了也会被接受。我怀疑这不会有必要，因为节点不收录全部交易并没有什么实际好处。"},{"id":318,"sid":123,"sat":1,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-16","ts":"2010-06-16T00:15:47Z","url":"https://bitcointalk.org/index.php?topic=55.msg1596#msg1596","zh":"<p><a href=\"http://127.0.0.1:8330/?to=domain.com&amount=200.00&comment=order_12345\">http://127.0.0.1:8330/?to=domain.com&amount=200.00&comment=order_12345</a>\n或\n<a href=\"http://127.0.0.1:8330/?to=\">http://127.0.0.1:8330/?to=</a><bitcoinaddress><separatorchar>1.2.3.4&amount=200.00</p><p>但既然链接已经替你把字都打好了，我看不出用域名地址代替比特币地址有什么好处。用比特币地址，用户无法发出一笔身份不明的付款。在拿到一个正确的比特币地址之前，他们根本无法付款。</p><p>按域名发送的好处是你可以直观地核实钱发给了谁。</p><p>一个更关键的问题是：如果浏览器不被允许连接 127.0.0.1 怎么办：\n<a href=\"http://bitcointalk.org/index.php?topic=63.msg1589#msg1589\">http://bitcointalk.org/index.php?topic=63.msg1589#msg1589</a></p><p>而且如果真是这样，那个包含 127.0.0.1 的 freenet 链接示例又怎么说？</p>","zhText":"http://127.0.0.1:8330/?to=domain.com&amount=200.00&comment=order_12345\n或\nhttp://127.0.0.1:8330/?to=1.2.3.4&amount=200.00\n但既然链接已经替你把字都打好了，我看不出用域名地址代替比特币地址有什么好处。用比特币地址，用户无法发出一笔身份不明的付款。在拿到一个正确的比特币地址之前，他们根本无法付款。\n按域名发送的好处是你可以直观地核实钱发给了谁。\n一个更关键的问题是：如果浏览器不被允许连接 127.0.0.1 怎么办：\nhttp://bitcointalk.org/index.php?topic=63.msg1589#msg1589\n而且如果真是这样，那个包含 127.0.0.1 的 freenet 链接示例又怎么说？"},{"id":319,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"lachesis","date":"2010-06-16","ts":"2010-06-16T06:14:05Z","url":"https://bitcointalk.org/index.php?topic=55.msg1597#msg1597","zh":"<blockquote><p>但既然链接已经替你把输入的活干了，我看不出用域名地址代替比特币地址有什么好处。用比特币地址，用户没法发送一笔收款人不明的付款。他们必须先拿到一个正确的比特币地址才能付款。</p><p>按域名发送的好处是你可以直观地确认钱付给了谁。</p></blockquote><p>我认为对普通用户隐藏比特币地址的复杂性是好事。退一步说，应该可以在地址交易里嵌入一条可读但不可篡改的信息。有什么技术上的原因做不到吗？</p><blockquote><p>一个更关键的问题是，如果浏览器不被允许连接 127.0.0.1 怎么办：\n<a href=\"http://bitcointalk.org/index.php?topic=63.msg1589#msg1589\">http://bitcointalk.org/index.php?topic=63.msg1589#msg1589</a></p><p>如果真是这样，那那个带 127.0.0.1 的 freenet 链接的例子又怎么说？</p></blockquote><p>我想你误解了这个问题。我的浏览器永远可以访问 127.0.0.1（除非奇怪的 IE 设置或病毒作祟）。无论在地址栏输入还是点击链接，都能正常工作。但 Javascript 无法完成跨域（或同域不同端口）的 POST 请求。</p><p>试试点这个链接：\n<a href=\"http://127.0.0.1/\">http://127.0.0.1/</a>\n你多半什么都看不到（除非你在本机跑了 web 服务器），但浏览器会很乐意地带你过去。</p><p><a href=\"http://en.wikipedia.org/wiki/XMLHttpRequest\">XMLHTTPRequest</a> 就是我们在另一个主题里讨论的东西。</p>","zhText":"但既然链接已经替你把输入的活干了，我看不出用域名地址代替比特币地址有什么好处。用比特币地址，用户没法发送一笔收款人不明的付款。他们必须先拿到一个正确的比特币地址才能付款。\n按域名发送的好处是你可以直观地确认钱付给了谁。\n\n我认为对普通用户隐藏比特币地址的复杂性是好事。退一步说，应该可以在地址交易里嵌入一条可读但不可篡改的信息。有什么技术上的原因做不到吗？\n一个更关键的问题是，如果浏览器不被允许连接 127.0.0.1 怎么办：\nhttp://bitcointalk.org/index.php?topic=63.msg1589#msg1589\n如果真是这样，那那个带 127.0.0.1 的 freenet 链接的例子又怎么说？\n\n我想你误解了这个问题。我的浏览器永远可以访问 127.0.0.1（除非奇怪的 IE 设置或病毒作祟）。无论在地址栏输入还是点击链接，都能正常工作。但 Javascript 无法完成跨域（或同域不同端口）的 POST 请求。\n试试点这个链接：\nhttp://127.0.0.1/\n你多半什么都看不到（除非你在本机跑了 web 服务器），但浏览器会很乐意地带你过去。\nXMLHTTPRequest 就是我们在另一个主题里讨论的东西。"},{"id":320,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"sirius","date":"2010-06-16","ts":"2010-06-16T08:26:14Z","url":"https://bitcointalk.org/index.php?topic=55.msg1598#msg1598","zh":"<p>对，我是想说跨域的 javascript 调用是被禁止的，所以不能从不位于 127.0.0.1 的 javascript 去调用 127.0.0.1。想想还挺有意思，如果浏览器允许恶意跨域 javascript 改别人的 Facebook 页面之类，那场面一定很欢乐。</p>","zhText":"对，我是想说跨域的 javascript 调用是被禁止的，所以不能从不位于 127.0.0.1 的 javascript 去调用 127.0.0.1。想想还挺有意思，如果浏览器允许恶意跨域 javascript 改别人的 Facebook 页面之类，那场面一定很欢乐。"},{"id":578,"sid":124,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-16","ts":"2010-06-16T16:53:34Z","url":"https://bitcointalk.org/index.php?topic=151.msg1600#msg1600","zh":"<p>谢谢 DataWraith！德语翻译已上传 SVN。</p><p>太棒了，我们已经有 3 门主要语言了。</p>","zhText":"谢谢 DataWraith！德语翻译已上传 SVN。\n太棒了，我们已经有 3 门主要语言了。"},{"id":322,"sid":null,"sat":0,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"lachesis","date":"2010-06-16","ts":"2010-06-16T19:38:32Z","url":"https://bitcointalk.org/index.php?topic=55.msg1601#msg1601","zh":"<blockquote><p>编辑：比特币界面还应该在确认付款之前要密码。否则别人可以扫描谁的 8330 端口开着，然后自动让它付款。</p></blockquote><p>不完全是这样。目前 Bitcoin 只把 RPC 绑定在回环接口 127.0.0.1 上。我猜这个 web 界面也会一样。不过，确实应该有密码来防止木马轻而易举地把你的钱包转走。钱包加密也该做了。</p>","zhText":"编辑：比特币界面还应该在确认付款之前要密码。否则别人可以扫描谁的 8330 端口开着，然后自动让它付款。\n\n不完全是这样。目前 Bitcoin 只把 RPC 绑定在回环接口 127.0.0.1 上。我猜这个 web 界面也会一样。不过，确实应该有密码来防止木马轻而易举地把你的钱包转走。钱包加密也该做了。"},{"id":756,"sid":null,"sat":0,"tid":69,"tt":"Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-06-17","ts":"2010-06-17T11:38:31Z","url":"https://bitcointalk.org/index.php?topic=195.msg1606#msg1606","zh":"<p>所以我在写一个 dissect Bitcoin wallet.dat 的小工具，主要是因为我想更好地弄清 Bitcoin 到底是怎么运作的。</p><p>我看到交易的输出有一个值（比特币数量）和一串字节，这些字节会经过 bitcoin 内置的类 Forth 脚本语言处理。例如：\n['TxOut: value: 100.00 Script: DUP HASH160 6fad...ab90 EQUALVERIFY CHECKSIG']</p><p>首先：bitcoin 内置脚本语言让我有点紧张，即便它是一门非常简单的脚本语言（没有循环、没有指针、只有数学和密码学）。让我紧张的是它增加了复杂度，而复杂度是安全之敌。它也让创建第二个兼容实现变得更难。但我想我能克服这一点。</p><p>看代码，新交易的验证方式是：把签名、然后公钥压入解释器栈，然后运行 TxOut 脚本（我理解得对吗？）</p><p>我能写代码创建 TxOut 里带有任意有效脚本的交易吗？比如，我能否创建一个脚本为 OP_2DROP OP_TRUE 的 TxOut——造出一枚任何人都能花的硬币？</p><p>所造硬币类型上的灵活性，是它这样编码的原因吗？</p>","zhText":"所以我在写一个 dissect Bitcoin wallet.dat 的小工具，主要是因为我想更好地弄清 Bitcoin 到底是怎么运作的。\n我看到交易的输出有一个值（比特币数量）和一串字节，这些字节会经过 bitcoin 内置的类 Forth 脚本语言处理。例如：\n['TxOut: value: 100.00 Script: DUP HASH160 6fad...ab90 EQUALVERIFY CHECKSIG']\n首先：bitcoin 内置脚本语言让我有点紧张，即便它是一门非常简单的脚本语言（没有循环、没有指针、只有数学和密码学）。让我紧张的是它增加了复杂度，而复杂度是安全之敌。它也让创建第二个兼容实现变得更难。但我想我能克服这一点。\n看代码，新交易的验证方式是：把签名、然后公钥压入解释器栈，然后运行 TxOut 脚本（我理解得对吗？）\n我能写代码创建 TxOut 里带有任意有效脚本的交易吗？比如，我能否创建一个脚本为 OP_2DROP OP_TRUE 的 TxOut——造出一枚任何人都能花的硬币？\n所造硬币类型上的灵活性，是它这样编码的原因吗？"},{"id":748,"sid":null,"sat":0,"tid":67,"tt":"new binary release?","src":"Bitcointalk","author":"laszlo","date":"2010-06-17","ts":"2010-06-17T16:03:16Z","url":"https://bitcointalk.org/index.php?topic=184.msg1608#msg1608","zh":"<p>32 位 linux？行，我能做。</p>","zhText":"32 位 linux？行，我能做。"},{"id":749,"sid":125,"sat":1,"tid":67,"tt":"new binary release?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-17","ts":"2010-06-17T17:07:56Z","url":"https://bitcointalk.org/index.php?topic=184.msg1609#msg1609","zh":"<p>我正在尽快把 0.3 版发出去。只剩最后几件事了。距 0.2 已经很久，我们需要一个带命令行和 JSON-RPC 的预编译 bitcoind。这次我们会同时提供 32 位和 64 位 linux 二进制，Laszlo 会构建 Mac OSX 版本。另外，我们会收录 DataWraith、Xunie 和 Joozero 的德语、荷兰语和意大利语翻译（谢谢几位！）。</p>","zhText":"我正在尽快把 0.3 版发出去。只剩最后几件事了。距 0.2 已经很久，我们需要一个带命令行和 JSON-RPC 的预编译 bitcoind。这次我们会同时提供 32 位和 64 位 linux 二进制，Laszlo 会构建 Mac OSX 版本。另外，我们会收录 DataWraith、Xunie 和 Joozero 的德语、荷兰语和意大利语翻译（谢谢几位！）。"},{"id":757,"sid":126,"sat":1,"tid":69,"tt":"Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-17","ts":"2010-06-17T18:46:08Z","url":"https://bitcointalk.org/index.php?topic=195.msg1611#msg1611","zh":"<p>Bitcoin 的本性是：一旦 0.1 版发布，核心设计在其余生中便铁板钉钉了。因此，我想把它设计成支持我能想到的每一种可能的交易类型。问题在于，每种东西无论用不用，都需要专门的支持代码和数据字段，而且每次只覆盖一种特例。特例会爆炸式增长。解决方案是脚本——它把问题泛化，交易双方可以把交易描述为一个由节点网络求值的谓词。节点只需要理解到\"求值发送方的条件是否满足\"这个程度。</p><p>脚本实际上就是一个谓词。它不过是一个求值为真或假的等式。Predicate 是个又长又生僻的词，所以我管它叫 script。</p><p>收款方对脚本做模板匹配。目前，接收方只接受两种模板：直接付款和比特币地址。未来版本可以加入更多交易类型的模板，运行该版本或更高版本的节点就能接收它们。网络中所有版本的节点都能把任何新交易验证并处理进区块，哪怕它们不知道如何解读这些交易。</p><p>这个设计支持我在多年以前就设计好的、极其多样的可能交易类型。托管交易、担保契约、第三方仲裁、多方签名等。倘若 Bitcoin 大规模流行起来，这些是我们将来想要探索的东西，但它们都必须在开端就设计好，以确保日后有可能实现。</p><p>我不相信 Bitcoin 的第二个兼容实现会是个好主意。这个设计有太多部分依赖所有节点以步进一致的方式得到完全相同的结果，第二个实现将是网络的威胁。MIT 许可与所有其他许可及商业用途兼容，故从许可的角度也没有重写的必要。</p>","zhText":"Bitcoin 的本性是：一旦 0.1 版发布，核心设计在其余生中便铁板钉钉了。因此，我想把它设计成支持我能想到的每一种可能的交易类型。问题在于，每种东西无论用不用，都需要专门的支持代码和数据字段，而且每次只覆盖一种特例。特例会爆炸式增长。解决方案是脚本——它把问题泛化，交易双方可以把交易描述为一个由节点网络求值的谓词。节点只需要理解到\"求值发送方的条件是否满足\"这个程度。\n脚本实际上就是一个谓词。它不过是一个求值为真或假的等式。Predicate 是个又长又生僻的词，所以我管它叫 script。\n收款方对脚本做模板匹配。目前，接收方只接受两种模板：直接付款和比特币地址。未来版本可以加入更多交易类型的模板，运行该版本或更高版本的节点就能接收它们。网络中所有版本的节点都能把任何新交易验证并处理进区块，哪怕它们不知道如何解读这些交易。\n这个设计支持我在多年以前就设计好的、极其多样的可能交易类型。托管交易、担保契约、第三方仲裁、多方签名等。倘若 Bitcoin 大规模流行起来，这些是我们将来想要探索的东西，但它们都必须在开端就设计好，以确保日后有可能实现。\n我不相信 Bitcoin 的第二个兼容实现会是个好主意。这个设计有太多部分依赖所有节点以步进一致的方式得到完全相同的结果，第二个实现将是网络的威胁。MIT 许可与所有其他许可及商业用途兼容，故从许可的角度也没有重写的必要。"},{"id":758,"sid":null,"sat":0,"tid":69,"tt":"Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG","src":"Bitcointalk","author":"laszlo","date":"2010-06-17","ts":"2010-06-17T18:50:31Z","url":"https://bitcointalk.org/index.php?topic=195.msg1612#msg1612","zh":"<p>Satoshi，这个设计你做了多久了？它看起来深思熟虑，不是那种没经过大量头脑风暴和讨论、坐下来就写代码的东西。每个人都在用显而易见的问题找它的漏洞，但它一直站得住脚。</p>","zhText":"Satoshi，这个设计你做了多久了？它看起来深思熟虑，不是那种没经过大量头脑风暴和讨论、坐下来就写代码的东西。每个人都在用显而易见的问题找它的漏洞，但它一直站得住脚。"},{"id":759,"sid":null,"sat":0,"tid":69,"tt":"Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-06-17","ts":"2010-06-17T19:58:14Z","url":"https://bitcointalk.org/index.php?topic=195.msg1613#msg1613","zh":"<blockquote><p>我不相信 Bitcoin 的第二个兼容实现会是个好主意。这个设计有太多部分依赖所有节点以步进一致的方式得到完全相同的结果，第二个实现将是网络的威胁。MIT 许可与所有其他许可及商业用途兼容，故从许可的角度也没有重写的必要。</p></blockquote><p>好主意也罢坏主意也罢，迟早会有人试图搅乱网络（或把它挪作己用）。他们要么 hack 现有代码，要么自己写一个版本，都会成为网络的威胁。</p><p>我欣赏交易内置脚本的灵活性，但我那邪恶的小脑瓜立刻开始想滥用它的办法。我可以在 TxOut 脚本里编码各种有趣的信息，如果未被 hack 的客户端验证后忽略这些交易，它就成了一个有用的隐蔽广播通信信道。</p><p>在它流行起来、有人觉得\"把最新的 Lady Gaga 视频用上百万笔交易灌进支付网络发给所有朋友\"很好玩之前，这确实是个很酷的特性……</p>","zhText":"我不相信 Bitcoin 的第二个兼容实现会是个好主意。这个设计有太多部分依赖所有节点以步进一致的方式得到完全相同的结果，第二个实现将是网络的威胁。MIT 许可与所有其他许可及商业用途兼容，故从许可的角度也没有重写的必要。\n\n好主意也罢坏主意也罢，迟早会有人试图搅乱网络（或把它挪作己用）。他们要么 hack 现有代码，要么自己写一个版本，都会成为网络的威胁。\n我欣赏交易内置脚本的灵活性，但我那邪恶的小脑瓜立刻开始想滥用它的办法。我可以在 TxOut 脚本里编码各种有趣的信息，如果未被 hack 的客户端验证后忽略这些交易，它就成了一个有用的隐蔽广播通信信道。\n在它流行起来、有人觉得\"把最新的 Lady Gaga 视频用上百万笔交易灌进支付网络发给所有朋友\"很好玩之前，这确实是个很酷的特性……"},{"id":462,"sid":null,"sat":0,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"D҉ataWraith","date":"2010-06-18","ts":"2010-06-18T14:08:23Z","url":"https://bitcointalk.org/index.php?topic=84.msg1616#msg1616","zh":"<p>我认为 eMule 为它的 KAD 网络做引导的方式已接近最优：</p><p>已知节点列表存在一个文件里（nodes.dat），每个客户端在该文件里维护一份已知节点列表（按最长在线时间排序，我记得——这是 Kademlia 的固有属性，但依然是个好主意）。发布的客户端应附带这样一份文件，内含几个静态 IP 上的可靠节点地址，新客户端可以从中获取更多可连接的地址（进而存进自己的文件）。</p><p>如果\"种子列表\"过时了，或服务器关停了什么的，你只要找网络里的*任何人*发布他的节点文件（比如传到 rapidshare），瞧，你就有一份全新的可连接 IP 列表了。</p>","zhText":"我认为 eMule 为它的 KAD 网络做引导的方式已接近最优：\n已知节点列表存在一个文件里（nodes.dat），每个客户端在该文件里维护一份已知节点列表（按最长在线时间排序，我记得——这是 Kademlia 的固有属性，但依然是个好主意）。发布的客户端应附带这样一份文件，内含几个静态 IP 上的可靠节点地址，新客户端可以从中获取更多可连接的地址（进而存进自己的文件）。\n如果\"种子列表\"过时了，或服务器关停了什么的，你只要找网络里的*任何人*发布他的节点文件（比如传到 rapidshare），瞧，你就有一份全新的可连接 IP 列表了。"},{"id":760,"sid":127,"sat":1,"tid":69,"tt":"Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-18","ts":"2010-06-18T16:17:14Z","url":"https://bitcointalk.org/index.php?topic=195.msg1617#msg1617","zh":"<p>对我来说，第二个版本将是巨大的开发和维护麻烦。在升级网络的同时保持向后兼容已经够难了，再来一个版本把事情锁死就更难。倘若第二个版本搞砸了，用户体验会让两者都蒙羞，尽管它至少能让用户更明白紧跟官方版本的重要性。如果有人准备分叉出第二个版本，我不得不大张旗鼓地声明使用少数派版本的种种风险。这个设计的规则是：一旦有分歧，多数派版本获胜——这对少数派版本可能相当难看，我不想展开，而且只要只有一个版本，我就不必面对它。</p><p>我知道，大多数开发者都不喜欢自己的软件被分叉，但在这个案例里我有实实在在的技术理由。</p><blockquote><p>我欣赏交易内置脚本的灵活性，但我那邪恶的小脑瓜立刻开始想滥用它的办法。我可以在 TxOut 脚本里编码各种有趣的信息，如果未被 hack 的客户端验证后忽略这些交易，它就成了一个有用的隐蔽广播通信信道。</p><p>在它流行起来、有人觉得\"把最新的 Lady Gaga 视频用上百万笔交易灌进支付网络发给所有朋友\"很好玩之前，这确实是个很酷的特性……</p></blockquote><p>这正是交易费存在的原因之一。必要的话我们还有别的办法。</p><blockquote><p>Satoshi，这个设计你做了多久了？它看起来深思熟虑，不是那种没经过大量头脑风暴和讨论、坐下来就写代码的东西。每个人都在用显而易见的问题找它的漏洞，但它一直站得住脚。</p></blockquote><p>从 2007 年开始。某一刻我确信存在一种完全不需要信任的做法，从此欲罢不能地一直想下去。工作量里设计远多于编码。</p><p>幸运的是，到目前为止被提出的问题，都是我以前考虑过并做了规划的。</p>","zhText":"对我来说，第二个版本将是巨大的开发和维护麻烦。在升级网络的同时保持向后兼容已经够难了，再来一个版本把事情锁死就更难。倘若第二个版本搞砸了，用户体验会让两者都蒙羞，尽管它至少能让用户更明白紧跟官方版本的重要性。如果有人准备分叉出第二个版本，我不得不大张旗鼓地声明使用少数派版本的种种风险。这个设计的规则是：一旦有分歧，多数派版本获胜——这对少数派版本可能相当难看，我不想展开，而且只要只有一个版本，我就不必面对它。\n我知道，大多数开发者都不喜欢自己的软件被分叉，但在这个案例里我有实实在在的技术理由。\n我欣赏交易内置脚本的灵活性，但我那邪恶的小脑瓜立刻开始想滥用它的办法。我可以在 TxOut 脚本里编码各种有趣的信息，如果未被 hack 的客户端验证后忽略这些交易，它就成了一个有用的隐蔽广播通信信道。\n在它流行起来、有人觉得\"把最新的 Lady Gaga 视频用上百万笔交易灌进支付网络发给所有朋友\"很好玩之前，这确实是个很酷的特性……\n\n这正是交易费存在的原因之一。必要的话我们还有别的办法。\nSatoshi，这个设计你做了多久了？它看起来深思熟虑，不是那种没经过大量头脑风暴和讨论、坐下来就写代码的东西。每个人都在用显而易见的问题找它的漏洞，但它一直站得住脚。\n\n从 2007 年开始。某一刻我确信存在一种完全不需要信任的做法，从此欲罢不能地一直想下去。工作量里设计远多于编码。\n幸运的是，到目前为止被提出的问题，都是我以前考虑过并做了规划的。"},{"id":463,"sid":128,"sat":1,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-18","ts":"2010-06-18T17:28:18Z","url":"https://bitcointalk.org/index.php?topic=84.msg1619#msg1619","zh":"<p>SVN 版本现在先用 IRC，失败则回退到一份硬编码的种子节点列表。现在种子节点已经够多，到下个发布时其中许多应该还在运行。它只短暂连上一个种子节点取回地址列表就断开，所以你的连接数会有一阵掉回零。那时请耐心点。只有第一次连接才慢。</p><p>这意味着 TOR 用户不再需要 -addnode，它会自动连上。</p>","zhText":"SVN 版本现在先用 IRC，失败则回退到一份硬编码的种子节点列表。现在种子节点已经够多，到下个发布时其中许多应该还在运行。它只短暂连上一个种子节点取回地址列表就断开，所以你的连接数会有一阵掉回零。那时请耐心点。只有第一次连接才慢。\n这意味着 TOR 用户不再需要 -addnode，它会自动连上。"},{"id":738,"sid":129,"sat":1,"tid":66,"tt":"Get 5 free bitcoins from freebitcoins.appspot.com","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-18","ts":"2010-06-18T23:08:34Z","url":"https://bitcointalk.org/index.php?topic=183.msg1620#msg1620","zh":"<p>第一个项目选得极好，干得漂亮。如果没人做，我本来也打算做这件事：等生成 50BTC 对凡人来说变得太难时，新用户能立刻拿到一些硬币把玩。捐赠应该能维持它的水量。显示水龙头余额的展示会鼓励人们给它续水。</p><p>你应该在页面上放一个捐赠比特币地址，供想往里添水的人使用——理想情况下，每当它收到东西就自动换一个新地址。</p>","zhText":"第一个项目选得极好，干得漂亮。如果没人做，我本来也打算做这件事：等生成 50BTC 对凡人来说变得太难时，新用户能立刻拿到一些硬币把玩。捐赠应该能维持它的水量。显示水龙头余额的展示会鼓励人们给它续水。\n你应该在页面上放一个捐赠比特币地址，供想往里添水的人使用——理想情况下，每当它收到东西就自动换一个新地址。"},{"id":551,"sid":null,"sat":0,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"virtualcoin","date":"2010-06-21","ts":"2010-06-21T13:28:02Z","url":"https://bitcointalk.org/index.php?topic=149.msg1639#msg1639","zh":"<p>我不觉得难看。如果你愿意，可以把按钮换回右边，搜一下就有教程。</p>","zhText":"我不觉得难看。如果你愿意，可以把按钮换回右边，搜一下就有教程。"},{"id":770,"sid":null,"sat":0,"tid":71,"tt":"Dying bitcoins","src":"Bitcointalk","author":"laszlo","date":"2010-06-21","ts":"2010-06-21T13:54:29Z","url":"https://bitcointalk.org/index.php?topic=198.msg1640#msg1640","zh":"<p>它们永远地丢了。想象有人把钱包丢进了大海。看起来是个问题，其实没那么要紧。人们成天弄丢金首饰，但对黄金的价值没多大影响。</p><p>不过我好奇，会不会有这么一个点：生成新 coinbase 的难度高到一定程度，尝试找回丢失硬币的密钥、或者偷别人的硬币反而更划算？那难度确实极高，所以眼下生成划算得多，但我只是想知道真实数字……那会不会有朝一日变得更高产？也许 Satoshi 能谈谈这个……</p>","zhText":"它们永远地丢了。想象有人把钱包丢进了大海。看起来是个问题，其实没那么要紧。人们成天弄丢金首饰，但对黄金的价值没多大影响。\n不过我好奇，会不会有这么一个点：生成新 coinbase 的难度高到一定程度，尝试找回丢失硬币的密钥、或者偷别人的硬币反而更划算？那难度确实极高，所以眼下生成划算得多，但我只是想知道真实数字……那会不会有朝一日变得更高产？也许 Satoshi 能谈谈这个……"},{"id":774,"sid":null,"sat":0,"tid":71,"tt":"Dying bitcoins","src":"Bitcointalk","author":"laszlo","date":"2010-06-21","ts":"2010-06-21T16:33:00Z","url":"https://bitcointalk.org/index.php?topic=198.msg1645#msg1645","zh":"<p>当前用户界面不支持小于 0.01 的增量，但未来的修订可以支持它。</p>","zhText":"当前用户界面不支持小于 0.01 的增量，但未来的修订可以支持它。"},{"id":552,"sid":130,"sat":1,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-21","ts":"2010-06-21T17:20:21Z","url":"https://bitcointalk.org/index.php?topic=149.msg1646#msg1646","zh":"<blockquote><p>Bitcoin 在 Ubuntu 的新默认主题下很难看。似乎有一部分（但不是全部）主题设置被应用了。未选中的文件菜单应该是浅色文字配深色背景，但它错误地变成了浅色文字配浅色背景。两者太接近，在我的显示器上根本读不清。应该在下一个稳定版发布前修掉。</p></blockquote><p>这在 SVN 版本里已经修了。\n1) 菜单栏默认颜色。\n2) 余额栏不再是另一种颜色。\n3) 比特币地址和余额背后的背景现在与工具栏同色。</p><p>我检查了所有标准主题，在它们之下看起来都正常。</p><p>Ubuntu 把最小化、最大化、关闭按钮移到右边：\ngconf-editor\napps->metacity->general\nbutton_layout=menu:minimize,maximize,close</p><p>考虑到 10 个用户里有 9 个都习惯按钮在右边，这个设置藏得也太深了。</p>","zhText":"Bitcoin 在 Ubuntu 的新默认主题下很难看。似乎有一部分（但不是全部）主题设置被应用了。未选中的文件菜单应该是浅色文字配深色背景，但它错误地变成了浅色文字配浅色背景。两者太接近，在我的显示器上根本读不清。应该在下一个稳定版发布前修掉。\n\n这在 SVN 版本里已经修了。\n1) 菜单栏默认颜色。\n2) 余额栏不再是另一种颜色。\n3) 比特币地址和余额背后的背景现在与工具栏同色。\n我检查了所有标准主题，在它们之下看起来都正常。\nUbuntu 把最小化、最大化、关闭按钮移到右边：\ngconf-editor\napps->metacity->general\nbutton_layout=menu:minimize,maximize,close\n考虑到 10 个用户里有 9 个都习惯按钮在右边，这个设置藏得也太深了。"},{"id":775,"sid":131,"sat":1,"tid":71,"tt":"Dying bitcoins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-21","ts":"2010-06-21T17:48:26Z","url":"https://bitcointalk.org/index.php?topic=198.msg1647#msg1647","zh":"<p>丢失的硬币只会让其他人的硬币略微升值。把它想成捐给所有人。</p><blockquote><p>不过我好奇，会不会有这么一个点：生成新 coinbase 的难度高到一定程度，尝试找回丢失硬币的密钥、或者偷别人的硬币反而更划算？那难度确实极高，所以眼下生成划算得多，但我只是想知道真实数字……那会不会有朝一日变得更高产？也许 Satoshi 能谈谈这个……</p></blockquote><p>计算机还得再快大约 2^200 倍，那才会开始成为问题。拥有大量算力的人，靠生成挣钱比试图去偷更多。</p>","zhText":"丢失的硬币只会让其他人的硬币略微升值。把它想成捐给所有人。\n不过我好奇，会不会有这么一个点：生成新 coinbase 的难度高到一定程度，尝试找回丢失硬币的密钥、或者偷别人的硬币反而更划算？那难度确实极高，所以眼下生成划算得多，但我只是想知道真实数字……那会不会有朝一日变得更高产？也许 Satoshi 能谈谈这个……\n\n计算机还得再快大约 2^200 倍，那才会开始成为问题。拥有大量算力的人，靠生成挣钱比试图去偷更多。"},{"id":223,"sid":132,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-21","ts":"2010-06-21T18:09:17Z","url":"https://bitcointalk.org/index.php?topic=43.msg1648#msg1648","zh":"<p>我把哈希表（hashmeter）的设想集成进了 SVN 版本。它在状态栏左半区显示 khash/s。</p><p>新增两条日志消息：\n21/06/2010 01:23 hashmeter   2 CPUs    799 khash/s\n21/06/2010 01:23 generated 50.00</p><p>在 debug.log 里 grep \"generated\" 看你生成过什么，grep \"hashmeter\" 看性能。Windows 上用：\n findstr \"hashmeter generated\" \"%appdata%\\bitcoin\\debug.log\"</p><p>我的 hashmeter 消息每小时一条。你觉得应该多久一次？</p>","zhText":"我把哈希表（hashmeter）的设想集成进了 SVN 版本。它在状态栏左半区显示 khash/s。\n新增两条日志消息：\n21/06/2010 01:23 hashmeter 2 CPUs 799 khash/s\n21/06/2010 01:23 generated 50.00\n在 debug.log 里 grep \"generated\" 看你生成过什么，grep \"hashmeter\" 看性能。Windows 上用：\n findstr \"hashmeter generated\" \"%appdata%\\bitcoin\\debug.log\"\n我的 hashmeter 消息每小时一条。你觉得应该多久一次？"},{"id":553,"sid":null,"sat":0,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"lachesis","date":"2010-06-22","ts":"2010-06-22T02:04:14Z","url":"https://bitcointalk.org/index.php?topic=149.msg1650#msg1650","zh":"<p>Satoshi，这确实让它在 Ubuntu 上好看了，但现在 Bitcoin 在 Ubuntu 10.04 上无法最小化到托盘了。正确的复选框已勾选，但它还是像往常一样最小化到任务栏。</p>","zhText":"Satoshi，这确实让它在 Ubuntu 上好看了，但现在 Bitcoin 在 Ubuntu 10.04 上无法最小化到托盘了。正确的复选框已勾选，但它还是像往常一样最小化到任务栏。"},{"id":767,"sid":null,"sat":0,"tid":70,"tt":"How fast do the fastest computers generate bitcoins?","src":"Bitcointalk","author":"Vasiliev","date":"2010-06-22","ts":"2010-06-22T02:43:00Z","url":"https://bitcointalk.org/index.php?topic=197.msg1652#msg1652","zh":"<blockquote><p>100 枚/天听着相当不错……网络连接速度有影响吗？还有，你的计算机连续连接了多久有影响吗？</p></blockquote><p>没有\n而且你只有在拿到全部区块后才能生成，所以启动 Bitcoin 的头几分钟不会生成。过了那阵就没影响。</p>","zhText":"100 枚/天听着相当不错……网络连接速度有影响吗？还有，你的计算机连续连接了多久有影响吗？\n\n没有\n而且你只有在拿到全部区块后才能生成，所以启动 Bitcoin 的头几分钟不会生成。过了那阵就没影响。"},{"id":554,"sid":133,"sat":1,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T03:45:56Z","url":"https://bitcointalk.org/index.php?topic=149.msg1653#msg1653","zh":"<p>在 Ubuntu 10.04 上它无法干净地移除任务栏按钮，所以我让它把按钮留在那儿。</p><p>不过既然你提了，这个功能哪怕乱一点也比没有强——尽管任务栏按钮暂时还在、点击一下才消失，这可能会让一些人困惑。</p><p>SVN 已更新。</p><p>谢谢测试。</p>","zhText":"在 Ubuntu 10.04 上它无法干净地移除任务栏按钮，所以我让它把按钮留在那儿。\n不过既然你提了，这个功能哪怕乱一点也比没有强——尽管任务栏按钮暂时还在、点击一下才消失，这可能会让一些人困惑。\nSVN 已更新。\n谢谢测试。"},{"id":776,"sid":134,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T04:01:53Z","url":"https://bitcointalk.org/index.php?topic=199.msg1654#msg1654","zh":"<p>我清单上为 0.3 版要做的全部事项都完成了。SVN 上的代码差不多可以发布了。</p><p>此刻的测试将不胜感激。</p>","zhText":"我清单上为 0.3 版要做的全部事项都完成了。SVN 上的代码差不多可以发布了。\n此刻的测试将不胜感激。"},{"id":768,"sid":135,"sat":1,"tid":70,"tt":"How fast do the fastest computers generate bitcoins?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T04:35:26Z","url":"https://bitcointalk.org/index.php?topic=197.msg1656#msg1656","zh":"<p>我注意到哈希性能在不同 CPU 之间的差距没有预期的大。与老 CPU 相比，新 CPU 在哈希上的提速远不如它在通用基准测试上的表现。</p><p>我猜近来的 CPU 优化肯定集中在 I/O 和分支预测之类的方面。大多数程序无非是一堆内存访问、比较和跳转，很少会长时间埋头做数学运算。</p><p>最新的 SVN 版本有 khash/s 显示。每个处理器大约 400 khash/s 是典型水平。</p>","zhText":"我注意到哈希性能在不同 CPU 之间的差距没有预期的大。与老 CPU 相比，新 CPU 在哈希上的提速远不如它在通用基准测试上的表现。\n我猜近来的 CPU 优化肯定集中在 I/O 和分支预测之类的方面。大多数程序无非是一堆内存访问、比较和跳转，很少会长时间埋头做数学运算。\n最新的 SVN 版本有 khash/s 显示。每个处理器大约 400 khash/s 是典型水平。"},{"id":555,"sid":null,"sat":0,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"lachesis","date":"2010-06-22","ts":"2010-06-22T06:17:52Z","url":"https://bitcointalk.org/index.php?topic=149.msg1657#msg1657","zh":"<p>是的，r89 在我这里按预期工作。创建和移除图标似乎都没问题，不过我用的是 XFCE，也许差别就在这里。</p><p>另外，Windows 和 Linux 上托盘图标的标准行为有差异。在大多数 Linux 应用里，应用窗口开着时点击托盘按钮会让窗口再次收起。我个人比 Windows 默认行为更喜欢这个——在 Windows 上，主窗口显示后单击托盘什么都不做。这个特性有可能加到 Linux 版里吗？</p>","zhText":"是的，r89 在我这里按预期工作。创建和移除图标似乎都没问题，不过我用的是 XFCE，也许差别就在这里。\n另外，Windows 和 Linux 上托盘图标的标准行为有差异。在大多数 Linux 应用里，应用窗口开着时点击托盘按钮会让窗口再次收起。我个人比 Windows 默认行为更喜欢这个——在 Windows 上，主窗口显示后单击托盘什么都不做。这个特性有可能加到 Linux 版里吗？"},{"id":778,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"lachesis","date":"2010-06-22","ts":"2010-06-22T06:20:02Z","url":"https://bitcointalk.org/index.php?topic=199.msg1658#msg1658","zh":"<p>非常好！确实有一些重大改进，包括 hashmeter、RPC 支持和命令行守护进程。不过 listtransactions RPC 方法要是能在下个版本前完成就好了。另外，JSON-RPC 方法里应该加些代码列出 dHashesPerSec。</p><p>干得漂亮 Satoshi！</p>","zhText":"非常好！确实有一些重大改进，包括 hashmeter、RPC 支持和命令行守护进程。不过 listtransactions RPC 方法要是能在下个版本前完成就好了。另外，JSON-RPC 方法里应该加些代码列出 dHashesPerSec。\n干得漂亮 Satoshi！"},{"id":781,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"sirius","date":"2010-06-22","ts":"2010-06-22T14:20:31Z","url":"https://bitcointalk.org/index.php?topic=199.msg1664#msg1664","zh":"<blockquote><p>我们该试着做点宣传吗？如果能上 Slashdot 那就很好。</p><p>我的若干投稿曾被采纳，但总是经过一位如今已不在那里工作的编辑。还有别人有 Slashdot 门路吗？</p></blockquote><p>我们应该争取曝光，并把宣传战役集中在发布之后的窗口期以获得最大冲击：同步在论坛、irc、Youtube、Facebook、Google Ads 和其他地方打广告。拥有数百万懂技术读者的 Slashdot 会非常棒，也许是能想象的最好渠道！我只希望服务器扛得住被\"slashdotted\"。也许应该提前扩容以防万一。</p>","zhText":"我们该试着做点宣传吗？如果能上 Slashdot 那就很好。\n我的若干投稿曾被采纳，但总是经过一位如今已不在那里工作的编辑。还有别人有 Slashdot 门路吗？\n\n我们应该争取曝光，并把宣传战役集中在发布之后的窗口期以获得最大冲击：同步在论坛、irc、Youtube、Facebook、Google Ads 和其他地方打广告。拥有数百万懂技术读者的 Slashdot 会非常棒，也许是能想象的最好渠道！我只希望服务器扛得住被\"slashdotted\"。也许应该提前扩容以防万一。"},{"id":224,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-06-22","ts":"2010-06-22T16:04:46Z","url":"https://bitcointalk.org/index.php?topic=43.msg1667#msg1667","zh":"<blockquote><p>要不要在选项菜单里加个开关，可以打开或关闭它，并指定显示间隔（分钟）？</p></blockquote><p>我说保持简单吧；选项多不一定更好，只会让大多数用户不知所措、一头雾水。</p>","zhText":"要不要在选项菜单里加个开关，可以打开或关闭它，并指定显示间隔（分钟）？\n\n我说保持简单吧；选项多不一定更好，只会让大多数用户不知所措、一头雾水。"},{"id":556,"sid":136,"sat":1,"tid":55,"tt":"Bitcoin in Ubuntu 10.04","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T16:39:43Z","url":"https://bitcointalk.org/index.php?topic=149.msg1668#msg1668","zh":"<p>现在改 0.3 的功能已经太晚了，但我会把它加进 0.3 之后的待办清单。你不说我永远注意不到这点。</p>","zhText":"现在改 0.3 的功能已经太晚了，但我会把它加进 0.3 之后的待办清单。你不说我永远注意不到这点。"},{"id":225,"sid":137,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T16:51:14Z","url":"https://bitcointalk.org/index.php?topic=43.msg1669#msg1669","zh":"<p>同意。这种小事当然不值得去搅扰用户的注意力。</p><p>我改成了每 30 分钟一次。</p><p>如果我加频到每 10 分钟一次，它在日志文件里的存在感也还是足够小。问题只在于 grep 时输出会不会比用户想要的多。</p>","zhText":"同意。这种小事当然不值得去搅扰用户的注意力。\n我改成了每 30 分钟一次。\n如果我加频到每 10 分钟一次，它在日志文件里的存在感也还是足够小。问题只在于 grep 时输出会不会比用户想要的多。"},{"id":782,"sid":138,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T17:02:07Z","url":"https://bitcointalk.org/index.php?topic=199.msg1670#msg1670","zh":"<blockquote><p>不过 listtransactions RPC 方法要是能在下个版本前完成就好了。</p></blockquote><p>我担心太多程序员会拿它去检查收款。那样永远不可靠。list/getreceivedbyaddress/label 函数才是可靠的做法。</p><p>我们不该为了等每个可能的特性都完成而无限期拖延。永远都会有一件事等着做。</p>","zhText":"不过 listtransactions RPC 方法要是能在下个版本前完成就好了。\n\n我担心太多程序员会拿它去检查收款。那样永远不可靠。list/getreceivedbyaddress/label 函数才是可靠的做法。\n我们不该为了等每个可能的特性都完成而无限期拖延。永远都会有一件事等着做。"},{"id":783,"sid":139,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T17:37:08Z","url":"https://bitcointalk.org/index.php?topic=199.msg1671#msg1671","zh":"<p>这是供测试的 windows 版 RC1：\n（已移除，见下方 RC2）</p><p>请只在打算测试并回报一切是否正常时下载它。务必翻看 \"c:\\program files\\bitcoin\" 里的文件。</p>","zhText":"这是供测试的 windows 版 RC1：\n（已移除，见下方 RC2）\n请只在打算测试并回报一切是否正常时下载它。务必翻看 \"c:\\program files\\bitcoin\" 里的文件。"},{"id":785,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"HostFat","date":"2010-06-22","ts":"2010-06-22T19:08:09Z","url":"https://bitcointalk.org/index.php?topic=199.msg1674#msg1674","zh":"<blockquote><p>EXCEPTION: 22DbRunRecoveryException\nDBENv::open: DB_RUNRECOVERY: Fatal error, run database recovery\nC:\\Program Files\\Bitcoin\\bitcoin.exe in OnInit()</p></blockquote><p>我有同样的问题 :|</p>","zhText":"EXCEPTION: 22DbRunRecoveryException\nDBENv::open: DB_RUNRECOVERY: Fatal error, run database recovery\nC:\\Program Files\\Bitcoin\\bitcoin.exe in OnInit()\n\n我有同样的问题 :|"},{"id":786,"sid":140,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T19:11:41Z","url":"https://bitcointalk.org/index.php?topic=199.msg1675#msg1675","zh":"<blockquote><p>EXCEPTION: 22DbRunRecoveryException\nDBENv::open: DB_RUNRECOVERY: Fatal error, run database recovery\nC:\\Program Files\\Bitcoin\\bitcoin.exe in OnInit()</p></blockquote><p>什么操作系统？</p><p>通常它这样做是因为数据目录该在的那个目录不存在。看看 \"%appdata%\" 目录是否存在。</p><p>0.2 也有这个错误吗？很难想象你在 0.3 上遇到它而在 0.2 上没有——这方面并没有什么不同。</p>","zhText":"EXCEPTION: 22DbRunRecoveryException\nDBENv::open: DB_RUNRECOVERY: Fatal error, run database recovery\nC:\\Program Files\\Bitcoin\\bitcoin.exe in OnInit()\n\n什么操作系统？\n通常它这样做是因为数据目录该在的那个目录不存在。看看 \"%appdata%\" 目录是否存在。\n0.2 也有这个错误吗？很难想象你在 0.3 上遇到它而在 0.2 上没有——这方面并没有什么不同。"},{"id":787,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"HostFat","date":"2010-06-22","ts":"2010-06-22T19:14:39Z","url":"https://bitcointalk.org/index.php?topic=199.msg1676#msg1676","zh":"<p>Windows 7 x64 ENG\n4 GB RAM\nIntel i7 860</p><p>在用你的版本之前，我用的是 laszlo 构建的 v0.2.10。</p>","zhText":"Windows 7 x64 ENG\n4 GB RAM\nIntel i7 860\n在用你的版本之前，我用的是 laszlo 构建的 v0.2.10。"},{"id":788,"sid":141,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T19:25:13Z","url":"https://bitcointalk.org/index.php?topic=199.msg1677#msg1677","zh":"<p>davidonpda，你之前也是跑的 laszlo 构建吗？</p><p>检查 \"%appdata%\" 目录是否存在，以及 \"%appdata%\\bitcoin\"</p><p>试试：\n rename \"%appdata%\\bitcoin\" bitcoin2</p><p>那样能行吗？</p>","zhText":"davidonpda，你之前也是跑的 laszlo 构建吗？\n检查 \"%appdata%\" 目录是否存在，以及 \"%appdata%\\bitcoin\"\n试试：\n rename \"%appdata%\\bitcoin\" bitcoin2\n那样能行吗？"},{"id":789,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"HostFat","date":"2010-06-22","ts":"2010-06-22T19:33:24Z","url":"https://bitcointalk.org/index.php?topic=199.msg1678#msg1678","zh":"<blockquote><p>检查 \"%appdata%\" 目录是否存在，以及 \"%appdata%\\bitcoin\"</p></blockquote><p>两者都存在</p><blockquote><p>试试：\n rename \"%appdata%\\bitcoin\" bitcoin2</p><p>那样能行吗？</p></blockquote><p>行，能用了。</p><p>于是我关掉它，把旧文件夹里的 wallet.dat 拷到新文件夹，现在它正在下载区块。\n地址簿和旧转账看起来正常，但旧的\"生成硬币\"一枚都没有……我只需要等？\n无论如何，我随时可以退回旧的 v0.2.10。</p><p>编辑：\n我又做了件事。\n关掉它，把旧文件夹里的 addr.dat / blk0001.dat / blkindex.dat 拷到新文件夹。\n重启 bitcoin（v0.30），现在看起来一切正常。（我现在也能看到旧的生成硬币了）\n我只是没有拷贝数据库文件夹里的 \"log.0000000002\"……</p>","zhText":"检查 \"%appdata%\" 目录是否存在，以及 \"%appdata%\\bitcoin\"\n\n两者都存在\n试试：\n rename \"%appdata%\\bitcoin\" bitcoin2\n那样能行吗？\n\n行，能用了。\n于是我关掉它，把旧文件夹里的 wallet.dat 拷到新文件夹，现在它正在下载区块。\n地址簿和旧转账看起来正常，但旧的\"生成硬币\"一枚都没有……我只需要等？\n无论如何，我随时可以退回旧的 v0.2.10。\n编辑：\n我又做了件事。\n关掉它，把旧文件夹里的 addr.dat / blk0001.dat / blkindex.dat 拷到新文件夹。\n重启 bitcoin（v0.30），现在看起来一切正常。（我现在也能看到旧的生成硬币了）\n我只是没有拷贝数据库文件夹里的 \"log.0000000002\"……"},{"id":790,"sid":142,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T19:46:23Z","url":"https://bitcointalk.org/index.php?topic=199.msg1679#msg1679","zh":"<p>你比我发回复还快就自己搞明白了。</p><p>看起来 laszlo 构建的 Berkeley DB 带的 database/log.* 文件与我们的不兼容。.dat 文件没问题，它们的格式不应改变。所有数据都存在 .dat 文件里。你自己的所有数据都存在 wallet.dat 里。如果你当时等它重新下载区块链，你的缺失交易和生成记录就会随着区块链推进到那些交易被记录的位置而出现。</p><p>你把目录拷了过来、只排除 log.0000000002，那是最好的解法。现在应该没问题了。</p><p>database/log.* 文件只包含临时数据库数据。如果你上次是正常退出 bitcoin 的——不是被强杀或崩溃——那么 database/log.* 文件通常可以安全删除。它们只在这种情况有用：当数据库正处于一笔交易中途时计算机崩溃、或程序被杀或崩溃，它可以无数据丢失地恢复。</p><p>请尽量继续使用 v0.3，别退回 v0.2.10。</p><p>其他遇到这个问题的人：把 database\\log.000000000* 文件挪到别处去。（如果之后一切正常，可以稍后删掉它们）</p><p>我不愿让安装程序去删除或移动那些文件。如果上一次运行是崩溃或被杀而停止的，那样做就是错的。</p>","zhText":"你比我发回复还快就自己搞明白了。\n看起来 laszlo 构建的 Berkeley DB 带的 database/log.* 文件与我们的不兼容。.dat 文件没问题，它们的格式不应改变。所有数据都存在 .dat 文件里。你自己的所有数据都存在 wallet.dat 里。如果你当时等它重新下载区块链，你的缺失交易和生成记录就会随着区块链推进到那些交易被记录的位置而出现。\n你把目录拷了过来、只排除 log.0000000002，那是最好的解法。现在应该没问题了。\ndatabase/log.* 文件只包含临时数据库数据。如果你上次是正常退出 bitcoin 的——不是被强杀或崩溃——那么 database/log.* 文件通常可以安全删除。它们只在这种情况有用：当数据库正处于一笔交易中途时计算机崩溃、或程序被杀或崩溃，它可以无数据丢失地恢复。\n请尽量继续使用 v0.3，别退回 v0.2.10。\n其他遇到这个问题的人：把 database\\log.000000000* 文件挪到别处去。（如果之后一切正常，可以稍后删掉它们）\n我不愿让安装程序去删除或移动那些文件。如果上一次运行是崩溃或被杀而停止的，那样做就是错的。"},{"id":793,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"lachesis","date":"2010-06-22","ts":"2010-06-22T22:00:47Z","url":"https://bitcointalk.org/index.php?topic=199.msg1685#msg1685","zh":"<p>是的，0.3.0 似乎比带 Laszlo 性能补丁的 svn r84 有性能提升。</p>","zhText":"是的，0.3.0 似乎比带 Laszlo 性能补丁的 svn r84 有性能提升。"},{"id":794,"sid":143,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-22","ts":"2010-06-22T22:23:39Z","url":"https://bitcointalk.org/index.php?topic=199.msg1686#msg1686","zh":"<p>Laszlo 发现开启更多优化能把性能提高约 20%，所以 0.3 比 0.2.0 的哈希速度快 20%，但我猜他自己的构建里已经用了。</p><p>30khash 的提升是相对什么总速率？（好算百分比）</p>","zhText":"Laszlo 发现开启更多优化能把性能提高约 20%，所以 0.3 比 0.2.0 的哈希速度快 20%，但我猜他自己的构建里已经用了。\n30khash 的提升是相对什么总速率？（好算百分比）"},{"id":795,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Vasiliev","date":"2010-06-22","ts":"2010-06-22T23:07:30Z","url":"https://bitcointalk.org/index.php?topic=199.msg1687#msg1687","zh":"<p>对我来说比 Laszlo 的构建<b>快得多</b>。我的 Intel Core 2 Duo E8500 从 600-700khash/s 提到 1000-1100khash/s。笔记本 i7 从 700-800khash/s 到约 1100khash/s。</p><p>编辑：在安装程序里保持勾选 \"Run Bitcoin\" 似乎会让首次启动时以管理员权限运行。（在 Win7 上）</p>","zhText":"对我来说比 Laszlo 的构建快得多。我的 Intel Core 2 Duo E8500 从 600-700khash/s 提到 1000-1100khash/s。笔记本 i7 从 700-800khash/s 到约 1100khash/s。\n编辑：在安装程序里保持勾选 \"Run Bitcoin\" 似乎会让首次启动时以管理员权限运行。（在 Win7 上）"},{"id":796,"sid":144,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-24","ts":"2010-06-24T17:40:05Z","url":"https://bitcointalk.org/index.php?topic=199.msg1748#msg1748","zh":"<p>这是供测试的 linux 版 RC1：\n（链接已移除，见下方）</p><p>它同时包含 32 位和 64 位二进制。</p><p>近期改动：</p><p>build-unix.txt:\n- 增加了构建 wxBase 的说明，编译 bitcoind 需要它。\n- libboost-dev 包不再安装任何东西，你需要改用 libboost-all-dev。\n- 更新了版本号。</p><p>makefile.unix:\n- libboost 库在 1.40 里从文件名中去掉了 \"-mt\"。如果你用 Boost 1.38 或更低版本编译，比如在 Ubuntu Karmic 上，你需要把它改回 boost_system-mt 和 boost_filesystem-mt。</p>","zhText":"这是供测试的 linux 版 RC1：\n（链接已移除，见下方）\n它同时包含 32 位和 64 位二进制。\n近期改动：\nbuild-unix.txt:\n- 增加了构建 wxBase 的说明，编译 bitcoind 需要它。\n- libboost-dev 包不再安装任何东西，你需要改用 libboost-all-dev。\n- 更新了版本号。\nmakefile.unix:\n- libboost 库在 1.40 里从文件名中去掉了 \"-mt\"。如果你用 Boost 1.38 或更低版本编译，比如在 Ubuntu Karmic 上，你需要把它改回 boost_system-mt 和 boost_filesystem-mt。"},{"id":799,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Vasiliev","date":"2010-06-24","ts":"2010-06-24T23:26:03Z","url":"https://bitcointalk.org/index.php?topic=199.msg1758#msg1758","zh":"<p>Ubuntu 9.04 x86:</p><p>vlad@vlad:~/bitcoin/bin/32$ ./bitcoind\n./bitcoind: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./bitcoind)</p><p>有人知道 Bitcoin 需要什么吗？</p>","zhText":"Ubuntu 9.04 x86:\nvlad@vlad:~/bitcoin/bin/32$ ./bitcoind\n./bitcoind: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./bitcoind)\n有人知道 Bitcoin 需要什么吗？"},{"id":800,"sid":145,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-25","ts":"2010-06-25T02:17:41Z","url":"https://bitcointalk.org/index.php?topic=199.msg1760#msg1760","zh":"<p>我不知道。也许更有 Linux 经验的人知道怎么装它需要的库。</p><p>我是在 Ubuntu 10.04 上构建的。我希望那不是个错误。也许应该构建在更老的版本上以获得更多向后兼容。Linux 上有这个问题吗：在最新版上构建，在旧版上就不好使？在 10.04 上我有什么办法降级到旧版 GCC 吗？</p><p>64 位版不应比 32 位版快，但如果有人能对两个 linux 版本做一次并排对比、核实一下就太好了。SHA-256 是 32 位算法，BitcoinMiner 里完全没有用到 64 位。</p><p>Windows 我们不必费心做 64 位版。32 位程序能在所有版本的 Windows 上运行。不像 Linux，64 位系统非要用 64 位程序。</p><p>我也好奇它在 linux 上是不是比 windows 上稍快一点。</p><p>你觉得我该把目录做成：\n/bin32/\n/bin64/\n还是\n/bin/32/\n/bin/64/</p>","zhText":"我不知道。也许更有 Linux 经验的人知道怎么装它需要的库。\n我是在 Ubuntu 10.04 上构建的。我希望那不是个错误。也许应该构建在更老的版本上以获得更多向后兼容。Linux 上有这个问题吗：在最新版上构建，在旧版上就不好使？在 10.04 上我有什么办法降级到旧版 GCC 吗？\n64 位版不应比 32 位版快，但如果有人能对两个 linux 版本做一次并排对比、核实一下就太好了。SHA-256 是 32 位算法，BitcoinMiner 里完全没有用到 64 位。\nWindows 我们不必费心做 64 位版。32 位程序能在所有版本的 Windows 上运行。不像 Linux，64 位系统非要用 64 位程序。\n我也好奇它在 linux 上是不是比 windows 上稍快一点。\n你觉得我该把目录做成：\n/bin32/\n/bin64/\n还是\n/bin/32/\n/bin/64/"},{"id":836,"sid":null,"sat":0,"tid":74,"tt":"Bitcoin Faucet changes","src":"Bitcointalk","author":"llama","date":"2010-06-25","ts":"2010-06-25T04:25:48Z","url":"https://bitcointalk.org/index.php?topic=206.msg1761#msg1761","zh":"<p>有趣的是，这个论坛上的同一批人两头下注——一方面想方设法保住绝对匿名（比如海洛因商店那个主题串），另一方面又跑到这里来做近乎相反的事，保护 BTC Faucet。</p><p>我喜欢</p>","zhText":"有趣的是，这个论坛上的同一批人两头下注——一方面想方设法保住绝对匿名（比如海洛因商店那个主题串），另一方面又跑到这里来做近乎相反的事，保护 BTC Faucet。\n我喜欢"},{"id":803,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"virtualcoin","date":"2010-06-25","ts":"2010-06-25T10:29:54Z","url":"https://bitcointalk.org/index.php?topic=199.msg1766#msg1766","zh":"<blockquote><p>64 位版<b>不应比 32 位版快</b>，但如果有人能对两个 linux 版本做一次并排对比、核实一下就太好了。SHA-256 是 32 位算法，BitcoinMiner 里完全没有用到 64 位。</p></blockquote><p>但看看这里：</p><p><b>32 位 Linux 版本，Ubuntu 10.04</b></p><p>4 核：2500 khash/s\n3 核：1900 khash/s\n2 核：1260 khash/s\n1 核：630 khash/s</p><p><b>64 位 Linux 版本，Ubuntu 10.04（新测量）</b></p><p>4 核：2880 khash/s\n3 核：2150 khash/s\n2 核：1450 khash/s\n1 核：720 khash/s</p><p>（虽然我至今一枚硬币都没生成过——但我没让 bitcoin 整天占着 4 核跑，连 1 核都没有……）</p><p>@Joozero——Intel i7 860 是 @ 2.8 Ghz，对吧？我的 Phenom II 是 @ 3 Ghz，我想这是另一个重要因素。稍后我会在同一台机器上试试 Windows 7 的 bitcoin。</p><p>/edit</p><p><b>32 位 Win 版本，Windows 7 64 位</b></p><p>4 核：2310 khash/s\n3 核：1740 khash/s\n2 核：1160 khash/s\n1 核：580 khash/s</p>","zhText":"64 位版不应比 32 位版快，但如果有人能对两个 linux 版本做一次并排对比、核实一下就太好了。SHA-256 是 32 位算法，BitcoinMiner 里完全没有用到 64 位。\n\n但看看这里：\n32 位 Linux 版本，Ubuntu 10.04\n4 核：2500 khash/s\n3 核：1900 khash/s\n2 核：1260 khash/s\n1 核：630 khash/s\n64 位 Linux 版本，Ubuntu 10.04（新测量）\n4 核：2880 khash/s\n3 核：2150 khash/s\n2 核：1450 khash/s\n1 核：720 khash/s\n（虽然我至今一枚硬币都没生成过——但我没让 bitcoin 整天占着 4 核跑，连 1 核都没有……）\n@Joozero——Intel i7 860 是 @ 2.8 Ghz，对吧？我的 Phenom II 是 @ 3 Ghz，我想这是另一个重要因素。稍后我会在同一台机器上试试 Windows 7 的 bitcoin。\n/edit\n32 位 Win 版本，Windows 7 64 位\n4 核：2310 khash/s\n3 核：1740 khash/s\n2 核：1160 khash/s\n1 核：580 khash/s"},{"id":804,"sid":146,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-25","ts":"2010-06-25T14:10:06Z","url":"https://bitcointalk.org/index.php?topic=199.msg1769#msg1769","zh":"<p>谢谢 virtualcoin，完美的对比。</p><p>32 位 Windows（2310k）到 32 位 Linux（2500k）的 8% 提速，大概来自 Linux 上更新的 GCC（4.4.3 对 3.4.5）。</p><p>32 位到 64 位 Linux 的 15% 提速就更神秘了。代码是完全的 32 位。</p><p>嗯，我想是 x86-64 多出的那 8 个寄存器在起作用。如果 SHA 能把大部分 16 个状态变量装进寄存器，那会带来显著差异。</p>","zhText":"谢谢 virtualcoin，完美的对比。\n32 位 Windows（2310k）到 32 位 Linux（2500k）的 8% 提速，大概来自 Linux 上更新的 GCC（4.4.3 对 3.4.5）。\n32 位到 64 位 Linux 的 15% 提速就更神秘了。代码是完全的 32 位。\n嗯，我想是 x86-64 多出的那 8 个寄存器在起作用。如果 SHA 能把大部分 16 个状态变量装进寄存器，那会带来显著差异。"},{"id":842,"sid":null,"sat":0,"tid":75,"tt":"Bitcoin clients getting k-lined from the IRC bootstrapping channel","src":"Bitcointalk","author":"dwdollar","date":"2010-06-25","ts":"2010-06-25T20:48:08Z","url":"https://bitcointalk.org/index.php?topic=215.msg1778#msg1778","zh":"<p>我现在连上了。</p>","zhText":"我现在连上了。"},{"id":843,"sid":147,"sat":1,"tid":75,"tt":"Bitcoin clients getting k-lined from the IRC bootstrapping channel","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-25","ts":"2010-06-25T21:15:15Z","url":"https://bitcointalk.org/index.php?topic=215.msg1779#msg1779","zh":"<p>我们需要更多关于出了什么事的细节，MadHatter。</p><p>0.2 和 0.3 都有不靠 IRC 的备用连接方式，只是连得慢一些。</p><p>0.2 只要曾经连接过，不用 IRC 也能找到其他节点，但全新安装不靠 IRC 就无法第一次发现网络。</p><p>0.3 不靠 IRC 也能引导种子。必要时它可以完全不依赖 IRC 运转，但有 IRC 作冗余更好。</p>","zhText":"我们需要更多关于出了什么事的细节，MadHatter。\n0.2 和 0.3 都有不靠 IRC 的备用连接方式，只是连得慢一些。\n0.2 只要曾经连接过，不用 IRC 也能找到其他节点，但全新安装不靠 IRC 就无法第一次发现网络。\n0.3 不靠 IRC 也能引导种子。必要时它可以完全不依赖 IRC 运转，但有 IRC 作冗余更好。"},{"id":464,"sid":148,"sat":1,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-25","ts":"2010-06-25T22:40:47Z","url":"https://bitcointalk.org/index.php?topic=84.msg1781#msg1781","zh":"<blockquote><p>我运行着一台 IRC 服务器，你们可以用，它相当稳定，但没挂在冗余线路上什么的。现在只有两台服务器，不过我们从不折腾它，它就那么跑着。</p><p>我的机器是一台专用 irc 服务器：\n 2:28PM  up 838 days, 20:54, 1 user, load averages: 0.06, 0.08, 0.08</p><p>你可以用 irc.lfnet.org 连接。</p></blockquote><p>这看起来是个好主意。</p><p>大家怎么看，0.3 版要做这个切换吗？</p>","zhText":"我运行着一台 IRC 服务器，你们可以用，它相当稳定，但没挂在冗余线路上什么的。现在只有两台服务器，不过我们从不折腾它，它就那么跑着。\n我的机器是一台专用 irc 服务器：\n 2:28PM up 838 days, 20:54, 1 user, load averages: 0.06, 0.08, 0.08\n你可以用 irc.lfnet.org 连接。\n\n这看起来是个好主意。\n大家怎么看，0.3 版要做这个切换吗？"},{"id":465,"sid":null,"sat":0,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"Vasiliev","date":"2010-06-25","ts":"2010-06-25T23:50:15Z","url":"https://bitcointalk.org/index.php?topic=84.msg1785#msg1785","zh":"<p>你或许可以把 Freenode 留作备用服务器——如果他的服务器不行，就换 Freenode 的。</p>","zhText":"你或许可以把 Freenode 留作备用服务器——如果他的服务器不行，就换 Freenode 的。"},{"id":805,"sid":149,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T00:32:09Z","url":"https://bitcointalk.org/index.php?topic=199.msg1787#msg1787","zh":"<p>我们试试改用 Laszlo 的 irc.lfnet.org 而不是 freenode。这是 RC2，里面唯一的改动就是这个：</p><p>（下载链接见下方）</p>","zhText":"我们试试改用 Laszlo 的 irc.lfnet.org 而不是 freenode。这是 RC2，里面唯一的改动就是这个：\n（下载链接见下方）"},{"id":806,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-06-26","ts":"2010-06-26T01:19:35Z","url":"https://bitcointalk.org/index.php?topic=199.msg1788#msg1788","zh":"<p>看起来不错！每秒哈希数会间歇性地消失几秒。我怀疑是多击文件菜单触发的。我用的是 Linux 64 位构建。</p>","zhText":"看起来不错！每秒哈希数会间歇性地消失几秒。我怀疑是多击文件菜单触发的。我用的是 Linux 64 位构建。"},{"id":847,"sid":null,"sat":0,"tid":75,"tt":"Bitcoin clients getting k-lined from the IRC bootstrapping channel","src":"Bitcointalk","author":"laszlo","date":"2010-06-26","ts":"2010-06-26T04:13:50Z","url":"https://bitcointalk.org/index.php?topic=215.msg1790#msg1790","zh":"<p>哦，既然说了这么多，欢迎大家来 irc.lfnet.org 上 IRC。这是我和几个朋友运营的小网络……我们没有 services、k-lines 之类的东西。</p>","zhText":"哦，既然说了这么多，欢迎大家来 irc.lfnet.org 上 IRC。这是我和几个朋友运营的小网络……我们没有 services、k-lines 之类的东西。"},{"id":848,"sid":150,"sat":1,"tid":75,"tt":"Bitcoin clients getting k-lined from the IRC bootstrapping channel","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T14:28:06Z","url":"https://bitcointalk.org/index.php?topic=215.msg1797#msg1797","zh":"<p>Freenode 太显眼了，正处在所有那些用户和版主聚集的正中央。Laszlo 的方案对我们合适得多。</p><p>我发布了改用 irc.lfnet.org 而非 freenode 的 0.3.0.RC2，如果你想开始切换的话：\n<a href=\"http://bitcointalk.org/index.php?topic=199.msg1787#msg1787\">http://bitcointalk.org/index.php?topic=199.msg1787#msg1787</a></p>","zhText":"Freenode 太显眼了，正处在所有那些用户和版主聚集的正中央。Laszlo 的方案对我们合适得多。\n我发布了改用 irc.lfnet.org 而非 freenode 的 0.3.0.RC2，如果你想开始切换的话：\nhttp://bitcointalk.org/index.php?topic=199.msg1787#msg1787"},{"id":807,"sid":151,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T15:10:10Z","url":"https://bitcointalk.org/index.php?topic=199.msg1800#msg1800","zh":"<p>状态栏的第一格与菜单项的帮助说明共享：当你悬停在菜单项上时。因为我们所有菜单项的说明都是空白，所以悬停在菜单上时它就被替换成了空白。</p>","zhText":"状态栏的第一格与菜单项的帮助说明共享：当你悬停在菜单项上时。因为我们所有菜单项的说明都是空白，所以悬停在菜单上时它就被替换成了空白。"},{"id":849,"sid":152,"sat":1,"tid":76,"tt":"Beta?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T17:02:43Z","url":"https://bitcointalk.org/index.php?topic=217.msg1803#msg1803","zh":"<p>是不是该到去掉 Beta 的时候了？我建议这个版本就叫 1.3。</p>","zhText":"是不是该到去掉 Beta 的时候了？我建议这个版本就叫 1.3。"},{"id":808,"sid":153,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T19:21:05Z","url":"https://bitcointalk.org/index.php?topic=199.msg1806#msg1806","zh":"<p>版本号改为 1.3，去掉了\"Beta\"。</p><p>（链接已移除，见下）</p><p>使用 irc.lfnet.org。</p>","zhText":"版本号改为 1.3，去掉了\"Beta\"。\n（链接已移除，见下）\n使用 irc.lfnet.org。"},{"id":711,"sid":null,"sat":0,"tid":64,"tt":"Bitcoin mobile.","src":"Bitcointalk","author":"jago25_98","date":"2010-06-26","ts":"2010-06-26T19:56:59Z","url":"https://bitcointalk.org/index.php?topic=177.msg1809#msg1809","zh":"<p>我认为这个想法值得更多关注。</p><p>手机比电脑更容易获得、也更普及。有非常多的人只有手机。</p><p>哪怕是某种短信/网关/密钥交换方案也算数……比如，用不支持的手机通过短信把<i>支付</i>发到网关服务器，再由它转发给支持的手机，或者发给能替我们处理交易的<i>可信</i>第三方。\n也许配上口令。</p><p>那就太棒了，而且应该不需要太大的改造？</p><p>有灵感了吗？</p>","zhText":"我认为这个想法值得更多关注。\n手机比电脑更容易获得、也更普及。有非常多的人只有手机。\n哪怕是某种短信/网关/密钥交换方案也算数……比如，用不支持的手机通过短信把支付发到网关服务器，再由它转发给支持的手机，或者发给能替我们处理交易的可信第三方。\n也许配上口令。\n那就太棒了，而且应该不需要太大的改造？\n有灵感了吗？"},{"id":699,"sid":null,"sat":0,"tid":63,"tt":"Building BitCoin Client completely Headless","src":"Bitcointalk","author":"lachesis","date":"2010-06-26","ts":"2010-06-26T20:45:18Z","url":"https://bitcointalk.org/index.php?topic=171.msg1811#msg1811","zh":"<p>Jago，该装的依赖你都装好了吗？</p>","zhText":"Jago，该装的依赖你都装好了吗？"},{"id":712,"sid":154,"sat":1,"tid":64,"tt":"Bitcoin mobile.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T20:58:26Z","url":"https://bitcointalk.org/index.php?topic=177.msg1814#msg1814","zh":"<blockquote><p>在手机浏览器上当然可以用 vekja.net 或 mybitcoin.com 这类服务，把你信得过的额度的钱存进去。</p></blockquote><p>我觉得这是目前最好的办法。就像现金，你不会把全部身家揣在口袋里，只带点零花的钱应付日常开支。</p><p>他们可以做一个针对手机优化的缩小版网站。如果做应用，它可以作为这类服务的前端，主要功能是二维码扫描器；或者也许已经有通用的二维码扫描应用，网站可以设计成接受它们的扫描。</p><p>如果有一个 iPhone 应用，只是 vekja 或 mybitcoin 的前端，不涉及庞大的 P2P，苹果会批准吗？如果不批，依据是什么？反正也可以做 Android 应用。不过应用并非必需，一个手机尺寸的网站就够了。</p><p>给你家里的 Bitcoin 服务器做 Web 界面，并不是对每个人都可行的方案。大多数用户没有静态 IP，设置端口转发也太麻烦。</p>","zhText":"在手机浏览器上当然可以用 vekja.net 或 mybitcoin.com 这类服务，把你信得过的额度的钱存进去。\n\n我觉得这是目前最好的办法。就像现金，你不会把全部身家揣在口袋里，只带点零花的钱应付日常开支。\n他们可以做一个针对手机优化的缩小版网站。如果做应用，它可以作为这类服务的前端，主要功能是二维码扫描器；或者也许已经有通用的二维码扫描应用，网站可以设计成接受它们的扫描。\n如果有一个 iPhone 应用，只是 vekja 或 mybitcoin 的前端，不涉及庞大的 P2P，苹果会批准吗？如果不批，依据是什么？反正也可以做 Android 应用。不过应用并非必需，一个手机尺寸的网站就够了。\n给你家里的 Bitcoin 服务器做 Web 界面，并不是对每个人都可行的方案。大多数用户没有静态 IP，设置端口转发也太麻烦。"},{"id":700,"sid":155,"sat":1,"tid":63,"tt":"Building BitCoin Client completely Headless","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T21:06:06Z","url":"https://bitcointalk.org/index.php?topic=171.msg1815#msg1815","zh":"<p>\"1.3 almost ready\"主题串里的 Linux 候选版含有预编译好的 bitcoind。</p>","zhText":"\"1.3 almost ready\"主题串里的 Linux 候选版含有预编译好的 bitcoind。"},{"id":837,"sid":156,"sat":1,"tid":74,"tt":"Bitcoin Faucet changes","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-26","ts":"2010-06-26T21:39:52Z","url":"https://bitcointalk.org/index.php?topic=206.msg1816#msg1816","zh":"<p>很多大型 ISP 每次连接都给你分配新 IP，通常在同一个 B 类网段内（a.b.?.?）。也许应该给每个 B 类网段设置两次投放之间的最短间隔。</p><p>如果解决不了，也可以不断降低每次发放的比特币数量直到可控，并始终要求验证码。</p>","zhText":"很多大型 ISP 每次连接都给你分配新 IP，通常在同一个 B 类网段内（a.b.?.?）。也许应该给每个 B 类网段设置两次投放之间的最短间隔。\n如果解决不了，也可以不断降低每次发放的比特币数量直到可控，并始终要求验证码。"},{"id":852,"sid":null,"sat":0,"tid":76,"tt":"Beta?","src":"Bitcointalk","author":"lachesis","date":"2010-06-27","ts":"2010-06-27T01:33:31Z","url":"https://bitcointalk.org/index.php?topic=217.msg1824#msg1824","zh":"<p>+1 NLS。版本 1.0 听起来比 1.3 好。</p>","zhText":"+1 NLS。版本 1.0 听起来比 1.3 好。"},{"id":869,"sid":null,"sat":0,"tid":77,"tt":"IPv6, headless client, and more","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-06-27","ts":"2010-06-27T01:55:07Z","url":"https://bitcointalk.org/index.php?topic=218.msg1826#msg1826","zh":"<blockquote><p>我运行的时候，</p><p>它什么都不给，这正常吗？</p></blockquote><p>嗯，对，大概是正常的；我原以为默认地址的标签是空的；我搞错了，它们的标签是\"Your Address\"。\n所以：</p><pre><code>./bitcoind getaddressesbylabel \"Your Address\"</code></pre><p>应该就行。</p><p>或者干脆生成一个新地址，带不带标签都行：</p><pre><code>./bitcoind getnewaddress</code></pre>","zhText":"我运行的时候，\n它什么都不给，这正常吗？\n\n嗯，对，大概是正常的；我原以为默认地址的标签是空的；我搞错了，它们的标签是\"Your Address\"。\n所以：\n./bitcoind getaddressesbylabel \"Your Address\"应该就行。\n或者干脆生成一个新地址，带不带标签都行：\n./bitcoind getnewaddress"},{"id":853,"sid":157,"sat":1,"tid":76,"tt":"Beta?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-27","ts":"2010-06-27T12:43:50Z","url":"https://bitcointalk.org/index.php?topic=217.msg1827#msg1827","zh":"<p>但 1.0 听起来像首发版本。对有些东西来说新是优点，但对这类软件来说，成熟和稳定才重要。我不想把钱放进一个 1.0 的东西里。1.0 也许一时更有吸引力，但之后我们仍是 1.0，每个后来的人都以为我们才刚起步。这已经是第三个大版本，1.3 反映了这段开发历史。（0.1、0.2、1.3）</p>","zhText":"但 1.0 听起来像首发版本。对有些东西来说新是优点，但对这类软件来说，成熟和稳定才重要。我不想把钱放进一个 1.0 的东西里。1.0 也许一时更有吸引力，但之后我们仍是 1.0，每个后来的人都以为我们才刚起步。这已经是第三个大版本，1.3 反映了这段开发历史。（0.1、0.2、1.3）"},{"id":870,"sid":158,"sat":1,"tid":77,"tt":"IPv6, headless client, and more","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-27","ts":"2010-06-27T13:02:38Z","url":"https://bitcointalk.org/index.php?topic=218.msg1828#msg1828","zh":"<p>欢迎，Harry。</p><p>我还没想过不经过 bitcoin 直接从 bitcoind 上手。我想现阶段，这个主题串就当教程用吧。</p><p>bitcoind 目前的重点更多是网站的后端支持。也有人希望有一些便于管理无界面挖矿机的功能，比如 listgenerated。眼下，你可以在 debug.log 里 grep \"generated\" 和 \"hashmeter\" 看些反馈。生成的区块大约要 24 小时才计入你的余额。</p>","zhText":"欢迎，Harry。\n我还没想过不经过 bitcoin 直接从 bitcoind 上手。我想现阶段，这个主题串就当教程用吧。\nbitcoind 目前的重点更多是网站的后端支持。也有人希望有一些便于管理无界面挖矿机的功能，比如 listgenerated。眼下，你可以在 debug.log 里 grep \"generated\" 和 \"hashmeter\" 看些反馈。生成的区块大约要 24 小时才计入你的余额。"},{"id":809,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"laszlo","date":"2010-06-27","ts":"2010-06-27T14:45:28Z","url":"https://bitcointalk.org/index.php?topic=199.msg1832#msg1832","zh":"<p>我也不明白为什么，但我也注意到了——我编译的 Win32 版比我做的 linux/mac 版慢得多。我用了 MinGW 之类，但也许哪里出了错……我用的 Berkeley DB 版本可能也和中本聪的不同，所以日志才二进制不兼容。</p>","zhText":"我也不明白为什么，但我也注意到了——我编译的 Win32 版比我做的 linux/mac 版慢得多。我用了 MinGW 之类，但也许哪里出了错……我用的 Berkeley DB 版本可能也和中本聪的不同，所以日志才二进制不兼容。"},{"id":810,"sid":159,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-27","ts":"2010-06-27T15:30:13Z","url":"https://bitcointalk.org/index.php?topic=199.msg1834#msg1834","zh":"<p>MinGW 仍然只有老当益壮的稳定版 3.4.5。他们没多少理由去更新它。</p><p>我看 3.4.5 编译出的 SHA 反汇编时，完全看不出有任何改进余地。我无法想象还能从里面再挤出 8%。有没有可能 Windows 本身就有 8% 的额外开销？不做系统调用之类的，纯粹是忙于计算的代码，任务切换和其他管理性操作能吃掉这么多吗？</p>","zhText":"MinGW 仍然只有老当益壮的稳定版 3.4.5。他们没多少理由去更新它。\n我看 3.4.5 编译出的 SHA 反汇编时，完全看不出有任何改进余地。我无法想象还能从里面再挤出 8%。有没有可能 Windows 本身就有 8% 的额外开销？不做系统调用之类的，纯粹是忙于计算的代码，任务切换和其他管理性操作能吃掉这么多吗？"},{"id":825,"sid":null,"sat":0,"tid":73,"tt":"Major Meltdown","src":"Bitcointalk","author":"Max Stirner","date":"2010-06-27","ts":"2010-06-27T18:22:51Z","url":"https://bitcointalk.org/index.php?topic=202.msg1837#msg1837","zh":"<p>Amal，我承认：我误解了你！\n我只是担心数字货币的合法地位维持不了太久，因为政府无法控制它。（等他们宣布它非法的那天，你该开一瓶香槟，因为那正是 Bitcoin 成功的标志。）\n到那时，他们也会关掉你的登记系统。而所有把地址交给那个机构的人都会有麻烦。</p><p>如果 Bitcoin 被发现重大缺陷、又没有足够时间切换到别的系统，我想你的财富损失就无能为力了。</p><p>不过，假设\"你\"发现了无限生成币的办法。你的目标会是尽可能久地靠这个秘密牟利。所以即便是有能力作弊的人，也不愿看到数字法币崩溃。而且在旧货币崩溃之前，他们会把假币换成更好的货币。但我想所谓的\"真实\"货币也是如此。不过……能骗过数字货币算法的人，至少他的天才得到了奖赏。相反，在我们的纸币法币体系里，能接触到政府/央行\"印钞机\"的人，仅仅因为是不折不扣的混蛋就得到了奖赏。</p>","zhText":"Amal，我承认：我误解了你！\n我只是担心数字货币的合法地位维持不了太久，因为政府无法控制它。（等他们宣布它非法的那天，你该开一瓶香槟，因为那正是 Bitcoin 成功的标志。）\n到那时，他们也会关掉你的登记系统。而所有把地址交给那个机构的人都会有麻烦。\n如果 Bitcoin 被发现重大缺陷、又没有足够时间切换到别的系统，我想你的财富损失就无能为力了。\n不过，假设\"你\"发现了无限生成币的办法。你的目标会是尽可能久地靠这个秘密牟利。所以即便是有能力作弊的人，也不愿看到数字法币崩溃。而且在旧货币崩溃之前，他们会把假币换成更好的货币。但我想所谓的\"真实\"货币也是如此。不过……能骗过数字货币算法的人，至少他的天才得到了奖赏。相反，在我们的纸币法币体系里，能接触到政府/央行\"印钞机\"的人，仅仅因为是不折不扣的混蛋就得到了奖赏。"},{"id":826,"sid":160,"sat":1,"tid":73,"tt":"Major Meltdown","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-06-27","ts":"2010-06-27T19:06:09Z","url":"https://bitcointalk.org/index.php?topic=202.msg1838#msg1838","zh":"<p>这里有一个对类似问题的回答，关于如何从重大故障中恢复。\n<a href=\"https://www.bitcoin.org/smf/index.php?topic=191.msg1585#msg1585\">https://www.bitcoin.org/smf/index.php?topic=191.msg1585#msg1585</a></p><blockquote><p>如果 SHA-256 被彻底攻破，我想我们可以就\"麻烦开始之前哪条是诚实的区块链\"达成共识，把它锁定，然后用一个新的哈希函数从那里继续。</p><p>如果哈希崩溃是渐进发生的，我们可以有序地过渡到新哈希。软件可以设定为在某个区块号之后启用新哈希。所有人都得在那之前升级。软件可以保存所有旧区块的新哈希，确保不能使用与旧哈希相同的不同区块。</p></blockquote>","zhText":"这里有一个对类似问题的回答，关于如何从重大故障中恢复。\nhttps://www.bitcoin.org/smf/index.php?topic=191.msg1585#msg1585\n如果 SHA-256 被彻底攻破，我想我们可以就\"麻烦开始之前哪条是诚实的区块链\"达成共识，把它锁定，然后用一个新的哈希函数从那里继续。\n如果哈希崩溃是渐进发生的，我们可以有序地过渡到新哈希。软件可以设定为在某个区块号之后启用新哈希。所有人都得在那之前升级。软件可以保存所有旧区块的新哈希，确保不能使用与旧哈希相同的不同区块。"},{"id":811,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"dkaparis","date":"2010-06-27","ts":"2010-06-27T22:02:25Z","url":"https://bitcointalk.org/index.php?topic=199.msg1842#msg1842","zh":"<blockquote><p>MinGW 仍然只有老当益壮的稳定版 3.4.5。他们没多少理由去更新它。</p><p>我看 3.4.5 编译出的 SHA 反汇编时，完全看不出有任何改进余地。我无法想象还能从里面再挤出 8%。有没有可能 Windows 本身就有 8% 的额外开销？不做系统调用之类的，纯粹是忙于计算的代码，任务切换和其他管理性操作能吃掉这么多吗？</p></blockquote><p>也许最好也看看 4.4.3 编译的反汇编，看有没有什么差别。</p><p>顺便问一句，这东西能用 Visual C++ 编译吗？等我有空打算试试。</p><p>Dimitri</p>","zhText":"MinGW 仍然只有老当益壮的稳定版 3.4.5。他们没多少理由去更新它。\n我看 3.4.5 编译出的 SHA 反汇编时，完全看不出有任何改进余地。我无法想象还能从里面再挤出 8%。有没有可能 Windows 本身就有 8% 的额外开销？不做系统调用之类的，纯粹是忙于计算的代码，任务切换和其他管理性操作能吃掉这么多吗？\n\n也许最好也看看 4.4.3 编译的反汇编，看有没有什么差别。\n顺便问一句，这东西能用 Visual C++ 编译吗？等我有空打算试试。\nDimitri"},{"id":874,"sid":null,"sat":0,"tid":78,"tt":"Feature Request: Limiting Connections","src":"Bitcointalk","author":"BitcoinFX","date":"2010-06-30","ts":"2010-06-30T01:54:04Z","url":"https://bitcointalk.org/index.php?topic=223.msg1883#msg1883","zh":"<p>我 2nd 附议，希望把它作为\"标准\"GUI 功能。</p><p>我最近通过各种 socks 代理/服务商测试了 bitcoin，能把连接数限制到 10 以下会非常有用。</p>","zhText":"我 2nd 附议，希望把它作为\"标准\"GUI 功能。\n我最近通过各种 socks 代理/服务商测试了 bitcoin，能把连接数限制到 10 以下会非常有用。"},{"id":864,"sid":null,"sat":0,"tid":76,"tt":"Beta?","src":"Bitcointalk","author":"laszlo","date":"2010-06-30","ts":"2010-06-30T02:45:27Z","url":"https://bitcointalk.org/index.php?topic=217.msg1885#msg1885","zh":"<p>我不太懂营销，但我觉得这类软件不妨按源码控制里的版本来称呼，比如 Bitcoin r82 什么的……也许这对某些人来说太极客了。</p>","zhText":"我不太懂营销，但我觉得这类软件不妨按源码控制里的版本来称呼，比如 Bitcoin r82 什么的……也许这对某些人来说太极客了。"},{"id":827,"sid":null,"sat":0,"tid":73,"tt":"Major Meltdown","src":"Bitcointalk","author":"llama","date":"2010-07-01","ts":"2010-07-01T22:21:47Z","url":"https://bitcointalk.org/index.php?topic=202.msg1920#msg1920","zh":"<p>Satoshi，</p><p>如果 SHA 被攻破（这确实是更可能发生的崩溃），那的确是个解决方案，因为我们仍能凭签名认出货币的合法持有者（他们的私钥仍然安全）。</p><p>但是，如果发生的是签名被攻破（也许整数分解被解决了？量子计算机？），那么就算对最后一个有效区块达成共识也毫无意义。</p>","zhText":"Satoshi，\n如果 SHA 被攻破（这确实是更可能发生的崩溃），那的确是个解决方案，因为我们仍能凭签名认出货币的合法持有者（他们的私钥仍然安全）。\n但是，如果发生的是签名被攻破（也许整数分解被解决了？量子计算机？），那么就算对最后一个有效区块达成共识也毫无意义。"},{"id":828,"sid":null,"sat":0,"tid":73,"tt":"Major Meltdown","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-02","ts":"2010-07-02T00:21:53Z","url":"https://bitcointalk.org/index.php?topic=202.msg1922#msg1922","zh":"<p>倘若你担心椭圆曲线密码学被攻破，那就别在 Bitcoin 里存放任何可观的财富。就像倘若你担心（真实的、实体的）钱包被偷，就别持有超过几天购物所需的现金。</p><p>顺便说一句：我认为在椭圆曲线密码学被攻破之前，人类会先找到从海水中经济地分离金原子的方法（而且我认为两者在未来 25 年内都不太可能发生）。</p>","zhText":"倘若你担心椭圆曲线密码学被攻破，那就别在 Bitcoin 里存放任何可观的财富。就像倘若你担心（真实的、实体的）钱包被偷，就别持有超过几天购物所需的现金。\n顺便说一句：我认为在椭圆曲线密码学被攻破之前，人类会先找到从海水中经济地分离金原子的方法（而且我认为两者在未来 25 年内都不太可能发生）。"},{"id":875,"sid":161,"sat":1,"tid":78,"tt":"Feature Request: Limiting Connections","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-02","ts":"2010-07-02T19:21:36Z","url":"https://bitcointalk.org/index.php?topic=223.msg1924#msg1924","zh":"<p>感谢就此的反馈。</p><p>我们可以做的一件事是把对外连接数从 15 降到 10，甚至 5。当初选 15 很随意。它只需要足够支撑冗余和消息的快速指数传播。10 仍然绰绰有余。5 应该也行。10 是个好看的整数，用户能看出这是有意为之。</p><p>实现 UPnP 会有帮助，这样接受入站的节点会更多。你的连接数 = 接受入站节点数与只出不进节点数之比 × 15。我们需要鼓励更多人接受入站连接。</p><p>我会实现一个功能：达到一定数量后停止接受入站连接。</p><p>你运行的是哪个版本？</p><p>有人知道 BitTorrent 这类典型 P2P 软件能到多少连接吗？</p>","zhText":"感谢就此的反馈。\n我们可以做的一件事是把对外连接数从 15 降到 10，甚至 5。当初选 15 很随意。它只需要足够支撑冗余和消息的快速指数传播。10 仍然绰绰有余。5 应该也行。10 是个好看的整数，用户能看出这是有意为之。\n实现 UPnP 会有帮助，这样接受入站的节点会更多。你的连接数 = 接受入站节点数与只出不进节点数之比 × 15。我们需要鼓励更多人接受入站连接。\n我会实现一个功能：达到一定数量后停止接受入站连接。\n你运行的是哪个版本？\n有人知道 BitTorrent 这类典型 P2P 软件能到多少连接吗？"},{"id":876,"sid":null,"sat":0,"tid":78,"tt":"Feature Request: Limiting Connections","src":"Bitcointalk","author":"laszlo","date":"2010-07-02","ts":"2010-07-02T19:33:24Z","url":"https://bitcointalk.org/index.php?topic=223.msg1925#msg1925","zh":"<p>BitTorrent 客户端轻松就能做到几百条连接——这正是它们最终搞挂那些小型嵌入式路由器的原因。普通 IP 路由器没问题，但那些小的嵌入式设备在做 NAT，要为所有这些连接跟踪状态，内存就耗尽了……而且它们是非常慢的 SoC 式计算机，所有经过它们的东西都跟着遭殃。</p><p>种子客户端通常都有配置全局最大连接数、最大入站连接数和最大出站连接数的选项。</p><p>我觉得允许那些有能力的人配置无限入站/出站连接是好事，同时给用 NAT、tor、代理等的用户一个保守的默认值。</p>","zhText":"BitTorrent 客户端轻松就能做到几百条连接——这正是它们最终搞挂那些小型嵌入式路由器的原因。普通 IP 路由器没问题，但那些小的嵌入式设备在做 NAT，要为所有这些连接跟踪状态，内存就耗尽了……而且它们是非常慢的 SoC 式计算机，所有经过它们的东西都跟着遭殃。\n种子客户端通常都有配置全局最大连接数、最大入站连接数和最大出站连接数的选项。\n我觉得允许那些有能力的人配置无限入站/出站连接是好事，同时给用 NAT、tor、代理等的用户一个保守的默认值。"},{"id":812,"sid":162,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-02","ts":"2010-07-02T20:37:17Z","url":"https://bitcointalk.org/index.php?topic=199.msg1926#msg1926","zh":"<blockquote><p>顺便问一句，这东西能用 Visual C++ 编译吗？等我有空打算试试。</p></blockquote><p>能，但生成速度慢了一倍多。</p>","zhText":"顺便问一句，这东西能用 Visual C++ 编译吗？等我有空打算试试。\n\n能，但生成速度慢了一倍多。"},{"id":813,"sid":163,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-02","ts":"2010-07-02T21:57:45Z","url":"https://bitcointalk.org/index.php?topic=199.msg1927#msg1927","zh":"<p>（已回退到 rc2）</p><p>链接已移除，0.3 现已发布，请到 <a href=\"http://www.bitcoin.org\">http://www.bitcoin.org</a> 下载。</p>","zhText":"（已回退到 rc2）\n链接已移除，0.3 现已发布，请到 http://www.bitcoin.org 下载。"},{"id":865,"sid":164,"sat":1,"tid":76,"tt":"Beta?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-02","ts":"2010-07-02T22:03:41Z","url":"https://bitcointalk.org/index.php?topic=217.msg1928#msg1928","zh":"<p>好，那还是回到 0.3。</p><p>请尽快下载 RC4 并检查。我想尽快发布。</p><p><a href=\"http://bitcointalk.org/index.php?topic=199.msg1927#msg1927\">http://bitcointalk.org/index.php?topic=199.msg1927#msg1927</a></p><p>除了版本号改动（涉及 readme.txt 和 setup.nsi），我还把最大对外连接数从 15 降到 8，这样接受入站连接的节点不会收到太多连接。15 远超所需。8 作为冗余仍然绰绰有余。</p>","zhText":"好，那还是回到 0.3。\n请尽快下载 RC4 并检查。我想尽快发布。\nhttp://bitcointalk.org/index.php?topic=199.msg1927#msg1927\n除了版本号改动（涉及 readme.txt 和 setup.nsi），我还把最大对外连接数从 15 降到 8，这样接受入站连接的节点不会收到太多连接。15 远超所需。8 作为冗余仍然绰绰有余。"},{"id":877,"sid":165,"sat":1,"tid":78,"tt":"Feature Request: Limiting Connections","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-02","ts":"2010-07-02T22:20:20Z","url":"https://bitcointalk.org/index.php?topic=223.msg1929#msg1929","zh":"<p>我在 RC4 里把最大对外连接数从 15 降到了 8。</p><p>15 远超冗余所需。8 仍然有充足的冗余。</p><p>随着节点升级到这个版本，接受入站连接的节点获得的连接数会减半。</p><p>如果有人想要 8 条以上连接，可以在防火墙上开放 8333 端口。</p>","zhText":"我在 RC4 里把最大对外连接数从 15 降到了 8。\n15 远超冗余所需。8 仍然有充足的冗余。\n随着节点升级到这个版本，接受入站连接的节点获得的连接数会减半。\n如果有人想要 8 条以上连接，可以在防火墙上开放 8333 端口。"},{"id":814,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"laszlo","date":"2010-07-04","ts":"2010-07-04T19:39:32Z","url":"https://bitcointalk.org/index.php?topic=199.msg1945#msg1945","zh":"<p>Mac OS 版——需要 Intel 处理器和 10.5（不支持 10.4）</p><p><a href=\"http://heliacal.net/~solar/bitcoin/builds/MacOSX-Intel-0.3/bitcoin-0.3.0.zip\">http://heliacal.net/~solar/bitcoin/builds/MacOSX-Intel-0.3/bitcoin-0.3.0.zip</a></p>","zhText":"Mac OS 版——需要 Intel 处理器和 10.5（不支持 10.4）\nhttp://heliacal.net/~solar/bitcoin/builds/MacOSX-Intel-0.3/bitcoin-0.3.0.zip"},{"id":815,"sid":166,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-04","ts":"2010-07-04T21:52:28Z","url":"https://bitcointalk.org/index.php?topic=199.msg1947#msg1947","zh":"<p>Laszlo 的编译版将成为我们第一个 Mac 发行版，请大家测试！</p>","zhText":"Laszlo 的编译版将成为我们第一个 Mac 发行版，请大家测试！"},{"id":882,"sid":null,"sat":0,"tid":79,"tt":"Slashdot Submission for 1.0","src":"Bitcointalk","author":"llama","date":"2010-07-05","ts":"2010-07-05T19:24:56Z","url":"https://bitcointalk.org/index.php?topic=234.msg1973#msg1973","zh":"<p>目前的修改不错。</p><p>更多建议：</p><p>1) 用 bittorrent 替代 hashcash 提及如何？Bittorrent 是个巨大的热词，能抓住些眼球。作为一个完全分布式且匿名的网络，我认为 Bitcoin 相似到足以支撑这个类比。</p><p>2) \"...clients burn CPU cycles...\" --> \"...nodes burn CPU cycles...\"（\"客户端\"改\"节点\"）</p><p>3) 在某处加入\"decentralized\"（去中心化）和\"proof-of-work based\"（基于工作证明）</p><p>4) 就我个人而言，我对提到能源支撑仍不完全满意。也许可以换成说：带时间戳的交易历史由多数 CPU 算力投票/保护？</p><p>5) 不是要卖弄，但小心被动语态（比如\"It is expected that over time...\"）。标题和新闻稿通常用更有冲击力的主动语态来抓读者眼球。</p><p>全部采纳、全不采纳或部分采纳，随意。我们挑剔是因为我们在乎</p>","zhText":"目前的修改不错。\n更多建议：\n1) 用 bittorrent 替代 hashcash 提及如何？Bittorrent 是个巨大的热词，能抓住些眼球。作为一个完全分布式且匿名的网络，我认为 Bitcoin 相似到足以支撑这个类比。\n2) \"...clients burn CPU cycles...\" --> \"...nodes burn CPU cycles...\"（\"客户端\"改\"节点\"）\n3) 在某处加入\"decentralized\"（去中心化）和\"proof-of-work based\"（基于工作证明）\n4) 就我个人而言，我对提到能源支撑仍不完全满意。也许可以换成说：带时间戳的交易历史由多数 CPU 算力投票/保护？\n5) 不是要卖弄，但小心被动语态（比如\"It is expected that over time...\"）。标题和新闻稿通常用更有冲击力的主动语态来抓读者眼球。\n全部采纳、全不采纳或部分采纳，随意。我们挑剔是因为我们在乎"},{"id":883,"sid":167,"sat":1,"tid":79,"tt":"Slashdot Submission for 1.0","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-05","ts":"2010-07-05T21:31:14Z","url":"https://bitcointalk.org/index.php?topic=234.msg1976#msg1976","zh":"<p>顺便说，在和 1.3 短暂纠缠之后我恢复理智了，这个版本仍将是 0.3 beta，不是 1.0。</p><p>我非常感谢你的努力，但问题不少。</p><p>我们不想拿\"匿名\"当卖点。（我一直想改主页来着）</p><p>\"开发者期望这会带来一种任何政府都触及不到的能源稳定货币。\"——我绝不会发表这种挑衅或断言。</p><p>它并非能源意义上的稳定。这一点讨论过。它不与能源成本挂钩。NLS 基于能源的估算是个不错的起始点，但市场力量会越来越占主导。</p><p>抱歉泼冷水。为这个东西写一篇面向大众的介绍真是难死了。没有任何现成的东西可以类比。</p>","zhText":"顺便说，在和 1.3 短暂纠缠之后我恢复理智了，这个版本仍将是 0.3 beta，不是 1.0。\n我非常感谢你的努力，但问题不少。\n我们不想拿\"匿名\"当卖点。（我一直想改主页来着）\n\"开发者期望这会带来一种任何政府都触及不到的能源稳定货币。\"——我绝不会发表这种挑衅或断言。\n它并非能源意义上的稳定。这一点讨论过。它不与能源成本挂钩。NLS 基于能源的估算是个不错的起始点，但市场力量会越来越占主导。\n抱歉泼冷水。为这个东西写一篇面向大众的介绍真是难死了。没有任何现成的东西可以类比。"},{"id":816,"sid":null,"sat":0,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"BitLex","date":"2010-07-06","ts":"2010-07-06T17:52:58Z","url":"https://bitcointalk.org/index.php?topic=199.msg2002#msg2002","zh":"<p>我在 xp32/64 上运行 rc4，到目前为止一切正常，\n安装顺利，转发节点上约 50 条连接，其他节点 8 条，\n限制在 1（共 2 核）和 1-2（共 3 核）个核心，扩展良好，但还没生成任何币。\n希望今晚能挖到一些。</p>","zhText":"我在 xp32/64 上运行 rc4，到目前为止一切正常，\n安装顺利，转发节点上约 50 条连接，其他节点 8 条，\n限制在 1（共 2 核）和 1-2（共 3 核）个核心，扩展良好，但还没生成任何币。\n希望今晚能挖到一些。"},{"id":884,"sid":168,"sat":1,"tid":80,"tt":"Bitcoin 0.3 released!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-06","ts":"2010-07-06T18:32:35Z","url":"https://bitcointalk.org/index.php?topic=238.msg2004#msg2004","zh":"<p>发布 Bitcoin 0.3 版——P2P 加密货币！Bitcoin 是一种数字货币，使用密码学与分布式网络取代对可信中央服务器的需求。摆脱中心化管理的货币任意的通胀风险！Bitcoin 的总发行量上限为 2100 万枚。币按节点贡献的 CPU 算力逐步释放给网络，所以贡献闲置的 CPU 时间就能分一杯羹。</p><p>新特性：\n- 命令行与 JSON-RPC 控制\n- 附带无 GUI 的守护进程版\n- 交易过滤标签页\n- 哈希速度提升 20%\n- Hashmeter 性能显示\n- Mac OS X 版（感谢 Laszlo）\n- 德语、荷兰语、意大利语翻译（感谢 DataWraith、Xunie 和 Joozero）</p><p>到 <a href=\"http://www.bitcoin.org\">http://www.bitcoin.org</a> 获取，或读论坛了解更多。</p>","zhText":"发布 Bitcoin 0.3 版——P2P 加密货币！Bitcoin 是一种数字货币，使用密码学与分布式网络取代对可信中央服务器的需求。摆脱中心化管理的货币任意的通胀风险！Bitcoin 的总发行量上限为 2100 万枚。币按节点贡献的 CPU 算力逐步释放给网络，所以贡献闲置的 CPU 时间就能分一杯羹。\n新特性：\n- 命令行与 JSON-RPC 控制\n- 附带无 GUI 的守护进程版\n- 交易过滤标签页\n- 哈希速度提升 20%\n- Hashmeter 性能显示\n- Mac OS X 版（感谢 Laszlo）\n- 德语、荷兰语、意大利语翻译（感谢 DataWraith、Xunie 和 Joozero）\n到 http://www.bitcoin.org 获取，或读论坛了解更多。"},{"id":817,"sid":169,"sat":1,"tid":72,"tt":"0.3 almost ready -- please test the Mac version!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-06","ts":"2010-07-06T19:43:18Z","url":"https://bitcointalk.org/index.php?topic=199.msg2006#msg2006","zh":"<p>0.3 发布\n<a href=\"http://bitcointalk.org/index.php?topic=238.msg2004#msg2004\">http://bitcointalk.org/index.php?topic=238.msg2004#msg2004</a></p>","zhText":"0.3 发布\nhttp://bitcointalk.org/index.php?topic=238.msg2004#msg2004"},{"id":466,"sid":null,"sat":0,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"sirius","date":"2010-07-07","ts":"2010-07-07T01:05:47Z","url":"https://bitcointalk.org/index.php?topic=84.msg2009#msg2009","zh":"<p>也许我们该做一个选项对话框，允许你选择要连接的 IRC 服务器和频道？</p>","zhText":"也许我们该做一个选项对话框，允许你选择要连接的 IRC 服务器和频道？"},{"id":467,"sid":170,"sat":1,"tid":43,"tt":"On IRC bootstrapping","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-07","ts":"2010-07-07T01:31:07Z","url":"https://bitcointalk.org/index.php?topic=84.msg2010#msg2010","zh":"<p>每个人都必须连到同一个 IRC 服务器和频道，才能彼此找到。</p><blockquote><p>你或许可以把 Freenode 留作备用服务器——如果他的服务器不行，就换 Freenode 的。</p></blockquote><p>如果我们突然带一大堆用户涌入 freenode，可能不太妥当。</p><p>备用方案是我们自己的种子系统。</p><p>irc.lfnet.org 相当老牌，运行时间记录很可观。我觉得它没问题。</p><p>如果想拿掉 IRC，以后随时可以，但我宁愿渐进过渡，眼下先把自己的种子系统当作备用方案来测试。我真的很喜欢这两套不同系统互补冗余的特性。</p>","zhText":"每个人都必须连到同一个 IRC 服务器和频道，才能彼此找到。\n你或许可以把 Freenode 留作备用服务器——如果他的服务器不行，就换 Freenode 的。\n\n如果我们突然带一大堆用户涌入 freenode，可能不太妥当。\n备用方案是我们自己的种子系统。\nirc.lfnet.org 相当老牌，运行时间记录很可观。我觉得它没问题。\n如果想拿掉 IRC，以后随时可以，但我宁愿渐进过渡，眼下先把自己的种子系统当作备用方案来测试。我真的很喜欢这两套不同系统互补冗余的特性。"},{"id":914,"sid":null,"sat":0,"tid":84,"tt":"bitcoin 0.3 win64 - broken access to APPDATA if non-latin characters in username","src":"Bitcointalk","author":"m0mchil","date":"2010-07-08","ts":"2010-07-08T09:33:16Z","url":"https://bitcointalk.org/index.php?topic=246.msg2052#msg2052","zh":"<p>我知道用非拉丁字符命名用户账户不是最聪明的做法。总之，0.2 对此没有问题。</p><p>验证过程如下……创建了一个'正常'的新用户，0.3 打开了数据文件夹。新建<b>全新的数据文件夹</b>并复制到那个非标准用户名下——0.3 报 DB_RUN_RECOVERY 失败。</p>","zhText":"我知道用非拉丁字符命名用户账户不是最聪明的做法。总之，0.2 对此没有问题。\n验证过程如下……创建了一个'正常'的新用户，0.3 打开了数据文件夹。新建全新的数据文件夹并复制到那个非标准用户名下——0.3 报 DB_RUN_RECOVERY 失败。"},{"id":902,"sid":null,"sat":0,"tid":82,"tt":"Anonymity","src":"Bitcointalk","author":"llama","date":"2010-07-08","ts":"2010-07-08T16:37:01Z","url":"https://bitcointalk.org/index.php?topic=241.msg2057#msg2057","zh":"<p>不错。</p><p>就匿名上网连接而言，预付费手机也是不错的选择。便宜，几乎不可能追溯到用户，用完可以销毁。同样，可以在人流密集的商场或沃尔玛买到。</p><p>foreverdamaged，别忘了用匿名方式支付 VPS。也许一张同样在拥挤场所购买的预付信用卡就能搞定。</p><p>顺便说，我喜欢想象这位用户在中国，正试图买一本关于自由的书籍</p>","zhText":"不错。\n就匿名上网连接而言，预付费手机也是不错的选择。便宜，几乎不可能追溯到用户，用完可以销毁。同样，可以在人流密集的商场或沃尔玛买到。\nforeverdamaged，别忘了用匿名方式支付 VPS。也许一张同样在拥挤场所购买的预付信用卡就能搞定。\n顺便说，我喜欢想象这位用户在中国，正试图买一本关于自由的书籍"},{"id":915,"sid":171,"sat":1,"tid":84,"tt":"bitcoin 0.3 win64 - broken access to APPDATA if non-latin characters in username","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-08","ts":"2010-07-08T18:24:19Z","url":"https://bitcointalk.org/index.php?topic=246.msg2068#msg2068","zh":"<p>感谢发现。我们在 0.2 版用的是 ANSI、0.3 版换成了 UTF-8，应该与此有关。</p><p>想确认一下：如果你用非拉丁字符的用户名登录、尚无 appdata/Bitcoin 目录，然后运行 Bitcoin 让它从零创建数据库，能不能正常工作？</p>","zhText":"感谢发现。我们在 0.2 版用的是 ANSI、0.3 版换成了 UTF-8，应该与此有关。\n想确认一下：如果你用非拉丁字符的用户名登录、尚无 appdata/Bitcoin 目录，然后运行 Bitcoin 让它从零创建数据库，能不能正常工作？"},{"id":903,"sid":172,"sat":1,"tid":82,"tt":"Anonymity","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-08","ts":"2010-07-08T19:12:00Z","url":"https://bitcointalk.org/index.php?topic=241.msg2071#msg2071","zh":"<p>很难想象互联网会被分割得密不透风。那得是一个国家刻意地、彻底地把自己与世界其他地方隔绝开来。</p><p>任何能同时接入两侧的节点都会自动把区块链流过去，比如有人用拨号调制解调器或卫星电话绕过封锁。只需要一个节点就能做到。任何想继续做生意的人都有动力这么做。</p><p>倘若网络被分割后又重新合并，较短分叉里那些不在较长分叉中的交易会被重新放回交易池，有资格进入未来的区块。它们的确认数将从头开始。</p><p>倘若有人利用分割双重支出，使同一笔钱在两侧各有一笔不同的花费，那么较短分叉中的双重支出会落败，回到 0/未确认状态并保持不变。</p><p>想利用分割来双重支出并不容易。倘若一侧无法与另一侧通信，你要怎么把花费分别放到两侧？如果有办法，那很可能别人也在用同样的办法把区块链流过去。</p><p>你通常能知道自己是不是在较小的一侧。譬如，倘若你的国家把自己与世界隔绝，世界其他地方就是较大的一侧。如果你在较小的一侧，就应假设什么都没有被确认。</p>","zhText":"很难想象互联网会被分割得密不透风。那得是一个国家刻意地、彻底地把自己与世界其他地方隔绝开来。\n任何能同时接入两侧的节点都会自动把区块链流过去，比如有人用拨号调制解调器或卫星电话绕过封锁。只需要一个节点就能做到。任何想继续做生意的人都有动力这么做。\n倘若网络被分割后又重新合并，较短分叉里那些不在较长分叉中的交易会被重新放回交易池，有资格进入未来的区块。它们的确认数将从头开始。\n倘若有人利用分割双重支出，使同一笔钱在两侧各有一笔不同的花费，那么较短分叉中的双重支出会落败，回到 0/未确认状态并保持不变。\n想利用分割来双重支出并不容易。倘若一侧无法与另一侧通信，你要怎么把花费分别放到两侧？如果有办法，那很可能别人也在用同样的办法把区块链流过去。\n你通常能知道自己是不是在较小的一侧。譬如，倘若你的国家把自己与世界隔绝，世界其他地方就是较大的一侧。如果你在较小的一侧，就应假设什么都没有被确认。"},{"id":912,"sid":null,"sat":0,"tid":83,"tt":"BTC Vulnerability? (Massive Attack against BTC system. Is it really?)","src":"Bitcointalk","author":"lachesis","date":"2010-07-08","ts":"2010-07-08T21:13:56Z","url":"https://bitcointalk.org/index.php?topic=242.msg2074#msg2074","zh":"<p>没有必要防范一种攻击者买光所有比特币再删掉自己钱包的攻击。</p><p>假设我们都愿意卖，攻击者只是拿大笔现金换我们的比特币。我们随后可以启动另一条 Bitcoin 区块链，从头再来（只是对市场的信心大得多，因为它成功过一次！）并愿意的话把那笔钱再投进去。</p><p>本质上，无论发生什么，总有\"从头再来\"这个终极选项。</p><p>有比这危险得多、可能性大得多的攻击值得担心。</p>","zhText":"没有必要防范一种攻击者买光所有比特币再删掉自己钱包的攻击。\n假设我们都愿意卖，攻击者只是拿大笔现金换我们的比特币。我们随后可以启动另一条 Bitcoin 区块链，从头再来（只是对市场的信心大得多，因为它成功过一次！）并愿意的话把那笔钱再投进去。\n本质上，无论发生什么，总有\"从头再来\"这个终极选项。\n有比这危险得多、可能性大得多的攻击值得担心。"},{"id":916,"sid":173,"sat":1,"tid":84,"tt":"bitcoin 0.3 win64 - broken access to APPDATA if non-latin characters in username","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-09","ts":"2010-07-09T03:01:35Z","url":"https://bitcointalk.org/index.php?topic=246.msg2077#msg2077","zh":"<p>我想我看出问题在哪了。巧合的是，我最近刚写了一个替代函数来替换出问题的这个，应该能修复。它还没启用，但在 SVN 版本里，它会在 debug.log 打印一条调试消息，显示新的目录值和旧值以便对比。</p>","zhText":"我想我看出问题在哪了。巧合的是，我最近刚写了一个替代函数来替换出问题的这个，应该能修复。它还没启用，但在 SVN 版本里，它会在 debug.log 打印一条调试消息，显示新的目录值和旧值以便对比。"},{"id":913,"sid":174,"sat":1,"tid":83,"tt":"BTC Vulnerability? (Massive Attack against BTC system. Is it really?)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-09","ts":"2010-07-09T03:28:46Z","url":"https://bitcointalk.org/index.php?topic=242.msg2078#msg2078","zh":"<p>楼主描述的现象叫\"垄断市场\"（cornering the market）。当有人试图买光世界上某种稀缺资产的全部供应，买得越多价格越高。到了某个点，再买就太贵了。这对事先持有的人是好事，他们能以离谱的高价卖给垄断者。随着价格不断上涨，总有人继续捂着等更高价、拒绝卖出。</p><p>亨特兄弟 1979 年试图垄断白银市场，最终以一场著名的破产收场：\n\"内尔森·邦克·亨特与赫伯特·亨特兄弟在 1970 年代末到 1980 年代初试图垄断世界白银市场，一度持有超过全球可交割白银一半的权益。[1] 在亨特兄弟囤积白银期间，银价从 1979 年 9 月的每盎司 11 美元涨到 1980 年 1 月的接近每盎司 50 美元。[2] 两个月后银价最终崩盘至每盎司 11 美元以下，[2] 其中相当大的跌幅发生在同一天，即后来所称的\"白银星期四\"，起因是交易所修改了保证金购买商品的规则。[3]\"</p><p><a href=\"http://en.wikipedia.org/wiki/Cornering_the_market\">http://en.wikipedia.org/wiki/Cornering_the_market</a></p>","zhText":"楼主描述的现象叫\"垄断市场\"（cornering the market）。当有人试图买光世界上某种稀缺资产的全部供应，买得越多价格越高。到了某个点，再买就太贵了。这对事先持有的人是好事，他们能以离谱的高价卖给垄断者。随着价格不断上涨，总有人继续捂着等更高价、拒绝卖出。\n亨特兄弟 1979 年试图垄断白银市场，最终以一场著名的破产收场：\n\"内尔森·邦克·亨特与赫伯特·亨特兄弟在 1970 年代末到 1980 年代初试图垄断世界白银市场，一度持有超过全球可交割白银一半的权益。[1] 在亨特兄弟囤积白银期间，银价从 1979 年 9 月的每盎司 11 美元涨到 1980 年 1 月的接近每盎司 50 美元。[2] 两个月后银价最终崩盘至每盎司 11 美元以下，[2] 其中相当大的跌幅发生在同一天，即后来所称的\"白银星期四\"，起因是交易所修改了保证金购买商品的规则。[3]\"\nhttp://en.wikipedia.org/wiki/Cornering_the_market"},{"id":917,"sid":175,"sat":1,"tid":84,"tt":"bitcoin 0.3 win64 - broken access to APPDATA if non-latin characters in username","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-09","ts":"2010-07-09T15:37:05Z","url":"https://bitcointalk.org/index.php?topic=246.msg2092#msg2092","zh":"<p>我用 XP 上的一个非小写 ASCII 账户名测试，确认了此 bug，然后测试了新的 GetDefaultDataDir 能修复它。此改动是 SVN 第 102 版。</p>","zhText":"我用 XP 上的一个非小写 ASCII 账户名测试，确认了此 bug，然后测试了新的 GetDefaultDataDir 能修复它。此改动是 SVN 第 102 版。"},{"id":887,"sid":null,"sat":0,"tid":81,"tt":"Security","src":"Bitcointalk","author":"llama","date":"2010-07-09","ts":"2010-07-09T20:13:27Z","url":"https://bitcointalk.org/index.php?topic=240.msg2105#msg2105","zh":"<blockquote><p>Satoshi：你愿意接受给 bitcoin 加一个 --testnetwork（或类似）的开关吗？切换到另一套创世块、数据目录、监听端口和 IRC 频道？也许还可以把平均出块时间调得非常短（比如每分钟一次而不是每 10 分钟一次），让一切快十倍，测试更高效。</p></blockquote><p>我附议，但我认为出块时间不应改变。我认为它应当与生产网络完全一致。这样，举例来说，测试者可以尝试用特别低延迟的节点来颠覆系统，并让结论仍适用于真实网络。</p><p>好主意，Gavin！</p>","zhText":"Satoshi：你愿意接受给 bitcoin 加一个 --testnetwork（或类似）的开关吗？切换到另一套创世块、数据目录、监听端口和 IRC 频道？也许还可以把平均出块时间调得非常短（比如每分钟一次而不是每 10 分钟一次），让一切快十倍，测试更高效。\n\n我附议，但我认为出块时间不应改变。我认为它应当与生产网络完全一致。这样，举例来说，测试者可以尝试用特别低延迟的节点来颠覆系统，并让结论仍适用于真实网络。\n好主意，Gavin！"},{"id":888,"sid":176,"sat":1,"tid":81,"tt":"Security","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-10","ts":"2010-07-10T12:58:02Z","url":"https://bitcointalk.org/index.php?topic=240.msg2132#msg2132","zh":"<p>我会开始考虑怎么做。</p><p>眼下，你多少可以用 -connect。可以用 -connect 让它连接你局域网里的本地计算机，比如 -connect=192.168.0.100。如果你从空白开始、不让它连主网络，难度仍停留在最初的低难度。不过如果你做了端口转发，外部节点仍可能向内连到你。</p><p>用 -connect 时它仍然走 IRC，你觉得当它被指示只用 -connect 连接特定节点时就不该上 IRC 吗？-connect 的主要场景是你有一组服务器农场，两台连着网络，其余的连到前两台。那种情况下，你不会想让 -connect 的机器上 IRC。</p><pre><code>void ThreadIRCSeed(void* parg)\n{\n    if (mapArgs.count(\"-connect\"))\n        return;</code></pre>","zhText":"我会开始考虑怎么做。\n眼下，你多少可以用 -connect。可以用 -connect 让它连接你局域网里的本地计算机，比如 -connect=192.168.0.100。如果你从空白开始、不让它连主网络，难度仍停留在最初的低难度。不过如果你做了端口转发，外部节点仍可能向内连到你。\n用 -connect 时它仍然走 IRC，你觉得当它被指示只用 -connect 连接特定节点时就不该上 IRC 吗？-connect 的主要场景是你有一组服务器农场，两台连着网络，其余的连到前两台。那种情况下，你不会想让 -connect 的机器上 IRC。\nvoid ThreadIRCSeed(void* parg)\n{\n if (mapArgs.count(\"-connect\"))\n return;"},{"id":829,"sid":177,"sat":1,"tid":73,"tt":"Major Meltdown","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-10","ts":"2010-07-10T13:36:17Z","url":"https://bitcointalk.org/index.php?topic=202.msg2133#msg2133","zh":"<blockquote><p>但是，如果发生的是签名被攻破（也许整数分解被解决了？量子计算机？），那么就算对最后一个有效区块达成共识也毫无意义。</p></blockquote><p>没错，倘若它是突然发生的。倘若它是渐进的，我们仍能过渡到更强的方案。你第一次运行升级后的软件时，它会用新的更强签名算法给你所有的钱重新签名。（方式是创建一笔把钱发送给你自己的更强签名的交易）</p>","zhText":"但是，如果发生的是签名被攻破（也许整数分解被解决了？量子计算机？），那么就算对最后一个有效区块达成共识也毫无意义。\n\n没错，倘若它是突然发生的。倘若它是渐进的，我们仍能过渡到更强的方案。你第一次运行升级后的软件时，它会用新的更强签名算法给你所有的钱重新签名。（方式是创建一笔把钱发送给你自己的更强签名的交易）"},{"id":1053,"sid":null,"sat":0,"tid":90,"tt":"Building Bitcoin 0.3","src":"Bitcointalk","author":"laszlo","date":"2010-07-12","ts":"2010-07-12T20:42:10Z","url":"https://bitcointalk.org/index.php?topic=298.msg2374#msg2374","zh":"<p>看起来是你的 wxWidgets 和 STL 的问题——你应该自己编译 2.9 版本的 wxWidgets。</p><p>用类似下面这样的方式来配置它，并在 makefile.unix 里调整引用路径。</p><blockquote><p>mkdir buildgtk\ncd buildgtk\n../configure --prefix=/home/my_user/bitcoin/deps \\\n--with-gtk \\\n--disable-shared \\\n--disable-debug_flag \\\n--enable-stl \\\n--enable-utf8 \\\n--with-libjpeg=builtin \\\n--with-libpng=builtin \\\n--withregex=builtin \\\n--with-libtiff=builtin \\\n--with-zlib=builtin \\\n--withexpat=builtin</p></blockquote>","zhText":"看起来是你的 wxWidgets 和 STL 的问题——你应该自己编译 2.9 版本的 wxWidgets。\n用类似下面这样的方式来配置它，并在 makefile.unix 里调整引用路径。\nmkdir buildgtk\ncd buildgtk\n../configure --prefix=/home/my_user/bitcoin/deps \\\n--with-gtk \\\n--disable-shared \\\n--disable-debug_flag \\\n--enable-stl \\\n--enable-utf8 \\\n--with-libjpeg=builtin \\\n--with-libpng=builtin \\\n--withregex=builtin \\\n--with-libtiff=builtin \\\n--with-zlib=builtin \\\n--withexpat=builtin"},{"id":1062,"sid":null,"sat":0,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"knightmb","date":"2010-07-12","ts":"2010-07-12T22:39:13Z","url":"https://bitcointalk.org/index.php?topic=299.msg2409#msg2409","zh":"<p>顺带一提，我追查到了另一个 GUI 问题。</p><p>\"最小化到托盘而非任务栏\"就是吃光我系统全部 CPU 的元凶。关掉这个选项之后，CPU 失控的问题就解决了。</p><p>似乎只有 64 位客户端受影响，我的 32 位客户端看起来都没这个问题。</p><p>我确实注意到 64 位客户端会不断生成多个\"托盘\"图标，直到 X 服务器最终垮掉，我想我应该把这个作为 bug 提交到什么地方？</p>","zhText":"顺带一提，我追查到了另一个 GUI 问题。\n\"最小化到托盘而非任务栏\"就是吃光我系统全部 CPU 的元凶。关掉这个选项之后，CPU 失控的问题就解决了。\n似乎只有 64 位客户端受影响，我的 32 位客户端看起来都没这个问题。\n我确实注意到 64 位客户端会不断生成多个\"托盘\"图标，直到 X 服务器最终垮掉，我想我应该把这个作为 bug 提交到什么地方？"},{"id":437,"sid":null,"sat":0,"tid":41,"tt":"bitcoin auto-renice-ing","src":"Bitcointalk","author":"asdfman","date":"2010-07-12","ts":"2010-07-12T23:11:24Z","url":"https://bitcointalk.org/index.php?topic=72.msg2416#msg2416","zh":"<p>lachesis - htop\n太赞了……有 ANSI 颜色，可以完整配置显示所有线程、树状视图等等等</p>","zhText":"lachesis - htop\n太赞了……有 ANSI 颜色，可以完整配置显示所有线程、树状视图等等等"},{"id":1091,"sid":null,"sat":0,"tid":94,"tt":"Error on Ubuntu 10.04","src":"Bitcointalk","author":"vishwambar","date":"2010-07-13","ts":"2010-07-13T11:56:45Z","url":"https://bitcointalk.org/index.php?topic=318.msg2537#msg2537","zh":"<p>你好，</p><p>在 Ubuntu 10.04 上试了 bitcoind 0.3，运行 bincoind 时出现如下错误</p><pre><code>05:23:02  IST: Debug: ../src/common/intl.cpp(2554): assert \"!m_strShort.empty()\" failed in AddCatalog(): must initialize catalog first\n[Debug] Generating a stack trace... please wait../src/common/intl.cpp(2554): assert \"!m_strShort.empty()\" failed in AddCatalog(): must initialize catalog first\n\nCall stack:\n[00] 0x80ed73b\n[01] 0x80ebf3e\n[02] 0x80eca8a\n[03] 0x80ed06a\n[04] 0x8133e72\n[05] 0x8133ddf\n[06] 0x80e3942\n[07] 0x80e7181</code></pre><p>运行 bitcoin 图形界面时也报类似错误，但它有个继续按钮，所以能正常用。</p><p>有人能告诉我这个错误是什么意思、该怎么解决吗？</p>","zhText":"你好，\n在 Ubuntu 10.04 上试了 bitcoind 0.3，运行 bincoind 时出现如下错误\n05:23:02 IST: Debug: ../src/common/intl.cpp(2554): assert \"!m_strShort.empty()\" failed in AddCatalog(): must initialize catalog first\n[Debug] Generating a stack trace... please wait../src/common/intl.cpp(2554): assert \"!m_strShort.empty()\" failed in AddCatalog(): must initialize catalog first\n\nCall stack:\n[00] 0x80ed73b\n[01] 0x80ebf3e\n[02] 0x80eca8a\n[03] 0x80ed06a\n[04] 0x8133e72\n[05] 0x8133ddf\n[06] 0x80e3942\n[07] 0x80e7181运行 bitcoin 图形界面时也报类似错误，但它有个继续按钮，所以能正常用。\n有人能告诉我这个错误是什么意思、该怎么解决吗？"},{"id":585,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"SmokeTooMuch","date":"2010-07-13","ts":"2010-07-13T18:55:55Z","url":"https://bitcointalk.org/index.php?topic=151.msg2619#msg2619","zh":"<p>我建议去掉主页底部的下载链接。\n如你所见，英文页面上的链接已指向新的 0.3 版，但其他语言的页面还只有旧 0.2 版的链接。\n反正右侧已经有一个当前版本的下载框，不如把各翻译页面上的链接去掉。</p>","zhText":"我建议去掉主页底部的下载链接。\n如你所见，英文页面上的链接已指向新的 0.3 版，但其他语言的页面还只有旧 0.2 版的链接。\n反正右侧已经有一个当前版本的下载框，不如把各翻译页面上的链接去掉。"},{"id":1102,"sid":null,"sat":0,"tid":95,"tt":"No blocks downloaded - MS Security Essentials users please read","src":"Bitcointalk","author":"ksd5","date":"2010-07-13","ts":"2010-07-13T22:19:34Z","url":"https://bitcointalk.org/index.php?topic=323.msg2666#msg2666","zh":"<p>好，我解决了问题。办法在 <a href=\"http://bitcointalk.org/index.php?topic=35.0\">http://bitcointalk.org/index.php?topic=35.0</a>。</p>","zhText":"好，我解决了问题。办法在 http://bitcointalk.org/index.php?topic=35.0。"},{"id":230,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Insti","date":"2010-07-14","ts":"2010-07-14T00:01:28Z","url":"https://bitcointalk.org/index.php?topic=43.msg2685#msg2685","zh":"<p>13/07/2010 0000000005a3f437d4a7f529fd4a7f529fd4a7f529fd4a7f529fd4a7f529fd4a</p>","zhText":"13/07/2010 0000000005a3f437d4a7f529fd4a7f529fd4a7f529fd4a7f529fd4a7f529fd4a"},{"id":1136,"sid":null,"sat":0,"tid":98,"tt":"resource hog","src":"Bitcointalk","author":"theymos","date":"2010-07-14","ts":"2010-07-14T00:28:15Z","url":"https://bitcointalk.org/index.php?topic=327.msg2690#msg2690","zh":"<blockquote><p>我认为 Windows 下不存在 renice。</p></blockquote><p>C:\\Windows\\System32\\cmd.exe /c start \"BitCoin\" /LOW /MIN \"C:\\Program Files\\Bitcoin\\bitcoin.exe\"</p>","zhText":"我认为 Windows 下不存在 renice。\n\nC:\\Windows\\System32\\cmd.exe /c start \"BitCoin\" /LOW /MIN \"C:\\Program Files\\Bitcoin\\bitcoin.exe\""},{"id":1089,"sid":null,"sat":0,"tid":93,"tt":"Stuck on 513 blocks","src":"Bitcointalk","author":"lachesis","date":"2010-07-14","ts":"2010-07-14T00:29:55Z","url":"https://bitcointalk.org/index.php?topic=305.msg2692#msg2692","zh":"<p>513 是我的区号。</p>","zhText":"513 是我的区号。"},{"id":1167,"sid":null,"sat":0,"tid":101,"tt":"stopped prodicing coins","src":"Bitcointalk","author":"joechip","date":"2010-07-14","ts":"2010-07-14T11:42:26Z","url":"https://bitcointalk.org/index.php?topic=343.msg2805#msg2805","zh":"<blockquote><p>产出率取决于你每秒的哈希数，以及 1 次哈希恰好命中正确答案的概率。</p><p>所以基本上 khash/s × 运气系数 = 生成的比特币。</p></blockquote><p>以当前\"难度\"的跳升，按约 875 khash/s 我应该每 2.8 天生成一个区块。</p><p>所以，暂时没什么可抱怨的……暂时。</p><p><a href=\"http://www.alloscomp.com/bitcoin/calculator.php\">http://www.alloscomp.com/bitcoin/calculator.php</a></p>","zhText":"产出率取决于你每秒的哈希数，以及 1 次哈希恰好命中正确答案的概率。\n所以基本上 khash/s × 运气系数 = 生成的比特币。\n\n以当前\"难度\"的跳升，按约 875 khash/s 我应该每 2.8 天生成一个区块。\n所以，暂时没什么可抱怨的……暂时。\nhttp://www.alloscomp.com/bitcoin/calculator.php"},{"id":1037,"sid":null,"sat":0,"tid":88,"tt":"Donations to freebitcoins.appspot.com needed!","src":"Bitcointalk","author":"BitLex","date":"2010-07-14","ts":"2010-07-14T15:30:03Z","url":"https://bitcointalk.org/index.php?topic=295.msg2847#msg2847","zh":"<p>我收到 5 枚币之后马上就寄了回去，\n是个检验我们系统的好办法，对新来的「潜在客户」来说现在依然是。</p><p>可惜那些早期日子我没赶上，但所有打进来 5 枚币的，我都会乐意退回给你。</p>","zhText":"我收到 5 枚币之后马上就寄了回去，\n是个检验我们系统的好办法，对新来的「潜在客户」来说现在依然是。\n可惜那些早期日子我没赶上，但所有打进来 5 枚币的，我都会乐意退回给你。"},{"id":1031,"sid":null,"sat":0,"tid":87,"tt":"Warning this block was not received by any other nodes","src":"Bitcointalk","author":"BitLex","date":"2010-07-14","ts":"2010-07-14T15:57:32Z","url":"https://bitcointalk.org/index.php?topic=291.msg2858#msg2858","zh":"<p>没法只生成 1 枚币，\n每完成 1 个区块得 50 枚币，如果别人手快，你就一枚都拿不到。</p><p>几天前我不到一天就能生成 50 枚币，但 slashdot 报道之后出块难度涨到了三倍，生成币的时间也一样。</p><p>所以没错，生成一枚币要花\"永远\"是很平常的，至少做好花上几天的心理准备，才能拿到你的头 50 枚币，\n取决于你有多少富余的 CPU 算力。</p>","zhText":"没法只生成 1 枚币，\n每完成 1 个区块得 50 枚币，如果别人手快，你就一枚都拿不到。\n几天前我不到一天就能生成 50 枚币，但 slashdot 报道之后出块难度涨到了三倍，生成币的时间也一样。\n所以没错，生成一枚币要花\"永远\"是很平常的，至少做好花上几天的心理准备，才能拿到你的头 50 枚币，\n取决于你有多少富余的 CPU 算力。"},{"id":1103,"sid":178,"sat":1,"tid":95,"tt":"No blocks downloaded - MS Security Essentials users please read","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T16:22:03Z","url":"https://bitcointalk.org/index.php?topic=323.msg2867#msg2867","zh":"<p>所以就是它挡住了区块下载？</p><p>链接：\"Win32 CPU Cycles vs 'Live Protection' Engines\"</p><p>对 BitcoinFX 来说，实时防护是不让它获得生成币用的 CPU。你说你朋友能跑到 1400-1600 khash/s，说明它有 CPU。我猜那时实时防护拦的是程序的其他部分？</p>","zhText":"所以就是它挡住了区块下载？\n链接：\"Win32 CPU Cycles vs 'Live Protection' Engines\"\n对 BitcoinFX 来说，实时防护是不让它获得生成币用的 CPU。你说你朋友能跑到 1400-1600 khash/s，说明它有 CPU。我猜那时实时防护拦的是程序的其他部分？"},{"id":1137,"sid":179,"sat":1,"tid":98,"tt":"resource hog","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T16:29:39Z","url":"https://bitcointalk.org/index.php?topic=327.msg2871#msg2871","zh":"<p>在 Windows 上，你在任务管理器里选中进程，右键，设置优先级。设为\"低于标准\"或\"低\"。不过这应该没有影响。</p><p>如果你关掉\"生成硬币\"，CPU 占用会不会立刻平掉？那就能确认它占的 CPU 时间全是生成，而那本来就是空闲优先级。</p><p>也可能慢只是因为你同时运行的东西太多、内存耗尽开始用页面文件了。当你从一个程序切到另一个，就得从磁盘把它换页进来。</p>","zhText":"在 Windows 上，你在任务管理器里选中进程，右键，设置优先级。设为\"低于标准\"或\"低\"。不过这应该没有影响。\n如果你关掉\"生成硬币\"，CPU 占用会不会立刻平掉？那就能确认它占的 CPU 时间全是生成，而那本来就是空闲优先级。\n也可能慢只是因为你同时运行的东西太多、内存耗尽开始用页面文件了。当你从一个程序切到另一个，就得从磁盘把它换页进来。"},{"id":1168,"sid":180,"sat":1,"tid":101,"tt":"stopped prodicing coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T17:04:02Z","url":"https://bitcointalk.org/index.php?topic=343.msg2880#msg2880","zh":"<p>感谢你做了那个计算器。</p><p>难度一两天前刚翻倍，而且本来就是随机的，你可能会遇到长得惊人的空窗期。</p>","zhText":"感谢你做了那个计算器。\n难度一两天前刚翻倍，而且本来就是随机的，你可能会遇到长得惊人的空窗期。"},{"id":1071,"sid":null,"sat":0,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"aceat64","date":"2010-07-14","ts":"2010-07-14T17:08:21Z","url":"https://bitcointalk.org/index.php?topic=299.msg2882#msg2882","zh":"<p>一个相当简单的变通办法是用 root 之外的用户运行 bitcoind。由于 bitcoin 不需要 root 权限，它能正常运行，而且无法设置负的 nice 值（只有 root 能做到）。这能确保 bitcoind 能用的最高优先级就是 0（普通）。</p>","zhText":"一个相当简单的变通办法是用 root 之外的用户运行 bitcoind。由于 bitcoin 不需要 root 权限，它能正常运行，而且无法设置负的 nice 值（只有 root 能做到）。这能确保 bitcoind 能用的最高优先级就是 0（普通）。"},{"id":1054,"sid":181,"sat":1,"tid":90,"tt":"Building Bitcoin 0.3","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T17:34:50Z","url":"https://bitcointalk.org/index.php?topic=298.msg2885#msg2885","zh":"<p>它不能用于 wxWidgets 2.8，需要 wxWidgets 2.9。可惜还没有 wxWidgets 2.9 的 Debian 软件包。</p>","zhText":"它不能用于 wxWidgets 2.8，需要 wxWidgets 2.9。可惜还没有 wxWidgets 2.9 的 Debian 软件包。"},{"id":438,"sid":182,"sat":1,"tid":41,"tt":"bitcoin auto-renice-ing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T17:38:31Z","url":"https://bitcointalk.org/index.php?topic=72.msg2886#msg2886","zh":"<p>Laszlo 已修正此问题，可惜赶不上 0.3.0 了。不过应该很快会有 0.3.1。</p><p>问题在于我用的是 PRIO_MIN，最低优先级本该用 PRIO_MAX。操作系统本不该允许你调高优先级，所以用 PRIO_MIN 应该会让它停在优先级 0。</p>","zhText":"Laszlo 已修正此问题，可惜赶不上 0.3.0 了。不过应该很快会有 0.3.1。\n问题在于我用的是 PRIO_MIN，最低优先级本该用 PRIO_MAX。操作系统本不该允许你调高优先级，所以用 PRIO_MIN 应该会让它停在优先级 0。"},{"id":1090,"sid":183,"sat":1,"tid":93,"tt":"Stuck on 513 blocks","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T18:02:28Z","url":"https://bitcointalk.org/index.php?topic=305.msg2895#msg2895","zh":"<p>这已经是我第二次见到有人报告这个\"Live Protection\"问题了。</p><p>它一定是在阻断程序的网络通信。听起来它允许建立连接，所以显示了 10 条连接，却不允许在上面收发任何数据。</p><p>我们需要更好地弄清这个问题。</p><p>有没有人能在 wiki 上写点说明，讲讲如何关闭实时防护（或它完整正式的名称）或添加排除项。</p>","zhText":"这已经是我第二次见到有人报告这个\"Live Protection\"问题了。\n它一定是在阻断程序的网络通信。听起来它允许建立连接，所以显示了 10 条连接，却不允许在上面收发任何数据。\n我们需要更好地弄清这个问题。\n有没有人能在 wiki 上写点说明，讲讲如何关闭实时防护（或它完整正式的名称）或添加排除项。"},{"id":1092,"sid":184,"sat":1,"tid":94,"tt":"Error on Ubuntu 10.04","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T18:25:41Z","url":"https://bitcointalk.org/index.php?topic=318.msg2903#msg2903","zh":"<p>你的电脑语言设置是什么？是德语、荷兰语还是意大利语？还是\"nl-??\"这类子语言？</p><p>它在尝试加载翻译但失败了。你可以删掉 bitcoin 自带的 locale 目录，让它不再尝试使用。</p><p>有人能在 Ubuntu 上把每种语言都测一遍，看看是只有一种有问题，还是三种都有吗？</p>","zhText":"你的电脑语言设置是什么？是德语、荷兰语还是意大利语？还是\"nl-??\"这类子语言？\n它在尝试加载翻译但失败了。你可以删掉 bitcoin 自带的 locale 目录，让它不再尝试使用。\n有人能在 Ubuntu 上把每种语言都测一遍，看看是只有一种有问题，还是三种都有吗？"},{"id":1072,"sid":185,"sat":1,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T18:45:53Z","url":"https://bitcointalk.org/index.php?topic=299.msg2908#msg2908","zh":"<p>在最初错误地尝试把自己设为最低优先级之后，生成线程只在找到区块时才临时再次调整优先级。找到区块时，你当然希望它赶紧在别人先找到一个、让你的作废之前尽快广播出去。生成线程只在每几天里以更高优先级运行不到一秒。</p><p>很快会有针对此问题的 0.3.1 发布。在发布之前，0.3.1 还有几个其他问题需要修复。</p><blockquote><p>顺带一提，我追查到了另一个 GUI 问题。</p><p>\"最小化到托盘而非任务栏\"就是吃光我系统全部 CPU 的元凶。关掉这个选项之后，CPU 失控的问题就解决了。</p><p>似乎只有 64 位客户端受影响，我的 32 位客户端看起来都没这个问题。</p><p>我确实注意到 64 位客户端会不断生成多个\"托盘\"图标，直到 X 服务器最终垮掉，我想我应该把这个作为 bug 提交到什么地方？</p></blockquote><p>有意思。我知道 Ubuntu 上的最小化到托盘非常笨拙，但不知道它还有 CPU 占满的问题。有人能复现这个问题吗？我们以前在 Linux 上禁用过这个功能，但后来觉得不完美的界面总比彻底失去这个功能好。我想我们应该在 Linux 上再次禁用它。</p>","zhText":"在最初错误地尝试把自己设为最低优先级之后，生成线程只在找到区块时才临时再次调整优先级。找到区块时，你当然希望它赶紧在别人先找到一个、让你的作废之前尽快广播出去。生成线程只在每几天里以更高优先级运行不到一秒。\n很快会有针对此问题的 0.3.1 发布。在发布之前，0.3.1 还有几个其他问题需要修复。\n顺带一提，我追查到了另一个 GUI 问题。\n\"最小化到托盘而非任务栏\"就是吃光我系统全部 CPU 的元凶。关掉这个选项之后，CPU 失控的问题就解决了。\n似乎只有 64 位客户端受影响，我的 32 位客户端看起来都没这个问题。\n我确实注意到 64 位客户端会不断生成多个\"托盘\"图标，直到 X 服务器最终垮掉，我想我应该把这个作为 bug 提交到什么地方？\n\n有意思。我知道 Ubuntu 上的最小化到托盘非常笨拙，但不知道它还有 CPU 占满的问题。有人能复现这个问题吗？我们以前在 Linux 上禁用过这个功能，但后来觉得不完美的界面总比彻底失去这个功能好。我想我们应该在 Linux 上再次禁用它。"},{"id":1032,"sid":186,"sat":1,"tid":87,"tt":"Warning this block was not received by any other nodes","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T18:56:29Z","url":"https://bitcointalk.org/index.php?topic=291.msg2913#msg2913","zh":"<p>Microsoft Security Essentials 的实时防护（Live Protection）正在阻断你与网络的通信。你有连接，这让 Bitcoin 以为自己已联网，但连接是静默的，因为数据被拦截了。</p><p>你需要把 bitcoin.exe 加进实时防护的排除进程。</p><p>这正在变成一个常见问题。应该有人写一篇置顶帖说明。</p><p>\"Warning: This block was not received by any other nodes\"这条消息出现在 Bitcoin 广播了一个区块但没人确认收到时。这个警告正是为这种情况准备的：你出于某种原因有连接，但连接已经死了，没人听得到你。你的区块永远不会生效，因为没人收到它。</p>","zhText":"Microsoft Security Essentials 的实时防护（Live Protection）正在阻断你与网络的通信。你有连接，这让 Bitcoin 以为自己已联网，但连接是静默的，因为数据被拦截了。\n你需要把 bitcoin.exe 加进实时防护的排除进程。\n这正在变成一个常见问题。应该有人写一篇置顶帖说明。\n\"Warning: This block was not received by any other nodes\"这条消息出现在 Bitcoin 广播了一个区块但没人确认收到时。这个警告正是为这种情况准备的：你出于某种原因有连接，但连接已经死了，没人听得到你。你的区块永远不会生效，因为没人收到它。"},{"id":1116,"sid":null,"sat":0,"tid":96,"tt":"Hash/sec Throttling for Democracy","src":"Bitcointalk","author":"knightmb","date":"2010-07-14","ts":"2010-07-14T19:17:43Z","url":"https://bitcointalk.org/index.php?topic=325.msg2917#msg2917","zh":"<blockquote><p>好——如果每个人的机器都在对不同的题目做哈希，那我明白运气为什么会是因素了。不过，我的机器在算的题目和你的机器在算的题目等等之间的差异从何而来？前面有个回复似乎暗示这与该用户最近参与的交易有关……那我们这些最近没参与任何交易的人呢？（我最近的一笔至少是两天前了）</p></blockquote><p>就挖币而言，你只需要连着网络。这就是你的计算机广播\"我找到了！！\"消息、其他计算机检验其是否有效所需的全部。由于区块在持续不断地生成，离线挖币不现实。因为如果 2 天前你的计算机找到了一个区块，但我的也找到了，而我的电脑全程在线，网络整体就会宣布我才是那枚币的赢家/所有者。你的电脑 2 天后才上线，广播说它有同一个解，其他计算机只会讥一句\"太晚了，XYZ 已经解出来了，下次好运\"。</p><p>至于题目之间的差异：一个区块被找到后，所有人都从下一个区块重新开始。所以如果你的计算机才完成了区块 68000 的 1%，就收到\"XYZ 几分钟前刚解出区块 68000\"的消息，你的电脑会想\"好吧，下一个\"。它不会浪费 CPU 去解一个已被别人解出的区块。这就是验证部分的意义。否则，有人随手拼个客户端，广播\"我解出了区块 68000、680001、68002 等等\"来宣称拥有整个区段的所有权就行了。当一个客户端声称解出了区块，所有其他计算机会说\"行，那就证明一下，把你的结果发给我\"。当它们中有足够多互相核对之后，就会达成一致：\"对，你的电脑解出了区块 68000，你是新的所有者，恭喜\"。</p><p>关键在于：我们的电脑解出一个区块要几小时/几天，而其他所有人验证真伪只要几毫秒。这就杜绝了网络上\"伪造区块已找到\"的攻击。</p><p>再举个例子：一个房间里坐着几百人。每人拿到一个随机打乱的魔方。第一个解出自己魔方的人得 50 枚币。</p><p>现在如果有人喊\"我解出来了\"，周围的人只要瞥一眼就能分辨真假（六面都是纯色）。如果有人喊\"我解出来了\"而魔方仍是一团乱，大家只会无视那个人继续下去。真正第一个解出的人赢得奖品，然后所有人扔掉手里的魔方，天花板上又落下一批随机打乱的魔方，流程重新开始。</p>","zhText":"好——如果每个人的机器都在对不同的题目做哈希，那我明白运气为什么会是因素了。不过，我的机器在算的题目和你的机器在算的题目等等之间的差异从何而来？前面有个回复似乎暗示这与该用户最近参与的交易有关……那我们这些最近没参与任何交易的人呢？（我最近的一笔至少是两天前了）\n\n就挖币而言，你只需要连着网络。这就是你的计算机广播\"我找到了！！\"消息、其他计算机检验其是否有效所需的全部。由于区块在持续不断地生成，离线挖币不现实。因为如果 2 天前你的计算机找到了一个区块，但我的也找到了，而我的电脑全程在线，网络整体就会宣布我才是那枚币的赢家/所有者。你的电脑 2 天后才上线，广播说它有同一个解，其他计算机只会讥一句\"太晚了，XYZ 已经解出来了，下次好运\"。\n至于题目之间的差异：一个区块被找到后，所有人都从下一个区块重新开始。所以如果你的计算机才完成了区块 68000 的 1%，就收到\"XYZ 几分钟前刚解出区块 68000\"的消息，你的电脑会想\"好吧，下一个\"。它不会浪费 CPU 去解一个已被别人解出的区块。这就是验证部分的意义。否则，有人随手拼个客户端，广播\"我解出了区块 68000、680001、68002 等等\"来宣称拥有整个区段的所有权就行了。当一个客户端声称解出了区块，所有其他计算机会说\"行，那就证明一下，把你的结果发给我\"。当它们中有足够多互相核对之后，就会达成一致：\"对，你的电脑解出了区块 68000，你是新的所有者，恭喜\"。\n关键在于：我们的电脑解出一个区块要几小时/几天，而其他所有人验证真伪只要几毫秒。这就杜绝了网络上\"伪造区块已找到\"的攻击。\n再举个例子：一个房间里坐着几百人。每人拿到一个随机打乱的魔方。第一个解出自己魔方的人得 50 枚币。\n现在如果有人喊\"我解出来了\"，周围的人只要瞥一眼就能分辨真假（六面都是纯色）。如果有人喊\"我解出来了\"而魔方仍是一团乱，大家只会无视那个人继续下去。真正第一个解出的人赢得奖品，然后所有人扔掉手里的魔方，天花板上又落下一批随机打乱的魔方，流程重新开始。"},{"id":954,"sid":null,"sat":0,"tid":85,"tt":"Scalability","src":"Bitcointalk","author":"InterArmaEnimSil","date":"2010-07-14","ts":"2010-07-14T19:23:50Z","url":"https://bitcointalk.org/index.php?topic=286.msg2921#msg2921","zh":"<p>我附议用 DHT 维护客户端列表的想法——不能让几百万人依赖一个 IRC 频道之类。至于扩展性问题，关键根本不在硬盘空间，而在网络带宽。大家都忘了，不是 bytes_per_transaction*transactions，也就是所有人都在用的那个数。如大家所说，那个数完全可控。不，我们关心的数是 bytes_per_transaction * transactions * number_of_clients * total_hops_beyond_first_between_all_clients_combined</p><p>这才是 BTC 协议随网络扩展所消耗的带宽量。我们说的不只是给每个客户端发一份交易副本——而是多个客户端互相广播可能冗余的数据，而且跨越多跳，意味着多次重播。数字大得多，处理起来难得多了。不过它是可控的，只是不在客户端当前这版网络处理方式之内。</p><p>也许在\"大众化\"阶段，BTC 链可以按地区拆分，类似现在域名管理机构的辖区——然后可以有一个跨地区边界的替代交易协议？这会改善问题的原始数字，也能降低延迟及相关问题。不是说我认为这是绝佳方案——但除非量子计算之类出现重大突破，跨所有活跃客户端的 P2P 洪泛显然是行不通的。</p>","zhText":"我附议用 DHT 维护客户端列表的想法——不能让几百万人依赖一个 IRC 频道之类。至于扩展性问题，关键根本不在硬盘空间，而在网络带宽。大家都忘了，不是 bytes_per_transaction*transactions，也就是所有人都在用的那个数。如大家所说，那个数完全可控。不，我们关心的数是 bytes_per_transaction * transactions * number_of_clients * total_hops_beyond_first_between_all_clients_combined\n这才是 BTC 协议随网络扩展所消耗的带宽量。我们说的不只是给每个客户端发一份交易副本——而是多个客户端互相广播可能冗余的数据，而且跨越多跳，意味着多次重播。数字大得多，处理起来难得多了。不过它是可控的，只是不在客户端当前这版网络处理方式之内。\n也许在\"大众化\"阶段，BTC 链可以按地区拆分，类似现在域名管理机构的辖区——然后可以有一个跨地区边界的替代交易协议？这会改善问题的原始数字，也能降低延迟及相关问题。不是说我认为这是绝佳方案——但除非量子计算之类出现重大突破，跨所有活跃客户端的 P2P 洪泛显然是行不通的。"},{"id":1120,"sid":null,"sat":0,"tid":96,"tt":"Hash/sec Throttling for Democracy","src":"Bitcointalk","author":"theymos","date":"2010-07-14","ts":"2010-07-14T19:58:25Z","url":"https://bitcointalk.org/index.php?topic=325.msg2928#msg2928","zh":"<p>除了随机 nonce，每个区块还包含一个比特币地址（新生成的、仅用于此用途），解出区块后 50 BC 的奖励就记到它名下。即使两个节点恰好选了同一个起始随机 nonce（这不太可能），它们也几乎注定有不同的比特币地址。</p>","zhText":"除了随机 nonce，每个区块还包含一个比特币地址（新生成的、仅用于此用途），解出区块后 50 BC 的奖励就记到它名下。即使两个节点恰好选了同一个起始随机 nonce（这不太可能），它们也几乎注定有不同的比特币地址。"},{"id":1121,"sid":187,"sat":1,"tid":96,"tt":"Hash/sec Throttling for Democracy","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T20:25:06Z","url":"https://bitcointalk.org/index.php?topic=325.msg2935#msg2935","zh":"<blockquote><p>所以如果你的计算机才完成了区块 68000 的 1%</p></blockquote><p>这是一个常见的困惑点。不存在\"完成了区块求解的 1%\"这回事。你不会朝解出它取得进展。算了 24 小时之后，你解出它的概率与最初或任何时刻相同。</p><p>就像一次抛 37 枚硬币、要求全部正面朝上。每尝试一次，成功的概率都一样。</p><p>随机数用的是 OpenSSL 的安全随机数生成器。在 Windows 上，它以你的电脑开机以来全部硬件性能计数器的完整集合做种子；在 Linux 上则是 dev/random。</p>","zhText":"所以如果你的计算机才完成了区块 68000 的 1%\n\n这是一个常见的困惑点。不存在\"完成了区块求解的 1%\"这回事。你不会朝解出它取得进展。算了 24 小时之后，你解出它的概率与最初或任何时刻相同。\n就像一次抛 37 枚硬币、要求全部正面朝上。每尝试一次，成功的概率都一样。\n随机数用的是 OpenSSL 的安全随机数生成器。在 Windows 上，它以你的电脑开机以来全部硬件性能计数器的完整集合做种子；在 Linux 上则是 dev/random。"},{"id":1075,"sid":null,"sat":0,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"lachesis","date":"2010-07-14","ts":"2010-07-14T20:50:56Z","url":"https://bitcointalk.org/index.php?topic=299.msg2943#msg2943","zh":"<p>能不能通过启动开关甚至编译开关把这个功能重新打开？我很喜欢它，而且我没有这个问题。</p>","zhText":"能不能通过启动开关甚至编译开关把这个功能重新打开？我很喜欢它，而且我没有这个问题。"},{"id":955,"sid":188,"sat":1,"tid":85,"tt":"Scalability","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-14","ts":"2010-07-14T21:10:52Z","url":"https://bitcointalk.org/index.php?topic=286.msg2947#msg2947","zh":"<p>设计中勾勒了一个不需要完整区块链的轻量客户端。在设计 PDF 里它叫简化支付验证（Simplified Payment Verification）。轻量客户端可以收发交易，只是不能生成区块。它不需要信任某个节点来验证支付，仍能自行验证。</p><p>轻量客户端尚未实现，计划是在需要时实现。目前，每个人都运行完整的网络节点。</p><p>我预计节点永远不会超过 10 万个，可能更少。它会达到一个均衡：再多节点加入就不值当了。其余的将是轻量客户端，可能数以百万计。</p><p>达到均衡规模后，许多节点将是服务器农场，农场里有一两个网络节点，通过局域网喂给农场其余部分。</p>","zhText":"设计中勾勒了一个不需要完整区块链的轻量客户端。在设计 PDF 里它叫简化支付验证（Simplified Payment Verification）。轻量客户端可以收发交易，只是不能生成区块。它不需要信任某个节点来验证支付，仍能自行验证。\n轻量客户端尚未实现，计划是在需要时实现。目前，每个人都运行完整的网络节点。\n我预计节点永远不会超过 10 万个，可能更少。它会达到一个均衡：再多节点加入就不值当了。其余的将是轻量客户端，可能数以百万计。\n达到均衡规模后，许多节点将是服务器农场，农场里有一两个网络节点，通过局域网喂给农场其余部分。"},{"id":1076,"sid":189,"sat":1,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T00:18:23Z","url":"https://bitcointalk.org/index.php?topic=299.msg3008#msg3008","zh":"<p>好，加了未写入文档的开关\"-minimizetotray\"来重新启用该选项。</p><p>我已把改动上传到 SVN。</p>","zhText":"好，加了未写入文档的开关\"-minimizetotray\"来重新启用该选项。\n我已把改动上传到 SVN。"},{"id":1077,"sid":null,"sat":0,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"knightmb","date":"2010-07-15","ts":"2010-07-15T00:21:16Z","url":"https://bitcointalk.org/index.php?topic=299.msg3009#msg3009","zh":"<blockquote><p>能不能加个启动开关甚至编译开关把那个功能重新打开？我很喜欢它，而且我没遇到这个问题。</p></blockquote><p>我也非常喜欢，只可惜在我机器上不管用</p>","zhText":"能不能加个启动开关甚至编译开关把那个功能重新打开？我很喜欢它，而且我没遇到这个问题。\n\n我也非常喜欢，只可惜在我机器上不管用"},{"id":589,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"aidos","date":"2010-07-15","ts":"2010-07-15T00:49:11Z","url":"https://bitcointalk.org/index.php?topic=151.msg3017#msg3017","zh":"<p>好，这是法语的 .po 文件。顺手记下几个问题：</p><p>1. \"About\"（关于）框没有应用翻译，它仍给我显示英文版，尽管软件其他部分都在用翻译后的字符串，而且 .po 文件里也包含\"About\"框消息的翻译串。设置窗口里的\"Apply\"（应用）按钮同样如此。\n2. 如果主窗口交易列表中某笔交易的描述含有带变音符的字符（比如\"éàèç\"），它就显示不出来。我猜是字符串在某个环节没被当作 UTF8 正确处理。\n3. 一些翻译后的字符串放不进对话框了（法语比英语啰嗦一点）。有些情况可以通过插入一个\"\n\"解决，但并非总是可行（比如窗口标题）。\n4. 关于 .po 文件：\n   - .po 文件里有几个字符串并不需要翻译（如\"Bitcoin\"）。也许这些不该放进 _(\"...\") 里？\n   - 另有一些不该拆分。我记得有一条关于交易费的消息被拆成了两段以便插入费值，其实用个 %s 就行了。这加大了翻译难度，我不得不翻源码才搞清楚到底是怎么回事。\n   - 有些字符串的开头或结尾带空白字符，其必要性很值得商榷，而且在 PoEdit 里很容易漏看。\n   - 许多字符串把每个单词首字母都大写，这在法语里看着很怪。我查过，我的其他软件都不这样，所以我统一用了正常的大小写。\n   - 有几条消息字符串几乎一模一样，也许这些消息用同一字符串更好？例如：\"This is an oversized transaction that requires a transaction fee of %s\" 和 \"Error: This is an oversized transaction that requires a transaction fee of %s  \"。除了开头多个 \"Error:\"、结尾多个空格（这空格大概是多余的？），文字完全相同。</p><p>最后，提供的 .po 文件不是最新的，因为其中一条设置字符串已经改动，没有被翻译（关于登录时启动 Bitcoin 的那条）。</p><p>除此以外，Bitcoin 看起来是个了不起的概念，干得好！</p>","zhText":"好，这是法语的 .po 文件。顺手记下几个问题：\n1. \"About\"（关于）框没有应用翻译，它仍给我显示英文版，尽管软件其他部分都在用翻译后的字符串，而且 .po 文件里也包含\"About\"框消息的翻译串。设置窗口里的\"Apply\"（应用）按钮同样如此。\n2. 如果主窗口交易列表中某笔交易的描述含有带变音符的字符（比如\"éàèç\"），它就显示不出来。我猜是字符串在某个环节没被当作 UTF8 正确处理。\n3. 一些翻译后的字符串放不进对话框了（法语比英语啰嗦一点）。有些情况可以通过插入一个\"\n\"解决，但并非总是可行（比如窗口标题）。\n4. 关于 .po 文件：\n - .po 文件里有几个字符串并不需要翻译（如\"Bitcoin\"）。也许这些不该放进 _(\"...\") 里？\n - 另有一些不该拆分。我记得有一条关于交易费的消息被拆成了两段以便插入费值，其实用个 %s 就行了。这加大了翻译难度，我不得不翻源码才搞清楚到底是怎么回事。\n - 有些字符串的开头或结尾带空白字符，其必要性很值得商榷，而且在 PoEdit 里很容易漏看。\n - 许多字符串把每个单词首字母都大写，这在法语里看着很怪。我查过，我的其他软件都不这样，所以我统一用了正常的大小写。\n - 有几条消息字符串几乎一模一样，也许这些消息用同一字符串更好？例如：\"This is an oversized transaction that requires a transaction fee of %s\" 和 \"Error: This is an oversized transaction that requires a transaction fee of %s \"。除了开头多个 \"Error:\"、结尾多个空格（这空格大概是多余的？），文字完全相同。\n最后，提供的 .po 文件不是最新的，因为其中一条设置字符串已经改动，没有被翻译（关于登录时启动 Bitcoin 的那条）。\n除此以外，Bitcoin 看起来是个了不起的概念，干得好！"},{"id":1126,"sid":null,"sat":0,"tid":97,"tt":"UPDATED - Linux x64 bins for those having libcrypto and GLIBCXX_3.4.11 troubles","src":"Bitcointalk","author":"laszlo","date":"2010-07-15","ts":"2010-07-15T01:56:37Z","url":"https://bitcointalk.org/index.php?topic=326.msg3048#msg3048","zh":"<p>能静态链接 C++ 库吗？如果可以，这是可接受的做法吗，还是会带来问题？也许直接把库随程序附上？我说的静态只针对 openssl。</p>","zhText":"能静态链接 C++ 库吗？如果可以，这是可接受的做法吗，还是会带来问题？也许直接把库随程序附上？我说的静态只针对 openssl。"},{"id":592,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"milkiway","date":"2010-07-15","ts":"2010-07-15T09:35:10Z","url":"https://bitcointalk.org/index.php?topic=151.msg3123#msg3123","zh":"<p>给，更新过的 .po 文件，还有翻译成西班牙语的首页</p><p>今天下午我开始翻译 FAQ</p>","zhText":"给，更新过的 .po 文件，还有翻译成西班牙语的首页\n今天下午我开始翻译 FAQ"},{"id":1215,"sid":null,"sat":0,"tid":104,"tt":"[Bitcoin 0.3.0] Runtime error","src":"Bitcointalk","author":"SmokeTooMuch","date":"2010-07-15","ts":"2010-07-15T12:25:16Z","url":"https://bitcointalk.org/index.php?topic=373.msg3144#msg3144","zh":"<p><a href=\"http://bitcointalk.org/index.php?topic=316.0\">http://bitcointalk.org/index.php?topic=316.0</a></p><p>也许这个主题串有帮助。</p>","zhText":"http://bitcointalk.org/index.php?topic=316.0\n也许这个主题串有帮助。"},{"id":1138,"sid":null,"sat":0,"tid":98,"tt":"resource hog","src":"Bitcointalk","author":"andy_3_913","date":"2010-07-15","ts":"2010-07-15T14:00:09Z","url":"https://bitcointalk.org/index.php?topic=327.msg3149#msg3149","zh":"<blockquote><p>在 Windows 上，你在任务管理器里选中进程，右键，设置优先级。设为\"低于标准\"或\"低\"。不过这应该没有影响。</p><p>如果你关掉\"生成硬币\"，CPU 占用会不会立刻平掉？那就能确认它占的 CPU 时间全是生成，而那本来就是空闲优先级。</p><p>也可能慢只是因为你同时运行的东西太多、内存耗尽开始用页面文件了。当你从一个程序切到另一个，就得从磁盘把它换页进来。</p></blockquote><p>谢谢大家的帮助\n已试着手动把优先级设为\"低于标准\"，它就规矩了！！但仍停在 100%\n另外，我一关掉生成硬币，CPU 占用就掉到零！\n打开生成，CPU 又回到 100%</p>","zhText":"在 Windows 上，你在任务管理器里选中进程，右键，设置优先级。设为\"低于标准\"或\"低\"。不过这应该没有影响。\n如果你关掉\"生成硬币\"，CPU 占用会不会立刻平掉？那就能确认它占的 CPU 时间全是生成，而那本来就是空闲优先级。\n也可能慢只是因为你同时运行的东西太多、内存耗尽开始用页面文件了。当你从一个程序切到另一个，就得从磁盘把它换页进来。\n\n谢谢大家的帮助\n已试着手动把优先级设为\"低于标准\"，它就规矩了！！但仍停在 100%\n另外，我一关掉生成硬币，CPU 占用就掉到零！\n打开生成，CPU 又回到 100%"},{"id":1216,"sid":190,"sat":1,"tid":104,"tt":"[Bitcoin 0.3.0] Runtime error","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T14:05:20Z","url":"https://bitcointalk.org/index.php?topic=373.msg3150#msg3150","zh":"<p>更直接的，是这个：\n<a href=\"http://bitcointalk.org/index.php?topic=246.0\">http://bitcointalk.org/index.php?topic=246.0</a></p><p>我很快会发布包含此修复的 0.3.1 候选版。请试用，并告诉我问题是否解决。</p>","zhText":"更直接的，是这个：\nhttp://bitcointalk.org/index.php?topic=246.0\n我很快会发布包含此修复的 0.3.1 候选版。请试用，并告诉我问题是否解决。"},{"id":1127,"sid":191,"sat":1,"tid":97,"tt":"UPDATED - Linux x64 bins for those having libcrypto and GLIBCXX_3.4.11 troubles","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T14:33:04Z","url":"https://bitcointalk.org/index.php?topic=326.msg3157#msg3157","zh":"<p>我们甚至没有指定链接 glibcxx_3.4.11，所以 gcc 一定是在幕后自动链接了它。大概有个编译开关能让它静态链接。许可方面的问题我不确定。通常，编译器的东西都是完全可以再分发的。</p>","zhText":"我们甚至没有指定链接 glibcxx_3.4.11，所以 gcc 一定是在幕后自动链接了它。大概有个编译开关能让它静态链接。许可方面的问题我不确定。通常，编译器的东西都是完全可以再分发的。"},{"id":1139,"sid":192,"sat":1,"tid":98,"tt":"resource hog","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T14:59:00Z","url":"https://bitcointalk.org/index.php?topic=327.msg3162#msg3162","zh":"<p>那么这些 CPU 时间全是生成线程的，它肯定以可能的最低优先级——空闲优先级运行。CPU 表停在 100% 是正常的。既然是空闲优先级，即便 CPU 表是 100%，它实际上不会拖慢任何其他东西。</p>","zhText":"那么这些 CPU 时间全是生成线程的，它肯定以可能的最低优先级——空闲优先级运行。CPU 表停在 100% 是正常的。既然是空闲优先级，即便 CPU 表是 100%，它实际上不会拖慢任何其他东西。"},{"id":1220,"sid":193,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T17:05:54Z","url":"https://bitcointalk.org/index.php?topic=383.msg3198#msg3198","zh":"<p>这是一个 bug 修复维护版。现已上传到 SourceForge。Mac OS X 不需要任何修复，所以确实不用更新它，0.3.0 仍然可用。</p><p>下载链接在 bitcoin.org</p><p>更新内容：\n- 新增 Tiago Faria 的葡萄牙语翻译\nWindows\n- 修复用户名含非 ASCII 字符时的 22DbRunRecoveryException\nLinux\n- Laszlo 修复了生成线程降到最低优先级的问题\n- 修复 libcrypto 链接困难的问题\n- Gavin Andresen 实现了\"窗口系统启动时启动\"选项</p>","zhText":"这是一个 bug 修复维护版。现已上传到 SourceForge。Mac OS X 不需要任何修复，所以确实不用更新它，0.3.0 仍然可用。\n下载链接在 bitcoin.org\n更新内容：\n- 新增 Tiago Faria 的葡萄牙语翻译\nWindows\n- 修复用户名含非 ASCII 字符时的 22DbRunRecoveryException\nLinux\n- Laszlo 修复了生成线程降到最低优先级的问题\n- 修复 libcrypto 链接困难的问题\n- Gavin Andresen 实现了\"窗口系统启动时启动\"选项"},{"id":1221,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"andy_3_913","date":"2010-07-15","ts":"2010-07-15T17:11:49Z","url":"https://bitcointalk.org/index.php?topic=383.msg3200#msg3200","zh":"<p>嗨 satoshi，\n安装之前需要做什么备份吗？</p>","zhText":"嗨 satoshi，\n安装之前需要做什么备份吗？"},{"id":1222,"sid":194,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T17:23:48Z","url":"https://bitcointalk.org/index.php?topic=383.msg3205#msg3205","zh":"<p>嗯，做个备份没坏处，定期备份也是好习惯，不过不用，安装这个之前不需要备份。</p>","zhText":"嗯，做个备份没坏处，定期备份也是好习惯，不过不用，安装这个之前不需要备份。"},{"id":1225,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"andy_3_913","date":"2010-07-15","ts":"2010-07-15T17:32:54Z","url":"https://bitcointalk.org/index.php?topic=383.msg3212#msg3212","zh":"<p>我这边，\n没帮助。\n症状依旧，但没法设为\"低于标准\"。拒绝访问！！</p><p>编辑：\n奇怪，\nFirefox 和资源管理器打开得够快，稍有点卡，但 gomez 之类就打不开！</p>","zhText":"我这边，\n没帮助。\n症状依旧，但没法设为\"低于标准\"。拒绝访问！！\n编辑：\n奇怪，\nFirefox 和资源管理器打开得够快，稍有点卡，但 gomez 之类就打不开！"},{"id":1226,"sid":195,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T17:56:43Z","url":"https://bitcointalk.org/index.php?topic=383.msg3221#msg3221","zh":"<p>我不认为你有什么特别的问题。我觉得你的系统慢是因为同时运行的东西太多，内存满了开始用页面文件。你已经确认关掉生成后 CPU 掉到 0%，所以 CPU 占用肯定全是空闲优先级的。0.3.1 里没有任何会影响这些的改动。</p>","zhText":"我不认为你有什么特别的问题。我觉得你的系统慢是因为同时运行的东西太多，内存满了开始用页面文件。你已经确认关掉生成后 CPU 掉到 0%，所以 CPU 占用肯定全是空闲优先级的。0.3.1 里没有任何会影响这些的改动。"},{"id":593,"sid":196,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T18:30:22Z","url":"https://bitcointalk.org/index.php?topic=151.msg3238#msg3238","zh":"<blockquote><p>好，这是法语的 .po 文件。顺手记下几个问题：</p><p>1. \"About\"（关于）框没有应用翻译，它仍给我显示英文版，尽管软件其他部分都在用翻译后的字符串，而且 .po 文件里也包含\"About\"框消息的翻译串。设置窗口里的\"Apply\"（应用）按钮同样如此。</p></blockquote><p>我需要提供一份更新过的 .po 文件。</p><blockquote><p>2. 如果主窗口交易列表中某笔交易的描述含有带变音符的字符（比如\"éàèç\"），它就显示不出来。我猜是字符串在某个环节没被当作 UTF8 正确处理。</p></blockquote><p>好，这肯定是哪里出了问题，我回头看看，或者其他开发者来看看。</p><blockquote><p>4. 关于 .po 文件：\n   - .po 文件里有几个字符串并不需要翻译（如\"Bitcoin\"）。也许这些不该放进 _(\"...\") 里？\n   - 另有一些不该拆分。我记得有一条关于交易费的消息被拆成了两段以便插入费值，其实用个 %s 就行了。这加大了翻译难度，我不得不翻源码才搞清楚到底是怎么回事。\n   - 有些字符串的开头或结尾带空白字符，其必要性很值得商榷，而且在 PoEdit 里很容易漏看。</p></blockquote><p>很多字符串位于由 uiproject.fbp 自动生成的代码里，这些事在那里没有办法。我写了个小程序，用来找出你 .po 文件里所有字符串开头结尾的空格不一致问题，在上传到 SVN 之前手动修好。</p>","zhText":"好，这是法语的 .po 文件。顺手记下几个问题：\n1. \"About\"（关于）框没有应用翻译，它仍给我显示英文版，尽管软件其他部分都在用翻译后的字符串，而且 .po 文件里也包含\"About\"框消息的翻译串。设置窗口里的\"Apply\"（应用）按钮同样如此。\n\n我需要提供一份更新过的 .po 文件。\n2. 如果主窗口交易列表中某笔交易的描述含有带变音符的字符（比如\"éàèç\"），它就显示不出来。我猜是字符串在某个环节没被当作 UTF8 正确处理。\n\n好，这肯定是哪里出了问题，我回头看看，或者其他开发者来看看。\n4. 关于 .po 文件：\n - .po 文件里有几个字符串并不需要翻译（如\"Bitcoin\"）。也许这些不该放进 _(\"...\") 里？\n - 另有一些不该拆分。我记得有一条关于交易费的消息被拆成了两段以便插入费值，其实用个 %s 就行了。这加大了翻译难度，我不得不翻源码才搞清楚到底是怎么回事。\n - 有些字符串的开头或结尾带空白字符，其必要性很值得商榷，而且在 PoEdit 里很容易漏看。\n\n很多字符串位于由 uiproject.fbp 自动生成的代码里，这些事在那里没有办法。我写了个小程序，用来找出你 .po 文件里所有字符串开头结尾的空格不一致问题，在上传到 SVN 之前手动修好。"},{"id":594,"sid":197,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T18:37:13Z","url":"https://bitcointalk.org/index.php?topic=151.msg3242#msg3242","zh":"<p>我上传了一份针对 0.3.1 的更新版 bitcoin.po，附在本帖后面：\n<a href=\"http://bitcointalk.org/index.php?topic=151.msg1259#msg1259\">http://bitcointalk.org/index.php?topic=151.msg1259#msg1259</a></p><p>如果你要开始新的翻译，请用它。</p><p>如果你已经有 .po 文件，poedit 可以更新它。\n- 从开发论坛发布的 0.3.1 候选版里拿到 src 目录，任何版本都行：\n<a href=\"http://bitcointalk.org/index.php?topic=383.0\">http://bitcointalk.org/index.php?topic=383.0</a>\n- 在 src 下建一个子目录：locale/??/LC_MESSAGES\n（?? 随便什么，\"en\"或你语言的 2 字母代码）\n- 把你的 .po 文件放进去\n- 用 poedit 打开它\n- 在 poedit 里：目录->从源代码更新</p><p>关键是带源文件的 src 目录必须位于 .po 文件的上 3 级。</p>","zhText":"我上传了一份针对 0.3.1 的更新版 bitcoin.po，附在本帖后面：\nhttp://bitcointalk.org/index.php?topic=151.msg1259#msg1259\n如果你要开始新的翻译，请用它。\n如果你已经有 .po 文件，poedit 可以更新它。\n- 从开发论坛发布的 0.3.1 候选版里拿到 src 目录，任何版本都行：\nhttp://bitcointalk.org/index.php?topic=383.0\n- 在 src 下建一个子目录：locale/??/LC_MESSAGES\n（?? 随便什么，\"en\"或你语言的 2 字母代码）\n- 把你的 .po 文件放进去\n- 用 poedit 打开它\n- 在 poedit 里：目录->从源代码更新\n关键是带源文件的 src 目录必须位于 .po 文件的上 3 级。"},{"id":595,"sid":198,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T18:43:54Z","url":"https://bitcointalk.org/index.php?topic=151.msg3247#msg3247","zh":"<blockquote><p>我建议去掉主页底部的下载链接。\n如你所见，英文页面上的链接已指向新的 0.3 版，但其他语言的页面还只有旧 0.2 版的链接。\n反正右侧已经有一个当前版本的下载框，不如把各翻译页面上的链接去掉。</p></blockquote><p>我已把它们更新到 0.3.0。</p><p>我很想把其他语言的下载链接去掉，只保留英文页的。</p><p>它们很快也得为 0.3.1 更新。也许可以找个人来负责维护翻译版 drupal 页面的更新。</p>","zhText":"我建议去掉主页底部的下载链接。\n如你所见，英文页面上的链接已指向新的 0.3 版，但其他语言的页面还只有旧 0.2 版的链接。\n反正右侧已经有一个当前版本的下载框，不如把各翻译页面上的链接去掉。\n\n我已把它们更新到 0.3.0。\n我很想把其他语言的下载链接去掉，只保留英文页的。\n它们很快也得为 0.3.1 更新。也许可以找个人来负责维护翻译版 drupal 页面的更新。"},{"id":596,"sid":199,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T19:12:14Z","url":"https://bitcointalk.org/index.php?topic=151.msg3257#msg3257","zh":"<p>感谢西班牙语和法语翻译！编辑更新后的 .po 文件已附上。</p><p>我已把它们上传到 SVN。</p>","zhText":"感谢西班牙语和法语翻译！编辑更新后的 .po 文件已附上。\n我已把它们上传到 SVN。"},{"id":1259,"sid":null,"sat":0,"tid":107,"tt":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","src":"Bitcointalk","author":"EricJ2190","date":"2010-07-15","ts":"2010-07-15T19:22:53Z","url":"https://bitcointalk.org/index.php?topic=391.msg3265#msg3265","zh":"<p>在 Windows 上，打开「发送硬币」或「你的收款地址」时，我看到以下提示。</p><p>点「取消」可以让它消失，一切照常工作，但还是有点烦人。</p><p>我在 Windowx Vista SP2 x64 上跑 BitCoin 0.3.0。</p>","zhText":"在 Windows 上，打开「发送硬币」或「你的收款地址」时，我看到以下提示。\n点「取消」可以让它消失，一切照常工作，但还是有点烦人。\n我在 Windowx Vista SP2 x64 上跑 BitCoin 0.3.0。"},{"id":1235,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"knightmb","date":"2010-07-15","ts":"2010-07-15T19:37:10Z","url":"https://bitcointalk.org/index.php?topic=383.msg3269#msg3269","zh":"<p><del>在 Windows 上，生成硬币的优先级仍相当于正常。如果你以生成硬币模式运行 BitCoin，再运行一个吃光 CPU 的东西（比如 CPU hog：<a href=\"http://www.microtask.ca/cpuhog.html\">http://www.microtask.ca/cpuhog.html</a>），你会看到 BitCoin 和 CPU hog 以 50/50 平分 CPU，而不是 CPU hog 独占、BitCoin 只在空闲/低优先级上运行。khash/s 也减半了，这进一步证明线程并非运行在低于正常的优先级。</del></p><p>我本该事先数一数核心数   ，已在 Windows 2000、XP、Vista 32/64、Windows 7 32/64 上测试确认并非 bug</p>","zhText":"在 Windows 上，生成硬币的优先级仍相当于正常。如果你以生成硬币模式运行 BitCoin，再运行一个吃光 CPU 的东西（比如 CPU hog：http://www.microtask.ca/cpuhog.html），你会看到 BitCoin 和 CPU hog 以 50/50 平分 CPU，而不是 CPU hog 独占、BitCoin 只在空闲/低优先级上运行。khash/s 也减半了，这进一步证明线程并非运行在低于正常的优先级。\n我本该事先数一数核心数 ，已在 Windows 2000、XP、Vista 32/64、Windows 7 32/64 上测试确认并非 bug"},{"id":1236,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"knightmb","date":"2010-07-15","ts":"2010-07-15T20:15:46Z","url":"https://bitcointalk.org/index.php?topic=383.msg3274#msg3274","zh":"<p>在 Linux 客户端（64 位）上，\"关闭时最小化\"仍会最小化到托盘（不久后因不断生成多个托盘图标导致 X 服务器挂起）。</p><p>不过，各线程的优先级看起来都正确地\"nice\"了。吃光 CPU 时间的是 nice 到 19 的那些，所以其他 0 和 2 的没用什么 CPU 时间，系统看起来仍有响应。</p><pre><code>[knightmb@KnightMB ~]$ ps -eflL | grep bitcoin\n0 S knightmb 13676 13591 13676  0    9  80   0 - 113704 poll_s 14:52 pts/1   00:00:02 ./bitcoin\n1 S knightmb 13676 13591 13681  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13682  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13683  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13685  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13686  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13687  0    9  82   2 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 R knightmb 13676 13591 13689 70    9  99  19 - 113704 -     14:52 pts/1    00:09:34 ./bitcoin\n1 R knightmb 13676 13591 13714 71    9  99  19 - 113704 -     14:53 pts/1    00:09:39 ./bitcoin\n1 R knightmb 13676 13591 13924 72    9  99  19 - 113704 -     14:53 pts/1    00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13314 73    9  99  19 - 113704 -     14:53 pts/1    00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13114 74    9  99  19 - 113704 -     14:53 pts/1    00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13984 75    9  99  19 - 113704 -     14:53 pts/1    00:09:19 ./bitcoin\n1 R knightmb 13676 13591 13214 76    9  99  19 - 113704 -     14:53 pts/1    00:09:09 ./bitcoin\n1 R knightmb 13676 13591 13917 77    9  99  19 - 113704 -     14:53 pts/1    00:08:12 ./bitcoin\n1 R knightmb 13676 13591 13919 78    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13934 79    9  99  19 - 113704 -     14:53 pts/1    00:08:51 ./bitcoin\n1 R knightmb 13676 13591 13114 80    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13624 81    9  99  19 - 113704 -     14:53 pts/1    00:09:11 ./bitcoin\n1 R knightmb 13676 13591 13224 82    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13374 83    9  99  19 - 113704 -     14:53 pts/1    00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13261 84    9  99  19 - 113704 -     14:53 pts/1    00:09:43 ./bitcoin\n1 R knightmb 13676 13591 13171 85    9  99  19 - 113704 -     14:53 pts/1    00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13741 86    9  99  19 - 113704 -     14:53 pts/1    00:08:23 ./bitcoin\n1 R knightmb 13676 13591 13371 87    9  99  19 - 113704 -     14:53 pts/1    00:09:42 ./bitcoin\n1 R knightmb 13676 13591 13690 88    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13234 89    9  99  19 - 113704 -     14:53 pts/1    00:08:33 ./bitcoin\n1 R knightmb 13676 13591 13703 90    9  99  19 - 113704 -     14:53 pts/1    00:08:38 ./bitcoin\n1 R knightmb 13676 13591 13991 91    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin</code></pre><p>我不太确定\"窗口系统启动时启动 BitCoin\"这个选项是打算做什么的？</p><p>库错误方面，较老的 Linux 客户端（有一台才一年旧）会报 <b>/usr/lib/libstdc++.so.6 'GLIBCXX_3.4.11' not found</b>。我查过那个文件，它只是链接到 libstdc++.so.10，但不知道版本够不够高。</p><p>在 Linux 客户端（64 位）上，\"关闭时最小化\"仍会最小化到托盘（不久后因不断生成多个托盘图标导致 X 服务器挂起）。</p><p>不过，各线程的优先级看起来都正确地\"nice\"了。吃光 CPU 时间的是 nice 到 19 的那些，所以其他 0 和 2 的没用什么 CPU 时间，系统看起来仍有响应。</p><pre><code>[knightmb@KnightMB ~]$ ps -eflL | grep bitcoin\n0 S knightmb 13676 13591 13676  0    9  80   0 - 113704 poll_s 14:52 pts/1   00:00:02 ./bitcoin\n1 S knightmb 13676 13591 13681  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13682  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13683  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13685  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13686  0    9  80   0 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13687  0    9  82   2 - 113704 hrtime 14:52 pts/1   00:00:00 ./bitcoin\n1 R knightmb 13676 13591 13689 70    9  99  19 - 113704 -     14:52 pts/1    00:09:34 ./bitcoin\n1 R knightmb 13676 13591 13714 71    9  99  19 - 113704 -     14:53 pts/1    00:09:39 ./bitcoin\n1 R knightmb 13676 13591 13924 72    9  99  19 - 113704 -     14:53 pts/1    00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13314 73    9  99  19 - 113704 -     14:53 pts/1    00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13114 74    9  99  19 - 113704 -     14:53 pts/1    00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13984 75    9  99  19 - 113704 -     14:53 pts/1    00:09:19 ./bitcoin\n1 R knightmb 13676 13591 13214 76    9  99  19 - 113704 -     14:53 pts/1    00:09:09 ./bitcoin\n1 R knightmb 13676 13591 13917 77    9  99  19 - 113704 -     14:53 pts/1    00:08:12 ./bitcoin\n1 R knightmb 13676 13591 13919 78    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13934 79    9  99  19 - 113704 -     14:53 pts/1    00:08:51 ./bitcoin\n1 R knightmb 13676 13591 13114 80    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13624 81    9  99  19 - 113704 -     14:53 pts/1    00:09:11 ./bitcoin\n1 R knightmb 13676 13591 13224 82    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13374 83    9  99  19 - 113704 -     14:53 pts/1    00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13261 84    9  99  19 - 113704 -     14:53 pts/1    00:09:43 ./bitcoin\n1 R knightmb 13676 13591 13171 85    9  99  19 - 113704 -     14:53 pts/1    00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13741 86    9  99  19 - 113704 -     14:53 pts/1    00:08:23 ./bitcoin\n1 R knightmb 13676 13591 13371 87    9  99  19 - 113704 -     14:53 pts/1    00:09:42 ./bitcoin\n1 R knightmb 13676 13591 13690 88    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13234 89    9  99  19 - 113704 -     14:53 pts/1    00:08:33 ./bitcoin\n1 R knightmb 13676 13591 13703 90    9  99  19 - 113704 -     14:53 pts/1    00:08:38 ./bitcoin\n1 R knightmb 13676 13591 13991 91    9  99  19 - 113704 -     14:53 pts/1    00:08:39 ./bitcoin</code></pre><p>我不太确定\"窗口系统启动时启动 BitCoin\"这个选项是打算做什么的？</p><p>库错误方面，较老的 Linux 客户端（有一台才一年旧）会报 <b>/usr/lib/libstdc++.so.6 'GLIBCXX_3.4.11' not found</b>。我查过那个文件，它只是链接到 libstdc++.so.10，但不知道版本够不够高。</p>","zhText":"在 Linux 客户端（64 位）上，\"关闭时最小化\"仍会最小化到托盘（不久后因不断生成多个托盘图标导致 X 服务器挂起）。\n不过，各线程的优先级看起来都正确地\"nice\"了。吃光 CPU 时间的是 nice 到 19 的那些，所以其他 0 和 2 的没用什么 CPU 时间，系统看起来仍有响应。\n[knightmb@KnightMB ~]$ ps -eflL | grep bitcoin\n0 S knightmb 13676 13591 13676 0 9 80 0 - 113704 poll_s 14:52 pts/1 00:00:02 ./bitcoin\n1 S knightmb 13676 13591 13681 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13682 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13683 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13685 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13686 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13687 0 9 82 2 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 R knightmb 13676 13591 13689 70 9 99 19 - 113704 - 14:52 pts/1 00:09:34 ./bitcoin\n1 R knightmb 13676 13591 13714 71 9 99 19 - 113704 - 14:53 pts/1 00:09:39 ./bitcoin\n1 R knightmb 13676 13591 13924 72 9 99 19 - 113704 - 14:53 pts/1 00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13314 73 9 99 19 - 113704 - 14:53 pts/1 00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13114 74 9 99 19 - 113704 - 14:53 pts/1 00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13984 75 9 99 19 - 113704 - 14:53 pts/1 00:09:19 ./bitcoin\n1 R knightmb 13676 13591 13214 76 9 99 19 - 113704 - 14:53 pts/1 00:09:09 ./bitcoin\n1 R knightmb 13676 13591 13917 77 9 99 19 - 113704 - 14:53 pts/1 00:08:12 ./bitcoin\n1 R knightmb 13676 13591 13919 78 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13934 79 9 99 19 - 113704 - 14:53 pts/1 00:08:51 ./bitcoin\n1 R knightmb 13676 13591 13114 80 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13624 81 9 99 19 - 113704 - 14:53 pts/1 00:09:11 ./bitcoin\n1 R knightmb 13676 13591 13224 82 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13374 83 9 99 19 - 113704 - 14:53 pts/1 00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13261 84 9 99 19 - 113704 - 14:53 pts/1 00:09:43 ./bitcoin\n1 R knightmb 13676 13591 13171 85 9 99 19 - 113704 - 14:53 pts/1 00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13741 86 9 99 19 - 113704 - 14:53 pts/1 00:08:23 ./bitcoin\n1 R knightmb 13676 13591 13371 87 9 99 19 - 113704 - 14:53 pts/1 00:09:42 ./bitcoin\n1 R knightmb 13676 13591 13690 88 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13234 89 9 99 19 - 113704 - 14:53 pts/1 00:08:33 ./bitcoin\n1 R knightmb 13676 13591 13703 90 9 99 19 - 113704 - 14:53 pts/1 00:08:38 ./bitcoin\n1 R knightmb 13676 13591 13991 91 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin我不太确定\"窗口系统启动时启动 BitCoin\"这个选项是打算做什么的？\n库错误方面，较老的 Linux 客户端（有一台才一年旧）会报 /usr/lib/libstdc++.so.6 'GLIBCXX_3.4.11' not found。我查过那个文件，它只是链接到 libstdc++.so.10，但不知道版本够不够高。\n在 Linux 客户端（64 位）上，\"关闭时最小化\"仍会最小化到托盘（不久后因不断生成多个托盘图标导致 X 服务器挂起）。\n不过，各线程的优先级看起来都正确地\"nice\"了。吃光 CPU 时间的是 nice 到 19 的那些，所以其他 0 和 2 的没用什么 CPU 时间，系统看起来仍有响应。\n[knightmb@KnightMB ~]$ ps -eflL | grep bitcoin\n0 S knightmb 13676 13591 13676 0 9 80 0 - 113704 poll_s 14:52 pts/1 00:00:02 ./bitcoin\n1 S knightmb 13676 13591 13681 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13682 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13683 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13685 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13686 0 9 80 0 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 S knightmb 13676 13591 13687 0 9 82 2 - 113704 hrtime 14:52 pts/1 00:00:00 ./bitcoin\n1 R knightmb 13676 13591 13689 70 9 99 19 - 113704 - 14:52 pts/1 00:09:34 ./bitcoin\n1 R knightmb 13676 13591 13714 71 9 99 19 - 113704 - 14:53 pts/1 00:09:39 ./bitcoin\n1 R knightmb 13676 13591 13924 72 9 99 19 - 113704 - 14:53 pts/1 00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13314 73 9 99 19 - 113704 - 14:53 pts/1 00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13114 74 9 99 19 - 113704 - 14:53 pts/1 00:08:19 ./bitcoin\n1 R knightmb 13676 13591 13984 75 9 99 19 - 113704 - 14:53 pts/1 00:09:19 ./bitcoin\n1 R knightmb 13676 13591 13214 76 9 99 19 - 113704 - 14:53 pts/1 00:09:09 ./bitcoin\n1 R knightmb 13676 13591 13917 77 9 99 19 - 113704 - 14:53 pts/1 00:08:12 ./bitcoin\n1 R knightmb 13676 13591 13919 78 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13934 79 9 99 19 - 113704 - 14:53 pts/1 00:08:51 ./bitcoin\n1 R knightmb 13676 13591 13114 80 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13624 81 9 99 19 - 113704 - 14:53 pts/1 00:09:11 ./bitcoin\n1 R knightmb 13676 13591 13224 82 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13374 83 9 99 19 - 113704 - 14:53 pts/1 00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13261 84 9 99 19 - 113704 - 14:53 pts/1 00:09:43 ./bitcoin\n1 R knightmb 13676 13591 13171 85 9 99 19 - 113704 - 14:53 pts/1 00:08:55 ./bitcoin\n1 R knightmb 13676 13591 13741 86 9 99 19 - 113704 - 14:53 pts/1 00:08:23 ./bitcoin\n1 R knightmb 13676 13591 13371 87 9 99 19 - 113704 - 14:53 pts/1 00:09:42 ./bitcoin\n1 R knightmb 13676 13591 13690 88 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin\n1 R knightmb 13676 13591 13234 89 9 99 19 - 113704 - 14:53 pts/1 00:08:33 ./bitcoin\n1 R knightmb 13676 13591 13703 90 9 99 19 - 113704 - 14:53 pts/1 00:08:38 ./bitcoin\n1 R knightmb 13676 13591 13991 91 9 99 19 - 113704 - 14:53 pts/1 00:08:39 ./bitcoin我不太确定\"窗口系统启动时启动 BitCoin\"这个选项是打算做什么的？\n库错误方面，较老的 Linux 客户端（有一台才一年旧）会报 /usr/lib/libstdc++.so.6 'GLIBCXX_3.4.11' not found。我查过那个文件，它只是链接到 libstdc++.so.10，但不知道版本够不够高。"},{"id":1238,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"db","date":"2010-07-15","ts":"2010-07-15T20:39:08Z","url":"https://bitcointalk.org/index.php?topic=383.msg3278#msg3278","zh":"<p>bincoind help 里 listreceivedbyaddress 和 getreceivedbyaddress 命令重复了。（0.3.0 也一样。）</p>","zhText":"bincoind help 里 listreceivedbyaddress 和 getreceivedbyaddress 命令重复了。（0.3.0 也一样。）"},{"id":1239,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"andy_3_913","date":"2010-07-15","ts":"2010-07-15T21:22:18Z","url":"https://bitcointalk.org/index.php?topic=383.msg3291#msg3291","zh":"<blockquote><p>bincoind 帮助里 listreceivedbyaddress 和 getreceivedbyaddress 命令重复了。（0.3.0 同样如此。）</p></blockquote><p>没错！\n我确定它们是！！\n我已经说过了，我一点头绪都没有！\n你到底在说什么？？？\n我确定是的！！\n早说了，我毫无头绪！\n你到底在说什么啊？？？</p>","zhText":"bincoind 帮助里 listreceivedbyaddress 和 getreceivedbyaddress 命令重复了。（0.3.0 同样如此。）\n\n没错！\n我确定它们是！！\n我已经说过了，我一点头绪都没有！\n你到底在说什么？？？\n我确定是的！！\n早说了，我毫无头绪！\n你到底在说什么啊？？？"},{"id":1240,"sid":200,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T21:40:34Z","url":"https://bitcointalk.org/index.php?topic=383.msg3295#msg3295","zh":"<blockquote><p>在 Windows 上，生成硬币的优先级仍相当于正常。如果你以生成硬币模式运行 BitCoin，再运行一个吃光 CPU 的东西（比如 CPU hog：<a href=\"http://www.microtask.ca/cpuhog.html\">http://www.microtask.ca/cpuhog.html</a>），你会看到 BitCoin 和 CPU hog 以 50/50 平分 CPU，而不是 CPU hog 独占、BitCoin 只在空闲/低优先级上运行。khash/s 也减半了，这进一步证明线程并非运行在低于正常的优先级。</p></blockquote><p>我没能复现。我是双处理器，所以跑了两个内存吞噬程序。任务管理器显示 Bitcoin 的 CPU 是 0%。khash/秒的表针卡住不动，因为它一点 CPU 都分不到来刷新自己。</p><p>你是双处理器吗？你确定你跑的不是单处理器吞噬程序？</p>","zhText":"在 Windows 上，生成硬币的优先级仍相当于正常。如果你以生成硬币模式运行 BitCoin，再运行一个吃光 CPU 的东西（比如 CPU hog：http://www.microtask.ca/cpuhog.html），你会看到 BitCoin 和 CPU hog 以 50/50 平分 CPU，而不是 CPU hog 独占、BitCoin 只在空闲/低优先级上运行。khash/s 也减半了，这进一步证明线程并非运行在低于正常的优先级。\n\n我没能复现。我是双处理器，所以跑了两个内存吞噬程序。任务管理器显示 Bitcoin 的 CPU 是 0%。khash/秒的表针卡住不动，因为它一点 CPU 都分不到来刷新自己。\n你是双处理器吗？你确定你跑的不是单处理器吞噬程序？"},{"id":1242,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"knightmb","date":"2010-07-15","ts":"2010-07-15T21:56:09Z","url":"https://bitcointalk.org/index.php?topic=383.msg3302#msg3302","zh":"<p>对，你说得对，运行正常。*拍脑门，怪自己没先数核心数*，那就撤销优先级 bug 的说法，我回去编辑我的帖子。在 Windows 2000、XP、Vista 和 7 上都运行正常</p>","zhText":"对，你说得对，运行正常。*拍脑门，怪自己没先数核心数*，那就撤销优先级 bug 的说法，我回去编辑我的帖子。在 Windows 2000、XP、Vista 和 7 上都运行正常"},{"id":1243,"sid":201,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T22:07:35Z","url":"https://bitcointalk.org/index.php?topic=383.msg3305#msg3305","zh":"<blockquote><p>在 Linux 客户端（64 位）上，\"关闭时最小化\"仍会最小化到托盘（不久后因不断生成多个托盘图标导致 X 服务器挂起）。</p></blockquote><p>我在首帖更新了 Linux rc2 的链接，包含此修复。请确认你的问题已解决。谢谢！</p><p><a href=\"http://www.bitcoin.org/download/bitcoin-0.3.1.rc2-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.1.rc2-linux.tar.gz</a></p>","zhText":"在 Linux 客户端（64 位）上，\"关闭时最小化\"仍会最小化到托盘（不久后因不断生成多个托盘图标导致 X 服务器挂起）。\n\n我在首帖更新了 Linux rc2 的链接，包含此修复。请确认你的问题已解决。谢谢！\nhttp://www.bitcoin.org/download/bitcoin-0.3.1.rc2-linux.tar.gz"},{"id":1244,"sid":202,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T22:10:19Z","url":"https://bitcointalk.org/index.php?topic=383.msg3306#msg3306","zh":"<blockquote><p>bincoind help 里 listreceivedbyaddress 和 getreceivedbyaddress 命令重复了。（0.3.0 也一样。）</p></blockquote><p>是的，是个 bug。下个版本修。</p>","zhText":"bincoind help 里 listreceivedbyaddress 和 getreceivedbyaddress 命令重复了。（0.3.0 也一样。）\n\n是的，是个 bug。下个版本修。"},{"id":1260,"sid":203,"sat":1,"tid":107,"tt":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T22:18:26Z","url":"https://bitcointalk.org/index.php?topic=391.msg3308#msg3308","zh":"<p>挺意外，之前从没听人说起过。</p><p>也许你是第一个在 Vista 上跑它的人</p><p>我猜跟你的显示颜色深度设置有关。比如 8 位、16 位、24 位、32 位，你的是多少？你的显卡、显示配置很特别吗？是在平板、手机之类的设备上跑吗？</p>","zhText":"挺意外，之前从没听人说起过。\n也许你是第一个在 Vista 上跑它的人\n我猜跟你的显示颜色深度设置有关。比如 8 位、16 位、24 位、32 位，你的是多少？你的显卡、显示配置很特别吗？是在平板、手机之类的设备上跑吗？"},{"id":1078,"sid":204,"sat":1,"tid":91,"tt":"Runaway CPU usage for 64bit BitCoin (Linux Client)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T22:22:30Z","url":"https://bitcointalk.org/index.php?topic=299.msg3309#msg3309","zh":"<p>linux 上线程优先级的修复在 0.3.1 候选版里：\n<a href=\"http://bitcointalk.org/index.php?topic=383.msg3198#msg3198\">http://bitcointalk.org/index.php?topic=383.msg3198#msg3198</a></p>","zhText":"linux 上线程优先级的修复在 0.3.1 候选版里：\nhttp://bitcointalk.org/index.php?topic=383.msg3198#msg3198"},{"id":1246,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"RHorning","date":"2010-07-15","ts":"2010-07-15T22:29:28Z","url":"https://bitcointalk.org/index.php?topic=383.msg3311#msg3311","zh":"<blockquote><p>我不太确定「窗口系统启动时启动 BitCoin」这个选项是打算做什么的？</p></blockquote><p>在 Windows 上，它应该把 Bitcoin.exe 放进系统注册表的 \"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\"……或者作为替代放进 \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\"</p><p>两种都没看到发生，虽然它确实进了「Startup」文件夹。这也太 Windows 95 了（开个玩笑……微软把这搞砸得都不好笑了）。出于好几个原因我推荐用注册表，包括大多数软件都把自启动放在那里，尽管我个人觉得启动文件夹更有好感，也是 Windows 上大多数软件<i>本应有的行为</i>。</p><p>我还没用 Windows 对这个新版本做完整的取证检查，但安装过程对我来说一帆风顺……用的是 Windows 安装包。</p>","zhText":"我不太确定「窗口系统启动时启动 BitCoin」这个选项是打算做什么的？\n\n在 Windows 上，它应该把 Bitcoin.exe 放进系统注册表的 \"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\"……或者作为替代放进 \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\"\n两种都没看到发生，虽然它确实进了「Startup」文件夹。这也太 Windows 95 了（开个玩笑……微软把这搞砸得都不好笑了）。出于好几个原因我推荐用注册表，包括大多数软件都把自启动放在那里，尽管我个人觉得启动文件夹更有好感，也是 Windows 上大多数软件本应有的行为。\n我还没用 Windows 对这个新版本做完整的取证检查，但安装过程对我来说一帆风顺……用的是 Windows 安装包。"},{"id":1247,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"adavid","date":"2010-07-15","ts":"2010-07-15T22:39:33Z","url":"https://bitcointalk.org/index.php?topic=383.msg3314#msg3314","zh":"<blockquote><p>不过，各线程的优先级看起来都正确地「nice」了。吃光 CPU 时间的是 nice 到 19 的那些，所以其他 0 和 2 的没用什么 CPU 时间，系统看起来仍有响应。</p></blockquote><p>我确认这一点。bitcoind 现在真的 nice 了。</p>","zhText":"不过，各线程的优先级看起来都正确地「nice」了。吃光 CPU 时间的是 nice 到 19 的那些，所以其他 0 和 2 的没用什么 CPU 时间，系统看起来仍有响应。\n\n我确认这一点。bitcoind 现在真的 nice 了。"},{"id":1248,"sid":205,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T23:23:04Z","url":"https://bitcointalk.org/index.php?topic=383.msg3319#msg3319","zh":"<blockquote><p>两种都没看到发生，虽然它确实进了「Startup」文件夹。这也太 Windows 95 了（开个玩笑……微软把这搞砸得都不好笑了）。出于好几个原因我推荐用注册表，包括大多数软件都把自启动放在那里，尽管我个人觉得启动文件夹更有好感，也是 Windows 上大多数软件<i>本应有的行为</i>。</p></blockquote><p>两种做法各有道理。启动文件夹的好处是最终用户看得见，就算已经删掉了 Bitcoin 目录和它的卸载程序，也能用常规界面（不用 regedit）手动移除。如果你手动删掉它，Bitcoin 不会固执地一遍遍加回来。</p><p>OpenOffice 是另一个把链接放进启动文件夹的例子。</p>","zhText":"两种都没看到发生，虽然它确实进了「Startup」文件夹。这也太 Windows 95 了（开个玩笑……微软把这搞砸得都不好笑了）。出于好几个原因我推荐用注册表，包括大多数软件都把自启动放在那里，尽管我个人觉得启动文件夹更有好感，也是 Windows 上大多数软件本应有的行为。\n\n两种做法各有道理。启动文件夹的好处是最终用户看得见，就算已经删掉了 Bitcoin 目录和它的卸载程序，也能用常规界面（不用 regedit）手动移除。如果你手动删掉它，Bitcoin 不会固执地一遍遍加回来。\nOpenOffice 是另一个把链接放进启动文件夹的例子。"},{"id":1261,"sid":null,"sat":0,"tid":107,"tt":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","src":"Bitcointalk","author":"bdonlan","date":"2010-07-15","ts":"2010-07-15T23:27:14Z","url":"https://bitcointalk.org/index.php?topic=391.msg3320#msg3320","zh":"<p>我这里也出现——Windows XP，32 位色深，1680x1050 LCD，120DPI 模式。也许是非标准 DPI 把它搞坏了？</p>","zhText":"我这里也出现——Windows XP，32 位色深，1680x1050 LCD，120DPI 模式。也许是非标准 DPI 把它搞坏了？"},{"id":1262,"sid":206,"sat":1,"tid":107,"tt":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-15","ts":"2010-07-15T23:41:23Z","url":"https://bitcointalk.org/index.php?topic=391.msg3323#msg3323","zh":"<blockquote><p>是 120DPI 模式。</p></blockquote><p>什么是「120DPI 模式」？这是某个实际存在的设置吗？听起来是个足够冷门的嫌疑对象。我猜它需要一个两倍分辨率的图标来填满左上角图标的大小，而我们只提供了一种尺寸。</p>","zhText":"是 120DPI 模式。\n\n什么是「120DPI 模式」？这是某个实际存在的设置吗？听起来是个足够冷门的嫌疑对象。我猜它需要一个两倍分辨率的图标来填满左上角图标的大小，而我们只提供了一种尺寸。"},{"id":1249,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"lachesis","date":"2010-07-16","ts":"2010-07-16T00:03:22Z","url":"https://bitcointalk.org/index.php?topic=383.msg3331#msg3331","zh":"<blockquote><p>我在首帖更新了含此修复的 linux rc2 链接。请确认这个问题对你们已经解决。谢谢！</p><p><a href=\"http://www.bitcoin.org/download/bitcoin-0.3.1.rc2-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.1.rc2-linux.tar.gz</a></p></blockquote><p>Satoshi，你没修那个 bug，只是把最小化到托盘的代码整个砍了。能不能把它做成可选项？我没遇到原来的 bug，而且我非常喜欢最小化到托盘这个功能。</p>","zhText":"我在首帖更新了含此修复的 linux rc2 链接。请确认这个问题对你们已经解决。谢谢！\nhttp://www.bitcoin.org/download/bitcoin-0.3.1.rc2-linux.tar.gz\n\nSatoshi，你没修那个 bug，只是把最小化到托盘的代码整个砍了。能不能把它做成可选项？我没遇到原来的 bug，而且我非常喜欢最小化到托盘这个功能。"},{"id":1264,"sid":null,"sat":0,"tid":107,"tt":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","src":"Bitcointalk","author":"EricJ2190","date":"2010-07-16","ts":"2010-07-16T00:21:31Z","url":"https://bitcointalk.org/index.php?topic=391.msg3335#msg3335","zh":"<p>我这里也是 120 DPI。色深和分辨率都和上一位一样。</p>","zhText":"我这里也是 120 DPI。色深和分辨率都和上一位一样。"},{"id":1250,"sid":207,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T00:44:32Z","url":"https://bitcointalk.org/index.php?topic=383.msg3339#msg3339","zh":"<p>用未写进文档的开关 -minimizetotray 运行，该选项就会出现在选项菜单里。</p><p>我不知道怎么修。问题出在 wxWidgets 或 GTK 或 Gnome 的深处。</p>","zhText":"用未写进文档的开关 -minimizetotray 运行，该选项就会出现在选项菜单里。\n我不知道怎么修。问题出在 wxWidgets 或 GTK 或 Gnome 的深处。"},{"id":1038,"sid":208,"sat":1,"tid":88,"tt":"Donations to freebitcoins.appspot.com needed!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T02:02:07Z","url":"https://bitcointalk.org/index.php?topic=295.msg3350#msg3350","zh":"<p>5 BTC 如今看着不少了，也许标准额度该改成 1 或 2 BTC。</p><p>这是个重要服务，这样生成太难的新用户至少还能拿到点什么。</p>","zhText":"5 BTC 如今看着不少了，也许标准额度该改成 1 或 2 BTC。\n这是个重要服务，这样生成太难的新用户至少还能拿到点什么。"},{"id":1265,"sid":209,"sat":1,"tid":107,"tt":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T02:43:29Z","url":"https://bitcointalk.org/index.php?topic=391.msg3362#msg3362","zh":"<p>那肯定就是它了。</p><p>它一定是在找一个更大的图标，比如 20x20，而我们没有。</p>","zhText":"那肯定就是它了。\n它一定是在找一个更大的图标，比如 20x20，而我们没有。"},{"id":524,"sid":null,"sat":0,"tid":49,"tt":"A New Currency System for the World","src":"Bitcointalk","author":"Anonymous","date":"2010-07-16","ts":"2010-07-16T04:05:25Z","url":"https://bitcointalk.org/index.php?topic=128.msg3382#msg3382","zh":"<blockquote><p>所以你真觉得这会是全世界的新货币体系？大多数政府都试图控制自己的货币。政府固定汇率时，黑市通常就会出现。这是我在经济学课上学到的。</p></blockquote><p>政府被限制在特定的地理区域内，只能对抗市场力量一时。Bitcoin 没有边界，亦无动机。</p>","zhText":"所以你真觉得这会是全世界的新货币体系？大多数政府都试图控制自己的货币。政府固定汇率时，黑市通常就会出现。这是我在经济学课上学到的。\n\n政府被限制在特定的地理区域内，只能对抗市场力量一时。Bitcoin 没有边界，亦无动机。"},{"id":1288,"sid":null,"sat":0,"tid":110,"tt":"Assertion Failure - Ubuntu Lucid","src":"Bitcointalk","author":"singpolyma","date":"2010-07-16","ts":"2010-07-16T04:30:15Z","url":"https://bitcointalk.org/index.php?topic=400.msg3384#msg3384","zh":"<p>我跑的是 Ubuntu Lucid（32 位），所有包都是最新的。之前跑 bitcoin 0.2，刚下载了 0.3。我运行 bitcoind，得到：</p><p>bitcoin: main.cpp:823: unsigned int GetNextWorkRequired(const CBlockIndex*): Assertion `pindexFirst' failed.\nAborted</p><p>于是我跑 bitcoin GUI，它启动了、显示了我已有的币，但很快又报同样的错然后死了。接着我回头再跑 0.2 的 GUI，得到：</p><p>bitcoin: main.cpp:743: unsigned int GetNextWorkRequired(const CBlockIndex*): Assertion `pindexFirst' failed.\nAborted</p><p>我的数据库坏了吗？还是依赖出了问题？</p><p>我试着从源码编 0.3，但报了一堆错，大概是缺了某些 *-dev 包。回头再细看。</p>","zhText":"我跑的是 Ubuntu Lucid（32 位），所有包都是最新的。之前跑 bitcoin 0.2，刚下载了 0.3。我运行 bitcoind，得到：\nbitcoin: main.cpp:823: unsigned int GetNextWorkRequired(const CBlockIndex*): Assertion `pindexFirst' failed.\nAborted\n于是我跑 bitcoin GUI，它启动了、显示了我已有的币，但很快又报同样的错然后死了。接着我回头再跑 0.2 的 GUI，得到：\nbitcoin: main.cpp:743: unsigned int GetNextWorkRequired(const CBlockIndex*): Assertion `pindexFirst' failed.\nAborted\n我的数据库坏了吗？还是依赖出了问题？\n我试着从源码编 0.3，但报了一堆错，大概是缺了某些 *-dev 包。回头再细看。"},{"id":1252,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"BioMike","date":"2010-07-16","ts":"2010-07-16T05:24:59Z","url":"https://bitcointalk.org/index.php?topic=383.msg3396#msg3396","zh":"<p>在 x86 gentoo linux 上用我自己写的 makefile 编译了 0.3.1（编的是动态链接客户端而非静态版），跑起来似乎比 0.3.0 更顺。</p><p>顺便问一句，为什么标准 makefile 一定要编静态版？</p>","zhText":"在 x86 gentoo linux 上用我自己写的 makefile 编译了 0.3.1（编的是动态链接客户端而非静态版），跑起来似乎比 0.3.0 更顺。\n顺便问一句，为什么标准 makefile 一定要编静态版？"},{"id":1050,"sid":null,"sat":0,"tid":89,"tt":"Fedora 13 libcrypto","src":"Bitcointalk","author":"ribuck","date":"2010-07-16","ts":"2010-07-16T10:47:17Z","url":"https://bitcointalk.org/index.php?topic=296.msg3427#msg3427","zh":"<blockquote><p>……我想亲手做一个……</p></blockquote><p>谁能贴出一个 32 位 Fedora 版本，我承诺捐出我的头一百枚比特币。不敢多承诺，因为不知道自己能生成多少。其他 32 位 Fedora 用户或许可以在我基础上加码。</p>","zhText":"……我想亲手做一个……\n\n谁能贴出一个 32 位 Fedora 版本，我承诺捐出我的头一百枚比特币。不敢多承诺，因为不知道自己能生成多少。其他 32 位 Fedora 用户或许可以在我基础上加码。"},{"id":1084,"sid":null,"sat":0,"tid":92,"tt":"Resending transaction","src":"Bitcointalk","author":"Insti","date":"2010-07-16","ts":"2010-07-16T12:29:25Z","url":"https://bitcointalk.org/index.php?topic=303.msg3450#msg3450","zh":"<p>0/unconfirmed 意思是你的客户端已经看到这笔交易</p><p>1/unconfirmed 意思是交易已被纳入 1 个区块，此时你可以相当确定有人捡起了你的交易，它已经进链了。</p><p>随着确认数增加，对交易「真实性」的信心也随之增加。</p><p>没有办法取消一笔交易。</p><p>目前客户端无法重发一笔交易。</p>","zhText":"0/unconfirmed 意思是你的客户端已经看到这笔交易\n1/unconfirmed 意思是交易已被纳入 1 个区块，此时你可以相当确定有人捡起了你的交易，它已经进链了。\n随着确认数增加，对交易「真实性」的信心也随之增加。\n没有办法取消一笔交易。\n目前客户端无法重发一笔交易。"},{"id":1195,"sid":null,"sat":0,"tid":102,"tt":"Hash() function not secure","src":"Bitcointalk","author":"Some Mouse","date":"2010-07-16","ts":"2010-07-16T13:21:48Z","url":"https://bitcointalk.org/index.php?topic=360.msg3463#msg3463","zh":"<blockquote><p>等等，什么？我一直以为可逆计算只是更省能量。不确定性是从哪来的？</p></blockquote><p>它说的是这条路的极限。做暴力搜索时，你可以倒回任意先前状态再试新状态。</p><blockquote><p>话说回来，关于哈希不安全的说法：维基百科说对 SHA-256 的攻击仍然需要 2<sup>250</sup> 量级的运算。而且如果我没想岔，哈希目标不是每约 10 分钟变一次吗？那不会打乱攻击者吗？如果真有人能更快破解 SHA，系统不是会通过提高难度自动调整吗？</p></blockquote><p>在所有币都铸完之前 SHA2 就被破解到那种程度，可能性不大。到那时问题只是变成「劫持某个人的账户要花多少钱」。</p>","zhText":"等等，什么？我一直以为可逆计算只是更省能量。不确定性是从哪来的？\n\n它说的是这条路的极限。做暴力搜索时，你可以倒回任意先前状态再试新状态。\n话说回来，关于哈希不安全的说法：维基百科说对 SHA-256 的攻击仍然需要 2250 量级的运算。而且如果我没想岔，哈希目标不是每约 10 分钟变一次吗？那不会打乱攻击者吗？如果真有人能更快破解 SHA，系统不是会通过提高难度自动调整吗？\n\n在所有币都铸完之前 SHA2 就被破解到那种程度，可能性不大。到那时问题只是变成「劫持某个人的账户要花多少钱」。"},{"id":1218,"sid":null,"sat":0,"tid":105,"tt":"bitcoin trademark?","src":"Bitcointalk","author":"ultrasonicsite","date":"2010-07-16","ts":"2010-07-16T13:30:24Z","url":"https://bitcointalk.org/index.php?topic=378.msg3465#msg3465","zh":"<p>我也想知道这个。</p>","zhText":"我也想知道这个。"},{"id":1295,"sid":null,"sat":0,"tid":111,"tt":"The dollar cost of bitmining energy","src":"Bitcointalk","author":"Bitcoiner","date":"2010-07-16","ts":"2010-07-16T13:54:33Z","url":"https://bitcointalk.org/index.php?topic=403.msg3471#msg3471","zh":"<blockquote><p>简而言之，在这台机器上买 BTC 比生成更划算。值得想想。</p></blockquote><p>别忘了摊销你的固定成本。那些零件不是永生的，早晚要换。</p>","zhText":"简而言之，在这台机器上买 BTC 比生成更划算。值得想想。\n\n别忘了摊销你的固定成本。那些零件不是永生的，早晚要换。"},{"id":1210,"sid":null,"sat":0,"tid":103,"tt":"Website integration for bitcoin","src":"Bitcointalk","author":"Quantumplation","date":"2010-07-16","ts":"2010-07-16T14:14:24Z","url":"https://bitcointalk.org/index.php?topic=364.msg3479#msg3479","zh":"<blockquote><p>是的，我希望它最终只是个概念验证，一旦证明可行就可以集成进客户端（用同样的端口和 URL）。</p></blockquote><p>*点头* 这是个好倡议，眼下任何为了 bitcoin 利益的开发都是好的开发。</p>","zhText":"是的，我希望它最终只是个概念验证，一旦证明可行就可以集成进客户端（用同样的端口和 URL）。\n\n*点头* 这是个好倡议，眼下任何为了 bitcoin 利益的开发都是好的开发。"},{"id":1268,"sid":null,"sat":0,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"AndrewBuck","date":"2010-07-16","ts":"2010-07-16T14:15:47Z","url":"https://bitcointalk.org/index.php?topic=393.msg3480#msg3480","zh":"<blockquote><p>我觉得这挺好，但一如既往，决定权在项目负责人 Satoshi 手里。</p></blockquote><p>我没想到会有人反对这件事。希望能从 Satoshi 那里得到明确的许可。那我今晚（美国时间的今晚）就大概可以动手了。另外，我看到另一个主题在问怎么提交补丁；给出的答案是我们应该把补丁 e-mail 给 Satoshi，这仍是首选方式吗？</p><p>-Buck</p>","zhText":"我觉得这挺好，但一如既往，决定权在项目负责人 Satoshi 手里。\n\n我没想到会有人反对这件事。希望能从 Satoshi 那里得到明确的许可。那我今晚（美国时间的今晚）就大概可以动手了。另外，我看到另一个主题在问怎么提交补丁；给出的答案是我们应该把补丁 e-mail 给 Satoshi，这仍是首选方式吗？\n-Buck"},{"id":231,"sid":210,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T14:46:12Z","url":"https://bitcointalk.org/index.php?topic=43.msg3488#msg3488","zh":"<p>目前的工作证明难度是 45.38。（见 <a href=\"http://www.alloscomp.com/bitcoin/calculator.php\">http://www.alloscomp.com/bitcoin/calculator.php</a>）</p><p>几个小时后又要上调了。距上次上调才 3、4 天，所以我预计会按上限 4 倍调，或者非常接近上限。那就会到 181.54。</p><p>两次调整的目标间隔是 14 天，14/3.5 天 = 4.0 倍上调。</p>","zhText":"目前的工作证明难度是 45.38。（见 http://www.alloscomp.com/bitcoin/calculator.php）\n几个小时后又要上调了。距上次上调才 3、4 天，所以我预计会按上限 4 倍调，或者非常接近上限。那就会到 181.54。\n两次调整的目标间隔是 14 天，14/3.5 天 = 4.0 倍上调。"},{"id":1289,"sid":211,"sat":1,"tid":110,"tt":"Assertion Failure - Ubuntu Lucid","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T14:52:04Z","url":"https://bitcointalk.org/index.php?topic=400.msg3492#msg3492","zh":"<p>这错误我头一回见。</p><p>你有多少个区块？（看状态栏）</p><p>你应该把 blk*.dat 文件（在 ~/.bitcoin）移到另一个目录，让它重新开始下载区块链。方便的话，能不能把旧的 blk*.dat 文件留一阵子，万一我需要看？</p>","zhText":"这错误我头一回见。\n你有多少个区块？（看状态栏）\n你应该把 blk*.dat 文件（在 ~/.bitcoin）移到另一个目录，让它重新开始下载区块链。方便的话，能不能把旧的 blk*.dat 文件留一阵子，万一我需要看？"},{"id":233,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"knightmb","date":"2010-07-16","ts":"2010-07-16T14:53:38Z","url":"https://bitcointalk.org/index.php?topic=43.msg3493#msg3493","zh":"<blockquote><p>我的天……</p><p>Satoshi，如果这波热潮退去一点会怎样？比如一些 slashdot 来的人或者别的什么人累了？难度会降回去吗？</p></blockquote><p>如果我没读错源代码，它应该会随投入 CPU 的多少上下浮动。所以如果有人租一台超级计算机把难度推上去一周然后消失，难度应该会自己降回来。</p>","zhText":"我的天……\nSatoshi，如果这波热潮退去一点会怎样？比如一些 slashdot 来的人或者别的什么人累了？难度会降回去吗？\n\n如果我没读错源代码，它应该会随投入 CPU 的多少上下浮动。所以如果有人租一台超级计算机把难度推上去一周然后消失，难度应该会自己降回来。"},{"id":1051,"sid":212,"sat":1,"tid":89,"tt":"Fedora 13 libcrypto","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T14:55:23Z","url":"https://bitcointalk.org/index.php?topic=296.msg3495#msg3495","zh":"<p>请试试 0.3.1 候选版，至少应该解决 libcrypto 依赖问题：</p><p><a href=\"http://bitcointalk.org/index.php?topic=383.0\">http://bitcointalk.org/index.php?topic=383.0</a></p><p>告诉我行不行。</p>","zhText":"请试试 0.3.1 候选版，至少应该解决 libcrypto 依赖问题：\nhttp://bitcointalk.org/index.php?topic=383.0\n告诉我行不行。"},{"id":1085,"sid":213,"sat":1,"tid":92,"tt":"Resending transaction","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T15:01:33Z","url":"https://bitcointalk.org/index.php?topic=303.msg3499#msg3499","zh":"<p>如果客户端收到的新区块里没有你的交易，Bitcoin 会自动重播它。重播大约要一个小时。不过它是不屈不挠的。它会永远不厌其烦地骚扰网络，直到你的交易进了区块。</p>","zhText":"如果客户端收到的新区块里没有你的交易，Bitcoin 会自动重播它。重播大约要一个小时。不过它是不屈不挠的。它会永远不厌其烦地骚扰网络，直到你的交易进了区块。"},{"id":1253,"sid":214,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T15:09:59Z","url":"https://bitcointalk.org/index.php?topic=383.msg3505#msg3505","zh":"<p>因为各系统缺的依赖五花八门。能静态链接的就静态链接，更省事。体积也不会大多少。</p>","zhText":"因为各系统缺的依赖五花八门。能静态链接的就静态链接，更省事。体积也不会大多少。"},{"id":1286,"sid":null,"sat":0,"tid":109,"tt":"Request: expected bitcoins per day display","src":"Bitcointalk","author":"gould","date":"2010-07-16","ts":"2010-07-16T15:26:04Z","url":"https://bitcointalk.org/index.php?topic=397.msg3507#msg3507","zh":"<blockquote><p>你能「预期」什么，取决于运气，以及你预期在自己那场区块彩票上能有多少运气。\n我想这很难算。</p></blockquote><p>我把自己跑 bitcoin 的机器当成老虎机。我按固定速率投入 CPU 时间和电费，偶尔拿回一点钱。如果要把 bitcoin 当作生意的一部分，我就得能算出预期投资回报，就像赌场老板得能算出她的老虎机在给她赚多少钱。我知道 bitcoin 的生成难度将来某个时点会稳定下来，但眼下能快速方便地算出 ROI 对我很有用。</p><p>所以，要是没别人打算做，我大概会自己写个补丁。当然欢迎 bitcoin 捐款，也能激励我快点做出来。</p>","zhText":"你能「预期」什么，取决于运气，以及你预期在自己那场区块彩票上能有多少运气。\n我想这很难算。\n\n我把自己跑 bitcoin 的机器当成老虎机。我按固定速率投入 CPU 时间和电费，偶尔拿回一点钱。如果要把 bitcoin 当作生意的一部分，我就得能算出预期投资回报，就像赌场老板得能算出她的老虎机在给她赚多少钱。我知道 bitcoin 的生成难度将来某个时点会稳定下来，但眼下能快速方便地算出 ROI 对我很有用。\n所以，要是没别人打算做，我大概会自己写个补丁。当然欢迎 bitcoin 捐款，也能激励我快点做出来。"},{"id":1254,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"knightmb","date":"2010-07-16","ts":"2010-07-16T15:27:26Z","url":"https://bitcointalk.org/index.php?topic=383.msg3509#msg3509","zh":"<p>有没有人注意到，就 Windows 客户端而言，当你用 -connect 手动把一堆其他客户端连到它上面时，一旦超过 8 个，Windows 客户端就会掐断「外部世界」的连接，只守着原来那 8 个以上的内部机器，以为它们就是全部网络了？</p><p>我一直没注意到这个，因为我用一台 Linux 客户端给所有 PC 做通往外界的漏斗。但我用 Windows 客户端试了试，一开始它有大约 10 个连接，在又加了 50 个直连它的内部客户端之后，连接数最终会掉到只剩「内部客户端」。</p><p>发生这种情况时，区块数不再增长，基本上这台 Windows 客户端已经把自己和「网络」隔绝了，其他所有客户端都以为它们就是全部网络。在这台 Windows 客户端上跑 \"netstat -a -n\"，能看到它只连着内部客户端和 IRC 引导频道，基本上不再连接外界的任何人。你能察觉到它在发生，因为区块数开始落后于本地网络之外（也就是世界上其他地方的互联网）的真实进展。</p><p>这算是某种自我坍缩的循环？Linux 客户端似乎不受影响，它们能愉快地连接出去、也被连接进来，来者不拒。我可以想见，如果有心人使坏，这对 Windows 客户端算是一种 DoS。</p>","zhText":"有没有人注意到，就 Windows 客户端而言，当你用 -connect 手动把一堆其他客户端连到它上面时，一旦超过 8 个，Windows 客户端就会掐断「外部世界」的连接，只守着原来那 8 个以上的内部机器，以为它们就是全部网络了？\n我一直没注意到这个，因为我用一台 Linux 客户端给所有 PC 做通往外界的漏斗。但我用 Windows 客户端试了试，一开始它有大约 10 个连接，在又加了 50 个直连它的内部客户端之后，连接数最终会掉到只剩「内部客户端」。\n发生这种情况时，区块数不再增长，基本上这台 Windows 客户端已经把自己和「网络」隔绝了，其他所有客户端都以为它们就是全部网络。在这台 Windows 客户端上跑 \"netstat -a -n\"，能看到它只连着内部客户端和 IRC 引导频道，基本上不再连接外界的任何人。你能察觉到它在发生，因为区块数开始落后于本地网络之外（也就是世界上其他地方的互联网）的真实进展。\n这算是某种自我坍缩的循环？Linux 客户端似乎不受影响，它们能愉快地连接出去、也被连接进来，来者不拒。我可以想见，如果有心人使坏，这对 Windows 客户端算是一种 DoS。"},{"id":1269,"sid":215,"sat":1,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T15:37:00Z","url":"https://bitcointalk.org/index.php?topic=393.msg3510#msg3510","zh":"<p>对外 API 的库代码里我喜欢注释头，但从代码你应该看得出来，内部函数我不是这种风格的拥趸。给每个函数都加一个必写的大注释头，会把代码撑开，让你在写一个小函数时犹豫不决——注释头比函数本身还大。它们对维护也是种麻烦，函数一改，注释头就得跟着改两遍。我喜欢把代码写紧凑些，好让一屏能看到更多代码。</p><p>事到如今再补的话，写出来的只会是看函数一眼就能明白的东西。</p><p>我们现有的对外 API 在 rpc.cpp，用法文档在帮助字符串里。</p><p>扫兴了，抱歉。</p>","zhText":"对外 API 的库代码里我喜欢注释头，但从代码你应该看得出来，内部函数我不是这种风格的拥趸。给每个函数都加一个必写的大注释头，会把代码撑开，让你在写一个小函数时犹豫不决——注释头比函数本身还大。它们对维护也是种麻烦，函数一改，注释头就得跟着改两遍。我喜欢把代码写紧凑些，好让一屏能看到更多代码。\n事到如今再补的话，写出来的只会是看函数一眼就能明白的东西。\n我们现有的对外 API 在 rpc.cpp，用法文档在帮助字符串里。\n扫兴了，抱歉。"},{"id":1270,"sid":null,"sat":0,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"AndrewBuck","date":"2010-07-16","ts":"2010-07-16T15:52:10Z","url":"https://bitcointalk.org/index.php?topic=393.msg3514#msg3514","zh":"<p>没关系，所以我动手写之前先问了文档的事。不过我还是想给它写文档，也许我们能商量出一个你能接受的折中方案。一种可能：我只对我自己的代码跑 Doxygen，只用自动生成的文档，不加任何描述之类。这对项目零影响，我自己或任何其他人随时都能做，只是限制了文档的用处。</p><p>第二种，也许更讨人喜欢的方法是利用 Doxygen 的一个特性：文档不必写在被注释的源代码同一个文件里。我们可以加一个单独的文件，里面放文档块并用链接指向函数名。Doxygen 会把它和从源代码自动收集的信息合并生成文档。</p><p>最后，无论用不用 Doxygen，我想给程序写一页「man page」，记录它接受的命令行选项。命令行是在代码哪里处理的？我翻了 main.cpp 没找到（其实我连 main 函数都没找到）。</p><p>-Buck</p>","zhText":"没关系，所以我动手写之前先问了文档的事。不过我还是想给它写文档，也许我们能商量出一个你能接受的折中方案。一种可能：我只对我自己的代码跑 Doxygen，只用自动生成的文档，不加任何描述之类。这对项目零影响，我自己或任何其他人随时都能做，只是限制了文档的用处。\n第二种，也许更讨人喜欢的方法是利用 Doxygen 的一个特性：文档不必写在被注释的源代码同一个文件里。我们可以加一个单独的文件，里面放文档块并用链接指向函数名。Doxygen 会把它和从源代码自动收集的信息合并生成文档。\n最后，无论用不用 Doxygen，我想给程序写一页「man page」，记录它接受的命令行选项。命令行是在代码哪里处理的？我翻了 main.cpp 没找到（其实我连 main 函数都没找到）。\n-Buck"},{"id":1196,"sid":216,"sat":1,"tid":102,"tt":"Hash() function not secure","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T16:13:53Z","url":"https://bitcointalk.org/index.php?topic=360.msg3520#msg3520","zh":"<p>SHA256 不同于从 128 位到 160 位那一步。</p><p>打个比方，它更像从 32 位到 64 位地址空间那一步。16 位计算机的地址空间我们很快用完了，32 位计算机在 4GB 处用完了，但这不意味着 64 位也会很快用完。</p><p>在我们有生之年，SHA256 不会被摩尔定律式的算力提升攻破。倘若它会被攻破，那会是某种突破性的破解方法。能把 SHA256 打压到计算上可行范围的攻击，很可能也会顺带重创 SHA512。</p><p>倘若我们看到 SHA256 的弱点在逐渐显现，可以在某个区块号之后过渡到新的哈希函数。所有人必须在那个区块号之前升级软件。新软件会给所有旧区块再存一个新哈希，确保它们不会被换成另一个带相同旧哈希的区块。</p>","zhText":"SHA256 不同于从 128 位到 160 位那一步。\n打个比方，它更像从 32 位到 64 位地址空间那一步。16 位计算机的地址空间我们很快用完了，32 位计算机在 4GB 处用完了，但这不意味着 64 位也会很快用完。\n在我们有生之年，SHA256 不会被摩尔定律式的算力提升攻破。倘若它会被攻破，那会是某种突破性的破解方法。能把 SHA256 打压到计算上可行范围的攻击，很可能也会顺带重创 SHA512。\n倘若我们看到 SHA256 的弱点在逐渐显现，可以在某个区块号之后过渡到新的哈希函数。所有人必须在那个区块号之前升级软件。新软件会给所有旧区块再存一个新哈希，确保它们不会被换成另一个带相同旧哈希的区块。"},{"id":1287,"sid":217,"sat":1,"tid":109,"tt":"Request: expected bitcoins per day display","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T16:47:14Z","url":"https://bitcointalk.org/index.php?topic=397.msg3524#msg3524","zh":"<p>很多生意都是这样。对汽车销售员来说，下一位顾客什么时候进门？</p><p>关于楼主的问题：这是个好功能，但问题是怎么措辞才不会让人以为过了那个时间就一定有结果？「它说 7 天，我等了一个多星期什么都没拿到！」大概值、平均值，人们还是会那么想。它不能是一整句话，除非我们想好放在哪，但能放哪呢？大家出出主意？</p><p>几分钟前难度又翻了两番，181.54 了。现在生成一个通常要花大约一周。</p>","zhText":"很多生意都是这样。对汽车销售员来说，下一位顾客什么时候进门？\n关于楼主的问题：这是个好功能，但问题是怎么措辞才不会让人以为过了那个时间就一定有结果？「它说 7 天，我等了一个多星期什么都没拿到！」大概值、平均值，人们还是会那么想。它不能是一整句话，除非我们想好放在哪，但能放哪呢？大家出出主意？\n几分钟前难度又翻了两番，181.54 了。现在生成一个通常要花大约一周。"},{"id":234,"sid":218,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T16:56:54Z","url":"https://bitcointalk.org/index.php?topic=43.msg3526#msg3526","zh":"<p>几分钟前刚调整到 181.54。现在拿到一个区块的典型时间大约是一周。</p><p>难度既能上调也能下调。</p><p>网络现在应该接近每小时生成 6 个区块。</p>","zhText":"几分钟前刚调整到 181.54。现在拿到一个区块的典型时间大约是一周。\n难度既能上调也能下调。\n网络现在应该接近每小时生成 6 个区块。"},{"id":236,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"knightmb","date":"2010-07-16","ts":"2010-07-16T16:59:12Z","url":"https://bitcointalk.org/index.php?topic=43.msg3528#msg3528","zh":"<blockquote><p>几分钟前刚调整到 181.54。现在拿到一个区块的典型时间大约是一周。</p><p>难度既能上调也能下调。</p><p>网络现在应该接近每小时生成 6 个区块。</p></blockquote><p>是啊，我注意到那些「10 秒出块」没了，变成了 419 秒和 741 秒出块，最近 20 分钟再没出过新的。这应该能让那些服务器农场消停一阵子</p><p>现在，如果我说错了请纠正我：既然出块要花长得多的时间，这是不是意味着那个幸运地拿到区块的人，要等网络验证确认他是赢家之后才能花掉这笔钱，而且要等很久很久？</p>","zhText":"几分钟前刚调整到 181.54。现在拿到一个区块的典型时间大约是一周。\n难度既能上调也能下调。\n网络现在应该接近每小时生成 6 个区块。\n\n是啊，我注意到那些「10 秒出块」没了，变成了 419 秒和 741 秒出块，最近 20 分钟再没出过新的。这应该能让那些服务器农场消停一阵子\n现在，如果我说错了请纠正我：既然出块要花长得多的时间，这是不是意味着那个幸运地拿到区块的人，要等网络验证确认他是赢家之后才能花掉这笔钱，而且要等很久很久？"},{"id":1271,"sid":219,"sat":1,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T17:15:47Z","url":"https://bitcointalk.org/index.php?topic=393.msg3534#msg3534","zh":"<p>在 init.cpp。</p><p>这是个 wxWidgets 应用，所以没有 main() 函数。不久之后也许就有了，因为我离让 bitcoind 不依赖 wxBase 编译已经很近了。（到时候会放在 init.cpp）</p><p>我把文件命名成 \"main.cpp\"，抱歉，当时另一个可选名字是 \"core.cpp\"。现在改太迟了。不过我还是更喜欢 main.cpp。</p><p>我们仍然非常缺示例代码，展示使用 JSON-RPC 函数的推荐方式，比如给一个典型的 storefront 网站做基本的账户系统。用 getreceivedbylabel、以用户名做 label，账户存的地址被用过之后就换一个新比特币地址。我在论坛某个地方贴过一段示例代码片段。（搜 getreceivedbylabel 或 getnewaddress）示例代码可以是一个最普通不过的银行网站，可以存款、可以付款。</p>","zhText":"在 init.cpp。\n这是个 wxWidgets 应用，所以没有 main() 函数。不久之后也许就有了，因为我离让 bitcoind 不依赖 wxBase 编译已经很近了。（到时候会放在 init.cpp）\n我把文件命名成 \"main.cpp\"，抱歉，当时另一个可选名字是 \"core.cpp\"。现在改太迟了。不过我还是更喜欢 main.cpp。\n我们仍然非常缺示例代码，展示使用 JSON-RPC 函数的推荐方式，比如给一个典型的 storefront 网站做基本的账户系统。用 getreceivedbylabel、以用户名做 label，账户存的地址被用过之后就换一个新比特币地址。我在论坛某个地方贴过一段示例代码片段。（搜 getreceivedbylabel 或 getnewaddress）示例代码可以是一个最普通不过的银行网站，可以存款、可以付款。"},{"id":1255,"sid":220,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T17:26:17Z","url":"https://bitcointalk.org/index.php?topic=383.msg3536#msg3536","zh":"<p>好问题。如果你要让超过 8 个局域网节点连到一个网关节点，那最好把网关节点配置成可以接受入站连接。否则，网关节点已有 8 个或更多连接时，就不会再尝试增加出站连接。当它连着的外部节点来来去去时，它不会建立新的出站连接去补位。如果你能接受入站连接就没问题，那会有很多别的节点来连你。</p>","zhText":"好问题。如果你要让超过 8 个局域网节点连到一个网关节点，那最好把网关节点配置成可以接受入站连接。否则，网关节点已有 8 个或更多连接时，就不会再尝试增加出站连接。当它连着的外部节点来来去去时，它不会建立新的出站连接去补位。如果你能接受入站连接就没问题，那会有很多别的节点来连你。"},{"id":237,"sid":221,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T17:29:28Z","url":"https://bitcointalk.org/index.php?topic=43.msg3537#msg3537","zh":"<p>对，大约 20 小时。（120 个确认 / 每小时 6 个区块 = 20 小时）这就是你能花掉它之前的正常时长。远在此之前你就知道自己中奖了。</p>","zhText":"对，大约 20 小时。（120 个确认 / 每小时 6 个区块 = 20 小时）这就是你能花掉它之前的正常时长。远在此之前你就知道自己中奖了。"},{"id":1219,"sid":222,"sat":1,"tid":105,"tt":"bitcoin trademark?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T17:47:05Z","url":"https://bitcointalk.org/index.php?topic=378.msg3540#msg3540","zh":"<p>不，毫无关系。</p>","zhText":"不，毫无关系。"},{"id":1296,"sid":223,"sat":1,"tid":111,"tt":"The dollar cost of bitmining energy","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T17:58:44Z","url":"https://bitcointalk.org/index.php?topic=403.msg3545#msg3545","zh":"<p>图表不错。</p><p>难度刚涨了 4 倍，所以现在你的成本是 0.02 美元/BTC。</p>","zhText":"图表不错。\n难度刚涨了 4 倍，所以现在你的成本是 0.02 美元/BTC。"},{"id":239,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Bitcoiner","date":"2010-07-16","ts":"2010-07-16T18:09:04Z","url":"https://bitcointalk.org/index.php?topic=43.msg3551#msg3551","zh":"<blockquote><p>那么如果难度被调高到找中一个区块要花一天，是不是意味着那个幸运儿要等 120 天才能花掉它，或者在大家速度都差不多时要等大约 4 个月？感觉在难度的高端，「生成硬币」和「通过花费使其进入流通」之间会出问题。这么长的等待期，中奖的那台电脑什么意外都可能发生（卸载程序、中病毒、电源浪涌），岂不是会有大量已生成的币因此丢失？</p></blockquote><p>我认为无论难度如何，整个网络生成的区块总量是一样的；难度的目的就是让网络以相对恒定的时间生成区块。所以确认时长应该始终差不多。</p><p>如果我理解错了，Satoshi 或其他人可以纠正我</p>","zhText":"那么如果难度被调高到找中一个区块要花一天，是不是意味着那个幸运儿要等 120 天才能花掉它，或者在大家速度都差不多时要等大约 4 个月？感觉在难度的高端，「生成硬币」和「通过花费使其进入流通」之间会出问题。这么长的等待期，中奖的那台电脑什么意外都可能发生（卸载程序、中病毒、电源浪涌），岂不是会有大量已生成的币因此丢失？\n\n我认为无论难度如何，整个网络生成的区块总量是一样的；难度的目的就是让网络以相对恒定的时间生成区块。所以确认时长应该始终差不多。\n如果我理解错了，Satoshi 或其他人可以纠正我"},{"id":1211,"sid":224,"sat":1,"tid":103,"tt":"Website integration for bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T18:23:04Z","url":"https://bitcointalk.org/index.php?topic=364.msg3559#msg3559","zh":"<p>我一直想鼓励有人写一些示例 Python 代码并发布出来，展示做常规记账事务的推荐方式，但都没下文。要是你不必像现在这样重新发明轮子就好了。搜 getnewaddress，你应该能找到一个我贴过一小段示例伪代码的主题。</p>","zhText":"我一直想鼓励有人写一些示例 Python 代码并发布出来，展示做常规记账事务的推荐方式，但都没下文。要是你不必像现在这样重新发明轮子就好了。搜 getnewaddress，你应该能找到一个我贴过一小段示例伪代码的主题。"},{"id":240,"sid":225,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T18:43:51Z","url":"https://bitcointalk.org/index.php?topic=43.msg3565#msg3565","zh":"<p>没错，难度调整就是为了让网络整体保持平均每小时 6 个区块。你的区块成熟时间将始终在 20 小时左右。</p><p>最近这次调整让我们又回到了接近每小时 6 个区块。</p><p>有个网站可以看到区块之间的间隔时间，从区块 68545 起，大约是每 10 分钟一个区块：\n<a href=\"http://nullvoid.org/bitcoin/statistix.php\">http://nullvoid.org/bitcoin/statistix.php</a></p>","zhText":"没错，难度调整就是为了让网络整体保持平均每小时 6 个区块。你的区块成熟时间将始终在 20 小时左右。\n最近这次调整让我们又回到了接近每小时 6 个区块。\n有个网站可以看到区块之间的间隔时间，从区块 68545 起，大约是每 10 分钟一个区块：\nhttp://nullvoid.org/bitcoin/statistix.php"},{"id":1297,"sid":226,"sat":1,"tid":112,"tt":"Sample account system using JSON-RPC needed","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T19:45:10Z","url":"https://bitcointalk.org/index.php?topic=417.msg3579#msg3579","zh":"<p>我们需要有人写示例代码，最好是 Python 或 Java，展示用 JSON-RPC 接口创建账户系统的推荐方式。大多数卖东西的网站都需要类似的东西。一直跟进这里 JSON-RPC 主题的人应该对它该怎么工作有概念。</p><p>用户登录自己的账户后，你展示他能汇入资金的比特币地址。展示之前，先检查这个地址是否已被用过，用过就换新的（getnewaddress <username>）。你只需要在数据库里为每个账户保留最新的比特币地址。（我在之前的某个主题里贴过这段的示例代码片段，搜 getnewaddress）</p><p>用 getreceivedbylabel <username>、以用户名做 label，取账户的「贷方」金额。你需要在数据库里记一个「借方」金额。账户当前余额是（贷方 - 借方）。用户花钱时，增加借方。</p><p>如果你要求多于 0 个确认，最好同时展示当前余额（0 确认）和可用余额（1 个或以上确认），这样用户能立刻看到付款已被接收。不是所有网站都要等确认，所以「当前 + 可用」双余额应该是可选的。卖数字商品的网站大多 0 确认就够。</p><p>一个合适的示例应用是个简单的银行网站：具备以上功能，外加向比特币地址付款的选项。示例代码应该尽可能简单，只带让它成为可用网站的最少东西。</p><p>vekja.net 就是这类网站的一个例子。</p>","zhText":"我们需要有人写示例代码，最好是 Python 或 Java，展示用 JSON-RPC 接口创建账户系统的推荐方式。大多数卖东西的网站都需要类似的东西。一直跟进这里 JSON-RPC 主题的人应该对它该怎么工作有概念。\n用户登录自己的账户后，你展示他能汇入资金的比特币地址。展示之前，先检查这个地址是否已被用过，用过就换新的（getnewaddress ）。你只需要在数据库里为每个账户保留最新的比特币地址。（我在之前的某个主题里贴过这段的示例代码片段，搜 getnewaddress）\n用 getreceivedbylabel 、以用户名做 label，取账户的「贷方」金额。你需要在数据库里记一个「借方」金额。账户当前余额是（贷方 - 借方）。用户花钱时，增加借方。\n如果你要求多于 0 个确认，最好同时展示当前余额（0 确认）和可用余额（1 个或以上确认），这样用户能立刻看到付款已被接收。不是所有网站都要等确认，所以「当前 + 可用」双余额应该是可选的。卖数字商品的网站大多 0 确认就够。\n一个合适的示例应用是个简单的银行网站：具备以上功能，外加向比特币地址付款的选项。示例代码应该尽可能简单，只带让它成为可用网站的最少东西。\nvekja.net 就是这类网站的一个例子。"},{"id":1257,"sid":null,"sat":0,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"BioMike","date":"2010-07-16","ts":"2010-07-16T19:46:39Z","url":"https://bitcointalk.org/index.php?topic=383.msg3581#msg3581","zh":"<blockquote><p>因为各系统缺的依赖五花八门。能静态链接的就静态链接，更省事。体积也不会大多少。</p></blockquote><p>我觉得体积（静态二进制在我的机器上是 8 倍大）不是问题，安全才是。</p><p>Boost、openssl 和 Berkeley DB 在 unix 系统上相当常见（很多东西依赖它们），Wxwidgets 也一样（唯一的争议是 bitcoin 用的是开发分支而非稳定分支）。其次，静态链接不保证一定能跑（在我的机器上它试图加载 libpng-1.2，我系统上没有，只有 libpng-1.4，于是静态版加载失败）。第三，openssl 并非没有过安全问题，静态编译让人们即使系统提供了更新的安全版本，也继续用着不安全的旧版。</p>","zhText":"因为各系统缺的依赖五花八门。能静态链接的就静态链接，更省事。体积也不会大多少。\n\n我觉得体积（静态二进制在我的机器上是 8 倍大）不是问题，安全才是。\nBoost、openssl 和 Berkeley DB 在 unix 系统上相当常见（很多东西依赖它们），Wxwidgets 也一样（唯一的争议是 bitcoin 用的是开发分支而非稳定分支）。其次，静态链接不保证一定能跑（在我的机器上它试图加载 libpng-1.2，我系统上没有，只有 libpng-1.4，于是静态版加载失败）。第三，openssl 并非没有过安全问题，静态编译让人们即使系统提供了更新的安全版本，也继续用着不安全的旧版。"},{"id":1258,"sid":227,"sat":1,"tid":106,"tt":"Bitcoin 0.3.1 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T21:06:57Z","url":"https://bitcointalk.org/index.php?topic=383.msg3590#msg3590","zh":"<p>我已把 windows 0.3.1 rc1 和 linux 0.3.1 rc2 传到 SourceForge，并更新了首页链接。</p><p>除非你遇到了首帖列出的问题之一，否则不需要升级到 0.3.1。如果 0.3.0 用得好好的，就留在 0.3.0。</p>","zhText":"我已把 windows 0.3.1 rc1 和 linux 0.3.1 rc2 传到 SourceForge，并更新了首页链接。\n除非你遇到了首帖列出的问题之一，否则不需要升级到 0.3.1。如果 0.3.0 用得好好的，就留在 0.3.0。"},{"id":525,"sid":228,"sat":1,"tid":49,"tt":"A New Currency System for the World","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-16","ts":"2010-07-16T22:20:09Z","url":"https://bitcointalk.org/index.php?topic=128.msg3605#msg3605","zh":"<blockquote><p>一跑 bitcoin 界面就变得非常迟钝，几乎没法用。停掉 bitcoin 一切恢复正常。系统是 Ubuntu desktop 10.04 amd64，用 ia32libs 和 bitcoin 0.20 tarball 里的二进制。</p></blockquote><p>0.3.1 修复了这个问题，把生成线程设到了最低优先级。下载链接已挂在首页。</p>","zhText":"一跑 bitcoin 界面就变得非常迟钝，几乎没法用。停掉 bitcoin 一切恢复正常。系统是 Ubuntu desktop 10.04 amd64，用 ia32libs 和 bitcoin 0.20 tarball 里的二进制。\n\n0.3.1 修复了这个问题，把生成线程设到了最低优先级。下载链接已挂在首页。"},{"id":245,"sid":null,"sat":0,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Insti","date":"2010-07-17","ts":"2010-07-17T13:45:19Z","url":"https://bitcointalk.org/index.php?topic=43.msg3743#msg3743","zh":"<blockquote><p>我看重的，是 Bitcoin 作为匿名数字货币的属性。虽然并不指望发财，但我希望能持续生成足够的 Bitcoin 来购买我想要的各项服务。</p><p>每 khash/秒（或每个客户端）每天的经济价值，究竟能否至少在一定程度上保持稳定？难度刚涨了 300%，USD/Bitcoin 刚涨了约 500%（虽然可能是暂时冲高）。我知道两者并无必然联系。不过，兴许存在某种（哪怕颇为粗略的）经济学基础。</p></blockquote><p>不妨试试 <a href=\"http://bitcointalk.org/index.php?board=7.0\">Bitcoin Economics Forum</a>\n在那里你理应能找到许多关于这个话题的讨论。</p><p>这个主题，是关乎工作证明难度数值的。</p>","zhText":"我看重的，是 Bitcoin 作为匿名数字货币的属性。虽然并不指望发财，但我希望能持续生成足够的 Bitcoin 来购买我想要的各项服务。\n每 khash/秒（或每个客户端）每天的经济价值，究竟能否至少在一定程度上保持稳定？难度刚涨了 300%，USD/Bitcoin 刚涨了约 500%（虽然可能是暂时冲高）。我知道两者并无必然联系。不过，兴许存在某种（哪怕颇为粗略的）经济学基础。\n\n不妨试试 Bitcoin Economics Forum\n在那里你理应能找到许多关于这个话题的讨论。\n这个主题，是关乎工作证明难度数值的。"},{"id":1362,"sid":null,"sat":0,"tid":116,"tt":"BUG Report: Rounding glitch","src":"Bitcointalk","author":"The Madhatter","date":"2010-07-17","ts":"2010-07-17T14:10:03Z","url":"https://bitcointalk.org/index.php?topic=432.msg3748#msg3748","zh":"<p>看这个……</p><p>我刚在两台不同机器上装了 0.3.1，转了一枚 bitpenny（0.01）：</p><p><b>-= 转账前 =-</b></p><p>[bitcoind@box1 ~]$ ~/bin/bitcoind getinfo\n{\n    \"balance\" : 1.150000000000,\n    \"blocks\" : 68717,\n    \"connections\" : 6,\n    \"proxy\" : \"\",\n    \"generate\" : false,\n    \"genproclimit\" : -1,\n    \"difficulty\" : 181.5432893640505\n}</p><p>[bitcoind@box2 ~]$ ~/bin/bitcoind getinfo\n{\n    \"balance\" : 0.000000000000,\n    \"blocks\" : 68717,\n    \"connections\" : 22,\n    \"proxy\" : \"\",\n    \"generate\" : false,\n    \"genproclimit\" : -1,\n    \"difficulty\" : 181.5432893640505\n}</p><p><b>-= 转账后 =-</b></p><p>[bitcoind@box1 ~]$ ~/bin/bitcoind getinfo\n{\n    \"balance\" : <b>1.139999999999</b>,\n    \"blocks\" : 68717,\n    \"connections\" : 10,\n    \"proxy\" : \"\",\n    \"generate\" : false,\n    \"genproclimit\" : -1,\n    \"difficulty\" : 181.5432893640505\n}</p><p>[bitcoind@box2 ~]$ ~/bin/bitcoind getinfo\n{\n    \"balance\" : <b>0.010000000000</b>,\n    \"blocks\" : 68717,\n    \"connections\" : 20,\n    \"proxy\" : \"\",\n    \"generate\" : false,\n    \"genproclimit\" : -1,\n    \"difficulty\" : 181.5432893640505\n}</p><p>我个人觉得这是显示问题，但没法确定……很奇怪，不是吗？</p><p>两台机器都跑 FreeBSD 7.2/amd64。</p>","zhText":"看这个……\n我刚在两台不同机器上装了 0.3.1，转了一枚 bitpenny（0.01）：\n-= 转账前 =-\n[bitcoind@box1 ~]$ ~/bin/bitcoind getinfo\n{\n \"balance\" : 1.150000000000,\n \"blocks\" : 68717,\n \"connections\" : 6,\n \"proxy\" : \"\",\n \"generate\" : false,\n \"genproclimit\" : -1,\n \"difficulty\" : 181.5432893640505\n}\n[bitcoind@box2 ~]$ ~/bin/bitcoind getinfo\n{\n \"balance\" : 0.000000000000,\n \"blocks\" : 68717,\n \"connections\" : 22,\n \"proxy\" : \"\",\n \"generate\" : false,\n \"genproclimit\" : -1,\n \"difficulty\" : 181.5432893640505\n}\n-= 转账后 =-\n[bitcoind@box1 ~]$ ~/bin/bitcoind getinfo\n{\n \"balance\" : 1.139999999999,\n \"blocks\" : 68717,\n \"connections\" : 10,\n \"proxy\" : \"\",\n \"generate\" : false,\n \"genproclimit\" : -1,\n \"difficulty\" : 181.5432893640505\n}\n[bitcoind@box2 ~]$ ~/bin/bitcoind getinfo\n{\n \"balance\" : 0.010000000000,\n \"blocks\" : 68717,\n \"connections\" : 20,\n \"proxy\" : \"\",\n \"generate\" : false,\n \"genproclimit\" : -1,\n \"difficulty\" : 181.5432893640505\n}\n我个人觉得这是显示问题，但没法确定……很奇怪，不是吗？\n两台机器都跑 FreeBSD 7.2/amd64。"},{"id":1365,"sid":null,"sat":0,"tid":117,"tt":"Privacy versus Safety: handling change","src":"Bitcointalk","author":"Insti","date":"2010-07-17","ts":"2010-07-17T14:25:28Z","url":"https://bitcointalk.org/index.php?topic=434.msg3755#msg3755","zh":"<p>这难道只是恢复了一个过期备份的结果？</p><p>撇开这个不谈，</p><p>简单可行的找零方案：</p><p>a) 找零回到它来自的地址。\nb) 找零回到一个新生成的比特币地址。</p><p>大多数人不会在意，会期待 a) 的行为，所以把它设为默认。\n在乎交易隐私的人可以在客户端通过某个选项启用 b)。</p>","zhText":"这难道只是恢复了一个过期备份的结果？\n撇开这个不谈，\n简单可行的找零方案：\na) 找零回到它来自的地址。\nb) 找零回到一个新生成的比特币地址。\n大多数人不会在意，会期待 a) 的行为，所以把它设为默认。\n在乎交易隐私的人可以在客户端通过某个选项启用 b)。"},{"id":1363,"sid":229,"sat":1,"tid":116,"tt":"BUG Report: Rounding glitch","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T16:06:12Z","url":"https://bitcointalk.org/index.php?topic=432.msg3769#msg3769","zh":"<p>一定是 getinfo 转成浮点数返回 JSON-RPC 结果时的舍入误差。唯一用浮点数表示钱的地方就是返回 JSON-RPC 值。</p><p>1.139999999999 比 bitcoin 内部能表示的更长。</p><p>内部只可能是：\n1.13999999 或\n1.14000000</p><p>1.139999999999 离 1.14000000 比离 1.13999999 近得多，所以一定是 1.14000000。</p><p>代码是这样的：\n(double)GetBalance() / (double)COIN.</p><p>（一时想不出简单的修法）</p>","zhText":"一定是 getinfo 转成浮点数返回 JSON-RPC 结果时的舍入误差。唯一用浮点数表示钱的地方就是返回 JSON-RPC 值。\n1.139999999999 比 bitcoin 内部能表示的更长。\n内部只可能是：\n1.13999999 或\n1.14000000\n1.139999999999 离 1.14000000 比离 1.13999999 近得多，所以一定是 1.14000000。\n代码是这样的：\n(double)GetBalance() / (double)COIN.\n（一时想不出简单的修法）"},{"id":1366,"sid":230,"sat":1,"tid":117,"tt":"Privacy versus Safety: handling change","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T16:27:39Z","url":"https://bitcointalk.org/index.php?topic=434.msg3770#msg3770","zh":"<p>我们应该在钱包里预生成一批备用地址，需要新地址时取用。它们不大，多存一些也无妨。这样还能更一般地覆盖另一种情况：某人做了备份，之后请求了一个新地址并用它收了一大笔款。也许应该分设几个队列，免得一种地址需求把别的需求饿死。</p><p>这些地址会照常创建并存在常规位置，同时登记在另一个「已创建但从未使用」的名单上。请求地址时，从未使用队列队首的地址被发放，同时创建一个新地址加到队尾。</p><p>区块加载代码里有某种重新扫描机制，本来是用来修复有人复制了 wallet.dat 的情形。我需要确认这个重新扫描能处理「在已收到的区块里重新发现收到的付款，但因为钱包被恢复而曾经被遗忘」的情况。</p>","zhText":"我们应该在钱包里预生成一批备用地址，需要新地址时取用。它们不大，多存一些也无妨。这样还能更一般地覆盖另一种情况：某人做了备份，之后请求了一个新地址并用它收了一大笔款。也许应该分设几个队列，免得一种地址需求把别的需求饿死。\n这些地址会照常创建并存在常规位置，同时登记在另一个「已创建但从未使用」的名单上。请求地址时，从未使用队列队首的地址被发放，同时创建一个新地址加到队尾。\n区块加载代码里有某种重新扫描机制，本来是用来修复有人复制了 wallet.dat 的情形。我需要确认这个重新扫描能处理「在已收到的区块里重新发现收到的付款，但因为钱包被恢复而曾经被遗忘」的情况。"},{"id":1335,"sid":null,"sat":0,"tid":115,"tt":"Nenolod, the guy that wants to prove Bitcoin doesn't work.","src":"Bitcointalk","author":"Some Mouse","date":"2010-07-17","ts":"2010-07-17T16:28:05Z","url":"https://bitcointalk.org/index.php?topic=431.msg3771#msg3771","zh":"<p>倘若难度上调前他每分钟能生成一个区块，那意味着他实际占了 bitcoin CPU 算力的 50% 以上。其实，几乎全部。</p>","zhText":"倘若难度上调前他每分钟能生成一个区块，那意味着他实际占了 bitcoin CPU 算力的 50% 以上。其实，几乎全部。"},{"id":1336,"sid":231,"sat":1,"tid":115,"tt":"Nenolod, the guy that wants to prove Bitcoin doesn't work.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T16:56:06Z","url":"https://bitcointalk.org/index.php?topic=431.msg3773#msg3773","zh":"<p>0.3.2 加了一些安全防护，把区块链锁定到当前时点，万一有人拿到 50%，也能限制一点损害。</p><p>但倘若有人握有 50% 以上的 CPU 算力且心怀恶意，他们能证明设计文档里已经写明的那件事。</p>","zhText":"0.3.2 加了一些安全防护，把区块链锁定到当前时点，万一有人拿到 50%，也能限制一点损害。\n但倘若有人握有 50% 以上的 CPU 算力且心怀恶意，他们能证明设计文档里已经写明的那件事。"},{"id":1276,"sid":null,"sat":0,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"AndrewBuck","date":"2010-07-17","ts":"2010-07-17T19:05:33Z","url":"https://bitcointalk.org/index.php?topic=393.msg3785#msg3785","zh":"<p>谢谢 Insti。man page 写好了。我记录了程序支持的全部命令行开关，而不只是 \"bitcoin -h\" 用法输出里那些。凡没出现在用法输出里的，man page 文件里都应有注释说明（注释行以   .\" 开头，一个句点加一个双引号）。</p><p>我同时改了源代码本身，所以用补丁形式提供更新。想先装 man page 的话，先用 patch 程序从 diff 文件里提取出来，然后把文件 \"bitcoin.1\" 拷到 man pages 的第 1 节。在我的 Ubuntu 系统上 /usr/local/man/man1/ 是个好去处。实际上我在系统上放了从那里到 bitcoin/trunk/bitcoin.1 的符号链接，这样它在 SVN 里更新时能保持同步。</p><p>我还用 man2html 导出了 man page，会贴到 wiki 上，方便人们不用装到系统里也能查阅，也照顾那些无缘享受 man page 之妙的 Windows 用户。</p><p>本消息附件里应该有一个含补丁的 zip 文件。</p><p>编辑：wiki 似乎不发注册确认邮件，我没法登录编辑，是服务器出什么问题了吗？</p><p>-Buck</p>","zhText":"谢谢 Insti。man page 写好了。我记录了程序支持的全部命令行开关，而不只是 \"bitcoin -h\" 用法输出里那些。凡没出现在用法输出里的，man page 文件里都应有注释说明（注释行以 .\" 开头，一个句点加一个双引号）。\n我同时改了源代码本身，所以用补丁形式提供更新。想先装 man page 的话，先用 patch 程序从 diff 文件里提取出来，然后把文件 \"bitcoin.1\" 拷到 man pages 的第 1 节。在我的 Ubuntu 系统上 /usr/local/man/man1/ 是个好去处。实际上我在系统上放了从那里到 bitcoin/trunk/bitcoin.1 的符号链接，这样它在 SVN 里更新时能保持同步。\n我还用 man2html 导出了 man page，会贴到 wiki 上，方便人们不用装到系统里也能查阅，也照顾那些无缘享受 man page 之妙的 Windows 用户。\n本消息附件里应该有一个含补丁的 zip 文件。\n编辑：wiki 似乎不发注册确认邮件，我没法登录编辑，是服务器出什么问题了吗？\n-Buck"},{"id":1322,"sid":null,"sat":0,"tid":114,"tt":"Bitcoin snack machine (fast transaction problem)","src":"Bitcointalk","author":"Babylon","date":"2010-07-17","ts":"2010-07-17T21:27:07Z","url":"https://bitcointalk.org/index.php?topic=423.msg3806#msg3806","zh":"<blockquote><p>比托管更好的做法是，直接给饮料机公司充值。</p><p>像这样：你上那家公司的网站，给他们发 100 BC。然后，他们给你一个 ID。他们有充足的时间等确认数攒起来，等你要喝饮料时，只需出示他们发给你的 ID，他们从你的账户里扣款。</p></blockquote><p>给零食机公司开预付账户这套，在公司食堂（或其他消费者群体相当固定的场所）的零食机上很好用，但在消费者高度流动的地方就不太行，比如机场、渡轮、火车站之类。</p>","zhText":"比托管更好的做法是，直接给饮料机公司充值。\n像这样：你上那家公司的网站，给他们发 100 BC。然后，他们给你一个 ID。他们有充足的时间等确认数攒起来，等你要喝饮料时，只需出示他们发给你的 ID，他们从你的账户里扣款。\n\n给零食机公司开预付账户这套，在公司食堂（或其他消费者群体相当固定的场所）的零食机上很好用，但在消费者高度流动的地方就不太行，比如机场、渡轮、火车站之类。"},{"id":1367,"sid":232,"sat":1,"tid":118,"tt":"Bitcoin 0.3.2 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T21:35:51Z","url":"https://bitcointalk.org/index.php?topic=437.msg3807#msg3807","zh":"<p>下载链接已在 bitcoin.org 上。所有人都应升级到这个版本。</p><p>- 新增一个简单的安全防护，把区块链锁定到当前时点。\n- 精简了 addr 消息以节省带宽，现在有充足的节点可连。\n- 西班牙语翻译，作者 milkiway。\n- 法语翻译，作者 aidos。</p><p>有了这个安全防护，即使有人真的掌握了全网 50% 以上的 CPU 算力，也无法试图回退、重做昨天之前的区块链。（前提是你装了这个更新）</p><p>从现在起我大概会在每个版本里放一个检查点。一旦软件已经确认了被广泛接受的区块链是什么样，就没有必要留下「几个月后翻案」这种人们不需要的非零可能性。</p>","zhText":"下载链接已在 bitcoin.org 上。所有人都应升级到这个版本。\n- 新增一个简单的安全防护，把区块链锁定到当前时点。\n- 精简了 addr 消息以节省带宽，现在有充足的节点可连。\n- 西班牙语翻译，作者 milkiway。\n- 法语翻译，作者 aidos。\n有了这个安全防护，即使有人真的掌握了全网 50% 以上的 CPU 算力，也无法试图回退、重做昨天之前的区块链。（前提是你装了这个更新）\n从现在起我大概会在每个版本里放一个检查点。一旦软件已经确认了被广泛接受的区块链是什么样，就没有必要留下「几个月后翻案」这种人们不需要的非零可能性。"},{"id":1368,"sid":null,"sat":0,"tid":118,"tt":"Bitcoin 0.3.2 released","src":"Bitcointalk","author":"llama","date":"2010-07-17","ts":"2010-07-17T21:56:25Z","url":"https://bitcointalk.org/index.php?topic=437.msg3810#msg3810","zh":"<p>Satoshi，</p><p>「区块锁定」是个有意思的想法，我得再多想想。不过，很重要的一点是别把锁一直上到最新的区块。否则，攻击者可以在你恰好上锁之前生成假区块（或几个），那样他的攻击会比没有区块锁定时容易得多。</p><p>你应该只锁定除最后约一千个区块之外的全部内容（具体数字值得将来研究）。也许你实际上就是这么做的？</p><p>另外，我理解区块锁定意味着区块也会随客户端预打包发布。是这样吗？</p>","zhText":"Satoshi，\n「区块锁定」是个有意思的想法，我得再多想想。不过，很重要的一点是别把锁一直上到最新的区块。否则，攻击者可以在你恰好上锁之前生成假区块（或几个），那样他的攻击会比没有区块锁定时容易得多。\n你应该只锁定除最后约一千个区块之外的全部内容（具体数字值得将来研究）。也许你实际上就是这么做的？\n另外，我理解区块锁定意味着区块也会随客户端预打包发布。是这样吗？"},{"id":1291,"sid":null,"sat":0,"tid":110,"tt":"Assertion Failure - Ubuntu Lucid","src":"Bitcointalk","author":"singpolyma","date":"2010-07-17","ts":"2010-07-17T22:19:48Z","url":"https://bitcointalk.org/index.php?topic=400.msg3815#msg3815","zh":"<p>区块文件移走了……它正在重新过一遍。我的币不见了，但我猜等追到最新就会回来？</p>","zhText":"区块文件移走了……它正在重新过一遍。我的币不见了，但我猜等追到最新就会回来？"},{"id":1302,"sid":null,"sat":0,"tid":113,"tt":"Network Size","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-07-17","ts":"2010-07-17T22:22:09Z","url":"https://bitcointalk.org/index.php?topic=419.msg3817#msg3817","zh":"<p>0.3 版本本应把没做端口转发的客户端的出站连接数从 15 降到 8，但我不觉得它真的发生了。我不确定是否如此，说错了纠正我。</p>","zhText":"0.3 版本本应把没做端口转发的客户端的出站连接数从 15 降到 8，但我不觉得它真的发生了。我不确定是否如此，说错了纠正我。"},{"id":1323,"sid":233,"sat":1,"tid":114,"tt":"Bitcoin snack machine (fast transaction problem)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T22:29:13Z","url":"https://bitcointalk.org/index.php?topic=423.msg3819#msg3819","zh":"<p>我相信支付处理公司可以把「快速分发交易 + 足够好的校验」作为一种服务提供，在大约 10 秒或更短时间内完成。</p><p>网络节点只接受收到的第一版交易，纳入它正在尝试生成的区块。当你广播一笔交易时，倘若别人同时广播了一笔双重支出，这就是一场看谁先传播到最多节点的竞赛。谁有一点先发优势，就会以几何级数在网络上扩散得更快，拿下大多数节点。</p><p>粗略的估算例子：\n1         0\n4         1\n16        4\n64        16\n80%      20%</p><p>所以双重支出哪怕只晚一秒，都处于巨大劣势。</p><p>支付处理器与许多节点保持连接。收到一笔交易时，它把它轰出去，同时监听网络上的双重支出。如果它的众多监听节点中任何一个收到双重支出，它就警告这笔交易有问题。一笔双重支出的交易，只要有一个监听者听见，就传播不了多远。双重支出者必须等监听阶段结束，但那时支付处理器的广播已经到达大多数节点，或者在传播上遥遥领先，双重支出者已没有希望抢到剩余节点中有意义的一小部分。</p>","zhText":"我相信支付处理公司可以把「快速分发交易 + 足够好的校验」作为一种服务提供，在大约 10 秒或更短时间内完成。\n网络节点只接受收到的第一版交易，纳入它正在尝试生成的区块。当你广播一笔交易时，倘若别人同时广播了一笔双重支出，这就是一场看谁先传播到最多节点的竞赛。谁有一点先发优势，就会以几何级数在网络上扩散得更快，拿下大多数节点。\n粗略的估算例子：\n1 0\n4 1\n16 4\n64 16\n80% 20%\n所以双重支出哪怕只晚一秒，都处于巨大劣势。\n支付处理器与许多节点保持连接。收到一笔交易时，它把它轰出去，同时监听网络上的双重支出。如果它的众多监听节点中任何一个收到双重支出，它就警告这笔交易有问题。一笔双重支出的交易，只要有一个监听者听见，就传播不了多远。双重支出者必须等监听阶段结束，但那时支付处理器的广播已经到达大多数节点，或者在传播上遥遥领先，双重支出者已没有希望抢到剩余节点中有意义的一小部分。"},{"id":1303,"sid":null,"sat":0,"tid":113,"tt":"Network Size","src":"Bitcointalk","author":"FreeMoney","date":"2010-07-17","ts":"2010-07-17T22:34:41Z","url":"https://bitcointalk.org/index.php?topic=419.msg3822#msg3822","zh":"<p>我是 v3、无转发，从来没超过 8。</p>","zhText":"我是 v3、无转发，从来没超过 8。"},{"id":1292,"sid":234,"sat":1,"tid":110,"tt":"Assertion Failure - Ubuntu Lucid","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T22:37:06Z","url":"https://bitcointalk.org/index.php?topic=400.msg3823#msg3823","zh":"<blockquote><p>我的币不见了，但我猜等追到最新就会回来？</p></blockquote><p>对，下载完全部区块它们就会重新出现。</p>","zhText":"我的币不见了，但我猜等追到最新就会回来？\n\n对，下载完全部区块它们就会重新出现。"},{"id":1369,"sid":235,"sat":1,"tid":118,"tt":"Bitcoin 0.3.2 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T22:54:24Z","url":"https://bitcointalk.org/index.php?topic=437.msg3825#msg3825","zh":"<blockquote><p>不过，很重要的一点是别把锁一直上到最新的区块。否则，攻击者可以在你恰好上锁之前生成假区块（或几个），那样他的攻击会比没有区块锁定时容易得多。</p></blockquote><p>我往前锁了约 200 个区块。区块链当时是一条干净的直线，没有分叉，被锁的区块只有一个人尽皆知的版本。</p><blockquote><p>另外，我理解区块锁定意味着区块也会随客户端预打包发布。是这样吗？</p></blockquote><p>抱歉，还没有，但我确实想让初始区块下载更快。</p>","zhText":"不过，很重要的一点是别把锁一直上到最新的区块。否则，攻击者可以在你恰好上锁之前生成假区块（或几个），那样他的攻击会比没有区块锁定时容易得多。\n\n我往前锁了约 200 个区块。区块链当时是一条干净的直线，没有分叉，被锁的区块只有一个人尽皆知的版本。\n另外，我理解区块锁定意味着区块也会随客户端预打包发布。是这样吗？\n\n抱歉，还没有，但我确实想让初始区块下载更快。"},{"id":1277,"sid":236,"sat":1,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T23:18:30Z","url":"https://bitcointalk.org/index.php?topic=393.msg3828#msg3828","zh":"<p>我没意识到你会把那些有意不写进文档的命令全都记录下来。它们不受支持，也不是给用户用的。</p><p>所有面向用户的命令都列在 -? 帮助里。</p>","zhText":"我没意识到你会把那些有意不写进文档的命令全都记录下来。它们不受支持，也不是给用户用的。\n所有面向用户的命令都列在 -? 帮助里。"},{"id":1304,"sid":237,"sat":1,"tid":113,"tt":"Network Size","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-17","ts":"2010-07-17T23:25:16Z","url":"https://bitcointalk.org/index.php?topic=419.msg3830#msg3830","zh":"<blockquote><p>0.3 版本本应把没做端口转发的客户端的出站连接数从 15 降到 8，但我不觉得它真的发生了。我不确定是否如此，说错了纠正我。</p></blockquote><p>在 0.3.0 里，改到 8 这个变更只进了 Windows 版，其他版本仍是 15。</p><p>请升级到 0.3.2，现在已经发布。</p>","zhText":"0.3 版本本应把没做端口转发的客户端的出站连接数从 15 降到 8，但我不觉得它真的发生了。我不确定是否如此，说错了纠正我。\n\n在 0.3.0 里，改到 8 这个变更只进了 Windows 版，其他版本仍是 15。\n请升级到 0.3.2，现在已经发布。"},{"id":1324,"sid":null,"sat":0,"tid":114,"tt":"Bitcoin snack machine (fast transaction problem)","src":"Bitcointalk","author":"llama","date":"2010-07-18","ts":"2010-07-18T00:03:29Z","url":"https://bitcointalk.org/index.php?topic=423.msg3836#msg3836","zh":"<blockquote><p>服务商与许多节点保持连接。收到一笔交易时，它把它轰出去，同时监听网络上的双重支出。如果它的众多监听节点中任何一个收到双重支出，它就警告这笔交易有问题。一笔双重支出的交易，只要有一个监听者听见，就传播不了多远。双重支出者必须等监听阶段结束，但那时服务商的广播已经到达大多数节点，或者在传播上遥遥领先，双重支出者已没有希望抢到剩余节点中有意义的一小部分。</p></blockquote><p>这是个好开端，但仍然不是滴水不漏。这种安全性依赖多数节点（说到底就是多数 IP）是诚实的。然而，倘若攻击者能囤积大量 IP 地址，他就能控制传播（比如拒绝在售货机处转发该交易的消息），仍然可以发动成功的双重支出攻击。这有点把我们带回 bitcoin 最核心的新思想：真相由算力投票决定，而不是 IP。</p><p>只是一罐饮料的话，这种攻击似乎不划算。但想象一下，倘若机器 dispensing 的是小面额礼品卡，攻击被重复执行成千上万次（甚至多方协同同时进行）呢？一瞬间，那批 IP 地址的成本对攻击者来说可能就成了划算的买卖……</p>","zhText":"服务商与许多节点保持连接。收到一笔交易时，它把它轰出去，同时监听网络上的双重支出。如果它的众多监听节点中任何一个收到双重支出，它就警告这笔交易有问题。一笔双重支出的交易，只要有一个监听者听见，就传播不了多远。双重支出者必须等监听阶段结束，但那时服务商的广播已经到达大多数节点，或者在传播上遥遥领先，双重支出者已没有希望抢到剩余节点中有意义的一小部分。\n\n这是个好开端，但仍然不是滴水不漏。这种安全性依赖多数节点（说到底就是多数 IP）是诚实的。然而，倘若攻击者能囤积大量 IP 地址，他就能控制传播（比如拒绝在售货机处转发该交易的消息），仍然可以发动成功的双重支出攻击。这有点把我们带回 bitcoin 最核心的新思想：真相由算力投票决定，而不是 IP。\n只是一罐饮料的话，这种攻击似乎不划算。但想象一下，倘若机器 dispensing 的是小面额礼品卡，攻击被重复执行成千上万次（甚至多方协同同时进行）呢？一瞬间，那批 IP 地址的成本对攻击者来说可能就成了划算的买卖……"},{"id":1278,"sid":null,"sat":0,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"AndrewBuck","date":"2010-07-18","ts":"2010-07-18T01:50:06Z","url":"https://bitcointalk.org/index.php?topic=393.msg3861#msg3861","zh":"<p>我也怀疑过它们是不是本就不打算公开。不过我觉得记录下来还是有用的，至少目前是。程序既然接受它们作为合法输入，就应该有文档。你可以给 man page 里那些实验性命令加个提示，或者干脆删掉。在我看来标成实验性更合理，人们知道它们可能变动，但需要时可以用。我只需要在 makefile 里给每个命令的开头加上这样一行：</p><p>BUnsupported - 行为可能在未来的版本中变动R</p><p>B 开启粗体，R 切回常规。这样人们在开发阶段就能把程序的潜力用足。文档再多也不为过，开源项目尤其如此。人们看得到代码，反正会找到这些调用并使用它们，不管你愿不愿意。如果它们有文档且标明了不稳定，人们至少可以在知情的情况下选择用不用。</p><p>举例来说，此刻 IRC 上就有人用 -printblock 命令生成关于区块链的统计数据，或许能帮我们更了解这个程序（比如它在真实世界里的表现）。虽然这个命令的输出将来可能变，我们不该围着它搭复杂的框架，但知道它存在是好事，需要来个快速 hack 时用得上。而且程序是开源的，如果有人开始依赖某个命令行开关，他可以自己维护它。最终你以为只是临时调试工具的东西，说不定会变成使用最广泛的开关之一。</p><p>-Buck</p>","zhText":"我也怀疑过它们是不是本就不打算公开。不过我觉得记录下来还是有用的，至少目前是。程序既然接受它们作为合法输入，就应该有文档。你可以给 man page 里那些实验性命令加个提示，或者干脆删掉。在我看来标成实验性更合理，人们知道它们可能变动，但需要时可以用。我只需要在 makefile 里给每个命令的开头加上这样一行：\nBUnsupported - 行为可能在未来的版本中变动R\nB 开启粗体，R 切回常规。这样人们在开发阶段就能把程序的潜力用足。文档再多也不为过，开源项目尤其如此。人们看得到代码，反正会找到这些调用并使用它们，不管你愿不愿意。如果它们有文档且标明了不稳定，人们至少可以在知情的情况下选择用不用。\n举例来说，此刻 IRC 上就有人用 -printblock 命令生成关于区块链的统计数据，或许能帮我们更了解这个程序（比如它在真实世界里的表现）。虽然这个命令的输出将来可能变，我们不该围着它搭复杂的框架，但知道它存在是好事，需要来个快速 hack 时用得上。而且程序是开源的，如果有人开始依赖某个命令行开关，他可以自己维护它。最终你以为只是临时调试工具的东西，说不定会变成使用最广泛的开关之一。\n-Buck"},{"id":1325,"sid":238,"sat":1,"tid":114,"tt":"Bitcoin snack machine (fast transaction problem)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T01:59:15Z","url":"https://bitcointalk.org/index.php?topic=423.msg3867#msg3867","zh":"<blockquote><p>这是个好开端，但仍然不是滴水不漏。</p></blockquote><p>我没说滴水不漏，我说的是足够好。实际操作中的损失会远低于信用卡。</p><blockquote><p>（比如拒绝在售货机处转发该交易的消息）</p></blockquote><p>不，售货机连的是一个大服务商（即支付处理器），它向众多商户提供这项服务。可以想成一个有了新业务的信用卡处理机构。它们会拥有许多连接良好的网络节点。</p>","zhText":"这是个好开端，但仍然不是滴水不漏。\n\n我没说滴水不漏，我说的是足够好。实际操作中的损失会远低于信用卡。\n（比如拒绝在售货机处转发该交易的消息）\n\n不，售货机连的是一个大服务商（即支付处理器），它向众多商户提供这项服务。可以想成一个有了新业务的信用卡处理机构。它们会拥有许多连接良好的网络节点。"},{"id":1386,"sid":null,"sat":0,"tid":120,"tt":"Faster SHA-256, MSVC build ","src":"Bitcointalk","author":"dkaparis","date":"2010-07-18","ts":"2010-07-18T13:28:50Z","url":"https://bitcointalk.org/index.php?topic=453.msg3986#msg3986","zh":"<p>我已经配好依赖、用 MS Visual C++ 2008 Express Edition 编译了 bitcoin。有空再试试 2010。</p><p>serialize.h 里有个自定义分配器类 secure_allocator，选择非调试运行时就编不过。据我理解，分配器类需要模板拷贝构造函数，我附上了一个解决该问题的小补丁。</p><p>正如 Satoshi 在别处提到的，MSVC 编译版的 khash/s 确实明显更慢（慢了一倍多），比预编译版（MinGW？）慢，尽管我开了最高优化级别选项和链接时代码生成的全局优化。这个结果让我觉得奇怪，因为 MSVC 的优化器并不以明显差于 GCC 著称。问题多半出在从 Crypto++ 抽出来的那个 sha 模块。我在 Crypto++ SVN 里看到有修订版模块，包括 SHA-256 的 x86/x64 汇编实现。不过用新版本就得重新整合它们的依赖。说到这，为什么我们不用 OpenSSL 的 SHA-2 哈希函数？反正已经在用 OpenSSL 了，这比手动维护来自另一个库的 SHA 模块更好。</p>","zhText":"我已经配好依赖、用 MS Visual C++ 2008 Express Edition 编译了 bitcoin。有空再试试 2010。\nserialize.h 里有个自定义分配器类 secure_allocator，选择非调试运行时就编不过。据我理解，分配器类需要模板拷贝构造函数，我附上了一个解决该问题的小补丁。\n正如 Satoshi 在别处提到的，MSVC 编译版的 khash/s 确实明显更慢（慢了一倍多），比预编译版（MinGW？）慢，尽管我开了最高优化级别选项和链接时代码生成的全局优化。这个结果让我觉得奇怪，因为 MSVC 的优化器并不以明显差于 GCC 著称。问题多半出在从 Crypto++ 抽出来的那个 sha 模块。我在 Crypto++ SVN 里看到有修订版模块，包括 SHA-256 的 x86/x64 汇编实现。不过用新版本就得重新整合它们的依赖。说到这，为什么我们不用 OpenSSL 的 SHA-2 哈希函数？反正已经在用 OpenSSL 了，这比手动维护来自另一个库的 SHA 模块更好。"},{"id":1384,"sid":null,"sat":0,"tid":119,"tt":"Did block generation crawl to a halt?","src":"Bitcointalk","author":"mtgox","date":"2010-07-18","ts":"2010-07-18T15:12:06Z","url":"https://bitcointalk.org/index.php?topic=441.msg3998#msg3998","zh":"<p>MacRohard：图不错。要是 x 轴是时间、y 轴是区块数就更好了</p>","zhText":"MacRohard：图不错。要是 x 轴是时间、y 轴是区块数就更好了"},{"id":1279,"sid":239,"sat":1,"tid":108,"tt":"Source code documentation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T15:12:54Z","url":"https://bitcointalk.org/index.php?topic=393.msg3999#msg3999","zh":"<p>它们只打算给那些会去读源代码的无畏程序员用。</p>","zhText":"它们只打算给那些会去读源代码的无畏程序员用。"},{"id":323,"sid":240,"sat":1,"tid":30,"tt":"URI-scheme for bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T16:06:16Z","url":"https://bitcointalk.org/index.php?topic=55.msg4008#msg4008","zh":"<blockquote><p>我想你误解了这个问题。我的浏览器永远可以访问 127.0.0.1（除非奇怪的 IE 设置或病毒作祟）。无论在地址栏输入还是点击链接，都能正常工作。但 Javascript 无法完成跨域（或同域不同端口）的 POST 请求。</p></blockquote><p>我也是这么想的。</p><blockquote><p>对，我是想说跨域的 javascript 调用是被禁止的，所以不能从不位于 127.0.0.1 的 javascript 去调用 127.0.0.1。想想还挺有意思，如果浏览器允许恶意跨域 javascript 改别人的 Facebook 页面之类，那场面一定很欢乐。</p></blockquote><p>现在有消息说，javascript 其实可以跨域对 127.0.0.1 发 POST 请求。不是对别的域，偏偏对这个就行。太好了……</p><p>如果确实如此，那就不要在上网用的机器上使用 -server 开关或 bitcoind。</p><p>我这就着手加密码字段。</p>","zhText":"我想你误解了这个问题。我的浏览器永远可以访问 127.0.0.1（除非奇怪的 IE 设置或病毒作祟）。无论在地址栏输入还是点击链接，都能正常工作。但 Javascript 无法完成跨域（或同域不同端口）的 POST 请求。\n\n我也是这么想的。\n对，我是想说跨域的 javascript 调用是被禁止的，所以不能从不位于 127.0.0.1 的 javascript 去调用 127.0.0.1。想想还挺有意思，如果浏览器允许恶意跨域 javascript 改别人的 Facebook 页面之类，那场面一定很欢乐。\n\n现在有消息说，javascript 其实可以跨域对 127.0.0.1 发 POST 请求。不是对别的域，偏偏对这个就行。太好了……\n如果确实如此，那就不要在上网用的机器上使用 -server 开关或 bitcoind。\n我这就着手加密码字段。"},{"id":1377,"sid":null,"sat":0,"tid":118,"tt":"Bitcoin 0.3.2 released","src":"Bitcointalk","author":"knightmb","date":"2010-07-18","ts":"2010-07-18T18:19:51Z","url":"https://bitcointalk.org/index.php?topic=437.msg4031#msg4031","zh":"<p>有人知道变更列表在哪吗，我好奇都修了/改了些什么。</p>","zhText":"有人知道变更列表在哪吗，我好奇都修了/改了些什么。"},{"id":1378,"sid":241,"sat":1,"tid":118,"tt":"Bitcoin 0.3.2 released","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T18:58:21Z","url":"https://bitcointalk.org/index.php?topic=437.msg4037#msg4037","zh":"<p>变更内容基本上就是首帖列的那些。为了重要的安全改进，所有人都应升级。</p><p>最小化到托盘在 Linux 上至少有 3 种不同的故障和 bug，包括崩溃，所以我再次禁用了它。你仍然可以用 \"-minimizetotray\" 重新启用该选项。这些 bug/故障藏在 wxWidgets 或 GTK 或 Gnome 的某处，我不知道怎么修。抱歉，我实在没别的办法，它毛病太多，当不了主线功能。</p>","zhText":"变更内容基本上就是首帖列的那些。为了重要的安全改进，所有人都应升级。\n最小化到托盘在 Linux 上至少有 3 种不同的故障和 bug，包括崩溃，所以我再次禁用了它。你仍然可以用 \"-minimizetotray\" 重新启用该选项。这些 bug/故障藏在 wxWidgets 或 GTK 或 Gnome 的某处，我不知道怎么修。抱歉，我实在没别的办法，它毛病太多，当不了主线功能。"},{"id":1416,"sid":242,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T20:49:22Z","url":"https://bitcointalk.org/index.php?topic=461.msg4059#msg4059","zh":"<p>我把给 JSON-RPC 加密码的修改传到 SVN 了。如果你搭好了编译环境，请帮忙测试。</p><p>-server 开关被 -rpcpw=<password> 取代，bitcoind 也用它。\nbitcoin -rpcpw=<password>    -- 带开放的 JSON-RPC 端口运行\nbitcoind -rpcpw=<password>   -- 带密码的守护进程</p><p>如果你对开关的名字有更好的想法，告诉我，但请记住将来数据库加密也需要一个密码。我不确定，但我觉得两种密码他们可能会想用不同的。</p><p>不设密码的话会给出警告。</p><p>现在所有命令都要把密码作为第一个参数。运行 \"bitcoind help\" 会告诉你这一点。</p><p>核心代码：</p><p>// Check password</p><pre><code>  if (params.size() &lt; 1 || params[0].type() != str_type)\n      throw runtime_error(\"First parameter must be the password.\");\n  if (params[0].get_str() != strRPCPassword)\n  {\n      if (strRPCPassword.size() &lt; 15)\n          Sleep(50);\n      begin = strRequest.end();\n      printf(\"ThreadRPCServer incorrect password attempt\n\");\n      throw runtime_error(\"Incorrect password.\");\n  }</code></pre><p>对这些决定有什么意见吗？</p><p>1) if (strRPCPassword.size() < 15) Sleep(50);  -- 意思是密码短的话，每次尝试之后等 50ms。这可能被用来做 DoS 攻击，但我想如果密码短，更重要的是防暴力密码扫描。这可能让外人得知密码不足 15 个字符，但不足 15 也不算什么值得注意的信息，大多数密码都不到 15。如果你想封死 DoS 的可能，用 15 个字符或更长的密码就是。</p><p>2) begin = strRequest.end();  -- 如果是单个请求携带多个调用，只要有一个密码错误，我就把剩下的全部丢弃。这样就不能在一个包里塞进上百万次密码尝试。你们觉得这样做对吗？（多调用反正几乎从来没人用）</p><p>我还修了帮助里列出的两个重复命令：</p><p>getaddressesbylabel <pw> <label>\ngetbalance <pw>\ngetblockcount <pw>\ngetblocknumber <pw>\ngetconnectioncount <pw>\ngetdifficulty <pw>\ngetgenerate <pw>\ngetinfo <pw>\ngetlabel <pw> <bitcoinaddress>\ngetnewaddress <pw> [label]\ngetreceivedbyaddress <pw> <bitcoinaddress> [minconf=1]\ngetreceivedbylabel <pw> <label> [minconf=1]\nhelp <pw>\nlistreceivedbyaddress <pw> [minconf=1] [includeempty=false]\nlistreceivedbylabel <pw> [minconf=1] [includeempty=false]\nsendtoaddress <pw> <bitcoinaddress> <amount> [comment] [comment-to]\nsetgenerate <pw> <generate> [genproclimit]\nsetlabel <pw> <bitcoinaddress> <label>\nstop <pw></p>","zhText":"我把给 JSON-RPC 加密码的修改传到 SVN 了。如果你搭好了编译环境，请帮忙测试。\n-server 开关被 -rpcpw= 取代，bitcoind 也用它。\nbitcoin -rpcpw= -- 带开放的 JSON-RPC 端口运行\nbitcoind -rpcpw= -- 带密码的守护进程\n如果你对开关的名字有更好的想法，告诉我，但请记住将来数据库加密也需要一个密码。我不确定，但我觉得两种密码他们可能会想用不同的。\n不设密码的话会给出警告。\n现在所有命令都要把密码作为第一个参数。运行 \"bitcoind help\" 会告诉你这一点。\n核心代码：\n// Check password\n if (params.size() < 1 || params[0].type() != str_type)\n throw runtime_error(\"First parameter must be the password.\");\n if (params[0].get_str() != strRPCPassword)\n {\n if (strRPCPassword.size() < 15)\n Sleep(50);\n begin = strRequest.end();\n printf(\"ThreadRPCServer incorrect password attempt\n\");\n throw runtime_error(\"Incorrect password.\");\n }对这些决定有什么意见吗？\n1) if (strRPCPassword.size() 2) begin = strRequest.end(); -- 如果是单个请求携带多个调用，只要有一个密码错误，我就把剩下的全部丢弃。这样就不能在一个包里塞进上百万次密码尝试。你们觉得这样做对吗？（多调用反正几乎从来没人用）\n我还修了帮助里列出的两个重复命令：\ngetaddressesbylabel \ngetbalance \ngetblockcount \ngetblocknumber \ngetconnectioncount \ngetdifficulty \ngetgenerate \ngetinfo \ngetlabel \ngetnewaddress [label]\ngetreceivedbyaddress [minconf=1]\ngetreceivedbylabel [minconf=1]\nhelp \nlistreceivedbyaddress [minconf=1] [includeempty=false]\nlistreceivedbylabel [minconf=1] [includeempty=false]\nsendtoaddress [comment] [comment-to]\nsetgenerate [genproclimit]\nsetlabel \nstop"},{"id":1387,"sid":243,"sat":1,"tid":120,"tt":"Faster SHA-256, MSVC build ","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T21:24:09Z","url":"https://bitcointalk.org/index.php?topic=453.msg4068#msg4068","zh":"<p>OpenSSL 没有接口只做 SHA256 底层原始块哈希那部分。SHA256 一开始要把你的数据包进一个特殊格式的缓冲区。如果像我们这样只哈希一两个块，搭建缓冲区花的时间比实际哈希还长一个量级。它本来是设计给哈希几 KB、几 MB 数据时摊薄开销用的。在 BitcoinMiner 里，我们把缓冲区搭一次然后反复复用。</p><p>倘若你能找到（在 MinGW/GCC 下）比我们现有的更快的 SHA256 代码，那真是太好！（不过要留意许可证）我们现在这个是我试过的唯一一个，所以提升空间很大。</p><p>2 年多前我写它的时候，SHA1 实现正火，SHA256 少有人问津。这么长时间足够他们拿出更好的东西了。当时 SHA256 比最快的 SHA1 慢得超出我的预期。SHA256 理应比 SHA1 慢一些，但不该慢那么多。</p><p>（希望你不介意我把你的主题改了名，SHA-256 优化很重要，我却老忘了这茬）</p>","zhText":"OpenSSL 没有接口只做 SHA256 底层原始块哈希那部分。SHA256 一开始要把你的数据包进一个特殊格式的缓冲区。如果像我们这样只哈希一两个块，搭建缓冲区花的时间比实际哈希还长一个量级。它本来是设计给哈希几 KB、几 MB 数据时摊薄开销用的。在 BitcoinMiner 里，我们把缓冲区搭一次然后反复复用。\n倘若你能找到（在 MinGW/GCC 下）比我们现有的更快的 SHA256 代码，那真是太好！（不过要留意许可证）我们现在这个是我试过的唯一一个，所以提升空间很大。\n2 年多前我写它的时候，SHA1 实现正火，SHA256 少有人问津。这么长时间足够他们拿出更好的东西了。当时 SHA256 比最快的 SHA1 慢得超出我的预期。SHA256 理应比 SHA1 慢一些，但不该慢那么多。\n（希望你不介意我把你的主题改了名，SHA-256 优化很重要，我却老忘了这茬）"},{"id":1360,"sid":null,"sat":0,"tid":115,"tt":"Nenolod, the guy that wants to prove Bitcoin doesn't work.","src":"Bitcointalk","author":"knightmb","date":"2010-07-18","ts":"2010-07-18T21:24:40Z","url":"https://bitcointalk.org/index.php?topic=431.msg4069#msg4069","zh":"<blockquote><p>对 50 取模之后，余数可能来自交易费，他跑了约 1000 个 bitcoin 实例（至少是核），所以拿到交易费的概率非常高。</p></blockquote><p>那要发多少钱才会被收交易费？我自己发过不少大额的，从没见到手续费？</p>","zhText":"对 50 取模之后，余数可能来自交易费，他跑了约 1000 个 bitcoin 实例（至少是核），所以拿到交易费的概率非常高。\n\n那要发多少钱才会被收交易费？我自己发过不少大额的，从没见到手续费？"},{"id":1361,"sid":244,"sat":1,"tid":115,"tt":"Nenolod, the guy that wants to prove Bitcoin doesn't work.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T21:56:18Z","url":"https://bitcointalk.org/index.php?topic=431.msg4073#msg4073","zh":"<p>通常要超过 25,000 BTC。</p>","zhText":"通常要超过 25,000 BTC。"},{"id":1385,"sid":245,"sat":1,"tid":119,"tt":"Did block generation crawl to a halt?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-18","ts":"2010-07-18T23:35:27Z","url":"https://bitcointalk.org/index.php?topic=441.msg4095#msg4095","zh":"<p>图漂亮！加个移动平均让它平滑一点就更好了。</p><p><a href=\"http://nullvoid.org/bitcoin/statistix.php\">http://nullvoid.org/bitcoin/statistix.php</a> 显示过去 24 小时有 212 个区块，即每小时 8.8 个。</p>","zhText":"图漂亮！加个移动平均让它平滑一点就更好了。\nhttp://nullvoid.org/bitcoin/statistix.php 显示过去 24 小时有 212 个区块，即每小时 8.8 个。"},{"id":1418,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"martin","date":"2010-07-19","ts":"2010-07-19T01:25:12Z","url":"https://bitcointalk.org/index.php?topic=461.msg4131#msg4131","zh":"<p>恐怕我得同意 laszlo 的看法，用证书/密钥文件会安全得多。话虽如此，还是谢谢给 JSON api 加了点安全性</p>","zhText":"恐怕我得同意 laszlo 的看法，用证书/密钥文件会安全得多。话虽如此，还是谢谢给 JSON api 加了点安全性"},{"id":1419,"sid":246,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-19","ts":"2010-07-19T04:43:13Z","url":"https://bitcointalk.org/index.php?topic=461.msg4169#msg4169","zh":"<p>对，那样确实好不少。</p><p>能给我举几个也这么做的别家例子吗？（命令行长什么样）</p><p>你在这里说的主要变化是：启动 bitcoind 时不用 -rpcpw=，而是用一个开关指定一个文本文件去那里读，对吧？（有没有想法该给开关起什么名？）</p>","zhText":"对，那样确实好不少。\n能给我举几个也这么做的别家例子吗？（命令行长什么样）\n你在这里说的主要变化是：启动 bitcoind 时不用 -rpcpw=，而是用一个开关指定一个文本文件去那里读，对吧？（有没有想法该给开关起什么名？）"},{"id":1420,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-19","ts":"2010-07-19T12:02:39Z","url":"https://bitcointalk.org/index.php?topic=461.msg4215#msg4215","zh":"<p>Bitcoin Faucets（生产版和 TEST 版）现在都带着这个变更在跑了。</p><p>我一度被绕晕了，因为密码在命令行上是最后给，在 JSON-RPC 参数列表里却是第一个。我同意从文件里读命令行密码会更方便、更安全。</p><p>我会研究一下其他项目是怎么处理 JSON-RPC 认证的。</p>","zhText":"Bitcoin Faucets（生产版和 TEST 版）现在都带着这个变更在跑了。\n我一度被绕晕了，因为密码在命令行上是最后给，在 JSON-RPC 参数列表里却是第一个。我同意从文件里读命令行密码会更方便、更安全。\n我会研究一下其他项目是怎么处理 JSON-RPC 认证的。"},{"id":1422,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-19","ts":"2010-07-19T15:20:35Z","url":"https://bitcointalk.org/index.php?topic=461.msg4248#msg4248","zh":"<p>进一步研究之后……我觉得 Transmission 的做法，加上现有的「只允许来自 127.0.0.1 的连接」，是短/中期的良好方案。</p><p>把 username:password 放进 Bitcoin 目录下的 settings.json 文件应该很好用（Bitcoin 本来就能解析 JSON）。把认证信息从命令行挪走、放进 HTTP 头而不是 JSON 请求参数，也干净利落。</p><p>长期来看，做「正确」的认证安全 JSON-RPC 得用客户端证书加 https。但那看起来工作量不小，而且对用户来说<a href=\"http://it.toolbox.com/blogs/securitymonkey/howto-securing-a-website-with-client-ssl-certificates-11500\">学习曲线陡峭</a>——怎么生成客户端证书、怎么让 JSON-RPC 连接两端都用上。而且我甚至不确定完整的客户端证书方案能不能解决恶意 Javascript 通过 XMLHttpRequest 对 localhost 发 JSON-RPC 请求的问题；如果用户把客户端证书装在了浏览器里（也许因为有个很酷的 JSON-RPC 网页前端控制 Bitcoin），恶意网站发请求时浏览器会自动附上客户端证书吗？</p>","zhText":"进一步研究之后……我觉得 Transmission 的做法，加上现有的「只允许来自 127.0.0.1 的连接」，是短/中期的良好方案。\n把 username:password 放进 Bitcoin 目录下的 settings.json 文件应该很好用（Bitcoin 本来就能解析 JSON）。把认证信息从命令行挪走、放进 HTTP 头而不是 JSON 请求参数，也干净利落。\n长期来看，做「正确」的认证安全 JSON-RPC 得用客户端证书加 https。但那看起来工作量不小，而且对用户来说学习曲线陡峭——怎么生成客户端证书、怎么让 JSON-RPC 连接两端都用上。而且我甚至不确定完整的客户端证书方案能不能解决恶意 Javascript 通过 XMLHttpRequest 对 localhost 发 JSON-RPC 请求的问题；如果用户把客户端证书装在了浏览器里（也许因为有个很酷的 JSON-RPC 网页前端控制 Bitcoin），恶意网站发请求时浏览器会自动附上客户端证书吗？"},{"id":1462,"sid":247,"sat":1,"tid":124,"tt":"Warning: don't use -server or bitcoind where you web browse (v0.3.2 and lower)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-19","ts":"2010-07-19T16:01:38Z","url":"https://bitcointalk.org/index.php?topic=479.msg4263#msg4263","zh":"<p>不要在上网用的机器上使用 -server 或 -daemon 开关、不要跑 bitcoind。它会在 127.0.0.1（本地回环地址）上打开 8332 端口，你可能以为 web 浏览器没法跨站访问它，但确实可以。</p><p>我们正在做一个很快发布的版本，给 JSON-RPC 接口加上密码，但在那之前，避免使用 -server 开关，也不要在跑 bitcoind 的同一台机器上上网。</p><p>更新：\n0.3.3 的 JSON-RPC HTTP 认证功能解决了这个问题。</p>","zhText":"不要在上网用的机器上使用 -server 或 -daemon 开关、不要跑 bitcoind。它会在 127.0.0.1（本地回环地址）上打开 8332 端口，你可能以为 web 浏览器没法跨站访问它，但确实可以。\n我们正在做一个很快发布的版本，给 JSON-RPC 接口加上密码，但在那之前，避免使用 -server 开关，也不要在跑 bitcoind 的同一台机器上上网。\n更新：\n0.3.3 的 JSON-RPC HTTP 认证功能解决了这个问题。"},{"id":1423,"sid":248,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-19","ts":"2010-07-19T16:20:50Z","url":"https://bitcointalk.org/index.php?topic=461.msg4268#msg4268","zh":"<p>所以是把设置文件丢进 ~/.bitcoin 目录，这样听起来更好。「未设密码」的警告里可以告诉你文件在哪、该做什么。</p><p>最流行、最常见的设置文件格式是什么？</p><p>应该考虑 HTTP basic authentication。不过实际操作中，对 web 开发者来说，研究怎么通过 HTTP 或 JSON-RPC 包装层的某个额外参数指定密码，比直接在参数列表开头塞一个额外参数更费劲。你们怎么看？HTTP basic authentication 能给我们带来什么额外好处吗？把它挪出参数列表，结果还是要在一个更深奥的地方指定它，我不确定这是净收益。</p><blockquote><p>我一度被绕晕了，因为密码在命令行上是最后给，在 JSON-RPC 参数列表里却是第一个。我同意从文件里读命令行密码会更方便、更安全。</p></blockquote><p>你也把我绕晕了，什么意思？我做了什么 unintended 的事吗？</p>","zhText":"所以是把设置文件丢进 ~/.bitcoin 目录，这样听起来更好。「未设密码」的警告里可以告诉你文件在哪、该做什么。\n最流行、最常见的设置文件格式是什么？\n应该考虑 HTTP basic authentication。不过实际操作中，对 web 开发者来说，研究怎么通过 HTTP 或 JSON-RPC 包装层的某个额外参数指定密码，比直接在参数列表开头塞一个额外参数更费劲。你们怎么看？HTTP basic authentication 能给我们带来什么额外好处吗？把它挪出参数列表，结果还是要在一个更深奥的地方指定它，我不确定这是净收益。\n我一度被绕晕了，因为密码在命令行上是最后给，在 JSON-RPC 参数列表里却是第一个。我同意从文件里读命令行密码会更方便、更安全。\n\n你也把我绕晕了，什么意思？我做了什么 unintended 的事吗？"},{"id":1426,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"laszlo","date":"2010-07-19","ts":"2010-07-19T22:53:12Z","url":"https://bitcointalk.org/index.php?topic=461.msg4380#msg4380","zh":"<p>如果你用的是自己写的 JSON-RPC 客户端，你可以小心保护密码，但用 bitcoin 二进制当客户端、在命令行上传密码，和带密码启动守护进程是同一个问题。那样它对所有用户都可见。</p><p>所以服务器和客户端两种模式的调用都得用文件，不接受命令行密码。一般这类程序在文件权限不是 600 之类时会拒绝启动，因为那意味着其他用户能读到它。</p>","zhText":"如果你用的是自己写的 JSON-RPC 客户端，你可以小心保护密码，但用 bitcoin 二进制当客户端、在命令行上传密码，和带密码启动守护进程是同一个问题。那样它对所有用户都可见。\n所以服务器和客户端两种模式的调用都得用文件，不接受命令行密码。一般这类程序在文件权限不是 600 之类时会拒绝启动，因为那意味着其他用户能读到它。"},{"id":1162,"sid":null,"sat":0,"tid":100,"tt":"They want to delete the Wikipedia article","src":"Bitcointalk","author":"dwdollar","date":"2010-07-20","ts":"2010-07-20T17:49:45Z","url":"https://bitcointalk.org/index.php?topic=342.msg4502#msg4502","zh":"<p>当年飞机还没被那些「专业人士」——聪明得连飞机都发明不出来的人——独立验证和解释之前，维基百科难道也会无视它吗？</p>","zhText":"当年飞机还没被那些「专业人士」——聪明得连飞机都发明不出来的人——独立验证和解释之前，维基百科难道也会无视它吗？"},{"id":1163,"sid":249,"sat":1,"tid":100,"tt":"They want to delete the Wikipedia article","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-20","ts":"2010-07-20T18:38:28Z","url":"https://bitcointalk.org/index.php?topic=342.msg4508#msg4508","zh":"<p>Bitcoin 是 Wei Dai 的 b-money 提案 <a href=\"http://weidai.com/bmoney.txt\">http://weidai.com/bmoney.txt</a>（1998 年发表于 Cypherpunks <a href=\"http://en.wikipedia.org/wiki/Cypherpunks\">http://en.wikipedia.org/wiki/Cypherpunks</a>）和 Nick Szabo 的 Bitgold 提案 <a href=\"http://unenumerated.blogspot.com/2005/12/bit-gold.html\">http://unenumerated.blogspot.com/2005/12/bit-gold.html</a> 的一个实现。</p><p>时机很奇怪，偏偏是我们被 slashdot 报道、第三方（3rd party）报道迅速增多的时候。我希望大家不必急着结束讨论、做出决定。维基百科通常会让这类问题公开征求意见多久？</p><p>尽快精简词条、去掉宣传腔会很有帮助。只需要让人们知道它是什么、它在电子货币领域处于什么位置，不要试图说服他们它有多好。他们多半只想要一个笼统说明它是什么的东西，而不是解释它如何运作的长篇大论。</p><p>如果你去 <a href=\"http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Bitcoin\">http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Bitcoin</a> 发言，请不要说「可是 bitcoin 真的很重要很特别，所以规则不该适用于它」，也不要争辩规则愚蠢或不公平。那只会帮倒忙。要论证的是这个条目如何满足规则。</p><p>在 google 搜「bitcoin」，看能不能在 infoworld 和 slashdot 之外找到更多重量级报道。可能已经有记者刚从 slashdot 那篇文章听说它，正在写最新的东西。</p><p>希望别被删。一旦删了，「既定判例」就很难翻案了。机构的惯性就是维持上一个决定。（编辑：至少我猜是这样，世界通常如此运作，但也许维基不一样）</p>","zhText":"Bitcoin 是 Wei Dai 的 b-money 提案 http://weidai.com/bmoney.txt（1998 年发表于 Cypherpunks http://en.wikipedia.org/wiki/Cypherpunks）和 Nick Szabo 的 Bitgold 提案 http://unenumerated.blogspot.com/2005/12/bit-gold.html 的一个实现。\n时机很奇怪，偏偏是我们被 slashdot 报道、第三方（3rd party）报道迅速增多的时候。我希望大家不必急着结束讨论、做出决定。维基百科通常会让这类问题公开征求意见多久？\n尽快精简词条、去掉宣传腔会很有帮助。只需要让人们知道它是什么、它在电子货币领域处于什么位置，不要试图说服他们它有多好。他们多半只想要一个笼统说明它是什么的东西，而不是解释它如何运作的长篇大论。\n如果你去 http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Bitcoin 发言，请不要说「可是 bitcoin 真的很重要很特别，所以规则不该适用于它」，也不要争辩规则愚蠢或不公平。那只会帮倒忙。要论证的是这个条目如何满足规则。\n在 google 搜「bitcoin」，看能不能在 infoworld 和 slashdot 之外找到更多重量级报道。可能已经有记者刚从 slashdot 那篇文章听说它，正在写最新的东西。\n希望别被删。一旦删了，「既定判例」就很难翻案了。机构的惯性就是维持上一个决定。（编辑：至少我猜是这样，世界通常如此运作，但也许维基不一样）"},{"id":1427,"sid":250,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-21","ts":"2010-07-21T00:05:20Z","url":"https://bitcointalk.org/index.php?topic=461.msg4577#msg4577","zh":"<p>还是想知道 Linux 上最典型的设置文件格式。有标准扩展名吗？我从没见过用 JSON 的设置文件，而且所有东西都得加引号，看起来也不太人性化。我平时见到的多半类似：\n# comment\nsetting=value</p><p>Boost 里有设置文件方面的东西吗？</p><p>用 bitcoind 从命令行当客户端发命令时，能不能也让它从设置文件读密码？</p><p>Gavin 指出我忘了在 CommandLineRPC 里给数字列做递增，所以现在的 -rpcpw= 实现在命令行上带非字符串参数时不能正常工作。（JSON-RPC 没问题）仍在建设中。</p>","zhText":"还是想知道 Linux 上最典型的设置文件格式。有标准扩展名吗？我从没见过用 JSON 的设置文件，而且所有东西都得加引号，看起来也不太人性化。我平时见到的多半类似：\n# comment\nsetting=value\nBoost 里有设置文件方面的东西吗？\n用 bitcoind 从命令行当客户端发命令时，能不能也让它从设置文件读密码？\nGavin 指出我忘了在 CommandLineRPC 里给数字列做递增，所以现在的 -rpcpw= 实现在命令行上带非字符串参数时不能正常工作。（JSON-RPC 没问题）仍在建设中。"},{"id":1428,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"martin","date":"2010-07-21","ts":"2010-07-21T00:30:26Z","url":"https://bitcointalk.org/index.php?topic=461.msg4582#msg4582","zh":"<p>用 <a href=\"http://www.yaml.org/spec/1.2/spec.html\">yaml</a> 做设置不会更差</p>","zhText":"用 yaml 做设置不会更差"},{"id":1429,"sid":251,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-21","ts":"2010-07-21T05:51:34Z","url":"https://bitcointalk.org/index.php?topic=461.msg4646#msg4646","zh":"<p>我调研了一圈配置文件格式，给你个对比。</p><p>YAML 太庞大了。我不确定有轻量易集成的库能进我们的项目。感觉杀鸡用牛刀。</p><p>JSON 很诱人，我也倾向喜欢它，但有两个主要痛点：\n1) 不能写注释！一个配置文件居然不能注释掉一行来停用它？\n2) 所有字符串都得「加引号」，连键也一样，还得记得行尾的逗号。\n{\n    \"key\" : \"value\",\n}</p><p>我想我们可以很容易地预处理 JSON：逐行读配置文件，在任何 # 字符处截断行（还有 \"//\"？），拼成一个字符串传给 JSON，于是可以写成：\n# comment\n\"key\" : \"value\",   # 还得记得逗号\n\"key2\" : \"value\",   // 像这样注释，或两种都用</p><p>Boost 有 boost::program_options。</p><p>我们可以自己读行，喂进 map<string, string> mapConfig。</p><p>while (!eof)\n  read line\n  if '#' found, truncate line\n  split line at first ':' -> key, value\n  mapConfig.insert(key, value)</p><p>如果我们用这样的语法：\n# comment\nkey : value</p><p>……并且不允许键前面有空白缩进，我猜我们就是 YAML 的一个子集，将来需要更复杂的东西时可以切换到 YAML。</p><p>如果走自解析路线，也不妨碍按需对特定参数值用 JSON。某个选项需要列表或更结构化的数据时，它的值可以随时按 json 解析：\nkey : [\"item1\", \"item2\", \"item3\"]</p><p>只是那就必须全部写在一行上。</p><p>我想我倾向于自解析的 mapConfig：\n# comment\nkey : value</p>","zhText":"我调研了一圈配置文件格式，给你个对比。\nYAML 太庞大了。我不确定有轻量易集成的库能进我们的项目。感觉杀鸡用牛刀。\nJSON 很诱人，我也倾向喜欢它，但有两个主要痛点：\n1) 不能写注释！一个配置文件居然不能注释掉一行来停用它？\n2) 所有字符串都得「加引号」，连键也一样，还得记得行尾的逗号。\n{\n \"key\" : \"value\",\n}\n我想我们可以很容易地预处理 JSON：逐行读配置文件，在任何 # 字符处截断行（还有 \"//\"？），拼成一个字符串传给 JSON，于是可以写成：\n# comment\n\"key\" : \"value\", # 还得记得逗号\n\"key2\" : \"value\", // 像这样注释，或两种都用\nBoost 有 boost::program_options。\n我们可以自己读行，喂进 map mapConfig。\nwhile (!eof)\n read line\n if '#' found, truncate line\n split line at first ':' -> key, value\n mapConfig.insert(key, value)\n如果我们用这样的语法：\n# comment\nkey : value\n……并且不允许键前面有空白缩进，我猜我们就是 YAML 的一个子集，将来需要更复杂的东西时可以切换到 YAML。\n如果走自解析路线，也不妨碍按需对特定参数值用 JSON。某个选项需要列表或更结构化的数据时，它的值可以随时按 json 解析：\nkey : [\"item1\", \"item2\", \"item3\"]\n只是那就必须全部写在一行上。\n我想我倾向于自解析的 mapConfig：\n# comment\nkey : value"},{"id":1432,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-21","ts":"2010-07-21T12:11:10Z","url":"https://bitcointalk.org/index.php?topic=461.msg4709#msg4709","zh":"<p>我觉得 Linux 上压根就没有什么「典型」的设置文件！</p><p>我刚在我 debian 系统的 /etc 里快速扫了 20 个 .conf 文件，发现：\n 1 个文件用 \"key value\"\n 5 个用 \"key=value\"（其实有一两个是 \"key = value\"，等号两边允许空白）\n 14 个各自为政。</p><p>那 14 个各自为政的，千奇百怪；从一行一个值，到 \"key:value\"，再到全套 XML。在 Linux 世界里，# 是\n通用的注释字符。</p><p>我投这一票：</p><p># comment\nkey1=value1</p>","zhText":"我觉得 Linux 上压根就没有什么「典型」的设置文件！\n我刚在我 debian 系统的 /etc 里快速扫了 20 个 .conf 文件，发现：\n 1 个文件用 \"key value\"\n 5 个用 \"key=value\"（其实有一两个是 \"key = value\"，等号两边允许空白）\n 14 个各自为政。\n那 14 个各自为政的，千奇百怪；从一行一个值，到 \"key:value\"，再到全套 XML。在 Linux 世界里，# 是\n通用的注释字符。\n我投这一票：\n# comment\nkey1=value1"},{"id":1433,"sid":252,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-21","ts":"2010-07-21T16:07:57Z","url":"https://bitcointalk.org/index.php?topic=461.msg4758#msg4758","zh":"<blockquote><p>我刚在我 debian 系统的 /etc 里快速扫了 20 个 .conf 文件，发现：\n 1 个文件用 \"key value\"\n 5 个用 \"key=value\"</p></blockquote><p>谢谢这份调查！</p><p>我觉得 \"key value\" 有点不自然。键和值之间理应有一个更明确的、暗示赋值的分隔符。用空格的人，兴许只是懒得用他们语言自带的 split 函数。\nkey=some full sentence with spaces in it.  # 看起来比这样清晰\nkey some full sentence with spaces in it.  #</p><p>那好，就用自解析的 mapConfig，语法：\n# comment\nkey=value</p><p>扩展名 .conf。文件名叫什么？~/.bitcoin/settings.conf 还是 ~/.bitcoin/bitcoin.conf 还是别的？</p><p>我觉得最好把键和值开头结尾的空白都去掉。\n# 喜欢列对齐的用户\nk            = value\nkey         = value\nlongerkey =   this sentence would be this    # \"this sentence would be this\"\n        key = value   # 猜这样也行\n  nextkey = value\n      right = justified</p><p>正常语法理应是 \"key=value\"，只不过偶尔有人写 \"key = value\" 也不能怪人家。</p>","zhText":"我刚在我 debian 系统的 /etc 里快速扫了 20 个 .conf 文件，发现：\n 1 个文件用 \"key value\"\n 5 个用 \"key=value\"\n\n谢谢这份调查！\n我觉得 \"key value\" 有点不自然。键和值之间理应有一个更明确的、暗示赋值的分隔符。用空格的人，兴许只是懒得用他们语言自带的 split 函数。\nkey=some full sentence with spaces in it. # 看起来比这样清晰\nkey some full sentence with spaces in it. #\n那好，就用自解析的 mapConfig，语法：\n# comment\nkey=value\n扩展名 .conf。文件名叫什么？~/.bitcoin/settings.conf 还是 ~/.bitcoin/bitcoin.conf 还是别的？\n我觉得最好把键和值开头结尾的空白都去掉。\n# 喜欢列对齐的用户\nk = value\nkey = value\nlongerkey = this sentence would be this # \"this sentence would be this\"\n key = value # 猜这样也行\n nextkey = value\n right = justified\n正常语法理应是 \"key=value\"，只不过偶尔有人写 \"key = value\" 也不能怪人家。"},{"id":1471,"sid":null,"sat":0,"tid":124,"tt":"Warning: don't use -server or bitcoind where you web browse (v0.3.2 and lower)","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-21","ts":"2010-07-21T16:10:32Z","url":"https://bitcointalk.org/index.php?topic=479.msg4759#msg4759","zh":"<p>chroot：保护不了你。</p><p>跑在独立 VM 里：我认为能保护你。但我以为浏览器不允许网页里的 XMLHTTPRequest 访问 \"localhost\"，所以我的建议是测一测。看看能不能在非 bitcoin 虚拟机上跑 \"bitcoind getinfo\" 或 \"bitcoin getinfo\"，跟同一台机器上另一个 VM 里的 Bitcoin 守护进程通话。</p>","zhText":"chroot：保护不了你。\n跑在独立 VM 里：我认为能保护你。但我以为浏览器不允许网页里的 XMLHTTPRequest 访问 \"localhost\"，所以我的建议是测一测。看看能不能在非 bitcoin 虚拟机上跑 \"bitcoind getinfo\" 或 \"bitcoin getinfo\"，跟同一台机器上另一个 VM 里的 Bitcoin 守护进程通话。"},{"id":1434,"sid":253,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-21","ts":"2010-07-21T17:31:09Z","url":"https://bitcointalk.org/index.php?topic=461.msg4775#msg4775","zh":"<p>boost::program_options 就是同样的 \"key=value\" 格式。Gavin 指出，我们可以把它当作简单的解析器来用，不碰那些深奥的 c++ 语法（譬如带类型的值提取）。以后想要更多功能再说。</p><p>咱们就用 HTTP basic authentication 吧，取代密码参数。</p>","zhText":"boost::program_options 就是同样的 \"key=value\" 格式。Gavin 指出，我们可以把它当作简单的解析器来用，不碰那些深奥的 c++ 语法（譬如带类型的值提取）。以后想要更多功能再说。\n咱们就用 HTTP basic authentication 吧，取代密码参数。"},{"id":1435,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-22","ts":"2010-07-22T01:11:26Z","url":"https://bitcointalk.org/index.php?topic=461.msg4908#msg4908","zh":"<p>我自告奋勇来实现这个，今日进展顺利。Satoshi：明日理应就能给你补丁。</p><p>已完成：让 Bitcoin 从 {BITCOIN_DIR}/bitcoin.conf 文件读取设置，并新增 -conf=path_to_config_file.conf 命令行选项。\n已完成：让 Bitcoin RPC 要求 HTTP Basic 认证，拒绝用户名/密码错误的请求。</p><p>TODO：让 Bitcoin 命令行 RPC 自动加 Authorization: 头。从命令行控制 bitcoin 时，你无需再给用户名/密码，它会从 bitcoin.conf 读取并做正确的事。\nTODO：如果没设 rpc.user/rpc.password，弹对话框或在 debug.log 里警告，说明如何设置。\nTODO：如果 rpc.password 长度不足 15 个字符，限制密码猜测次数。\nTODO：更新 JSON-RPC wiki 页面</p><p>这些都做完、补丁发给 Satoshi 之后，我还打算给 bitcoin.conf 再加几项：</p><p>port=   # 设置监听端口（覆盖默认 8333）\nrpc.port= # 设置 JSON-RPC 端口（覆盖默认 8332）</p><p>加上现有的 -datadir 选项，我在一台机器上跑多个 bitcoin 就容易多了。</p>","zhText":"我自告奋勇来实现这个，今日进展顺利。Satoshi：明日理应就能给你补丁。\n已完成：让 Bitcoin 从 {BITCOIN_DIR}/bitcoin.conf 文件读取设置，并新增 -conf=path_to_config_file.conf 命令行选项。\n已完成：让 Bitcoin RPC 要求 HTTP Basic 认证，拒绝用户名/密码错误的请求。\nTODO：让 Bitcoin 命令行 RPC 自动加 Authorization: 头。从命令行控制 bitcoin 时，你无需再给用户名/密码，它会从 bitcoin.conf 读取并做正确的事。\nTODO：如果没设 rpc.user/rpc.password，弹对话框或在 debug.log 里警告，说明如何设置。\nTODO：如果 rpc.password 长度不足 15 个字符，限制密码猜测次数。\nTODO：更新 JSON-RPC wiki 页面\n这些都做完、补丁发给 Satoshi 之后，我还打算给 bitcoin.conf 再加几项：\nport= # 设置监听端口（覆盖默认 8333）\nrpc.port= # 设置 JSON-RPC 端口（覆盖默认 8332）\n加上现有的 -datadir 选项，我在一台机器上跑多个 bitcoin 就容易多了。"},{"id":1437,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-22","ts":"2010-07-22T01:51:40Z","url":"https://bitcointalk.org/index.php?topic=461.msg4918#msg4918","zh":"<p>我已经实现成：所有命令行选项亦都能写进 bitcoin.conf 文件。</p><p>命令行给出的选项优先于 conf 文件里的。然而我还需要更多测试，尤其是 \"addnode\" 这类 \"multiargs\" 选项。</p>","zhText":"我已经实现成：所有命令行选项亦都能写进 bitcoin.conf 文件。\n命令行给出的选项优先于 conf 文件里的。然而我还需要更多测试，尤其是 \"addnode\" 这类 \"multiargs\" 选项。"},{"id":1438,"sid":254,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-22","ts":"2010-07-22T02:34:23Z","url":"https://bitcointalk.org/index.php?topic=461.msg4928#msg4928","zh":"<blockquote><p>TODO：如果没设 rpc.user/rpc.password，弹对话框或在 debug.log 里警告，说明如何设置。</p></blockquote><p>在 RPC 相关的很多场景里，可以这样用 fprintf(stdout, 打印到控制台：\n#if defined(__WXMSW__) && wxUSE_GUI\n        MyMessageBox(\"Warning: rpc password is blank, use -rpcpw=<password>\n\", \"Bitcoin\", wxOK | wxICON_EXCLAMATION);\n#else\n        fprintf(stdout, \"Warning: rpc password is blank, use -rpcpw=<password>\n\");\n#endif</p>","zhText":"TODO：如果没设 rpc.user/rpc.password，弹对话框或在 debug.log 里警告，说明如何设置。\n\n在 RPC 相关的很多场景里，可以这样用 fprintf(stdout, 打印到控制台：\n#if defined(__WXMSW__) && wxUSE_GUI\n MyMessageBox(\"Warning: rpc password is blank, use -rpcpw=\n\", \"Bitcoin\", wxOK | wxICON_EXCLAMATION);\n#else\n fprintf(stdout, \"Warning: rpc password is blank, use -rpcpw=\n\");\n#endif"},{"id":1585,"sid":null,"sat":0,"tid":126,"tt":"JSON-RPC Multiple Invocations","src":"Bitcointalk","author":"lachesis","date":"2010-07-22","ts":"2010-07-22T03:18:36Z","url":"https://bitcointalk.org/index.php?topic=528.msg4940#msg4940","zh":"<p>好，我知道距离我上次发帖聊这个还不到一小时，但我决定自己动手解决这个问题。</p><p>倘若世上有更好的方案，我很乐意听，但这不过是我让它跑起来的 0.1 版尝试罢了：\n<a href=\"http://www.alloscomp.com/bitcoin/btcjsonrpc.pys\">http://www.alloscomp.com/bitcoin/btcjsonrpc.pys</a></p><p>喜欢也罢、讨厌也罢、发现明显缺陷也罢，都告诉我。源码里有入门文档，这是测试套件的代码：</p><pre><code>from btcjsonrpc import Service\n    s = Service()\n    print 'preparing getbalance; id:',s.getbalance() # Each call returns its ID so you can find it later in the results\n    print 'preparing getdifficulty; id:',s.getdifficulty()\n    print 'preparing listreceivedbyaddress; id:',s.listreceivedbyaddress(10000) # Call with a parameter\n    print 'preparing getbalance; id:',s.getbalance(id='getbalance 2') # You can also specify your own ID\n    print '\nexecuting call\n\nresults:'\n    results = s() # Get the results by calling the Service object\n    for id,value in results.iteritems():\n        print id,value\n    # If you'd prefer to work directly with the JSON responses instead of a dict of IDs, then access the list Service.responses.\n    print '\njson responses'\n    print s.responses</code></pre><p>这是输出，包括 docstr：</p><pre><code>$ ./btcjsonrpc.py\n Socket-based, Bitcoin-compatible JSON-RPC v1.0 client.\n By: Eric Swanson (http://www.alloscomp.com/bitcoin)\n Version 0.1, July 21, 2010\nDon't use this for one-off request->response pairs. Use something like the reference python-jsonrpc library, or urllib2 + json. This client is hackish, but it works for me (and has sped up my JSON-RPC accesses tremendously).\n\nFor details of WHY exactly I felt the need to redo python-jsonrpc using a raw socket, check out the follow forum post: http://bitcointalk.org/index.php?topic=528.0\n\nUsage is fairly straightforward, and a code sample can be found below the library code (in the if __name__=='__main__' clause).\n\npreparing getbalance; id: jss-1\npreparing getdifficulty; id: jss-2\npreparing listreceivedbyaddress; id: jss-3\npreparing getbalance; id: getbalance 2\n\nexecuting call\n\nresults:\njss-2 181.543289364\njss-3 []\ngetbalance 2 2345.94\njss-1 2345.94\n\njson responses\n[{u'id': u'jss-2', u'result': 181.54328936405051, u'error': None}, {u'id': u'jss-3', u'result': [], u'error': None}, {u'id': u'getbalance 2', u'result': 2345.9400000000001, u'error': None}, {u'id': u'jss-1', u'result': 2345.9400000000001, u'error': None}]</code></pre>","zhText":"好，我知道距离我上次发帖聊这个还不到一小时，但我决定自己动手解决这个问题。\n倘若世上有更好的方案，我很乐意听，但这不过是我让它跑起来的 0.1 版尝试罢了：\nhttp://www.alloscomp.com/bitcoin/btcjsonrpc.pys\n喜欢也罢、讨厌也罢、发现明显缺陷也罢，都告诉我。源码里有入门文档，这是测试套件的代码：\nfrom btcjsonrpc import Service\n s = Service()\n print 'preparing getbalance; id:',s.getbalance() # Each call returns its ID so you can find it later in the results\n print 'preparing getdifficulty; id:',s.getdifficulty()\n print 'preparing listreceivedbyaddress; id:',s.listreceivedbyaddress(10000) # Call with a parameter\n print 'preparing getbalance; id:',s.getbalance(id='getbalance 2') # You can also specify your own ID\n print '\nexecuting call\n\nresults:'\n results = s() # Get the results by calling the Service object\n for id,value in results.iteritems():\n print id,value\n # If you'd prefer to work directly with the JSON responses instead of a dict of IDs, then access the list Service.responses.\n print '\njson responses'\n print s.responses这是输出，包括 docstr：\n$ ./btcjsonrpc.py\n Socket-based, Bitcoin-compatible JSON-RPC v1.0 client.\n By: Eric Swanson (http://www.alloscomp.com/bitcoin)\n Version 0.1, July 21, 2010\nDon't use this for one-off request->response pairs. Use something like the reference python-jsonrpc library, or urllib2 + json. This client is hackish, but it works for me (and has sped up my JSON-RPC accesses tremendously).\n\nFor details of WHY exactly I felt the need to redo python-jsonrpc using a raw socket, check out the follow forum post: http://bitcointalk.org/index.php?topic=528.0\n\nUsage is fairly straightforward, and a code sample can be found below the library code (in the if __name__=='__main__' clause).\n\npreparing getbalance; id: jss-1\npreparing getdifficulty; id: jss-2\npreparing listreceivedbyaddress; id: jss-3\npreparing getbalance; id: getbalance 2\n\nexecuting call\n\nresults:\njss-2 181.543289364\njss-3 []\ngetbalance 2 2345.94\njss-1 2345.94\n\njson responses\n[{u'id': u'jss-2', u'result': 181.54328936405051, u'error': None}, {u'id': u'jss-3', u'result': [], u'error': None}, {u'id': u'getbalance 2', u'result': 2345.9400000000001, u'error': None}, {u'id': u'jss-1', u'result': 2345.9400000000001, u'error': None}]"},{"id":1439,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-23","ts":"2010-07-23T15:11:45Z","url":"https://bitcointalk.org/index.php?topic=461.msg5296#msg5296","zh":"<p>我更新了 <a href=\"http://www.bitcoin.org/wiki/doku.php?id=api\">RPC wiki 页面</a>，说明密码机制在 Bitcoin 0.3.3 里如何工作。</p><p>一个不错的副作用：你现在就能为变更做准备；创建一个带用户名和密码的 bitcoin.conf 文件，把你的 JSON-RPC 代码改成 HTTP Basic Authentication 那一套。旧代码会直接无视 .conf 文件和 Authorization: HTTP 头。</p><p>问大家一个问题：我该不该在 wiki 页面加一节，详细讲怎么做 HTTP Basic authentication？PHP 和 Python 特别简单——用 <a href=\"http://user:pass@host:port/\">http://user:pass@host:port/</a> URL 语法就行。我不想只是复述维基百科的 HTTP Basic authentication 页面。</p>","zhText":"我更新了 RPC wiki 页面，说明密码机制在 Bitcoin 0.3.3 里如何工作。\n一个不错的副作用：你现在就能为变更做准备；创建一个带用户名和密码的 bitcoin.conf 文件，把你的 JSON-RPC 代码改成 HTTP Basic Authentication 那一套。旧代码会直接无视 .conf 文件和 Authorization: HTTP 头。\n问大家一个问题：我该不该在 wiki 页面加一节，详细讲怎么做 HTTP Basic authentication？PHP 和 Python 特别简单——用 http://user:pass@host:port/ URL 语法就行。我不想只是复述维基百科的 HTTP Basic authentication 页面。"},{"id":1608,"sid":null,"sat":0,"tid":128,"tt":"bitcoind not responding to RPC","src":"Bitcointalk","author":"mtgox","date":"2010-07-23","ts":"2010-07-23T16:47:36Z","url":"https://bitcointalk.org/index.php?topic=548.msg5331#msg5331","zh":"<p>我发一个无效的比特币地址时也会遇到这个问题。奇怪，地址无效看起来不该影响连接。</p>","zhText":"我发一个无效的比特币地址时也会遇到这个问题。奇怪，地址无效看起来不该影响连接。"},{"id":1440,"sid":255,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-23","ts":"2010-07-23T17:07:40Z","url":"https://bitcointalk.org/index.php?topic=461.msg5337#msg5337","zh":"<blockquote><p>问大家一个问题：我该不该在 wiki 页面加一节，详细讲怎么做 HTTP Basic authentication？PHP 和 Python 特别简单——用 <a href=\"http://user:pass@host:port/\">http://user:pass@host:port/</a> URL 语法就行。</p></blockquote><p>要，我觉得这非常好，省得每个开发者都自己摸索一遍。我们需要给 Python、PHP、Java 各配一个简单示例，导入 json-rpc 库并用它跑一个 getinfo 之类的调用，包括做 http 认证那部分。</p>","zhText":"问大家一个问题：我该不该在 wiki 页面加一节，详细讲怎么做 HTTP Basic authentication？PHP 和 Python 特别简单——用 http://user:pass@host:port/ URL 语法就行。\n\n要，我觉得这非常好，省得每个开发者都自己摸索一遍。我们需要给 Python、PHP、Java 各配一个简单示例，导入 json-rpc 库并用它跑一个 getinfo 之类的调用，包括做 http 认证那部分。"},{"id":1441,"sid":256,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-23","ts":"2010-07-23T17:14:31Z","url":"https://bitcointalk.org/index.php?topic=461.msg5338#msg5338","zh":"<p>Gavin 的修改看着不错。我认为一切都齐了。这是个测试版，请大家测试！</p><p><a href=\"http://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz</a></p>","zhText":"Gavin 的修改看着不错。我认为一切都齐了。这是个测试版，请大家测试！\nhttp://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip\nhttp://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz"},{"id":1609,"sid":257,"sat":1,"tid":128,"tt":"bitcoind not responding to RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-23","ts":"2010-07-23T17:23:47Z","url":"https://bitcointalk.org/index.php?topic=548.msg5339#msg5339","zh":"<p>倘若我没记错，500 是 JSON-RPC 错误响应规定使用的状态码。回复的正文里仍有 JSON 响应，说明错误的具体原因，譬如 {\"result\":\"\",\"error\":\"bitcoin address not found\",\"id\":\"1\"}。</p>","zhText":"倘若我没记错，500 是 JSON-RPC 错误响应规定使用的状态码。回复的正文里仍有 JSON 响应，说明错误的具体原因，譬如 {\"result\":\"\",\"error\":\"bitcoin address not found\",\"id\":\"1\"}。"},{"id":1610,"sid":null,"sat":0,"tid":128,"tt":"bitcoind not responding to RPC","src":"Bitcointalk","author":"mtgox","date":"2010-07-23","ts":"2010-07-23T18:14:48Z","url":"https://bitcointalk.org/index.php?topic=548.msg5347#msg5347","zh":"<p>奇怪，我猜 php 的 fopen() 在响应是 500 时就挂了？</p><p>像无效地址这类错误似乎应该作为正常回复返回，不过是不「生效」，如此这般我们检查回复字符串就行。在我看来 500 错误应该留给服务器本身出错。</p>","zhText":"奇怪，我猜 php 的 fopen() 在响应是 500 时就挂了？\n像无效地址这类错误似乎应该作为正常回复返回，不过是不「生效」，如此这般我们检查回复字符串就行。在我看来 500 错误应该留给服务器本身出错。"},{"id":1612,"sid":258,"sat":1,"tid":129,"tt":"Faster initial block download (5x faster)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-23","ts":"2010-07-23T18:24:56Z","url":"https://bitcointalk.org/index.php?topic=550.msg5349#msg5349","zh":"<p>通过对数据库设置做一些调整，我把初始区块下载提速了约 5 倍。现在下载只要约 30 分钟。</p><p>数据库默认把每个区块同步写盘，这没有必要。我改了设置，让它把变更缓存在内存里、批量写出。区块仍然是事务性写入的，变更要么完整发生、要么完全不发生，无论哪种情况数据都处于有效状态。</p><p>我只在初始区块下载期间启用这个变更。当你离最新区块还剩 2000 个区块时，这些变更会关闭，速度回到老样子。</p><p>我编了个测试版，想提前用的话：</p><p><a href=\"http://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz</a></p><p>这些二进制亦包含 Gavin Andresen 的 JSON-RPC HTTP 认证功能，以及 0.3.2 的其他重要安全改进。</p><p>过去 24 小时我跑了一个测试：在初始区块下载期间每 2-60 秒随机杀死并重启它（可怜的家伙），一切正常。</p><p>wallet.dat 的处理方式没有任何变化。这个变更只影响 blk*.dat 和不关键的 addr.dat。blk*.dat 万一坏了，随时可以删掉重新下载。</p>","zhText":"通过对数据库设置做一些调整，我把初始区块下载提速了约 5 倍。现在下载只要约 30 分钟。\n数据库默认把每个区块同步写盘，这没有必要。我改了设置，让它把变更缓存在内存里、批量写出。区块仍然是事务性写入的，变更要么完整发生、要么完全不发生，无论哪种情况数据都处于有效状态。\n我只在初始区块下载期间启用这个变更。当你离最新区块还剩 2000 个区块时，这些变更会关闭，速度回到老样子。\n我编了个测试版，想提前用的话：\nhttp://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip\nhttp://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz\n这些二进制亦包含 Gavin Andresen 的 JSON-RPC HTTP 认证功能，以及 0.3.2 的其他重要安全改进。\n过去 24 小时我跑了一个测试：在初始区块下载期间每 2-60 秒随机杀死并重启它（可怜的家伙），一切正常。\nwallet.dat 的处理方式没有任何变化。这个变更只影响 blk*.dat 和不关键的 addr.dat。blk*.dat 万一坏了，随时可以删掉重新下载。"},{"id":1444,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-23","ts":"2010-07-23T18:51:34Z","url":"https://bitcointalk.org/index.php?topic=461.msg5357#msg5357","zh":"<blockquote><p>密码绝对不应当是必填的。</p></blockquote><p>我强烈反对；软件默认就该是安全的，不带密码跑 bitcoind（或 bitcoin -server）绝对不安全。</p><p>我实在想象不出有人说「天哪，Bitcoin 太烂了，跑守护进程之前还得在配置文件里加个密码。」但我<b>能</b>想象有人说「天哪，Bitcoin 太烂了，我不小心用了 -server 开关，结果钱全被偷了。」</p>","zhText":"密码绝对不应当是必填的。\n\n我强烈反对；软件默认就该是安全的，不带密码跑 bitcoind（或 bitcoin -server）绝对不安全。\n我实在想象不出有人说「天哪，Bitcoin 太烂了，跑守护进程之前还得在配置文件里加个密码。」但我能想象有人说「天哪，Bitcoin 太烂了，我不小心用了 -server 开关，结果钱全被偷了。」"},{"id":1617,"sid":null,"sat":0,"tid":129,"tt":"Faster initial block download (5x faster)","src":"Bitcointalk","author":"knightmb","date":"2010-07-23","ts":"2010-07-23T19:32:58Z","url":"https://bitcointalk.org/index.php?topic=550.msg5369#msg5369","zh":"<blockquote><p>通过对数据库设置做一些调整，我把初始区块下载提速了约 5 倍。现在下载只要约 30 分钟。</p><p>数据库默认把每个区块同步写盘，这没有必要。我改了设置，让它把变更缓存在内存里、批量写出。区块仍然是事务性写入的，变更要么完整发生、要么完全不发生，无论哪种情况数据都处于有效状态。</p><p>我只在初始区块下载期间启用这个变更。当你离最新区块还剩 2000 个区块时，这些变更会关闭，速度回到老样子。</p></blockquote><p>头 7 万个区块约 20 分钟下完，剩下 2000 个区块又花了约 7 分钟，从 0 到 100% 只用了 27 分钟，非常好！在最后 2000 个区块停下来有什么安全上的原因吗？能不能调整成譬如剩 500 个区块时停？</p><p>顺便说一句，可能有人好奇：每一段下载的平均速度在 3 Mbps 左右。</p>","zhText":"通过对数据库设置做一些调整，我把初始区块下载提速了约 5 倍。现在下载只要约 30 分钟。\n数据库默认把每个区块同步写盘，这没有必要。我改了设置，让它把变更缓存在内存里、批量写出。区块仍然是事务性写入的，变更要么完整发生、要么完全不发生，无论哪种情况数据都处于有效状态。\n我只在初始区块下载期间启用这个变更。当你离最新区块还剩 2000 个区块时，这些变更会关闭，速度回到老样子。\n\n头 7 万个区块约 20 分钟下完，剩下 2000 个区块又花了约 7 分钟，从 0 到 100% 只用了 27 分钟，非常好！在最后 2000 个区块停下来有什么安全上的原因吗？能不能调整成譬如剩 500 个区块时停？\n顺便说一句，可能有人好奇：每一段下载的平均速度在 3 Mbps 左右。"},{"id":1618,"sid":null,"sat":0,"tid":129,"tt":"Faster initial block download (5x faster)","src":"Bitcointalk","author":"knightmb","date":"2010-07-23","ts":"2010-07-23T20:04:26Z","url":"https://bitcointalk.org/index.php?topic=550.msg5376#msg5376","zh":"<p>实际环境下区块下载也一样快（约 3 Mbps），大大的赞，这肯定能让新用户更快跑起来。</p>","zhText":"实际环境下区块下载也一样快（约 3 Mbps），大大的赞，这肯定能让新用户更快跑起来。"},{"id":1619,"sid":259,"sat":1,"tid":129,"tt":"Faster initial block download (5x faster)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-23","ts":"2010-07-23T20:13:27Z","url":"https://bitcointalk.org/index.php?topic=550.msg5378#msg5378","zh":"<blockquote><p>在最后 2000 个区块停下来有什么安全上的原因吗？能不能调整成譬如剩 500 个区块时停？</p></blockquote><p>没什么特别原因。下次我改成 1000。</p>","zhText":"在最后 2000 个区块停下来有什么安全上的原因吗？能不能调整成譬如剩 500 个区块时停？\n\n没什么特别原因。下次我改成 1000。"},{"id":1445,"sid":260,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-23","ts":"2010-07-23T20:39:03Z","url":"https://bitcointalk.org/index.php?topic=461.msg5383#msg5383","zh":"<p>我不认为在没有 conf 文件、或配置文件不含 \"rpcpassword\" 时就该默认禁用认证，但如果配置文件里写的是 \"rpcpassword=\" 呢？</p><p>两边的道理我都懂。</p><p>倘若程序员搞不定用他们的语言（Fortran 之类）做 HTTP 认证，或者他们的 JSON-RPC 库压根不支持呢？应不应该允许他们显式关掉密码要求？</p><p>话又说回来，倘若有个模板 conf 文件，里面是\nrpcpassword=  # 在这里填入密码</p><p>许多系统不允许无密码登录。譬如这个论坛。Gavin 的观点看起来更有力。</p><p>顺便说一句，我没测过，但我希望 conf 文件里 rpcpassword=（空值）是合法的。只有用 -server 或 -daemon 或 bitcoind 时才该报错警告。如果不需要密码，就应该没事。是这样吗？</p>","zhText":"我不认为在没有 conf 文件、或配置文件不含 \"rpcpassword\" 时就该默认禁用认证，但如果配置文件里写的是 \"rpcpassword=\" 呢？\n两边的道理我都懂。\n倘若程序员搞不定用他们的语言（Fortran 之类）做 HTTP 认证，或者他们的 JSON-RPC 库压根不支持呢？应不应该允许他们显式关掉密码要求？\n话又说回来，倘若有个模板 conf 文件，里面是\nrpcpassword= # 在这里填入密码\n许多系统不允许无密码登录。譬如这个论坛。Gavin 的观点看起来更有力。\n顺便说一句，我没测过，但我希望 conf 文件里 rpcpassword=（空值）是合法的。只有用 -server 或 -daemon 或 bitcoind 时才该报错警告。如果不需要密码，就应该没事。是这样吗？"},{"id":1586,"sid":261,"sat":1,"tid":126,"tt":"JSON-RPC Multiple Invocations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-24","ts":"2010-07-24T00:59:08Z","url":"https://bitcointalk.org/index.php?topic=528.msg5416#msg5416","zh":"<p>显然，重复头部是个 bug。</p><p>我当时是想遵循 1.0 规范：<a href=\"http://json-rpc.org/wiki/specification\">http://json-rpc.org/wiki/specification</a>   它要求支持 multiple invocation。</p><p>我想他们的意思是下面这样，但不确定：</p><p>Post:\n{\"method\": \"postMessage\", \"params\": [\"Hello all!\"], \"id\": 99}\n{\"method\": \"postMessage\", \"params\": [\"I have a question:\"], \"id\": 101}</p><p>Reply:\n{\"result\": 1, \"error\": null, \"id\": 99}\n{\"result\": 1, \"error\": null, \"id\": 101}</p><p>我不记得在哪看到过错误回复应返回 HTTP 状态 500。倘若回复里含多个响应且其中一个是错误，我猜整个的状态就是 500。兴许应该一律返回 200。我记得有人说 500 可能导致了问题。</p><p>这个多半要等 0.3.3 之后修。在那之前，只用单调用。我不知道有没有哪个 JSON-RPC 包真的支持 multiple invocation，多半没有。</p><p>最好先弄清楚 multiple-invocation 到底应该怎么工作（倘若真该支持的话），以及错误响应返回 HTTP 500 是否正确，再去修它。</p>","zhText":"显然，重复头部是个 bug。\n我当时是想遵循 1.0 规范：http://json-rpc.org/wiki/specification 它要求支持 multiple invocation。\n我想他们的意思是下面这样，但不确定：\nPost:\n{\"method\": \"postMessage\", \"params\": [\"Hello all!\"], \"id\": 99}\n{\"method\": \"postMessage\", \"params\": [\"I have a question:\"], \"id\": 101}\nReply:\n{\"result\": 1, \"error\": null, \"id\": 99}\n{\"result\": 1, \"error\": null, \"id\": 101}\n我不记得在哪看到过错误回复应返回 HTTP 状态 500。倘若回复里含多个响应且其中一个是错误，我猜整个的状态就是 500。兴许应该一律返回 200。我记得有人说 500 可能导致了问题。\n这个多半要等 0.3.3 之后修。在那之前，只用单调用。我不知道有没有哪个 JSON-RPC 包真的支持 multiple invocation，多半没有。\n最好先弄清楚 multiple-invocation 到底应该怎么工作（倘若真该支持的话），以及错误响应返回 HTTP 500 是否正确，再去修它。"},{"id":1611,"sid":262,"sat":1,"tid":128,"tt":"bitcoind not responding to RPC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-24","ts":"2010-07-24T01:15:58Z","url":"https://bitcointalk.org/index.php?topic=548.msg5419#msg5419","zh":"<p>有谁能确认，HTTP 上的 JSON-RPC 在错误回复时是否按规定该用状态 500？我记不清从哪看来的，也可能是错的。感觉 200 更合理，除非 HTTP 请求本身的机制出了问题。（兴许原文只针对某种情况，我忘了，然后把 500 扩散到了所有错误响应）</p>","zhText":"有谁能确认，HTTP 上的 JSON-RPC 在错误回复时是否按规定该用状态 500？我记不清从哪看来的，也可能是错的。感觉 200 更合理，除非 HTTP 请求本身的机制出了问题。（兴许原文只针对某种情况，我忘了，然后把 500 扩散到了所有错误响应）"},{"id":1472,"sid":263,"sat":1,"tid":124,"tt":"Warning: don't use -server or bitcoind where you web browse (v0.3.2 and lower)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-24","ts":"2010-07-24T02:29:09Z","url":"https://bitcointalk.org/index.php?topic=479.msg5432#msg5432","zh":"<p>0.3.3 的 JSON-RPC HTTP 认证功能解决了这个问题。</p>","zhText":"0.3.3 的 JSON-RPC HTTP 认证功能解决了这个问题。"},{"id":1622,"sid":null,"sat":0,"tid":130,"tt":"Reading/Writing Blocks and FLATDATA","src":"Bitcointalk","author":"Hepatizon","date":"2010-07-24","ts":"2010-07-24T02:53:05Z","url":"https://bitcointalk.org/index.php?topic=555.msg5435#msg5435","zh":"<p>谢谢帮我弄明白。</p><p>我总是犯非常初级的代码错误……</p>","zhText":"谢谢帮我弄明白。\n我总是犯非常初级的代码错误……"},{"id":1624,"sid":264,"sat":1,"tid":131,"tt":"Version 0.3.2.5 -- please test!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-24","ts":"2010-07-24T03:32:52Z","url":"https://bitcointalk.org/index.php?topic=556.msg5443#msg5443","zh":"<p>请测试 0.3.2.5，为 0.3.3 发布做准备！这个构建状态良好，应该就是进 0.3.3 的那个。倘若你在 Windows 或 Linux 上，我鼓励你现在就升级。</p><p>新功能：\n- Gavin Andresen 的 HTTP 认证，保护 JSON-RPC\n- 初始区块下载快 5 倍，30 分钟以内</p><p>在这里下载：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz</a></p><p>谢谢！</p>","zhText":"请测试 0.3.2.5，为 0.3.3 发布做准备！这个构建状态良好，应该就是进 0.3.3 的那个。倘若你在 Windows 或 Linux 上，我鼓励你现在就升级。\n新功能：\n- Gavin Andresen 的 HTTP 认证，保护 JSON-RPC\n- 初始区块下载快 5 倍，30 分钟以内\n在这里下载：\nhttp://www.bitcoin.org/download/bitcoin-0.3.2.5-win32.zip\nhttp://www.bitcoin.org/download/bitcoin-0.3.2.5-linux.tar.gz\n谢谢！"},{"id":1623,"sid":265,"sat":1,"tid":130,"tt":"Reading/Writing Blocks and FLATDATA","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-24","ts":"2010-07-24T04:04:20Z","url":"https://bitcointalk.org/index.php?topic=555.msg5450#msg5450","zh":"<p>FLATDATA 是序列化定长字段数组的一个权宜办法。本来有一种更干净的方式让它直接懂得如何序列化数组，然而 MSVC6 做不到，而我当时想保持对 MSVC6 的兼容。我们已经不再支持 MSVC6，因为用到的 Boost 里的某个东西不支持它。0.2.0 之后失去了它的支持。兴许哪天我会换成那种干净的方式，不用包一层 FLATDATA 就知道怎么序列化定长数组。</p>","zhText":"FLATDATA 是序列化定长字段数组的一个权宜办法。本来有一种更干净的方式让它直接懂得如何序列化数组，然而 MSVC6 做不到，而我当时想保持对 MSVC6 的兼容。我们已经不再支持 MSVC6，因为用到的 Boost 里的某个东西不支持它。0.2.0 之后失去了它的支持。兴许哪天我会换成那种干净的方式，不用包一层 FLATDATA 就知道怎么序列化定长数组。"},{"id":1627,"sid":null,"sat":0,"tid":132,"tt":"a simple traffic load test run","src":"Bitcointalk","author":"theymos","date":"2010-07-25","ts":"2010-07-25T13:13:16Z","url":"https://bitcointalk.org/index.php?topic=567.msg5687#msg5687","zh":"<p>测试后半段交易速率出现了大量减速。倘若这是网络的问题，我会非常担心未来的拒绝服务攻击。希望以后能组织更大规模的测试。</p><p>这是当时事件的抓包（来自只有一条连接的「边缘」计算机），倘若有人想知道确切时间之类。\n<a href=\"http://www.freefilehostingnow.com/filedownload.aspx?code=6bb2dbeea18e6a419daaadda5798bb05ec6b\">http://www.freefilehostingnow.com/filedownload.aspx?code=6bb2dbeea18e6a419daaadda5798bb05ec6b</a></p>","zhText":"测试后半段交易速率出现了大量减速。倘若这是网络的问题，我会非常担心未来的拒绝服务攻击。希望以后能组织更大规模的测试。\n这是当时事件的抓包（来自只有一条连接的「边缘」计算机），倘若有人想知道确切时间之类。\nhttp://www.freefilehostingnow.com/filedownload.aspx?code=6bb2dbeea18e6a419daaadda5798bb05ec6b"},{"id":1628,"sid":266,"sat":1,"tid":132,"tt":"a simple traffic load test run","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T14:46:33Z","url":"https://bitcointalk.org/index.php?topic=567.msg5694#msg5694","zh":"<p>那是在测试网上做的吗？\n<a href=\"http://bitcointalk.org/index.php?topic=363.0\">http://bitcointalk.org/index.php?topic=363.0</a></p>","zhText":"那是在测试网上做的吗？\nhttp://bitcointalk.org/index.php?topic=363.0"},{"id":1629,"sid":null,"sat":0,"tid":132,"tt":"a simple traffic load test run","src":"Bitcointalk","author":"theymos","date":"2010-07-25","ts":"2010-07-25T15:00:43Z","url":"https://bitcointalk.org/index.php?topic=567.msg5696#msg5696","zh":"<blockquote><p>那是在测试网上做的吗？\n<a href=\"http://bitcointalk.org/index.php?topic=363.0\">http://bitcointalk.org/index.php?topic=363.0</a></p></blockquote><p>不是。</p>","zhText":"那是在测试网上做的吗？\nhttp://bitcointalk.org/index.php?topic=363.0\n\n不是。"},{"id":1630,"sid":267,"sat":1,"tid":132,"tt":"a simple traffic load test run","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T15:29:52Z","url":"https://bitcointalk.org/index.php?topic=567.msg5698#msg5698","zh":"<p>请把这类测试放到测试网上做。它就是干这个用的。谢谢。</p>","zhText":"请把这类测试放到测试网上做。它就是干这个用的。谢谢。"},{"id":1631,"sid":268,"sat":1,"tid":133,"tt":"Bitcoin 0.3.3 released -- PLEASE UPGRADE","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T16:55:09Z","url":"https://bitcointalk.org/index.php?topic=570.msg5707#msg5707","zh":"<p>请升级到 0.3.3！0.3.2 和 0.3.3 做了重要的安全改进。</p><p>新功能：\n- Gavin Andresen 的 HTTP 认证，保护 JSON-RPC\n- 初始区块下载快 5 倍，30 分钟以内</p>","zhText":"请升级到 0.3.3！0.3.2 和 0.3.3 做了重要的安全改进。\n新功能：\n- Gavin Andresen 的 HTTP 认证，保护 JSON-RPC\n- 初始区块下载快 5 倍，30 分钟以内"},{"id":1633,"sid":null,"sat":0,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"knightmb","date":"2010-07-25","ts":"2010-07-25T17:19:29Z","url":"https://bitcointalk.org/index.php?topic=571.msg5709#msg5709","zh":"<p>这是开源软件，现在就拿出来讨论，比藏着掖着、让别人先发现并可能不愿分享任何细节要好。</p>","zhText":"这是开源软件，现在就拿出来讨论，比藏着掖着、让别人先发现并可能不愿分享任何细节要好。"},{"id":1634,"sid":269,"sat":1,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T17:45:22Z","url":"https://bitcointalk.org/index.php?topic=571.msg5712#msg5712","zh":"<p>最好先私下告诉我，以便先修复。</p><p>我刚把我的 e-mail 地址发给你了。（或者在这里 PM 我也行）</p>","zhText":"最好先私下告诉我，以便先修复。\n我刚把我的 e-mail 地址发给你了。（或者在这里 PM 我也行）"},{"id":1637,"sid":null,"sat":0,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"knightmb","date":"2010-07-25","ts":"2010-07-25T18:15:05Z","url":"https://bitcointalk.org/index.php?topic=571.msg5719#msg5719","zh":"<p>我想我明白他的意思，但我原本很确定，这件事的概率随机性太大，构不成攻击。</p>","zhText":"我想我明白他的意思，但我原本很确定，这件事的概率随机性太大，构不成攻击。"},{"id":1638,"sid":270,"sat":1,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T19:06:23Z","url":"https://bitcointalk.org/index.php?topic=571.msg5724#msg5724","zh":"<p>Red，谢谢你先私下告诉我！请发出来吧（也替大家解除悬念！）</p><p>他的观点是：支付到比特币地址的交易，其安全性只取决于哈希函数。为了让比特币地址简短，它是公钥的哈希，而非公钥本身。攻击者只需要破解哈希函数，不需要破解 ECDSA。</p>","zhText":"Red，谢谢你先私下告诉我！请发出来吧（也替大家解除悬念！）\n他的观点是：支付到比特币地址的交易，其安全性只取决于哈希函数。为了让比特币地址简短，它是公钥的哈希，而非公钥本身。攻击者只需要破解哈希函数，不需要破解 ECDSA。"},{"id":1642,"sid":null,"sat":0,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"knightmb","date":"2010-07-25","ts":"2010-07-25T19:44:02Z","url":"https://bitcointalk.org/index.php?topic=571.msg5736#msg5736","zh":"<blockquote><p>Satoshi 指出，我的场景仍然要求哈希函数被破解。没错，但我惊讶地了解到有些人在这上面已经多么「成功」。MD4 和 MD5 是明显的例子。而对 SHA-1 及其同类（如 SHA-256）的碰撞研究也在顺利推进。</p></blockquote><p>不过他们常常没提的是，*生成碰撞*仍然要花大量 CPU 时间。</p><p>如果我算出公钥 123456 生成哈希 ABCD\n而\n公钥 654321 也生成哈希 ABCD\n我手里仍然没有私钥。</p><p>但照你的说法，我只需要公钥 654321，就能冒充公钥 123456 去花币。</p>","zhText":"Satoshi 指出，我的场景仍然要求哈希函数被破解。没错，但我惊讶地了解到有些人在这上面已经多么「成功」。MD4 和 MD5 是明显的例子。而对 SHA-1 及其同类（如 SHA-256）的碰撞研究也在顺利推进。\n\n不过他们常常没提的是，*生成碰撞*仍然要花大量 CPU 时间。\n如果我算出公钥 123456 生成哈希 ABCD\n而\n公钥 654321 也生成哈希 ABCD\n我手里仍然没有私钥。\n但照你的说法，我只需要公钥 654321，就能冒充公钥 123456 去花币。"},{"id":1643,"sid":null,"sat":0,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Red","date":"2010-07-25","ts":"2010-07-25T19:52:23Z","url":"https://bitcointalk.org/index.php?topic=571.msg5737#msg5737","zh":"<p>据我所知，bitcoin 生成比特币地址用的是 160 位哈希中的一种。</p><p>SHA-1 家族是最常用的哈希算法之一。SHA-1 是 160 位哈希。</p><p>这里有一篇论文声称能在 2^52 次密码运算内找到 SHA-1 碰撞。而一个最优安全的哈希需要 2^80 次运算。2^52 仍然很大，但已经进入集群和僵尸网络的射程。</p><p><a href=\"http://www.ictlex.net/wp-content/iacrhash.pdf\">http://www.ictlex.net/wp-content/iacrhash.pdf</a></p><p>MD5 哈希如今在笔记本电脑上几秒钟就能碰撞出来。这正是它被从基于证书的签名中退役的原因。</p><p>对，我的意思是**我认为**你可以把公钥想成两个秘密数字在数学上合并在一起，而私钥是分开保管的这两个数字。让这个体系安全的要点，要求这两个秘密数字必须是足够大的质数。</p><p>但如果它们是很大的非质数，合并的数学照样成立，只是破解算法会快得多。</p><p>我再多 google 几下，看能不能证实我的说法。不过我本来是希望有人能直接把我的说法驳倒的。</p>","zhText":"据我所知，bitcoin 生成比特币地址用的是 160 位哈希中的一种。\nSHA-1 家族是最常用的哈希算法之一。SHA-1 是 160 位哈希。\n这里有一篇论文声称能在 2^52 次密码运算内找到 SHA-1 碰撞。而一个最优安全的哈希需要 2^80 次运算。2^52 仍然很大，但已经进入集群和僵尸网络的射程。\nhttp://www.ictlex.net/wp-content/iacrhash.pdf\nMD5 哈希如今在笔记本电脑上几秒钟就能碰撞出来。这正是它被从基于证书的签名中退役的原因。\n对，我的意思是**我认为**你可以把公钥想成两个秘密数字在数学上合并在一起，而私钥是分开保管的这两个数字。让这个体系安全的要点，要求这两个秘密数字必须是足够大的质数。\n但如果它们是很大的非质数，合并的数学照样成立，只是破解算法会快得多。\n我再多 google 几下，看能不能证实我的说法。不过我本来是希望有人能直接把我的说法驳倒的。"},{"id":1448,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"lachesis","date":"2010-07-25","ts":"2010-07-25T19:52:35Z","url":"https://bitcointalk.org/index.php?topic=461.msg5738#msg5738","zh":"<p>我发现了一个疑似 bug：当用户名和密码的组合够长时，bitcoind 的 base64 编码器生成的授权头看起来是这样的：</p><pre><code>POST / HTTP/1.1\nUser-Agent: json-rpc/1.0\nHost: 127.0.0.1\nContent-Type: application/json\nContent-Length: 40\nAccept: application/json\nAuthorization: Basic YWJiYWJiYWFiYmE6aGVsbG93b3JsZGhlbGxvd29ybGRoZWxsb3dvcmxkaGVsbG93\nb3JsZGhlbGxvd29ybGRoZWxsb3dvcmxk</code></pre><p>它每 64 个字符插入一个换行，这显然会破坏 Authorization 头，于是 \"bitcoin getinfo\" 这类命令失败。行为规范的客户端连服务器仍然一切正常。</p><p>解决办法是在 Base64Encode 函数末尾把 result 里的换行（也许还有 '\n'）去掉：</p><pre><code>result.erase(std::remove(result.begin(), result.end(), '\n'), result.end());\nresult.erase(std::remove(result.begin(), result.end(), '\r'), result.end());</code></pre><p>兴许有更优雅的方案，但这对我管用。补丁在这里：\n<a href=\"http://www.alloscomp.com/bitcoin/patches/bitcoin-svn-109-rpcbug-2010-07-25.patch\">http://www.alloscomp.com/bitcoin/patches/bitcoin-svn-109-rpcbug-2010-07-25.patch</a></p>","zhText":"我发现了一个疑似 bug：当用户名和密码的组合够长时，bitcoind 的 base64 编码器生成的授权头看起来是这样的：\nPOST / HTTP/1.1\nUser-Agent: json-rpc/1.0\nHost: 127.0.0.1\nContent-Type: application/json\nContent-Length: 40\nAccept: application/json\nAuthorization: Basic YWJiYWJiYWFiYmE6aGVsbG93b3JsZGhlbGxvd29ybGRoZWxsb3dvcmxkaGVsbG93\nb3JsZGhlbGxvd29ybGRoZWxsb3dvcmxk它每 64 个字符插入一个换行，这显然会破坏 Authorization 头，于是 \"bitcoin getinfo\" 这类命令失败。行为规范的客户端连服务器仍然一切正常。\n解决办法是在 Base64Encode 函数末尾把 result 里的换行（也许还有 '\n'）去掉：\nresult.erase(std::remove(result.begin(), result.end(), '\n'), result.end());\nresult.erase(std::remove(result.begin(), result.end(), '\r'), result.end());兴许有更优雅的方案，但这对我管用。补丁在这里：\nhttp://www.alloscomp.com/bitcoin/patches/bitcoin-svn-109-rpcbug-2010-07-25.patch"},{"id":1644,"sid":271,"sat":1,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T20:01:40Z","url":"https://bitcointalk.org/index.php?topic=571.msg5740#msg5740","zh":"<blockquote><p>如果我算出公钥 123456 生成哈希 ABCD\n而\n公钥 654321 也生成哈希 ABCD\n<i>我手里仍然没有私钥。</i></p><p>但照你的说法，我只需要公钥 654321，就能冒充公钥 123456 去花币。</p></blockquote><p>你仍然得用公钥 654321 签名。你需要用一个自己知道私钥的公钥去找碰撞。</p><p>当你认领一笔比特币地址交易时，你给出与哈希匹配的公钥，然后用那把钥签名。</p><p>Red 的意思是：快速生成不安全的公钥很容易，你可以先找到碰撞，再去破解公钥拿到私钥。</p><p>他指出，倘若要求公钥必须是安全的那种——即生成它的质数必然花了大量工夫——那安全性就会高于仅靠哈希函数的水平。想暴力破解的人每次尝试都得花时间生成一把钥。</p>","zhText":"如果我算出公钥 123456 生成哈希 ABCD\n而\n公钥 654321 也生成哈希 ABCD\n我手里仍然没有私钥。\n但照你的说法，我只需要公钥 654321，就能冒充公钥 123456 去花币。\n\n你仍然得用公钥 654321 签名。你需要用一个自己知道私钥的公钥去找碰撞。\n当你认领一笔比特币地址交易时，你给出与哈希匹配的公钥，然后用那把钥签名。\nRed 的意思是：快速生成不安全的公钥很容易，你可以先找到碰撞，再去破解公钥拿到私钥。\n他指出，倘若要求公钥必须是安全的那种——即生成它的质数必然花了大量工夫——那安全性就会高于仅靠哈希函数的水平。想暴力破解的人每次尝试都得花时间生成一把钥。"},{"id":1645,"sid":null,"sat":0,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"knightmb","date":"2010-07-25","ts":"2010-07-25T20:20:41Z","url":"https://bitcointalk.org/index.php?topic=571.msg5743#msg5743","zh":"<blockquote><p>你仍然得用公钥 654321 签名。你需要用一个自己知道私钥的公钥去找碰撞。</p><p>当你认领一笔比特币地址交易时，你给出与哈希匹配的公钥，然后用那把钥签名。</p><p>Red 的意思是：快速生成不安全的公钥很容易，你可以先找到碰撞，再去破解公钥拿到私钥。</p><p>他指出，倘若要求公钥必须是安全的那种——即生成它的质数必然花了大量工夫——那安全性就会高于仅靠哈希函数的水平。想暴力破解的人每次尝试都得花时间生成一把钥。</p></blockquote><p>对，我也觉得私钥总得在哪个环节掺进来。不过这又增加了一层随机性：你得找到与另一个公钥碰撞的哈希，同时那把私钥还得弱到能破。我并不是说这不可能，但这给反向找碰撞引入了 2 个变量。</p><p>说白了，人们得先建一张弱私钥的彩虹表，再拿它去对公钥哈希，然后还得指望外面恰好有人用着属于这次攻击范围的哈希。当然不是不可能，可就算 10 年后电脑快了 100 倍，这有多可行？</p><p>[编辑] 好，重读了你的话：公钥是从私钥生成的，不是独立产生的。因而问题不过是找到一把弱的公钥罢了。</p>","zhText":"你仍然得用公钥 654321 签名。你需要用一个自己知道私钥的公钥去找碰撞。\n当你认领一笔比特币地址交易时，你给出与哈希匹配的公钥，然后用那把钥签名。\nRed 的意思是：快速生成不安全的公钥很容易，你可以先找到碰撞，再去破解公钥拿到私钥。\n他指出，倘若要求公钥必须是安全的那种——即生成它的质数必然花了大量工夫——那安全性就会高于仅靠哈希函数的水平。想暴力破解的人每次尝试都得花时间生成一把钥。\n\n对，我也觉得私钥总得在哪个环节掺进来。不过这又增加了一层随机性：你得找到与另一个公钥碰撞的哈希，同时那把私钥还得弱到能破。我并不是说这不可能，但这给反向找碰撞引入了 2 个变量。\n说白了，人们得先建一张弱私钥的彩虹表，再拿它去对公钥哈希，然后还得指望外面恰好有人用着属于这次攻击范围的哈希。当然不是不可能，可就算 10 年后电脑快了 100 倍，这有多可行？\n[编辑] 好，重读了你的话：公钥是从私钥生成的，不是独立产生的。因而问题不过是找到一把弱的公钥罢了。"},{"id":1454,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"BitLex","date":"2010-07-25","ts":"2010-07-25T20:45:38Z","url":"https://bitcointalk.org/index.php?topic=461.msg5753#msg5753","zh":"<p>我在用 PHP 跑这个的时候也遇到了问题。\n到现在都没成功，wiki 示例（jsonRPCClient 试图 fopen(<a href=\"http://username:password@localhost:8332/\">http://username:password@localhost:8332/</a>)）和我的 curl 示例（用 setopt CURLOPT_HTTPAUTH, CURLAUTH_BASIC）看起来都不行。</p>","zhText":"我在用 PHP 跑这个的时候也遇到了问题。\n到现在都没成功，wiki 示例（jsonRPCClient 试图 fopen(http://username:password@localhost:8332/)）和我的 curl 示例（用 setopt CURLOPT_HTTPAUTH, CURLAUTH_BASIC）看起来都不行。"},{"id":1646,"sid":272,"sat":1,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T20:48:01Z","url":"https://bitcointalk.org/index.php?topic=571.msg5754#msg5754","zh":"<blockquote><p>这里有一篇论文声称能在 2^52 次密码运算内找到 SHA-1 碰撞。而一个最优安全的哈希需要 2^80 次运算。2^52 仍然很大，但已经进入集群和僵尸网络的射程。</p></blockquote><p>2^80 是指能用生日攻击的情况。这里用不了生日攻击，因而难度是完整的 2^160 位。不过，倘若你要攻击的是 100 万（2^20）笔交易中的任意一笔，可以做部分生日攻击：2^160/2^20 = 2^140。</p><p>比特币地址是唯一用到 160 位哈希的地方。其他一切都是 SHA-256。计算方式是：</p><p>bitcoinaddress = RIPEMD-160(SHA-256(publickey))</p><p>如果我说错了请纠正我（拜托，我乐意认错），但我认为这种情况下对 RIPEMD-160 很难实施分析型攻击。分析型攻击会指定某个输入范围或模式去尝试，大幅提高找到碰撞的概率。而在这里，你对 RIPEMD-160 的输入没有这种控制力，因为输入是 SHA-256 的输出。倘若分析型攻击帮你找到一个能产生碰撞的 RIPEMD-160 输入，你拿它怎么办？你还得让 SHA-256 输出那个值，因而你照样还得破解 SHA-256。</p><p>对暴力破解而言，RIPEMD-160(SHA-256(x)) 并不比单独的 RIPEMD-160 更强。但对分析型攻击而言，似乎必须同时分析攻击 RIPEMD-160 和 SHA-256。倘若我错了，那强度就等于 RIPEMD-160，SHA-256 不过是充当一轮密钥加强罢了。</p>","zhText":"这里有一篇论文声称能在 2^52 次密码运算内找到 SHA-1 碰撞。而一个最优安全的哈希需要 2^80 次运算。2^52 仍然很大，但已经进入集群和僵尸网络的射程。\n\n2^80 是指能用生日攻击的情况。这里用不了生日攻击，因而难度是完整的 2^160 位。不过，倘若你要攻击的是 100 万（2^20）笔交易中的任意一笔，可以做部分生日攻击：2^160/2^20 = 2^140。\n比特币地址是唯一用到 160 位哈希的地方。其他一切都是 SHA-256。计算方式是：\nbitcoinaddress = RIPEMD-160(SHA-256(publickey))\n如果我说错了请纠正我（拜托，我乐意认错），但我认为这种情况下对 RIPEMD-160 很难实施分析型攻击。分析型攻击会指定某个输入范围或模式去尝试，大幅提高找到碰撞的概率。而在这里，你对 RIPEMD-160 的输入没有这种控制力，因为输入是 SHA-256 的输出。倘若分析型攻击帮你找到一个能产生碰撞的 RIPEMD-160 输入，你拿它怎么办？你还得让 SHA-256 输出那个值，因而你照样还得破解 SHA-256。\n对暴力破解而言，RIPEMD-160(SHA-256(x)) 并不比单独的 RIPEMD-160 更强。但对分析型攻击而言，似乎必须同时分析攻击 RIPEMD-160 和 SHA-256。倘若我错了，那强度就等于 RIPEMD-160，SHA-256 不过是充当一轮密钥加强罢了。"},{"id":1457,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"The Madhatter","date":"2010-07-25","ts":"2010-07-25T21:05:43Z","url":"https://bitcointalk.org/index.php?topic=461.msg5759#msg5759","zh":"<p>嗯……我十年前在自己写的一个 webserver 里实现过 digest auth。印象中相当容易。不过当年客户端支持相当差劲。那之后进步了很多。</p><p>那兴许我们可以在 wiki 上记一个简单的 stunnel + bitcoin 配置？放在叫「远程安全使用 bitcoind」的一节里？</p><p>照例贡献我的 2 分钱。</p>","zhText":"嗯……我十年前在自己写的一个 webserver 里实现过 digest auth。印象中相当容易。不过当年客户端支持相当差劲。那之后进步了很多。\n那兴许我们可以在 wiki 上记一个简单的 stunnel + bitcoin 配置？放在叫「远程安全使用 bitcoind」的一节里？\n照例贡献我的 2 分钱。"},{"id":1414,"sid":null,"sat":0,"tid":122,"tt":"md5?","src":"Bitcointalk","author":"bitcoinex","date":"2010-07-25","ts":"2010-07-25T21:16:03Z","url":"https://bitcointalk.org/index.php?topic=458.msg5762#msg5762","zh":"<p>哈希很好，然而已然到了该给 tarball 加 gpg 签名的时候了。现在哪怕只是黑掉网站、甚至靠欺骗拿到 wiki 的控制权，放一个「最新版」客户端上去，一切就都崩塌了。</p>","zhText":"哈希很好，然而已然到了该给 tarball 加 gpg 签名的时候了。现在哪怕只是黑掉网站、甚至靠欺骗拿到 wiki 的控制权，放一个「最新版」客户端上去，一切就都崩塌了。"},{"id":1648,"sid":null,"sat":0,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Red","date":"2010-07-25","ts":"2010-07-25T21:19:11Z","url":"https://bitcointalk.org/index.php?topic=571.msg5764#msg5764","zh":"<p>因而我是这么理解的。</p><p>给定两个数 p 和 q。在 RSA 里它们应当是大质数。</p><p>然后 n = p*q</p><p>公钥是两个字段 (n, e)。e 叫公钥指数，似乎从一组常用值里选。\n私钥也是两个字段 (n, d)。d 叫私钥指数，由 e、p-1 和 q-1 推导而来。</p><p>妙处在于，把 n 分解成 p 和 q 极难。因而找到 p-1 和 q-1 也同样难。</p><p>我的猜想是：倘若 n 是任意的，而 e 取常用值之一，那就有很多不同的 p、q 组合可行。数字越不质，p 和 q 就越容易找到，p-1 和 q-1 也是。而倘若你有一大块任意数据，就能在尝试碰撞哈希时获得大量自由度。</p><p>（不过正是在这一点上，我可能完全跑偏了。真想知道，倘若有个密码学极客比我懂。）</p><p>我读到过，密钥生成算法会造出「很可能是质数」的 p 和 q，但要完全确证太费工夫。这让我相信非质数不会导致任何明显的 FAIL。不过我可能是错的。</p>","zhText":"因而我是这么理解的。\n给定两个数 p 和 q。在 RSA 里它们应当是大质数。\n然后 n = p*q\n公钥是两个字段 (n, e)。e 叫公钥指数，似乎从一组常用值里选。\n私钥也是两个字段 (n, d)。d 叫私钥指数，由 e、p-1 和 q-1 推导而来。\n妙处在于，把 n 分解成 p 和 q 极难。因而找到 p-1 和 q-1 也同样难。\n我的猜想是：倘若 n 是任意的，而 e 取常用值之一，那就有很多不同的 p、q 组合可行。数字越不质，p 和 q 就越容易找到，p-1 和 q-1 也是。而倘若你有一大块任意数据，就能在尝试碰撞哈希时获得大量自由度。\n（不过正是在这一点上，我可能完全跑偏了。真想知道，倘若有个密码学极客比我懂。）\n我读到过，密钥生成算法会造出「很可能是质数」的 p 和 q，但要完全确证太费工夫。这让我相信非质数不会导致任何明显的 FAIL。不过我可能是错的。"},{"id":1458,"sid":273,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T21:34:29Z","url":"https://bitcointalk.org/index.php?topic=461.msg5767#msg5767","zh":"<blockquote><p>我发现了一个疑似 bug：当用户名和密码的组合够长时，bitcoind 的 base64 编码器生成的授权头看起来是这样的：</p><pre><code>...\nAuthorization: Basic YWJiYWJiYWFiYmE6aGVsbG93b3JsZGhlbGxvd29ybGRoZWxsb3dvcmxkaGVsbG93\nb3JsZGhlbGxvd29ybGRoZWxsb3dvcmxk</code></pre><p>它每 64 个字符插入一个换行，这显然会破坏 Authorization 头，于是 \"bitcoin getinfo\" 这类命令失败。行为规范的客户端连服务器仍然一切正常。</p><p>解决办法是在 Base64Encode 函数末尾把 result 里的换行（也许还有 '\n'）去掉：</p><pre><code>result.erase(std::remove(result.begin(), result.end(), '\n'), result.end());\nresult.erase(std::remove(result.begin(), result.end(), '\r'), result.end());</code></pre></blockquote><p>给你 +1，密码长到能发现这个 bug。</p><p>已传到 SVN，rev 110。</p>","zhText":"我发现了一个疑似 bug：当用户名和密码的组合够长时，bitcoind 的 base64 编码器生成的授权头看起来是这样的：\n...\nAuthorization: Basic YWJiYWJiYWFiYmE6aGVsbG93b3JsZGhlbGxvd29ybGRoZWxsb3dvcmxkaGVsbG93\nb3JsZGhlbGxvd29ybGRoZWxsb3dvcmxk它每 64 个字符插入一个换行，这显然会破坏 Authorization 头，于是 \"bitcoin getinfo\" 这类命令失败。行为规范的客户端连服务器仍然一切正常。\n解决办法是在 Base64Encode 函数末尾把 result 里的换行（也许还有 '\n'）去掉：\nresult.erase(std::remove(result.begin(), result.end(), '\n'), result.end());\nresult.erase(std::remove(result.begin(), result.end(), '\r'), result.end());\n给你 +1，密码长到能发现这个 bug。\n已传到 SVN，rev 110。"},{"id":1459,"sid":null,"sat":0,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-25","ts":"2010-07-25T21:38:19Z","url":"https://bitcointalk.org/index.php?topic=461.msg5768#msg5768","zh":"<blockquote><p>我发现了一个疑似 bug：当用户名和密码的组合够长时，bitcoind 的 base64 编码器……每 64 个字符插入一个换行</p></blockquote><p>漂亮的发现！更简单的修法是在 rpc.cpp/EncodeBase64 函数里指定 BIO_FLAGS_BASE64_NO_NL：</p><pre><code>diff --git a/rpc.cpp b/rpc.cpp\nindex 72bdc50..703b757 100644\n--- a/rpc.cpp\n+++ b/rpc.cpp\n@@ -765,13 +765,14 @@ string EncodeBase64(string s)\n     BUF_MEM *bptr;\n\n     b64 = BIO_new(BIO_f_base64());\n+    BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);\n     bmem = BIO_new(BIO_s_mem());\n     b64 = BIO_push(b64, bmem);\n     BIO_write(b64, s.c_str(), s.size());\n     BIO_flush(b64);\n     BIO_get_mem_ptr(b64, &amp;bptr);\n\n-    string result(bptr->data, bptr->length-1);\n+    string result(bptr->data, bptr->length);\n     BIO_free_all(b64);\n\n     return result;</code></pre>","zhText":"我发现了一个疑似 bug：当用户名和密码的组合够长时，bitcoind 的 base64 编码器……每 64 个字符插入一个换行\n\n漂亮的发现！更简单的修法是在 rpc.cpp/EncodeBase64 函数里指定 BIO_FLAGS_BASE64_NO_NL：\ndiff --git a/rpc.cpp b/rpc.cpp\nindex 72bdc50..703b757 100644\n--- a/rpc.cpp\n+++ b/rpc.cpp\n@@ -765,13 +765,14 @@ string EncodeBase64(string s)\n BUF_MEM *bptr;\n\n b64 = BIO_new(BIO_f_base64());\n+ BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);\n bmem = BIO_new(BIO_s_mem());\n b64 = BIO_push(b64, bmem);\n BIO_write(b64, s.c_str(), s.size());\n BIO_flush(b64);\n BIO_get_mem_ptr(b64, &bptr);\n\n- string result(bptr->data, bptr->length-1);\n+ string result(bptr->data, bptr->length);\n BIO_free_all(b64);\n\n return result;"},{"id":1460,"sid":274,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T21:44:16Z","url":"https://bitcointalk.org/index.php?topic=461.msg5769#msg5769","zh":"<blockquote><p>我在用 PHP 跑这个的时候也遇到了问题。\n到现在都没成功，wiki 示例（jsonRPCClient 试图 fopen(<a href=\"http://username:password@localhost:8332/\">http://username:password@localhost:8332/</a>)）和我的 curl 示例（用 setopt CURLOPT_HTTPAUTH, CURLAUTH_BASIC）看起来都不行。</p></blockquote><p>这就怪了，不是刚有人说这样应该能行吗？（他用的什么库？）查出问题在哪就发上来。</p><p>我希望它不会跟所有 PHP 用户都这么较劲。</p><p>看来 Fortran 场景已经提前上演了。</p>","zhText":"我在用 PHP 跑这个的时候也遇到了问题。\n到现在都没成功，wiki 示例（jsonRPCClient 试图 fopen(http://username:password@localhost:8332/)）和我的 curl 示例（用 setopt CURLOPT_HTTPAUTH, CURLAUTH_BASIC）看起来都不行。\n\n这就怪了，不是刚有人说这样应该能行吗？（他用的什么库？）查出问题在哪就发上来。\n我希望它不会跟所有 PHP 用户都这么较劲。\n看来 Fortran 场景已经提前上演了。"},{"id":1461,"sid":275,"sat":1,"tid":123,"tt":"JSON-RPC password","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T21:51:31Z","url":"https://bitcointalk.org/index.php?topic=461.msg5771#msg5771","zh":"<blockquote><p>漂亮的发现！更简单的修法是在 rpc.cpp/EncodeBase64 函数里指定 BIO_FLAGS_BASE64_NO_NL：</p></blockquote><p>SVN rev 111</p>","zhText":"漂亮的发现！更简单的修法是在 rpc.cpp/EncodeBase64 函数里指定 BIO_FLAGS_BASE64_NO_NL：\n\nSVN rev 111"},{"id":1415,"sid":276,"sat":1,"tid":122,"tt":"md5?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T22:06:57Z","url":"https://bitcointalk.org/index.php?topic=458.msg5772#msg5772","zh":"<p>供以后参考，这是我的公钥。与 2008 年 bitcoin.org 网站第一次上线时放的同一把。现在就存一份吧，以备日后之需。</p><p><a href=\"http://www.bitcoin.org/Satoshi_Nakamoto.asc\">http://www.bitcoin.org/Satoshi_Nakamoto.asc</a></p>","zhText":"供以后参考，这是我的公钥。与 2008 年 bitcoin.org 网站第一次上线时放的同一把。现在就存一份吧，以备日后之需。\nhttp://www.bitcoin.org/Satoshi_Nakamoto.asc"},{"id":1649,"sid":277,"sat":1,"tid":134,"tt":"Stealing Coins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-25","ts":"2010-07-25T22:27:36Z","url":"https://bitcointalk.org/index.php?topic=571.msg5778#msg5778","zh":"<p>抱歉，其实是 ECDSA（椭圆曲线数字签名算法），不是 RSA。我不该说「质数」。ECDSA 生成密钥对花不了多少时间。</p>","zhText":"抱歉，其实是 ECDSA（椭圆曲线数字签名算法），不是 RSA。我不该说「质数」。ECDSA 生成密钥对花不了多少时间。"},{"id":1560,"sid":null,"sat":0,"tid":125,"tt":"Bitcoin x64 for Windows","src":"Bitcointalk","author":"Olipro","date":"2010-07-26","ts":"2010-07-26T06:39:17Z","url":"https://bitcointalk.org/index.php?topic=501.msg5815#msg5815","zh":"<p>好，接下来是绝对不可思议的性能。</p><p>SHA 上下文的缓存部分要归功于 tcatm——性能提升华丽至极。此外，Intel 编译器在这里真正大放异彩，它的并行化能力比 Visual Studio 带来巨大的性能提升。</p><p>性能：4 核 4700khash/s，我想这本身就是最好的说明。</p><p>我把 VS 和 Intel 两个构建都放上了，然而真的没什么好比的，Intel 构建把 VS 按在地上摩擦。</p><p><a href=\"http://www.4shared.com/file/VpSQm9oo/Bitcoin_SHA_state_caching_opt.html\">在这里获取 SHA 状态缓存的 Bitcoin</a></p>","zhText":"好，接下来是绝对不可思议的性能。\nSHA 上下文的缓存部分要归功于 tcatm——性能提升华丽至极。此外，Intel 编译器在这里真正大放异彩，它的并行化能力比 Visual Studio 带来巨大的性能提升。\n性能：4 核 4700khash/s，我想这本身就是最好的说明。\n我把 VS 和 Intel 两个构建都放上了，然而真的没什么好比的，Intel 构建把 VS 按在地上摩擦。\n在这里获取 SHA 状态缓存的 Bitcoin"},{"id":1655,"sid":null,"sat":0,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"Olipro","date":"2010-07-26","ts":"2010-07-26T13:04:41Z","url":"https://bitcointalk.org/index.php?topic=572.msg5851#msg5851","zh":"<blockquote><p>用不着这么有敌意。我确实搭好了编译环境，但没有你的源代码，我完全无法编译你的修改。这对我来说是个大大的红旗：你显然为自己的构建修改过源代码，却不愿意提供这些修改供同行评审。我认为这违背了开源精神。只发布修改过的二进制，既无助于软件进步，还制造了对个人提供二进制的不必要依赖。</p></blockquote><p>Crypto++ 5.6.0：<a href=\"http://www.cryptopp.com/\">http://www.cryptopp.com/</a>\nCached SHA256：<a href=\"http://pastebin.com/rJAYZJ32\">http://pastebin.com/rJAYZJ32</a>（虽然我很确定这在别处也公开发表过，我是从 IRC 被链接过去的）</p>","zhText":"用不着这么有敌意。我确实搭好了编译环境，但没有你的源代码，我完全无法编译你的修改。这对我来说是个大大的红旗：你显然为自己的构建修改过源代码，却不愿意提供这些修改供同行评审。我认为这违背了开源精神。只发布修改过的二进制，既无助于软件进步，还制造了对个人提供二进制的不必要依赖。\n\nCrypto++ 5.6.0：http://www.cryptopp.com/\nCached SHA256：http://pastebin.com/rJAYZJ32（虽然我很确定这在别处也公开发表过，我是从 IRC 被链接过去的）"},{"id":1148,"sid":null,"sat":0,"tid":99,"tt":"wiki registration email?","src":"Bitcointalk","author":"theymos","date":"2010-07-26","ts":"2010-07-26T15:30:54Z","url":"https://bitcointalk.org/index.php?topic=338.msg5884#msg5884","zh":"<blockquote><p>后续进展：换了一个完全不同的 ISP（我特意新建了一个「用完即扔」的 e-mail 账户，好一探究竟）之后，注册得以完成。不过，bitcoins.org 仍然在某种 e-mail 黑洞名单上，或者至少托管注册邮件服务器的那个 ISP 位列名单之上。</p></blockquote><p>看来 bitcoin.org 被 <a href=\"http://www.spamhaus.org/pbl/query/PBL340779\">列入</a> 了 PBL。</p>","zhText":"后续进展：换了一个完全不同的 ISP（我特意新建了一个「用完即扔」的 e-mail 账户，好一探究竟）之后，注册得以完成。不过，bitcoins.org 仍然在某种 e-mail 黑洞名单上，或者至少托管注册邮件服务器的那个 ISP 位列名单之上。\n\n看来 bitcoin.org 被 列入 了 PBL。"},{"id":1659,"sid":null,"sat":0,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"Olipro","date":"2010-07-26","ts":"2010-07-26T15:42:01Z","url":"https://bitcointalk.org/index.php?topic=572.msg5886#msg5886","zh":"<blockquote><p>还有那些服务器卡在 32 位操作系统上的人。:-D\nQuad core <a href=\"mailto:Xeon@1.6GHz\">Xeon@1.6GHz</a>\n原版：1100kh/s\n全优化：2600kh/s</p><p>谢谢！</p></blockquote><p>BitCoins 永远欢迎，地址在我签名里</p>","zhText":"还有那些服务器卡在 32 位操作系统上的人。:-D\nQuad core Xeon@1.6GHz\n原版：1100kh/s\n全优化：2600kh/s\n谢谢！\n\nBitCoins 永远欢迎，地址在我签名里"},{"id":1667,"sid":278,"sat":1,"tid":136,"tt":"bitcoind without wxWidgets","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-26","ts":"2010-07-26T17:23:33Z","url":"https://bitcointalk.org/index.php?topic=576.msg5904#msg5904","zh":"<p>我替换掉了 bitcoind 里最后几个 wxBase 依赖。</p><p>bitcoind 现在在 SVN rev 112 里不依赖 wxWidgets 或 wxBase 就能编译。</p><p>main(int argc, char* argv[]) 加进了 init.cpp。CMyApp 和启动文件夹的东西挪到了 ui.cpp。bitcoind 不链接 ui.cpp 和 uibase.cpp。</p><p>makefile 用 -DGUI 控制是否使用 GUI。</p><p>我测试编译了 MinGW、VC 和 Ubuntu。不知道有没有弄坏 Mac OSX 构建，需要有人检查一下。</p>","zhText":"我替换掉了 bitcoind 里最后几个 wxBase 依赖。\nbitcoind 现在在 SVN rev 112 里不依赖 wxWidgets 或 wxBase 就能编译。\nmain(int argc, char* argv[]) 加进了 init.cpp。CMyApp 和启动文件夹的东西挪到了 ui.cpp。bitcoind 不链接 ui.cpp 和 uibase.cpp。\nmakefile 用 -DGUI 控制是否使用 GUI。\n我测试编译了 MinGW、VC 和 Ubuntu。不知道有没有弄坏 Mac OSX 构建，需要有人检查一下。"},{"id":1582,"sid":null,"sat":0,"tid":125,"tt":"Bitcoin x64 for Windows","src":"Bitcointalk","author":"Olipro","date":"2010-07-26","ts":"2010-07-26T18:11:26Z","url":"https://bitcointalk.org/index.php?topic=501.msg5912#msg5912","zh":"<blockquote><p>我想过把桌面机上的 BitCoin 降到 7 个活跃核心，好留一个给日常轻量 UI 使用。</p></blockquote><p>BitCoin 线程会被自动分配低优先级；只要有其他进程想用 CPU，它就会自动让出 CPU 时间</p>","zhText":"我想过把桌面机上的 BitCoin 降到 7 个活跃核心，好留一个给日常轻量 UI 使用。\n\nBitCoin 线程会被自动分配低优先级；只要有其他进程想用 CPU，它就会自动让出 CPU 时间"},{"id":1583,"sid":279,"sat":1,"tid":125,"tt":"Bitcoin x64 for Windows","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-26","ts":"2010-07-26T18:41:31Z","url":"https://bitcointalk.org/index.php?topic=501.msg5920#msg5920","zh":"<blockquote><p>SHA 上下文的缓存部分要归功于 tcatm——性能提升华丽至极。此外，Intel 编译器在这里真正大放异彩，它的并行化能力比 Visual Studio 带来巨大的性能提升。</p><p>性能：4 核 4700khash/s，我想这本身就是最好的说明。</p><p>我把 VS 和 Intel 两个构建都放上了，然而真的没什么好比的，Intel 构建把 VS 按在地上摩擦。</p></blockquote><p>这还是从 Crypto++ 出发的吗？把它弄进主源代码吧。</p>","zhText":"SHA 上下文的缓存部分要归功于 tcatm——性能提升华丽至极。此外，Intel 编译器在这里真正大放异彩，它的并行化能力比 Visual Studio 带来巨大的性能提升。\n性能：4 核 4700khash/s，我想这本身就是最好的说明。\n我把 VS 和 Intel 两个构建都放上了，然而真的没什么好比的，Intel 构建把 VS 按在地上摩擦。\n\n这还是从 Crypto++ 出发的吗？把它弄进主源代码吧。"},{"id":1660,"sid":280,"sat":1,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-27","ts":"2010-07-27T01:29:42Z","url":"https://bitcointalk.org/index.php?topic=572.msg5978#msg5978","zh":"<blockquote><p>Crypto++ 5.6.0：<a href=\"http://www.cryptopp.com/\">http://www.cryptopp.com/</a>\nCached SHA256：<a href=\"http://pastebin.com/rJAYZJ32\">http://pastebin.com/rJAYZJ32</a>（虽然我很确定这在别处也公开发表过，我是从 IRC 被链接过去的）</p></blockquote><p>我把缓存 SHA256 状态的思路加进了 SVN，rev 113。提速约 70%。根据你在 x64 主题里的帖子，功劳记在 tcatm 名下。</p><p>我能用 MinGW 编译 Crypto++ 5.6.0 的 ASM SHA 代码，但一运行就崩溃。它说自己是给 MASM（微软的汇编器）的，他们给的示例命令行看起来像 Visual C++。是不是只能在 MSVC 和 Intel 编译器下用？</p>","zhText":"Crypto++ 5.6.0：http://www.cryptopp.com/\nCached SHA256：http://pastebin.com/rJAYZJ32（虽然我很确定这在别处也公开发表过，我是从 IRC 被链接过去的）\n\n我把缓存 SHA256 状态的思路加进了 SVN，rev 113。提速约 70%。根据你在 x64 主题里的帖子，功劳记在 tcatm 名下。\n我能用 MinGW 编译 Crypto++ 5.6.0 的 ASM SHA 代码，但一运行就崩溃。它说自己是给 MASM（微软的汇编器）的，他们给的示例命令行看起来像 Visual C++。是不是只能在 MSVC 和 Intel 编译器下用？"},{"id":246,"sid":281,"sat":1,"tid":22,"tt":"Proof-of-work difficulty increasing","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-27","ts":"2010-07-27T03:04:58Z","url":"https://bitcointalk.org/index.php?topic=43.msg5990#msg5990","zh":"<p>新难度系数 244.213223092\n+35%</p><p>我已然更新了首帖。</p><p>日期，难度系数，变化百分比\n2009          1.00\n30/12/2009    1.18   +18%\n11/01/2010    1.31   +11%\n25/01/2010    1.34    +2%\n04/02/2010    1.82   +36%\n14/02/2010    2.53   +39%\n24/02/2010    3.78   +49%\n08/03/2010    4.53   +20%\n21/03/2010    4.57    +9%\n01/04/2010    6.09   +33%\n12/04/2010    7.82   +28%\n21/04/2010   11.46   +47%\n04/05/2010   12.85   +12%\n19/05/2010   11.85    -8%\n29/05/2010   16.62   +40%\n11/06/2010   17.38    +5%\n24/06/2010   19.41   +12%\n06/07/2010   23.50   +21%\n13/07/2010   45.38   +93%\n16/07/2010  181.54  +300%\n27/07/2010  244.21   +35%</p>","zhText":"新难度系数 244.213223092\n+35%\n我已然更新了首帖。\n日期，难度系数，变化百分比\n2009 1.00\n30/12/2009 1.18 +18%\n11/01/2010 1.31 +11%\n25/01/2010 1.34 +2%\n04/02/2010 1.82 +36%\n14/02/2010 2.53 +39%\n24/02/2010 3.78 +49%\n08/03/2010 4.53 +20%\n21/03/2010 4.57 +9%\n01/04/2010 6.09 +33%\n12/04/2010 7.82 +28%\n21/04/2010 11.46 +47%\n04/05/2010 12.85 +12%\n19/05/2010 11.85 -8%\n29/05/2010 16.62 +40%\n11/06/2010 17.38 +5%\n24/06/2010 19.41 +12%\n06/07/2010 23.50 +21%\n13/07/2010 45.38 +93%\n16/07/2010 181.54 +300%\n27/07/2010 244.21 +35%"},{"id":1663,"sid":null,"sat":0,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"BlackEye","date":"2010-07-27","ts":"2010-07-27T12:43:35Z","url":"https://bitcointalk.org/index.php?topic=572.msg6030#msg6030","zh":"<p>你需要把要求对齐输入的汇编指令改成非对齐的——<a href=\"http://bitcointalk.org/index.php?topic=453.msg5774#msg5774\">http://bitcointalk.org/index.php?topic=453.msg5774#msg5774</a>，或者让被哈希的块对齐。还没试过，但这段汇编代码加上状态缓存修改应该能快到飞起。</p>","zhText":"你需要把要求对齐输入的汇编指令改成非对齐的——http://bitcointalk.org/index.php?topic=453.msg5774#msg5774，或者让被哈希的块对齐。还没试过，但这段汇编代码加上状态缓存修改应该能快到飞起。"},{"id":1664,"sid":282,"sat":1,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-27","ts":"2010-07-27T18:27:30Z","url":"https://bitcointalk.org/index.php?topic=572.msg6069#msg6069","zh":"<blockquote><p>我成功把 Crypto++ 5.6.0 的 SHA256 功能集成进了 Bitcoin。这是迄今最快的 SHA256，用的是 SSE2 汇编代码。由于 Bitcoin 传给块哈希函数的是非对齐数据，我得把 MOVDQA 指令换成 MOVDQU。</p><p>我认为用 Crypto++ 5.6.0 的 SHA256 功能是当下的正路。</p></blockquote><p>我把 Crypto++ 5.6.0 库的一个子集加进了 SVN。裁剪到只剩 SHA 和 11 个通用依赖文件。除了 SHA 不应该有其他密码学内容。</p><p>我把数据字段对齐了，就成功了。ASM SHA-256 快了约 48%。合计提速约为 0.3.3 版本的 2.5 倍。</p><p>我猜它用的是 SSE2。它会在编译时根据编译器环境自动设置构建配置。</p><p>看起来它在运行时有一些 SSE2 检测，但很难判断不可用时是否真的会回退。我希望发布构建带 SSE2。SSE2 从第一代 Pentium 4 就有了。Pentium 3 或更老的机器慢成那样，用它们生成纯属浪费电费。</p><p>这是 SVN rev 114。</p>","zhText":"我成功把 Crypto++ 5.6.0 的 SHA256 功能集成进了 Bitcoin。这是迄今最快的 SHA256，用的是 SSE2 汇编代码。由于 Bitcoin 传给块哈希函数的是非对齐数据，我得把 MOVDQA 指令换成 MOVDQU。\n我认为用 Crypto++ 5.6.0 的 SHA256 功能是当下的正路。\n\n我把 Crypto++ 5.6.0 库的一个子集加进了 SVN。裁剪到只剩 SHA 和 11 个通用依赖文件。除了 SHA 不应该有其他密码学内容。\n我把数据字段对齐了，就成功了。ASM SHA-256 快了约 48%。合计提速约为 0.3.3 版本的 2.5 倍。\n我猜它用的是 SSE2。它会在编译时根据编译器环境自动设置构建配置。\n看起来它在运行时有一些 SSE2 检测，但很难判断不可用时是否真的会回退。我希望发布构建带 SSE2。SSE2 从第一代 Pentium 4 就有了。Pentium 3 或更老的机器慢成那样，用它们生成纯属浪费电费。\n这是 SVN rev 114。"},{"id":1665,"sid":null,"sat":0,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"knightmb","date":"2010-07-27","ts":"2010-07-27T18:36:03Z","url":"https://bitcointalk.org/index.php?topic=572.msg6071#msg6071","zh":"<blockquote><p>……\n我猜它用的是 SSE2。它会在编译时根据编译器环境自动设置构建配置。</p><p>看起来它在运行时有一些 SSE2 检测，但很难判断不可用时是否真的会回退。我确实希望发布构建带 SSE2。SSE2 从第一代 Pentium 4 就有了。Pentium 3 或更老的机器慢成那样，用它们生成纯属浪费电费。</p></blockquote><p>我有几台不支持 SSE2 的老机器（跑 windows 客户端和 linux 客户端）可以测试。主要是之前试这里的一些实验构建时，程序一跑就崩，但我很乐意测试未来的官方构建，看看「检测 SSE2」那部分好使，还是程序直接玩完。</p>","zhText":"……\n我猜它用的是 SSE2。它会在编译时根据编译器环境自动设置构建配置。\n看起来它在运行时有一些 SSE2 检测，但很难判断不可用时是否真的会回退。我确实希望发布构建带 SSE2。SSE2 从第一代 Pentium 4 就有了。Pentium 3 或更老的机器慢成那样，用它们生成纯属浪费电费。\n\n我有几台不支持 SSE2 的老机器（跑 windows 客户端和 linux 客户端）可以测试。主要是之前试这里的一些实验构建时，程序一跑就崩，但我很乐意测试未来的官方构建，看看「检测 SSE2」那部分好使，还是程序直接玩完。"},{"id":1666,"sid":283,"sat":1,"tid":135,"tt":"Bitcoin x86 for Windows","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-27","ts":"2010-07-27T19:47:42Z","url":"https://bitcointalk.org/index.php?topic=572.msg6083#msg6083","zh":"<p>好，谢谢。我还想知道只要不开 Generate，它是不是就能正常跑。照理说只要不实际执行任何 SSE2 指令，它应该还是能加载的。至少 Pentium 3 应该能在不生成的情况下跑它。</p>","zhText":"好，谢谢。我还想知道只要不开 Generate，它是不是就能正常跑。照理说只要不实际执行任何 SSE2 指令，它应该还是能加载的。至少 Pentium 3 应该能在不生成的情况下跑它。"},{"id":1683,"sid":null,"sat":0,"tid":138,"tt":"Difficulty","src":"Bitcointalk","author":"mizerydearia","date":"2010-07-28","ts":"2010-07-28T01:44:28Z","url":"https://bitcointalk.org/index.php?topic=587.msg6130#msg6130","zh":"<p>看起来区块 70718 的时间戳落在了未来两小时，紧接着区块 70719 又（相对前一个区块的未来日期）落在了过去约两小时。</p><pre><code>-7017 seconds to find block 70719\n  8153 seconds to find block 70718\n    49 seconds to find block 70717\n   524 seconds to find block 70716</code></pre><pre><code>block timestamp\n70715 1280275621\n70716 1280276145\n70717 1280276194\n70718 1280284347\n70719 1280277330</code></pre><p>这似乎没什么大影响，只是时不时让统计结果有点失真（某个区块被标成来自未来或过去）。但是，倘若新一组 2016 个区块中的第一个或第二个（无论哪个触发新难度的确立）被生成出 2 周以上之前或之后的时间戳，会发生什么？倘若在过去，我按 main.cpp 里 GetNextWorkRequired 函数的代码推断，可接受的最小间隔是 3.5 天。倘若在未来，我按代码推断可接受的最小间隔是 56 天。</p>","zhText":"看起来区块 70718 的时间戳落在了未来两小时，紧接着区块 70719 又（相对前一个区块的未来日期）落在了过去约两小时。\n-7017 seconds to find block 70719\n 8153 seconds to find block 70718\n 49 seconds to find block 70717\n 524 seconds to find block 70716block timestamp\n70715 1280275621\n70716 1280276145\n70717 1280276194\n70718 1280284347\n70719 1280277330这似乎没什么大影响，只是时不时让统计结果有点失真（某个区块被标成来自未来或过去）。但是，倘若新一组 2016 个区块中的第一个或第二个（无论哪个触发新难度的确立）被生成出 2 周以上之前或之后的时间戳，会发生什么？倘若在过去，我按 main.cpp 里 GetNextWorkRequired 函数的代码推断，可接受的最小间隔是 3.5 天。倘若在未来，我按代码推断可接受的最小间隔是 56 天。"},{"id":1693,"sid":null,"sat":0,"tid":140,"tt":"Having problems specifing -datadir","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-28","ts":"2010-07-28T13:40:57Z","url":"https://bitcointalk.org/index.php?topic=601.msg6190#msg6190","zh":"<p>指定完整路径的话能行吗？譬如 -datadir=/home/psyvenrix/datadir2 ？</p>","zhText":"指定完整路径的话能行吗？譬如 -datadir=/home/psyvenrix/datadir2 ？"},{"id":1698,"sid":null,"sat":0,"tid":141,"tt":"Build error SVN r115 on my Mac: workaround","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-28","ts":"2010-07-28T15:18:25Z","url":"https://bitcointalk.org/index.php?topic=604.msg6206#msg6206","zh":"<p>我得到：</p><pre><code>/var/folders/n7/n7Do3Krz2RWPeE+1YxvhUU+++TM/-Tmp-//cc8PgHsQ.s:879:suffix or operands invalid for `call'</code></pre><p>……在我的 Mac（gcc 4.2.1）上编译 cryptopp/sha.cpp（最新 SVN 源码）。</p><p>我在 makefile 里加了 -DCRYPTOPP_DISABLE_ASM 修好了；兴许哪个在 Mac 上编 C++ 更有经验的人能想出更好的办法。</p>","zhText":"我得到：\n/var/folders/n7/n7Do3Krz2RWPeE+1YxvhUU+++TM/-Tmp-//cc8PgHsQ.s:879:suffix or operands invalid for `call'……在我的 Mac（gcc 4.2.1）上编译 cryptopp/sha.cpp（最新 SVN 源码）。\n我在 makefile 里加了 -DCRYPTOPP_DISABLE_ASM 修好了；兴许哪个在 Mac 上编 C++ 更有经验的人能想出更好的办法。"},{"id":1694,"sid":284,"sat":1,"tid":140,"tt":"Having problems specifing -datadir","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-28","ts":"2010-07-28T20:58:26Z","url":"https://bitcointalk.org/index.php?topic=601.msg6268#msg6268","zh":"<p>我复现了这个问题。数据库不喜欢相对路径。</p><p>\"bitcoind -datadir=./subdir getinfo\" 对着运行中的守护进程是好使的，但以 \"bitcoind -datadir=./subdir\" 启动守护进程就抛那个异常。</p><p>我看应该在传给数据库之前把路径解析成完整路径。</p><p>看来你是第一个用相对路径 -datadir 的人。</p>","zhText":"我复现了这个问题。数据库不喜欢相对路径。\n\"bitcoind -datadir=./subdir getinfo\" 对着运行中的守护进程是好使的，但以 \"bitcoind -datadir=./subdir\" 启动守护进程就抛那个异常。\n我看应该在传给数据库之前把路径解析成完整路径。\n看来你是第一个用相对路径 -datadir 的人。"},{"id":1602,"sid":null,"sat":0,"tid":127,"tt":"Scalability and transaction rate","src":"Bitcointalk","author":"bytemaster","date":"2010-07-28","ts":"2010-07-28T20:59:42Z","url":"https://bitcointalk.org/index.php?topic=532.msg6269#msg6269","zh":"<p>我确信，分发并「最终确认」一笔交易所需的带宽、磁盘空间和计算时间，对小额支付来说会贵得离谱。想一想，当前银行业都拿不出一个像样的小额支付方案——不要求先存入一笔可观的金额、攒够一笔可观的数额才允许取现的那种方案都不存在。</p><p>再说，10 分钟才确认付款有效太慢了。它得像今天刷信用卡一样快。</p><p>因而我们需要 bit-bank（比特银行），让成员之间和同业银行之间即时转账。谁都能开一家 bit-bank，但这个体系必然要在某种程度的信任上运行。进出银行和点对点的转账仍然可行，然而成本更高。于是，bit-bank 可以靠比全网更便宜更快的转账赚钱，代价是额外的风险：你得信任银行。银行要赚钱，就必须维护信任。</p>","zhText":"我确信，分发并「最终确认」一笔交易所需的带宽、磁盘空间和计算时间，对小额支付来说会贵得离谱。想一想，当前银行业都拿不出一个像样的小额支付方案——不要求先存入一笔可观的金额、攒够一笔可观的数额才允许取现的那种方案都不存在。\n再说，10 分钟才确认付款有效太慢了。它得像今天刷信用卡一样快。\n因而我们需要 bit-bank（比特银行），让成员之间和同业银行之间即时转账。谁都能开一家 bit-bank，但这个体系必然要在某种程度的信任上运行。进出银行和点对点的转账仍然可行，然而成本更高。于是，bit-bank 可以靠比全网更便宜更快的转账赚钱，代价是额外的风险：你得信任银行。银行要赚钱，就必须维护信任。"},{"id":1699,"sid":285,"sat":1,"tid":141,"tt":"Build error SVN r115 on my Mac: workaround","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-28","ts":"2010-07-28T21:23:23Z","url":"https://bitcointalk.org/index.php?topic=604.msg6273#msg6273","zh":"<p>难道我在 OSX 构建里就弄坏了这一处？！只改这一处之后真的能跑？</p><p>makefile.vc 我也不得不这么干。编译通过了，但 SHA-256 不正确；每次都返回同一个错误的哈希。</p><p>我们先禁用它，等有人想出修法再启用。光是 midstate 优化就还有 1.7 倍的速度。</p><p>Crypto++ 的 ASM SHA-256 在 Linux 和 Windows（MinGW）的 GCC 下正常。</p><p>我把这个 makefile.osx 改动传到了 SVN。（编译能过的话告诉我一声）</p>","zhText":"难道我在 OSX 构建里就弄坏了这一处？！只改这一处之后真的能跑？\nmakefile.vc 我也不得不这么干。编译通过了，但 SHA-256 不正确；每次都返回同一个错误的哈希。\n我们先禁用它，等有人想出修法再启用。光是 midstate 优化就还有 1.7 倍的速度。\nCrypto++ 的 ASM SHA-256 在 Linux 和 Windows（MinGW）的 GCC 下正常。\n我把这个 makefile.osx 改动传到了 SVN。（编译能过的话告诉我一声）"},{"id":1684,"sid":286,"sat":1,"tid":138,"tt":"Difficulty","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T01:16:23Z","url":"https://bitcointalk.org/index.php?topic=587.msg6301#msg6301","zh":"<p>你看错代码了。适用的是这段：</p><pre><code>bool CBlock::CheckBlock() const\n{\n...\n    // Check timestamp\n    if (nTime > GetAdjustedTime() + 2 * 60 * 60)\n        return error(\"CheckBlock() : block timestamp too far in the future\");\n...\n\nbool CBlock::AcceptBlock()\n{\n   ...\n    // Check timestamp against prev\n    if (nTime &lt;= pindexPrev->GetMedianTimePast())\n        return error(\"AcceptBlock() : block's timestamp is too early\");</code></pre><p>时间戳最多允许到未来 2 小时。它可以早于前一个区块，但必须大于最近 11 个区块的中位数。这样做的原因是：倘若前一个区块的时间戳超前太多，就像刚才发生的那样，时间可以在下一个区块被纠正回来。</p>","zhText":"你看错代码了。适用的是这段：\nbool CBlock::CheckBlock() const\n{\n...\n // Check timestamp\n if (nTime > GetAdjustedTime() + 2 * 60 * 60)\n return error(\"CheckBlock() : block timestamp too far in the future\");\n...\n\nbool CBlock::AcceptBlock()\n{\n ...\n // Check timestamp against prev\n if (nTime <= pindexPrev->GetMedianTimePast())\n return error(\"AcceptBlock() : block's timestamp is too early\");时间戳最多允许到未来 2 小时。它可以早于前一个区块，但必须大于最近 11 个区块的中位数。这样做的原因是：倘若前一个区块的时间戳超前太多，就像刚才发生的那样，时间可以在下一个区块被纠正回来。"},{"id":1603,"sid":287,"sat":1,"tid":127,"tt":"Scalability and transaction rate","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T02:00:38Z","url":"https://bitcointalk.org/index.php?topic=532.msg6306#msg6306","zh":"<p>每个用户都是一个网络节点的现状，并非大规模阶段的预期形态。那就像每个 Usenet 用户都跑自己的 NNTP 服务器。这个设计支持让用户就只做用户。跑一个节点的负担越重，节点就会越少。那少数节点会是大型服务器农场。其余的是只做交易、不生成硬币的客户端节点。</p><blockquote><p>再说，10 分钟才确认付款有效太慢了。它得像今天刷信用卡一样快。</p></blockquote><p>看那个零食机主题，我在里面概述了支付处理器如何在 10 秒或更短时间内把支付验证得足够好，实际上相当好（欺诈率远低于信用卡）。倘若你不信，或者没看懂，抱歉，我没时间说服你。\n<a href=\"http://bitcointalk.org/index.php?topic=423.msg3819#msg3819\">http://bitcointalk.org/index.php?topic=423.msg3819#msg3819</a></p>","zhText":"每个用户都是一个网络节点的现状，并非大规模阶段的预期形态。那就像每个 Usenet 用户都跑自己的 NNTP 服务器。这个设计支持让用户就只做用户。跑一个节点的负担越重，节点就会越少。那少数节点会是大型服务器农场。其余的是只做交易、不生成硬币的客户端节点。\n再说，10 分钟才确认付款有效太慢了。它得像今天刷信用卡一样快。\n\n看那个零食机主题，我在里面概述了支付处理器如何在 10 秒或更短时间内把支付验证得足够好，实际上相当好（欺诈率远低于信用卡）。倘若你不信，或者没看懂，抱歉，我没时间说服你。\nhttp://bitcointalk.org/index.php?topic=423.msg3819#msg3819"},{"id":1149,"sid":288,"sat":1,"tid":99,"tt":"wiki registration email?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T02:10:46Z","url":"https://bitcointalk.org/index.php?topic=338.msg6307#msg6307","zh":"<p>什么鬼？我们怎么会上名单？据我所知，唯一的 e-mail 就是你让论坛发通知，还有我猜的 wiki 注册。我倾向于把论坛通知邮件关掉，我并不知道我们要它做什么。</p>","zhText":"什么鬼？我们怎么会上名单？据我所知，唯一的 e-mail 就是你让论坛发通知，还有我猜的 wiki 注册。我倾向于把论坛通知邮件关掉，我并不知道我们要它做什么。"},{"id":1715,"sid":null,"sat":0,"tid":143,"tt":"Linux distribution download","src":"Bitcointalk","author":"Odin","date":"2010-07-29","ts":"2010-07-29T03:44:10Z","url":"https://bitcointalk.org/index.php?topic=612.msg6317#msg6317","zh":"<p>抱歉回复自己的帖子。</p><p>一个可行的办法是在 OpenSUSE OBS 平台上建个项目 <a href=\"http://wiki.meego.com/Build_Infrastructure\">http://wiki.meego.com/Build_Infrastructure</a> 。</p><p>这个平台是个任何人都能用的自动构建器（注册自己的账户和 home 区就行）。</p><p>你上传项目和 *.spec（构建描述文件），它就会以所有主流 Linux 发行版（OpenSUSE、CentOS/RHEL、Fedora、Ubuntu 等）的格式构建你的发行包。你无需自己分别维护，它替你做。</p><p>产物是 *.deb 或 *.rpm 或你的平台用的其他格式。</p>","zhText":"抱歉回复自己的帖子。\n一个可行的办法是在 OpenSUSE OBS 平台上建个项目 http://wiki.meego.com/Build_Infrastructure 。\n这个平台是个任何人都能用的自动构建器（注册自己的账户和 home 区就行）。\n你上传项目和 *.spec（构建描述文件），它就会以所有主流 Linux 发行版（OpenSUSE、CentOS/RHEL、Fedora、Ubuntu 等）的格式构建你的发行包。你无需自己分别维护，它替你做。\n产物是 *.deb 或 *.rpm 或你的平台用的其他格式。"},{"id":1730,"sid":null,"sat":0,"tid":144,"tt":"Transaction disappeared in the void...","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-07-29","ts":"2010-07-29T16:28:35Z","url":"https://bitcointalk.org/index.php?topic=615.msg6418#msg6418","zh":"<blockquote><p>我约 2 小时前做了一笔交易，一直停在 0/unconfirmed，收款方既没有到账显示，连未确认行都没有……币像是消失在虚空里……\n我该等吗？这只是一笔要花特别久的交易？</p></blockquote><p>你还在下载区块链吗？倘若你的区块链里还没有全部 70,000 多个区块，你的交易在你追上进度之前不会显示为已确认。</p>","zhText":"我约 2 小时前做了一笔交易，一直停在 0/unconfirmed，收款方既没有到账显示，连未确认行都没有……币像是消失在虚空里……\n我该等吗？这只是一笔要花特别久的交易？\n\n你还在下载区块链吗？倘若你的区块链里还没有全部 70,000 多个区块，你的交易在你追上进度之前不会显示为已确认。"},{"id":1732,"sid":289,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T19:13:06Z","url":"https://bitcointalk.org/index.php?topic=626.msg6451#msg6451","zh":"<p>请尽快升级到 0.3.6！我们修复了一个实现 bug：此前伪造交易有可能被显示为已接受。在你升级到 0.3.6 版本之前，不要接受 Bitcoin 交易作为付款！</p><p>倘若无法立刻升级到 0.3.6，最好先关掉你的 Bitcoin 节点，直到升级完成。</p><p>0.3.6 还有更快的哈希：\n- midstate 缓存优化，归功 tcatm\n- Crypto++ ASM SHA-256，归功 BlackEye\n总生成速度提升 2.4 倍。</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.6/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.6/</a></p><p>Windows 和 Linux 用户：倘若你装的是 0.3.5，仍然需要升级到 0.3.6。</p>","zhText":"请尽快升级到 0.3.6！我们修复了一个实现 bug：此前伪造交易有可能被显示为已接受。在你升级到 0.3.6 版本之前，不要接受 Bitcoin 交易作为付款！\n倘若无法立刻升级到 0.3.6，最好先关掉你的 Bitcoin 节点，直到升级完成。\n0.3.6 还有更快的哈希：\n- midstate 缓存优化，归功 tcatm\n- Crypto++ ASM SHA-256，归功 BlackEye\n总生成速度提升 2.4 倍。\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.6/\nWindows 和 Linux 用户：倘若你装的是 0.3.5，仍然需要升级到 0.3.6。"},{"id":1743,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"knightmb","date":"2010-07-29","ts":"2010-07-29T19:54:27Z","url":"https://bitcointalk.org/index.php?topic=626.msg6468#msg6468","zh":"<blockquote><p>Windows 用户眼下可以先升到 3.5 吗？</p></blockquote><p>可以，我在 Windows XP、2003 和 7 上都测过，全部顺利。你还能顺便享受速度提升。</p><p>[<b>呃，等等，我想新版本马上就要出炉了</b>]</p>","zhText":"Windows 用户眼下可以先升到 3.5 吗？\n\n可以，我在 Windows XP、2003 和 7 上都测过，全部顺利。你还能顺便享受速度提升。\n[呃，等等，我想新版本马上就要出炉了]"},{"id":1744,"sid":290,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T19:55:51Z","url":"https://bitcointalk.org/index.php?topic=626.msg6469#msg6469","zh":"<p>还没来得及更新 SVN。等 0.3.6，我正在编。这期间你可以先把节点关掉。</p>","zhText":"还没来得及更新 SVN。等 0.3.6，我正在编。这期间你可以先把节点关掉。"},{"id":1788,"sid":null,"sat":0,"tid":146,"tt":"Implementation bug prior to 0.3.6","src":"Bitcointalk","author":"jgarzik","date":"2010-07-29","ts":"2010-07-29T20:22:59Z","url":"https://bitcointalk.org/index.php?topic=628.msg6478#msg6478","zh":"<p>顺便说一句，这类邮件列表的一个重要特点是任何人都能发帖……然而只有「vendor security」小组能读帖。</p><p>如此这般，遇到真实安全问题的一方就能方便地向 <a href=\"mailto:vendor-sec@myopensourceproject.org\">vendor-sec@myopensourceproject.org</a> 提供详细信息，同时防止不怀好意的人读到敏感信息。</p><p>我觉得，给<某个人>发 PM 加上在非公开论坛讨论，是这个论坛软件能做到的最好程度了。</p>","zhText":"顺便说一句，这类邮件列表的一个重要特点是任何人都能发帖……然而只有「vendor security」小组能读帖。\n如此这般，遇到真实安全问题的一方就能方便地向 vendor-sec@myopensourceproject.org 提供详细信息，同时防止不怀好意的人读到敏感信息。\n我觉得，给发 PM 加上在非公开论坛讨论，是这个论坛软件能做到的最好程度了。"},{"id":1745,"sid":291,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T20:30:15Z","url":"https://bitcointalk.org/index.php?topic=626.msg6480#msg6480","zh":"<p>SVN 已更新到 0.3.6 版本。</p><p>正在把 0.3.6 的 Windows 构建传到 Sourceforge，接下来重编 linux。</p>","zhText":"SVN 已更新到 0.3.6 版本。\n正在把 0.3.6 的 Windows 构建传到 Sourceforge，接下来重编 linux。"},{"id":1748,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"knightmb","date":"2010-07-29","ts":"2010-07-29T20:51:29Z","url":"https://bitcointalk.org/index.php?topic=626.msg6487#msg6487","zh":"<p>Windows 构建在 XP、2003、Vista、7（32 位和 64 位）上都测过了，安装和运行客户端都没有问题。目前一切顺利，期待 Linux 客户端。</p>","zhText":"Windows 构建在 XP、2003、Vista、7（32 位和 64 位）上都测过了，安装和运行客户端都没有问题。目前一切顺利，期待 Linux 客户端。"},{"id":1749,"sid":292,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T21:20:38Z","url":"https://bitcointalk.org/index.php?topic=626.msg6490#msg6490","zh":"<p>0.3.6 的 Linux 构建换回了老的 makefile.unix。它静态链接了 libjpeg，因而那不该是问题。</p><p>如此这般好使了吗？</p><p>倘若你遇到了 22DbRunRecoveryException，而且之前用过别人编译的版本，你可能需要删除（或把文件移走）database/log.000000*</p><p>Windows 和 Linux 用户：倘若你装的是 0.3.5，仍然需要升级到 0.3.6。</p>","zhText":"0.3.6 的 Linux 构建换回了老的 makefile.unix。它静态链接了 libjpeg，因而那不该是问题。\n如此这般好使了吗？\n倘若你遇到了 22DbRunRecoveryException，而且之前用过别人编译的版本，你可能需要删除（或把文件移走）database/log.000000*\nWindows 和 Linux 用户：倘若你装的是 0.3.5，仍然需要升级到 0.3.6。"},{"id":1757,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"bitcoinex","date":"2010-07-29","ts":"2010-07-29T21:35:27Z","url":"https://bitcointalk.org/index.php?topic=626.msg6500#msg6500","zh":"<blockquote><p>倘若你（和其他人）愿意，发成功/失败报告时，<b>请附上你的操作系统 + 版本号</b>。</p><p>我替另一位论坛成员向 satoshi 转达一个建议：在<i>更老的</i> Linux 系统上构建 linux 二进制，以保证更广的兼容性。兴许老到 CentOS 5 那种程度（提醒：需要自编 openssl、boost、db4 和 wx）。</p></blockquote><p>抱歉。我是在 Debian GNU/Linux squeeze/sid 上检查的二进制</p>","zhText":"倘若你（和其他人）愿意，发成功/失败报告时，请附上你的操作系统 + 版本号。\n我替另一位论坛成员向 satoshi 转达一个建议：在更老的 Linux 系统上构建 linux 二进制，以保证更广的兼容性。兴许老到 CentOS 5 那种程度（提醒：需要自编 openssl、boost、db4 和 wx）。\n\n抱歉。我是在 Debian GNU/Linux squeeze/sid 上检查的二进制"},{"id":1758,"sid":293,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T21:43:15Z","url":"https://bitcointalk.org/index.php?topic=626.msg6502#msg6502","zh":"<p>\"\"./bitcoin: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by ./bitcoin)\"\" 不是 0.3.6 才冒出来的新问题吧？它和 0.3.0 是在同样的系统安装上编的。</p><p>不巧我在 0.3.0 之前就升到了 Ubuntu 10.04。我以后再也不升级了。不知道什么时候才有时间重装系统降级，但至少只要不再升级，问题会随着时间自行缓解。</p>","zhText":"\"\"./bitcoin: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by ./bitcoin)\"\" 不是 0.3.6 才冒出来的新问题吧？它和 0.3.0 是在同样的系统安装上编的。\n不巧我在 0.3.0 之前就升到了 Ubuntu 10.04。我以后再也不升级了。不知道什么时候才有时间重装系统降级，但至少只要不再升级，问题会随着时间自行缓解。"},{"id":1789,"sid":294,"sat":1,"tid":146,"tt":"Implementation bug prior to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T22:04:15Z","url":"https://bitcointalk.org/index.php?topic=628.msg6508#msg6508","zh":"<p>其实，直接给我发 PM 就很管用。负责修的就是我。倘若你发现安全漏洞，我非常希望你在它公开之前私下告诉我，好先把它修掉。</p>","zhText":"其实，直接给我发 PM 就很管用。负责修的就是我。倘若你发现安全漏洞，我非常希望你在它公开之前私下告诉我，好先把它修掉。"},{"id":1731,"sid":295,"sat":1,"tid":144,"tt":"Transaction disappeared in the void...","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T22:08:31Z","url":"https://bitcointalk.org/index.php?topic=615.msg6512#msg6512","zh":"<p>倘若交易一开始没有立刻发出去，譬如你当时没连网，重发最长可能要等 2 小时。长期来看，它确实会锲而不舍地一直发。</p><p>未来版本我会把这个时长缩短。</p><p>你得先下载完整的区块链（当前 71040 个区块）才能看到任何确认。收款方也一样。</p>","zhText":"倘若交易一开始没有立刻发出去，譬如你当时没连网，重发最长可能要等 2 小时。长期来看，它确实会锲而不舍地一直发。\n未来版本我会把这个时长缩短。\n你得先下载完整的区块链（当前 71040 个区块）才能看到任何确认。收款方也一样。"},{"id":1764,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"lachesis","date":"2010-07-29","ts":"2010-07-29T22:14:36Z","url":"https://bitcointalk.org/index.php?topic=626.msg6515#msg6515","zh":"<p>在 Debian testing 32 位上，我遇到几个编译错误，都类似这样：</p><pre><code>script.cpp:114: error: OP_NOP1 was not declared in this scope</code></pre><p>这些错误是在没先 \"make clean\" 或 \"make\" 的情况下直接 \"make bitcoind\" 时出现的。看起来 bitcoind 的构建说明没有先编译头文件，但也不删除 headers.h.gch，于是只要旧的在，就用旧的。</p><p>其他遇到这个错误的人，最简单的解决办法是 \"make clean\" 然后重新构建。</p>","zhText":"在 Debian testing 32 位上，我遇到几个编译错误，都类似这样：\nscript.cpp:114: error: OP_NOP1 was not declared in this scope这些错误是在没先 \"make clean\" 或 \"make\" 的情况下直接 \"make bitcoind\" 时出现的。看起来 bitcoind 的构建说明没有先编译头文件，但也不删除 headers.h.gch，于是只要旧的在，就用旧的。\n其他遇到这个错误的人，最简单的解决办法是 \"make clean\" 然后重新构建。"},{"id":1716,"sid":296,"sat":1,"tid":143,"tt":"Linux distribution download","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T22:17:24Z","url":"https://bitcointalk.org/index.php?topic=612.msg6516#msg6516","zh":"<p>是啊，我非常清楚当初该留在 9.04 或 9.10。降级比升级费劲多了，我又一直时间紧。Ubuntu 是最流行的发行版，因而我打算继续用它。</p>","zhText":"是啊，我非常清楚当初该留在 9.04 或 9.10。降级比升级费劲多了，我又一直时间紧。Ubuntu 是最流行的发行版，因而我打算继续用它。"},{"id":1766,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Odin","date":"2010-07-29","ts":"2010-07-29T22:57:15Z","url":"https://bitcointalk.org/index.php?topic=626.msg6534#msg6534","zh":"<blockquote><p>Ubuntu Linux 9.10</p><p>错误：</p><p>/lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found</p></blockquote><p>dpkg -l | egrep \"(libc6|glibc)\"\n# 这会显示你当前安装的版本</p><p># 我猜你装的是 glibc 2.10 或更老。</p><p>apt-get update\napt-cache showpkg libc6 | less\n# 看看（接近底部的地方）有没有可用的 2.11 版本</p><pre><code>#Maybe you can just upgrade with:\napt-get upgrade libc6</code></pre><p># 以上是针对真正的 debian 系统的说明，用在 Ubuntu 上或许也行</p>","zhText":"Ubuntu Linux 9.10\n错误：\n/lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found\n\ndpkg -l | egrep \"(libc6|glibc)\"\n# 这会显示你当前安装的版本\n# 我猜你装的是 glibc 2.10 或更老。\napt-get update\napt-cache showpkg libc6 | less\n# 看看（接近底部的地方）有没有可用的 2.11 版本\n#Maybe you can just upgrade with:\napt-get upgrade libc6# 以上是针对真正的 debian 系统的说明，用在 Ubuntu 上或许也行"},{"id":1767,"sid":297,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-29","ts":"2010-07-29T23:12:12Z","url":"https://bitcointalk.org/index.php?topic=626.msg6542#msg6542","zh":"<blockquote><p>在 Debian testing 32 位上，我遇到几个编译错误，都类似这样：</p><pre><code>script.cpp:114: error: OP_NOP1 was not declared in this scope</code></pre><p>这些错误是在没先 \"make clean\" 或 \"make\" 的情况下直接 \"make bitcoind\" 时出现的。看起来 bitcoind 的构建说明没有先编译头文件，但也不删除 headers.h.gch，于是只要旧的在，就用旧的。</p><p>其他遇到这个错误的人，最简单的解决办法是 \"make clean\" 然后重新构建。</p></blockquote><p>我们其实不需要预编译头。它只是让编译稍微快一点。我想干脆去掉它。即便如此，你还是得记得 \"make -f makefile.unix clean\" 或者再删一次 headers.h.gch，把残留文件清掉。</p><p>该死的 GLIBC_2.11。我明明一直小心没接受任何更新。</p>","zhText":"在 Debian testing 32 位上，我遇到几个编译错误，都类似这样：\nscript.cpp:114: error: OP_NOP1 was not declared in this scope这些错误是在没先 \"make clean\" 或 \"make\" 的情况下直接 \"make bitcoind\" 时出现的。看起来 bitcoind 的构建说明没有先编译头文件，但也不删除 headers.h.gch，于是只要旧的在，就用旧的。\n其他遇到这个错误的人，最简单的解决办法是 \"make clean\" 然后重新构建。\n\n我们其实不需要预编译头。它只是让编译稍微快一点。我想干脆去掉它。即便如此，你还是得记得 \"make -f makefile.unix clean\" 或者再删一次 headers.h.gch，把残留文件清掉。\n该死的 GLIBC_2.11。我明明一直小心没接受任何更新。"},{"id":1810,"sid":null,"sat":0,"tid":149,"tt":"Bug: \"Immature\" coins lost in wallet.dat during transaction","src":"Bitcointalk","author":"Dybbuk","date":"2010-07-30","ts":"2010-07-30T16:39:16Z","url":"https://bitcointalk.org/index.php?topic=642.msg6672#msg6672","zh":"<p>大家好，</p><p>我在 Linux 机器上跑 R119，昨晚运气不错，解出了一个区块，拿到 50 BTC。可喜可贺对吧？然后我试着在它们还没「成熟」时（即还没过 100+ 区块大关）发 30 BTC，bitcoind 自然报了错。然而，它还把这 30 枚币标记成了已花费，于是不但交易没生成，这些币眼下我也用不了。</p><p>这是我 debug.log 里的相关片段：</p><p>ThreadRPCServer method=sendtoaddress\nCommitTransaction:\nCTransaction(hash=cf3bee, ver=1, vin.size=1, vout.size=2, nLockTime=0)\n    CTxIn(COutPoint(e9894c, 0), scriptSig=0x014866DE7A1889014BAC9A)\n    CTxOut(nValue=20.00000000, scriptPubKey=OP_DUP OP_HASH160 0x01BA)\n    CTxOut(nValue=30.00000000, scriptPubKey=OP_DUP OP_HASH160 0x3F3A)\nAddToWallet cf3bee  new\nCommitTransaction() : Error: Transaction not validreceived: addr (27 bytes)\n07/30/10 15:27:00 Flushing wallet.dat\nFlushed wallet.dat 1ms</p><p>我的钱包起初有 50.01 BTC（那 0.01 是前几天从一台机器转到另一台的测试），现在钱包里只剩 20.01 BTC。我有点难过——拿到生成的那批币时我还挺兴奋的！</p><p>Erik</p>","zhText":"大家好，\n我在 Linux 机器上跑 R119，昨晚运气不错，解出了一个区块，拿到 50 BTC。可喜可贺对吧？然后我试着在它们还没「成熟」时（即还没过 100+ 区块大关）发 30 BTC，bitcoind 自然报了错。然而，它还把这 30 枚币标记成了已花费，于是不但交易没生成，这些币眼下我也用不了。\n这是我 debug.log 里的相关片段：\nThreadRPCServer method=sendtoaddress\nCommitTransaction:\nCTransaction(hash=cf3bee, ver=1, vin.size=1, vout.size=2, nLockTime=0)\n CTxIn(COutPoint(e9894c, 0), scriptSig=0x014866DE7A1889014BAC9A)\n CTxOut(nValue=20.00000000, scriptPubKey=OP_DUP OP_HASH160 0x01BA)\n CTxOut(nValue=30.00000000, scriptPubKey=OP_DUP OP_HASH160 0x3F3A)\nAddToWallet cf3bee new\nCommitTransaction() : Error: Transaction not validreceived: addr (27 bytes)\n07/30/10 15:27:00 Flushing wallet.dat\nFlushed wallet.dat 1ms\n我的钱包起初有 50.01 BTC（那 0.01 是前几天从一台机器转到另一台的测试），现在钱包里只剩 20.01 BTC。我有点难过——拿到生成的那批币时我还挺兴奋的！\nErik"},{"id":1712,"sid":null,"sat":0,"tid":142,"tt":"[PATCH] implement 'xlisttransactions'","src":"Bitcointalk","author":"jgarzik","date":"2010-07-30","ts":"2010-07-30T18:43:37Z","url":"https://bitcointalk.org/index.php?topic=611.msg6694#msg6694","zh":"<p>这是 'listtransaction' 第 7 版：\n<a href=\"http://gtf.org/garzik/bitcoin/patch.bitcoin-listtransactions\">http://gtf.org/garzik/bitcoin/patch.bitcoin-listtransactions</a></p><p>加上了建议的 txn_id 字段——好建议，gavin！我一直想要一个唯一的交易 id，现在有了</p>","zhText":"这是 'listtransaction' 第 7 版：\nhttp://gtf.org/garzik/bitcoin/patch.bitcoin-listtransactions\n加上了建议的 txn_id 字段——好建议，gavin！我一直想要一个唯一的交易 id，现在有了"},{"id":1811,"sid":298,"sat":1,"tid":149,"tt":"Bug: \"Immature\" coins lost in wallet.dat during transaction","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-30","ts":"2010-07-30T19:19:05Z","url":"https://bitcointalk.org/index.php?topic=642.msg6701#msg6701","zh":"<p>我不明白它怎么会让你在未成熟时发送。你的余额应该低于那个金额才对。它应该显示余额 0.01，对吧？我这样做的话，它会提示 \"you don't have enough money\"，命令行下是 \"Insufficient funds\"。</p><p>你发送的时候，它说还差多少个区块成熟？</p><p>有可能这笔交易最终还是会成功。</p><p>你有没有以任何方式复制或移动过 wallet.dat？</p>","zhText":"我不明白它怎么会让你在未成熟时发送。你的余额应该低于那个金额才对。它应该显示余额 0.01，对吧？我这样做的话，它会提示 \"you don't have enough money\"，命令行下是 \"Insufficient funds\"。\n你发送的时候，它说还差多少个区块成熟？\n有可能这笔交易最终还是会成功。\n你有没有以任何方式复制或移动过 wallet.dat？"},{"id":1779,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"knightmb","date":"2010-07-30","ts":"2010-07-30T19:24:07Z","url":"https://bitcointalk.org/index.php?topic=626.msg6702#msg6702","zh":"<p>我只能想象你做出这些构建经历了怎样的痛苦，因为我正试着在一台 Ubuntu 9.04 的机器上编译这个程序，到现在为止不管装多少包、编多少源码，都凑不齐依赖，哈哈。</p>","zhText":"我只能想象你做出这些构建经历了怎样的痛苦，因为我正试着在一台 Ubuntu 9.04 的机器上编译这个程序，到现在为止不管装多少包、编多少源码，都凑不齐依赖，哈哈。"},{"id":1713,"sid":299,"sat":1,"tid":142,"tt":"[PATCH] implement 'xlisttransactions'","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-30","ts":"2010-07-30T19:40:54Z","url":"https://bitcointalk.org/index.php?topic=611.msg6706#msg6706","zh":"<p>你需要用 listtransactions 做什么？</p><p>我当初不实现 listtransactions，就是想确保 web 程序员不会用它。人们很容易顺手拿它来盯收到的付款。走那条路没有任何可靠的办法保证什么都不漏。在拿出过硬的示例代码、用 getreceivedbyaddress 和 getreceivedbylabel 指着说「用这个！用这个！别用 listtransactions！」之前，我认为不应该实现 listtransactions。</p><p>真要实现的时候，兴许一个对抗滥用的办法是把它做成纯文本。不要把字段拆成 comment、confirmations、credit、debit 之类。可以是一个格式化好的字符串，譬如 \"0/unconfirmed   0:0:0 date   comment      debit 4  credit 0\" 什么的，让程序员难以做错事、去解析它。它只是用来看服务器状态的。不过我猜这对想把内容格式化成 html 表格的 web 界面来说会有点烦。</p>","zhText":"你需要用 listtransactions 做什么？\n我当初不实现 listtransactions，就是想确保 web 程序员不会用它。人们很容易顺手拿它来盯收到的付款。走那条路没有任何可靠的办法保证什么都不漏。在拿出过硬的示例代码、用 getreceivedbyaddress 和 getreceivedbylabel 指着说「用这个！用这个！别用 listtransactions！」之前，我认为不应该实现 listtransactions。\n真要实现的时候，兴许一个对抗滥用的办法是把它做成纯文本。不要把字段拆成 comment、confirmations、credit、debit 之类。可以是一个格式化好的字符串，譬如 \"0/unconfirmed 0:0:0 date comment debit 4 credit 0\" 什么的，让程序员难以做错事、去解析它。它只是用来看服务器状态的。不过我猜这对想把内容格式化成 html 表格的 web 界面来说会有点烦。"},{"id":1780,"sid":300,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-30","ts":"2010-07-30T19:53:06Z","url":"https://bitcointalk.org/index.php?topic=626.msg6711#msg6711","zh":"<blockquote><p>我只能想象你做出这些构建经历了怎样的痛苦，因为我正试着在一台 Ubuntu 9.04 的机器上编译这个程序，到现在为止不管装多少包、编多少源码，都凑不齐依赖，哈哈。</p></blockquote><p>我不理解你怎么会这么痛苦。我就是照着 build-unix.txt 的说明做的。我为 Boost 1.37 做了两处小修正，下次更新 SVN 时会放上去，附在下面：</p><p>Dependencies</p><pre><code>------------\nsudo apt-get install build-essential\nsudo apt-get install libgtk2.0-dev\nsudo apt-get install libssl-dev\nsudo apt-get install libdb4.7-dev\nsudo apt-get install libdb4.7++-dev\nsudo apt-get install libboost-all-dev (or libboost1.37-dev)\nwxWidgets\n---------\ncd /usr/local\ntar -xzvf wxWidgets-2.9.0.tar.gz\ncd /usr/local/wxWidgets-2.9.0\nmkdir buildgtk\ncd buildgtk\n../configure --with-gtk --enable-debug --disable-shared --enable-monolithic\nmake\nsudo su\nmake install</code></pre><p>ldconfig</p><p>在 makefile.unix 里加了一条注释：</p><p># for boost 1.37, add -mt to the boost libraries\nLIBS= \\\n -Wl,-Bstatic \\\n   -l boost_system \\\n   -l boost_filesystem \\\n   -l boost_program_options \\\n   -l boost_thread \\\n   -l db_cxx \\\n   -l crypto \\\n -Wl,-Bdynamic \\\n   -l gthread-2.0</p>","zhText":"我只能想象你做出这些构建经历了怎样的痛苦，因为我正试着在一台 Ubuntu 9.04 的机器上编译这个程序，到现在为止不管装多少包、编多少源码，都凑不齐依赖，哈哈。\n\n我不理解你怎么会这么痛苦。我就是照着 build-unix.txt 的说明做的。我为 Boost 1.37 做了两处小修正，下次更新 SVN 时会放上去，附在下面：\nDependencies\n------------\nsudo apt-get install build-essential\nsudo apt-get install libgtk2.0-dev\nsudo apt-get install libssl-dev\nsudo apt-get install libdb4.7-dev\nsudo apt-get install libdb4.7++-dev\nsudo apt-get install libboost-all-dev (or libboost1.37-dev)\nwxWidgets\n---------\ncd /usr/local\ntar -xzvf wxWidgets-2.9.0.tar.gz\ncd /usr/local/wxWidgets-2.9.0\nmkdir buildgtk\ncd buildgtk\n../configure --with-gtk --enable-debug --disable-shared --enable-monolithic\nmake\nsudo su\nmake installldconfig\n在 makefile.unix 里加了一条注释：\n# for boost 1.37, add -mt to the boost libraries\nLIBS= \\\n -Wl,-Bstatic \\\n -l boost_system \\\n -l boost_filesystem \\\n -l boost_program_options \\\n -l boost_thread \\\n -l db_cxx \\\n -l crypto \\\n -Wl,-Bdynamic \\\n -l gthread-2.0"},{"id":1781,"sid":null,"sat":0,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"knightmb","date":"2010-07-30","ts":"2010-07-30T20:04:19Z","url":"https://bitcointalk.org/index.php?topic=626.msg6713#msg6713","zh":"<blockquote><p>我不理解你怎么会这么痛苦。我就是照着 build-unix.txt 的说明做的。我为 Boost 1.37 做了两处小修正，下次更新 SVN 时会放上去，附在下面：</p><p>Dependencies\n------------\nsudo apt-get install build-essential\nsudo apt-get install libgtk2.0-dev\nsudo apt-get install libssl-dev\nsudo apt-get install libdb4.7-dev\nsudo apt-get install libdb4.7++-dev\n<b>sudo apt-get install libboost-all-dev (or libboost1.37-dev)</b></p></blockquote><p>就是标粗的这部分卡住了我。那条命令装不齐所有 libboost 包（我也试过用 * 作弊），当然我的问题有一部分在于我太较真，想着把和 libboost 有关的东西*全都*装上，哈哈。</p><p>其实只需要 libboost1.37-dev 一个包，所有编译错误就都消失了。其他一切顺利，包括自己编译 wxWidgets、编译 Boost 1.4 之类。</p><p>因而最后那条命令其实就是\n<b>sudo apt-get install libboost1.37-dev</b></p><p>顺便说一句，我是在 Ubuntu 64 位系统上编译的，因而成品程序是 64 位的。我正在一些 64 位系统上测试效果如何。</p>","zhText":"我不理解你怎么会这么痛苦。我就是照着 build-unix.txt 的说明做的。我为 Boost 1.37 做了两处小修正，下次更新 SVN 时会放上去，附在下面：\nDependencies\n------------\nsudo apt-get install build-essential\nsudo apt-get install libgtk2.0-dev\nsudo apt-get install libssl-dev\nsudo apt-get install libdb4.7-dev\nsudo apt-get install libdb4.7++-dev\nsudo apt-get install libboost-all-dev (or libboost1.37-dev)\n\n就是标粗的这部分卡住了我。那条命令装不齐所有 libboost 包（我也试过用 * 作弊），当然我的问题有一部分在于我太较真，想着把和 libboost 有关的东西*全都*装上，哈哈。\n其实只需要 libboost1.37-dev 一个包，所有编译错误就都消失了。其他一切顺利，包括自己编译 wxWidgets、编译 Boost 1.4 之类。\n因而最后那条命令其实就是\nsudo apt-get install libboost1.37-dev\n顺便说一句，我是在 Ubuntu 64 位系统上编译的，因而成品程序是 64 位的。我正在一些 64 位系统上测试效果如何。"},{"id":1782,"sid":301,"sat":1,"tid":145,"tt":"*** ALERT *** Upgrade to 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-30","ts":"2010-07-30T21:44:04Z","url":"https://bitcointalk.org/index.php?topic=626.msg6728#msg6728","zh":"<blockquote><p>因而最后那条命令其实就是\n<b>sudo apt-get install libboost1.37-dev</b></p></blockquote><p>问题是那对 boost 1.40+（Ubuntu 10.04 上）不管用，那时你得装 libboost-all-dev。</p><p>他们最近好像把 Boost 全改了个遍，\"-mt\" 什么的，搞得人头疼。</p><p>顺便说一句，我试过 Boost 1.34，但它没有 boost.interprocess 那些东西。</p><p>Mac OSX 版本现在有了。见 bitcoin.org 或 SourceForge 链接。</p>","zhText":"因而最后那条命令其实就是\nsudo apt-get install libboost1.37-dev\n\n问题是那对 boost 1.40+（Ubuntu 10.04 上）不管用，那时你得装 libboost-all-dev。\n他们最近好像把 Boost 全改了个遍，\"-mt\" 什么的，搞得人头疼。\n顺便说一句，我试过 Boost 1.34，但它没有 boost.interprocess 那些东西。\nMac OSX 版本现在有了。见 bitcoin.org 或 SourceForge 链接。"},{"id":1830,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"tcatm","date":"2010-07-30","ts":"2010-07-30T22:00:24Z","url":"https://bitcointalk.org/index.php?topic=648.msg6736#msg6736","zh":"<p>告诉我能不能用\n欢迎捐赠。17asVKkzRGTFvvGH9dMGQaHe78xzfvgSSA</p>","zhText":"告诉我能不能用\n欢迎捐赠。17asVKkzRGTFvvGH9dMGQaHe78xzfvgSSA"},{"id":1831,"sid":302,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-31","ts":"2010-07-31T00:29:20Z","url":"https://bitcointalk.org/index.php?topic=648.msg6751#msg6751","zh":"<p>太神了……</p><p>因而你是说用 128 位寄存器一次 SIMD 四个 32 位数据？这事我想了很久，但因为加法会进位到相邻的值，我一直以为不可能。</p>","zhText":"太神了……\n因而你是说用 128 位寄存器一次 SIMD 四个 32 位数据？这事我想了很久，但因为加法会进位到相邻的值，我一直以为不可能。"},{"id":1722,"sid":null,"sat":0,"tid":143,"tt":"Linux distribution download","src":"Bitcointalk","author":"Odin","date":"2010-07-31","ts":"2010-07-31T01:04:00Z","url":"https://bitcointalk.org/index.php?topic=612.msg6758#msg6758","zh":"<blockquote><p>你说的多数没错，但 bitcoin 倾向于针对其依赖库的非常特定的版本构建。因而，无论底层操作系统版本如何，人们往往都要针对自编译的库来构建 bitcoin。这种做法让 glibc 成了主要的兼容性担忧。</p></blockquote><p>请明确指出到底是哪个库在用哪个最新 glibc 版本的特性（或者说任何库）？（如此这般我们大家才能按你陈述的方式理解这个问题。）</p><p>据我所见，wxWidgets 和 boost 都是静态链接的。我猜这就是「针对依赖库的非常特定的版本构建」的结果。但据我所见，这两个库都_不_需要用到新版 glibc——譬如 wxWidgets 在它的 ./configure 里只检查 glibc 2.1 或更新。但不清楚 wxWidgets 2.9.0 和/或 boost 1.40.0 的哪些特性需要 glibc 高于 2.5 的版本（这个版本也已经相当老了，但兼容性相当好）。我已成功地在 glibc 2.5 上构建了这些版本（wxWidgets/boost）。</p><p>我相信这一点可以从 \"src/makefile.unix\" 里 -Bstatic 的使用得到印证。</p><p>glibc 之所以成为你所说的「兼容性担忧」，唯一原因就是项目是在一个非常新的 linux 系统上构建的。这迫使所有下载者拥有和构建系统一样新的 linux 系统才能运行它。这并非你描述的那种固有的兼容性担忧。</p><p>我想我已经在 OpenSUSE 构建服务（OBS）上创建了一个自定义 wxWidgets 2.9.x 构建。倘若一切顺利，接下来几个小时我会搞「boost」。然后我就能提交 bitcoind 软件包、拿到 openSuSE 构建。再然后我可以启用其他发行版的仓库（CentOS、Ubuntu、SLE、Fedora 等等）。</p><p>有人能确认 boost 是需要「1.40.0」还是「1.40.0 或更新」？现在最新是 1.42.x（而且已有不少平台提供了软件包）。有人能讲讲这背后的缘由吗。</p><p>wxWidgets 2.9.x 是开发系列，属于预发布版，所以要拿到预发布版本显然需要自编。然而这个问题我已经在 OBS 构建里解决了。</p>","zhText":"你说的多数没错，但 bitcoin 倾向于针对其依赖库的非常特定的版本构建。因而，无论底层操作系统版本如何，人们往往都要针对自编译的库来构建 bitcoin。这种做法让 glibc 成了主要的兼容性担忧。\n\n请明确指出到底是哪个库在用哪个最新 glibc 版本的特性（或者说任何库）？（如此这般我们大家才能按你陈述的方式理解这个问题。）\n据我所见，wxWidgets 和 boost 都是静态链接的。我猜这就是「针对依赖库的非常特定的版本构建」的结果。但据我所见，这两个库都_不_需要用到新版 glibc——譬如 wxWidgets 在它的 ./configure 里只检查 glibc 2.1 或更新。但不清楚 wxWidgets 2.9.0 和/或 boost 1.40.0 的哪些特性需要 glibc 高于 2.5 的版本（这个版本也已经相当老了，但兼容性相当好）。我已成功地在 glibc 2.5 上构建了这些版本（wxWidgets/boost）。\n我相信这一点可以从 \"src/makefile.unix\" 里 -Bstatic 的使用得到印证。\nglibc 之所以成为你所说的「兼容性担忧」，唯一原因就是项目是在一个非常新的 linux 系统上构建的。这迫使所有下载者拥有和构建系统一样新的 linux 系统才能运行它。这并非你描述的那种固有的兼容性担忧。\n我想我已经在 OpenSUSE 构建服务（OBS）上创建了一个自定义 wxWidgets 2.9.x 构建。倘若一切顺利，接下来几个小时我会搞「boost」。然后我就能提交 bitcoind 软件包、拿到 openSuSE 构建。再然后我可以启用其他发行版的仓库（CentOS、Ubuntu、SLE、Fedora 等等）。\n有人能确认 boost 是需要「1.40.0」还是「1.40.0 或更新」？现在最新是 1.42.x（而且已有不少平台提供了软件包）。有人能讲讲这背后的缘由吗。\nwxWidgets 2.9.x 是开发系列，属于预发布版，所以要拿到预发布版本显然需要自编。然而这个问题我已经在 OBS 构建里解决了。"},{"id":1913,"sid":303,"sat":1,"tid":153,"tt":"Webpage idea: Next predicted difficulty change","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-31","ts":"2010-07-31T01:32:08Z","url":"https://bitcointalk.org/index.php?topic=651.msg6760#msg6760","zh":"<p>倘若有人做一个页面（类似 <a href=\"http://www.alloscomp.com/bitcoin/calculator.php\">http://www.alloscomp.com/bitcoin/calculator.php</a> 那个好用的计算器），预测下一次难度调整会调到多少，那就太好了。</p><p>预计难度调整倍数 =</p><p>blocks_since_last_adjustment / 2016\n ------------------------------------\n time_since_last_adjustment / 14_days</p><p>举例来说，倘若只用了 3.5 天而不是 7 天就走完了到下次调整的一半路程，我们预计难度会翻倍：</p><p>(1008/2016) / (3.5/14) = 0.5/0.25 = 2.0</p><p>另外，它还可以显示下次调整预计发生的时间，以及上次调整是什么时候、调了多少。</p>","zhText":"倘若有人做一个页面（类似 http://www.alloscomp.com/bitcoin/calculator.php 那个好用的计算器），预测下一次难度调整会调到多少，那就太好了。\n预计难度调整倍数 =\nblocks_since_last_adjustment / 2016\n ------------------------------------\n time_since_last_adjustment / 14_days\n举例来说，倘若只用了 3.5 天而不是 7 天就走完了到下次调整的一半路程，我们预计难度会翻倍：\n(1008/2016) / (3.5/14) = 0.5/0.25 = 2.0\n另外，它还可以显示下次调整预计发生的时间，以及上次调整是什么时候、调了多少。"},{"id":1833,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"tcatm","date":"2010-07-31","ts":"2010-07-31T10:12:38Z","url":"https://bitcointalk.org/index.php?topic=648.msg6797#msg6797","zh":"<blockquote><p>太神了……</p><p>因而你是说用 128 位寄存器一次 SIMD 四个 32 位数据？这事我想了很久，但因为加法会进位到相邻的值，我一直以为不可能。</p></blockquote><p>就是这么干的。128 位向量里放四个 32 位值。它们各自独立计算，但同时进行。</p><p>顺便问下，__attribute__ ((aligned (16))) 就能让编译器在编译期对齐，你为什么还要用 alignup<16> 这个函数？</p>","zhText":"太神了……\n因而你是说用 128 位寄存器一次 SIMD 四个 32 位数据？这事我想了很久，但因为加法会进位到相邻的值，我一直以为不可能。\n\n就是这么干的。128 位向量里放四个 32 位值。它们各自独立计算，但同时进行。\n顺便问下，__attribute__ ((aligned (16))) 就能让编译器在编译期对齐，你为什么还要用 alignup 这个函数？"},{"id":1723,"sid":304,"sat":1,"tid":143,"tt":"Linux distribution download","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-07-31","ts":"2010-07-31T14:38:52Z","url":"https://bitcointalk.org/index.php?topic=612.msg6822#msg6822","zh":"<p>用 Boost 1.37 或更新版本都能构建。</p>","zhText":"用 Boost 1.37 或更新版本都能构建。"},{"id":1943,"sid":null,"sat":0,"tid":155,"tt":"Linux version => No GUI after upgrade.  WTF?","src":"Bitcointalk","author":"generica","date":"2010-07-31","ts":"2010-07-31T19:06:37Z","url":"https://bitcointalk.org/index.php?topic=655.msg6839#msg6839","zh":"<p>各位好，</p><p>我的 linux 机器（debian 5 stable，32 位）跑 bitcoin 0.20 已经好几个月。今天升级到 0.36 之后 GUI 不出来了，但 bitcoin 在运行、似乎在用 CPU。GUI 去哪了？它出不来，但我在 xterm 里跑 bitcoin 时控制台没有任何报错。</p>","zhText":"各位好，\n我的 linux 机器（debian 5 stable，32 位）跑 bitcoin 0.20 已经好几个月。今天升级到 0.36 之后 GUI 不出来了，但 bitcoin 在运行、似乎在用 CPU。GUI 去哪了？它出不来，但我在 xterm 里跑 bitcoin 时控制台没有任何报错。"},{"id":1946,"sid":null,"sat":0,"tid":156,"tt":"Mac Client Problems Outlined...","src":"Bitcointalk","author":"andrew","date":"2010-08-02","ts":"2010-08-02T02:33:38Z","url":"https://bitcointalk.org/index.php?topic=660.msg6956#msg6956","zh":"<p>约莫三周前我用 bitcoin 的头 5 分钟里，马上就生成了一个区块，此后再没生成过第二个。我觉得这纯粹看运气。用的是 OSX 客户端。</p>","zhText":"约莫三周前我用 bitcoin 的头 5 分钟里，马上就生成了一个区块，此后再没生成过第二个。我觉得这纯粹看运气。用的是 OSX 客户端。"},{"id":1802,"sid":null,"sat":0,"tid":147,"tt":"Protocol Buffers for Bitcoin","src":"Bitcointalk","author":"martin","date":"2010-08-02","ts":"2010-08-02T11:37:33Z","url":"https://bitcointalk.org/index.php?topic=632.msg6992#msg6992","zh":"<blockquote><p>为什么你认为这是破坏性变更？完全可以先用新协议试、失败后再用旧的 bitcoin 序列化技术重试啊。</p></blockquote><p>这是个非常好的主意，我认为就该这么做。</p><blockquote><p>而且我认为趁 BitCoin 社区还小，这种变更越早做越好。它已经是新客户端开发的一大阻碍了，再拖下去会妨碍 bitcoin 的普及。</p></blockquote><p>既然是非破坏性变更，出于这些理由，我认为应该尽快做。</p><p>问题依然是：有人愿意帮忙实现吗？我是个有经验的程序员，可惜没有 C++ 经验，所以如果要自己做，我需要一点帮助</p>","zhText":"为什么你认为这是破坏性变更？完全可以先用新协议试、失败后再用旧的 bitcoin 序列化技术重试啊。\n\n这是个非常好的主意，我认为就该这么做。\n而且我认为趁 BitCoin 社区还小，这种变更越早做越好。它已经是新客户端开发的一大阻碍了，再拖下去会妨碍 bitcoin 的普及。\n\n既然是非破坏性变更，出于这些理由，我认为应该尽快做。\n问题依然是：有人愿意帮忙实现吗？我是个有经验的程序员，可惜没有 C++ 经验，所以如果要自己做，我需要一点帮助"},{"id":1857,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"petree","date":"2010-08-02","ts":"2010-08-02T16:12:33Z","url":"https://bitcointalk.org/index.php?topic=648.msg7027#msg7027","zh":"<blockquote><p>在 x86 下，我不得不把 cryptopp/obj/cpu.o 加进目标文件列表，否则 \"make test\" 会失败。x86_64 下没有这个问题。</p><p>如上所述，我也注意到了性能提升，但我不确定打过补丁的版本算得对。你用打过补丁的版本生成出过区块吗？</p></blockquote><p>有，打上这个补丁之后我已经生成了 2 个区块。</p>","zhText":"在 x86 下，我不得不把 cryptopp/obj/cpu.o 加进目标文件列表，否则 \"make test\" 会失败。x86_64 下没有这个问题。\n如上所述，我也注意到了性能提升，但我不确定打过补丁的版本算得对。你用打过补丁的版本生成出过区块吗？\n\n有，打上这个补丁之后我已经生成了 2 个区块。"},{"id":1944,"sid":305,"sat":1,"tid":155,"tt":"Linux version => No GUI after upgrade.  WTF?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-02","ts":"2010-08-02T17:39:27Z","url":"https://bitcointalk.org/index.php?topic=655.msg7057#msg7057","zh":"<p>它往控制台打印什么了吗？你确定跑的不是 \"bitcoind\"？</p><p>不妨试试 0.3.7 版本。</p>","zhText":"它往控制台打印什么了吗？你确定跑的不是 \"bitcoind\"？\n不妨试试 0.3.7 版本。"},{"id":1947,"sid":306,"sat":1,"tid":156,"tt":"Mac Client Problems Outlined...","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-02","ts":"2010-08-02T18:02:20Z","url":"https://bitcointalk.org/index.php?topic=660.msg7068#msg7068","zh":"<p>「最小化到托盘而非任务栏」和「关闭时最小化到托盘」在 Mac 上想必还没实现。下个版本我们应该把它们置灰。</p>","zhText":"「最小化到托盘而非任务栏」和「关闭时最小化到托盘」在 Mac 上想必还没实现。下个版本我们应该把它们置灰。"},{"id":1858,"sid":307,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-02","ts":"2010-08-02T19:02:46Z","url":"https://bitcointalk.org/index.php?topic=648.msg7084#msg7084","zh":"<p>是在 AMD 上快 2 倍、在 Intel 上只有 1/2 速度吗？</p><blockquote><p>顺便问下，__attribute__ ((aligned (16))) 就能让编译器在编译期对齐，你为什么还要用 alignup<16> 这个函数？</p></blockquote><p>试过，但它对栈上的东西不管用。我跑过一些测试。</p><p>它连错误都不报，就是对齐不了。</p>","zhText":"是在 AMD 上快 2 倍、在 Intel 上只有 1/2 速度吗？\n顺便问下，__attribute__ ((aligned (16))) 就能让编译器在编译期对齐，你为什么还要用 alignup 这个函数？\n\n试过，但它对栈上的东西不管用。我跑过一些测试。\n它连错误都不报，就是对齐不了。"},{"id":1803,"sid":308,"sat":1,"tid":147,"tt":"Protocol Buffers for Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-02","ts":"2010-08-02T20:22:08Z","url":"https://bitcointalk.org/index.php?topic=632.msg7090#msg7090","zh":"<p>我当初没用 protocol buffers 或 boost 序列化，是因为它们看起来太复杂，没法做到绝对滴水不漏、绝对安全。它们的代码量太大，读不完，也就无法确保不存在某种能触发意外行为的输入。</p><p>我讨厌重复造轮子，是不得已才自己写序列化例程的。我们现有的序列化格式尽可能简单、扁平。输入流的构成方式没有任何多余的自由度。每个时点，数据结构里的下一个字段都是预期中的。仅有的选择权就是接收方预期中的那些。有版本号，所以可以升级。</p><p>CAddress 差不多是唯一一个留有大量保留空间的对象。（约 7 字节用于标志，12 字节留给将来可能的 IPv6 扩展）</p><p>区块和交易这类较大的东西已经没法再为体积优化多少了。它们的主体数据是哈希、密钥和签名，不可压缩。序列化开销非常小，长度字段通常只占 1 字节。</p><p>关于 Gavin 说的现有的 P2P 广播基础设施，我怀疑那东西不存在。只需要广播的 P2P 系统很少。有些库（如 Chord）试图提供分布式哈希表基础设施，但那是个巨大而困难的问题，我们不需要也不想要。那些库装起来也比我们自己的难得多。</p>","zhText":"我当初没用 protocol buffers 或 boost 序列化，是因为它们看起来太复杂，没法做到绝对滴水不漏、绝对安全。它们的代码量太大，读不完，也就无法确保不存在某种能触发意外行为的输入。\n我讨厌重复造轮子，是不得已才自己写序列化例程的。我们现有的序列化格式尽可能简单、扁平。输入流的构成方式没有任何多余的自由度。每个时点，数据结构里的下一个字段都是预期中的。仅有的选择权就是接收方预期中的那些。有版本号，所以可以升级。\nCAddress 差不多是唯一一个留有大量保留空间的对象。（约 7 字节用于标志，12 字节留给将来可能的 IPv6 扩展）\n区块和交易这类较大的东西已经没法再为体积优化多少了。它们的主体数据是哈希、密钥和签名，不可压缩。序列化开销非常小，长度字段通常只占 1 字节。\n关于 Gavin 说的现有的 P2P 广播基础设施，我怀疑那东西不存在。只需要广播的 P2P 系统很少。有些库（如 Chord）试图提供分布式哈希表基础设施，但那是个巨大而困难的问题，我们不需要也不想要。那些库装起来也比我们自己的难得多。"},{"id":2046,"sid":null,"sat":0,"tid":160,"tt":"Bitcoind x86 binary for CentOS","src":"Bitcointalk","author":"sgtstein","date":"2010-08-03","ts":"2010-08-03T17:30:37Z","url":"https://bitcointalk.org/index.php?topic=685.msg7275#msg7275","zh":"<p>我用 4.8 成功构建了，4.7 从来编不过；但用 4.8 时，每当 bitcoind 把初始区块下载转储到磁盘就会锁死。</p>","zhText":"我用 4.8 成功构建了，4.7 从来编不过；但用 4.8 时，每当 bitcoind 把初始区块下载转储到磁盘就会锁死。"},{"id":1402,"sid":null,"sat":0,"tid":121,"tt":"Builds for Ubuntu?","src":"Bitcointalk","author":"nimnul","date":"2010-08-03","ts":"2010-08-03T17:51:15Z","url":"https://bitcointalk.org/index.php?topic=454.msg7282#msg7282","zh":"<p>satoshi 的 noWx 补丁进 0.3.7 了吗？在那之前 bitcoind 依赖 wx，而且我从没见 Satoshi 宣布它进了 trunk</p>","zhText":"satoshi 的 noWx 补丁进 0.3.7 了吗？在那之前 bitcoind 依赖 wx，而且我从没见 Satoshi 宣布它进了 trunk"},{"id":2061,"sid":null,"sat":0,"tid":161,"tt":"Authentication, JSON RPC and Python","src":"Bitcointalk","author":"jgarzik","date":"2010-08-03","ts":"2010-08-03T18:09:08Z","url":"https://bitcointalk.org/index.php?topic=689.msg7288#msg7288","zh":"<blockquote><p>谢谢指点，有意思，但看起来不是我遇到的问题。</p><p>这是我现在的代码（跑在 Google App Engine 上）\n<tt>\npostdata = jsonrpc.dumps({\"method\": 'getbalance', \"params\":'','id':'jsonrpc'})\nreq = urllib2.Request('<a href=\"http://127.0.0.1:8332\">http://127.0.0.1:8332</a>', postdata)\nuserpass = 'user:a'.encode('base64')[:-1]\nauthheader =  \"Basic %s\" % userpass\nreq.add_header(\"Authorization\",authheader)\nhandle = urllib2.urlopen(req)\njson_response = handle.read()\nself.response.out.write (json_response)\n<tt>\n结果报 <tt>HTTPError: HTTP Error 500: Internal Server Error</tt>\n</tt></tt></p></blockquote><p>这是 bitcoin 的一个已验证 bug。</p><p>bitcoin 要求 Content-Length 头，但好几个 JSON-RPC 库不提供它。Content-Length 头缺失时，bitcoin 返回 500 Internal Server Error。</p>","zhText":"谢谢指点，有意思，但看起来不是我遇到的问题。\n这是我现在的代码（跑在 Google App Engine 上）\n\npostdata = jsonrpc.dumps({\"method\": 'getbalance', \"params\":'','id':'jsonrpc'})\nreq = urllib2.Request('http://127.0.0.1:8332', postdata)\nuserpass = 'user:a'.encode('base64')[:-1]\nauthheader = \"Basic %s\" % userpass\nreq.add_header(\"Authorization\",authheader)\nhandle = urllib2.urlopen(req)\njson_response = handle.read()\nself.response.out.write (json_response)\n\n结果报 HTTPError: HTTP Error 500: Internal Server Error\n\n这是 bitcoin 的一个已验证 bug。\nbitcoin 要求 Content-Length 头，但好几个 JSON-RPC 库不提供它。Content-Length 头缺失时，bitcoin 返回 500 Internal Server Error。"},{"id":1981,"sid":null,"sat":0,"tid":157,"tt":"What happens when network is split for prolonged time and reconnected?","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-08-03","ts":"2010-08-03T18:38:44Z","url":"https://bitcointalk.org/index.php?topic=661.msg7293#msg7293","zh":"<blockquote><p>我也不是说这是好事。一次分割持续相当长时间，人们还有机会想出对策；而许多次分割、每次只持续几个小时，交易就会随机消失，这会伤害人们对系统的信心。</p></blockquote><p>有效的交易不会消失。它们只会转到更长的区块链上去。</p><p>无效的交易会是有人试图跨分割链双重支出（这很麻烦——你得跑一个改过的客户端，或者把钱包拷到另一条链上的机器去操作）。</p><p>或者，倘若分割持续得够久（超过 100 个区块），涉及较短链上已生成硬币的交易在合并时会失效。</p><p>对较短的分割，较短链上尚未成熟的已生成硬币会在链合并时消失，但对诚实的用户来说这差不多就是最坏的后果了（除非你不幸从一个想作弊的人那里收到了无效的币）。</p>","zhText":"我也不是说这是好事。一次分割持续相当长时间，人们还有机会想出对策；而许多次分割、每次只持续几个小时，交易就会随机消失，这会伤害人们对系统的信心。\n\n有效的交易不会消失。它们只会转到更长的区块链上去。\n无效的交易会是有人试图跨分割链双重支出（这很麻烦——你得跑一个改过的客户端，或者把钱包拷到另一条链上的机器去操作）。\n或者，倘若分割持续得够久（超过 100 个区块），涉及较短链上已生成硬币的交易在合并时会失效。\n对较短的分割，较短链上尚未成熟的已生成硬币会在链合并时消失，但对诚实的用户来说这差不多就是最坏的后果了（除非你不幸从一个想作弊的人那里收到了无效的币）。"},{"id":1405,"sid":null,"sat":0,"tid":121,"tt":"Builds for Ubuntu?","src":"Bitcointalk","author":"knightmb","date":"2010-08-03","ts":"2010-08-03T18:52:29Z","url":"https://bitcointalk.org/index.php?topic=454.msg7296#msg7296","zh":"<blockquote><p>是的，我以前编过二进制，但我想通过更新管理器升级，而不是手动下载二进制。</p></blockquote><p>哦，你是说 Ubuntu 那边托管的软件包形式的官方二进制？</p>","zhText":"是的，我以前编过二进制，但我想通过更新管理器升级，而不是手动下载二进制。\n\n哦，你是说 Ubuntu 那边托管的软件包形式的官方二进制？"},{"id":2050,"sid":null,"sat":0,"tid":160,"tt":"Bitcoind x86 binary for CentOS","src":"Bitcointalk","author":"knightmb","date":"2010-08-03","ts":"2010-08-03T18:53:37Z","url":"https://bitcointalk.org/index.php?topic=685.msg7297#msg7297","zh":"<blockquote><p>我用 4.8 成功构建了，4.7 从来编不过；但用 4.8 时，每当 bitcoind 把初始区块下载转储到磁盘就会锁死。</p></blockquote><p>我大抵会装一个 CentOS 5.5 的虚拟机然后拿它干活。我之前那台试验用的服务器已经被我折腾得不成样子了，哈哈。</p>","zhText":"我用 4.8 成功构建了，4.7 从来编不过；但用 4.8 时，每当 bitcoind 把初始区块下载转储到磁盘就会锁死。\n\n我大抵会装一个 CentOS 5.5 的虚拟机然后拿它干活。我之前那台试验用的服务器已经被我折腾得不成样子了，哈哈。"},{"id":2063,"sid":null,"sat":0,"tid":161,"tt":"Authentication, JSON RPC and Python","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-08-03","ts":"2010-08-03T18:56:44Z","url":"https://bitcointalk.org/index.php?topic=689.msg7299#msg7299","zh":"<blockquote><p>bitcoin 要求 Content-Length 头，但好几个 JSON-RPC 库不提供它。Content-Length 头缺失时，bitcoin 返回 500 Internal Server Error。</p></blockquote><p>你能更具体地说说哪些 JSON 库不提供 Content-Length 吗？把这个记录下来会很有用。</p>","zhText":"bitcoin 要求 Content-Length 头，但好几个 JSON-RPC 库不提供它。Content-Length 头缺失时，bitcoin 返回 500 Internal Server Error。\n\n你能更具体地说说哪些 JSON 库不提供 Content-Length 吗？把这个记录下来会很有用。"},{"id":1983,"sid":null,"sat":0,"tid":157,"tt":"What happens when network is split for prolonged time and reconnected?","src":"Bitcointalk","author":"knightmb","date":"2010-08-03","ts":"2010-08-03T19:02:13Z","url":"https://bitcointalk.org/index.php?topic=661.msg7303#msg7303","zh":"<blockquote><p>有效的交易不会消失。它们只会转到更长的区块链上去。</p><p>无效的交易会是有人试图跨分割链双重支出（这很麻烦——你得跑一个改过的客户端，或者把钱包拷到另一条链上的机器去操作）。</p><p>或者，倘若分割持续得够久（超过 100 个区块），涉及较短链上已生成硬币的交易在合并时会失效。</p><p>对较短的分割，较短链上尚未成熟的已生成硬币会在链合并时消失，但对诚实的用户来说这差不多就是最坏的后果了（除非你不幸从一个想作弊的人那里收到了无效的币）。</p></blockquote><p>有意思的信息。也就是说，除了一些双重支出问题，只要区块链分离不超过 100 个区块左右（或 16 小时以上），它应该能顺利合并回去、没什么大问题。如此这般，币生成大抵是唯一的受害者（倘若没有双重支出作弊发生），或者更技术性地说，币生成会被判给与脱离者同时正在生成的其他人。</p><p>分割延迟有没有硬编码的上限？意思是，倘若我有一个从公共网络分离出去的小网络，在里面花了些币，几天后回来同步到公共网络（除了碰巧发生的币生成），交易应该都没问题？</p>","zhText":"有效的交易不会消失。它们只会转到更长的区块链上去。\n无效的交易会是有人试图跨分割链双重支出（这很麻烦——你得跑一个改过的客户端，或者把钱包拷到另一条链上的机器去操作）。\n或者，倘若分割持续得够久（超过 100 个区块），涉及较短链上已生成硬币的交易在合并时会失效。\n对较短的分割，较短链上尚未成熟的已生成硬币会在链合并时消失，但对诚实的用户来说这差不多就是最坏的后果了（除非你不幸从一个想作弊的人那里收到了无效的币）。\n\n有意思的信息。也就是说，除了一些双重支出问题，只要区块链分离不超过 100 个区块左右（或 16 小时以上），它应该能顺利合并回去、没什么大问题。如此这般，币生成大抵是唯一的受害者（倘若没有双重支出作弊发生），或者更技术性地说，币生成会被判给与脱离者同时正在生成的其他人。\n分割延迟有没有硬编码的上限？意思是，倘若我有一个从公共网络分离出去的小网络，在里面花了些币，几天后回来同步到公共网络（除了碰巧发生的币生成），交易应该都没问题？"},{"id":2066,"sid":null,"sat":0,"tid":161,"tt":"Authentication, JSON RPC and Python","src":"Bitcointalk","author":"vess","date":"2010-08-03","ts":"2010-08-03T20:31:15Z","url":"https://bitcointalk.org/index.php?topic=689.msg7324#msg7324","zh":"<p>我也遇到了：没有文档说明无用户名的情形下应该接受什么样的认证字符串。</p><p>我的两分钱：未来版本最好强制要求 rpcuser 和 rpcpassword。这本来就是 HTTP Auth 的普遍预期。</p>","zhText":"我也遇到了：没有文档说明无用户名的情形下应该接受什么样的认证字符串。\n我的两分钱：未来版本最好强制要求 rpcuser 和 rpcpassword。这本来就是 HTTP Auth 的普遍预期。"},{"id":1406,"sid":309,"sat":1,"tid":121,"tt":"Builds for Ubuntu?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-03","ts":"2010-08-03T20:56:11Z","url":"https://bitcointalk.org/index.php?topic=454.msg7328#msg7328","zh":"<blockquote><p>satoshi 的 noWx 补丁进 0.3.7 了吗？在那之前 bitcoind 依赖 wx，而且我从没见 Satoshi 宣布它进了 trunk</p></blockquote><p>是的，0.3.7 带了。它在 rev 112。</p>","zhText":"satoshi 的 noWx 补丁进 0.3.7 了吗？在那之前 bitcoind 依赖 wx，而且我从没见 Satoshi 宣布它进了 trunk\n\n是的，0.3.7 带了。它在 rev 112。"},{"id":2051,"sid":310,"sat":1,"tid":160,"tt":"Bitcoind x86 binary for CentOS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-03","ts":"2010-08-03T21:05:08Z","url":"https://bitcointalk.org/index.php?topic=685.msg7331#msg7331","zh":"<blockquote><p>我用 4.8 成功构建了，4.7 从来编不过；但用 4.8 时，每当 bitcoind 把初始区块下载转储到磁盘就会锁死。</p></blockquote><p>我劝你别用 BDB 4.8。要是有人用了你的构建之后又换回官方构建，database/log0000* 文件会不兼容。</p>","zhText":"我用 4.8 成功构建了，4.7 从来编不过；但用 4.8 时，每当 bitcoind 把初始区块下载转储到磁盘就会锁死。\n\n我劝你别用 BDB 4.8。要是有人用了你的构建之后又换回官方构建，database/log0000* 文件会不兼容。"},{"id":2067,"sid":311,"sat":1,"tid":161,"tt":"Authentication, JSON RPC and Python","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-03","ts":"2010-08-03T21:26:26Z","url":"https://bitcointalk.org/index.php?topic=689.msg7335#msg7335","zh":"<blockquote><p>你能更具体地说说哪些 JSON 库不提供 Content-Length 吗？把这个记录下来会很有用。</p></blockquote><p>我想我们应该试着支持没有 Content-Length 参数的情形。不过我不想推倒重来换掉流处理，哪怕得一个字符一个字符地读。</p><p>编辑：当然，前提是真的存在不支持 Content-Length 的库。</p>","zhText":"你能更具体地说说哪些 JSON 库不提供 Content-Length 吗？把这个记录下来会很有用。\n\n我想我们应该试着支持没有 Content-Length 参数的情形。不过我不想推倒重来换掉流处理，哪怕得一个字符一个字符地读。\n编辑：当然，前提是真的存在不支持 Content-Length 的库。"},{"id":1985,"sid":null,"sat":0,"tid":157,"tt":"What happens when network is split for prolonged time and reconnected?","src":"Bitcointalk","author":"FreeMoney","date":"2010-08-03","ts":"2010-08-03T22:28:27Z","url":"https://bitcointalk.org/index.php?topic=661.msg7351#msg7351","zh":"<blockquote><p>我在别处开过一个类似的主题：对个体商户来说，可以搞一个简单的 watchdog 守护进程，跟踪自上次官方难度调整以来的区块平均间隔，倘若单个区块耗时超过平均值的两倍就向商户告警，也许暂停接收新币，直到商户查明状况。连续每个区块耗时都超过平均值，会增加排除误报的信心。因而，倘若一个区块耗时是平均值的两倍，接下来一连串区块都比平均值长 75%，那你基本可以确定你已经不在多数派网络上了。</p></blockquote><p>真的吗？在我看来，更可能的情形是一群人离开/掉线，而非一个规模恰好是正规网络一半的全新网络找到了你。</p><p>我大抵是理解岔了。</p>","zhText":"我在别处开过一个类似的主题：对个体商户来说，可以搞一个简单的 watchdog 守护进程，跟踪自上次官方难度调整以来的区块平均间隔，倘若单个区块耗时超过平均值的两倍就向商户告警，也许暂停接收新币，直到商户查明状况。连续每个区块耗时都超过平均值，会增加排除误报的信心。因而，倘若一个区块耗时是平均值的两倍，接下来一连串区块都比平均值长 75%，那你基本可以确定你已经不在多数派网络上了。\n\n真的吗？在我看来，更可能的情形是一群人离开/掉线，而非一个规模恰好是正规网络一半的全新网络找到了你。\n我大抵是理解岔了。"},{"id":1986,"sid":312,"sat":1,"tid":157,"tt":"What happens when network is split for prolonged time and reconnected?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-03","ts":"2010-08-03T22:45:07Z","url":"https://bitcointalk.org/index.php?topic=661.msg7356#msg7356","zh":"<p>creighto：我同意这个想法。几个小时之后，客户端应该有可能察觉到区块流量衰减得超出偶然范畴。它能知道自己是不是再也听不到世界的嗡嗡声了。</p><blockquote><p>有意思的信息。也就是说，除了一些双重支出问题，只要区块链分离不超过 100 个区块左右（或 16 小时以上），</p></blockquote><p>实际上，分割很可能极不对称。把世界从正中间劈开很难。更可能的情形是一个国家对世界其他地方，比方说 1:10 的分割。那样的话，少数派分叉要花 10 倍的时间生成 100 个区块，约 7 天。而且客户端会非常容易地察觉自己听到的区块太少了、一定出了问题。</p><blockquote><p>分割延迟有没有硬编码的上限？意思是，倘若我有一个从公共网络分离出去的小网络，在里面花了些币，几天后回来同步到公共网络（除了碰巧发生的币生成），交易应该都没问题？</p></blockquote><p>没有时间限制。只要你没有花少数派分叉里生成的币、没有花你收到的别人的双重支出，你的交易随时可以在之后进入另一条链。</p>","zhText":"creighto：我同意这个想法。几个小时之后，客户端应该有可能察觉到区块流量衰减得超出偶然范畴。它能知道自己是不是再也听不到世界的嗡嗡声了。\n有意思的信息。也就是说，除了一些双重支出问题，只要区块链分离不超过 100 个区块左右（或 16 小时以上），\n\n实际上，分割很可能极不对称。把世界从正中间劈开很难。更可能的情形是一个国家对世界其他地方，比方说 1:10 的分割。那样的话，少数派分叉要花 10 倍的时间生成 100 个区块，约 7 天。而且客户端会非常容易地察觉自己听到的区块太少了、一定出了问题。\n分割延迟有没有硬编码的上限？意思是，倘若我有一个从公共网络分离出去的小网络，在里面花了些币，几天后回来同步到公共网络（除了碰巧发生的币生成），交易应该都没问题？\n\n没有时间限制。只要你没有花少数派分叉里生成的币、没有花你收到的别人的双重支出，你的交易随时可以在之后进入另一条链。"},{"id":2077,"sid":313,"sat":1,"tid":163,"tt":"Please upgrade to 0.3.8!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-03","ts":"2010-08-03T23:40:18Z","url":"https://bitcointalk.org/index.php?topic=696.msg7364#msg7364","zh":"<p>0.3.8 版本加入了一个重要的安全改进。所有人都应升级以获得这项变更。</p><p>新的安全特性会在状态栏显示警告信息，并在检测到可能需要升级的问题时锁定 RPC。</p><p>倘若它看到一条更长的链但无法处理，它就知道出问题了。它会显示 \"WARNING: Displayed transactions may not be correct!  You may need to upgrade.\" 并让多数 RPC 命令返回错误。它仍照常生成，这是网络稳定所必需的。</p><p>之前的版本也有重要安全更新，倘若你最近没升级过，现在升级就极其重要了！</p><p>另外，别忘了，我们最近加了 2.4 倍的生成提速——归功于 tcatm 的 mid-state 缓存优化，以及 BlackEye 帮忙让 ASM SHA-256 跑了起来。</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/</a></p>","zhText":"0.3.8 版本加入了一个重要的安全改进。所有人都应升级以获得这项变更。\n新的安全特性会在状态栏显示警告信息，并在检测到可能需要升级的问题时锁定 RPC。\n倘若它看到一条更长的链但无法处理，它就知道出问题了。它会显示 \"WARNING: Displayed transactions may not be correct! You may need to upgrade.\" 并让多数 RPC 命令返回错误。它仍照常生成，这是网络稳定所必需的。\n之前的版本也有重要安全更新，倘若你最近没升级过，现在升级就极其重要了！\n另外，别忘了，我们最近加了 2.4 倍的生成提速——归功于 tcatm 的 mid-state 缓存优化，以及 BlackEye 帮忙让 ASM SHA-256 跑了起来。\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/"},{"id":2055,"sid":null,"sat":0,"tid":160,"tt":"Bitcoind x86 binary for CentOS","src":"Bitcointalk","author":"knightmb","date":"2010-08-03","ts":"2010-08-03T23:46:46Z","url":"https://bitcointalk.org/index.php?topic=685.msg7365#msg7365","zh":"<p>我把二进制发在这里了（仅 32 位——bitcoind）：\n<a href=\"http://knightmb.dyndns.org/files/bitcoin/custom%20builds/x86/CentOS%205.5/\">点这里</a></p><p>有两个版本：一个用原始代码构建，另一个改过、最多可接受 1,000 个节点（所以叫 super node）</p><p>GUI 客户端构建改天再搞，这个已经把我累趴了。觉得我不错的话给签名里的地址捐点 BTC 吧</p>","zhText":"我把二进制发在这里了（仅 32 位——bitcoind）：\n点这里\n有两个版本：一个用原始代码构建，另一个改过、最多可接受 1,000 个节点（所以叫 super node）\nGUI 客户端构建改天再搞，这个已经把我累趴了。觉得我不错的话给签名里的地址捐点 BTC 吧"},{"id":2078,"sid":null,"sat":0,"tid":163,"tt":"Please upgrade to 0.3.8!","src":"Bitcointalk","author":"FreeMoney","date":"2010-08-04","ts":"2010-08-04T00:08:05Z","url":"https://bitcointalk.org/index.php?topic=696.msg7371#msg7371","zh":"<p>链接把我带到 3.7 去了</p>","zhText":"链接把我带到 3.7 去了"},{"id":2056,"sid":314,"sat":1,"tid":160,"tt":"Bitcoind x86 binary for CentOS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-04","ts":"2010-08-04T00:09:32Z","url":"https://bitcointalk.org/index.php?topic=685.msg7372#msg7372","zh":"<blockquote><p>有两个版本：一个用原始代码构建，另一个改过、最多可接受 1,000 个节点（所以叫 super node）</p></blockquote><p>我希望你最好不要放出 1000 节点连接版的构建。跑这个的人不用太多，我们就得再发一个专门限制入站连接数的版本。</p>","zhText":"有两个版本：一个用原始代码构建，另一个改过、最多可接受 1,000 个节点（所以叫 super node）\n\n我希望你最好不要放出 1000 节点连接版的构建。跑这个的人不用太多，我们就得再发一个专门限制入站连接数的版本。"},{"id":1808,"sid":null,"sat":0,"tid":148,"tt":"Building initial transaction trust through \"coin ripping\"","src":"Bitcointalk","author":"bytemaster","date":"2010-08-04","ts":"2010-08-04T00:17:33Z","url":"https://bitcointalk.org/index.php?topic=635.msg7374#msg7374","zh":"<p>我认为 Red 的想法倘若能设计得当，非常好。</p><p>这整套流程唯一的问题，是要求双方都押上资金。买服务的一方和提供服务的一方都必须押现金。遗憾的是，提供服务的一方同时押上的还有他们的服务。</p>","zhText":"我认为 Red 的想法倘若能设计得当，非常好。\n这整套流程唯一的问题，是要求双方都押上资金。买服务的一方和提供服务的一方都必须押现金。遗憾的是，提供服务的一方同时押上的还有他们的服务。"},{"id":2079,"sid":315,"sat":1,"tid":163,"tt":"Please upgrade to 0.3.8!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-04","ts":"2010-08-04T00:29:37Z","url":"https://bitcointalk.org/index.php?topic=696.msg7381#msg7381","zh":"<p>我猜 SourceForge 的镜像还没更新。文件在管理端已经在了，用户端还没有。不知道要多久。以前从来都是即时的。</p><p>编辑：SourceForge 现在更新了。</p>","zhText":"我猜 SourceForge 的镜像还没更新。文件在管理端已经在了，用户端还没有。不知道要多久。以前从来都是即时的。\n编辑：SourceForge 现在更新了。"},{"id":1809,"sid":316,"sat":1,"tid":148,"tt":"Building initial transaction trust through \"coin ripping\"","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-04","ts":"2010-08-04T00:40:40Z","url":"https://bitcointalk.org/index.php?topic=635.msg7385#msg7385","zh":"<p>软件本来就是设计来支持这类东西的。我本来打算发一篇托管（Escrow）方案的详细计划帖，但被 slashdot 报道之后就一直没时间。</p>","zhText":"软件本来就是设计来支持这类东西的。我本来打算发一篇托管（Escrow）方案的详细计划帖，但被 slashdot 报道之后就一直没时间。"},{"id":985,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Insti","date":"2010-08-04","ts":"2010-08-04T14:58:31Z","url":"https://bitcointalk.org/index.php?topic=287.msg7498#msg7498","zh":"<p>这个 0.01BTC 交易费到底在「解决」什么「灰尘垃圾交易」？\n它弊大于利，因为它阻碍了 bytemaster 提议的那类小额支付实现。</p><p>我并不觉得网络正被现有交易量压得喘不过气。\n任何想发大量交易的人现在就能做到——给自己反复发 x BTC 就行。</p>","zhText":"这个 0.01BTC 交易费到底在「解决」什么「灰尘垃圾交易」？\n它弊大于利，因为它阻碍了 bytemaster 提议的那类小额支付实现。\n我并不觉得网络正被现有交易量压得喘不过气。\n任何想发大量交易的人现在就能做到——给自己反复发 x BTC 就行。"},{"id":989,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Insti","date":"2010-08-04","ts":"2010-08-04T16:11:55Z","url":"https://bitcointalk.org/index.php?topic=287.msg7521#msg7521","zh":"<blockquote><p>只有一枚 Bitcoin 的人可以发 100,000,000 笔交易，可能会把网络压垮。然而这并非好方案——因为就算把限额调低，漏洞依然存在，总会有人囤着一大堆比特币。</p></blockquote><p>只有一枚 Bitcoin 的人现在就能发 100,000,000 笔交易，把同一枚币反复发给自己。交易面值是 1 还是 0.00000001 又有什么区别？</p>","zhText":"只有一枚 Bitcoin 的人可以发 100,000,000 笔交易，可能会把网络压垮。然而这并非好方案——因为就算把限额调低，漏洞依然存在，总会有人囤着一大堆比特币。\n\n只有一枚 Bitcoin 的人现在就能发 100,000,000 笔交易，把同一枚币反复发给自己。交易面值是 1 还是 0.00000001 又有什么区别？"},{"id":990,"sid":317,"sat":1,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-04","ts":"2010-08-04T16:25:36Z","url":"https://bitcointalk.org/index.php?topic=287.msg7524#msg7524","zh":"<blockquote><p>它弊大于利，因为它阻碍了 bytemaster 提议的那类小额支付实现。</p></blockquote><p>Bitcoin 目前尚且不适用于非常小额的微支付。像按次搜索或按页浏览这种没有聚合机制的做不到，需要支付低于 0.01 的也做不到。灰尘垃圾限额就是对故意阻止这类过小额微支付做的第一次尝试。</p><p>对于比现有支付方式更小的交易，Bitcoin 是实用的。小到足以涵盖你可以称之为微支付区间顶端的那部分。然而它并不声称适用于任意小的微支付。</p>","zhText":"它弊大于利，因为它阻碍了 bytemaster 提议的那类小额支付实现。\n\nBitcoin 目前尚且不适用于非常小额的微支付。像按次搜索或按页浏览这种没有聚合机制的做不到，需要支付低于 0.01 的也做不到。灰尘垃圾限额就是对故意阻止这类过小额微支付做的第一次尝试。\n对于比现有支付方式更小的交易，Bitcoin 是实用的。小到足以涵盖你可以称之为微支付区间顶端的那部分。然而它并不声称适用于任意小的微支付。"},{"id":993,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"FreeMoney","date":"2010-08-04","ts":"2010-08-04T19:30:32Z","url":"https://bitcointalk.org/index.php?topic=287.msg7569#msg7569","zh":"<p>交易费规则可以任意复杂吗？还有，大小限制是硬编码的还是完全由节点自定？</p><p>多打包交易会拖慢你的哈希速率吗？</p>","zhText":"交易费规则可以任意复杂吗？还有，大小限制是硬编码的还是完全由节点自定？\n多打包交易会拖慢你的哈希速率吗？"},{"id":2080,"sid":null,"sat":0,"tid":164,"tt":"Who's the Spanish jerk draining the Faucet?","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-08-04","ts":"2010-08-04T20:40:55Z","url":"https://bitcointalk.org/index.php?topic=704.msg7575#msg7575","zh":"<p>我刚关掉了 freebitcoins.appspot.com；看起来西班牙有个人在耍赖：换个新 IP、新比特币地址、解验证码，一遍又一遍又一遍：</p><pre><code>79.154.133.217 - - [04/Aug/2010:12:46:55 -0700]\n\"POST / HTTP/1.1\" 200 1294 \"https://freebitcoins.appspot.com/\"\n\"Opera/9.80 (Windows NT 6.0; U; es-LA) Presto/2.6.30 Version/10.60,gzip(gfe)\"\n\n79.146.112.13 - - [04/Aug/2010:12:45:20 -0700]\n\"POST / HTTP/1.1\" 200 1294 \"https://freebitcoins.appspot.com/\"\n\"Opera/9.80 (Windows NT 6.0; U; es-LA) Presto/2.6.30 Version/10.60,gzip(gfe)\"\n\n81.44.159.81 - - [04/Aug/2010:12:42:20 -0700]\n\"POST / HTTP/1.1\" 200 1294 \"https://freebitcoins.appspot.com/\"\n\"Opera/9.80 (Windows NT 6.0; U; es-LA) Presto/2.6.30 Version/10.60,gzip(gfe)\"</code></pre><p>那些 IP 全都解析到 Telefonica de Espana。倘若是你：请还回来，地址：15VjRaDX9zpbA8LVnbrCAFzrVzN7ixHNsC</p><p>既然 5 枚比特币现在值不少钱了，我想我需要更多防作弊手段。我能想到四个可以试的：</p><p>1. 按 IP 地址首字节限速（本案是 79. 或 81.）。\n2. 按 USER-AGENT 字符串限速（本案是 \"Opera/9.8...\"）。\n3. 按 IP 反向 DNS 查询的最后两个域限速（本案是 rima-tde.net）。\n4. 把标准发放额降到 0.5 比特币（自我启动 Faucet 以来，比特币已经涨了 10 倍）。</p><p>倘若你被限速，会收到一条让你明天再试的消息。</p><p>BitcoinFX：再次感谢你对 faucet 的捐赠；我暂时会把 Faucet 放到 500 币以下，等新的防作弊措施到位后再用你的捐款补满。</p>","zhText":"我刚关掉了 freebitcoins.appspot.com；看起来西班牙有个人在耍赖：换个新 IP、新比特币地址、解验证码，一遍又一遍又一遍：\n79.154.133.217 - - [04/Aug/2010:12:46:55 -0700]\n\"POST / HTTP/1.1\" 200 1294 \"https://freebitcoins.appspot.com/\"\n\"Opera/9.80 (Windows NT 6.0; U; es-LA) Presto/2.6.30 Version/10.60,gzip(gfe)\"\n\n79.146.112.13 - - [04/Aug/2010:12:45:20 -0700]\n\"POST / HTTP/1.1\" 200 1294 \"https://freebitcoins.appspot.com/\"\n\"Opera/9.80 (Windows NT 6.0; U; es-LA) Presto/2.6.30 Version/10.60,gzip(gfe)\"\n\n81.44.159.81 - - [04/Aug/2010:12:42:20 -0700]\n\"POST / HTTP/1.1\" 200 1294 \"https://freebitcoins.appspot.com/\"\n\"Opera/9.80 (Windows NT 6.0; U; es-LA) Presto/2.6.30 Version/10.60,gzip(gfe)\"那些 IP 全都解析到 Telefonica de Espana。倘若是你：请还回来，地址：15VjRaDX9zpbA8LVnbrCAFzrVzN7ixHNsC\n既然 5 枚比特币现在值不少钱了，我想我需要更多防作弊手段。我能想到四个可以试的：\n1. 按 IP 地址首字节限速（本案是 79. 或 81.）。\n2. 按 USER-AGENT 字符串限速（本案是 \"Opera/9.8...\"）。\n3. 按 IP 反向 DNS 查询的最后两个域限速（本案是 rima-tde.net）。\n4. 把标准发放额降到 0.5 比特币（自我启动 Faucet 以来，比特币已经涨了 10 倍）。\n倘若你被限速，会收到一条让你明天再试的消息。\nBitcoinFX：再次感谢你对 faucet 的捐赠；我暂时会把 Faucet 放到 500 币以下，等新的防作弊措施到位后再用你的捐款补满。"},{"id":2095,"sid":null,"sat":0,"tid":164,"tt":"Who's the Spanish jerk draining the Faucet?","src":"Bitcointalk","author":"tcatm","date":"2010-08-05","ts":"2010-08-05T14:09:51Z","url":"https://bitcointalk.org/index.php?topic=704.msg7670#msg7670","zh":"<p>一个想法……你可以去掉「你已经领过币」的提示，永远假装发了币而实际没发。兴许配一句「倘若不行，联系我……」。但愿他们会以为服务坏了，不再来烦。</p>","zhText":"一个想法……你可以去掉「你已经领过币」的提示，永远假装发了币而实际没发。兴许配一句「倘若不行，联系我……」。但愿他们会以为服务坏了，不再来烦。"},{"id":2097,"sid":null,"sat":0,"tid":165,"tt":"bitcoind transaction to ip address","src":"Bitcointalk","author":"lfm","date":"2010-08-05","ts":"2010-08-05T14:22:14Z","url":"https://bitcointalk.org/index.php?topic=711.msg7671#msg7671","zh":"<p>我搞不明白怎么从 bitcoind 命令行界面往一个 ip 地址发交易。这个功能实现了吗？（linux 64 位，倘若这有关系的话）</p>","zhText":"我搞不明白怎么从 bitcoind 命令行界面往一个 ip 地址发交易。这个功能实现了吗？（linux 64 位，倘若这有关系的话）"},{"id":997,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"bytemaster","date":"2010-08-05","ts":"2010-08-05T15:39:19Z","url":"https://bitcointalk.org/index.php?topic=287.msg7684#msg7684","zh":"<p>我认为现在的系统运转良好。倘若有人想实现微支付系统，那他们就得托管足够的节点、贡献足够的算力，来把自己的小额交易纳入区块。我看不出有什么理由要求任何节点接受或转发微支付交易，如果 said 节点不愿意的话。</p><p>真正的问题在于，哪怕是一个简单的合法自动微支付系统，引入的交易量也可能超过当前信用卡系统所用的量，从而把 bitcoin 压垮。净结果是区块体积可能变得巨大。</p><p>以我的用例为例：一个 P2P 系统，用户为优先下载付费。假设有一个「种子」文件，10 万人同时做种和下载。这很容易每分钟产生 100,000 笔微支付。显然，程序只需要在两个客户端的上传不等于下载时才动用 BTC。</p><p>这是分布式的，因而没有简便办法区分「垃圾」和正当使用。即便用我的方案——每次转账 1 BTC 以上、余额超过 0.01 就找零——也会造成大规模的交易膨胀。</p><p>我怀疑逐笔处理交易的「成本」可能很低（.00001 BTC），但要处理来自数百万使用自动支付协商/竞价系统的用户的所有这些小额交易，其成本会很快让「监听所有入站交易」本身都变得不可能。</p><p>这个问题唯一的解法是让交易广播「不再免费」。也就是说，你想让我把交易纳入区块，就得付钱给我。净结果是每个客户端要向它发送交易的那些客户端付费，而不只是向最终把它打进区块的人付费。如此这般，经济规律接管一切，谁也别想搭交易广播系统的便车。</p><p>这意味着：在一个你付费请它接收交易并*尝试*将其整合进区块的节点成功之前，你可能根本收不到付款通知。这意味着你甚至看不到 0/unconfirmed，交易必须先进区块，任何没被付费做*尝试*整合的人才会知道它存在。</p><p>这种结构会鼓励 pay-to-ip 系统，因为它让收款方负责付费以促成交易整合。他们要么自己跑 bitcoin 生成器，要么付费把交易发给正在生成的人。</p>","zhText":"我认为现在的系统运转良好。倘若有人想实现微支付系统，那他们就得托管足够的节点、贡献足够的算力，来把自己的小额交易纳入区块。我看不出有什么理由要求任何节点接受或转发微支付交易，如果 said 节点不愿意的话。\n真正的问题在于，哪怕是一个简单的合法自动微支付系统，引入的交易量也可能超过当前信用卡系统所用的量，从而把 bitcoin 压垮。净结果是区块体积可能变得巨大。\n以我的用例为例：一个 P2P 系统，用户为优先下载付费。假设有一个「种子」文件，10 万人同时做种和下载。这很容易每分钟产生 100,000 笔微支付。显然，程序只需要在两个客户端的上传不等于下载时才动用 BTC。\n这是分布式的，因而没有简便办法区分「垃圾」和正当使用。即便用我的方案——每次转账 1 BTC 以上、余额超过 0.01 就找零——也会造成大规模的交易膨胀。\n我怀疑逐笔处理交易的「成本」可能很低（.00001 BTC），但要处理来自数百万使用自动支付协商/竞价系统的用户的所有这些小额交易，其成本会很快让「监听所有入站交易」本身都变得不可能。\n这个问题唯一的解法是让交易广播「不再免费」。也就是说，你想让我把交易纳入区块，就得付钱给我。净结果是每个客户端要向它发送交易的那些客户端付费，而不只是向最终把它打进区块的人付费。如此这般，经济规律接管一切，谁也别想搭交易广播系统的便车。\n这意味着：在一个你付费请它接收交易并*尝试*将其整合进区块的节点成功之前，你可能根本收不到付款通知。这意味着你甚至看不到 0/unconfirmed，交易必须先进区块，任何没被付费做*尝试*整合的人才会知道它存在。\n这种结构会鼓励 pay-to-ip 系统，因为它让收款方负责付费以促成交易整合。他们要么自己跑 bitcoin 生成器，要么付费把交易发给正在生成的人。"},{"id":998,"sid":318,"sat":1,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T16:03:21Z","url":"https://bitcointalk.org/index.php?topic=287.msg7687#msg7687","zh":"<p>忘了说微支付的好话了。虽然我认为 Bitcoin 眼下对更小额的微支付不实用，但随着存储和带宽成本持续下降，它最终会变得实用。倘若 Bitcoin 大规模流行，到那时兴许已经是这样了。它们变得更实用的另一条路，是我实现 client-only 模式、网络节点合并为更少数量的专业服务器农场。无论你需要多小面额的微支付，最终都会实用。我想 5 到 10 年后，带宽和存储都会显得微不足道。</p><p>我并不是说网络对 DoS 攻击免疫。我认为大多数 P2P 网络都可以被用各种方式 DoS。（顺便说一句，我看到唱片公司想对所有文件共享网络发动 DoS，只是不想触犯反黑客/反滥用法律。）</p><p>倘若我们开始被大量来回的垃圾交易 DoS，你就需要开始支付 0.01 的最低交易费了。0.1.5 其实有过设置它的选项，但我为了减少困惑把它拿掉了。免费交易是件好事，只要大家不滥用，我们可以一直如此。</p><p>这就引出一个问题：倘若每笔交易有 0.01 的最低交易费，倘若只是最低的 0.01，我们要不要自动加上？每次都问一遍会烦死人。倘若你有 50.00、发送 10.00，收款方得到 10.00，你剩 39.99。我认为应该自动加上。跟其他许多服务自动附加的费用比，这算微不足道。</p><blockquote><p>多打包交易会拖慢你的哈希速率吗？</p></blockquote><p>不，完全不。</p>","zhText":"忘了说微支付的好话了。虽然我认为 Bitcoin 眼下对更小额的微支付不实用，但随着存储和带宽成本持续下降，它最终会变得实用。倘若 Bitcoin 大规模流行，到那时兴许已经是这样了。它们变得更实用的另一条路，是我实现 client-only 模式、网络节点合并为更少数量的专业服务器农场。无论你需要多小面额的微支付，最终都会实用。我想 5 到 10 年后，带宽和存储都会显得微不足道。\n我并不是说网络对 DoS 攻击免疫。我认为大多数 P2P 网络都可以被用各种方式 DoS。（顺便说一句，我看到唱片公司想对所有文件共享网络发动 DoS，只是不想触犯反黑客/反滥用法律。）\n倘若我们开始被大量来回的垃圾交易 DoS，你就需要开始支付 0.01 的最低交易费了。0.1.5 其实有过设置它的选项，但我为了减少困惑把它拿掉了。免费交易是件好事，只要大家不滥用，我们可以一直如此。\n这就引出一个问题：倘若每笔交易有 0.01 的最低交易费，倘若只是最低的 0.01，我们要不要自动加上？每次都问一遍会烦死人。倘若你有 50.00、发送 10.00，收款方得到 10.00，你剩 39.99。我认为应该自动加上。跟其他许多服务自动附加的费用比，这算微不足道。\n多打包交易会拖慢你的哈希速率吗？\n\n不，完全不。"},{"id":2100,"sid":null,"sat":0,"tid":166,"tt":"Transaction Overload Solution","src":"Bitcointalk","author":"bytemaster","date":"2010-08-05","ts":"2010-08-05T16:14:00Z","url":"https://bitcointalk.org/index.php?topic=713.msg7690#msg7690","zh":"<p>非「广播」系统的坏处是它让双重支出更容易，事实上你的「付款以生成」就是双重支出的头号候选对象。</p><p>我不确定广播系统能不能承受这种延迟。我想，担心双重支出的人会付费让更多节点「审查」交易，而承受得起损失的人就去冒险。</p>","zhText":"非「广播」系统的坏处是它让双重支出更容易，事实上你的「付款以生成」就是双重支出的头号候选对象。\n我不确定广播系统能不能承受这种延迟。我想，担心双重支出的人会付费让更多节点「审查」交易，而承受得起损失的人就去冒险。"},{"id":1821,"sid":null,"sat":0,"tid":151,"tt":"A proposal for a semi-automated Escrow mechanism","src":"Bitcointalk","author":"Olipro","date":"2010-08-05","ts":"2010-08-05T16:26:47Z","url":"https://bitcointalk.org/index.php?topic=645.msg7693#msg7693","zh":"<blockquote><p>我不觉得他是那个意思。交易会完整地做成，但双方各自持有花掉这笔钱所需的密钥的一部分。倘若他们满意，就把钱发给相应的对方。这与区块链不存在争议。他们要么协商好、像其他所有人那样用代码完成交易，要么谈不拢、钱就一直锁着。</p></blockquote><p>倘若买方拒绝完成交易、卖方又拒绝退款，他们有 2 个选择。</p><p>1) 使性子，谁也拿不到任何东西</p><p>2) 商定一个第三方，把钱发给它。这个第三方是仲裁人，衡量双方的理由，裁决钱该退给谁，扣除他们与受损双方商定的费用。</p><p>在此之后，我也意识到我的建议可能被恶意利用：卖方可以让某人做一笔托管交易，然后拒绝发货也拒绝仲裁。我对这个问题的解法是对系统做如下修改：</p><p>买方做一笔托管交易并出示给卖方；倘若卖方想继续，就必须同意被扣一笔买方指定的金额；卖方同意后，托管交易进入网络、纳入区块链，此时双方的钱都押进去了。</p><p>倘若一切顺利，买方确认放款，卖方拿到货款 + 退回的「信誉押金」。</p><p>倘若买方想取消，卖方授权取消，双方拿回各自原本的钱。</p><p>倘若双方谈不拢放款事宜，那双方就都有动力去找仲裁人。当仲裁人被授权接收交易资金时，信誉押金立即退回卖方，仲裁人对那笔押金没有发言权。</p>","zhText":"我不觉得他是那个意思。交易会完整地做成，但双方各自持有花掉这笔钱所需的密钥的一部分。倘若他们满意，就把钱发给相应的对方。这与区块链不存在争议。他们要么协商好、像其他所有人那样用代码完成交易，要么谈不拢、钱就一直锁着。\n\n倘若买方拒绝完成交易、卖方又拒绝退款，他们有 2 个选择。\n1) 使性子，谁也拿不到任何东西\n2) 商定一个第三方，把钱发给它。这个第三方是仲裁人，衡量双方的理由，裁决钱该退给谁，扣除他们与受损双方商定的费用。\n在此之后，我也意识到我的建议可能被恶意利用：卖方可以让某人做一笔托管交易，然后拒绝发货也拒绝仲裁。我对这个问题的解法是对系统做如下修改：\n买方做一笔托管交易并出示给卖方；倘若卖方想继续，就必须同意被扣一笔买方指定的金额；卖方同意后，托管交易进入网络、纳入区块链，此时双方的钱都押进去了。\n倘若一切顺利，买方确认放款，卖方拿到货款 + 退回的「信誉押金」。\n倘若买方想取消，卖方授权取消，双方拿回各自原本的钱。\n倘若双方谈不拢放款事宜，那双方就都有动力去找仲裁人。当仲裁人被授权接收交易资金时，信誉押金立即退回卖方，仲裁人对那笔押金没有发言权。"},{"id":999,"sid":319,"sat":1,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T16:30:20Z","url":"https://bitcointalk.org/index.php?topic=287.msg7694#msg7694","zh":"<blockquote><p>付款一般是预付的，譬如一次 1 BTC，连接关闭时退还「找零」。这条规则让单纯的「搜索查询」无法在没有后续交易的情况下完成付费。</p></blockquote><p>一个替代方案是用凑整制。你一次为 1000 个页面、图片、下载或搜索之类付费。用完 1000 页，再买 1000 页。倘若你只用 1 页，剩下 999 页可能永远用不上，但这不要紧，因为每 1000 的单价仍然很低。</p><p>或者按天付费。你在某天第一次访问该网站时，为 24 小时的访问权付费。</p><p>按 1000 或按天对消费者来说也更容易理解。按次计费让他们担心累积得太快、算不过来。24 小时不限量，他们知道成本是多少。或者倘若 1000 次看起来绰绰有余，只要他们觉得 1000 次多于自己会用到的量，就不会担心每点一下都在花钱。</p>","zhText":"付款一般是预付的，譬如一次 1 BTC，连接关闭时退还「找零」。这条规则让单纯的「搜索查询」无法在没有后续交易的情况下完成付费。\n\n一个替代方案是用凑整制。你一次为 1000 个页面、图片、下载或搜索之类付费。用完 1000 页，再买 1000 页。倘若你只用 1 页，剩下 999 页可能永远用不上，但这不要紧，因为每 1000 的单价仍然很低。\n或者按天付费。你在某天第一次访问该网站时，为 24 小时的访问权付费。\n按 1000 或按天对消费者来说也更容易理解。按次计费让他们担心累积得太快、算不过来。24 小时不限量，他们知道成本是多少。或者倘若 1000 次看起来绰绰有余，只要他们觉得 1000 次多于自己会用到的量，就不会担心每点一下都在花钱。"},{"id":1000,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Anonymous","date":"2010-08-05","ts":"2010-08-05T16:37:53Z","url":"https://bitcointalk.org/index.php?topic=287.msg7695#msg7695","zh":"<blockquote><p>把 1 BTC 来回发一百万次，形成的是一条单一交易链；把 0.000001 BTC 发一百万笔，则形成一百万笔几乎相互独立的交易，全都必须被记住。由于 bitcoin 可以丢弃旧的、有足够深度确认的交易，第一种方式长期来看的开销远小于第二种。网络成本可能类似，但单链的磁盘空间成本可以大幅降低。</p><p>只有当「灰尘」重新合并、并被足够深地重新确认之后，灰尘占用的空间才能被丢弃。</p></blockquote><p>改进的攻击方式是：从 1BTC 开始，转 0.999999999BTC，再转 0.999999998BTC，……\n最终得到 100 万个（减去 10000 个）各有 0.000000001BTC 的账户。</p>","zhText":"把 1 BTC 来回发一百万次，形成的是一条单一交易链；把 0.000001 BTC 发一百万笔，则形成一百万笔几乎相互独立的交易，全都必须被记住。由于 bitcoin 可以丢弃旧的、有足够深度确认的交易，第一种方式长期来看的开销远小于第二种。网络成本可能类似，但单链的磁盘空间成本可以大幅降低。\n只有当「灰尘」重新合并、并被足够深地重新确认之后，灰尘占用的空间才能被丢弃。\n\n改进的攻击方式是：从 1BTC 开始，转 0.999999999BTC，再转 0.999999998BTC，……\n最终得到 100 万个（减去 10000 个）各有 0.000000001BTC 的账户。"},{"id":1001,"sid":320,"sat":1,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T16:39:58Z","url":"https://bitcointalk.org/index.php?topic=287.msg7696#msg7696","zh":"<blockquote><p>这个问题唯一的解法是让交易广播「不再免费」。也就是说，你想让我把交易纳入区块，就得付钱给我。净结果是每个客户端要向它发送交易的那些客户端付费，而不只是向最终把它打进区块的人付费。如此这般，经济规律接管一切，谁也别想搭交易广播系统的便车。</p></blockquote><p>我不知道怎么实现这个。给区块创建者的交易费用了一个特殊技巧，让交易费不占任何额外空间。倘若每笔交易费都是一笔交易，那交易费的交易自己的交易费又怎么办？</p>","zhText":"这个问题唯一的解法是让交易广播「不再免费」。也就是说，你想让我把交易纳入区块，就得付钱给我。净结果是每个客户端要向它发送交易的那些客户端付费，而不只是向最终把它打进区块的人付费。如此这般，经济规律接管一切，谁也别想搭交易广播系统的便车。\n\n我不知道怎么实现这个。给区块创建者的交易费用了一个特殊技巧，让交易费不占任何额外空间。倘若每笔交易费都是一笔交易，那交易费的交易自己的交易费又怎么办？"},{"id":1003,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"bytemaster","date":"2010-08-05","ts":"2010-08-05T16:46:52Z","url":"https://bitcointalk.org/index.php?topic=287.msg7699#msg7699","zh":"<p>现在交易费地址是留「空」的，由区块生成者填上。\n你可以填上你想请他打包区块的那个人的地址。</p><p>倘若传输费 <= 区块整合费，就没有人能靠转发交易获利，于是只能自己生成区块。</p>","zhText":"现在交易费地址是留「空」的，由区块生成者填上。\n你可以填上你想请他打包区块的那个人的地址。\n倘若传输费 <= 区块整合费，就没有人能靠转发交易获利，于是只能自己生成区块。"},{"id":2096,"sid":321,"sat":1,"tid":164,"tt":"Who's the Spanish jerk draining the Faucet?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T17:06:03Z","url":"https://bitcointalk.org/index.php?topic=704.msg7703#msg7703","zh":"<p>悄无声息地失败会很难看。</p><blockquote><p>1. 按 IP 地址首字节限速（本案是 79. 或 81.）。</p></blockquote><p>绝对需要。你考虑的限速额度是多少？说到底，限速总比让它全部流干强。</p><blockquote><p>3. 按 IP 反向 DNS 查询的最后两个域限速（本案是 rima-tde.net）。</p></blockquote><p>这招可能出奇地好使。倘若管用，能让他们撞不上限速线，而限速线作为最后一道防线仍在。</p><blockquote><p>4. 把标准发放额降到 0.5 比特币（自我启动 Faucet 以来，比特币已经涨了 10 倍）。</p></blockquote><p>绝对是时候降了。</p>","zhText":"悄无声息地失败会很难看。\n1. 按 IP 地址首字节限速（本案是 79. 或 81.）。\n\n绝对需要。你考虑的限速额度是多少？说到底，限速总比让它全部流干强。\n3. 按 IP 反向 DNS 查询的最后两个域限速（本案是 rima-tde.net）。\n\n这招可能出奇地好使。倘若管用，能让他们撞不上限速线，而限速线作为最后一道防线仍在。\n4. 把标准发放额降到 0.5 比特币（自我启动 Faucet 以来，比特币已经涨了 10 倍）。\n\n绝对是时候降了。"},{"id":2098,"sid":322,"sat":1,"tid":165,"tt":"bitcoind transaction to ip address","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T17:28:40Z","url":"https://bitcointalk.org/index.php?topic=711.msg7705#msg7705","zh":"<p>没实现。</p><p>结果是反正没人喜欢那种转账方式，因而它没得到什么开发关注。</p>","zhText":"没实现。\n结果是反正没人喜欢那种转账方式，因而它没得到什么开发关注。"},{"id":2101,"sid":323,"sat":1,"tid":166,"tt":"Transaction Overload Solution","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T17:38:21Z","url":"https://bitcointalk.org/index.php?topic=713.msg7706#msg7706","zh":"<p>我想不出实现它的办法。所有交易费都会是额外的交易。那交易费的交易自己的交易费又怎么办？</p>","zhText":"我想不出实现它的办法。所有交易费都会是额外的交易。那交易费的交易自己的交易费又怎么办？"},{"id":1004,"sid":324,"sat":1,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T17:49:43Z","url":"https://bitcointalk.org/index.php?topic=287.msg7710#msg7710","zh":"<blockquote><p>现在交易费地址是留「空」的，由区块生成者填上。\n你可以填上你想请他打包区块的那个人的地址。</p></blockquote><p>倘若只让一个人去打包区块，那可能要花好几天。哦，你是说给每个节点发一个不同变体、把交易费写成给他们的？</p><p>现在的规矩是：谁打出区块谁拿走。</p><p>真需要的话，我们可以搞一个 BitTorrent 式的以牙还牙机制来做交易广播：向我转发付费交易，否则我也不向你转发。不过这多半不会成为真问题。只要有一个节点按规矩转发，就能抵消另外 7 个贪心地不转发的节点。</p>","zhText":"现在交易费地址是留「空」的，由区块生成者填上。\n你可以填上你想请他打包区块的那个人的地址。\n\n倘若只让一个人去打包区块，那可能要花好几天。哦，你是说给每个节点发一个不同变体、把交易费写成给他们的？\n现在的规矩是：谁打出区块谁拿走。\n真需要的话，我们可以搞一个 BitTorrent 式的以牙还牙机制来做交易广播：向我转发付费交易，否则我也不向你转发。不过这多半不会成为真问题。只要有一个节点按规矩转发，就能抵消另外 7 个贪心地不转发的节点。"},{"id":1822,"sid":325,"sat":1,"tid":151,"tt":"A proposal for a semi-automated Escrow mechanism","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-05","ts":"2010-08-05T18:08:30Z","url":"https://bitcointalk.org/index.php?topic=645.msg7712#msg7712","zh":"<p>可以写出一笔需要两把签名才能花掉的交易。你写一笔付款，要求收款人和发送人双方的签名才能花掉它。要放行托管，你把你的那一半签名给收款人；或者收款人把他签好的一半给你，把钱退回来。这个简单情形里没有中间人。制约手段就是拒绝放行——等于把钱烧掉。</p>","zhText":"可以写出一笔需要两把签名才能花掉的交易。你写一笔付款，要求收款人和发送人双方的签名才能花掉它。要放行托管，你把你的那一半签名给收款人；或者收款人把他签好的一半给你，把钱退回来。这个简单情形里没有中间人。制约手段就是拒绝放行——等于把钱烧掉。"},{"id":1824,"sid":null,"sat":0,"tid":151,"tt":"A proposal for a semi-automated Escrow mechanism","src":"Bitcointalk","author":"jgarzik","date":"2010-08-05","ts":"2010-08-05T19:00:30Z","url":"https://bitcointalk.org/index.php?topic=645.msg7723#msg7723","zh":"<blockquote><p>可以写出一笔需要两把签名才能花掉的交易。你写一笔付款，要求收款人和发送人双方的签名才能花掉它。要放行托管，你把你的那一半签名给收款人；或者收款人把他签好的一半给你，把钱退回来。这个简单情形里没有中间人。制约手段就是拒绝放行——等于把钱烧掉。</p></blockquote><p>由于存在这种制约手段，它不太可能被用作托管机制</p>","zhText":"可以写出一笔需要两把签名才能花掉的交易。你写一笔付款，要求收款人和发送人双方的签名才能花掉它。要放行托管，你把你的那一半签名给收款人；或者收款人把他签好的一半给你，把钱退回来。这个简单情形里没有中间人。制约手段就是拒绝放行——等于把钱烧掉。\n\n由于存在这种制约手段，它不太可能被用作托管机制"},{"id":1888,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"impossible7","date":"2010-08-06","ts":"2010-08-06T11:37:20Z","url":"https://bitcointalk.org/index.php?topic=648.msg7838#msg7838","zh":"<p>CRITICAL_BLOCK 是一个包含 for 循环的宏。断言失败说明循环体里调用了 break。这个块里唯一的 break 语句在第 2762 行。原始源文件里这个临界块中并没有 break 语句。我认为你必须删掉 2759-2762 行。原始 main.cpp 里没有这种东西。</p>","zhText":"CRITICAL_BLOCK 是一个包含 for 循环的宏。断言失败说明循环体里调用了 break。这个块里唯一的 break 语句在第 2762 行。原始源文件里这个临界块中并没有 break 语句。我认为你必须删掉 2759-2762 行。原始 main.cpp 里没有这种东西。"},{"id":1889,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"tcatm","date":"2010-08-06","ts":"2010-08-06T11:54:04Z","url":"https://bitcointalk.org/index.php?topic=648.msg7841#msg7841","zh":"<p>谢谢！那大抵是我用一个旧 diff 打补丁时混进去的。我已修好 git：<a href=\"http://github.com/tcatm/bitcoin-cruncher\">http://github.com/tcatm/bitcoin-cruncher</a></p>","zhText":"谢谢！那大抵是我用一个旧 diff 打补丁时混进去的。我已修好 git：http://github.com/tcatm/bitcoin-cruncher"},{"id":2115,"sid":null,"sat":0,"tid":167,"tt":"Bitcoin minting is thermodynamically perverse","src":"Bitcointalk","author":"gridecon","date":"2010-08-06","ts":"2010-08-06T16:48:00Z","url":"https://bitcointalk.org/index.php?topic=721.msg7889#msg7889","zh":"<blockquote><p>没理由那样想，就像本地理发师收集头发并不是为了克隆一支超人军团统治世界。界限总得画在某处。倘若有人真要偷电，瞄准一台 30 瓦的电脑没什么意义。</p><p>我见过这个话题在这里出现过几次「倘若有人想钻空子怎么办？」，答案一次次都一样：这个系统从底层设计上就是针对这种顾虑的。你想「玩弄」系统，就需要大量 CPU 算力。算力要花钱。系统会根据可用的 CPU 算力自我调节规模，所以就算你从 Amazon 买 10,000 个 EC2 会话、开起大规模 bitcoin 生成农场，长期而言你也永远赚不回投入，因为系统会自我调整来对抗它。要是有人拿僵尸网络砸过来，同样的事也会发生。这个系统是自反馈设定的，所以想偷所有人的东西，等于同时偷你自己。</p></blockquote><p>我认为你是在把一个严肃问题合理化掉。僵尸网络存在，僵尸网络的主人想变现。Bitcoin 铸币是一种可选策略。「倘若有人真要偷电，瞄准一台 30 瓦的电脑没什么意义」是完全的答非所问。控制僵尸网络意味着你*已经偷到了*电，问题在于——你要怎么用它？bitcoin 产量大致与能量输入成正比，这是再简单不过的经济学，因而最高效的生产者将是那些能以零成本获得电的人。</p><p>分析一个经济系统，你显然要从「自利的行为者在该系统中会如何行事」入手。那些挥挥手就想论证人们看到获利机会也不会自私、不会有违伦理的说法，完全说服不了我。我们已经*知道*人们正在向 bitcoin 铸币投入大量计算资源，稳步上升的难度恰恰等价于系统计算成本的稳步上升！生产同量硬币投入的能量越多，bitcoin 就得越辛苦才能在这个成本之上交付增值。</p><p>再说一遍，分析自利行为者的行为很有启发意义。在当前机制下，bitcoin 生成能效最高的场景，是只有*一台上网本*在生成所有硬币——硬币产出率是固定的，进入流通的币量仍然一样。运行那台上网本的人显然可以向需要 bitcoin 做交易的人群收高额「租金」。审视这个极限案例就能明白：bitcoin 铸币者有很强的动机去鼓励货币的使用和流通，同时阻止更多铸币节点上线。这不是对任何人伦理的批评——这只是审视这个游戏是怎么搭建的、玩家会采用什么策略。</p><p>总的来说，我也不认同「币生成的巨大计算负担是现行系统的必要代价」这种说法。据我理解，货币创造从根本上是以*时间*计量的——倘若那才是根本控制变量，那为什么每个人还需要在给定时间段内「掷尽可能多的骰子」？币所有权和交易的「证明链」并不依赖硬币的生成方式。</p>","zhText":"没理由那样想，就像本地理发师收集头发并不是为了克隆一支超人军团统治世界。界限总得画在某处。倘若有人真要偷电，瞄准一台 30 瓦的电脑没什么意义。\n我见过这个话题在这里出现过几次「倘若有人想钻空子怎么办？」，答案一次次都一样：这个系统从底层设计上就是针对这种顾虑的。你想「玩弄」系统，就需要大量 CPU 算力。算力要花钱。系统会根据可用的 CPU 算力自我调节规模，所以就算你从 Amazon 买 10,000 个 EC2 会话、开起大规模 bitcoin 生成农场，长期而言你也永远赚不回投入，因为系统会自我调整来对抗它。要是有人拿僵尸网络砸过来，同样的事也会发生。这个系统是自反馈设定的，所以想偷所有人的东西，等于同时偷你自己。\n\n我认为你是在把一个严肃问题合理化掉。僵尸网络存在，僵尸网络的主人想变现。Bitcoin 铸币是一种可选策略。「倘若有人真要偷电，瞄准一台 30 瓦的电脑没什么意义」是完全的答非所问。控制僵尸网络意味着你*已经偷到了*电，问题在于——你要怎么用它？bitcoin 产量大致与能量输入成正比，这是再简单不过的经济学，因而最高效的生产者将是那些能以零成本获得电的人。\n分析一个经济系统，你显然要从「自利的行为者在该系统中会如何行事」入手。那些挥挥手就想论证人们看到获利机会也不会自私、不会有违伦理的说法，完全说服不了我。我们已经*知道*人们正在向 bitcoin 铸币投入大量计算资源，稳步上升的难度恰恰等价于系统计算成本的稳步上升！生产同量硬币投入的能量越多，bitcoin 就得越辛苦才能在这个成本之上交付增值。\n再说一遍，分析自利行为者的行为很有启发意义。在当前机制下，bitcoin 生成能效最高的场景，是只有*一台上网本*在生成所有硬币——硬币产出率是固定的，进入流通的币量仍然一样。运行那台上网本的人显然可以向需要 bitcoin 做交易的人群收高额「租金」。审视这个极限案例就能明白：bitcoin 铸币者有很强的动机去鼓励货币的使用和流通，同时阻止更多铸币节点上线。这不是对任何人伦理的批评——这只是审视这个游戏是怎么搭建的、玩家会采用什么策略。\n总的来说，我也不认同「币生成的巨大计算负担是现行系统的必要代价」这种说法。据我理解，货币创造从根本上是以*时间*计量的——倘若那才是根本控制变量，那为什么每个人还需要在给定时间段内「掷尽可能多的骰子」？币所有权和交易的「证明链」并不依赖硬币的生成方式。"},{"id":2129,"sid":null,"sat":0,"tid":167,"tt":"Bitcoin minting is thermodynamically perverse","src":"Bitcointalk","author":"BitLex","date":"2010-08-06","ts":"2010-08-06T20:02:34Z","url":"https://bitcointalk.org/index.php?topic=721.msg7955#msg7955","zh":"<blockquote><p>你是在论证 Bitcoin 的整体社会效用「值得」——既值得计算工作的原始能源成本，也值得它为僵尸网络运营者提供牟利机会这个令人遗憾的事实。</p></blockquote><p>我宁愿支持像 bitcoin 这样的、我自己能用来做价值转移的系统，也不想为「搜寻外星人帮科学家省点钱」耗电。那才是浪费能源，而且人们还自愿去做、没有任何回报。</p><p>而且我真的不在乎某些僵尸网络运营者赚不赚钱，只要他们不来烦*我*（或其他人）。</p>","zhText":"你是在论证 Bitcoin 的整体社会效用「值得」——既值得计算工作的原始能源成本，也值得它为僵尸网络运营者提供牟利机会这个令人遗憾的事实。\n\n我宁愿支持像 bitcoin 这样的、我自己能用来做价值转移的系统，也不想为「搜寻外星人帮科学家省点钱」耗电。那才是浪费能源，而且人们还自愿去做、没有任何回报。\n而且我真的不在乎某些僵尸网络运营者赚不赚钱，只要他们不来烦*我*（或其他人）。"},{"id":2169,"sid":null,"sat":0,"tid":168,"tt":"latency and locality","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-08-07","ts":"2010-08-07T11:52:14Z","url":"https://bitcointalk.org/index.php?topic=723.msg8078#msg8078","zh":"<blockquote><p>你的论证里那股难以置信的劲头，是不是因为你认为*不可能*有比「100,000 颗 CPU 24/7 全天候以 100% 负荷燃烧、每笔交易发 100,000+ 条冗余消息」更好的方案？</p></blockquote><p>不，完全不是。就像我加入这个主题时说的，我认为用 DHT 网络以某种方式分发工作是个非常有趣的想法，不过在我看来，任何对网络做分区的方案都会更容易受到插入恶意节点的攻击。能想出一个资源占用更少又真正可行的方案就太棒了。</p><p>Freenet 是怎么生成节点 ID 的？我在最新的 Freenet 论文里只看到：</p><blockquote><p>加入时，节点随机选择一个身份，然后连接那些与它有预先建立的信任关系的对等节点。</p></blockquote><p>……以及：</p><blockquote><p>信任连接模型相比传统匿名网络最大的优势兴许是抵御 Sybil 攻击 [13]，即单个攻击者假扮多重身份渗入网络。由于网络依赖带外信任关系，攻击者的力量只取决于他能骗到多少人信任他，在网上出示多重身份毫无收益。</p></blockquote><p>……听起来这对 Bitcoin 未必好用。</p>","zhText":"你的论证里那股难以置信的劲头，是不是因为你认为*不可能*有比「100,000 颗 CPU 24/7 全天候以 100% 负荷燃烧、每笔交易发 100,000+ 条冗余消息」更好的方案？\n\n不，完全不是。就像我加入这个主题时说的，我认为用 DHT 网络以某种方式分发工作是个非常有趣的想法，不过在我看来，任何对网络做分区的方案都会更容易受到插入恶意节点的攻击。能想出一个资源占用更少又真正可行的方案就太棒了。\nFreenet 是怎么生成节点 ID 的？我在最新的 Freenet 论文里只看到：\n加入时，节点随机选择一个身份，然后连接那些与它有预先建立的信任关系的对等节点。\n\n……以及：\n信任连接模型相比传统匿名网络最大的优势兴许是抵御 Sybil 攻击 [13]，即单个攻击者假扮多重身份渗入网络。由于网络依赖带外信任关系，攻击者的力量只取决于他能骗到多少人信任他，在网上出示多重身份毫无收益。\n\n……听起来这对 Bitcoin 未必好用。"},{"id":2170,"sid":326,"sat":1,"tid":168,"tt":"latency and locality","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-07","ts":"2010-08-07T16:28:17Z","url":"https://bitcointalk.org/index.php?topic=723.msg8103#msg8103","zh":"<p>一旦你离开「每个节点的影响力与其 CPU 算力成正比」的体系，那你又用什么来判定谁是（大致上的）一个人？</p>","zhText":"一旦你离开「每个节点的影响力与其 CPU 算力成正比」的体系，那你又用什么来判定谁是（大致上的）一个人？"},{"id":2130,"sid":327,"sat":1,"tid":167,"tt":"Bitcoin minting is thermodynamically perverse","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-07","ts":"2010-08-07T17:46:09Z","url":"https://bitcointalk.org/index.php?topic=721.msg8114#msg8114","zh":"<p>这和黄金与挖金子的情形一样。挖金的边际成本总是倾向于贴近金价。挖金是浪费，但这种浪费远小于让黄金作为交换媒介可用所带来的效用。</p><p>我认为 Bitcoin 也会是同样的情形。Bitcoin 使交换成为可能所带来的效用，将远超其所耗电费。因而，<i>没有</i> Bitcoin 才是净浪费。</p><blockquote><p>总的来说，我也不认同「币生成的巨大计算负担是现行系统的必要代价」这种说法。据我理解，货币创造从根本上是以*时间*计量的——倘若那才是根本控制变量，那为什么每个人还需要在给定时间段内「掷尽可能多的骰子」？币所有权和交易的「证明链」并不依赖硬币的生成方式。</p></blockquote><p>每个节点对网络的影响力与其 CPU 算力成正比。向网络证明你有多少 CPU 算力的唯一办法，就是实际使用它。</p><p>倘若每个人还有限量的其他什么东西，可以用来做一人一票，我想不出。IP 地址……比 CPU 容易大量获取得多。</p><p>我想<i>在某些时间点</i>测量 CPU 算力兴许是可能的。譬如，CPU 算力挑战只在每 10 分钟里平均运行 1 分钟。你仍然可以在给定时间点证明你的总算力，而不必一直运行。不过我不确定这怎么能实现。一个当时不在场的节点，没有办法知道过去这条链其实是在「穿插着歇 9 分钟」的占空比下生成的，而非连续不停。</p><p>工作证明有个很好的性质：它可以通过不可信的中介转发。我们不必担心通信的监管链。谁告诉你最长链的并不重要，工作证明自己会说话。</p>","zhText":"这和黄金与挖金子的情形一样。挖金的边际成本总是倾向于贴近金价。挖金是浪费，但这种浪费远小于让黄金作为交换媒介可用所带来的效用。\n我认为 Bitcoin 也会是同样的情形。Bitcoin 使交换成为可能所带来的效用，将远超其所耗电费。因而，没有 Bitcoin 才是净浪费。\n总的来说，我也不认同「币生成的巨大计算负担是现行系统的必要代价」这种说法。据我理解，货币创造从根本上是以*时间*计量的——倘若那才是根本控制变量，那为什么每个人还需要在给定时间段内「掷尽可能多的骰子」？币所有权和交易的「证明链」并不依赖硬币的生成方式。\n\n每个节点对网络的影响力与其 CPU 算力成正比。向网络证明你有多少 CPU 算力的唯一办法，就是实际使用它。\n倘若每个人还有限量的其他什么东西，可以用来做一人一票，我想不出。IP 地址……比 CPU 容易大量获取得多。\n我想在某些时间点测量 CPU 算力兴许是可能的。譬如，CPU 算力挑战只在每 10 分钟里平均运行 1 分钟。你仍然可以在给定时间点证明你的总算力，而不必一直运行。不过我不确定这怎么能实现。一个当时不在场的节点，没有办法知道过去这条链其实是在「穿插着歇 9 分钟」的占空比下生成的，而非连续不停。\n工作证明有个很好的性质：它可以通过不可信的中介转发。我们不必担心通信的监管链。谁告诉你最长链的并不重要，工作证明自己会说话。"},{"id":1825,"sid":328,"sat":1,"tid":151,"tt":"A proposal for a semi-automated Escrow mechanism","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-07","ts":"2010-08-07T20:04:59Z","url":"https://bitcointalk.org/index.php?topic=645.msg8137#msg8137","zh":"<blockquote><p>由于存在这种制约手段，它不太可能被用作托管机制</p></blockquote><p>真的吗？你觉得人们会理解不了它的好处吗？（倘若你的回应是争辩说它根本没有好处，我猜那反倒印证了人们理解不了它。）</p>","zhText":"由于存在这种制约手段，它不太可能被用作托管机制\n\n真的吗？你觉得人们会理解不了它的好处吗？（倘若你的回应是争辩说它根本没有好处，我猜那反倒印证了人们理解不了它。）"},{"id":2171,"sid":329,"sat":1,"tid":169,"tt":"Escrow","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-07","ts":"2010-08-07T20:13:52Z","url":"https://bitcointalk.org/index.php?topic=750.msg8140#msg8140","zh":"<p>下面是软件上可行的托管交易的一个概要。这没有实现，我近期多半也没时间实现，但让你知道什么是可能的。</p><p>基本托管：买方把一笔付款存入托管。卖方收到一笔钱在托管中的交易，但在买方解锁之前他不能花。买方可以在那之后的任何时间放款，也可以永远不放。这不允许买方把钱拿回去，但确实给了他一个选项：出于怨恨永远不放行，把钱烧掉。卖方则可以把钱退回给买方。</p><p>这个系统虽然不保证双方免于损失，但它把作弊的利润抽掉了。</p><p>倘若卖方不发货，他就拿不到钱。买方的钱还是打了水漂，但至少卖方没有骗人的金钱动机。</p><p>买方无法靠不付款获益。他拿不回托管的钱。他不可能因资金不足而付不了款。卖方可以看到资金已锁定到自己的密钥上、不能发给别人。</p><p>当然，经济学家会说，一个欺诈卖方可以开始讨价还价，譬如「你放款，我分你一半」，但到了那一步，信任荡然无存、怨气冲天，谈判不太可能发生。一个已经在违背诺言偷钱的骗子，凭什么会守约分你一半？我想对适度的金额，几乎所有人都会基于原则拒绝。</p>","zhText":"下面是软件上可行的托管交易的一个概要。这没有实现，我近期多半也没时间实现，但让你知道什么是可能的。\n基本托管：买方把一笔付款存入托管。卖方收到一笔钱在托管中的交易，但在买方解锁之前他不能花。买方可以在那之后的任何时间放款，也可以永远不放。这不允许买方把钱拿回去，但确实给了他一个选项：出于怨恨永远不放行，把钱烧掉。卖方则可以把钱退回给买方。\n这个系统虽然不保证双方免于损失，但它把作弊的利润抽掉了。\n倘若卖方不发货，他就拿不到钱。买方的钱还是打了水漂，但至少卖方没有骗人的金钱动机。\n买方无法靠不付款获益。他拿不回托管的钱。他不可能因资金不足而付不了款。卖方可以看到资金已锁定到自己的密钥上、不能发给别人。\n当然，经济学家会说，一个欺诈卖方可以开始讨价还价，譬如「你放款，我分你一半」，但到了那一步，信任荡然无存、怨气冲天，谈判不太可能发生。一个已经在违背诺言偷钱的骗子，凭什么会守约分你一半？我想对适度的金额，几乎所有人都会基于原则拒绝。"},{"id":1890,"sid":330,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-07","ts":"2010-08-07T21:16:01Z","url":"https://bitcointalk.org/index.php?topic=648.msg8145#msg8145","zh":"<blockquote><p>CRITICAL_BLOCK 是一个包含 for 循环的宏。断言失败说明循环体里调用了 break。这个块里唯一的 break 语句在第 2762 行。原始源文件里这个临界块中并没有 break 语句。我认为你必须删掉 2759-2762 行。原始 main.cpp 里没有这种东西。</p></blockquote><p>抱歉。CRITICAL_BLOCK 并不完美。你得小心别用它 break 或 continue 跳出去。有一个 assert 会捕获 break 并警告。用它可以挨批评，但没有它，语法会臃肿得多、也更容易出错。</p><p>有没有可能 SSE2 代码在 Intel 上慢是因为某种可以绕过的怪癖？譬如，某个东西不对齐时能工作但很慢，或者缓存颠簸，或者某条指令特别慢？我不确定这东西还找不找得到，但 Intel 以前好像有个能按指令级别做性能分析的分析器。我猜倘若 tcatm 手头没有装那种慢处理器的机器可测，希望就不大。但它要是能在大多数 CPU 上跑起来就太好了。</p>","zhText":"CRITICAL_BLOCK 是一个包含 for 循环的宏。断言失败说明循环体里调用了 break。这个块里唯一的 break 语句在第 2762 行。原始源文件里这个临界块中并没有 break 语句。我认为你必须删掉 2759-2762 行。原始 main.cpp 里没有这种东西。\n\n抱歉。CRITICAL_BLOCK 并不完美。你得小心别用它 break 或 continue 跳出去。有一个 assert 会捕获 break 并警告。用它可以挨批评，但没有它，语法会臃肿得多、也更容易出错。\n有没有可能 SSE2 代码在 Intel 上慢是因为某种可以绕过的怪癖？譬如，某个东西不对齐时能工作但很慢，或者缓存颠簸，或者某条指令特别慢？我不确定这东西还找不找得到，但 Intel 以前好像有个能按指令级别做性能分析的分析器。我猜倘若 tcatm 手头没有装那种慢处理器的机器可测，希望就不大。但它要是能在大多数 CPU 上跑起来就太好了。"},{"id":2208,"sid":null,"sat":0,"tid":170,"tt":"bitcoin generation broken in 0.3.8?  (64-bit)","src":"Bitcointalk","author":"lachesis","date":"2010-08-09","ts":"2010-08-09T15:45:39Z","url":"https://bitcointalk.org/index.php?topic=753.msg8369#msg8369","zh":"<blockquote><p>我猜那个条件编译是为可能没有 sse2 的老 32 位机器准备的。不幸的是，不存在没有 sse2 的 64 位 x86_64，因而条件编译产生了一个空函数体，什么都不做。</p></blockquote><p>这又是支持 cmake 或类似工具的一个论据。</p>","zhText":"我猜那个条件编译是为可能没有 sse2 的老 32 位机器准备的。不幸的是，不存在没有 sse2 的 64 位 x86_64，因而条件编译产生了一个空函数体，什么都不做。\n\n这又是支持 cmake 或类似工具的一个论据。"},{"id":2209,"sid":331,"sat":1,"tid":170,"tt":"bitcoin generation broken in 0.3.8?  (64-bit)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T18:50:41Z","url":"https://bitcointalk.org/index.php?topic=753.msg8388#msg8388","zh":"<p>我发现 SSE2 只带来 2% 的轻微提速，似乎不值得为之牺牲兼容性。我选了更保守的方案。</p><p>在我看来 Crypto++ 不像是在运行时决定是否用 SSE2。有一处它检测 SSE2 是为了决定某个块数参数，但 SSE2 相关的东西在编译期全是 #ifdef，我看不出它在运行时怎么切换。兴许我没找对地方。</p><p>我们该在所有 makefile 里启用 SSE2 吗？看起来必须，万一有人用 64 位编译。</p><p>我会重编 Linux 0.3.8 发布版的 64 位部分。</p>","zhText":"我发现 SSE2 只带来 2% 的轻微提速，似乎不值得为之牺牲兼容性。我选了更保守的方案。\n在我看来 Crypto++ 不像是在运行时决定是否用 SSE2。有一处它检测 SSE2 是为了决定某个块数参数，但 SSE2 相关的东西在编译期全是 #ifdef，我看不出它在运行时怎么切换。兴许我没找对地方。\n我们该在所有 makefile 里启用 SSE2 吗？看起来必须，万一有人用 64 位编译。\n我会重编 Linux 0.3.8 发布版的 64 位部分。"},{"id":2139,"sid":null,"sat":0,"tid":167,"tt":"Bitcoin minting is thermodynamically perverse","src":"Bitcointalk","author":"MoonShadow","date":"2010-08-09","ts":"2010-08-09T19:12:09Z","url":"https://bitcointalk.org/index.php?topic=721.msg8394#msg8394","zh":"<p>消耗的电力并非浪费。它不过是所有者愿意投入到这个项目中的东西罢了。即便如此，它甚至可以作为「废热」被利用。我是电工出身，多年前在露天停车场的保温喷淋管线上安装「伴热带」网络时，冒出了下面这个想法。</p><p>「伴热带」是一种相当昂贵的电缆，有一个连续的电阻芯，沿它贴着的管道全长产生低强度的电热。保温层再包裹在这个组件外面。最好、最高效的系统有一个温度响应芯：电缆任何一段越接近冰点，芯的电阻就越低，从而在更冷、保温更差的区段产生更多热量。</p><p>当时我在玩一种早期的分布式计算，叫 \"Condor\"，它允许把单个进程导出到网络上其他计算机，再把它们的磁盘 I/O 跨网络传回主服务器，而进程本身察觉不到差别。我当时想：一个连在扁平网线上的小型「片上计算机」既能有效地以本地温度敏感性把管道维持在冰点以上，又能以 bitcoin 所需的方式 crunching 数字。这样的想法需要网络供电能力很强，才不至于需要沿管道设置不可接受的电源点数量，但想象一下这种系统对那些位于极高（或极低）纬度、有此类需求的公司有多大用处。</p><p>譬如，把这样的系统一英里一英里地改装到阿拉斯加输油管上，会怎样？</p>","zhText":"消耗的电力并非浪费。它不过是所有者愿意投入到这个项目中的东西罢了。即便如此，它甚至可以作为「废热」被利用。我是电工出身，多年前在露天停车场的保温喷淋管线上安装「伴热带」网络时，冒出了下面这个想法。\n「伴热带」是一种相当昂贵的电缆，有一个连续的电阻芯，沿它贴着的管道全长产生低强度的电热。保温层再包裹在这个组件外面。最好、最高效的系统有一个温度响应芯：电缆任何一段越接近冰点，芯的电阻就越低，从而在更冷、保温更差的区段产生更多热量。\n当时我在玩一种早期的分布式计算，叫 \"Condor\"，它允许把单个进程导出到网络上其他计算机，再把它们的磁盘 I/O 跨网络传回主服务器，而进程本身察觉不到差别。我当时想：一个连在扁平网线上的小型「片上计算机」既能有效地以本地温度敏感性把管道维持在冰点以上，又能以 bitcoin 所需的方式 crunching 数字。这样的想法需要网络供电能力很强，才不至于需要沿管道设置不可接受的电源点数量，但想象一下这种系统对那些位于极高（或极低）纬度、有此类需求的公司有多大用处。\n譬如，把这样的系统一英里一英里地改装到阿拉斯加输油管上，会怎样？"},{"id":2211,"sid":null,"sat":0,"tid":170,"tt":"bitcoin generation broken in 0.3.8?  (64-bit)","src":"Bitcointalk","author":"dkaparis","date":"2010-08-09","ts":"2010-08-09T19:31:37Z","url":"https://bitcointalk.org/index.php?topic=753.msg8396#msg8396","zh":"<blockquote><p>这又是支持 cmake 或类似工具的一个论据。</p></blockquote><p>这是个<a href=\"http://bitbucket.org/dkaparis/bitcoin-cmake/wiki/Home\">事实</a>。</p><p>我打算最终理清所有构建麻烦，做出一套跨 win/unix 32/64 位平台组合的可靠构建流程。</p><p>说到这，我正在搞 windows 的 x64 构建，注意到 64 位 MSVC 下 X86_SHA256_HashBlocks 函数被推迟到一个项目里不存在的外部定义。在原版 CryptoPP 库里它似乎在一个单独的 asm 模块里。我想知道大家在 windows 上是怎么构建 x64 的，是不是设置 define 来用 C 源码版的 sha？</p>","zhText":"这又是支持 cmake 或类似工具的一个论据。\n\n这是个事实。\n我打算最终理清所有构建麻烦，做出一套跨 win/unix 32/64 位平台组合的可靠构建流程。\n说到这，我正在搞 windows 的 x64 构建，注意到 64 位 MSVC 下 X86_SHA256_HashBlocks 函数被推迟到一个项目里不存在的外部定义。在原版 CryptoPP 库里它似乎在一个单独的 asm 模块里。我想知道大家在 windows 上是怎么构建 x64 的，是不是设置 define 来用 C 源码版的 sha？"},{"id":2223,"sid":332,"sat":1,"tid":172,"tt":"Version 0.3.8.1 update for Linux 64-bit","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T19:46:58Z","url":"https://bitcointalk.org/index.php?topic=765.msg8402#msg8402","zh":"<p>0.3.6 版本切换到 Crypto++ 5.6.0 SHA-256 时，Linux 64 位构建的生成功能坏了。0.3.8.1 已在 SourceForge 上，64 位二进制已更新。</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download</a></p><p>0.3.8 之后的版本可能会要求 SSE2。有人还在用会遇到问题的 Pentium 3 或更老的机器吗？</p>","zhText":"0.3.6 版本切换到 Crypto++ 5.6.0 SHA-256 时，Linux 64 位构建的生成功能坏了。0.3.8.1 已在 SourceForge 上，64 位二进制已更新。\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download\n0.3.8 之后的版本可能会要求 SSE2。有人还在用会遇到问题的 Pentium 3 或更老的机器吗？"},{"id":2221,"sid":null,"sat":0,"tid":171,"tt":"What could be the transition plan to Y2038 compliant Bitcoin? (it already is)","src":"Bitcointalk","author":"MoonShadow","date":"2010-08-09","ts":"2010-08-09T20:12:02Z","url":"https://bitcointalk.org/index.php?topic=760.msg8412#msg8412","zh":"<blockquote><p>时间戳的问题在于：unix 时间戳作为 32 位整数，在 2038 年*必将*溢出。我是程序员，你可以 google「unix time problem」或「2038」了解更多。</p></blockquote><p>我从外行的角度理解 Y2038 问题。我的意思是，我怀疑 bitcoin 的结构里存在 Y2038 问题。既然时间戳只相对于区块链中某个特定位置，客户端没有理由要求区块内的时间戳准确。再说，什么算准确？GMT？我很确定我的客户端用本地时间也跑得好好的。倘若这可能导致成功的区块被拒，请告诉我。</p>","zhText":"时间戳的问题在于：unix 时间戳作为 32 位整数，在 2038 年*必将*溢出。我是程序员，你可以 google「unix time problem」或「2038」了解更多。\n\n我从外行的角度理解 Y2038 问题。我的意思是，我怀疑 bitcoin 的结构里存在 Y2038 问题。既然时间戳只相对于区块链中某个特定位置，客户端没有理由要求区块内的时间戳准确。再说，什么算准确？GMT？我很确定我的客户端用本地时间也跑得好好的。倘若这可能导致成功的区块被拒，请告诉我。"},{"id":2222,"sid":333,"sat":1,"tid":171,"tt":"What could be the transition plan to Y2038 compliant Bitcoin? (it already is)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T20:13:26Z","url":"https://bitcointalk.org/index.php?topic=760.msg8413#msg8413","zh":"<p><b>无符号</b> int 能撑到 2106 年。到那时网络肯定至少得彻底翻新一次。</p><p>不应该存在任何有符号 int。倘若你在哪发现了有符号 int，请告诉我（请趁未来 25 年内），我会把它改成 unsigned int。</p>","zhText":"无符号 int 能撑到 2106 年。到那时网络肯定至少得彻底翻新一次。\n不应该存在任何有符号 int。倘若你在哪发现了有符号 int，请告诉我（请趁未来 25 年内），我会把它改成 unsigned int。"},{"id":2212,"sid":334,"sat":1,"tid":170,"tt":"bitcoin generation broken in 0.3.8?  (64-bit)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T20:34:06Z","url":"https://bitcointalk.org/index.php?topic=753.msg8417#msg8417","zh":"<p>我上传了重编 64 位的 Linux 0.3.8.1。我用它跑了难度 1 测试，能生成区块。</p><p><a href=\"http://bitcointalk.org/index.php?topic=765.0\">http://bitcointalk.org/index.php?topic=765.0</a></p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download</a></p>","zhText":"我上传了重编 64 位的 Linux 0.3.8.1。我用它跑了难度 1 测试，能生成区块。\nhttp://bitcointalk.org/index.php?topic=765.0\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download"},{"id":2225,"sid":null,"sat":0,"tid":172,"tt":"Version 0.3.8.1 update for Linux 64-bit","src":"Bitcointalk","author":"jgarzik","date":"2010-08-09","ts":"2010-08-09T20:46:14Z","url":"https://bitcointalk.org/index.php?topic=765.msg8421#msg8421","zh":"<p>我的看法：SSE 应该是<i>生成</i>的硬性要求，而非运行客户端的要求。</p>","zhText":"我的看法：SSE 应该是生成的硬性要求，而非运行客户端的要求。"},{"id":2226,"sid":335,"sat":1,"tid":172,"tt":"Version 0.3.8.1 update for Linux 64-bit","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T20:55:06Z","url":"https://bitcointalk.org/index.php?topic=765.msg8422#msg8422","zh":"<p>有道理，我相信没有 SSE2 时你可以关掉生成来运行。</p><p>在 cryptopp/config.h 顶部加上怎么样：</p><pre><code>#if !defined(_M_X64) &amp;&amp; !defined(__x86_64__)\n#define CRYPTOPP_DISABLE_SSE2  1\n#endif</code></pre><p>这会对 32 位构建禁用 SSE2。（至少在 GCC 或 MSVC 下）</p>","zhText":"有道理，我相信没有 SSE2 时你可以关掉生成来运行。\n在 cryptopp/config.h 顶部加上怎么样：\n#if !defined(_M_X64) && !defined(__x86_64__)\n#define CRYPTOPP_DISABLE_SSE2 1\n#endif这会对 32 位构建禁用 SSE2。（至少在 GCC 或 MSVC 下）"},{"id":2237,"sid":336,"sat":1,"tid":173,"tt":"Connection limits","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T20:58:45Z","url":"https://bitcointalk.org/index.php?topic=766.msg8424#msg8424","zh":"<p>SVN rev 125：\n- 即使已有 8 条入站连接，也始终维持 8 条出站连接\n- 出站连接限制为每个 a.b.?.? 段一条\n- 新增 -maxconnections=# 开关</p><p>我加了（目前未写进文档的）开关 -maxconnections=#。除非你的路由器撑不住大量连接，否则不要用它；需要的话试试 -maxconnections=30。</p><p>-maxconnections 我没怎么测过，有人能帮忙测测吗？</p>","zhText":"SVN rev 125：\n- 即使已有 8 条入站连接，也始终维持 8 条出站连接\n- 出站连接限制为每个 a.b.?.? 段一条\n- 新增 -maxconnections=# 开关\n我加了（目前未写进文档的）开关 -maxconnections=#。除非你的路由器撑不住大量连接，否则不要用它；需要的话试试 -maxconnections=30。\n-maxconnections 我没怎么测过，有人能帮忙测测吗？"},{"id":2140,"sid":337,"sat":1,"tid":167,"tt":"Bitcoin minting is thermodynamically perverse","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-09","ts":"2010-08-09T21:28:39Z","url":"https://bitcointalk.org/index.php?topic=721.msg8431#msg8431","zh":"<p>倘若你需要给家里取暖，你计算机的热量就没有浪费。倘若你住的地方用电取暖，那你计算机的热量就不是浪费。用计算机发热取暖，成本是一样的。</p><p>倘若你有比电更便宜的取暖方式，那浪费不过是两者的差价罢了。</p><p>倘若是夏天、你开着空调，那就是两倍。</p><p>Bitcoin 生成最终会流向电费最便宜的地方。兴许是寒冷地区用电取暖的地方，那里基本上等于免费。</p>","zhText":"倘若你需要给家里取暖，你计算机的热量就没有浪费。倘若你住的地方用电取暖，那你计算机的热量就不是浪费。用计算机发热取暖，成本是一样的。\n倘若你有比电更便宜的取暖方式，那浪费不过是两者的差价罢了。\n倘若是夏天、你开着空调，那就是两倍。\nBitcoin 生成最终会流向电费最便宜的地方。兴许是寒冷地区用电取暖的地方，那里基本上等于免费。"},{"id":2235,"sid":null,"sat":0,"tid":172,"tt":"Version 0.3.8.1 update for Linux 64-bit","src":"Bitcointalk","author":"ArtForz","date":"2010-08-10","ts":"2010-08-10T09:37:49Z","url":"https://bitcointalk.org/index.php?topic=765.msg8505#msg8505","zh":"<p>修复在 svn r124，r125 加了 -maxconnections。</p>","zhText":"修复在 svn r124，r125 加了 -maxconnections。"},{"id":1689,"sid":null,"sat":0,"tid":139,"tt":"Running on a port other than 8333","src":"Bitcointalk","author":"lachesis","date":"2010-08-10","ts":"2010-08-10T15:24:55Z","url":"https://bitcointalk.org/index.php?topic=589.msg8544#msg8544","zh":"<p>你有没有针对 SVN 修订 125 更新的这个补丁的版本？<del>另外，Bitcoin 是不是以独占方式打开 BerkeleyDB，从而不需要文件锁？</del>不是——我自己测过了。</p>","zhText":"你有没有针对 SVN 修订 125 更新的这个补丁的版本？另外，Bitcoin 是不是以独占方式打开 BerkeleyDB，从而不需要文件锁？不是——我自己测过了。"},{"id":1690,"sid":null,"sat":0,"tid":139,"tt":"Running on a port other than 8333","src":"Bitcointalk","author":"jgarzik","date":"2010-08-10","ts":"2010-08-10T17:07:15Z","url":"https://bitcointalk.org/index.php?topic=589.msg8552#msg8552","zh":"<blockquote><p>你有没有针对 SVN 修订 125 更新的这个补丁的版本？<del>另外，Bitcoin 是不是以独占方式打开 BerkeleyDB，从而不需要文件锁？</del>不是——我自己测过了。</p></blockquote><p>它确实以 DB_PRIVATE 打开。</p><p><a href=\"http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/C/envopen.html\">http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/C/envopen.html</a></p>","zhText":"你有没有针对 SVN 修订 125 更新的这个补丁的版本？另外，Bitcoin 是不是以独占方式打开 BerkeleyDB，从而不需要文件锁？不是——我自己测过了。\n\n它确实以 DB_PRIVATE 打开。\nhttp://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/C/envopen.html"},{"id":2244,"sid":null,"sat":0,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Red","date":"2010-08-10","ts":"2010-08-10T17:29:44Z","url":"https://bitcointalk.org/index.php?topic=770.msg8554#msg8554","zh":"<blockquote><p>虽然我最近在读<a href=\"http://en.wikipedia.org/wiki/Zero-knowledge_proof\">零知识证明</a></p></blockquote><p>有意思的想法，值得重新审视！谢谢。有一阵子没想到它们了。</p>","zhText":"虽然我最近在读零知识证明\n\n有意思的想法，值得重新审视！谢谢。有一阵子没想到它们了。"},{"id":2178,"sid":null,"sat":0,"tid":169,"tt":"Escrow","src":"Bitcointalk","author":"jgarzik","date":"2010-08-10","ts":"2010-08-10T18:53:57Z","url":"https://bitcointalk.org/index.php?topic=750.msg8566#msg8566","zh":"<blockquote><p>Satoshi 的方案很好，因为倘若客户能把钱拿回去，对卖方就是大麻烦。看看现在互联网信用卡支付和拒付的现状。拒付是卖方的头号大坑，bitcoin 必须不惜一切代价避免它</p></blockquote><p>去问问真实世界的商户，看他们愿不愿意告诉客户：你的钱有可能永远消失，任何一方都无法追回。</p>","zhText":"Satoshi 的方案很好，因为倘若客户能把钱拿回去，对卖方就是大麻烦。看看现在互联网信用卡支付和拒付的现状。拒付是卖方的头号大坑，bitcoin 必须不惜一切代价避免它\n\n去问问真实世界的商户，看他们愿不愿意告诉客户：你的钱有可能永远消失，任何一方都无法追回。"},{"id":2179,"sid":null,"sat":0,"tid":169,"tt":"Escrow","src":"Bitcointalk","author":"nelisky","date":"2010-08-10","ts":"2010-08-10T20:20:36Z","url":"https://bitcointalk.org/index.php?topic=750.msg8585#msg8585","zh":"<p>无论技术选项有哪些，我认为按定义，托管始终需要是一个受信任实体。我看得出来，顺利情形下的自动化流程相当容易：</p><p>- 买方把 btc 发给托管，指明收款地址\n  - 卖方看到托管中的 btc，标注将发往他的地址\n  - 买方可以放款给卖方\n  - 托管会在 x 天后自动放款\n  - 双方都可以发起投诉</p><p>我只会把上面这些自动化。出了问题时，双方都应向托管付费（这笔费用是不是可以提前充值开户时交？），如此这般人人都有损失。然后由托管居中调解。</p><p>因为有费用*而且*有人工中间人，长期来看成功欺诈在经济上多半就不划算了。已经受信任的人是这一角色的理想人选，兴许我们这些「普通人」中的某些人可以收一点小钱，就近协助核实双方的指控。</p><p>然而烧钱方案虽然极好地防止了经济上可行的欺诈，却对报复无能为力，而且一旦一方不诚实，实际上让所有人都受损。我绝不会背书它。</p>","zhText":"无论技术选项有哪些，我认为按定义，托管始终需要是一个受信任实体。我看得出来，顺利情形下的自动化流程相当容易：\n- 买方把 btc 发给托管，指明收款地址\n - 卖方看到托管中的 btc，标注将发往他的地址\n - 买方可以放款给卖方\n - 托管会在 x 天后自动放款\n - 双方都可以发起投诉\n我只会把上面这些自动化。出了问题时，双方都应向托管付费（这笔费用是不是可以提前充值开户时交？），如此这般人人都有损失。然后由托管居中调解。\n因为有费用*而且*有人工中间人，长期来看成功欺诈在经济上多半就不划算了。已经受信任的人是这一角色的理想人选，兴许我们这些「普通人」中的某些人可以收一点小钱，就近协助核实双方的指控。\n然而烧钱方案虽然极好地防止了经济上可行的欺诈，却对报复无能为力，而且一旦一方不诚实，实际上让所有人都受损。我绝不会背书它。"},{"id":2236,"sid":338,"sat":1,"tid":172,"tt":"Version 0.3.8.1 update for Linux 64-bit","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-10","ts":"2010-08-10T23:46:00Z","url":"https://bitcointalk.org/index.php?topic=765.msg8628#msg8628","zh":"<p>SVN rev 128：在 32 位上禁用 SSE2。这可能只对 MSVC 和 GCC 生效。其他编译器可能有不同的 64 位 define。</p>","zhText":"SVN rev 128：在 32 位上禁用 SSE2。这可能只对 MSVC 和 GCC 生效。其他编译器可能有不同的 64 位 define。"},{"id":2245,"sid":339,"sat":1,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T00:14:22Z","url":"https://bitcointalk.org/index.php?topic=770.msg8637#msg8637","zh":"<p>这是个非常有趣的话题。倘若找到了解法，就能实现一种好得多、更容易、更方便的 Bitcoin。</p><p>最初，一枚币可以只是一串签名。有了时间戳服务，旧的可以在回溯扇出过大之前逐步丢弃，或者硬币可以单独或按面额保存。需要检查不存在双重支出，才是需要全网知晓所有交易的原因。</p><p>挑战在于：如何证明不存在其他花费？看来节点必须知道所有交易才能验证这一点。倘若它只知道 in/outpoint 的哈希，它就无法检查签名以确认某个 outpoint 是否被花过。对此你有什么想法？</p><p>很难想出如何在这种情况下应用零知识证明。</p><p>我们要证明的是某种东西*不存在*，而这似乎要求知道全部、并检查那个东西不在其中。</p>","zhText":"这是个非常有趣的话题。倘若找到了解法，就能实现一种好得多、更容易、更方便的 Bitcoin。\n最初，一枚币可以只是一串签名。有了时间戳服务，旧的可以在回溯扇出过大之前逐步丢弃，或者硬币可以单独或按面额保存。需要检查不存在双重支出，才是需要全网知晓所有交易的原因。\n挑战在于：如何证明不存在其他花费？看来节点必须知道所有交易才能验证这一点。倘若它只知道 in/outpoint 的哈希，它就无法检查签名以确认某个 outpoint 是否被花过。对此你有什么想法？\n很难想出如何在这种情况下应用零知识证明。\n我们要证明的是某种东西*不存在*，而这似乎要求知道全部、并检查那个东西不在其中。"},{"id":2278,"sid":null,"sat":0,"tid":176,"tt":"Compile error in SVN r127","src":"Bitcointalk","author":"jgarzik","date":"2010-08-11","ts":"2010-08-11T01:20:42Z","url":"https://bitcointalk.org/index.php?topic=784.msg8647#msg8647","zh":"<p>在这里构建 r127，我们看到了一些缺失的强制类型转换，显然：</p><pre><code>rpc.cpp: In function json_spirit::Value gethashespersec(const json_spirit::Array&amp;, bool):\nrpc.cpp:340: error: conversion from int64 to json_spirit::Value is ambiguous\njson/json_spirit_value.h:283: note: candidates are: json_spirit::Value_impl&lt;Config>::Value_impl(double) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:275: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(uint64_t) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:267: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(int64_t) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:259: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(int) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:251: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(bool) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:219: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(typename Config::String_type::const_pointer) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\nrpc.cpp:341: error: conversion from int64 to json_spirit::Value is ambiguous\njson/json_spirit_value.h:283: note: candidates are: json_spirit::Value_impl&lt;Config>::Value_impl(double) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:275: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(uint64_t) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:267: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(int64_t) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:259: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(int) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:251: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(bool) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >]\njson/json_spirit_value.h:219: note:                 json_spirit::Value_impl&lt;Config>::Value_impl(typename Config::String_type::const_pointer) [with Config = json_spirit::Config_vector&lt;std::basic_string&lt;char, std::char_traits&lt;char>, std::allocator&lt;char> > >] &lt;near match></code></pre><p>下面的补丁似乎能解决问题：</p><pre><code>--- a/rpc.cpp\n+++ b/rpc.cpp\n@@ -337,8 +337,8 @@ Value gethashespersec(const Array&amp; params, bool fHelp)\n             \"Returns a recent hashes per second performance measurement while g\n\n     if (GetTimeMillis() - nHPSTimerStart > 8000)\n-        return (int64)0;\n-    return (int64)dHashesPerSec;\n+        return (int64_t)0;\n+    return (int64_t)dHashesPerSec;\n }</code></pre>","zhText":"在这里构建 r127，我们看到了一些缺失的强制类型转换，显然：\nrpc.cpp: In function json_spirit::Value gethashespersec(const json_spirit::Array&, bool):\nrpc.cpp:340: error: conversion from int64 to json_spirit::Value is ambiguous\njson/json_spirit_value.h:283: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:275: note: json_spirit::Value_impl<Config>::Value_impl(uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:267: note: json_spirit::Value_impl<Config>::Value_impl(int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:259: note: json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:251: note: json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:219: note: json_spirit::Value_impl<Config>::Value_impl(typename Config::String_type::const_pointer) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\nrpc.cpp:341: error: conversion from int64 to json_spirit::Value is ambiguous\njson/json_spirit_value.h:283: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:275: note: json_spirit::Value_impl<Config>::Value_impl(uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:267: note: json_spirit::Value_impl<Config>::Value_impl(int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:259: note: json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:251: note: json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]\njson/json_spirit_value.h:219: note: json_spirit::Value_impl<Config>::Value_impl(typename Config::String_type::const_pointer) [with Config = json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >] <near match>下面的补丁似乎能解决问题：\n--- a/rpc.cpp\n+++ b/rpc.cpp\n@@ -337,8 +337,8 @@ Value gethashespersec(const Array& params, bool fHelp)\n \"Returns a recent hashes per second performance measurement while g\n\n if (GetTimeMillis() - nHPSTimerStart > 8000)\n- return (int64)0;\n- return (int64)dHashesPerSec;\n+ return (int64_t)0;\n+ return (int64_t)dHashesPerSec;\n }"},{"id":2180,"sid":340,"sat":1,"tid":169,"tt":"Escrow","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T01:30:02Z","url":"https://bitcointalk.org/index.php?topic=750.msg8649#msg8649","zh":"<blockquote><p>去问问真实世界的商户，看他们愿不愿意告诉客户：你的钱有可能永远消失，任何一方都无法追回。</p></blockquote><p>你这么说，听起来像是钱会莫名其妙地丢掉、即便双方想合作也拿不回来。</p><p>你预先付款买东西时，钱同样拿不回来。消费者对此看起来习以为常。不会比那更糟。</p><p>任何一方永远都有把钱释放给对方的选项。</p><blockquote><p>然而烧钱方案虽然极好地防止了经济上可行的欺诈，却对报复无能为力，而且一旦一方不诚实，实际上让所有人都受损。我绝不会背书它。</p></blockquote><p>那你也一定反对常见的预付款制度——那种制度里吃亏的是客户。</p><p>预付款：客户吃亏，骗子拿到钱。\n简单托管：客户吃亏，但骗子也拿不到钱。</p><p>你们是在说预付款更好吗？因为至少骗子拿到了钱，至少有人得到了它？</p><p>想象有人偷了你的东西。你拿不回来，但倘若可以——倘若它有一个可远程触发的自毁开关——你会用吗？让窃贼知道你所有的东西都有自毁开关、偷了也没用（虽然你自己也照样失去它），这是好事吗？倘若他们还回来，你可以重新激活。</p><p>想象金子被偷就变成铅。窃贼还回来，它又变回金子。</p><p>在我看来，问题可能还是在于以正确的方式呈现它。首先，在博弈论讨论的语境里别把「烧钱」说得那么直白。钱从来不会被真正烧掉。你永远保有随时放款的选项。</p>","zhText":"去问问真实世界的商户，看他们愿不愿意告诉客户：你的钱有可能永远消失，任何一方都无法追回。\n\n你这么说，听起来像是钱会莫名其妙地丢掉、即便双方想合作也拿不回来。\n你预先付款买东西时，钱同样拿不回来。消费者对此看起来习以为常。不会比那更糟。\n任何一方永远都有把钱释放给对方的选项。\n然而烧钱方案虽然极好地防止了经济上可行的欺诈，却对报复无能为力，而且一旦一方不诚实，实际上让所有人都受损。我绝不会背书它。\n\n那你也一定反对常见的预付款制度——那种制度里吃亏的是客户。\n预付款：客户吃亏，骗子拿到钱。\n简单托管：客户吃亏，但骗子也拿不到钱。\n你们是在说预付款更好吗？因为至少骗子拿到了钱，至少有人得到了它？\n想象有人偷了你的东西。你拿不回来，但倘若可以——倘若它有一个可远程触发的自毁开关——你会用吗？让窃贼知道你所有的东西都有自毁开关、偷了也没用（虽然你自己也照样失去它），这是好事吗？倘若他们还回来，你可以重新激活。\n想象金子被偷就变成铅。窃贼还回来，它又变回金子。\n在我看来，问题可能还是在于以正确的方式呈现它。首先，在博弈论讨论的语境里别把「烧钱」说得那么直白。钱从来不会被真正烧掉。你永远保有随时放款的选项。"},{"id":2279,"sid":341,"sat":1,"tid":176,"tt":"Compile error in SVN r127","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T01:42:30Z","url":"https://bitcointalk.org/index.php?topic=784.msg8651#msg8651","zh":"<p>已更新 SVN。谢谢。</p><p>指望将来不在这上面反复栽跟头，希望渺茫。它反正不影响我编译。</p>","zhText":"已更新 SVN。谢谢。\n指望将来不在这上面反复栽跟头，希望渺茫。它反正不影响我编译。"},{"id":2263,"sid":null,"sat":0,"tid":175,"tt":"Lost large number of bitcoins","src":"Bitcointalk","author":"sirius","date":"2010-08-11","ts":"2010-08-11T02:01:53Z","url":"https://bitcointalk.org/index.php?topic=782.msg8657#msg8657","zh":"<p>我在 FAQ 里加了「每笔交易之后都要备份」的警告。顺便问一句，备份之前有必要停掉客户端吗？那有点麻烦。自动备份确实会很有用。</p>","zhText":"我在 FAQ 里加了「每笔交易之后都要备份」的警告。顺便问一句，备份之前有必要停掉客户端吗？那有点麻烦。自动备份确实会很有用。"},{"id":2247,"sid":null,"sat":0,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Red","date":"2010-08-11","ts":"2010-08-11T05:13:24Z","url":"https://bitcointalk.org/index.php?topic=770.msg8682#msg8682","zh":"<blockquote><p>很难想出如何在这种情况下应用零知识证明。</p></blockquote><p>我也很难！:-) 不过重新读一遍很有意思！</p><p>本来指望它能激发一些洞见，让节点在不必人人持有全部交易做复查的情况下，证明自己「始终遵守」区块生成规则。</p><p>没成。:-)</p>","zhText":"很难想出如何在这种情况下应用零知识证明。\n\n我也很难！:-) 不过重新读一遍很有意思！\n本来指望它能激发一些洞见，让节点在不必人人持有全部交易做复查的情况下，证明自己「始终遵守」区块生成规则。\n没成。:-)"},{"id":1012,"sid":null,"sat":0,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"throughput","date":"2010-08-11","ts":"2010-08-11T07:37:23Z","url":"https://bitcointalk.org/index.php?topic=287.msg8697#msg8697","zh":"<blockquote><p>你应该用<a href=\"http://bitcointalk.org/index.php?topic=363.0\">测试网络</a></p></blockquote><p>测试网有测试的规模。</p><p>嗯，我想那帮人下次要滥用真实网络时，恐不会先征得你的同意。\n他们会直接干。</p><p>我确定，倘若 Bitcoin 连这么简单的入侵都扛不住，那它就一无是处。\n我们应该证明它能扛住真实世界的威胁。<b>比如我这样的</b></p><p>兴许已经有人做过实验了？</p>","zhText":"你应该用测试网络\n\n测试网有测试的规模。\n嗯，我想那帮人下次要滥用真实网络时，恐不会先征得你的同意。\n他们会直接干。\n我确定，倘若 Bitcoin 连这么简单的入侵都扛不住，那它就一无是处。\n我们应该证明它能扛住真实世界的威胁。比如我这样的\n兴许已经有人做过实验了？"},{"id":2281,"sid":null,"sat":0,"tid":177,"tt":"Where is the separate discussion devoted to possible Bitcoin weaknesses.","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-08-11","ts":"2010-08-11T16:10:56Z","url":"https://bitcointalk.org/index.php?topic=788.msg8761#msg8761","zh":"<p>Bitcoin 的 p2p 网络容易受到各种拒绝服务攻击。</p><p>说了。</p><p>你有建设性的修复建议吗？还是你就是那种「因为能所以爽」、以破坏为乐的人？</p><p>我脑子里盘旋着的一些想法，管不管用另说：</p><p>+ 让客户端互相告知自己每单位时间愿意接受多少笔交易。倘若某个客户端发来的更多（在某个容差内），丢弃它。把默认值编译进去，基于典型用户的估计交易数和当前用户数的估计。</p><p>+ 在客户端到客户端的连接过程中要求某种工作证明（有助于防止「Sybil」攻击）。</p><p>这是个活跃的研究领域；譬如看：<a href=\"http://scholar.google.com/scholar?q=ddos+attacks+by+subverting+membership\">http://scholar.google.com/scholar?q=ddos+attacks+by+subverting+membership</a></p>","zhText":"Bitcoin 的 p2p 网络容易受到各种拒绝服务攻击。\n说了。\n你有建设性的修复建议吗？还是你就是那种「因为能所以爽」、以破坏为乐的人？\n我脑子里盘旋着的一些想法，管不管用另说：\n+ 让客户端互相告知自己每单位时间愿意接受多少笔交易。倘若某个客户端发来的更多（在某个容差内），丢弃它。把默认值编译进去，基于典型用户的估计交易数和当前用户数的估计。\n+ 在客户端到客户端的连接过程中要求某种工作证明（有助于防止「Sybil」攻击）。\n这是个活跃的研究领域；譬如看：http://scholar.google.com/scholar?q=ddos+attacks+by+subverting+membership"},{"id":1696,"sid":null,"sat":0,"tid":140,"tt":"Having problems specifing -datadir","src":"Bitcointalk","author":"lachesis","date":"2010-08-11","ts":"2010-08-11T17:58:43Z","url":"https://bitcointalk.org/index.php?topic=601.msg8773#msg8773","zh":"<blockquote><p>我复现了这个问题。数据库不喜欢相对路径。</p><p>\"bitcoind -datadir=./subdir getinfo\" 对着运行中的守护进程是好使的，但以 \"bitcoind -datadir=./subdir\" 启动守护进程就抛那个异常。</p><p>我看应该在传给数据库之前把路径解析成完整路径。</p><p>看来你是第一个用相对路径 -datadir 的人。</p></blockquote><p>我以前也试过，但从没觉得是个大到值得上报的 bug。不过能修复就好了。</p>","zhText":"我复现了这个问题。数据库不喜欢相对路径。\n\"bitcoind -datadir=./subdir getinfo\" 对着运行中的守护进程是好使的，但以 \"bitcoind -datadir=./subdir\" 启动守护进程就抛那个异常。\n我看应该在传给数据库之前把路径解析成完整路径。\n看来你是第一个用相对路径 -datadir 的人。\n\n我以前也试过，但从没觉得是个大到值得上报的 bug。不过能修复就好了。"},{"id":2285,"sid":null,"sat":0,"tid":177,"tt":"Where is the separate discussion devoted to possible Bitcoin weaknesses.","src":"Bitcointalk","author":"Red","date":"2010-08-11","ts":"2010-08-11T18:46:25Z","url":"https://bitcointalk.org/index.php?topic=788.msg8782#msg8782","zh":"<blockquote><p>+ 让客户端互相告知自己每单位时间愿意接受多少笔交易。倘若某个客户端发来的更多（在某个容差内），丢弃它。把默认值编译进去，基于典型用户的估计交易数和当前用户数的估计。</p><p>+ 在客户端到客户端的连接过程中要求某种工作证明（有助于防止「Sybil」攻击）。</p></blockquote><p>我同意后者最终必须做。正是你指出的这些原因，我的 DHT 方案存在缺陷。有趣的是，这全都是「无法实现前者约束」的副作用。</p><p>倘若你允许验证节点随意忽略交易，你就冒着破坏关键要求的风险——所有验证节点接收并记录所有交易。当前的默认假定是所有验证者都尽力接收并记录所有交易。倘若一笔交易被不均匀地延迟、恰好被完成区块的那个节点错过，统计上假定它会被记录在后续区块中。然而，这需要不断地重播该交易以确保它到达。</p><p>假设吞吐量正好，节点说「我在 10 个区块周期内只愿意接 5 笔交易」是有利可图的。那样的话它仍然生成别人无法拒绝的区块，但每个最小区块都会积累更多未记录交易的积压。这引起额外重传，加剧带宽问题。</p><p>实际上你是在依赖不受限节点来补偿受限节点造成的问题。既然受限节点在制造问题、做的验证和记录工作比别的节点少，凭什么它们生成区块得到同等回报？这似乎适得其反。</p><p>更好的说法是：「记录所有交易，否则你不配做验证者！」验证者更少，意味着总体带宽占用更低。也更容易揪出滥用者。</p><p>----ps----</p><p>一个零知识完整性证明可以是：竞争的验证者拒绝一个未包含 99% 已知未决交易的工作证明区块。</p>","zhText":"+ 让客户端互相告知自己每单位时间愿意接受多少笔交易。倘若某个客户端发来的更多（在某个容差内），丢弃它。把默认值编译进去，基于典型用户的估计交易数和当前用户数的估计。\n+ 在客户端到客户端的连接过程中要求某种工作证明（有助于防止「Sybil」攻击）。\n\n我同意后者最终必须做。正是你指出的这些原因，我的 DHT 方案存在缺陷。有趣的是，这全都是「无法实现前者约束」的副作用。\n倘若你允许验证节点随意忽略交易，你就冒着破坏关键要求的风险——所有验证节点接收并记录所有交易。当前的默认假定是所有验证者都尽力接收并记录所有交易。倘若一笔交易被不均匀地延迟、恰好被完成区块的那个节点错过，统计上假定它会被记录在后续区块中。然而，这需要不断地重播该交易以确保它到达。\n假设吞吐量正好，节点说「我在 10 个区块周期内只愿意接 5 笔交易」是有利可图的。那样的话它仍然生成别人无法拒绝的区块，但每个最小区块都会积累更多未记录交易的积压。这引起额外重传，加剧带宽问题。\n实际上你是在依赖不受限节点来补偿受限节点造成的问题。既然受限节点在制造问题、做的验证和记录工作比别的节点少，凭什么它们生成区块得到同等回报？这似乎适得其反。\n更好的说法是：「记录所有交易，否则你不配做验证者！」验证者更少，意味着总体带宽占用更低。也更容易揪出滥用者。\n----ps----\n一个零知识完整性证明可以是：竞争的验证者拒绝一个未包含 99% 已知未决交易的工作证明区块。"},{"id":2273,"sid":null,"sat":0,"tid":175,"tt":"Lost large number of bitcoins","src":"Bitcointalk","author":"gridecon","date":"2010-08-11","ts":"2010-08-11T20:46:08Z","url":"https://bitcointalk.org/index.php?topic=782.msg8795#msg8795","zh":"<blockquote><p>你之前说得对。他的币全部丢失，是因为他先把全部 ฿9000 转给了自己，把它们合并成单个 TxIn。倘若他跳过这一步、直接给自己发 ฿1，他只会损失此前收到的那笔超过 ฿1 的最小付款。</p><p>我认为客户端需要更好地向用户传达 TxIn 和 TxOut。我不知道怎么讲才不会让人糊涂，但客户端选择转哪些币，实实在在地关系到隐私、安全和资产安全。</p></blockquote><p>等等，我又糊涂了。我一直以为那个「惊喜」的要害是：Bitcoin 被编程为在*每一笔*交易时「清空你的钱包」。按我读到的描述，当你把钱从钱包里的地址 A 发到外部地址 B 时，交易实际上是把地址 A 里的*全部*币发出去，不属于 B 的部分发到地址 C——那是你自己的地址。换句话说，就算我的 9000 里只付你一枚，我也是给你寄 1 枚比特币、给我自己的新地址寄 8999 枚。</p><p>换句话说（倘若我没理解错），你做的每笔交易都会让你旧的、备份过的钱包地址被清空。</p>","zhText":"你之前说得对。他的币全部丢失，是因为他先把全部 ฿9000 转给了自己，把它们合并成单个 TxIn。倘若他跳过这一步、直接给自己发 ฿1，他只会损失此前收到的那笔超过 ฿1 的最小付款。\n我认为客户端需要更好地向用户传达 TxIn 和 TxOut。我不知道怎么讲才不会让人糊涂，但客户端选择转哪些币，实实在在地关系到隐私、安全和资产安全。\n\n等等，我又糊涂了。我一直以为那个「惊喜」的要害是：Bitcoin 被编程为在*每一笔*交易时「清空你的钱包」。按我读到的描述，当你把钱从钱包里的地址 A 发到外部地址 B 时，交易实际上是把地址 A 里的*全部*币发出去，不属于 B 的部分发到地址 C——那是你自己的地址。换句话说，就算我的 9000 里只付你一枚，我也是给你寄 1 枚比特币、给我自己的新地址寄 8999 枚。\n换句话说（倘若我没理解错），你做的每笔交易都会让你旧的、备份过的钱包地址被清空。"},{"id":2248,"sid":342,"sat":1,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T21:07:59Z","url":"https://bitcointalk.org/index.php?topic=770.msg8798#msg8798","zh":"<p>还在琢磨这个想法……</p><p>网络唯一要做的，是判断对某个 outpoint 的花费是不是第一次。</p><p>倘若我们愿意让客户端为自己的钱保存历史，那么有些信息兴许不必由网络存储，譬如：\n- 金额\n- 一笔交易中 inpoint 与 outpoint 的关联</p><p>网络跟踪一堆相互独立的 outpoint。它不知道它们属于哪些交易、金额多少。客户端可以查询一个 outpoint 是否已被花掉，并提交一个令人满意的 inpoint 来标记它已花费。网络保存该 outpoint 和证明其已花费的第一个有效 inpoint。inpoint 对其关联的下一个 outpoint 的哈希和盐做签名，如此这般，倘若你知道盐，就能私下出示「该签名签署了某个特定 next outpoint」；但公开地，网络不知道下一个 outpoint 是什么。</p><p>我认为客户端将不得不保存回溯到最初生成硬币的全部历史。发付款的人得向收款人发送数据，同时还要与网络通信以标记 outpoint 已花、并检查这次花费是否为首次。兴许数据传输可以用 e-mail 附件完成。</p><p>客户端必须保存全部历史这一点削弱了隐私收益。经手大量钱的人仍然会看到大量交易历史。由于历史会回溯式地扇出，他们最后可能看到大部分历史。面额可以做得足够细以限制扇出，但经手大量钱的商家仍可能看到很多历史。</p>","zhText":"还在琢磨这个想法……\n网络唯一要做的，是判断对某个 outpoint 的花费是不是第一次。\n倘若我们愿意让客户端为自己的钱保存历史，那么有些信息兴许不必由网络存储，譬如：\n- 金额\n- 一笔交易中 inpoint 与 outpoint 的关联\n网络跟踪一堆相互独立的 outpoint。它不知道它们属于哪些交易、金额多少。客户端可以查询一个 outpoint 是否已被花掉，并提交一个令人满意的 inpoint 来标记它已花费。网络保存该 outpoint 和证明其已花费的第一个有效 inpoint。inpoint 对其关联的下一个 outpoint 的哈希和盐做签名，如此这般，倘若你知道盐，就能私下出示「该签名签署了某个特定 next outpoint」；但公开地，网络不知道下一个 outpoint 是什么。\n我认为客户端将不得不保存回溯到最初生成硬币的全部历史。发付款的人得向收款人发送数据，同时还要与网络通信以标记 outpoint 已花、并检查这次花费是否为首次。兴许数据传输可以用 e-mail 附件完成。\n客户端必须保存全部历史这一点削弱了隐私收益。经手大量钱的人仍然会看到大量交易历史。由于历史会回溯式地扇出，他们最后可能看到大部分历史。面额可以做得足够细以限制扇出，但经手大量钱的商家仍可能看到很多历史。"},{"id":2276,"sid":null,"sat":0,"tid":175,"tt":"Lost large number of bitcoins","src":"Bitcointalk","author":"Insti","date":"2010-08-11","ts":"2010-08-11T21:25:01Z","url":"https://bitcointalk.org/index.php?topic=782.msg8800#msg8800","zh":"<p>你的「钱包」更像你自己的私人银行\n它包含许多不同的账户。（在 Bitcoin 里这些叫地址）</p><p>每个地址都有一个关联余额，即里面有多少钱。\n你钱包的余额是你钱包里所有地址余额的总和。</p><p>你做交易时，它会清空足够多的地址来凑足要求的输出金额，但由于必须完全清空每个地址，经常会剩下钱——这种情况下「找零」会在一个新地址退还给你。</p><p>这个例子里，Stone Man 做了一笔交易，把 700 多个地址里的全部钱转进单个地址，于是他的钱包只剩一个有钱的地址。</p><p>那个地址/账户在 1BTC 交易中被清空，8999 的找零退到了一个新地址，而他弄丢了那个地址的私钥。</p><p>倘若他没有把所有币合并到一个地址，他会损失少得多。</p><p>我想这个故事的寓意兴许是：「别把所有鸡蛋放进一个篮子」</p><blockquote><p>据我所知，从 GUI 客户端没有办法真正查到你余额里的哪些币放在哪些地址？既然地址才是「真正重要」的东西，这些信息应该有价值。</p></blockquote><p>对，用现在的 GUI 查不出哪些地址各有多少余额。</p><p>我认为这是「非常重要」的信息。\n我还认为，能选择哪些地址作为交易的来源也很重要。</p><p>这就是钱包这个比喻糟糕的一个例子。</p>","zhText":"你的「钱包」更像你自己的私人银行\n它包含许多不同的账户。（在 Bitcoin 里这些叫地址）\n每个地址都有一个关联余额，即里面有多少钱。\n你钱包的余额是你钱包里所有地址余额的总和。\n你做交易时，它会清空足够多的地址来凑足要求的输出金额，但由于必须完全清空每个地址，经常会剩下钱——这种情况下「找零」会在一个新地址退还给你。\n这个例子里，Stone Man 做了一笔交易，把 700 多个地址里的全部钱转进单个地址，于是他的钱包只剩一个有钱的地址。\n那个地址/账户在 1BTC 交易中被清空，8999 的找零退到了一个新地址，而他弄丢了那个地址的私钥。\n倘若他没有把所有币合并到一个地址，他会损失少得多。\n我想这个故事的寓意兴许是：「别把所有鸡蛋放进一个篮子」\n据我所知，从 GUI 客户端没有办法真正查到你余额里的哪些币放在哪些地址？既然地址才是「真正重要」的东西，这些信息应该有价值。\n\n对，用现在的 GUI 查不出哪些地址各有多少余额。\n我认为这是「非常重要」的信息。\n我还认为，能选择哪些地址作为交易的来源也很重要。\n这就是钱包这个比喻糟糕的一个例子。"},{"id":2277,"sid":343,"sat":1,"tid":175,"tt":"Lost large number of bitcoins","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T21:46:51Z","url":"https://bitcointalk.org/index.php?topic=782.msg8803#msg8803","zh":"<blockquote><p>我在 FAQ 里加了「每笔交易之后都要备份」的警告。顺便问一句，备份之前有必要停掉客户端吗？那有点麻烦。自动备份确实会很有用。</p></blockquote><p>倘若在备份前的几秒钟内（譬如 5 秒）你什么都没做、也没收到付款，那么不停客户端直接备份也行。</p><blockquote><p>等等，我又糊涂了。我一直以为那个「惊喜」的要害是：Bitcoin 被编程为在*每一笔*交易时「清空你的钱包」。</p></blockquote><p>不，它通常不会在每笔交易时清空你的钱包。它会用能找到的最小硬币集合凑出接近的金额。这个例子里，不走运，他的钱包里只有一张 9000 BTC 的整钞，必须破开它才能拿到 1 BTC 和 8999 BTC 的找零。</p>","zhText":"我在 FAQ 里加了「每笔交易之后都要备份」的警告。顺便问一句，备份之前有必要停掉客户端吗？那有点麻烦。自动备份确实会很有用。\n\n倘若在备份前的几秒钟内（譬如 5 秒）你什么都没做、也没收到付款，那么不停客户端直接备份也行。\n等等，我又糊涂了。我一直以为那个「惊喜」的要害是：Bitcoin 被编程为在*每一笔*交易时「清空你的钱包」。\n\n不，它通常不会在每笔交易时清空你的钱包。它会用能找到的最小硬币集合凑出接近的金额。这个例子里，不走运，他的钱包里只有一张 9000 BTC 的整钞，必须破开它才能拿到 1 BTC 和 8999 BTC 的找零。"},{"id":2286,"sid":344,"sat":1,"tid":177,"tt":"Where is the separate discussion devoted to possible Bitcoin weaknesses.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T22:40:25Z","url":"https://bitcointalk.org/index.php?topic=788.msg8804#msg8804","zh":"<p>它不必是那么破坏性的变更。新节点可以在很长一段时间内继续接受旧交易，直到多数节点已升级，再开始拒绝没有 PoW 的交易。或者，它们可以永远接受旧交易，但每个时间段只限一定数量。</p><p>我想过很多次给交易加 PoW，但通常想来想去，觉得 0.01 交易费本质上与之相似且更好。0.01 基本就是一份工作证明，但不是浪费。不过倘若问题出在验证大量交易上，那 PoW 的验证可以更快。</p><p>一个更普遍的伞形部分解法是实现那个想法：检测收到的区块频率出现不太可能的骤降。如此这般攻击者仍需要掌握网络算力的相当部分，才能从 DoS 攻击中获益。</p><blockquote><p>Bitcoin 的 p2p 网络容易受到各种拒绝服务攻击。</p><p>说了。</p></blockquote><p>+1</p><p>此刻任何演示性测试都只能证明我们已知的东西，还会把开发时间从强化系统挪去救火。</p>","zhText":"它不必是那么破坏性的变更。新节点可以在很长一段时间内继续接受旧交易，直到多数节点已升级，再开始拒绝没有 PoW 的交易。或者，它们可以永远接受旧交易，但每个时间段只限一定数量。\n我想过很多次给交易加 PoW，但通常想来想去，觉得 0.01 交易费本质上与之相似且更好。0.01 基本就是一份工作证明，但不是浪费。不过倘若问题出在验证大量交易上，那 PoW 的验证可以更快。\n一个更普遍的伞形部分解法是实现那个想法：检测收到的区块频率出现不太可能的骤降。如此这般攻击者仍需要掌握网络算力的相当部分，才能从 DoS 攻击中获益。\nBitcoin 的 p2p 网络容易受到各种拒绝服务攻击。\n说了。\n\n+1\n此刻任何演示性测试都只能证明我们已知的东西，还会把开发时间从强化系统挪去救火。"},{"id":2287,"sid":null,"sat":0,"tid":178,"tt":"BSD detection","src":"Bitcointalk","author":"dkaparis","date":"2010-08-11","ts":"2010-08-11T23:00:16Z","url":"https://bitcointalk.org/index.php?topic=790.msg8807#msg8807","zh":"<p>headers.h 里有这样一段代码：\n<tt>\n#ifdef __WXMAC_OSX__\n#define __WXMAC__ 1\n#define __WXOSX__ 1\n#define __BSD__ 1\n#endif\n#endif\n</tt></p><p>在我的测试中，FreeBSD 8.1 不会踩到它</p><p>我提议改成：\n<tt>\n#if (defined(__unix__) || defined(unix)) && !defined(USG)\n#include <sys/param.h>\n#endif\n</tt></p><p>如此这般检查 BSD 就应该用\n<tt>#ifdef BSD</tt>\n这是 <a href=\"http://www.freebsd.org/doc/en/books/porters-handbook/porting-versions.html\">FreeBSD Porter's Handbook</a> 推荐的 BSD 检测方式。</p><p>这个改动在我的 CMake 树里已经做了。</p>","zhText":"headers.h 里有这样一段代码：\n\n#ifdef __WXMAC_OSX__\n#define __WXMAC__ 1\n#define __WXOSX__ 1\n#define __BSD__ 1\n#endif\n#endif\n\n在我的测试中，FreeBSD 8.1 不会踩到它\n我提议改成：\n\n#if (defined(__unix__) || defined(unix)) && !defined(USG)\n#include \n#endif\n\n如此这般检查 BSD 就应该用\n#ifdef BSD\n这是 FreeBSD Porter's Handbook 推荐的 BSD 检测方式。\n这个改动在我的 CMake 树里已经做了。"},{"id":1013,"sid":345,"sat":1,"tid":86,"tt":"Flood attack 0.00000001 BC","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-11","ts":"2010-08-11T23:28:50Z","url":"https://bitcointalk.org/index.php?topic=287.msg8810#msg8810","zh":"<p>最好尽可能让 blk*.dat 文件保持小。</p><p>终极方案是不再在乎它有多大。</p><p>然而眼下它还小，最好保持小，好让新用户更快上手。等我最终实现 client-only 模式，这就不太重要了。</p><p>交易费还有工作要做。万一发生洪水攻击，你仍然可以通过支付 0.01 交易费插队，把自己的交易送进下一个区块。不过我还没来得及在界面上加这个选项。</p><p>无论规模大小，测试网的反应方式都一样，只是浪费的带宽和造成的困扰少得多。</p>","zhText":"最好尽可能让 blk*.dat 文件保持小。\n终极方案是不再在乎它有多大。\n然而眼下它还小，最好保持小，好让新用户更快上手。等我最终实现 client-only 模式，这就不太重要了。\n交易费还有工作要做。万一发生洪水攻击，你仍然可以通过支付 0.01 交易费插队，把自己的交易送进下一个区块。不过我还没来得及在界面上加这个选项。\n无论规模大小，测试网的反应方式都一样，只是浪费的带宽和造成的困扰少得多。"},{"id":2288,"sid":346,"sat":1,"tid":178,"tt":"BSD detection","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T00:02:06Z","url":"https://bitcointalk.org/index.php?topic=790.msg8814#msg8814","zh":"<blockquote><p>headers.h 里有这样一段代码：\n<tt>\n#ifdef __WXMAC_OSX__\n#define __WXMAC__ 1\n#define __WXOSX__ 1\n#define __BSD__ 1\n#endif\n#endif\n</tt></p></blockquote><p>那段代码本来就是个馊主意，我要删了它。Mac 相关代码应该只用 __WXMAC_OSX__，不要用 __WXMAC__ 或 __WXOSX__，我们也该停用 __BSD__。</p><blockquote><p><tt>\n#if (defined(__unix__) || defined(unix)) && !defined(USG)\n#include <sys/param.h>\n#endif\n</tt></p></blockquote><p>这能保证 Mac 上 BSD 一定被定义吗？</p>","zhText":"headers.h 里有这样一段代码：\n\n#ifdef __WXMAC_OSX__\n#define __WXMAC__ 1\n#define __WXOSX__ 1\n#define __BSD__ 1\n#endif\n#endif\n\n那段代码本来就是个馊主意，我要删了它。Mac 相关代码应该只用 __WXMAC_OSX__，不要用 __WXMAC__ 或 __WXOSX__，我们也该停用 __BSD__。\n\n#if (defined(__unix__) || defined(unix)) && !defined(USG)\n#include \n#endif\n\n这能保证 Mac 上 BSD 一定被定义吗？"},{"id":2249,"sid":null,"sat":0,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Red","date":"2010-08-12","ts":"2010-08-12T01:10:19Z","url":"https://bitcointalk.org/index.php?topic=770.msg8824#msg8824","zh":"<blockquote><p>还在琢磨这个想法……</p></blockquote><p>这是个有点烧脑的想法，不是吗。:-)</p><p>事实证明，「可撤销公证」这个概念可以很好地推广。</p><p>譬如，这个系统并不局限于 bitcoin 交易。由于签名合同保存在外部，加上额外的验证/公证规则，你可以轻松实现借据/提货凭证之类的东西。</p><p>倘若有人给你 $5，你可以给他一张 $5 借据。它的借据哈希会被公证进区块列表（的哈希列表）。你还钱时，可以让他签收借据作确认。然后让公证人插入一条借据哈希注销记录。如此这般就没有人能拿着借据的副本来要求双重偿付。</p><blockquote><p>我认为客户端将不得不保存回溯到最初生成硬币的全部历史。客户端必须保存全部历史这一点削弱了隐私收益。</p></blockquote><p>我起初也这么想。但后来我说服了自己，并非如此。</p><p>这其实是个你有多信任验证者和验证过程的问题。人们喜欢那种暖乎乎的感觉：每笔交易都可得，让他们能把自己钱的根源一路追溯到创造之初。然而这并非必需。</p><p>倘若你对区块创建过程中验证交易的流程有信心（> 50% CPU 共识），并且你确信之前的区块不可更改（你已经证明了这一点），那么你只需要检查相关的 out-point 未被花费。安全特性保留在区块列表和流程之中，即便交易本身存放在外部、前序交易完全不被存储。你自己就证明了这一点：用 Merkle 树维护一致性、旧交易可以删除。</p><blockquote><p>经手大量钱的人仍然会看到大量交易历史。由于历史会回溯式地扇出，他们最后可能看到大部分历史。面额可以做得足够细以限制扇出，但经手大量钱的商家仍可能看到很多历史。</p></blockquote><p>没错，隐私与可观测性直接相关。倘若有一个类似货币兑换商的中心方，他能关联大量 out-point。但倘若我们摆脱「每枚币必须能追溯到创造之初」的观念，观测视界就会近得多。</p><p>----\n习惯「这枚币有效，仅仅因为流程不允许它以别的方式被纳入」这个观念真的很别扭。但说真的，bitcoin 生成恰恰就是这么运作的。那笔交易没有输入，但所有人都认定 out-point 必然有效，纯粹因为不然的话它根本不会出现在区块里。:-)</p>","zhText":"还在琢磨这个想法……\n\n这是个有点烧脑的想法，不是吗。:-)\n事实证明，「可撤销公证」这个概念可以很好地推广。\n譬如，这个系统并不局限于 bitcoin 交易。由于签名合同保存在外部，加上额外的验证/公证规则，你可以轻松实现借据/提货凭证之类的东西。\n倘若有人给你 $5，你可以给他一张 $5 借据。它的借据哈希会被公证进区块列表（的哈希列表）。你还钱时，可以让他签收借据作确认。然后让公证人插入一条借据哈希注销记录。如此这般就没有人能拿着借据的副本来要求双重偿付。\n我认为客户端将不得不保存回溯到最初生成硬币的全部历史。客户端必须保存全部历史这一点削弱了隐私收益。\n\n我起初也这么想。但后来我说服了自己，并非如此。\n这其实是个你有多信任验证者和验证过程的问题。人们喜欢那种暖乎乎的感觉：每笔交易都可得，让他们能把自己钱的根源一路追溯到创造之初。然而这并非必需。\n倘若你对区块创建过程中验证交易的流程有信心（> 50% CPU 共识），并且你确信之前的区块不可更改（你已经证明了这一点），那么你只需要检查相关的 out-point 未被花费。安全特性保留在区块列表和流程之中，即便交易本身存放在外部、前序交易完全不被存储。你自己就证明了这一点：用 Merkle 树维护一致性、旧交易可以删除。\n经手大量钱的人仍然会看到大量交易历史。由于历史会回溯式地扇出，他们最后可能看到大部分历史。面额可以做得足够细以限制扇出，但经手大量钱的商家仍可能看到很多历史。\n\n没错，隐私与可观测性直接相关。倘若有一个类似货币兑换商的中心方，他能关联大量 out-point。但倘若我们摆脱「每枚币必须能追溯到创造之初」的观念，观测视界就会近得多。\n----\n习惯「这枚币有效，仅仅因为流程不允许它以别的方式被纳入」这个观念真的很别扭。但说真的，bitcoin 生成恰恰就是这么运作的。那笔交易没有输入，但所有人都认定 out-point 必然有效，纯粹因为不然的话它根本不会出现在区块里。:-)"},{"id":2250,"sid":347,"sat":1,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T02:46:56Z","url":"https://bitcointalk.org/index.php?topic=770.msg8836#msg8836","zh":"<blockquote><p>我起初也这么想。但后来我说服了自己，并非如此。</p></blockquote><p>你这里说的是在讲现有的 Bitcoin 系统吗？</p><p>我说的是我描述的那个假想系统：倘若网络不知道交易的金额和世系，它就无法验证并为其背书，那么客户端就得把历史一路保存到底。</p><p>倘若一个客户端直到最近才加入，让它确信一笔交易拥有有效过去的办法有两条：\n1) 给它看回溯到最初生成硬币的完整历史。\n2) 给它看回溯到一个足够深的区块的历史，然后相信：这么多节点都说此前的历史是正确的，那它就应该是正确的。</p><p>但倘若网络不知道所有交易的金额和世系，它就做不了 2)，我认为。</p>","zhText":"我起初也这么想。但后来我说服了自己，并非如此。\n\n你这里说的是在讲现有的 Bitcoin 系统吗？\n我说的是我描述的那个假想系统：倘若网络不知道交易的金额和世系，它就无法验证并为其背书，那么客户端就得把历史一路保存到底。\n倘若一个客户端直到最近才加入，让它确信一笔交易拥有有效过去的办法有两条：\n1) 给它看回溯到最初生成硬币的完整历史。\n2) 给它看回溯到一个足够深的区块的历史，然后相信：这么多节点都说此前的历史是正确的，那它就应该是正确的。\n但倘若网络不知道所有交易的金额和世系，它就做不了 2)，我认为。"},{"id":2251,"sid":null,"sat":0,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Red","date":"2010-08-12","ts":"2010-08-12T04:25:51Z","url":"https://bitcointalk.org/index.php?topic=770.msg8844#msg8844","zh":"<blockquote><p>你这是又回到讨论现有的 Bitcoin 系统了吗？</p></blockquote><p>是的，我说的是那个假想系统。</p><p>按我提出的系统设计，每当生成一个区块，每个校验节点都必须通过校验交易、确认区块中的哈希来接受或拒绝这个区块。实际上，这和现有系统所做的工作是一样的，只是加上 out-point 哈希检查。由于其他校验者本来就在竞争生成区块，他们手上已经有（至少大部分）交易了。</p><p>和现有系统一样，倘若交易校验不过（加上与所含 out-point 哈希不匹配），其他节点就会拒绝这个区块。倘若一个区块得不到至少 50% 算力的接受，它就进不了区块列表。</p><p>因而一个哈希出现在区块列表里，就意味着当时至少 50% 的现存校验者看过并校验了其中全部交易和 out-point 哈希。</p><p>因此（除非发生哈希碰撞），倘若有人提交一笔匹配未花费 out-point 的先行交易，它必定是有效的。</p><p>那笔先行交易的先行交易必然也是有效的，否则先行交易早就被拒绝了。以此类推，一直往上。</p><p>要否认这一点，你就得假设存在一段时期，区块不针对 out-point 哈希做校验。但在 CPU 竞争体系下，这个假设显然站不住脚。</p><blockquote><p>倘若一个客户端直到最近才加入，要让它相信一笔交易有有效的过去，有两个办法：\n1) 向它展示回到最初生成币为止的完整历史。\n2) 向它展示回溯到一个足够深的区块的历史，然后相信：既然这么多节点都说在那之前的历史是正确的，那它就一定是真的。</p></blockquote><p>倘若一个客户端是最近才加入网络的，它加入时就是假定先前的校验者都遵守了规则、所有已存在的区块都是有效的。（没有人会加入一个已知的腐败网络）</p><p>当然，在现有系统里，倘若交易从不被清除，新节点可以校验所有先前区块的自洽性。但他们仍然无法证明绝对的真相。一个僵尸网络可能已经接管并抹掉了一些交易，留下「一个新的真相」和不高兴的用户。这相当于上面的情况 1)。</p><p>在现有系统里，倘若交易通过 Merkle 树被清除，那就是上面的情况 2)。新来者必须信任这个流程。缺了什么，他们不用担心。所有人都必须假定它是有效的。</p><p>我要说的新东西是：倘若你对 bitcoin 校验竞争流程有信心（我们是有的！），那你根本不需要「情况 2) 里足够深的区块」有多深。有人在另一个帖子里说过，客户端会拒绝任何对两小时以上的区块的改动。因而对所有埋深 12 个区块的区块，我们可以有绝对的信心。</p><p>因而倘若一笔交易未花费且埋深 12 个区块，我们就可以清除它的全部祖先。它们只提供心理安慰，不提供额外校验。我们本来就得依赖它们。根本没有回头改道的可能。</p><p>此后，每个后继区块都假定之前的所有区块为真。否则它就是一个分叉，而非后继区块。因而对于任何针对先前区块中的 out-point 校验过的交易，只要那些 out-point 存在且未花费，就必须假定它们有效。倘若它们被假定有效，它们的祖先即便被清除了也必须被假定有效。</p><p>---\n在我提议的系统里，完全相同的事情同样成立。</p><p>倘若一个先行 out-point 哈希未花费且埋深 12 个区块，那它就是绝对未花费的。没有任何东西能改变这个事实。检查它的祖先毫无意义。你可以完成交易的校验，注销 in-point 哈希并创建新的 out-point 哈希。</p><p>有意思的是，倘若一个先行 out-point 哈希未花费但埋深不足 12 个区块，那它就是相对未花费的。有趣的是，检查它的祖先仍然没有意义。唯一能改变先行交易有效性的，是切到更长链的分支切换。倘若你正在校验的这笔交易所对照的先行交易的祖先被换掉了，这笔交易也会一起被换掉。</p><p>这就像那种老套的时光机电影情节。有人回到过去把我的祖先花掉了。于是我不存在了！</p><p>=====</p><p>因而我想说的是：在两个系统里（现有系统和提议系统），校验者唯一需要做的，就是校验先行 out-point 存在且未花费（针对当前区块链）。流程本身保证其余一切都是相对或绝对有效的。</p><p>其余的不过是心理安慰罢了。</p><p>-- PS --</p><p>我知道这写得太长太啰嗦，但我太累了，懒得编辑。:-)</p><blockquote><p>你这是又回到讨论现有的 Bitcoin 系统了吗？</p></blockquote><p>是的，我说的是那个假想系统。</p><p>按我提出的系统设计，每当生成一个区块，每个校验节点都必须通过校验交易、确认区块中的哈希来接受或拒绝这个区块。实际上，这和现有系统所做的工作是一样的，只是加上 out-point 哈希检查。由于其他校验者本来就在竞争生成区块，他们手上已经有（至少大部分）交易了。</p><p>和现有系统一样，倘若交易校验不过（加上与所含 out-point 哈希不匹配），其他节点就会拒绝这个区块。倘若一个区块得不到至少 50% 算力的接受，它就进不了区块列表。</p><p>因而一个哈希出现在区块列表里，就意味着当时至少 50% 的现存校验者看过并校验了其中全部交易和 out-point 哈希。</p><p>因此（除非发生哈希碰撞），倘若有人提交一笔匹配未花费 out-point 的先行交易，它必定是有效的。</p><p>那笔先行交易的先行交易必然也是有效的，否则先行交易早就被拒绝了。以此类推，一直往上。</p><p>要否认这一点，你就得假设存在一段时期，区块不针对 out-point 哈希做校验。但在 CPU 竞争体系下，这个假设显然站不住脚。</p><blockquote><p>倘若一个客户端直到最近才加入，要让它相信一笔交易有有效的过去，有两个办法：\n1) 向它展示回到最初生成币为止的完整历史。\n2) 向它展示回溯到一个足够深的区块的历史，然后相信：既然这么多节点都说在那之前的历史是正确的，那它就一定是真的。</p></blockquote><p>倘若一个客户端是最近才加入网络的，它加入时就是假定先前的校验者都遵守了规则、所有已存在的区块都是有效的。（没有人会加入一个已知的腐败网络）</p><p>当然，在现有系统里，倘若交易从不被清除，新节点可以校验所有先前区块的自洽性。但他们仍然无法证明绝对的真相。一个僵尸网络可能已经接管并抹掉了一些交易，留下「一个新的真相」和不高兴的用户。这相当于上面的情况 1)。</p><p>在现有系统里，倘若交易通过 Merkle 树被清除，那就是上面的情况 2)。新来者必须信任这个流程。缺了什么，他们不用担心。所有人都必须假定它是有效的。</p><p>我要说的新东西是：倘若你对 bitcoin 校验竞争流程有信心（我们是有的！），那你根本不需要「情况 2) 里足够深的区块」有多深。有人在另一个帖子里说过，客户端会拒绝任何对两小时以上的区块的改动。因而对所有埋深 12 个区块的区块，我们可以有绝对的信心。</p><p>因而倘若一笔交易未花费且埋深 12 个区块，我们就可以清除它的全部祖先。它们只提供心理安慰，不提供额外校验。我们本来就得依赖它们。根本没有回头改道的可能。</p><p>此后，每个后继区块都假定之前的所有区块为真。否则它就是一个分叉，而非后继区块。因而对于任何针对先前区块中的 out-point 校验过的交易，只要那些 out-point 存在且未花费，就必须假定它们有效。倘若它们被假定有效，它们的祖先即便被清除了也必须被假定有效。</p><p>---\n在我提议的系统里，完全相同的事情同样成立。</p><p>倘若一个先行 out-point 哈希未花费且埋深 12 个区块，那它就是绝对未花费的。没有任何东西能改变这个事实。检查它的祖先毫无意义。你可以完成交易的校验，注销 in-point 哈希并创建新的 out-point 哈希。</p><p>有意思的是，倘若一个先行 out-point 哈希未花费但埋深不足 12 个区块，那它就是相对未花费的。有趣的是，检查它的祖先仍然没有意义。唯一能改变先行交易有效性的，是切到更长链的分支切换。倘若你正在校验的这笔交易所对照的先行交易的祖先被换掉了，这笔交易也会一起被换掉。</p><p>这就像那种老套的时光机电影情节。有人回到过去把我的祖先花掉了。于是我不存在了！</p><p>=====</p><p>因而我想说的是：在两个系统里（现有系统和提议系统），校验者唯一需要做的，就是校验先行 out-point 存在且未花费（针对当前区块链）。流程本身保证其余一切都是相对或绝对有效的。</p><p>其余的不过是心理安慰罢了。</p><p>-- PS --</p><p>我知道这写得太长太啰嗦，但我太累了，懒得编辑。:-)</p>","zhText":"你这是又回到讨论现有的 Bitcoin 系统了吗？\n\n是的，我说的是那个假想系统。\n按我提出的系统设计，每当生成一个区块，每个校验节点都必须通过校验交易、确认区块中的哈希来接受或拒绝这个区块。实际上，这和现有系统所做的工作是一样的，只是加上 out-point 哈希检查。由于其他校验者本来就在竞争生成区块，他们手上已经有（至少大部分）交易了。\n和现有系统一样，倘若交易校验不过（加上与所含 out-point 哈希不匹配），其他节点就会拒绝这个区块。倘若一个区块得不到至少 50% 算力的接受，它就进不了区块列表。\n因而一个哈希出现在区块列表里，就意味着当时至少 50% 的现存校验者看过并校验了其中全部交易和 out-point 哈希。\n因此（除非发生哈希碰撞），倘若有人提交一笔匹配未花费 out-point 的先行交易，它必定是有效的。\n那笔先行交易的先行交易必然也是有效的，否则先行交易早就被拒绝了。以此类推，一直往上。\n要否认这一点，你就得假设存在一段时期，区块不针对 out-point 哈希做校验。但在 CPU 竞争体系下，这个假设显然站不住脚。\n倘若一个客户端直到最近才加入，要让它相信一笔交易有有效的过去，有两个办法：\n1) 向它展示回到最初生成币为止的完整历史。\n2) 向它展示回溯到一个足够深的区块的历史，然后相信：既然这么多节点都说在那之前的历史是正确的，那它就一定是真的。\n\n倘若一个客户端是最近才加入网络的，它加入时就是假定先前的校验者都遵守了规则、所有已存在的区块都是有效的。（没有人会加入一个已知的腐败网络）\n当然，在现有系统里，倘若交易从不被清除，新节点可以校验所有先前区块的自洽性。但他们仍然无法证明绝对的真相。一个僵尸网络可能已经接管并抹掉了一些交易，留下「一个新的真相」和不高兴的用户。这相当于上面的情况 1)。\n在现有系统里，倘若交易通过 Merkle 树被清除，那就是上面的情况 2)。新来者必须信任这个流程。缺了什么，他们不用担心。所有人都必须假定它是有效的。\n我要说的新东西是：倘若你对 bitcoin 校验竞争流程有信心（我们是有的！），那你根本不需要「情况 2) 里足够深的区块」有多深。有人在另一个帖子里说过，客户端会拒绝任何对两小时以上的区块的改动。因而对所有埋深 12 个区块的区块，我们可以有绝对的信心。\n因而倘若一笔交易未花费且埋深 12 个区块，我们就可以清除它的全部祖先。它们只提供心理安慰，不提供额外校验。我们本来就得依赖它们。根本没有回头改道的可能。\n此后，每个后继区块都假定之前的所有区块为真。否则它就是一个分叉，而非后继区块。因而对于任何针对先前区块中的 out-point 校验过的交易，只要那些 out-point 存在且未花费，就必须假定它们有效。倘若它们被假定有效，它们的祖先即便被清除了也必须被假定有效。\n---\n在我提议的系统里，完全相同的事情同样成立。\n倘若一个先行 out-point 哈希未花费且埋深 12 个区块，那它就是绝对未花费的。没有任何东西能改变这个事实。检查它的祖先毫无意义。你可以完成交易的校验，注销 in-point 哈希并创建新的 out-point 哈希。\n有意思的是，倘若一个先行 out-point 哈希未花费但埋深不足 12 个区块，那它就是相对未花费的。有趣的是，检查它的祖先仍然没有意义。唯一能改变先行交易有效性的，是切到更长链的分支切换。倘若你正在校验的这笔交易所对照的先行交易的祖先被换掉了，这笔交易也会一起被换掉。\n这就像那种老套的时光机电影情节。有人回到过去把我的祖先花掉了。于是我不存在了！\n=====\n因而我想说的是：在两个系统里（现有系统和提议系统），校验者唯一需要做的，就是校验先行 out-point 存在且未花费（针对当前区块链）。流程本身保证其余一切都是相对或绝对有效的。\n其余的不过是心理安慰罢了。\n-- PS --\n我知道这写得太长太啰嗦，但我太累了，懒得编辑。:-)\n你这是又回到讨论现有的 Bitcoin 系统了吗？\n\n是的，我说的是那个假想系统。\n按我提出的系统设计，每当生成一个区块，每个校验节点都必须通过校验交易、确认区块中的哈希来接受或拒绝这个区块。实际上，这和现有系统所做的工作是一样的，只是加上 out-point 哈希检查。由于其他校验者本来就在竞争生成区块，他们手上已经有（至少大部分）交易了。\n和现有系统一样，倘若交易校验不过（加上与所含 out-point 哈希不匹配），其他节点就会拒绝这个区块。倘若一个区块得不到至少 50% 算力的接受，它就进不了区块列表。\n因而一个哈希出现在区块列表里，就意味着当时至少 50% 的现存校验者看过并校验了其中全部交易和 out-point 哈希。\n因此（除非发生哈希碰撞），倘若有人提交一笔匹配未花费 out-point 的先行交易，它必定是有效的。\n那笔先行交易的先行交易必然也是有效的，否则先行交易早就被拒绝了。以此类推，一直往上。\n要否认这一点，你就得假设存在一段时期，区块不针对 out-point 哈希做校验。但在 CPU 竞争体系下，这个假设显然站不住脚。\n倘若一个客户端直到最近才加入，要让它相信一笔交易有有效的过去，有两个办法：\n1) 向它展示回到最初生成币为止的完整历史。\n2) 向它展示回溯到一个足够深的区块的历史，然后相信：既然这么多节点都说在那之前的历史是正确的，那它就一定是真的。\n\n倘若一个客户端是最近才加入网络的，它加入时就是假定先前的校验者都遵守了规则、所有已存在的区块都是有效的。（没有人会加入一个已知的腐败网络）\n当然，在现有系统里，倘若交易从不被清除，新节点可以校验所有先前区块的自洽性。但他们仍然无法证明绝对的真相。一个僵尸网络可能已经接管并抹掉了一些交易，留下「一个新的真相」和不高兴的用户。这相当于上面的情况 1)。\n在现有系统里，倘若交易通过 Merkle 树被清除，那就是上面的情况 2)。新来者必须信任这个流程。缺了什么，他们不用担心。所有人都必须假定它是有效的。\n我要说的新东西是：倘若你对 bitcoin 校验竞争流程有信心（我们是有的！），那你根本不需要「情况 2) 里足够深的区块」有多深。有人在另一个帖子里说过，客户端会拒绝任何对两小时以上的区块的改动。因而对所有埋深 12 个区块的区块，我们可以有绝对的信心。\n因而倘若一笔交易未花费且埋深 12 个区块，我们就可以清除它的全部祖先。它们只提供心理安慰，不提供额外校验。我们本来就得依赖它们。根本没有回头改道的可能。\n此后，每个后继区块都假定之前的所有区块为真。否则它就是一个分叉，而非后继区块。因而对于任何针对先前区块中的 out-point 校验过的交易，只要那些 out-point 存在且未花费，就必须假定它们有效。倘若它们被假定有效，它们的祖先即便被清除了也必须被假定有效。\n---\n在我提议的系统里，完全相同的事情同样成立。\n倘若一个先行 out-point 哈希未花费且埋深 12 个区块，那它就是绝对未花费的。没有任何东西能改变这个事实。检查它的祖先毫无意义。你可以完成交易的校验，注销 in-point 哈希并创建新的 out-point 哈希。\n有意思的是，倘若一个先行 out-point 哈希未花费但埋深不足 12 个区块，那它就是相对未花费的。有趣的是，检查它的祖先仍然没有意义。唯一能改变先行交易有效性的，是切到更长链的分支切换。倘若你正在校验的这笔交易所对照的先行交易的祖先被换掉了，这笔交易也会一起被换掉。\n这就像那种老套的时光机电影情节。有人回到过去把我的祖先花掉了。于是我不存在了！\n=====\n因而我想说的是：在两个系统里（现有系统和提议系统），校验者唯一需要做的，就是校验先行 out-point 存在且未花费（针对当前区块链）。流程本身保证其余一切都是相对或绝对有效的。\n其余的不过是心理安慰罢了。\n-- PS --\n我知道这写得太长太啰嗦，但我太累了，懒得编辑。:-)"},{"id":2289,"sid":null,"sat":0,"tid":178,"tt":"BSD detection","src":"Bitcointalk","author":"dkaparis","date":"2010-08-12","ts":"2010-08-12T08:24:37Z","url":"https://bitcointalk.org/index.php?topic=790.msg8861#msg8861","zh":"<blockquote><p>这能保证 Mac 上 BSD 一定被定义吗？</p></blockquote><p>不知道 Mac OS X 在技术上算不算 BSD，而且我没有 Mac 可用，兴许有别的人能测一下。\n倘若还有其他 Mac 特有（而 BSD 没有）的特性，那我们就得同时检查 __WXMAC_OSX__ 和 BSD，或者干脆用别的方式检测。</p>","zhText":"这能保证 Mac 上 BSD 一定被定义吗？\n\n不知道 Mac OS X 在技术上算不算 BSD，而且我没有 Mac 可用，兴许有别的人能测一下。\n倘若还有其他 Mac 特有（而 BSD 没有）的特性，那我们就得同时检查 __WXMAC_OSX__ 和 BSD，或者干脆用别的方式检测。"},{"id":1896,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"nelisky","date":"2010-08-12","ts":"2010-08-12T12:57:58Z","url":"https://bitcointalk.org/index.php?topic=648.msg8883#msg8883","zh":"<blockquote><p>情况似乎是这样：Core2 之前的 CPU 都会更慢，从 Core2 开始的则更快。有人能在老的 AMD64 上测试一下代码吗？我记得近期的架构在 SSE2 指令的执行方式上有一个改动。</p></blockquote><p>我的 Core2Quad (Q6600) 慢了 50%，我的 i5 提升了约 200%，所以我觉得你说的不太准。兴许是从某个特定型号的 Core2 开始？</p>","zhText":"情况似乎是这样：Core2 之前的 CPU 都会更慢，从 Core2 开始的则更快。有人能在老的 AMD64 上测试一下代码吗？我记得近期的架构在 SSE2 指令的执行方式上有一个改动。\n\n我的 Core2Quad (Q6600) 慢了 50%，我的 i5 提升了约 200%，所以我觉得你说的不太准。兴许是从某个特定型号的 Core2 开始？"},{"id":2073,"sid":null,"sat":0,"tid":162,"tt":"Bitcoin Watchdog Service","src":"Bitcointalk","author":"aceat64","date":"2010-08-12","ts":"2010-08-12T17:02:43Z","url":"https://bitcointalk.org/index.php?topic=691.msg8906#msg8906","zh":"<blockquote><p>可以明确地说，每个节点都需要一个全网 hps 计量器。</p><p>最后我找到了那篇文章：\n<a href=\"http://www.informit.com/articles/article.aspx?p=1237179\">http://www.informit.com/articles/article.aspx?p=1237179</a></p><p>网络分割比这个论坛上许多用户以为的更容易制造、也更常发生。\n你其实不需要剪断任何光缆，也不需要黑进 ISP 的路由器把那个 ISP 从互联网上拔掉。\n你也不用黑它的对等互联方。你需要的只是在任意一个 AS 里的 BGP 路由器（外加一些掉以轻心的 BGP 对等体）。\n我就有一台</p><p>因而，讨论一次短暂的（1 - 3 小时）受控网络分割是可能的。\n不只是对半劈，而是按 AS 分割。一两个小时后多数 ISP 会恢复，但这\n真的取决于上班时间。周末攻击的效果可能更持久。\n兴许将来这会被修复、不再有易受攻击的 BGP 路由器，但\n无论如何，谁都不该指望互联网稳定、连接永续。</p></blockquote><p>攻击者在这种分割期间要怎么同时连上两侧去花币？而且倘若攻击者能做到，一个或多个诚实节点桥接裂缝的可能性也相当大。</p>","zhText":"可以明确地说，每个节点都需要一个全网 hps 计量器。\n最后我找到了那篇文章：\nhttp://www.informit.com/articles/article.aspx?p=1237179\n网络分割比这个论坛上许多用户以为的更容易制造、也更常发生。\n你其实不需要剪断任何光缆，也不需要黑进 ISP 的路由器把那个 ISP 从互联网上拔掉。\n你也不用黑它的对等互联方。你需要的只是在任意一个 AS 里的 BGP 路由器（外加一些掉以轻心的 BGP 对等体）。\n我就有一台\n因而，讨论一次短暂的（1 - 3 小时）受控网络分割是可能的。\n不只是对半劈，而是按 AS 分割。一两个小时后多数 ISP 会恢复，但这\n真的取决于上班时间。周末攻击的效果可能更持久。\n兴许将来这会被修复、不再有易受攻击的 BGP 路由器，但\n无论如何，谁都不该指望互联网稳定、连接永续。\n\n攻击者在这种分割期间要怎么同时连上两侧去花币？而且倘若攻击者能做到，一个或多个诚实节点桥接裂缝的可能性也相当大。"},{"id":2290,"sid":348,"sat":1,"tid":178,"tt":"BSD detection","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T21:14:20Z","url":"https://bitcointalk.org/index.php?topic=790.msg8919#msg8919","zh":"<p>这已进 SVN rev 130。检查一下能不能编译通过。</p><pre><code>#if (defined(__unix__) || defined(unix)) &amp;&amp; !defined(USG)\n#include &lt;sys/param.h>  // to get BSD define\n#endif\n#ifdef __WXMAC_OSX__\n#ifndef BSD\n#define BSD 1\n#endif\n#endif</code></pre>","zhText":"这已进 SVN rev 130。检查一下能不能编译通过。\n#if (defined(__unix__) || defined(unix)) && !defined(USG)\n#include <sys/param.h> // to get BSD define\n#endif\n#ifdef __WXMAC_OSX__\n#ifndef BSD\n#define BSD 1\n#endif\n#endif"},{"id":2291,"sid":349,"sat":1,"tid":179,"tt":"Bugfixes in SVN rev 130","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T21:20:31Z","url":"https://bitcointalk.org/index.php?topic=795.msg8920#msg8920","zh":"<p>rev 130 的杂项修复：</p><p>修复相对路径 -datadir\nautostart 现在默认关闭（windows 除外）\n修复用 msvc 编译时偶发的 \"vector iterator not dereferencable\" 断言\n修复 linux 构建的 readlink 编译警告\n用 sys/param.h 和 BSD define 替代 __BSD__\n-paytxfee 开关，譬如 -paytxfee=0.01</p>","zhText":"rev 130 的杂项修复：\n修复相对路径 -datadir\nautostart 现在默认关闭（windows 除外）\n修复用 msvc 编译时偶发的 \"vector iterator not dereferencable\" 断言\n修复 linux 构建的 readlink 编译警告\n用 sys/param.h 和 BSD define 替代 __BSD__\n-paytxfee 开关，譬如 -paytxfee=0.01"},{"id":2074,"sid":350,"sat":1,"tid":162,"tt":"Bitcoin Watchdog Service","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T21:34:44Z","url":"https://bitcointalk.org/index.php?topic=691.msg8922#msg8922","zh":"<p>没错，可能还有人在用拨号调制解调器或卫星锅上网。更罕见的是同时拥有这两样和那条断了的有线网络的人，但只要这一群体大到值得在意，一百万人里总会有一个多线接入的极客。</p><p>ISP 断网只是你的局部地区。倘若你和周边其他地区的通信还在，那大抵只有世界的 1/1000 或更少。这一小片里的区块生成会变成每几个小时一个区块。</p><p>我支持那个监控方案：监测收到的区块频率是否衰减得过低。它能覆盖很大范围的可能性。</p>","zhText":"没错，可能还有人在用拨号调制解调器或卫星锅上网。更罕见的是同时拥有这两样和那条断了的有线网络的人，但只要这一群体大到值得在意，一百万人里总会有一个多线接入的极客。\nISP 断网只是你的局部地区。倘若你和周边其他地区的通信还在，那大抵只有世界的 1/1000 或更少。这一小片里的区块生成会变成每几个小时一个区块。\n我支持那个监控方案：监测收到的区块频率是否衰减得过低。它能覆盖很大范围的可能性。"},{"id":1697,"sid":351,"sat":1,"tid":140,"tt":"Having problems specifing -datadir","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T21:43:29Z","url":"https://bitcointalk.org/index.php?topic=601.msg8924#msg8924","zh":"<p>已在 SVN rev 130 修复。</p>","zhText":"已在 SVN rev 130 修复。"},{"id":1897,"sid":352,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-12","ts":"2010-08-12T22:07:23Z","url":"https://bitcointalk.org/index.php?topic=648.msg8929#msg8929","zh":"<p>这么大的速度差距，4 到 6 倍，感觉更像是老芯片在处理某个别扭的弱点或指令时特别慢，而非 i5 把 SSE2 吹成了六倍快的卖点。</p><p>简单汇总一下：\nXeon Quad        慢 41%\nCore 2 Duo        慢 55%\nCore 2 Duo        持平 (vess)\nCore 2 Quad      慢 50%\nCore i5            快 200% (nelisky)\nCore i5            快 100% (vess)\nAMD Opteron    快 105%</p><p>aceat64:\n我的系统从约 7100 降到了约 4200。\n这台机器配的是双 Intel Xeon 四核 CPU (E5335) @ 2.00GHz。</p><p>impossible7:\n在一台跑 x86_64 linux 的 Intel Core 2 Duo T7300 上，相比官方版本 (r121) 慢了 55%</p><p>nelisky:\n我的 Core2Quad (Q6600) 慢了 50%,\n我的 i5 提升了约 200%,</p><p>impossible7:\n在一台跑 x86_64 linux 的 AMD Opteron 2374 HE 上，我得到了 105% 的提升 (!)</p>","zhText":"这么大的速度差距，4 到 6 倍，感觉更像是老芯片在处理某个别扭的弱点或指令时特别慢，而非 i5 把 SSE2 吹成了六倍快的卖点。\n简单汇总一下：\nXeon Quad 慢 41%\nCore 2 Duo 慢 55%\nCore 2 Duo 持平 (vess)\nCore 2 Quad 慢 50%\nCore i5 快 200% (nelisky)\nCore i5 快 100% (vess)\nAMD Opteron 快 105%\naceat64:\n我的系统从约 7100 降到了约 4200。\n这台机器配的是双 Intel Xeon 四核 CPU (E5335) @ 2.00GHz。\nimpossible7:\n在一台跑 x86_64 linux 的 Intel Core 2 Duo T7300 上，相比官方版本 (r121) 慢了 55%\nnelisky:\n我的 Core2Quad (Q6600) 慢了 50%,\n我的 i5 提升了约 200%,\nimpossible7:\n在一台跑 x86_64 linux 的 AMD Opteron 2374 HE 上，我得到了 105% 的提升 (!)"},{"id":2293,"sid":null,"sat":0,"tid":179,"tt":"Bugfixes in SVN rev 130","src":"Bitcointalk","author":"aceat64","date":"2010-08-13","ts":"2010-08-13T02:42:16Z","url":"https://bitcointalk.org/index.php?topic=795.msg8957#msg8957","zh":"<blockquote><p>那么，-paytxfee 设置的是 nTransactionFee。</p><p>有人能解释一下 nTransactionFee 会如何影响客户端的行为吗？</p><p>更具体一点，倘若节点 A 设成 1000.0，而所有其他节点都用 0.01，会发生什么？</p></blockquote><p>据我理解，只有当交易附带的手续费满足节点要求时，节点才会把它打包进区块。因而在节点把手续费设成 1000 的情况下，它生成的区块很可能永远不包含任何交易，也就是说它会错过其他节点本可以拿到的交易费。真的没有什么理由把节点的门槛设得比全网其他节点都高，因为你基本上只是在把自己挤出市场。</p>","zhText":"那么，-paytxfee 设置的是 nTransactionFee。\n有人能解释一下 nTransactionFee 会如何影响客户端的行为吗？\n更具体一点，倘若节点 A 设成 1000.0，而所有其他节点都用 0.01，会发生什么？\n\n据我理解，只有当交易附带的手续费满足节点要求时，节点才会把它打包进区块。因而在节点把手续费设成 1000 的情况下，它生成的区块很可能永远不包含任何交易，也就是说它会错过其他节点本可以拿到的交易费。真的没有什么理由把节点的门槛设得比全网其他节点都高，因为你基本上只是在把自己挤出市场。"},{"id":2294,"sid":353,"sat":1,"tid":179,"tt":"Bugfixes in SVN rev 130","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-13","ts":"2010-08-13T03:15:23Z","url":"https://bitcointalk.org/index.php?topic=795.msg8960#msg8960","zh":"<p>不，不是这么回事。</p><p>-paytxfee 允许你在交易里附带交易费。倘若交易确认变慢了，你可以用 \"-paytxfee=0.01\" 来获得优先。你发出的每笔交易都会多花 0.01。没有理由设得比 0.01 更高。</p><p>它只是放在那里以防万一。多半用不上，真用上了再细说也不迟。</p>","zhText":"不，不是这么回事。\n-paytxfee 允许你在交易里附带交易费。倘若交易确认变慢了，你可以用 \"-paytxfee=0.01\" 来获得优先。你发出的每笔交易都会多花 0.01。没有理由设得比 0.01 更高。\n它只是放在那里以防万一。多半用不上，真用上了再细说也不迟。"},{"id":2075,"sid":null,"sat":0,"tid":162,"tt":"Bitcoin Watchdog Service","src":"Bitcointalk","author":"throughput","date":"2010-08-13","ts":"2010-08-13T06:45:50Z","url":"https://bitcointalk.org/index.php?topic=691.msg8978#msg8978","zh":"<blockquote><p>在这次网络分裂期间，攻击者要怎么同时连上两边来花掉这些币？而且倘若攻击者做得到，一个或多个诚实节点把裂口桥接起来的概率也相当大。</p></blockquote><p>1. 为什么攻击者必须是只有一台 PC 的单个人？\n把钱包拷到另一台 PC，随便在哪里用！</p><p>2. 为什么网络隔离只能用来双重支出？\n不能用它来拖慢区块生成吗？那会不会影响难度调整？</p><blockquote><p>没错，可能有人用拨号调制解调器或卫星上网。既有这些又有那条出故障的有线网络的人就更少了，但倘若这个群体大到足以产生影响，那么一百万用户里总会出一个多线路的极客。</p></blockquote><p>然而到时就没有 IRC 服务器可以用来引导入网了。</p>","zhText":"在这次网络分裂期间，攻击者要怎么同时连上两边来花掉这些币？而且倘若攻击者做得到，一个或多个诚实节点把裂口桥接起来的概率也相当大。\n\n1. 为什么攻击者必须是只有一台 PC 的单个人？\n把钱包拷到另一台 PC，随便在哪里用！\n2. 为什么网络隔离只能用来双重支出？\n不能用它来拖慢区块生成吗？那会不会影响难度调整？\n没错，可能有人用拨号调制解调器或卫星上网。既有这些又有那条出故障的有线网络的人就更少了，但倘若这个群体大到足以产生影响，那么一百万用户里总会出一个多线路的极客。\n\n然而到时就没有 IRC 服务器可以用来引导入网了。"},{"id":2076,"sid":354,"sat":1,"tid":162,"tt":"Bitcoin Watchdog Service","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-13","ts":"2010-08-13T17:09:27Z","url":"https://bitcointalk.org/index.php?topic=691.msg9041#msg9041","zh":"<blockquote><p>然而到时就没有 IRC 服务器可以用来引导入网了。</p></blockquote><p>这无关紧要，因为你也同样连不上 sourceforge 去下载软件。</p><p>倘若你之前连接过网络，就不再需要 IRC 来引导了。就算没连接过，你也可以从种子节点引导。从 0.3.0 起 IRC 就完全是多余的了。</p>","zhText":"然而到时就没有 IRC 服务器可以用来引导入网了。\n\n这无关紧要，因为你也同样连不上 sourceforge 去下载软件。\n倘若你之前连接过网络，就不再需要 IRC 来引导了。就算没连接过，你也可以从种子节点引导。从 0.3.0 起 IRC 就完全是多余的了。"},{"id":2295,"sid":355,"sat":1,"tid":180,"tt":"Version 0.3.9 rc1, please test","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-13","ts":"2010-08-13T17:40:00Z","url":"https://bitcointalk.org/index.php?topic=806.msg9046#msg9046","zh":"<p>这是测试版构建，倘若你想在 0.3.9 发布前帮忙测试的话可以用。\n（或者你想现在就把升级做完、不想干等的话）</p><p>下载：（仅二进制包）\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-win32.zip</a>\n（<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-linux.tar.gz</a>）</p><p>SHA1 a36ea00cce27b4b083755df73a3d1e5e5729884e bitcoin-0.3.9.rc1-win32.zip\nSHA1 bbb333b0ea57302740ad1bb9948520d00f884f9d bitcoin-0.3.9.rc1-linux.tar.gz</p><p>更新：\nLinux 用户请改测 rc2。它增加了 tcatm 的 4 路 SSE2 的 -4way 开关。只面向 Linux：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.9.rc2-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.9.rc2-linux.tar.gz</a></p><p>SHA1 47d9998f7d15fe81234a5c89a542da9d0664df40 bitcoin-0.3.9.rc2-linux.tar.gz</p><p>请把测试结果反馈到\n<a href=\"http://bitcointalk.org/index.php?topic=820\">http://bitcointalk.org/index.php?topic=820</a></p>","zhText":"这是测试版构建，倘若你想在 0.3.9 发布前帮忙测试的话可以用。\n（或者你想现在就把升级做完、不想干等的话）\n下载：（仅二进制包）\nhttp://www.bitcoin.org/download/bitcoin-0.3.9.rc1-win32.zip\n（http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-linux.tar.gz）\nSHA1 a36ea00cce27b4b083755df73a3d1e5e5729884e bitcoin-0.3.9.rc1-win32.zip\nSHA1 bbb333b0ea57302740ad1bb9948520d00f884f9d bitcoin-0.3.9.rc1-linux.tar.gz\n更新：\nLinux 用户请改测 rc2。它增加了 tcatm 的 4 路 SSE2 的 -4way 开关。只面向 Linux：\nhttp://www.bitcoin.org/download/bitcoin-0.3.9.rc2-linux.tar.gz\nSHA1 47d9998f7d15fe81234a5c89a542da9d0664df40 bitcoin-0.3.9.rc2-linux.tar.gz\n请把测试结果反馈到\nhttp://bitcointalk.org/index.php?topic=820"},{"id":2252,"sid":356,"sat":1,"tid":174,"tt":"Not a suggestion","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-13","ts":"2010-08-13T19:28:47Z","url":"https://bitcointalk.org/index.php?topic=770.msg9074#msg9074","zh":"<p>我还没搞懂你的想法。它对公共网络隐藏了什么信息吗？优势在哪里？</p><p>倘若至少 50% 的节点把交易校验到了可以丢弃旧交易的程度，那所有人都看到了一切，本可以留下记录。</p><p>公共节点能看到交易的金额吗？能看到金额来自哪笔先前的交易吗？倘若能，那他们就什么都知道了。倘若不能，他们就无法验证金额来自有效来源，你也就不能把他们生成的链当作交易的校验凭据。</p><p>它隐藏的是 bitcoin 地址吗？是这个吗？好，兴许我现在明白了，倘若是的话。</p><p>密码学兴许提供了一种「密钥盲化」的办法。我做过一些调研，这方面的资料很冷门，但兴许有些东西。「群签名」可能与此相关。</p><p>这个大方向上有一些东西：\n<a href=\"http://www.users.zetnet.co.uk/hopwood/crypto/rh/\">http://www.users.zetnet.co.uk/hopwood/crypto/rh/</a></p><p>我们需要的是一种为一个公钥生成额外盲化变体的方法。盲化变体要具有与根公钥相同的性质，使得私钥可以为其中任何一个生成签名。其他人无法判断某个盲化密钥是否与根密钥相关，也无法判断几个盲化密钥是否来自同一个根密钥。这些就是盲化的性质。一句话概括盲化：x = (x * large_random_int) mod m。</p><p>支付到 bitcoin 地址时，你可以为每次使用生成一个新的盲化密钥。</p><p>然后你还需要能生成这样的签名：无法看出两个签名出自同一个私钥。我不确定「总是用不同的盲化公钥签名」是否已经具备这个性质。倘若不具备，我想就该群签名出场了。有了群签名，可以做到某样东西被签了名，却不知道是谁签的。</p><p>举个例子，假设某次不得人心的军事行动必须下达命令，但没人想作为下令者载入史册。倘若 10 位领导人都持有私钥，其中一位可以签署命令，而你不会知道是谁签的。</p>","zhText":"我还没搞懂你的想法。它对公共网络隐藏了什么信息吗？优势在哪里？\n倘若至少 50% 的节点把交易校验到了可以丢弃旧交易的程度，那所有人都看到了一切，本可以留下记录。\n公共节点能看到交易的金额吗？能看到金额来自哪笔先前的交易吗？倘若能，那他们就什么都知道了。倘若不能，他们就无法验证金额来自有效来源，你也就不能把他们生成的链当作交易的校验凭据。\n它隐藏的是 bitcoin 地址吗？是这个吗？好，兴许我现在明白了，倘若是的话。\n密码学兴许提供了一种「密钥盲化」的办法。我做过一些调研，这方面的资料很冷门，但兴许有些东西。「群签名」可能与此相关。\n这个大方向上有一些东西：\nhttp://www.users.zetnet.co.uk/hopwood/crypto/rh/\n我们需要的是一种为一个公钥生成额外盲化变体的方法。盲化变体要具有与根公钥相同的性质，使得私钥可以为其中任何一个生成签名。其他人无法判断某个盲化密钥是否与根密钥相关，也无法判断几个盲化密钥是否来自同一个根密钥。这些就是盲化的性质。一句话概括盲化：x = (x * large_random_int) mod m。\n支付到 bitcoin 地址时，你可以为每次使用生成一个新的盲化密钥。\n然后你还需要能生成这样的签名：无法看出两个签名出自同一个私钥。我不确定「总是用不同的盲化公钥签名」是否已经具备这个性质。倘若不具备，我想就该群签名出场了。有了群签名，可以做到某样东西被签了名，却不知道是谁签的。\n举个例子，假设某次不得人心的军事行动必须下达命令，但没人想作为下令者载入史册。倘若 10 位领导人都持有私钥，其中一位可以签署命令，而你不会知道是谁签的。"},{"id":2307,"sid":null,"sat":0,"tid":181,"tt":"Proposed change to sendtoaddress API call","src":"Bitcointalk","author":"jgarzik","date":"2010-08-13","ts":"2010-08-13T23:01:14Z","url":"https://bitcointalk.org/index.php?topic=807.msg9126#msg9126","zh":"<p>既然已经有 'getblock'，还需要 'gettransaction' 吗？</p>","zhText":"既然已经有 'getblock'，还需要 'gettransaction' 吗？"},{"id":1904,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"sgtstein","date":"2010-08-13","ts":"2010-08-13T23:17:51Z","url":"https://bitcointalk.org/index.php?topic=648.msg9128#msg9128","zh":"<blockquote><p>1. 在 32 位上不能运行（虽然这不是算法本身的问题）。\n2. 补丁是针对较旧的 SVN 的。GitHub 上有一个 git 仓库：<a href=\"http://github.com/tcatm/bitcoin-cruncher\">http://github.com/tcatm/bitcoin-cruncher</a>\n3. 在任何 64 位 Linux 上都能编译。</p><p>它的定位不是替代标准客户端，而是用于一台专用的 bitcoinminer 机器。我打算将来做一个可插拔的 bitcoinminer。但以目前的难度，挖比特币比寻找更快的挖矿方式更划算。</p></blockquote><p>1. 我们知道为什么它不能在 32 位上运行吗？是因为它用了 128 位吗？倘若是，降到 64 位会有帮助吗？</p><p>2. 谢谢，我会研究一下在我的 64 位系统上实现它。\n3. 太好了，很期待用上它。</p><p>我原本计划在一台 PE2650 双路 Xeon @3.2GHz（带超线程）上使用它。我真的很想把这件事弄明白，好把那台机器用起来。我也计划攒一台。以目前的难度我同意，除非系统反正要开着、延迟又不是问题。</p>","zhText":"1. 在 32 位上不能运行（虽然这不是算法本身的问题）。\n2. 补丁是针对较旧的 SVN 的。GitHub 上有一个 git 仓库：http://github.com/tcatm/bitcoin-cruncher\n3. 在任何 64 位 Linux 上都能编译。\n它的定位不是替代标准客户端，而是用于一台专用的 bitcoinminer 机器。我打算将来做一个可插拔的 bitcoinminer。但以目前的难度，挖比特币比寻找更快的挖矿方式更划算。\n\n1. 我们知道为什么它不能在 32 位上运行吗？是因为它用了 128 位吗？倘若是，降到 64 位会有帮助吗？\n2. 谢谢，我会研究一下在我的 64 位系统上实现它。\n3. 太好了，很期待用上它。\n我原本计划在一台 PE2650 双路 Xeon @3.2GHz（带超线程）上使用它。我真的很想把这件事弄明白，好把那台机器用起来。我也计划攒一台。以目前的难度我同意，除非系统反正要开着、延迟又不是问题。"},{"id":2308,"sid":357,"sat":1,"tid":181,"tt":"Proposed change to sendtoaddress API call","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-13","ts":"2010-08-13T23:39:14Z","url":"https://bitcointalk.org/index.php?topic=807.msg9134#msg9134","zh":"<p>现在就开始为了向后兼容而不惜一切代价把 API 搞乱，太早了。</p><p>直接返回 \"<txid>\" 就好。</p>","zhText":"现在就开始为了向后兼容而不惜一切代价把 API 搞乱，太早了。\n直接返回 \"\" 就好。"},{"id":1905,"sid":358,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-14","ts":"2010-08-14T00:49:18Z","url":"https://bitcointalk.org/index.php?topic=648.msg9145#msg9145","zh":"<p>Windows 上的 MinGW 编译它会有问题：</p><p>g++ -c -mthreads -O2 -w -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -I\"/boost\" -I\"/db/build_unix\" -I\"/openssl/include\" -I\"/wxwidgets/lib/gcc_lib/mswud\" -I\"/wxwidgets/include\" -msse2 -O3 -o obj/sha256.o sha256.cpp</p><p>sha256.cpp: In function `long long int __vector__ Ch(long long int __vector__, long long int __vector__, long long int __vector__)':\nsha256.cpp:31: internal compiler error: in perform_integral_promotions, at cp/typeck.c:1454\nPlease submit a full bug report,\nwith preprocessed source if appropriate.\nSee <URL:http://www.mingw.org/bugs.shtml> for instructions.\nmake: *** [obj/sha256.o] Error 1</p>","zhText":"Windows 上的 MinGW 编译它会有问题：\ng++ -c -mthreads -O2 -w -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -I\"/boost\" -I\"/db/build_unix\" -I\"/openssl/include\" -I\"/wxwidgets/lib/gcc_lib/mswud\" -I\"/wxwidgets/include\" -msse2 -O3 -o obj/sha256.o sha256.cpp\nsha256.cpp: In function `long long int __vector__ Ch(long long int __vector__, long long int __vector__, long long int __vector__)':\nsha256.cpp:31: internal compiler error: in perform_integral_promotions, at cp/typeck.c:1454\nPlease submit a full bug report,\nwith preprocessed source if appropriate.\nSee for instructions.\nmake: *** [obj/sha256.o] Error 1"},{"id":1907,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"tcatm","date":"2010-08-14","ts":"2010-08-14T00:53:07Z","url":"https://bitcointalk.org/index.php?topic=648.msg9147#msg9147","zh":"<blockquote><p>Windows 上的 MinGW 编译它会有问题：</p><p>g++ -c -mthreads -O2 -w -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -I\"/boost\" -I\"/db/build_unix\" -I\"/openssl/include\" -I\"/wxwidgets/lib/gcc_lib/mswud\" -I\"/wxwidgets/include\" -msse2 -O3 -o obj/sha256.o sha256.cpp</p><p>sha256.cpp: In function `long long int __vector__ Ch(long long int __vector__, long long int __vector__, long long int __vector__)':\nsha256.cpp:31: internal compiler error: in perform_integral_promotions, at cp/typeck.c:1454\nPlease submit a full bug report,\nwith preprocessed source if appropriate.\nSee <URL:http://www.mingw.org/bugs.shtml> for instructions.\nmake: *** [obj/sha256.o] Error 1</p></blockquote><p>看起来我们是踩到了树优化器里的一个编译器 bug。你能试试用 -O0 编译吗？</p>","zhText":"Windows 上的 MinGW 编译它会有问题：\ng++ -c -mthreads -O2 -w -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -I\"/boost\" -I\"/db/build_unix\" -I\"/openssl/include\" -I\"/wxwidgets/lib/gcc_lib/mswud\" -I\"/wxwidgets/include\" -msse2 -O3 -o obj/sha256.o sha256.cpp\nsha256.cpp: In function `long long int __vector__ Ch(long long int __vector__, long long int __vector__, long long int __vector__)':\nsha256.cpp:31: internal compiler error: in perform_integral_promotions, at cp/typeck.c:1454\nPlease submit a full bug report,\nwith preprocessed source if appropriate.\nSee for instructions.\nmake: *** [obj/sha256.o] Error 1\n\n看起来我们是踩到了树优化器里的一个编译器 bug。你能试试用 -O0 编译吗？"},{"id":1908,"sid":359,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-14","ts":"2010-08-14T04:22:29Z","url":"https://bitcointalk.org/index.php?topic=648.msg9159#msg9159","zh":"<p>倘若你还没试过，试试把 thash 对齐。可能有影响，反正没坏处。</p><blockquote><p>看起来我们是踩到了树优化器里的一个编译器 bug。你能试试用 -O0 编译吗？</p></blockquote><p>-O0 没用，同样的错误。</p><p>MinGW 用的是 GCC 3.4.5。问题很可能出在这里。</p><p>我看看能不能弄一个新版本的 MinGW。</p>","zhText":"倘若你还没试过，试试把 thash 对齐。可能有影响，反正没坏处。\n看起来我们是踩到了树优化器里的一个编译器 bug。你能试试用 -O0 编译吗？\n\n-O0 没用，同样的错误。\nMinGW 用的是 GCC 3.4.5。问题很可能出在这里。\n我看看能不能弄一个新版本的 MinGW。"},{"id":1909,"sid":360,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-14","ts":"2010-08-14T17:55:37Z","url":"https://bitcointalk.org/index.php?topic=648.msg9228#msg9228","zh":"<p>在 32 位上用 MinGW GCC 4.5 把测试跑通了。在 Core 2 上比官方版正好慢 50%。</p>","zhText":"在 32 位上用 MinGW GCC 4.5 把测试跑通了。在 Core 2 上比官方版正好慢 50%。"},{"id":1910,"sid":361,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-14","ts":"2010-08-14T22:06:13Z","url":"https://bitcointalk.org/index.php?topic=648.msg9278#msg9278","zh":"<p>MinGW GCC 4.5.0：\nCrypto++ 不能用，X86_SHA256_HashBlocks() 一直不返回\n我只有用 test.cpp 时才让 4 路并行跑起来，被 BitcoinMiner 调用时就不行</p><p>MinGW GCC 4.4.1：\nCrypto++ 能用\n4 路并行 SIGSEGV</p><p>GCC 显然没有对齐 __m128i。</p><p>即使我们自己把 __m128i 变量对齐了，编译器也可能在后台用 __m128i 当临时变量。</p><p>把我们的 __m128i 变量对齐、并把这几处 inline 改成 define 之后，我让它在 4.4.1 上用 -O0 跑通了：</p><pre><code>#define Ch(b, c, d)  ((b &amp; c) ^ (~b &amp; d))\n#define Maj(b, c, d)  ((b &amp; c) ^ (b &amp; d) ^ (c &amp; d))\n#define ROTR(x, n) (_mm_srli_epi32(x, n) | _mm_slli_epi32(x, 32 - n))\n#define SHR(x, n)  _mm_srli_epi32(x, n)</code></pre><p>但那是在 -O0 下。</p>","zhText":"MinGW GCC 4.5.0：\nCrypto++ 不能用，X86_SHA256_HashBlocks() 一直不返回\n我只有用 test.cpp 时才让 4 路并行跑起来，被 BitcoinMiner 调用时就不行\nMinGW GCC 4.4.1：\nCrypto++ 能用\n4 路并行 SIGSEGV\nGCC 显然没有对齐 __m128i。\n即使我们自己把 __m128i 变量对齐了，编译器也可能在后台用 __m128i 当临时变量。\n把我们的 __m128i 变量对齐、并把这几处 inline 改成 define 之后，我让它在 4.4.1 上用 -O0 跑通了：\n#define Ch(b, c, d) ((b & c) ^ (~b & d))\n#define Maj(b, c, d) ((b & c) ^ (b & d) ^ (c & d))\n#define ROTR(x, n) (_mm_srli_epi32(x, n) | _mm_slli_epi32(x, 32 - n))\n#define SHR(x, n) _mm_srli_epi32(x, n)但那是在 -O0 下。"},{"id":1911,"sid":null,"sat":0,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"sgtstein","date":"2010-08-15","ts":"2010-08-15T03:19:31Z","url":"https://bitcointalk.org/index.php?topic=648.msg9353#msg9353","zh":"<p>好了，回来报告。</p><p>编译时给 gcc 加上 -msse 和 -msse2 就编译过了。最开始哈希速度约 692kh/s（SVN r130 的 50%[1400kh/s]），重新编译后现在约 1120kh/s。这大概相当于同时用上我的两颗 CPU 但不开超线程的水平，不过我可以确认它确实用到了超线程。关掉超线程后，我得到约 1350kh/s，已经非常接近官方版了。</p><p>另外，git 里包含打好补丁的最新代码吗？</p><pre><code>// SVN r130 Using HT.\n08/14/10 19:02 hashmeter   4 CPUs   1392 khash/s\n08/14/10 19:32 hashmeter   4 CPUs   1387 khash/s\n08/14/10 20:02 hashmeter   4 CPUs   1386 khash/s\n08/14/10 20:32 hashmeter   4 CPUs   1380 khash/s\n08/14/10 21:02 hashmeter   4 CPUs   1363 khash/s\n// With -msse -msse2, first run. Using HT.\n08/14/10 21:32 hashmeter   4 CPUs    692 khash/s\n08/14/10 22:06 hashmeter   4 CPUs   1011 khash/s\n08/14/10 22:11 hashmeter   4 CPUs   1104 khash/s\n08/14/10 22:16 hashmeter   4 CPUs   1120 khash/s\n// NOT using HT.\n08/14/10 22:21 hashmeter   2 CPUs   1359 khash/s\n08/14/10 22:26 hashmeter   2 CPUs   1340 khash/s</code></pre><p>就是想讲讲我的经历，能提供多少信息就提供多少。</p>","zhText":"好了，回来报告。\n编译时给 gcc 加上 -msse 和 -msse2 就编译过了。最开始哈希速度约 692kh/s（SVN r130 的 50%[1400kh/s]），重新编译后现在约 1120kh/s。这大概相当于同时用上我的两颗 CPU 但不开超线程的水平，不过我可以确认它确实用到了超线程。关掉超线程后，我得到约 1350kh/s，已经非常接近官方版了。\n另外，git 里包含打好补丁的最新代码吗？\n// SVN r130 Using HT.\n08/14/10 19:02 hashmeter 4 CPUs 1392 khash/s\n08/14/10 19:32 hashmeter 4 CPUs 1387 khash/s\n08/14/10 20:02 hashmeter 4 CPUs 1386 khash/s\n08/14/10 20:32 hashmeter 4 CPUs 1380 khash/s\n08/14/10 21:02 hashmeter 4 CPUs 1363 khash/s\n// With -msse -msse2, first run. Using HT.\n08/14/10 21:32 hashmeter 4 CPUs 692 khash/s\n08/14/10 22:06 hashmeter 4 CPUs 1011 khash/s\n08/14/10 22:11 hashmeter 4 CPUs 1104 khash/s\n08/14/10 22:16 hashmeter 4 CPUs 1120 khash/s\n// NOT using HT.\n08/14/10 22:21 hashmeter 2 CPUs 1359 khash/s\n08/14/10 22:26 hashmeter 2 CPUs 1340 khash/s就是想讲讲我的经历，能提供多少信息就提供多少。"},{"id":1912,"sid":362,"sat":1,"tid":152,"tt":"4 hashes parallel on SSE2 CPUs for 0.3.6","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T03:40:29Z","url":"https://bitcointalk.org/index.php?topic=648.msg9359#msg9359","zh":"<p>在 MinGW GCC 4.4.1 和 4.5.0 上，我都是用 test.cpp 能跑通，但被 BitcoinMiner 调用时就 SIGSEGV。所以现在看来不是 GCC 版本的问题，而是别的什么，可能就是栈对齐的运气。</p><p>在 Ubuntu 32 位的 GCC 4.3.3 上我这边运行正常。</p><p>我找到了 MinGW 4.5.0 上 Crypto++ 的问题。这是对应的补丁：</p><pre><code>--- \\old\\sha.cpp Mon Jul 26 13:31:11 2010\n+++\new\\sha.cpp Sat Aug 14 20:21:08 2010\n@@ -336,7 +336,7 @@\n  ROUND(14, 0, eax, ecx, edi, edx)\n  ROUND(15, 0, ecx, eax, edx, edi)\n\n- ASL(1)\n+    ASL(label1)   // Bitcoin: fix for MinGW GCC 4.5\n  AS2(add WORD_REG(si), 4*16)\n  ROUND(0, 1, eax, ecx, edi, edx)\n  ROUND(1, 1, ecx, eax, edx, edi)\n@@ -355,7 +355,7 @@\n  ROUND(14, 1, eax, ecx, edi, edx)\n  ROUND(15, 1, ecx, eax, edx, edi)\n  AS2( cmp  WORD_REG(si), K_END)\n- ASJ( jne, 1, b)\n+    ASJ(    jne,    label1,  )   // Bitcoin: fix for MinGW GCC 4.5\n\n  AS2( mov  WORD_REG(dx), DATA_SAVE)\n  AS2( add  WORD_REG(dx), 64)</code></pre>","zhText":"在 MinGW GCC 4.4.1 和 4.5.0 上，我都是用 test.cpp 能跑通，但被 BitcoinMiner 调用时就 SIGSEGV。所以现在看来不是 GCC 版本的问题，而是别的什么，可能就是栈对齐的运气。\n在 Ubuntu 32 位的 GCC 4.3.3 上我这边运行正常。\n我找到了 MinGW 4.5.0 上 Crypto++ 的问题。这是对应的补丁：\n--- \\old\\sha.cpp Mon Jul 26 13:31:11 2010\n+++\new\\sha.cpp Sat Aug 14 20:21:08 2010\n@@ -336,7 +336,7 @@\n ROUND(14, 0, eax, ecx, edi, edx)\n ROUND(15, 0, ecx, eax, edx, edi)\n\n- ASL(1)\n+ ASL(label1) // Bitcoin: fix for MinGW GCC 4.5\n AS2(add WORD_REG(si), 4*16)\n ROUND(0, 1, eax, ecx, edi, edx)\n ROUND(1, 1, ecx, eax, edx, edi)\n@@ -355,7 +355,7 @@\n ROUND(14, 1, eax, ecx, edi, edx)\n ROUND(15, 1, ecx, eax, edx, edi)\n AS2( cmp WORD_REG(si), K_END)\n- ASJ( jne, 1, b)\n+ ASJ( jne, label1, ) // Bitcoin: fix for MinGW GCC 4.5\n\n AS2( mov WORD_REG(dx), DATA_SAVE)\n AS2( add WORD_REG(dx), 64)"},{"id":2330,"sid":null,"sat":0,"tid":182,"tt":"Potential disaster scenario","src":"Bitcointalk","author":"gebler","date":"2010-08-15","ts":"2010-08-15T08:31:16Z","url":"https://bitcointalk.org/index.php?topic=813.msg9408#msg9408","zh":"<blockquote><p>很多人在用雇主电脑零成本铸币。这对雇主不公平，但这正是比特币会持续有人铸币的原因。</p></blockquote><p>这是个好观点。我想我没有低估人们高效且<i>正当</i>地铸币的能力——难度调整能很好地补偿这一点，所以在我的推演里这不是问题。但我可能低估了铸币者在他人不知情、未同意的情况下占用他人资源造成的影响。FAQ 里假设铸币成本会趋近电价减去微薄利润，我大抵是不加批判地接受了这个说法。倘若盗用资源成为铸币资金的主要来源，难度调整机制的缺陷就会产生更微妙的影响。</p>","zhText":"很多人在用雇主电脑零成本铸币。这对雇主不公平，但这正是比特币会持续有人铸币的原因。\n\n这是个好观点。我想我没有低估人们高效且正当地铸币的能力——难度调整能很好地补偿这一点，所以在我的推演里这不是问题。但我可能低估了铸币者在他人不知情、未同意的情况下占用他人资源造成的影响。FAQ 里假设铸币成本会趋近电价减去微薄利润，我大抵是不加批判地接受了这个说法。倘若盗用资源成为铸币资金的主要来源，难度调整机制的缺陷就会产生更微妙的影响。"},{"id":2340,"sid":363,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T15:52:09Z","url":"https://bitcointalk.org/index.php?topic=820.msg9452#msg9452","zh":"<p>0.3.10 把 tcatm 的 4 路 SSE2 作为可选开关加入。</p><p>用开关 \"-4way\" 打开。不加开关则使用 Crypto++ ASM SHA-256。</p><p>我只在 Linux 上跑通了它。</p><p>下载：\n0.3.10 见 <a href=\"http://bitcointalk.org/index.php?topic=827.0\">http://bitcointalk.org/index.php?topic=827.0</a></p><p>请反馈你的 CPU 型号和测试结果！目前比较清楚的是 Core 2 及以下更慢，i5 更快。还没听到任何 i7 的成绩。我们还需要了解 AMD 各型号或其他较少见 CPU 的情况。</p>","zhText":"0.3.10 把 tcatm 的 4 路 SSE2 作为可选开关加入。\n用开关 \"-4way\" 打开。不加开关则使用 Crypto++ ASM SHA-256。\n我只在 Linux 上跑通了它。\n下载：\n0.3.10 见 http://bitcointalk.org/index.php?topic=827.0\n请反馈你的 CPU 型号和测试结果！目前比较清楚的是 Core 2 及以下更慢，i5 更快。还没听到任何 i7 的成绩。我们还需要了解 AMD 各型号或其他较少见 CPU 的情况。"},{"id":2331,"sid":364,"sat":1,"tid":182,"tt":"Potential disaster scenario","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T16:37:16Z","url":"https://bitcointalk.org/index.php?topic=813.msg9454#msg9454","zh":"<p>铸币会流向这些地方：\n1) 最便宜或免费的地方\n2) 出于理念愿意出力帮忙的人\n3) 想省去交易麻烦直接拿币的人</p><p>确实有正当的免费场景。凡是用电取暖的地方，铸币基本等于免费，因为电脑的余热抵消了你的电暖器耗电。很多小公寓出于方便用的就是电暖。</p><p>取暖油贵不贵？油价这么高，倘若它真的比电贵，那铸币就是负成本。</p><p>还有孩子把它挂到父母的电费单上、员工挂到雇主头上、僵尸网络等等。</p><p>情况 3) 在小额场景会起作用。倘若你只是需要一点零钱应付零星微支付，走交易所的开销并不划算。我认为这是相对法币的一个优势：与其让全部铸币税都归一个大机构，不如让它以零钱的形式流向确实需要凑点小钱的人。</p>","zhText":"铸币会流向这些地方：\n1) 最便宜或免费的地方\n2) 出于理念愿意出力帮忙的人\n3) 想省去交易麻烦直接拿币的人\n确实有正当的免费场景。凡是用电取暖的地方，铸币基本等于免费，因为电脑的余热抵消了你的电暖器耗电。很多小公寓出于方便用的就是电暖。\n取暖油贵不贵？油价这么高，倘若它真的比电贵，那铸币就是负成本。\n还有孩子把它挂到父母的电费单上、员工挂到雇主头上、僵尸网络等等。\n情况 3) 在小额场景会起作用。倘若你只是需要一点零钱应付零星微支付，走交易所的开销并不划算。我认为这是相对法币的一个优势：与其让全部铸币税都归一个大机构，不如让它以零钱的形式流向确实需要凑点小钱的人。"},{"id":2341,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"knightmb","date":"2010-08-15","ts":"2010-08-15T17:02:16Z","url":"https://bitcointalk.org/index.php?topic=820.msg9457#msg9457","zh":"<p>我做了个快速测试，在更多机器上试过之后再汇报。</p><p>Pentium E5300 双核 2.6 GHz (2MB 缓存，FSB 800MHz)\n处理器信息：<a href=\"http://en.wikipedia.org/wiki/Wolfdale_%28microprocessor%29\">http://en.wikipedia.org/wiki/Wolfdale_%28microprocessor%29</a>\n官方版 = 2261 khash/s\n4 路 = 1103 khash/s (64 位)</p><p>Pentium 4 - 3.0GHz (关闭超线程) 1MB 缓存，FSB 800MHz\n处理器信息：<a href=\"http://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29\">http://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29</a>\n官方版 = 1024 khash/s (32 位)\n4 路 = 658 khash/s (32 位)</p><p>Pentium 4 - 2.8GHz (关闭超线程) 1MB 缓存，FSB 800MHz\n处理器信息：<a href=\"http://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29\">http://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29</a>\n官方版 = 917 khash/s (64 位)\n4 路 = 747 khash/s (64 位)</p><p>倘若我不是乱猜的话，关键在于 CPU 缓存大小。跑得更慢的 CPU 片上缓存都在 2 MB 或以下，而 Core i5 的片上 CPU 缓存至少 3MB 起步。</p>","zhText":"我做了个快速测试，在更多机器上试过之后再汇报。\nPentium E5300 双核 2.6 GHz (2MB 缓存，FSB 800MHz)\n处理器信息：http://en.wikipedia.org/wiki/Wolfdale_%28microprocessor%29\n官方版 = 2261 khash/s\n4 路 = 1103 khash/s (64 位)\nPentium 4 - 3.0GHz (关闭超线程) 1MB 缓存，FSB 800MHz\n处理器信息：http://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29\n官方版 = 1024 khash/s (32 位)\n4 路 = 658 khash/s (32 位)\nPentium 4 - 2.8GHz (关闭超线程) 1MB 缓存，FSB 800MHz\n处理器信息：http://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29\n官方版 = 917 khash/s (64 位)\n4 路 = 747 khash/s (64 位)\n倘若我不是乱猜的话，关键在于 CPU 缓存大小。跑得更慢的 CPU 片上缓存都在 2 MB 或以下，而 Core i5 的片上 CPU 缓存至少 3MB 起步。"},{"id":2299,"sid":null,"sat":0,"tid":180,"tt":"Version 0.3.9 rc1, please test","src":"Bitcointalk","author":"jgarzik","date":"2010-08-15","ts":"2010-08-15T17:46:27Z","url":"https://bitcointalk.org/index.php?topic=806.msg9467#msg9467","zh":"<p>不想贪不属于自己的功劳</p><p>hashes/sec 补丁来自 lachesis，扩展帮助可能源自我的想法，但代码写得有些不一样。</p>","zhText":"不想贪不属于自己的功劳\nhashes/sec 补丁来自 lachesis，扩展帮助可能源自我的想法，但代码写得有些不一样。"},{"id":2300,"sid":365,"sat":1,"tid":180,"tt":"Version 0.3.9 rc1, please test","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T18:11:41Z","url":"https://bitcointalk.org/index.php?topic=806.msg9475#msg9475","zh":"<blockquote><p>扩展帮助可能源自我的想法，但代码写得有些不一样。</p></blockquote><p>想法才是主要的部分。你把补丁发上来时，我意识到本来就该那么做，而非 \"-?\"。我对 \"-?\" 一直有顾虑：它侵占了可能的参数取值，而且帮助响应依据的是调用方版本而非服务器版本。</p>","zhText":"扩展帮助可能源自我的想法，但代码写得有些不一样。\n\n想法才是主要的部分。你把补丁发上来时，我意识到本来就该那么做，而非 \"-?\"。我对 \"-?\" 一直有顾虑：它侵占了可能的参数取值，而且帮助响应依据的是调用方版本而非服务器版本。"},{"id":2342,"sid":366,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T18:23:26Z","url":"https://bitcointalk.org/index.php?topic=820.msg9478#msg9478","zh":"<p>希望有人能拿 i5 或 AMD 测一下，确认我编译得没问题。我手头这两样都没有。</p><p>我也好奇它在 32 位 Linux 上是不是比 64 位差很多。</p>","zhText":"希望有人能拿 i5 或 AMD 测一下，确认我编译得没问题。我手头这两样都没有。\n我也好奇它在 32 位 Linux 上是不是比 64 位差很多。"},{"id":2343,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"sgtstein","date":"2010-08-15","ts":"2010-08-15T18:26:40Z","url":"https://bitcointalk.org/index.php?topic=820.msg9479#msg9479","zh":"<p>代码在哪里？我用的是 CentOS 5.5 的机器，得自己编译。编好之后我会用 32 位 Linux 和 1MB 缓存的 Xeon 来反馈结果。</p>","zhText":"代码在哪里？我用的是 CentOS 5.5 的机器，得自己编译。编好之后我会用 32 位 Linux 和 1MB 缓存的 Xeon 来反馈结果。"},{"id":2344,"sid":367,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T18:43:27Z","url":"https://bitcointalk.org/index.php?topic=820.msg9483#msg9483","zh":"<p>我刚上传了一个快速构建，好让测试者确认我编译得对不对。（我没有 i5 也没有 AMD）倘若验证通过，我再打包完整发布包、走完发布流程。</p>","zhText":"我刚上传了一个快速构建，好让测试者确认我编译得对不对。（我没有 i5 也没有 AMD）倘若验证通过，我再打包完整发布包、走完发布流程。"},{"id":2396,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"jgarzik","date":"2010-08-15","ts":"2010-08-15T20:42:49Z","url":"https://bitcointalk.org/index.php?topic=823.msg9526#msg9526","zh":"<p>或者用你 github 上同一个补丁：<a href=\"http://gist.github.com/525921\">http://gist.github.com/525921</a>，那里给出了可以直接套用的原始补丁，\n<a href=\"http://gist.github.com/raw/525921/fe2ad7583f0dd2444caa0b3e24d750bf45cac11b/Quick%20fix%20block%2074652\">http://gist.github.com/raw/525921/fe2ad7583f0dd2444caa0b3e24d750bf45cac11b/Quick%20fix%20block%2074652</a></p><p><b>编辑</b>：我没法直接用它打补丁，兴许是 CRLF 的问题。</p><p>我手工套用了你的改动，把结果上传到了这里：<a href=\"http://yyz.us/bitcoin/patch.bitcoin-gavin-overflow-quick-fix\">http://yyz.us/bitcoin/patch.bitcoin-gavin-overflow-quick-fix</a></p>","zhText":"或者用你 github 上同一个补丁：http://gist.github.com/525921，那里给出了可以直接套用的原始补丁，\nhttp://gist.github.com/raw/525921/fe2ad7583f0dd2444caa0b3e24d750bf45cac11b/Quick%20fix%20block%2074652\n编辑：我没法直接用它打补丁，兴许是 CRLF 的问题。\n我手工套用了你的改动，把结果上传到了这里：http://yyz.us/bitcoin/patch.bitcoin-gavin-overflow-quick-fix"},{"id":2397,"sid":368,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T20:59:09Z","url":"https://bitcointalk.org/index.php?topic=823.msg9530#msg9530","zh":"<p>这是初步的改动。看起来对吗？我还有更多要改的，这不全。稍后提交到 SVN。</p><pre><code>bool CheckTransaction() const\n    {\n        // Basic checks that don't depend on any context\n        if (vin.empty() || vout.empty())\n            return error(\"CTransaction::CheckTransaction() : vin or vout empty\");\n\n        // Check for negative and overflow values\n        int64 nTotal = 0;\n        foreach(const CTxOut&amp; txout, vout)\n        {\n            if (txout.nValue &lt; 0)\n                return error(\"CTransaction::CheckTransaction() : txout.nValue negative\");\n            if (txout.nValue > 21000000 * COIN)\n                return error(\"CTransaction::CheckTransaction() : txout.nValue too high\");\n            nTotal += txout.nValue;\n            if (nTotal > 21000000 * COIN)\n                return error(\"CTransaction::CheckTransaction() : txout total too high\");\n        }\n\n        if (IsCoinBase())\n        {\n            if (vin[0].scriptSig.size() &lt; 2 || vin[0].scriptSig.size() > 100)\n                return error(\"CTransaction::CheckTransaction() : coinbase script size\");\n        }\n        else\n        {\n            foreach(const CTxIn&amp; txin, vin)\n                if (txin.prevout.IsNull())\n                    return error(\"CTransaction::CheckTransaction() : prevout is null\");\n        }\n\n        return true;\n    }</code></pre><p>别把主题设为置顶，没人会往上看。到时自然会有足够的回帖把它顶起来。</p>","zhText":"这是初步的改动。看起来对吗？我还有更多要改的，这不全。稍后提交到 SVN。\nbool CheckTransaction() const\n {\n // Basic checks that don't depend on any context\n if (vin.empty() || vout.empty())\n return error(\"CTransaction::CheckTransaction() : vin or vout empty\");\n\n // Check for negative and overflow values\n int64 nTotal = 0;\n foreach(const CTxOut& txout, vout)\n {\n if (txout.nValue < 0)\n return error(\"CTransaction::CheckTransaction() : txout.nValue negative\");\n if (txout.nValue > 21000000 * COIN)\n return error(\"CTransaction::CheckTransaction() : txout.nValue too high\");\n nTotal += txout.nValue;\n if (nTotal > 21000000 * COIN)\n return error(\"CTransaction::CheckTransaction() : txout total too high\");\n }\n\n if (IsCoinBase())\n {\n if (vin[0].scriptSig.size() < 2 || vin[0].scriptSig.size() > 100)\n return error(\"CTransaction::CheckTransaction() : coinbase script size\");\n }\n else\n {\n foreach(const CTxIn& txin, vin)\n if (txin.prevout.IsNull())\n return error(\"CTransaction::CheckTransaction() : prevout is null\");\n }\n\n return true;\n }别把主题设为置顶，没人会往上看。到时自然会有足够的回帖把它顶起来。"},{"id":2398,"sid":369,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T21:06:45Z","url":"https://bitcointalk.org/index.php?topic=823.msg9531#msg9531","zh":"<p>倘若大家停止铸币会很有帮助。我们很可能需要在当前链附近重做一条分支，你们铸得越少，这一步完成得越快。</p><p>第一个补丁会进 SVN rev 132。还没上传。我要先把其他一些杂项改动提交掉，然后再上传这个补丁。</p>","zhText":"倘若大家停止铸币会很有帮助。我们很可能需要在当前链附近重做一条分支，你们铸得越少，这一步完成得越快。\n第一个补丁会进 SVN rev 132。还没上传。我要先把其他一些杂项改动提交掉，然后再上传这个补丁。"},{"id":2401,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-08-15","ts":"2010-08-15T21:15:18Z","url":"https://bitcointalk.org/index.php?topic=823.msg9535#msg9535","zh":"<blockquote><p>我看没问题。</p><p>你能方便地在启动时硬编码一个对坏区块哈希的检查吗？倘若它在最佳链上，就孤立它和后续区块。要不然就得重新下载全部或大部分链来修复，太痛苦了……</p></blockquote><p>或者干脆把所有区块快速重新校验一遍。毕竟这比以前<a href=\"http://bitcointalk.org/index.php?topic=550.0\">快 5 倍</a>了。</p>","zhText":"我看没问题。\n你能方便地在启动时硬编码一个对坏区块哈希的检查吗？倘若它在最佳链上，就孤立它和后续区块。要不然就得重新下载全部或大部分链来修复，太痛苦了……\n\n或者干脆把所有区块快速重新校验一遍。毕竟这比以前快 5 倍了。"},{"id":2402,"sid":370,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T21:23:55Z","url":"https://bitcointalk.org/index.php?topic=823.msg9539#msg9539","zh":"<p>有了更新之后，你可以下载 knightmb 的区块链。要挑一个足够旧的，结尾<i>早于</i>区块 74000，如此这般最近的那个安全性锁定才能校验它。有人能找一下链接吗？</p>","zhText":"有了更新之后，你可以下载 knightmb 的区块链。要挑一个足够旧的，结尾早于区块 74000，如此这般最近的那个安全性锁定才能校验它。有人能找一下链接吗？"},{"id":2406,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"jgarzik","date":"2010-08-15","ts":"2010-08-15T21:38:41Z","url":"https://bitcointalk.org/index.php?topic=823.msg9547#msg9547","zh":"<blockquote><p>能不能给我们这些笨新手讲讲，下载下来的区块链要怎么用？</p></blockquote><p>就是替换 bitcoin 数据目录里的文件。不推荐这么做，除非你清楚自己在干什么。</p><p>最简单最安全的办法是备份 wallet.dat 然后重新下载一切。</p>","zhText":"能不能给我们这些笨新手讲讲，下载下来的区块链要怎么用？\n\n就是替换 bitcoin 数据目录里的文件。不推荐这么做，除非你清楚自己在干什么。\n最简单最安全的办法是备份 wallet.dat 然后重新下载一切。"},{"id":2407,"sid":371,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T21:40:19Z","url":"https://bitcointalk.org/index.php?topic=823.msg9548#msg9548","zh":"<p>补丁已上传到 SVN rev 132！</p><p>目前推荐的步骤：\n1) 关闭客户端。\n2) 下载 knightmb 的 blk 文件。（替换你的 blk0001.dat 和 blkindex.dat 文件）\n3) 升级。\n4) 启动时应该少于 74000 个区块。让它把剩下的重新下载。</p><p>倘若你不想用 knightmb 的文件，也可以直接删掉 blk*.dat，但倘若所有人同时下载整个区块索引，网络压力会很大。</p><p>我马上构建发布版。</p>","zhText":"补丁已上传到 SVN rev 132！\n目前推荐的步骤：\n1) 关闭客户端。\n2) 下载 knightmb 的 blk 文件。（替换你的 blk0001.dat 和 blkindex.dat 文件）\n3) 升级。\n4) 启动时应该少于 74000 个区块。让它把剩下的重新下载。\n倘若你不想用 knightmb 的文件，也可以直接删掉 blk*.dat，但倘若所有人同时下载整个区块索引，网络压力会很大。\n我马上构建发布版。"},{"id":2421,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"BitLex","date":"2010-08-15","ts":"2010-08-15T22:52:47Z","url":"https://bitcointalk.org/index.php?topic=823.msg9571#msg9571","zh":"<blockquote><p>中本聪说过需要早于 74,000</p></blockquote><p>他没这么说，他说的是「你会想要一个」，不是「<b>必须是</b>」，有点不一样。而且倘若「……只有坏区块以及其后的区块是无效的。之前所有区块都是有效的……」，那就不需要早于 74000。</p><p>只是想帮 knightmb 省点时间，反正你那个比我的大。</p>","zhText":"中本聪说过需要早于 74,000\n\n他没这么说，他说的是「你会想要一个」，不是「必须是」，有点不一样。而且倘若「……只有坏区块以及其后的区块是无效的。之前所有区块都是有效的……」，那就不需要早于 74000。\n只是想帮 knightmb 省点时间，反正你那个比我的大。"},{"id":2422,"sid":372,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T22:58:08Z","url":"https://bitcointalk.org/index.php?topic=823.msg9573#msg9573","zh":"<p>先别更新区块链下载。用别人的区块链下载时，不要拿最新到头的。稍微旧一点的更好，如此这般它才能下载并校验最近的区块。</p><p>tcatm 的 4 路 SSE2 SHA-256 在 sha256.cpp 里，几个修订之前就上传了。</p><p>我刚刚上传了 rev 134，是 makefile.unix，让 Linux 上可以用它构建。现在在 Linux 上构建 rev 134 就会得到 -4way 开关。</p><p>倘若你因此构建出问题，就编辑 makefile.unix 然后：\n- 去掉 -DFOURWAYSSE2\n- 从下面这些行末尾去掉 obj/sha256.o：\nbitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o\nbitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha256.o</p><p>我构建的 0.3.10 Linux 版<i>会</i>带 -4way 选项。</p><p>Windows 补丁下载在这里：</p><p><a href=\"http://www.bitcoin.org/download/bitcoin-0.3.10-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.10-win32-setup.exe</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.10-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.10-win32.zip</a></p><p>SHA1 16645ec5fcdb35bc54bc7195309a1a81105242bb bitcoin-0.3.10-win32-setup.exe\nSHA1 4f35ad7711a38fe8c880c6c9beab430824c426d3 bitcoin-0.3.10-win32.zip</p><p>步骤：\n1) 关闭客户端。\n2) 下载 knightmb 的 blk 文件，替换你的 blk0001.dat 和 blkindex.dat 文件。\n<a href=\"http://knightmb.dyndns.org/files/bitcoin/blocks/\">http://knightmb.dyndns.org/files/bitcoin/blocks/</a>\n<a href=\"http://rapidshare.com/files/413168038/BitcoinBlocks.torrent\">http://rapidshare.com/files/413168038/BitcoinBlocks.torrent</a>\n3) 升级到 0.3.10。\n4) 启动时应该少于 74000 个区块，让它重新下载剩下的。</p><p>或者，倘若你不想折腾下载 blk 文件，直接这样做：</p><p>1) 关闭客户端。\n2) 删除（或移走）blk*.dat\n3) 升级到 0.3.10。\n4) 它会重新下载全部区块，大概要一个小时。</p>","zhText":"先别更新区块链下载。用别人的区块链下载时，不要拿最新到头的。稍微旧一点的更好，如此这般它才能下载并校验最近的区块。\ntcatm 的 4 路 SSE2 SHA-256 在 sha256.cpp 里，几个修订之前就上传了。\n我刚刚上传了 rev 134，是 makefile.unix，让 Linux 上可以用它构建。现在在 Linux 上构建 rev 134 就会得到 -4way 开关。\n倘若你因此构建出问题，就编辑 makefile.unix 然后：\n- 去掉 -DFOURWAYSSE2\n- 从下面这些行末尾去掉 obj/sha256.o：\nbitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o\nbitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha256.o\n我构建的 0.3.10 Linux 版会带 -4way 选项。\nWindows 补丁下载在这里：\nhttp://www.bitcoin.org/download/bitcoin-0.3.10-win32-setup.exe\nhttp://www.bitcoin.org/download/bitcoin-0.3.10-win32.zip\nSHA1 16645ec5fcdb35bc54bc7195309a1a81105242bb bitcoin-0.3.10-win32-setup.exe\nSHA1 4f35ad7711a38fe8c880c6c9beab430824c426d3 bitcoin-0.3.10-win32.zip\n步骤：\n1) 关闭客户端。\n2) 下载 knightmb 的 blk 文件，替换你的 blk0001.dat 和 blkindex.dat 文件。\nhttp://knightmb.dyndns.org/files/bitcoin/blocks/\nhttp://rapidshare.com/files/413168038/BitcoinBlocks.torrent\n3) 升级到 0.3.10。\n4) 启动时应该少于 74000 个区块，让它重新下载剩下的。\n或者，倘若你不想折腾下载 blk 文件，直接这样做：\n1) 关闭客户端。\n2) 删除（或移走）blk*.dat\n3) 升级到 0.3.10。\n4) 它会重新下载全部区块，大概要一个小时。"},{"id":2423,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"knightmb","date":"2010-08-15","ts":"2010-08-15T22:59:04Z","url":"https://bitcointalk.org/index.php?topic=823.msg9574#msg9574","zh":"<p>是啊，有点绕</p><p>因而我不需要自己做一个？还是把你们已有的直接传到 FTP 上就行？</p><p>能把 Windows 机器上的区块数据搬到 Linux/Mac 机器上吗？</p><p><b>[编辑]</b> 刚看到你的帖子，那我就做一个截止到 74000 以下的，至少能帮你们这些技术人员省几分钟下载新链的时间。</p>","zhText":"是啊，有点绕\n因而我不需要自己做一个？还是把你们已有的直接传到 FTP 上就行？\n能把 Windows 机器上的区块数据搬到 Linux/Mac 机器上吗？\n[编辑] 刚看到你的帖子，那我就做一个截止到 74000 以下的，至少能帮你们这些技术人员省几分钟下载新链的时间。"},{"id":2424,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-08-15","ts":"2010-08-15T22:59:31Z","url":"https://bitcointalk.org/index.php?topic=823.msg9575#msg9575","zh":"<p><del>我实在等不及了！有没有 Jr. Member 或更高等级的人碰巧编译了一个非官方的 SVN rev 134 Linux 64 位构建愿意分享？我知道官方构建几分钟后就要发布了。这也不是什么大事。</p><p>编辑：按中本聪刚才的评论更新了 SVN 版本号。</del></p><p>啊，算了。既然 SVN 版本刚更新、Windows 构建也刚发布，我就等等吧。</p>","zhText":"我实在等不及了！有没有 Jr. Member 或更高等级的人碰巧编译了一个非官方的 SVN rev 134 Linux 64 位构建愿意分享？我知道官方构建几分钟后就要发布了。这也不是什么大事。\n编辑：按中本聪刚才的评论更新了 SVN 版本号。\n啊，算了。既然 SVN 版本刚更新、Windows 构建也刚发布，我就等等吧。"},{"id":2425,"sid":373,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T23:17:24Z","url":"https://bitcointalk.org/index.php?topic=823.msg9576#msg9576","zh":"<blockquote><p><b>[编辑]</b> 刚看到你的帖子，那我就做一个截止到 74000 以下的，至少能帮你们这些技术人员省几分钟下载新链的时间。</p></blockquote><p>那个旧的别动！旧一点更好。它到多少号了？60000 到 74000 之间都行。你已经挂了一段时间的那个经过了验证，是最好的选择。</p>","zhText":"[编辑] 刚看到你的帖子，那我就做一个截止到 74000 以下的，至少能帮你们这些技术人员省几分钟下载新链的时间。\n\n那个旧的别动！旧一点更好。它到多少号了？60000 到 74000 之间都行。你已经挂了一段时间的那个经过了验证，是最好的选择。"},{"id":2428,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"HostFat","date":"2010-08-15","ts":"2010-08-15T23:32:43Z","url":"https://bitcointalk.org/index.php?topic=823.msg9582#msg9582","zh":"<p>我觉得你应该加上与这个相关的东西：<a href=\"http://bitcointalk.org/index.php?topic=259.0\">http://bitcointalk.org/index.php?topic=259.0</a>\n客户端上必须有一个标签，需要时显示警告信息\n现在每个人都得一直盯着网站看，我觉得这样很糟。</p>","zhText":"我觉得你应该加上与这个相关的东西：http://bitcointalk.org/index.php?topic=259.0\n客户端上必须有一个标签，需要时显示警告信息\n现在每个人都得一直盯着网站看，我觉得这样很糟。"},{"id":2429,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"knightmb","date":"2010-08-15","ts":"2010-08-15T23:35:39Z","url":"https://bitcointalk.org/index.php?topic=823.msg9583#msg9583","zh":"<p>好，这样我就可以！</p>","zhText":"好，这样我就可以！"},{"id":2430,"sid":374,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T23:36:10Z","url":"https://bitcointalk.org/index.php?topic=823.msg9584#msg9584","zh":"<p>从 67000 开始<i>再好不过</i>。</p><p>是，目前你会停在 74638。随着更多节点升级和铸币，它应该会开始缓慢爬升。</p><p>Linux 构建链接在下面。</p><p>Linux 版包含 tcatm 的 4 路 SSE2 SHA-256，能让 i5 和 AMD CPU 铸币更快。用 \"-4way\" 开关启用，看看对你是不是更快。</p><p>下载链接：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.10-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.10-win32-setup.exe</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.10-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.10-win32.zip</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.10-linux.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.10-linux.tar.gz</a></p><p>SHA1 16645ec5fcdb35bc54bc7195309a1a81105242bb bitcoin-0.3.10-win32-setup.exe\nSHA1 4f35ad7711a38fe8c880c6c9beab430824c426d3 bitcoin-0.3.10-win32.zip\nSHA1 e3fda1ddb31b0d5c35156cacd80dee6ea6ae6423 bitcoin-0.3.10-linux.tar.gz</p>","zhText":"从 67000 开始再好不过。\n是，目前你会停在 74638。随着更多节点升级和铸币，它应该会开始缓慢爬升。\nLinux 构建链接在下面。\nLinux 版包含 tcatm 的 4 路 SSE2 SHA-256，能让 i5 和 AMD CPU 铸币更快。用 \"-4way\" 开关启用，看看对你是不是更快。\n下载链接：\nhttp://www.bitcoin.org/download/bitcoin-0.3.10-win32-setup.exe\nhttp://www.bitcoin.org/download/bitcoin-0.3.10-win32.zip\nhttp://www.bitcoin.org/download/bitcoin-0.3.10-linux.tar.gz\nSHA1 16645ec5fcdb35bc54bc7195309a1a81105242bb bitcoin-0.3.10-win32-setup.exe\nSHA1 4f35ad7711a38fe8c880c6c9beab430824c426d3 bitcoin-0.3.10-win32.zip\nSHA1 e3fda1ddb31b0d5c35156cacd80dee6ea6ae6423 bitcoin-0.3.10-linux.tar.gz"},{"id":2431,"sid":375,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T23:37:07Z","url":"https://bitcointalk.org/index.php?topic=823.msg9586#msg9586","zh":"<blockquote><p>我觉得你应该加上与这个相关的东西：<a href=\"http://bitcointalk.org/index.php?topic=259.0\">http://bitcointalk.org/index.php?topic=259.0</a>\n客户端上必须有一个标签，需要时显示警告信息\n现在每个人都得一直盯着网站看，我觉得这样很糟。</p></blockquote><p>同意，早就想做了，一直没腾出时间。</p><p>眼下你还可以订阅 bitcoin-list 邮件列表。它很少发信，只有这类公告和重大新版本才用。</p><p>订阅/退订页面：\n<a href=\"http://lists.sourceforge.net/mailman/listinfo/bitcoin-list\">http://lists.sourceforge.net/mailman/listinfo/bitcoin-list</a></p>","zhText":"我觉得你应该加上与这个相关的东西：http://bitcointalk.org/index.php?topic=259.0\n客户端上必须有一个标签，需要时显示警告信息\n现在每个人都得一直盯着网站看，我觉得这样很糟。\n\n同意，早就想做了，一直没腾出时间。\n眼下你还可以订阅 bitcoin-list 邮件列表。它很少发信，只有这类公告和重大新版本才用。\n订阅/退订页面：\nhttp://lists.sourceforge.net/mailman/listinfo/bitcoin-list"},{"id":2433,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"kencausey","date":"2010-08-15","ts":"2010-08-15T23:45:26Z","url":"https://bitcointalk.org/index.php?topic=823.msg9588#msg9588","zh":"<blockquote><p>……它已经到区块 74638 了。我猜这意味着那个区块现在是好的了？</p></blockquote><p>我自己也在这上面犯过迷糊，后来在 #bitcoin-dev 问清楚了：</p><p>坏区块是 74638 号，最后一个好区块是 74637 号。编号从 0 开始，所以当你的客户端显示有 74638 个区块时，意味着你拥有到 74637 号为止的区块，也就是最后一个好区块。</p>","zhText":"……它已经到区块 74638 了。我猜这意味着那个区块现在是好的了？\n\n我自己也在这上面犯过迷糊，后来在 #bitcoin-dev 问清楚了：\n坏区块是 74638 号，最后一个好区块是 74637 号。编号从 0 开始，所以当你的客户端显示有 74638 个区块时，意味着你拥有到 74637 号为止的区块，也就是最后一个好区块。"},{"id":2460,"sid":376,"sat":1,"tid":186,"tt":"Version 0.3.10 - block 74638 overflow PATCH!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-15","ts":"2010-08-15T23:48:22Z","url":"https://bitcointalk.org/index.php?topic=827.msg9590#msg9590","zh":"<p>0.3.10 版修复了区块 74638 的溢出 bug。<a href=\"http://bitcointalk.org/index.php?topic=823\">http://bitcointalk.org/index.php?topic=823</a></p><p>Linux 版包含 tcatm 的 4 路 SSE2 SHA-256，能让 i5、i7（开超线程）和 AMD CPU 铸币更快。试试 \"-4way\" 开关启用，看看对你是不是更快。</p><p>从 sourceforge 下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.10/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.10/</a></p><p>SHA1 16645ec5fcdb35bc54bc7195309a1a81105242bb bitcoin-0.3.10-win32-setup.exe\nSHA1 4f35ad7711a38fe8c880c6c9beab430824c426d3 bitcoin-0.3.10-win32.zip\nSHA1 e3fda1ddb31b0d5c35156cacd80dee6ea6ae6423 bitcoin-0.3.10-linux.tar.gz\nSHA1 b812ccff4881778b9090f7c0b0255bcba7b078ac bitcoin-0.3.10-macosx.zip</p><p>现在不再需要删 blk*.dat 了。好链已经反超坏链，直接升级就行，它会自动重组掉坏区块链。</p>","zhText":"0.3.10 版修复了区块 74638 的溢出 bug。http://bitcointalk.org/index.php?topic=823\nLinux 版包含 tcatm 的 4 路 SSE2 SHA-256，能让 i5、i7（开超线程）和 AMD CPU 铸币更快。试试 \"-4way\" 开关启用，看看对你是不是更快。\n从 sourceforge 下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.10/\nSHA1 16645ec5fcdb35bc54bc7195309a1a81105242bb bitcoin-0.3.10-win32-setup.exe\nSHA1 4f35ad7711a38fe8c880c6c9beab430824c426d3 bitcoin-0.3.10-win32.zip\nSHA1 e3fda1ddb31b0d5c35156cacd80dee6ea6ae6423 bitcoin-0.3.10-linux.tar.gz\nSHA1 b812ccff4881778b9090f7c0b0255bcba7b078ac bitcoin-0.3.10-macosx.zip\n现在不再需要删 blk*.dat 了。好链已经反超坏链，直接升级就行，它会自动重组掉坏区块链。"},{"id":2463,"sid":null,"sat":0,"tid":187,"tt":"0.3.10.1 Question on where block should be","src":"Bitcointalk","author":"theymos","date":"2010-08-16","ts":"2010-08-16T00:18:00Z","url":"https://bitcointalk.org/index.php?topic=828.msg9605#msg9605","zh":"<p>我写这段话时有 74643 个区块。这次分裂正在造成一些网络问题。你应该用 addnode 参数把自己的电脑互相连起来。</p>","zhText":"我写这段话时有 74643 个区块。这次分裂正在造成一些网络问题。你应该用 addnode 参数把自己的电脑互相连起来。"},{"id":2464,"sid":377,"sat":1,"tid":187,"tt":"0.3.10.1 Question on where block should be","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T00:28:28Z","url":"https://bitcointalk.org/index.php?topic=828.msg9608#msg9608","zh":"<p>我怀疑倘若你连接的节点全是 0.3.9 或更低，接收区块会很困难。我们需要足够多的人升级，保证你连接到的节点里至少有一个是 0.3.10。等我们占到全网的 1/8 以上，问题就会开始消失。</p><p>做端口转发会有帮助，如此这般你能拿到更多连接。</p>","zhText":"我怀疑倘若你连接的节点全是 0.3.9 或更低，接收区块会很困难。我们需要足够多的人升级，保证你连接到的节点里至少有一个是 0.3.10。等我们占到全网的 1/8 以上，问题就会开始消失。\n做端口转发会有帮助，如此这般你能拿到更多连接。"},{"id":2438,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Ground Loop","date":"2010-08-16","ts":"2010-08-16T00:29:55Z","url":"https://bitcointalk.org/index.php?topic=823.msg9609#msg9609","zh":"<p>问一个后续影响的问题：我在坏区块出现之后、基于坏区块链提交过一笔交易。</p><p>那笔交易现在是什么状态？\n就我能看到的，我（升级后的）发送方客户端钱包显示扣款金额还在。</p><p>它会被并入修复后的链吗？收款方能把它花出去吗？</p>","zhText":"问一个后续影响的问题：我在坏区块出现之后、基于坏区块链提交过一笔交易。\n那笔交易现在是什么状态？\n就我能看到的，我（升级后的）发送方客户端钱包显示扣款金额还在。\n它会被并入修复后的链吗？收款方能把它花出去吗？"},{"id":2465,"sid":378,"sat":1,"tid":187,"tt":"0.3.10.1 Question on where block should be","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T00:37:20Z","url":"https://bitcointalk.org/index.php?topic=828.msg9612#msg9612","zh":"<p>眼下，能不能请一些用静态 IP、可接受入站连接、正在跑 0.3.10 的人把 IP 贴出来？我们好 -addnode= 连上，确保至少连到一个 0.3.10 节点。</p>","zhText":"眼下，能不能请一些用静态 IP、可接受入站连接、正在跑 0.3.10 的人把 IP 贴出来？我们好 -addnode= 连上，确保至少连到一个 0.3.10 节点。"},{"id":2439,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"kosovito","date":"2010-08-16","ts":"2010-08-16T00:39:17Z","url":"https://bitcointalk.org/index.php?topic=823.msg9615#msg9615","zh":"<p>我做完了全部步骤，现在我的客户端是 0.3.10，停在了区块 74638。一切正常吗？</p>","zhText":"我做完了全部步骤，现在我的客户端是 0.3.10，停在了区块 74638。一切正常吗？"},{"id":2352,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"tcatm","date":"2010-08-16","ts":"2010-08-16T00:43:39Z","url":"https://bitcointalk.org/index.php?topic=820.msg9617#msg9617","zh":"<p>我建议用 -O3 -march=amdfamk10 编译 sha256.cpp（32 位和 64 位都能用），因为只有支持这套指令集的 CPU（AMD Phenom、Intel i5 及更新）才能从 -4way 受益，而且能带来约 9% 的性能提升。</p>","zhText":"我建议用 -O3 -march=amdfamk10 编译 sha256.cpp（32 位和 64 位都能用），因为只有支持这套指令集的 CPU（AMD Phenom、Intel i5 及更新）才能从 -4way 受益，而且能带来约 9% 的性能提升。"},{"id":2440,"sid":379,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T01:00:45Z","url":"https://bitcointalk.org/index.php?topic=823.msg9623#msg9623","zh":"<blockquote><p>问一个后续影响的问题：我在坏区块出现之后、基于坏区块链提交过一笔<b>交易</b>。</p><p>那笔交易现在是什么状态？\n就我能看到的，我（升级后的）发送方客户端钱包显示扣款金额还在。</p><p>它会被并入修复后的链吗？收款方能把它花出去吗？</p></blockquote><p>对，它会被并入修复后的链。交易不会消失，两边都还能看到它，只是确认数会跳回 0，然后重新开始累计。</p><p>只有当你在坏链上、区块 74638 之后生成过区块，那 50 BTC 才会消失。坏链上的任何区块那时都还没成熟。</p>","zhText":"问一个后续影响的问题：我在坏区块出现之后、基于坏区块链提交过一笔交易。\n那笔交易现在是什么状态？\n就我能看到的，我（升级后的）发送方客户端钱包显示扣款金额还在。\n它会被并入修复后的链吗？收款方能把它花出去吗？\n\n对，它会被并入修复后的链。交易不会消失，两边都还能看到它，只是确认数会跳回 0，然后重新开始累计。\n只有当你在坏链上、区块 74638 之后生成过区块，那 50 BTC 才会消失。坏链上的任何区块那时都还没成熟。"},{"id":2441,"sid":380,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T01:02:24Z","url":"https://bitcointalk.org/index.php?topic=823.msg9624#msg9624","zh":"<blockquote><p>我做完了全部步骤，现在我的客户端是 0.3.10，停在了区块 74638。一切正常吗？</p></blockquote><p>倘若你仍然显示 74638 个区块，说明你没有连上任何 0.3.10 节点。</p><p>今天的话，试试加上这些参数：\n-addnode=75.158.131.108 -addnode=99.27.237.13 -addnode=68.68.99.14</p><p>见\n<a href=\"http://bitcointalk.org/index.php?topic=828\">http://bitcointalk.org/index.php?topic=828</a></p>","zhText":"我做完了全部步骤，现在我的客户端是 0.3.10，停在了区块 74638。一切正常吗？\n\n倘若你仍然显示 74638 个区块，说明你没有连上任何 0.3.10 节点。\n今天的话，试试加上这些参数：\n-addnode=75.158.131.108 -addnode=99.27.237.13 -addnode=68.68.99.14\n见\nhttp://bitcointalk.org/index.php?topic=828"},{"id":2442,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"GoldRush","date":"2010-08-16","ts":"2010-08-16T01:02:35Z","url":"https://bitcointalk.org/index.php?topic=823.msg9625#msg9625","zh":"<p>大多数跑客户端的人并不会看这个帖子。那么……问几个傻问题：</p><p>1) 这对还带着坏区块链的 3.8.1（灾难前）客户端会持续造成什么影响？\n2) 对升级到 3.8.10 但没删掉区块链文件的客户端又有什么影响？</p>","zhText":"大多数跑客户端的人并不会看这个帖子。那么……问几个傻问题：\n1) 这对还带着坏区块链的 3.8.1（灾难前）客户端会持续造成什么影响？\n2) 对升级到 3.8.10 但没删掉区块链文件的客户端又有什么影响？"},{"id":2443,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"kencausey","date":"2010-08-16","ts":"2010-08-16T01:06:13Z","url":"https://bitcointalk.org/index.php?topic=823.msg9627#msg9627","zh":"<p>我把 addnode 选项和「卡在 74638 个区块」问题的相关信息加到了这里：<a href=\"http://bitcointalk.org/index.php?topic=823.msg9595#msg9595\">http://bitcointalk.org/index.php?topic=823.msg9595#msg9595</a></p>","zhText":"我把 addnode 选项和「卡在 74638 个区块」问题的相关信息加到了这里：http://bitcointalk.org/index.php?topic=823.msg9595#msg9595"},{"id":2444,"sid":381,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T01:12:05Z","url":"https://bitcointalk.org/index.php?topic=823.msg9628#msg9628","zh":"<blockquote><p>大多数跑客户端的人并不会看这个帖子。那么……问几个傻问题：</p><p>1) 这对还带着坏区块链的 3.8.1（灾难前）客户端会持续造成什么影响？\n2) 对升级到 3.8.10 但没删掉区块链文件的客户端又有什么影响？</p></blockquote><p>1) 一旦超过 50% 的节点算力完成升级、好链反超坏链，0.3.10 节点就会让任何坏交易都拿不到确认。\n2) 倘若你没删 blk*.dat 文件，你就没在为那 50% 出力，而且你会一直显示坏交易，直到好链反超坏链。</p>","zhText":"大多数跑客户端的人并不会看这个帖子。那么……问几个傻问题：\n1) 这对还带着坏区块链的 3.8.1（灾难前）客户端会持续造成什么影响？\n2) 对升级到 3.8.10 但没删掉区块链文件的客户端又有什么影响？\n\n1) 一旦超过 50% 的节点算力完成升级、好链反超坏链，0.3.10 节点就会让任何坏交易都拿不到确认。\n2) 倘若你没删 blk*.dat 文件，你就没在为那 50% 出力，而且你会一直显示坏交易，直到好链反超坏链。"},{"id":2355,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-08-16","ts":"2010-08-16T01:49:01Z","url":"https://bitcointalk.org/index.php?topic=820.msg9630#msg9630","zh":"<blockquote><p>我建了一个 wiki 页面来汇总结果：<a href=\"http://www.bitcoin.org/wiki/doku.php?id=4-way_sse2\">http://www.bitcoin.org/wiki/doku.php?id=4-way_sse2</a></p></blockquote><p>你或许该加上几列：是否开启超线程、物理核心数、Bitcoin 用了几个核心。不用 4way 时，我只用一半虚拟核心做哈希会略好一点。用 4way 时，启用全部虚拟核心会明显更好。我觉得超线程关闭时，开不开 4way 哈希量差不多。</p>","zhText":"我建了一个 wiki 页面来汇总结果：http://www.bitcoin.org/wiki/doku.php?id=4-way_sse2\n\n你或许该加上几列：是否开启超线程、物理核心数、Bitcoin 用了几个核心。不用 4way 时，我只用一半虚拟核心做哈希会略好一点。用 4way 时，启用全部虚拟核心会明显更好。我觉得超线程关闭时，开不开 4way 哈希量差不多。"},{"id":2445,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Ground Loop","date":"2010-08-16","ts":"2010-08-16T02:02:07Z","url":"https://bitcointalk.org/index.php?topic=823.msg9632#msg9632","zh":"<blockquote><p>你知道吗，某种程度上，这在大家升级完之前实际上暂时降低了铸币难度。没错，会慢一些，但这正好给每个客户端更多时间去尝试算出那个难度的哈希。</p></blockquote><p>当然，这事偏偏发生在难度刚涨到 511.7 之后，所以这些新的「好」区块都得在这个难度下挣扎。而且网络很大一部分算力跑到了错误的链上，所以新区块的出块时间可能远超 10 分钟。平衡机制要到什么时候才会意识到这一点、把难度重新调下来？</p>","zhText":"你知道吗，某种程度上，这在大家升级完之前实际上暂时降低了铸币难度。没错，会慢一些，但这正好给每个客户端更多时间去尝试算出那个难度的哈希。\n\n当然，这事偏偏发生在难度刚涨到 511.7 之后，所以这些新的「好」区块都得在这个难度下挣扎。而且网络很大一部分算力跑到了错误的链上，所以新区块的出块时间可能远超 10 分钟。平衡机制要到什么时候才会意识到这一点、把难度重新调下来？"},{"id":2446,"sid":382,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T02:16:10Z","url":"https://bitcointalk.org/index.php?topic=823.msg9642#msg9642","zh":"<p>随着更多节点升级，坏链同样被拖慢了。</p><p>74638 之后我们已经生成了 14 个区块。0.3.10 的构建大约 2 到 3 小时前上传。在我连接的节点里，超过一半已经是 0.3.10。我可以说我们的算力大概率已经超过坏链了。</p>","zhText":"随着更多节点升级，坏链同样被拖慢了。\n74638 之后我们已经生成了 14 个区块。0.3.10 的构建大约 2 到 3 小时前上传。在我连接的节点里，超过一半已经是 0.3.10。我可以说我们的算力大概率已经超过坏链了。"},{"id":2448,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"lachesis","date":"2010-08-16","ts":"2010-08-16T02:28:57Z","url":"https://bitcointalk.org/index.php?topic=823.msg9646#msg9646","zh":"<blockquote><p>……在我连接的节点里，超过一半已经是 0.3.10。……</p></blockquote><p>好消息！不过你是怎么统计出来的？我本来在考虑写一个专门到处找人连接、尽量多收连接、然后调查版本号并写日志的客户端（除了正常的 bitcoin 功能之外）。</p>","zhText":"……在我连接的节点里，超过一半已经是 0.3.10。……\n\n好消息！不过你是怎么统计出来的？我本来在考虑写一个专门到处找人连接、尽量多收连接、然后调查版本号并写日志的客户端（除了正常的 bitcoin 功能之外）。"},{"id":2357,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"jgarzik","date":"2010-08-16","ts":"2010-08-16T02:30:52Z","url":"https://bitcointalk.org/index.php?topic=820.msg9647#msg9647","zh":"<p>我的 -4way 结果：两台老机器更慢，新机器更快。</p><p>（\"model name\" 来自 Linux 的 /proc/cpuinfo，它直接从 CPU 读取）</p><p>1) model name   : Intel(R) Pentium(R) D CPU 3.00GHz</p><p>总核心数：2\n不用 -4way：    0.999 Mhash/sec\n用 -4way： 0.850 Mhash/sec</p><p>2) model name   : Dual Core AMD Opteron(tm) Processor 280</p><p>总核心数：4\n不用 -4way：   4.6 Mhash/sec\n用 -4way：    4.0 Mhash/sec</p><p>3) model name   : Genuine Intel(R) CPU             000  @ 3.20GHz</p><p>总核心数：4\n不用 -4way：   5.7 Mhash/sec\n用 -4way：    7.0 Mhash/sec</p>","zhText":"我的 -4way 结果：两台老机器更慢，新机器更快。\n（\"model name\" 来自 Linux 的 /proc/cpuinfo，它直接从 CPU 读取）\n1) model name : Intel(R) Pentium(R) D CPU 3.00GHz\n总核心数：2\n不用 -4way： 0.999 Mhash/sec\n用 -4way： 0.850 Mhash/sec\n2) model name : Dual Core AMD Opteron(tm) Processor 280\n总核心数：4\n不用 -4way： 4.6 Mhash/sec\n用 -4way： 4.0 Mhash/sec\n3) model name : Genuine Intel(R) CPU 000 @ 3.20GHz\n总核心数：4\n不用 -4way： 5.7 Mhash/sec\n用 -4way： 7.0 Mhash/sec"},{"id":2449,"sid":383,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T02:38:21Z","url":"https://bitcointalk.org/index.php?topic=823.msg9648#msg9648","zh":"<p>Windows 上：findstr /c:\"version message\" debug.log</p><p>坏链最近到 74678 号区块了。等不及要反超它。</p><p>从 <a href=\"http://nullvoid.org/bitcoin/statistix.php\">http://nullvoid.org/bitcoin/statistix.php</a> 的统计看，最近 3 小时每小时 5 个区块。大约一天前刚做过难度调整，应该回到每小时 6 个区块的水平。</p>","zhText":"Windows 上：findstr /c:\"version message\" debug.log\n坏链最近到 74678 号区块了。等不及要反超它。\n从 http://nullvoid.org/bitcoin/statistix.php 的统计看，最近 3 小时每小时 5 个区块。大约一天前刚做过难度调整，应该回到每小时 6 个区块的水平。"},{"id":2358,"sid":384,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T02:57:57Z","url":"https://bitcointalk.org/index.php?topic=820.msg9655#msg9655","zh":"<blockquote><p>我建议用 -O3 -march=amdfamk10 编译 sha256.cpp（32 位和 64 位都能用），因为只有支持这套指令集的 CPU（AMD Phenom、Intel i5 及更新）才能从 -4way 受益，而且能带来约 9% 的性能提升。</p></blockquote><p>GCC 4.3.3 不支持 -march=amdfamk10。我得到：\nsha256.cpp:1: error: bad value (amdfamk10) for -march= switch</p><blockquote><p>用 4way 时，启用全部虚拟核心会明显更好。我觉得超线程关闭时，开不开 4way 哈希量差不多。</p></blockquote><p>嘿，你兴许发现了什么！</p><p>之前超线程没好处，是因为所有工作都发生在超线程共享的算术逻辑单元里。</p><p>tcatm 的 SSE2 代码一定是普通 x86 指令和 SSE2 指令的混合体，这样一个线程跑 x86 代码时，另一个就能跑 SSE2。</p><p>开超线程你提升了多少？</p><p>给几个数字？那是什么 CPU？</p>","zhText":"我建议用 -O3 -march=amdfamk10 编译 sha256.cpp（32 位和 64 位都能用），因为只有支持这套指令集的 CPU（AMD Phenom、Intel i5 及更新）才能从 -4way 受益，而且能带来约 9% 的性能提升。\n\nGCC 4.3.3 不支持 -march=amdfamk10。我得到：\nsha256.cpp:1: error: bad value (amdfamk10) for -march= switch\n用 4way 时，启用全部虚拟核心会明显更好。我觉得超线程关闭时，开不开 4way 哈希量差不多。\n\n嘿，你兴许发现了什么！\n之前超线程没好处，是因为所有工作都发生在超线程共享的算术逻辑单元里。\ntcatm 的 SSE2 代码一定是普通 x86 指令和 SSE2 指令的混合体，这样一个线程跑 x86 代码时，另一个就能跑 SSE2。\n开超线程你提升了多少？\n给几个数字？那是什么 CPU？"},{"id":2361,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Vasiliev","date":"2010-08-16","ts":"2010-08-16T03:17:07Z","url":"https://bitcointalk.org/index.php?topic=820.msg9660#msg9660","zh":"<blockquote><p>GCC 4.3.3 不支持 -march=amdfamk10。我得到：\nsha256.cpp:1: error: bad value (amdfamk10) for -march= switch</p></blockquote><p>试试 -march=amdfam10</p>","zhText":"GCC 4.3.3 不支持 -march=amdfamk10。我得到：\nsha256.cpp:1: error: bad value (amdfamk10) for -march= switch\n\n试试 -march=amdfam10"},{"id":2362,"sid":385,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T03:23:04Z","url":"https://bitcointalk.org/index.php?topic=820.msg9661#msg9661","zh":"<blockquote><p>试试 -march=amdfam10</p></blockquote><p>可以了。</p><p>有点奇怪……我们确定这是同一个东西吗？tcatm，试试 amdfam10，确认测出来的速度一样。</p>","zhText":"试试 -march=amdfam10\n\n可以了。\n有点奇怪……我们确定这是同一个东西吗？tcatm，试试 amdfam10，确认测出来的速度一样。"},{"id":2365,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"jgarzik","date":"2010-08-16","ts":"2010-08-16T03:35:28Z","url":"https://bitcointalk.org/index.php?topic=820.msg9665#msg9665","zh":"<p>更新一下</p><pre><code>cpu family : 6\nmodel  : 26\nmodel name : Genuine Intel(R) CPU             000  @ 3.20GHz\nstepping : 4</code></pre><p>机器有 4 个核心，每个 2 超线程。/proc/cpuinfo 显示 8 个虚拟处理器。</p><p>不用 -4way, setgen 4:    5.7 Mhash/sec\n不用 -4way, setgen 8:    5.0 Mhash/sec</p><p>用 -4way, setgen 4:   7.0 Mhash/sec\n用 -4way, setgen 8:   9.3 Mhash/sec</p><p>因而，在这台机器上，「超线程拖慢速度」的老经验被打破了。</p>","zhText":"更新一下\ncpu family : 6\nmodel : 26\nmodel name : Genuine Intel(R) CPU 000 @ 3.20GHz\nstepping : 4机器有 4 个核心，每个 2 超线程。/proc/cpuinfo 显示 8 个虚拟处理器。\n不用 -4way, setgen 4: 5.7 Mhash/sec\n不用 -4way, setgen 8: 5.0 Mhash/sec\n用 -4way, setgen 4: 7.0 Mhash/sec\n用 -4way, setgen 8: 9.3 Mhash/sec\n因而，在这台机器上，「超线程拖慢速度」的老经验被打破了。"},{"id":2467,"sid":null,"sat":0,"tid":188,"tt":"[PATCH] Automatic block validation","src":"Bitcointalk","author":"bdonlan","date":"2010-08-16","ts":"2010-08-16T04:33:10Z","url":"https://bitcointalk.org/index.php?topic=832.msg9673#msg9673","zh":"<p>嗯，看来我漏了什么重要的东西——断开那些已不属于被接受区块链的交易。我得在这上面下点功夫——那种把全部交易一股脑清掉再重连的朴素做法太慢了，而且会撞上交易内存上限。</p>","zhText":"嗯，看来我漏了什么重要的东西——断开那些已不属于被接受区块链的交易。我得在这上面下点功夫——那种把全部交易一股脑清掉再重连的朴素做法太慢了，而且会撞上交易内存上限。"},{"id":2366,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Ground Loop","date":"2010-08-16","ts":"2010-08-16T04:34:20Z","url":"https://bitcointalk.org/index.php?topic=820.msg9674#msg9674","zh":"<p>我另外三台 Intel 机器上 4way 也没有胜出：</p><p>Intel(R) Core(TM)2 Duo CPU     E8500 @ 3.16GHz (64 位 Linux)\n4way: 1565  std: 3002</p><p>Intel(R) Xeon(TM) CPU 3.00GHz (32 位 Linux)\n4way: 1243  std: 2048</p><p>Intel(R) Core(TM)2 CPU          6300  @ 1.86GHz\n4way: 932   std: 1733</p><p>（都运行 0.3.10，-1 proclimit）\n试过调整 proclimit 也没更好。</p>","zhText":"我另外三台 Intel 机器上 4way 也没有胜出：\nIntel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz (64 位 Linux)\n4way: 1565 std: 3002\nIntel(R) Xeon(TM) CPU 3.00GHz (32 位 Linux)\n4way: 1243 std: 2048\nIntel(R) Core(TM)2 CPU 6300 @ 1.86GHz\n4way: 932 std: 1733\n（都运行 0.3.10，-1 proclimit）\n试过调整 proclimit 也没更好。"},{"id":2367,"sid":386,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T04:36:59Z","url":"https://bitcointalk.org/index.php?topic=820.msg9676#msg9676","zh":"<blockquote><pre><code>cpu family : 6\nmodel  : 26\nmodel name : Genuine Intel(R) CPU             000  @ 3.20GHz\nstepping : 4</code></pre></blockquote><p>cpu family 6 model 26 stepping 4 是 Intel Core i7。\n-4way 提速 23%，-4way 加超线程总共提速 63%。\n开超线程比不开快 33%。</p>","zhText":"cpu family : 6\nmodel : 26\nmodel name : Genuine Intel(R) CPU 000 @ 3.20GHz\nstepping : 4\ncpu family 6 model 26 stepping 4 是 Intel Core i7。\n-4way 提速 23%，-4way 加超线程总共提速 63%。\n开超线程比不开快 33%。"},{"id":2454,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Ground Loop","date":"2010-08-16","ts":"2010-08-16T05:07:50Z","url":"https://bitcointalk.org/index.php?topic=823.msg9682#msg9682","zh":"<blockquote><p>对，它会被并入修复后的链。交易不会消失，两边都还能看到它，只是确认数会跳回 0，然后重新开始累计。</p><p>只有当你在坏链上、区块 74638 之后生成过区块，那 50 BTC 才会消失。坏链上的任何区块那时都还没成熟。</p></blockquote><p>有意思……看它在系统内部一路发挥作用，很迷人。\n我当时生成的是区块 73746。\n    CTxOut(nValue=50.00000000, scriptPubKey=0x8DDD5C7DADB2D43AC5F186)\n08/12/10 02:35 generated 50.00</p><p>然后我（在坏链上）把其中 49.00 发给了 19Nzg21hQQDAY5GTdTTuUVPA4MaE7AusXz</p><p>现在我在等那个节点发现收到了这笔钱，而它用的已经是新链了。</p>","zhText":"对，它会被并入修复后的链。交易不会消失，两边都还能看到它，只是确认数会跳回 0，然后重新开始累计。\n只有当你在坏链上、区块 74638 之后生成过区块，那 50 BTC 才会消失。坏链上的任何区块那时都还没成熟。\n\n有意思……看它在系统内部一路发挥作用，很迷人。\n我当时生成的是区块 73746。\n CTxOut(nValue=50.00000000, scriptPubKey=0x8DDD5C7DADB2D43AC5F186)\n08/12/10 02:35 generated 50.00\n然后我（在坏链上）把其中 49.00 发给了 19Nzg21hQQDAY5GTdTTuUVPA4MaE7AusXz\n现在我在等那个节点发现收到了这笔钱，而它用的已经是新链了。"},{"id":2373,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"teknohog","date":"2010-08-16","ts":"2010-08-16T12:31:51Z","url":"https://bitcointalk.org/index.php?topic=820.msg9729#msg9729","zh":"<p>在 Core 2 Duo T7200 上，默认代码约 1.8 Mhash/s，4way 反而更慢只有 1.0 Mhash/s。它有 4 MB 的 L2 缓存，所以这大抵不像之前有人说的那样是缓存大小的问题。</p><p>不幸的是，svn 上的代码现在没法在 ARM 上编译了，因为 SSE 内置函数被硬编码了进去。我已经从 makefile 里去掉了 -msse2 和 -DFOURWAYSSE2，仍然报这样的错</p><pre><code>sha256.cpp:8:23: error: xmmintrin.h: No such file or directory\nsha256.cpp:34: error: __m128i does not name a type</code></pre><p>但希望这不难修。</p>","zhText":"在 Core 2 Duo T7200 上，默认代码约 1.8 Mhash/s，4way 反而更慢只有 1.0 Mhash/s。它有 4 MB 的 L2 缓存，所以这大抵不像之前有人说的那样是缓存大小的问题。\n不幸的是，svn 上的代码现在没法在 ARM 上编译了，因为 SSE 内置函数被硬编码了进去。我已经从 makefile 里去掉了 -msse2 和 -DFOURWAYSSE2，仍然报这样的错\nsha256.cpp:8:23: error: xmmintrin.h: No such file or directory\nsha256.cpp:34: error: __m128i does not name a type但希望这不难修。"},{"id":2455,"sid":387,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T12:59:38Z","url":"https://bitcointalk.org/index.php?topic=823.msg9734#msg9734","zh":"<p>看来我们在 74689 附近反超了坏链。0.3.9 及更低版本的节点过去几个小时里返回的都已经是当前区块号了。</p><p>也就是说，升级前不再需要删 blk*.dat 了。直接升级就行，它会自动重组掉坏区块链。</p><p>感谢大家的快速响应！</p>","zhText":"看来我们在 74689 附近反超了坏链。0.3.9 及更低版本的节点过去几个小时里返回的都已经是当前区块号了。\n也就是说，升级前不再需要删 blk*.dat 了。直接升级就行，它会自动重组掉坏区块链。\n感谢大家的快速响应！"},{"id":2374,"sid":388,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T13:38:01Z","url":"https://bitcointalk.org/index.php?topic=820.msg9736#msg9736","zh":"<p>我把 sha256.cpp 包进了\n#ifdef FOURWAYSSE2\n#endif // FOURWAYSSE2</p><p>现在再试试。</p>","zhText":"我把 sha256.cpp 包进了\n#ifdef FOURWAYSSE2\n#endif // FOURWAYSSE2\n现在再试试。"},{"id":2468,"sid":389,"sat":1,"tid":188,"tt":"[PATCH] Automatic block validation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T15:25:54Z","url":"https://bitcointalk.org/index.php?topic=832.msg9754#msg9754","zh":"<p>那是个麻烦的办法。</p><p>我们需要触发一次重组，把无效链断开。</p><p>这段代码几乎不会被测试到，而且相当繁复精巧，所以简单安全的做法最好。</p><p>我的想法是这样。（还没测试过）它检查主链上的所有区块。发现坏的，就把那条链的 bnChainWork 全部置 0，让它再也赢不了最佳链，并把最佳链工作量降到分叉点级别，如此这般分叉点之后的任何新区块都会触发重组。（不真正做一次重组，它改不了 pindexBest）</p><p>这还不完善。它仍需要收到一个有效区块来触发重组。</p><p>兴许可以在检查之后主动发起 AddToBlockIndex 或 Reorganize，但那需要更细致的推敲。我大抵应该把 AddToBlockIndex 里设置新区块最佳的部分拆出来。我最后很可能用那个做法，而非下面的代码。</p><pre><code>bool CTxDB::LoadBlockIndex()\n{\n    ...\n\n    // Verify blocks in the main chain\n    vector&lt;CBlockIndex*> vChain;\n    for (CBlockIndex* pindex = pindexBest; pindex &amp;&amp; pindex->pprev; pindex = pindex->pprev)\n    {\n        vChain.push_back(pindex);\n        CBlock block;\n        if (!block.ReadFromDisk(pindex))\n            return error(\"LoadBlockIndex() : block.ReadFromDisk failed\");\n        if (!block.CheckBlock())\n        {\n            bnBestChainWork = pindex->pprev->bnChainWork;\n            foreach(CBlockIndex* pindex2, vChain)\n                pindex2->bnChainWork = 0;\n        }\n    }\n\n    return true;\n}</code></pre>","zhText":"那是个麻烦的办法。\n我们需要触发一次重组，把无效链断开。\n这段代码几乎不会被测试到，而且相当繁复精巧，所以简单安全的做法最好。\n我的想法是这样。（还没测试过）它检查主链上的所有区块。发现坏的，就把那条链的 bnChainWork 全部置 0，让它再也赢不了最佳链，并把最佳链工作量降到分叉点级别，如此这般分叉点之后的任何新区块都会触发重组。（不真正做一次重组，它改不了 pindexBest）\n这还不完善。它仍需要收到一个有效区块来触发重组。\n兴许可以在检查之后主动发起 AddToBlockIndex 或 Reorganize，但那需要更细致的推敲。我大抵应该把 AddToBlockIndex 里设置新区块最佳的部分拆出来。我最后很可能用那个做法，而非下面的代码。\nbool CTxDB::LoadBlockIndex()\n{\n ...\n\n // Verify blocks in the main chain\n vector<CBlockIndex*> vChain;\n for (CBlockIndex* pindex = pindexBest; pindex && pindex->pprev; pindex = pindex->pprev)\n {\n vChain.push_back(pindex);\n CBlock block;\n if (!block.ReadFromDisk(pindex))\n return error(\"LoadBlockIndex() : block.ReadFromDisk failed\");\n if (!block.CheckBlock())\n {\n bnBestChainWork = pindex->pprev->bnChainWork;\n foreach(CBlockIndex* pindex2, vChain)\n pindex2->bnChainWork = 0;\n }\n }\n\n return true;\n}"},{"id":2482,"sid":390,"sat":1,"tid":190,"tt":"blocks minus 1","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T15:59:25Z","url":"https://bitcointalk.org/index.php?topic=837.msg9757#msg9757","zh":"<p>我想把状态栏显示的区块数减 1。如此这般程序第一次加载时，会显示 0 个区块而非 1：\n\"0 connections    0 blocks     0 transactions\"</p><p>它一直是 \"nBestHeight + 1\"，因为把创世区块也数了进去。严格来说，是的，创世区块是一个区块。它是你出发时就带着的硬编码区块。你不可能<i>没有</i>创世区块。兴许可以把它想成一枚基准币，其他币都拿它来衡量。人们想看的区块数，其实是他们下载到的区块数量。</p><p>主要的好处是区块数会等于当前最佳区块的区块号。倘若区块数是 10，那么你拥有的最高区块号就是 10。意味着你有 10 号区块，没有 11 号区块。</p><p>它能减少我们在这里遇到的困惑：</p><blockquote><p>我自己也在这上面犯过迷糊，后来在 #bitcoin-dev 问清楚了：</p><p>坏区块是 74638 号，最后一个好区块是 74637 号。编号从 0 开始，所以当你的客户端显示有 74638 个区块时，意味着你拥有到 74637 号为止的区块，也就是最后一个好区块。</p></blockquote>","zhText":"我想把状态栏显示的区块数减 1。如此这般程序第一次加载时，会显示 0 个区块而非 1：\n\"0 connections 0 blocks 0 transactions\"\n它一直是 \"nBestHeight + 1\"，因为把创世区块也数了进去。严格来说，是的，创世区块是一个区块。它是你出发时就带着的硬编码区块。你不可能没有创世区块。兴许可以把它想成一枚基准币，其他币都拿它来衡量。人们想看的区块数，其实是他们下载到的区块数量。\n主要的好处是区块数会等于当前最佳区块的区块号。倘若区块数是 10，那么你拥有的最高区块号就是 10。意味着你有 10 号区块，没有 11 号区块。\n它能减少我们在这里遇到的困惑：\n我自己也在这上面犯过迷糊，后来在 #bitcoin-dev 问清楚了：\n坏区块是 74638 号，最后一个好区块是 74637 号。编号从 0 开始，所以当你的客户端显示有 74638 个区块时，意味着你拥有到 74637 号为止的区块，也就是最后一个好区块。"},{"id":2485,"sid":null,"sat":0,"tid":190,"tt":"blocks minus 1","src":"Bitcointalk","author":"Insti","date":"2010-08-16","ts":"2010-08-16T16:54:51Z","url":"https://bitcointalk.org/index.php?topic=837.msg9772#msg9772","zh":"<blockquote><p>+1</p></blockquote><p>+1</p><blockquote><p>跑题：这个论坛有没有什么点赞插件之类的？</p></blockquote><p>+1</p>","zhText":"+1\n\n+1\n跑题：这个论坛有没有什么点赞插件之类的？\n\n+1"},{"id":2486,"sid":391,"sat":1,"tid":190,"tt":"blocks minus 1","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T17:06:27Z","url":"https://bitcointalk.org/index.php?topic=837.msg9774#msg9774","zh":"<p>已在 SVN rev 137 完成</p>","zhText":"已在 SVN rev 137 完成"},{"id":2469,"sid":392,"sat":1,"tid":188,"tt":"[PATCH] Automatic block validation","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T17:08:02Z","url":"https://bitcointalk.org/index.php?topic=832.msg9775#msg9775","zh":"<blockquote><p>兴许可以在检查之后主动发起 AddToBlockIndex 或 Reorganize，但那需要更细致的推敲。我大抵应该把 AddToBlockIndex 里设置新区块最佳的部分拆出来。我最后很可能用那个做法，而非下面的代码。</p></blockquote><p>这就是我最后在 SVN rev 139 里做的。</p><p>我没有删坏链，而是给 ConnectBlock 加了一个额外的 CheckBlock，如此这般坏区块一旦被踢出去就回不到最佳链了。</p>","zhText":"兴许可以在检查之后主动发起 AddToBlockIndex 或 Reorganize，但那需要更细致的推敲。我大抵应该把 AddToBlockIndex 里设置新区块最佳的部分拆出来。我最后很可能用那个做法，而非下面的代码。\n\n这就是我最后在 SVN rev 139 里做的。\n我没有删坏链，而是给 ConnectBlock 加了一个额外的 CheckBlock，如此这般坏区块一旦被踢出去就回不到最佳链了。"},{"id":2476,"sid":null,"sat":0,"tid":189,"tt":"checkpointing the block chain","src":"Bitcointalk","author":"mkrogh","date":"2010-08-16","ts":"2010-08-16T19:58:16Z","url":"https://bitcointalk.org/index.php?topic=834.msg9810#msg9810","zh":"<p>什么算坏链？</p><p>你能多讲讲为什么检查点是坏东西吗？</p>","zhText":"什么算坏链？\n你能多讲讲为什么检查点是坏东西吗？"},{"id":2487,"sid":393,"sat":1,"tid":191,"tt":"Checking the block chain on load","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T20:07:46Z","url":"https://bitcointalk.org/index.php?topic=841.msg9813#msg9813","zh":"<p>SVN rev 139 会在加载后对区块链做一次基本检查。</p><p>有了它，我们本不需要删 blk*.dat，它会自动重组回分叉点。当时没时间把这个功能做扎实。</p><p>它可能比我们想要的慢，因为要把所有区块都加载一遍。倘若太慢，可以让它只回溯到某个区块号为止。</p>","zhText":"SVN rev 139 会在加载后对区块链做一次基本检查。\n有了它，我们本不需要删 blk*.dat，它会自动重组回分叉点。当时没时间把这个功能做扎实。\n它可能比我们想要的慢，因为要把所有区块都加载一遍。倘若太慢，可以让它只回溯到某个区块号为止。"},{"id":2477,"sid":394,"sat":1,"tid":189,"tt":"checkpointing the block chain","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T20:20:53Z","url":"https://bitcointalk.org/index.php?topic=834.msg9816#msg9816","zh":"<p>软件没有办法自动判断一条链比另一条好，唯一的判据就是工作证明最大。按这个设计，不管要回退多远，它都必须切到更长的链上。</p><p>唯一的例外是我加的手动检查点。要不是有它们，它可以把重组一路做到第一个区块。</p>","zhText":"软件没有办法自动判断一条链比另一条好，唯一的判据就是工作证明最大。按这个设计，不管要回退多远，它都必须切到更长的链上。\n唯一的例外是我加的手动检查点。要不是有它们，它可以把重组一路做到第一个区块。"},{"id":2488,"sid":null,"sat":0,"tid":191,"tt":"Checking the block chain on load","src":"Bitcointalk","author":"Insti","date":"2010-08-16","ts":"2010-08-16T20:43:19Z","url":"https://bitcointalk.org/index.php?topic=841.msg9820#msg9820","zh":"<p>我估计做一遍不止 1 秒。\n每次启动都得做吗</p><p>能不能给它做一个菜单项，手动触发？\n再加个计数器，每 n 次启动/n 天提醒你检查一次。\n或者每次更新软件时提醒。</p><p>感觉重新校验整条区块链会是很罕见的事件，所以每次都校验未免杀鸡用牛刀。</p>","zhText":"我估计做一遍不止 1 秒。\n每次启动都得做吗\n能不能给它做一个菜单项，手动触发？\n再加个计数器，每 n 次启动/n 天提醒你检查一次。\n或者每次更新软件时提醒。\n感觉重新校验整条区块链会是很罕见的事件，所以每次都校验未免杀鸡用牛刀。"},{"id":2458,"sid":null,"sat":0,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-08-16","ts":"2010-08-16T22:15:32Z","url":"https://bitcointalk.org/index.php?topic=823.msg9834#msg9834","zh":"<blockquote><p>那么到这个时候，一个还没升级的客户端也会持有正确的链吗？</p></blockquote><p>是的。唯一的例外是，一个没打补丁的客户端又做了一笔假交易并且成功把它校验通过。它可以把那个假区块传给少数几个没升级的节点，但升级过的客户端算力看起来比未升级的多，所以坏链接不会持续很久，也不会被升级过的客户端传播。</p>","zhText":"那么到这个时候，一个还没升级的客户端也会持有正确的链吗？\n\n是的。唯一的例外是，一个没打补丁的客户端又做了一笔假交易并且成功把它校验通过。它可以把那个假区块传给少数几个没升级的节点，但升级过的客户端算力看起来比未升级的多，所以坏链接不会持续很久，也不会被升级过的客户端传播。"},{"id":2480,"sid":null,"sat":0,"tid":189,"tt":"checkpointing the block chain","src":"Bitcointalk","author":"NewLibertyStandard","date":"2010-08-16","ts":"2010-08-16T22:42:28Z","url":"https://bitcointalk.org/index.php?topic=834.msg9839#msg9839","zh":"<p>校验和就是某个特定区块上的哈希，这样新链可以启动、可以生长，但一旦带校验和的客户端到达那个区块号，它就不会接受校验和以外的任何哈希。</p><p>如此这般理解对吗？</p><p>那么倘若有人想创建一条同样创世区块的替代链，他就得在连接到真实网络之前，用不同的哈希对创世区块之后的某个区块做校验和。倘若他的链到达了官方客户端里校验和的位置，他就得确保自己的 Bitcoin 客户端里不包含那个校验和。</p><p>链的强度是怎么计算的？只看长度和校验和吗？还是说一个难度 500 的区块会被认为比十个难度为一的区块更有效？我猜大概率只看长度和校验和，这意味着校验和之前的所有交易基本上永远安全，但校验和之后的区块的强度只等于网络的当前强度，直到下一个校验和出现。</p>","zhText":"校验和就是某个特定区块上的哈希，这样新链可以启动、可以生长，但一旦带校验和的客户端到达那个区块号，它就不会接受校验和以外的任何哈希。\n如此这般理解对吗？\n那么倘若有人想创建一条同样创世区块的替代链，他就得在连接到真实网络之前，用不同的哈希对创世区块之后的某个区块做校验和。倘若他的链到达了官方客户端里校验和的位置，他就得确保自己的 Bitcoin 客户端里不包含那个校验和。\n链的强度是怎么计算的？只看长度和校验和吗？还是说一个难度 500 的区块会被认为比十个难度为一的区块更有效？我猜大概率只看长度和校验和，这意味着校验和之前的所有交易基本上永远安全，但校验和之后的区块的强度只等于网络的当前强度，直到下一个校验和出现。"},{"id":2459,"sid":395,"sat":1,"tid":185,"tt":"overflow bug SERIOUS","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T22:54:55Z","url":"https://bitcointalk.org/index.php?topic=823.msg9841#msg9841","zh":"<p>未升级的节点大部分时间持有正确的链，但它们仍在试图把那笔溢出交易打包进每个区块，所以它们在不停地尝试分叉、生成无效区块。老版本节点重启后，交易池会被清空，所以在那笔交易再次广播之前，它可能有一段时间能生成有效区块。0.3.9 及更低版本的节点仍然必须升级。</p><p>SVN 现在有了我们需要的代码，可以自动重组区块链，不用再手动删 blk*.dat 文件。我知道昨天自己没时间又快又稳地把这个代码写出来，所以先走了快速的手动方案。</p>","zhText":"未升级的节点大部分时间持有正确的链，但它们仍在试图把那笔溢出交易打包进每个区块，所以它们在不停地尝试分叉、生成无效区块。老版本节点重启后，交易池会被清空，所以在那笔交易再次广播之前，它可能有一段时间能生成有效区块。0.3.9 及更低版本的节点仍然必须升级。\nSVN 现在有了我们需要的代码，可以自动重组区块链，不用再手动删 blk*.dat 文件。我知道昨天自己没时间又快又稳地把这个代码写出来，所以先走了快速的手动方案。"},{"id":2481,"sid":396,"sat":1,"tid":189,"tt":"checkpointing the block chain","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-16","ts":"2010-08-16T23:01:48Z","url":"https://bitcointalk.org/index.php?topic=834.msg9843#msg9843","zh":"<blockquote><p>链的强度是怎么计算的？</p></blockquote><p>总工作证明。</p>","zhText":"链的强度是怎么计算的？\n\n总工作证明。"},{"id":2519,"sid":null,"sat":0,"tid":193,"tt":"Difficulty: More nodes active, or faster nodes?","src":"Bitcointalk","author":"MoonShadow","date":"2010-08-17","ts":"2010-08-17T21:52:06Z","url":"https://bitcointalk.org/index.php?topic=846.msg9983#msg9983","zh":"<blockquote><p>那里面吹了不少牛皮。它引用了一个具体数字 53 MB/s，而我们每次只哈希 192 字节，你可能以为它能做到 27 mhash/s（实际很可能更低），不过我相信这确实已经在装一两块 GPU 的桌面机的性能范围之内了。</p></blockquote><p>是，但你忽略了两点。第一，软件收发机通常需要四颗这样的芯片。（两颗收、两颗发，一颗做数字信号处理，另一颗对原始信号做数字滤波。换句话说，一颗是虚拟麦克风/扬声器，另一颗是虚拟调谐器。当然，不是所有软件无线电方案都需要四颗）这样如果一个火腿玩家有四颗，四颗都能为此编程。另一点我之前没有明说：一颗 FPGA 不等于只有一个 sha-256 处理器。一颗 FPGA 芯片里塞进不止一个这种处理器是可能的，甚至是大概率事件。这些芯片相当大，足以「虚拟化」相当复杂的逻辑电路，一个高手可以把一颗芯片编程为多个并行运行的 sha-256 处理器。而且就算这样，他的主 CPU 和 GPU 仍在，想要更多 Kh/s 还能用。任何有能力在同一台机器上给一块或多块 GPU 编程来跑哈希的黑客已经是精英了，在一颗 FPGA 上做多个 sha-256 核心对他不过是小菜一碟。而我们已经知道，Bitcoin 社区里是有这种精英人才的——有人想运营它，有人想攻破它。</p>","zhText":"那里面吹了不少牛皮。它引用了一个具体数字 53 MB/s，而我们每次只哈希 192 字节，你可能以为它能做到 27 mhash/s（实际很可能更低），不过我相信这确实已经在装一两块 GPU 的桌面机的性能范围之内了。\n\n是，但你忽略了两点。第一，软件收发机通常需要四颗这样的芯片。（两颗收、两颗发，一颗做数字信号处理，另一颗对原始信号做数字滤波。换句话说，一颗是虚拟麦克风/扬声器，另一颗是虚拟调谐器。当然，不是所有软件无线电方案都需要四颗）这样如果一个火腿玩家有四颗，四颗都能为此编程。另一点我之前没有明说：一颗 FPGA 不等于只有一个 sha-256 处理器。一颗 FPGA 芯片里塞进不止一个这种处理器是可能的，甚至是大概率事件。这些芯片相当大，足以「虚拟化」相当复杂的逻辑电路，一个高手可以把一颗芯片编程为多个并行运行的 sha-256 处理器。而且就算这样，他的主 CPU 和 GPU 仍在，想要更多 Kh/s 还能用。任何有能力在同一台机器上给一块或多块 GPU 编程来跑哈希的黑客已经是精英了，在一颗 FPGA 上做多个 sha-256 核心对他不过是小菜一碟。而我们已经知道，Bitcoin 社区里是有这种精英人才的——有人想运营它，有人想攻破它。"},{"id":2523,"sid":null,"sat":0,"tid":194,"tt":"New screenshots to the front page?","src":"Bitcointalk","author":"sirius","date":"2010-08-18","ts":"2010-08-18T08:35:13Z","url":"https://bitcointalk.org/index.php?topic=850.msg10038#msg10038","zh":"<blockquote><p>你觉得 Windows Aero 好看？</p></blockquote><p>比 XP 强</p>","zhText":"你觉得 Windows Aero 好看？\n\n比 XP 强"},{"id":2524,"sid":397,"sat":1,"tid":194,"tt":"New screenshots to the front page?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-18","ts":"2010-08-18T16:58:44Z","url":"https://bitcointalk.org/index.php?topic=850.msg10067#msg10067","zh":"<p>确实。0.1 的老截图已经非常过时了。</p><p>Windows Aero 是个好选择。Windows 仍是最大的用户群。注意透明部分底下露出的东西。</p><p>交易列表里放些什么？别塞得太满，放几样就行。</p>","zhText":"确实。0.1 的老截图已经非常过时了。\nWindows Aero 是个好选择。Windows 仍是最大的用户群。注意透明部分底下露出的东西。\n交易列表里放些什么？别塞得太满，放几样就行。"},{"id":2520,"sid":398,"sat":1,"tid":193,"tt":"Difficulty: More nodes active, or faster nodes?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-18","ts":"2010-08-18T18:01:40Z","url":"https://bitcointalk.org/index.php?topic=846.msg10076#msg10076","zh":"<p>VIA C7 的硬件 SHA-256 公布的性能数字并不惊人。只有 1500 khash/s 左右。想想就知道，用硬件实现并不意味着快得离谱。每一步还是得做。只有当把它简化成单一用途硬件后小到可以大量并行摆放，才会有飞跃。这未必容易，也不是理所当然。</p>","zhText":"VIA C7 的硬件 SHA-256 公布的性能数字并不惊人。只有 1500 khash/s 左右。想想就知道，用硬件实现并不意味着快得离谱。每一步还是得做。只有当把它简化成单一用途硬件后小到可以大量并行摆放，才会有飞跃。这未必容易，也不是理所当然。"},{"id":2489,"sid":399,"sat":1,"tid":191,"tt":"Checking the block chain on load","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-18","ts":"2010-08-18T18:28:28Z","url":"https://bitcointalk.org/index.php?topic=841.msg10082#msg10082","zh":"<p>下一个 SVN 修订里，我会让它只回溯到区块 74000 的最后一个检查点。将来若要再修问题，随时可以让它至少回溯到问题所在之处。另外，我正在加校验区块索引的代码，也就是说会对工作证明链做校验。</p><p>不过，系统对你的 blk*.dat 文件仍然不是完全安全的。用别人 blk 文件的副本，就是在信任那个人。</p>","zhText":"下一个 SVN 修订里，我会让它只回溯到区块 74000 的最后一个检查点。将来若要再修问题，随时可以让它至少回溯到问题所在之处。另外，我正在加校验区块索引的代码，也就是说会对工作证明链做校验。\n不过，系统对你的 blk*.dat 文件仍然不是完全安全的。用别人 blk 文件的副本，就是在信任那个人。"},{"id":2380,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"nelisky","date":"2010-08-18","ts":"2010-08-18T23:02:25Z","url":"https://bitcointalk.org/index.php?topic=820.msg10164#msg10164","zh":"<blockquote><p>那么这么说准确吗：到目前为止，只有 Intel Core i7 处理器和某些（Phenom？）AMD 处理器能从 -4way 获得提速？</p></blockquote><p>还有 i5，至少在我的 macbookpro 上是。</p>","zhText":"那么这么说准确吗：到目前为止，只有 Intel Core i7 处理器和某些（Phenom？）AMD 处理器能从 -4way 获得提速？\n\n还有 i5，至少在我的 macbookpro 上是。"},{"id":2381,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Ground Loop","date":"2010-08-18","ts":"2010-08-18T23:14:26Z","url":"https://bitcointalk.org/index.php?topic=820.msg10167#msg10167","zh":"<p>有非 Mac 的 i5 用户吗？\n我这台 Windows i5 64 位变慢了。\n[更正——不属实。Windows 没有 -4way，那几台 Linux 机器是 Xeon。]</p>","zhText":"有非 Mac 的 i5 用户吗？\n我这台 Windows i5 64 位变慢了。\n[更正——不属实。Windows 没有 -4way，那几台 Linux 机器是 Xeon。]"},{"id":2532,"sid":null,"sat":0,"tid":195,"tt":"28 days without generation, i have 4200khash/s","src":"Bitcointalk","author":"lachesis","date":"2010-08-19","ts":"2010-08-19T00:04:50Z","url":"https://bitcointalk.org/index.php?topic=862.msg10177#msg10177","zh":"<p>是啊，我这边情况类似。我在一台 khash 差不多的机器上跑自编译的 Linux 版本，从七月中旬起就没生成过区块。当然，其中有几个星期跑的是_坏的_ Linux 构建，但我现在跑的是最新 SVN 版本，还是没有运气。</p>","zhText":"是啊，我这边情况类似。我在一台 khash 差不多的机器上跑自编译的 Linux 版本，从七月中旬起就没生成过区块。当然，其中有几个星期跑的是_坏的_ Linux 构建，但我现在跑的是最新 SVN 版本，还是没有运气。"},{"id":2382,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"vess","date":"2010-08-19","ts":"2010-08-19T06:41:27Z","url":"https://bitcointalk.org/index.php?topic=820.msg10214#msg10214","zh":"<p>我的 Core i5 笔记本（Ubuntu）速度翻倍了。其实，并不是速度翻倍，而是速度不变，但现在只用一半的 CPU。我没法让它回到满负荷 CPU 使用。话虽如此，现在铸币时我的笔记本凉快多了。倘若我看到它成功升到 100% 使用率，我会回来汇报。</p>","zhText":"我的 Core i5 笔记本（Ubuntu）速度翻倍了。其实，并不是速度翻倍，而是速度不变，但现在只用一半的 CPU。我没法让它回到满负荷 CPU 使用。话虽如此，现在铸币时我的笔记本凉快多了。倘若我看到它成功升到 100% 使用率，我会回来汇报。"},{"id":2542,"sid":null,"sat":0,"tid":196,"tt":"Convert Bitcoin to GTK: Yes?  No?  wx is better?","src":"Bitcointalk","author":"BioMike","date":"2010-08-19","ts":"2010-08-19T08:05:18Z","url":"https://bitcointalk.org/index.php?topic=867.msg10226#msg10226","zh":"<p>WxWidgets 本身不算问题。我的问题在于所用的版本（2.9），许多发行版打包者认为它不稳定（虽然 WxWidgets 开发者说不是）。另一方面，据我所知 WxWidgets 在 Linux 下用 gtk 画所有界面，这让 bitcoin 开发者很容易做到跨平台。</p><p>我同意 theymos 的看法：GUI 和守护进程应当分离（或者更进一步，把整个协议之类放进一个带多语言绑定的库）。我已经让自己的「客户端」跑起来了（见 <a href=\"http://bitcointalk.org/index.php?topic=851.0\">http://bitcointalk.org/index.php?topic=851.0</a>），用的是守护进程（它已经不再需要 WxWidgets），运行得非常好。因而在我这里已经不依赖 WxWidgets 了。</p>","zhText":"WxWidgets 本身不算问题。我的问题在于所用的版本（2.9），许多发行版打包者认为它不稳定（虽然 WxWidgets 开发者说不是）。另一方面，据我所知 WxWidgets 在 Linux 下用 gtk 画所有界面，这让 bitcoin 开发者很容易做到跨平台。\n我同意 theymos 的看法：GUI 和守护进程应当分离（或者更进一步，把整个协议之类放进一个带多语言绑定的库）。我已经让自己的「客户端」跑起来了（见 http://bitcointalk.org/index.php?topic=851.0），用的是守护进程（它已经不再需要 WxWidgets），运行得非常好。因而在我这里已经不依赖 WxWidgets 了。"},{"id":2544,"sid":null,"sat":0,"tid":196,"tt":"Convert Bitcoin to GTK: Yes?  No?  wx is better?","src":"Bitcointalk","author":"teknohog","date":"2010-08-19","ts":"2010-08-19T14:59:59Z","url":"https://bitcointalk.org/index.php?topic=867.msg10250#msg10250","zh":"<blockquote><p>那你说 GUI 和守护进程应该分离是什么意思？它们本来就是分开的啊。你可以单独构建守护进程。你还需要一个只含 GUI 的单独构建吗？我看不出为什么。</p></blockquote><p>Bitcoin 是 P2P 网络，程序应该一直运行。但我并不需要一直盯着 GUI，所以有守护进程才有意义。现在的问题是，你想启动 GUI 版就得停掉守护进程，网络会中断一下。</p><p>有些 P2P 应用譬如 aMule 就做得很对。守护进程一直运行，你想交互时就启动单独的 GUI，由它连到守护进程。最重要的是，GUI 可以和守护进程跑在不同的机器上。</p><p>这种架构对移动端使用 Bitcoin 再合适不过。你在「服务器」机器上跑守护进程，然后用移动设备上的 GUI 连上去。我记得这曾在别的语境下讨论过，但机制是一样的。</p><p>不过，你现在就可以用 JSON-RPC 机制做一个单独的 GUI，所以还没有立刻改动主线客户端的必要。</p>","zhText":"那你说 GUI 和守护进程应该分离是什么意思？它们本来就是分开的啊。你可以单独构建守护进程。你还需要一个只含 GUI 的单独构建吗？我看不出为什么。\n\nBitcoin 是 P2P 网络，程序应该一直运行。但我并不需要一直盯着 GUI，所以有守护进程才有意义。现在的问题是，你想启动 GUI 版就得停掉守护进程，网络会中断一下。\n有些 P2P 应用譬如 aMule 就做得很对。守护进程一直运行，你想交互时就启动单独的 GUI，由它连到守护进程。最重要的是，GUI 可以和守护进程跑在不同的机器上。\n这种架构对移动端使用 Bitcoin 再合适不过。你在「服务器」机器上跑守护进程，然后用移动设备上的 GUI 连上去。我记得这曾在别的语境下讨论过，但机制是一样的。\n不过，你现在就可以用 JSON-RPC 机制做一个单独的 GUI，所以还没有立刻改动主线客户端的必要。"},{"id":2547,"sid":null,"sat":0,"tid":197,"tt":"HOWTO: Compiling Bitcoin on Ubuntu 10.04 (Karmic)","src":"Bitcointalk","author":"Willsway","date":"2010-08-19","ts":"2010-08-19T15:03:41Z","url":"https://bitcointalk.org/index.php?topic=868.msg10251#msg10251","zh":"<p>一份出色的指南。非常感谢你的付出——它肯定帮到我</p>","zhText":"一份出色的指南。非常感谢你的付出——它肯定帮到我"},{"id":2545,"sid":400,"sat":1,"tid":196,"tt":"Convert Bitcoin to GTK: Yes?  No?  wx is better?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-19","ts":"2010-08-19T18:44:36Z","url":"https://bitcointalk.org/index.php?topic=867.msg10272#msg10272","zh":"<blockquote><p>WxWidgets 本身不算问题。我的问题在于所用的版本（2.9），许多发行版打包者认为它不稳定（虽然 WxWidgets 开发者说不是）。另一方面，据我所知 WxWidgets 在 Linux 下用 gtk 画所有界面，这让 bitcoin 开发者很容易做到跨平台。</p></blockquote><p>wxWidgets 2.9 是他们的第一个 UTF-8 版本。我们在所有平台（包括 Windows）上都用 UTF-8。</p><p>发行版的 2.8 包是 UTF-16 的，只会让人栽跟头。在大家统一到 2.9 之前，2.8 及其 wxString UTF-16/ANSI 条件编译选项让人有无穷无尽的构建问题。而且用 2.8 时我们走的是 ANSI，那只是 wxWidgets 支持 UTF-8 之前的临时权宜之计。</p><p>这个问题会自己解决。随着时间的推移，2.9 会成为更主线的版本。</p>","zhText":"WxWidgets 本身不算问题。我的问题在于所用的版本（2.9），许多发行版打包者认为它不稳定（虽然 WxWidgets 开发者说不是）。另一方面，据我所知 WxWidgets 在 Linux 下用 gtk 画所有界面，这让 bitcoin 开发者很容易做到跨平台。\n\nwxWidgets 2.9 是他们的第一个 UTF-8 版本。我们在所有平台（包括 Windows）上都用 UTF-8。\n发行版的 2.8 包是 UTF-16 的，只会让人栽跟头。在大家统一到 2.9 之前，2.8 及其 wxString UTF-16/ANSI 条件编译选项让人有无穷无尽的构建问题。而且用 2.8 时我们走的是 ANSI，那只是 wxWidgets 支持 UTF-8 之前的临时权宜之计。\n这个问题会自己解决。随着时间的推移，2.9 会成为更主线的版本。"},{"id":2548,"sid":401,"sat":1,"tid":197,"tt":"HOWTO: Compiling Bitcoin on Ubuntu 10.04 (Karmic)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-19","ts":"2010-08-19T18:55:48Z","url":"https://bitcointalk.org/index.php?topic=868.msg10275#msg10275","zh":"<p>这篇教程写得真不错。应该有人照着做一遍确认一下没踩坑。</p>","zhText":"这篇教程写得真不错。应该有人照着做一遍确认一下没踩坑。"},{"id":2383,"sid":402,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-19","ts":"2010-08-19T19:07:43Z","url":"https://bitcointalk.org/index.php?topic=820.msg10281#msg10281","zh":"<blockquote><p>有非 Mac 的 i5 用户吗？\n我这台 Windows i5 64 位变慢了。</p></blockquote><p>这是我头一次听人说 i5 更慢。其他人都说 i5 上 4way 更快，开了超线程后更是如此。</p><blockquote><p>还有 i5，至少在我的 macbookpro 上是。</p></blockquote><p>好，那我理解为这确认了它在 Mac 上也能用？</p><p>Laszlo 告诉我他确实在 Mac 上编译进了 -4way 的代码，所以 -4way 开关在 Mac 上也可以试。SVN 上的 makefile.osx 我记得还没有它，只有编译好的版本。</p>","zhText":"有非 Mac 的 i5 用户吗？\n我这台 Windows i5 64 位变慢了。\n\n这是我头一次听人说 i5 更慢。其他人都说 i5 上 4way 更快，开了超线程后更是如此。\n还有 i5，至少在我的 macbookpro 上是。\n\n好，那我理解为这确认了它在 Mac 上也能用？\nLaszlo 告诉我他确实在 Mac 上编译进了 -4way 的代码，所以 -4way 开关在 Mac 上也可以试。SVN 上的 makefile.osx 我记得还没有它，只有编译好的版本。"},{"id":2533,"sid":403,"sat":1,"tid":195,"tt":"28 days without generation, i have 4200khash/s","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-19","ts":"2010-08-19T19:40:30Z","url":"https://bitcointalk.org/index.php?topic=862.msg10290#msg10290","zh":"<p>确认你电脑的日期和时间设置正确。</p>","zhText":"确认你电脑的日期和时间设置正确。"},{"id":2550,"sid":null,"sat":0,"tid":198,"tt":"Hypothetical question on lost coins / transfers","src":"Bitcointalk","author":"FreeMoney","date":"2010-08-19","ts":"2010-08-19T19:44:06Z","url":"https://bitcointalk.org/index.php?topic=870.msg10292#msg10292","zh":"<p>我觉得不会。我认为当一个客户端判定某个区块是坏的，它会取出其中的交易重新广播，或者自己把它们放进区块。</p>","zhText":"我觉得不会。我认为当一个客户端判定某个区块是坏的，它会取出其中的交易重新广播，或者自己把它们放进区块。"},{"id":2552,"sid":404,"sat":1,"tid":199,"tt":"Need a post writing up some things users should know","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-19","ts":"2010-08-19T20:14:01Z","url":"https://bitcointalk.org/index.php?topic=873.msg10297#msg10297","zh":"<p>我不知道该叫它什么，但我们可以发一个帖子，列出这些用户应该知道的事。谁有时间写的话，清单在这里：</p><p>- 确保你的时钟设置正确。</p><p>- Microsoft Security Essentials。这件事一直没被正经写下来。</p><p>- 警告：别乱动你的 wallet.dat 文件。它是个数据库文件，没有你想的那么简单。在这个 Beta 版里，我们还没来得及把它做得防手贱。倘若你把它换来换去，它可能不像预期那样工作。</p>","zhText":"我不知道该叫它什么，但我们可以发一个帖子，列出这些用户应该知道的事。谁有时间写的话，清单在这里：\n- 确保你的时钟设置正确。\n- Microsoft Security Essentials。这件事一直没被正经写下来。\n- 警告：别乱动你的 wallet.dat 文件。它是个数据库文件，没有你想的那么简单。在这个 Beta 版里，我们还没来得及把它做得防手贱。倘若你把它换来换去，它可能不像预期那样工作。"},{"id":2551,"sid":405,"sat":1,"tid":198,"tt":"Hypothetical question on lost coins / transfers","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-19","ts":"2010-08-19T20:28:50Z","url":"https://bitcointalk.org/index.php?topic=870.msg10300#msg10300","zh":"<p>没错。你不需要重新广播你的交易它也能工作。</p><p>当任何节点断开一个分叉时，它会把分叉里的全部交易倒回交易池，以便加入新链。整个网络都在保证把你的交易重新整合进去。你唯一会看到的就是确认数从 0 重新开始计数。</p><p>在某些类型的分叉里，你的交易本来就已经进了两条分叉，所以无论哪边赢你都没事。</p>","zhText":"没错。你不需要重新广播你的交易它也能工作。\n当任何节点断开一个分叉时，它会把分叉里的全部交易倒回交易池，以便加入新链。整个网络都在保证把你的交易重新整合进去。你唯一会看到的就是确认数从 0 重新开始计数。\n在某些类型的分叉里，你的交易本来就已经进了两条分叉，所以无论哪边赢你都没事。"},{"id":2512,"sid":null,"sat":0,"tid":192,"tt":"Bitcoins are most like shares of common stock","src":"Bitcointalk","author":"ichi","date":"2010-08-20","ts":"2010-08-20T03:51:34Z","url":"https://bitcointalk.org/index.php?topic=845.msg10365#msg10365","zh":"<blockquote><p>我说，避免挨枪子最好的办法就是别当靶子，更别主动送子弹。别声称自己是货币。就这么简单。</p></blockquote><p>我无法想象政府会因为 Bitcoin 没自称货币就放过它。让它构成威胁的事实是：它能匿名地中介交换（包括与货币之间的交换）。</p><p>依我看，解决方案是精心的设计与实现，而非措辞（或求情）。</p><blockquote><p>ichi: 为什么要我替你做功课？想辩论，就拿出点干货来。</p></blockquote><p>好吧，哪位行行好，把先前那个提案的论坛链接贴出来？</p><p>关于匿名性，恕我直言，很多 Bitcoin 用户太掉以轻心了。</p>","zhText":"我说，避免挨枪子最好的办法就是别当靶子，更别主动送子弹。别声称自己是货币。就这么简单。\n\n我无法想象政府会因为 Bitcoin 没自称货币就放过它。让它构成威胁的事实是：它能匿名地中介交换（包括与货币之间的交换）。\n依我看，解决方案是精心的设计与实现，而非措辞（或求情）。\nichi: 为什么要我替你做功课？想辩论，就拿出点干货来。\n\n好吧，哪位行行好，把先前那个提案的论坛链接贴出来？\n关于匿名性，恕我直言，很多 Bitcoin 用户太掉以轻心了。"},{"id":2554,"sid":null,"sat":0,"tid":199,"tt":"Need a post writing up some things users should know","src":"Bitcointalk","author":"Insti","date":"2010-08-20","ts":"2010-08-20T10:18:58Z","url":"https://bitcointalk.org/index.php?topic=873.msg10419#msg10419","zh":"<p>mizeryderia，你只是把中本聪的帖子复制粘贴了一遍，没增加任何价值。</p><p>你本可以试着回应他提出的观点，或者至少加一条说明，解释为什么这个页面放在 wiki 上、你想让大家用它做什么。</p>","zhText":"mizeryderia，你只是把中本聪的帖子复制粘贴了一遍，没增加任何价值。\n你本可以试着回应他提出的观点，或者至少加一条说明，解释为什么这个页面放在 wiki 上、你想让大家用它做什么。"},{"id":2535,"sid":null,"sat":0,"tid":195,"tt":"28 days without generation, i have 4200khash/s","src":"Bitcointalk","author":"kosovito","date":"2010-08-20","ts":"2010-08-20T14:12:19Z","url":"https://bitcointalk.org/index.php?topic=862.msg10438#msg10438","zh":"<p>我的电脑日期和时间是正确的。</p><p>我卸载了 bitcoin，删掉了绝对所有的文件、区块、debug，全部，当然除了 wallet.dat。</p><p>然后重新安装，希望能有用。</p><p>问一下，wallet.dat 会不会造成什么问题？？</p>","zhText":"我的电脑日期和时间是正确的。\n我卸载了 bitcoin，删掉了绝对所有的文件、区块、debug，全部，当然除了 wallet.dat。\n然后重新安装，希望能有用。\n问一下，wallet.dat 会不会造成什么问题？？"},{"id":1676,"sid":null,"sat":0,"tid":137,"tt":"Bitcoin does NOT violate Mises' Regression Theorem","src":"Bitcointalk","author":"FreeMoney","date":"2010-08-21","ts":"2010-08-21T06:48:36Z","url":"https://bitcointalk.org/index.php?topic=583.msg10553#msg10553","zh":"<p>这可能只是措辞问题。但我会说，那个「先在的价值」其实是某些人的预期——他们预期它会成为一种好货币。</p>","zhText":"这可能只是措辞问题。但我会说，那个「先在的价值」其实是某些人的预期——他们预期它会成为一种好货币。"},{"id":2559,"sid":null,"sat":0,"tid":200,"tt":"integrating digital payments into p2p protocols","src":"Bitcointalk","author":"zooko","date":"2010-08-21","ts":"2010-08-21T14:13:27Z","url":"https://bitcointalk.org/index.php?topic=890.msg10593#msg10593","zh":"<p>各位：</p><p>我刚在交易论坛发了这条消息：</p><p><a href=\"http://bitcointalk.org/index.php?topic=30.msg10592#msg10592\">http://bitcointalk.org/index.php?topic=30.msg10592#msg10592</a></p><p>有几位黑客会非常有兴趣贡献补丁，把 BitCoin 支付直接整合进 Tahoe-LAFS 存储协议。这是个大工程！大抵要花一年功夫，我们才能准备好在新的稳定版本里部署它。当然，投入的人越多，进度越快。</p><p>谨启，</p><p>Zooko</p><p>Tahoe-LAFS 项目社区组织者</p>","zhText":"各位：\n我刚在交易论坛发了这条消息：\nhttp://bitcointalk.org/index.php?topic=30.msg10592#msg10592\n有几位黑客会非常有兴趣贡献补丁，把 BitCoin 支付直接整合进 Tahoe-LAFS 存储协议。这是个大工程！大抵要花一年功夫，我们才能准备好在新的稳定版本里部署它。当然，投入的人越多，进度越快。\n谨启，\nZooko\nTahoe-LAFS 项目社区组织者"},{"id":2385,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"ArtForz","date":"2010-08-21","ts":"2010-08-21T16:56:31Z","url":"https://bitcointalk.org/index.php?topic=820.msg10609#msg10609","zh":"<p>新旧 CPU 之间的差别其实很好解释。\n老的微架构有 64 位的 mmx/sse 执行单元，把 128 位 sse 操作拆成 2 个 64 位微操作。\n新架构有 128 位 sse 单元。</p><ul><li>AMD K8: 2 个 64 位单元</li><li>intel Core/Core2: 3 个 64 位单元</li><li>AMD K10: 2 个 128 位单元</li><li>intel nehalem: 3 个 128 位单元</li></ul><p>K10 = 4 核及以上的 Opteron、Phenom、Phenom II、Athlon II\nnehalem = xeon 34xx/35xx/36xx/55xx/56xx/65xx/75xx, i3/i5/i7</p>","zhText":"新旧 CPU 之间的差别其实很好解释。\n老的微架构有 64 位的 mmx/sse 执行单元，把 128 位 sse 操作拆成 2 个 64 位微操作。\n新架构有 128 位 sse 单元。\nAMD K8: 2 个 64 位单元\nintel Core/Core2: 3 个 64 位单元\nAMD K10: 2 个 128 位单元\nintel nehalem: 3 个 128 位单元\nK10 = 4 核及以上的 Opteron、Phenom、Phenom II、Athlon II\nnehalem = xeon 34xx/35xx/36xx/55xx/56xx/65xx/75xx, i3/i5/i7"},{"id":2555,"sid":406,"sat":1,"tid":199,"tt":"Need a post writing up some things users should know","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-22","ts":"2010-08-22T22:51:00Z","url":"https://bitcointalk.org/index.php?topic=873.msg10715#msg10715","zh":"<p>时钟部分会在下一个版本（0.3.11 或更高）里解决。SVN rev 141 会在你的时钟偏差太大时弹出消息框。</p>","zhText":"时钟部分会在下一个版本（0.3.11 或更高）里解决。SVN rev 141 会在你的时钟偏差太大时弹出消息框。"},{"id":2536,"sid":407,"sat":1,"tid":195,"tt":"28 days without generation, i have 4200khash/s","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-22","ts":"2010-08-22T23:01:02Z","url":"https://bitcointalk.org/index.php?topic=862.msg10717#msg10717","zh":"<p>在 debug.log 里搜 \"proof-of-work found\"。倘若搜到了，就检查紧接着的任何错误。</p><blockquote><p>时间上允许多大的偏差才能正常工作？</p></blockquote><p>容许偏差是 2 小时。</p><p>这个问题会在 SVN rev 141 和下一个版本（0.3.11+）里解决。倘若你的时钟偏差超过一小时，它会弹出消息框提醒你。</p>","zhText":"在 debug.log 里搜 \"proof-of-work found\"。倘若搜到了，就检查紧接着的任何错误。\n时间上允许多大的偏差才能正常工作？\n\n容许偏差是 2 小时。\n这个问题会在 SVN rev 141 和下一个版本（0.3.11+）里解决。倘若你的时钟偏差超过一小时，它会弹出消息框提醒你。"},{"id":2386,"sid":408,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-22","ts":"2010-08-22T23:21:50Z","url":"https://bitcointalk.org/index.php?topic=820.msg10720#msg10720","zh":"<p>谢谢澄清。我看过有人贴的链接，说 AMD 约莫在 2007 年前后做了这个改动，但我不知道 Intel 那边的情况。</p><p>那 Core/Core2 就没戏了。它们只有一半的 SSE2 硬件。</p><p>奇怪的是 Intel 有 3 个 128 位单元，但只有 2 个 128 位单元的 AMD 反而更快。</p>","zhText":"谢谢澄清。我看过有人贴的链接，说 AMD 约莫在 2007 年前后做了这个改动，但我不知道 Intel 那边的情况。\n那 Core/Core2 就没戏了。它们只有一半的 SSE2 硬件。\n奇怪的是 Intel 有 3 个 128 位单元，但只有 2 个 128 位单元的 AMD 反而更快。"},{"id":2561,"sid":409,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-22","ts":"2010-08-22T23:55:06Z","url":"https://bitcointalk.org/index.php?topic=898.msg10722#msg10722","zh":"<p>我一直在写警报系统。警报通过网络广播，作用于一个版本号区间。警报消息用私钥签名，私钥只有我有。</p><p>节点可以对警报做两件事：\n- 在状态栏显示警告消息。\n- 让 json-rpc 接口的资金处理方法返回错误。</p><p>在诸如溢出 bug 或分叉这类用户可能无法信任所收支付的情形下，警报应该能让旧版本在升级前基本安全。手动用户在查看收款时会注意到状态栏警告，而 json-rpc 安全模式会阻止自动化网站在升级前继续交易。</p><p>警报期间返回错误的 json-rpc 方法是：\nsendtoaddress\ngetbalance\ngetreceivedbyaddress\ngetreceivedbylabel\nlistreceivedbyaddress\nlistreceivedbylabel</p>","zhText":"我一直在写警报系统。警报通过网络广播，作用于一个版本号区间。警报消息用私钥签名，私钥只有我有。\n节点可以对警报做两件事：\n- 在状态栏显示警告消息。\n- 让 json-rpc 接口的资金处理方法返回错误。\n在诸如溢出 bug 或分叉这类用户可能无法信任所收支付的情形下，警报应该能让旧版本在升级前基本安全。手动用户在查看收款时会注意到状态栏警告，而 json-rpc 安全模式会阻止自动化网站在升级前继续交易。\n警报期间返回错误的 json-rpc 方法是：\nsendtoaddress\ngetbalance\ngetreceivedbyaddress\ngetreceivedbylabel\nlistreceivedbyaddress\nlistreceivedbylabel"},{"id":2560,"sid":410,"sat":1,"tid":200,"tt":"integrating digital payments into p2p protocols","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-22","ts":"2010-08-22T23:57:32Z","url":"https://bitcointalk.org/index.php?topic=890.msg10723#msg10723","zh":"<p>嘿，Zooko！</p><p>想感谢你一两年前在你博客上写 Bitcoin，那还是我在 Cryptography 邮件列表上宣布它的时候。</p>","zhText":"嘿，Zooko！\n想感谢你一两年前在你博客上写 Bitcoin，那还是我在 Cryptography 邮件列表上宣布它的时候。"},{"id":2557,"sid":null,"sat":0,"tid":199,"tt":"Need a post writing up some things users should know","src":"Bitcointalk","author":"mizerydearia","date":"2010-08-23","ts":"2010-08-23T01:31:33Z","url":"https://bitcointalk.org/index.php?topic=873.msg10728#msg10728","zh":"<p><b>关于备份的后续讨论请看 <a href=\"http://bitcointalk.org/index.php?topic=921.0\">http://bitcointalk.org/index.php?topic=921.0</a></b></p><blockquote><p>那么它到底有多简单？我正想着给我昨天发帖提到的彩票站点做防呆备份，却在努力找这方面的资料。bitcoind 能把钱包转储到安全状态吗，或者至少能按需刷盘？倘若我在交易进行到一半时备份文件，我是会丢掉整笔交易还是只丢进行中的更新？什么时候需要备份？每笔转出显然要备，还有自动创建的密钥对，但收到的转账呢？我们已有的密钥对，据我所知不需要创建新地址。还是说 bitcoin 在接收侧也做同样的找零 dance？</p><p>这一部分，我相信，是所有问题里最关键的。MSE 和时钟偏差顶多妨碍正常使用，而钱包备份问题已经让人丢了一批币，这显然很糟糕，也无益于持续使用。</p></blockquote><p>这条评论值得让本主题以楼层嵌套的方式显示，好让讨论指数级展开。不过既然这个论坛不支持嵌套，我就简短说一句（不跑题）：应当有一套既定流程或机制，在不打断 Bitcoin 进程的前提下处理定期或触发式备份。看起来，把数据可靠性/可用性尽可能做到「完美」至关重要，这样才能给普及提供更多动力。</p><p>其实，这也不算跑题。</p><blockquote><p>- 警告：别乱动你的 wallet.dat 文件。它是个数据库文件，没有你想的那么简单。在这个 Beta 版里，我们还没来得及把它做得防手贱。倘若你把它换来换去，它可能不像预期那样工作。</p></blockquote><p>与其像我上面建议的那样引入警告、或者确立「谨慎加拖延」的优先级，不如对备份数据/钱包文件的实现做更多思考/建设。</p><p>我不了解当前数据流动的流程/结构，但倘若有人能写出或画出数据流向图之类的，那么借助这种图示信息，像我这样的人就能帮助理解事物如何运作，兴许还能提出改进建议，或者识别出诸如「收发哪些数据之后值得实现某种自动/触发式备份或类似动作」之类的问题。</p><p><b>关于备份的后续讨论请看 <a href=\"http://bitcointalk.org/index.php?topic=921.0\">http://bitcointalk.org/index.php?topic=921.0</a></b></p>","zhText":"关于备份的后续讨论请看 http://bitcointalk.org/index.php?topic=921.0\n那么它到底有多简单？我正想着给我昨天发帖提到的彩票站点做防呆备份，却在努力找这方面的资料。bitcoind 能把钱包转储到安全状态吗，或者至少能按需刷盘？倘若我在交易进行到一半时备份文件，我是会丢掉整笔交易还是只丢进行中的更新？什么时候需要备份？每笔转出显然要备，还有自动创建的密钥对，但收到的转账呢？我们已有的密钥对，据我所知不需要创建新地址。还是说 bitcoin 在接收侧也做同样的找零 dance？\n这一部分，我相信，是所有问题里最关键的。MSE 和时钟偏差顶多妨碍正常使用，而钱包备份问题已经让人丢了一批币，这显然很糟糕，也无益于持续使用。\n\n这条评论值得让本主题以楼层嵌套的方式显示，好让讨论指数级展开。不过既然这个论坛不支持嵌套，我就简短说一句（不跑题）：应当有一套既定流程或机制，在不打断 Bitcoin 进程的前提下处理定期或触发式备份。看起来，把数据可靠性/可用性尽可能做到「完美」至关重要，这样才能给普及提供更多动力。\n其实，这也不算跑题。\n- 警告：别乱动你的 wallet.dat 文件。它是个数据库文件，没有你想的那么简单。在这个 Beta 版里，我们还没来得及把它做得防手贱。倘若你把它换来换去，它可能不像预期那样工作。\n\n与其像我上面建议的那样引入警告、或者确立「谨慎加拖延」的优先级，不如对备份数据/钱包文件的实现做更多思考/建设。\n我不了解当前数据流动的流程/结构，但倘若有人能写出或画出数据流向图之类的，那么借助这种图示信息，像我这样的人就能帮助理解事物如何运作，兴许还能提出改进建议，或者识别出诸如「收发哪些数据之后值得实现某种自动/触发式备份或类似动作」之类的问题。\n关于备份的后续讨论请看 http://bitcointalk.org/index.php?topic=921.0"},{"id":2564,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"BioMike","date":"2010-08-23","ts":"2010-08-23T05:15:43Z","url":"https://bitcointalk.org/index.php?topic=898.msg10742#msg10742","zh":"<p>@mizerydearia，我觉得引用按钮比回复按钮好找。</p><p>那么，理论上这是一个第一代控制系统：<某个政府> 可以逮捕中本聪，要求\n他交出私钥（或者从他的电脑里拿到），从而关停整个网络？</p><p>还是说这做不到？<某个政府> 能走多远？</p>","zhText":"@mizerydearia，我觉得引用按钮比回复按钮好找。\n那么，理论上这是一个第一代控制系统： 可以逮捕中本聪，要求\n他交出私钥（或者从他的电脑里拿到），从而关停整个网络？\n还是说这做不到？ 能走多远？"},{"id":2583,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"theymos","date":"2010-08-24","ts":"2010-08-24T04:59:29Z","url":"https://bitcointalk.org/index.php?topic=898.msg10979#msg10979","zh":"<p>应该有一个 --disable-alerts 开关。</p>","zhText":"应该有一个 --disable-alerts 开关。"},{"id":2388,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"sgtstein","date":"2010-08-24","ts":"2010-08-24T17:31:08Z","url":"https://bitcointalk.org/index.php?topic=820.msg11032#msg11032","zh":"<p>有人注意到 AMD Bulldozer 的新新闻稿了吗？倘若我理解得对，它应该能每核心同时处理 8 个 64 位哈希。用同样的代码设计会是一个相当大的速度提升。</p><p><a href=\"http://hardware.slashdot.org/story/10/08/24/1521203/AMD-Details-Upcoming-Bulldozer-Architecture\">Slashdot</a> 有这篇文章。\n<a href=\"http://www.pcper.com/article.php?aid=985&type=expert\">PC Perspective</a> 有细节。</p><p><a href=\"http://www.anandtech.com/show/2872\">AnandTech</a> 早在 2009 年十一月也报道过。</p>","zhText":"有人注意到 AMD Bulldozer 的新新闻稿了吗？倘若我理解得对，它应该能每核心同时处理 8 个 64 位哈希。用同样的代码设计会是一个相当大的速度提升。\nSlashdot 有这篇文章。\nPC Perspective 有细节。\nAnandTech 早在 2009 年十一月也报道过。"},{"id":2389,"sid":411,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-24","ts":"2010-08-24T22:43:56Z","url":"https://bitcointalk.org/index.php?topic=820.msg11068#msg11068","zh":"<blockquote><ul><li>AMD K10: 2 个 128 位单元</li><li>intel nehalem: 3 个 128 位单元</li></ul></blockquote><p>这大抵解释了为什么超线程能提升 -4way 的性能。倘若三个 SSE2 单元有富余，超线程正好能让它们都忙起来。</p>","zhText":"AMD K10: 2 个 128 位单元\nintel nehalem: 3 个 128 位单元\n\n这大抵解释了为什么超线程能提升 -4way 的性能。倘若三个 SSE2 单元有富余，超线程正好能让它们都忙起来。"},{"id":2584,"sid":412,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-24","ts":"2010-08-24T23:51:12Z","url":"https://bitcointalk.org/index.php?topic=898.msg11074#msg11074","zh":"<p>倘若你偏执到为这事歇斯底里，那你肯定也偏执到：一旦状态栏显示警告消息，你就会去查看网站和论坛。</p><p>我认为，倘若再出现类似溢出 bug 的问题，自动化网站在管理员查清状况、决定对策之前停止交易，是很重要的。倘若你判定是虚惊一场、想赌一把，可以用 \"-disablesafemode\" 开关。</p>","zhText":"倘若你偏执到为这事歇斯底里，那你肯定也偏执到：一旦状态栏显示警告消息，你就会去查看网站和论坛。\n我认为，倘若再出现类似溢出 bug 的问题，自动化网站在管理员查清状况、决定对策之前停止交易，是很重要的。倘若你判定是虚惊一场、想赌一把，可以用 \"-disablesafemode\" 开关。"},{"id":2585,"sid":413,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-25","ts":"2010-08-25T00:06:36Z","url":"https://bitcointalk.org/index.php?topic=898.msg11078#msg11078","zh":"<p>这已经在 SVN rev 142 里，作为 0.3.11 版本。</p>","zhText":"这已经在 SVN rev 142 里，作为 0.3.11 版本。"},{"id":2586,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"mizerydearia","date":"2010-08-25","ts":"2010-08-25T00:11:50Z","url":"https://bitcointalk.org/index.php?topic=898.msg11079#msg11079","zh":"<blockquote><p>倘若你判定是虚惊一场、想赌一把，可以用 \"-disablesafemode\" 开关。</p></blockquote><p>我刚发现 <a href=\"http://www.bitcoin.org/wiki/doku.php?id=man_page\">http://www.bitcoin.org/wiki/doku.php?id=man_page</a>，上面没有 -disablesafemode 的条目。兴许该加上！另外其他几个譬如 -4way 也应该加上。</p>","zhText":"倘若你判定是虚惊一场、想赌一把，可以用 \"-disablesafemode\" 开关。\n\n我刚发现 http://www.bitcoin.org/wiki/doku.php?id=man_page，上面没有 -disablesafemode 的条目。兴许该加上！另外其他几个譬如 -4way 也应该加上。"},{"id":2602,"sid":null,"sat":0,"tid":202,"tt":"RFC: remove DB_PRIVATE flag","src":"Bitcointalk","author":"jgarzik","date":"2010-08-25","ts":"2010-08-25T01:03:13Z","url":"https://bitcointalk.org/index.php?topic=920.msg11087#msg11087","zh":"<p>钱包备份和其他 DB 检查都可以用安全、原子、事务化的方式轻松做到……当且仅当 DB_PRIVATE 标志被移除。</p><pre><code>--- a/db.cpp\n+++ b/db.cpp\n@@ -77,7 +77,6 @@ CDB::CDB(const char* pszFile, const char* pszMode) : pdb(NULL)\n                              DB_INIT_MPOOL |\n                              DB_INIT_TXN   |\n                              DB_THREAD     |\n-                             DB_PRIVATE    |\n                              DB_RECOVER,\n                              S_IRUSR | S_IWUSR);</code></pre><p>这么做会有什么问题吗（如果有的话）？显然，这不覆盖非 db4 数据库，譬如区块数据文件。</p>","zhText":"钱包备份和其他 DB 检查都可以用安全、原子、事务化的方式轻松做到……当且仅当 DB_PRIVATE 标志被移除。\n--- a/db.cpp\n+++ b/db.cpp\n@@ -77,7 +77,6 @@ CDB::CDB(const char* pszFile, const char* pszMode) : pdb(NULL)\n DB_INIT_MPOOL |\n DB_INIT_TXN |\n DB_THREAD |\n- DB_PRIVATE |\n DB_RECOVER,\n S_IRUSR | S_IWUSR);这么做会有什么问题吗（如果有的话）？显然，这不覆盖非 db4 数据库，譬如区块数据文件。"},{"id":2588,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"nelisky","date":"2010-08-25","ts":"2010-08-25T01:28:32Z","url":"https://bitcointalk.org/index.php?topic=898.msg11092#msg11092","zh":"<blockquote><p>倘若你偏执到为这事歇斯底里，那你肯定也偏执到：一旦状态栏显示警告消息，你就会去查看网站和论坛。</p><p>我认为，倘若再出现类似溢出 bug 的问题，自动化网站在管理员查清状况、决定对策之前停止交易，是很重要的。倘若你判定是虚惊一场、想赌一把，可以用 \"-disablesafemode\" 开关。</p></blockquote><p>那么管理员用 bitcoind 会收到什么形式的警告？debug.log 里有什么可以 grep 的东西吗？还是 rpc 调用会抛出某种特定错误？有没有办法在本地强制触发它，好对服务做单元测试？</p>","zhText":"倘若你偏执到为这事歇斯底里，那你肯定也偏执到：一旦状态栏显示警告消息，你就会去查看网站和论坛。\n我认为，倘若再出现类似溢出 bug 的问题，自动化网站在管理员查清状况、决定对策之前停止交易，是很重要的。倘若你判定是虚惊一场、想赌一把，可以用 \"-disablesafemode\" 开关。\n\n那么管理员用 bitcoind 会收到什么形式的警告？debug.log 里有什么可以 grep 的东西吗？还是 rpc 调用会抛出某种特定错误？有没有办法在本地强制触发它，好对服务做单元测试？"},{"id":2607,"sid":null,"sat":0,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"mizerydearia","date":"2010-08-25","ts":"2010-08-25T11:11:16Z","url":"https://bitcointalk.org/index.php?topic=921.msg11131#msg11131","zh":"<p><a href=\"http://bitcointalk.org/index.php?topic=873.msg10728#msg10728\">http://bitcointalk.org/index.php?topic=873.msg10728#msg10728</a> 与此有些相关</p>","zhText":"http://bitcointalk.org/index.php?topic=873.msg10728#msg10728 与此有些相关"},{"id":2591,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Macho","date":"2010-08-25","ts":"2010-08-25T12:25:54Z","url":"https://bitcointalk.org/index.php?topic=898.msg11137#msg11137","zh":"<blockquote><p>我同意，不过，倘若你从源码编译，只需把</p></blockquote><p>这不是重点。倘若我勤快到能改源码，那我同样勤快到能加一个 -disablesafety 开关，那要容易得多。这里的问题是官方客户端的默认行为。很多人只会注意到出了新版本，下载安装，根本意识不到这个新的远程控制被塞了进来。</p><p>说「他们可以查看源码」或者说「这在论坛上公开讨论过」，就好比 Facebook 说「但我们有删除账号的选项，在服务条款第 76 节、第 346 行、那个名字叫『恶心到没人会点它』的链接下面，然后翻到第 2 页，解个验证码，确认对话框，就能停用你的账号，而且一周内不登录账号就会被删除」。总之……没人真会去那么做……这正是 badware 的做派，我不希望 Bitcoin 成为 badware。</p><p>倘若有一个远程安全禁用功能，每个启用它的用户都应该是有意识地、明白其作用地启用它。这很容易做到：在 GUI 客户端里弹一个对话框，劝用户启用并解释它的作用；在守护进程运行时给出一个警告完成同样的事。简单、高效、皆大欢喜。尊重用户、为用户服务的软件就该如此这般。我相信大多数人明白它的作用后会启用它……但趁着没确认用户明确想要就偷偷塞进这个功能，是在替用户做决定。我不喜欢别人替我做决定。</p><p>我是因为读论坛才知道这事，可将来呢？（那些不读论坛的人呢？）会不会再塞进另一个「功能」，而我甚至不会被通知、不会被解释它干什么、不会被问想不想启用？恕我直言，我不喜欢如此这般……我想知道我 CPU 上的软件在干什么，倘若它不尽合理的努力告知我、确保我了解它的行为，我会把它当作 badware。</p><p>这至少是我的看法……而且修复起来极其容易。</p>","zhText":"我同意，不过，倘若你从源码编译，只需把\n\n这不是重点。倘若我勤快到能改源码，那我同样勤快到能加一个 -disablesafety 开关，那要容易得多。这里的问题是官方客户端的默认行为。很多人只会注意到出了新版本，下载安装，根本意识不到这个新的远程控制被塞了进来。\n说「他们可以查看源码」或者说「这在论坛上公开讨论过」，就好比 Facebook 说「但我们有删除账号的选项，在服务条款第 76 节、第 346 行、那个名字叫『恶心到没人会点它』的链接下面，然后翻到第 2 页，解个验证码，确认对话框，就能停用你的账号，而且一周内不登录账号就会被删除」。总之……没人真会去那么做……这正是 badware 的做派，我不希望 Bitcoin 成为 badware。\n倘若有一个远程安全禁用功能，每个启用它的用户都应该是有意识地、明白其作用地启用它。这很容易做到：在 GUI 客户端里弹一个对话框，劝用户启用并解释它的作用；在守护进程运行时给出一个警告完成同样的事。简单、高效、皆大欢喜。尊重用户、为用户服务的软件就该如此这般。我相信大多数人明白它的作用后会启用它……但趁着没确认用户明确想要就偷偷塞进这个功能，是在替用户做决定。我不喜欢别人替我做决定。\n我是因为读论坛才知道这事，可将来呢？（那些不读论坛的人呢？）会不会再塞进另一个「功能」，而我甚至不会被通知、不会被解释它干什么、不会被问想不想启用？恕我直言，我不喜欢如此这般……我想知道我 CPU 上的软件在干什么，倘若它不尽合理的努力告知我、确保我了解它的行为，我会把它当作 badware。\n这至少是我的看法……而且修复起来极其容易。"},{"id":2592,"sid":414,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-25","ts":"2010-08-25T15:17:37Z","url":"https://bitcointalk.org/index.php?topic=898.msg11150#msg11150","zh":"<p>它无法远程执行任意操作。兴许你们有些人在回应其他帖子的人，是他们建议警报系统应该做更多事？</p><p>如果有警报，以下 json-rpc 方法会返回错误：\nsendtoaddress\ngetbalance\ngetreceivedbyaddress\ngetreceivedbylabel\nlistreceivedbyaddress\nlistreceivedbylabel</p><p>其余 14 个方法照常工作。</p><p>我认为更安全的选项应该默认启用。倘若你想让你的服务器继续交易、无视「它收到的钱可能像溢出 bug 那笔钱」的警报，你可以用开关，赔了钱也别怪别人。</p><p>让警报开着的最坏情况，是你的网站停止交易，直到你升级或加上 -disablesafemode 开关。</p><p>在你的节点本该处于风险中时被临时停机吓一跳，好过被小偷偷光全部库存时吓一跳。</p><p>将来等我们很久没发现新 bug、也做过彻底的安全审查而一无所获时，可以把它放宽。我不是说这就是永远的常态。它还是 beta 软件。</p>","zhText":"它无法远程执行任意操作。兴许你们有些人在回应其他帖子的人，是他们建议警报系统应该做更多事？\n如果有警报，以下 json-rpc 方法会返回错误：\nsendtoaddress\ngetbalance\ngetreceivedbyaddress\ngetreceivedbylabel\nlistreceivedbyaddress\nlistreceivedbylabel\n其余 14 个方法照常工作。\n我认为更安全的选项应该默认启用。倘若你想让你的服务器继续交易、无视「它收到的钱可能像溢出 bug 那笔钱」的警报，你可以用开关，赔了钱也别怪别人。\n让警报开着的最坏情况，是你的网站停止交易，直到你升级或加上 -disablesafemode 开关。\n在你的节点本该处于风险中时被临时停机吓一跳，好过被小偷偷光全部库存时吓一跳。\n将来等我们很久没发现新 bug、也做过彻底的安全审查而一无所获时，可以把它放宽。我不是说这就是永远的常态。它还是 beta 软件。"},{"id":2593,"sid":415,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-25","ts":"2010-08-25T16:40:20Z","url":"https://bitcointalk.org/index.php?topic=898.msg11151#msg11151","zh":"<p>我把开关名字改成了 -disablesafemode。</p>","zhText":"我把开关名字改成了 -disablesafemode。"},{"id":2595,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"jimbobway","date":"2010-08-25","ts":"2010-08-25T16:45:22Z","url":"https://bitcointalk.org/index.php?topic=898.msg11153#msg11153","zh":"<blockquote><p>@mizerydearia，我觉得引用按钮比回复按钮好找。</p><p>那么，理论上这是一个第一代控制系统：<某个政府> 可以逮捕中本聪，要求\n他交出私钥（或者从他的电脑里拿到），从而关停整个网络？</p><p>还是说这做不到？<某个政府> 能走多远？</p></blockquote><p>给中本聪几个反问：</p><p>你能扛得住水刑吗？\n你能扛得住电刑吗？\n一切形式的酷刑？\n最后，你该不会是 Jack Bauer 吧？认真的。</p>","zhText":"@mizerydearia，我觉得引用按钮比回复按钮好找。\n那么，理论上这是一个第一代控制系统： 可以逮捕中本聪，要求\n他交出私钥（或者从他的电脑里拿到），从而关停整个网络？\n还是说这做不到？ 能走多远？\n\n给中本聪几个反问：\n你能扛得住水刑吗？\n你能扛得住电刑吗？\n一切形式的酷刑？\n最后，你该不会是 Jack Bauer 吧？认真的。"},{"id":2596,"sid":416,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-25","ts":"2010-08-25T16:56:15Z","url":"https://bitcointalk.org/index.php?topic=898.msg11155#msg11155","zh":"<blockquote><p>给中本聪几个反问：</p><p>你能扛得住水刑吗？\n你能扛得住电刑吗？\n一切形式的酷刑？\n最后，你该不会是 Jack Bauer 吧？认真的。</p></blockquote><p>至于警报系统，谁在乎呢？那把私钥最多也就是暂时禁用六个 json-rpc 命令，直到站长们加上 -disablesafemode 开关或者升级。所有节点继续运行、继续铸币，网络照常。倘若我不在了，任何脚本小子都能想明白怎么加上两个字符、出一个禁用警报系统的新版本。那只是一时的不便。</p><blockquote><p>那么，理论上这是一个第一代控制系统：<某个政府> 可以逮捕中本聪，要求\n他交出私钥（或者从他的电脑里拿到），从而关停整个网络？</p></blockquote><p>这正是让我觉得反对者不了解状况的地方。它「关停不了整个网络」。</p>","zhText":"给中本聪几个反问：\n你能扛得住水刑吗？\n你能扛得住电刑吗？\n一切形式的酷刑？\n最后，你该不会是 Jack Bauer 吧？认真的。\n\n至于警报系统，谁在乎呢？那把私钥最多也就是暂时禁用六个 json-rpc 命令，直到站长们加上 -disablesafemode 开关或者升级。所有节点继续运行、继续铸币，网络照常。倘若我不在了，任何脚本小子都能想明白怎么加上两个字符、出一个禁用警报系统的新版本。那只是一时的不便。\n那么，理论上这是一个第一代控制系统： 可以逮捕中本聪，要求\n他交出私钥（或者从他的电脑里拿到），从而关停整个网络？\n\n这正是让我觉得反对者不了解状况的地方。它「关停不了整个网络」。"},{"id":2597,"sid":417,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-25","ts":"2010-08-25T17:59:30Z","url":"https://bitcointalk.org/index.php?topic=898.msg11158#msg11158","zh":"<blockquote><p>那么管理员用 bitcoind 会收到什么形式的警告？debug.log 里有什么可以 grep 的东西吗？还是 rpc 调用会抛出某种特定错误？有没有办法在本地强制触发它，好对服务做单元测试？</p></blockquote><p>getinfo 有一个新字段，显示任何警报消息或其他本会显示在状态栏上的错误。</p><p>rpc 方法返回一个 json-rpc 错误，错误描述为 \"Safe mode: \" 加上警报指定的附加文本。</p><p>我为你加了 \"-testsafemode\" 开关。SVN rev 145。</p><p>这些东西很新，仍可能变动。</p><blockquote><p>我刚发现 <a href=\"http://www.bitcoin.org/wiki/doku.php?id=man_page\">http://www.bitcoin.org/wiki/doku.php?id=man_page</a>，上面没有 -disablesafemode 的条目。兴许该加上！另外其他几个譬如 -4way 也应该加上。</p></blockquote><p>很多开关是故意不写文档的，譬如功能还在建设中、名字还没定，或者只是不打算随发布出去的测试代码。</p><p>-4way 最终应该被自动检测取代。</p>","zhText":"那么管理员用 bitcoind 会收到什么形式的警告？debug.log 里有什么可以 grep 的东西吗？还是 rpc 调用会抛出某种特定错误？有没有办法在本地强制触发它，好对服务做单元测试？\n\ngetinfo 有一个新字段，显示任何警报消息或其他本会显示在状态栏上的错误。\nrpc 方法返回一个 json-rpc 错误，错误描述为 \"Safe mode: \" 加上警报指定的附加文本。\n我为你加了 \"-testsafemode\" 开关。SVN rev 145。\n这些东西很新，仍可能变动。\n我刚发现 http://www.bitcoin.org/wiki/doku.php?id=man_page，上面没有 -disablesafemode 的条目。兴许该加上！另外其他几个譬如 -4way 也应该加上。\n\n很多开关是故意不写文档的，譬如功能还在建设中、名字还没定，或者只是不打算随发布出去的测试代码。\n-4way 最终应该被自动检测取代。"},{"id":2598,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"BioMike","date":"2010-08-25","ts":"2010-08-25T18:23:45Z","url":"https://bitcointalk.org/index.php?topic=898.msg11162#msg11162","zh":"<blockquote><p>这正是让我觉得反对者不了解状况的地方。它「关停不了整个网络」。</p></blockquote><p>我从来没反对过这个改动/想法，只是问问是否可能、能到什么程度。\n了解情况有什么不对吗？</p>","zhText":"这正是让我觉得反对者不了解状况的地方。它「关停不了整个网络」。\n\n我从来没反对过这个改动/想法，只是问问是否可能、能到什么程度。\n了解情况有什么不对吗？"},{"id":2600,"sid":null,"sat":0,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"FreeMoney","date":"2010-08-25","ts":"2010-08-25T22:48:01Z","url":"https://bitcointalk.org/index.php?topic=898.msg11204#msg11204","zh":"<p>好，我不担心了。</p>","zhText":"好，我不担心了。"},{"id":2601,"sid":418,"sat":1,"tid":201,"tt":"Development of alert system","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-26","ts":"2010-08-26T00:08:12Z","url":"https://bitcointalk.org/index.php?topic=898.msg11219#msg11219","zh":"<blockquote><p>我从来没反对过这个改动/想法，只是问问是否可能、能到什么程度。\n了解情况有什么不对吗？</p></blockquote><p>抱歉，你的帖子确实是提问，不是声明。</p>","zhText":"我从来没反对过这个改动/想法，只是问问是否可能、能到什么程度。\n了解情况有什么不对吗？\n\n抱歉，你的帖子确实是提问，不是声明。"},{"id":2603,"sid":419,"sat":1,"tid":202,"tt":"RFC: remove DB_PRIVATE flag","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-26","ts":"2010-08-26T00:33:28Z","url":"https://bitcointalk.org/index.php?topic=920.msg11224#msg11224","zh":"<p>你能更详细说说移除 DB_PRIVATE 会带来什么吗？</p><p>我不记得当初用 DB_PRIVATE 是不是有特定理由，还是只是从示例代码里抄的标志。移除 DB_PRIVATE 能让其他进程安全地同时打开数据库吗？倘若是副作用可接受，那可能是个改进。它会不会因为必须立刻写出每次改动或做其他协调而大幅降低性能？那时会有额外的锁定或协调文件吗？还有什么会变？你可以通过给初始区块下载计时来测试有无 DB_PRIVATE 的差别，最好用 -connect 连本机，排除网络因素。</p><p>显然，DB_PRIVATE 并没有做到你期望它做的事，也就是阻止其他进程打开数据库。它照样放行，只是别人真打开时会把事情搞砸。另一个选项，倘若有什么办法的话，是让它锁定数据库文件，让其他进程无法访问。</p>","zhText":"你能更详细说说移除 DB_PRIVATE 会带来什么吗？\n我不记得当初用 DB_PRIVATE 是不是有特定理由，还是只是从示例代码里抄的标志。移除 DB_PRIVATE 能让其他进程安全地同时打开数据库吗？倘若是副作用可接受，那可能是个改进。它会不会因为必须立刻写出每次改动或做其他协调而大幅降低性能？那时会有额外的锁定或协调文件吗？还有什么会变？你可以通过给初始区块下载计时来测试有无 DB_PRIVATE 的差别，最好用 -connect 连本机，排除网络因素。\n显然，DB_PRIVATE 并没有做到你期望它做的事，也就是阻止其他进程打开数据库。它照样放行，只是别人真打开时会把事情搞砸。另一个选项，倘若有什么办法的话，是让它锁定数据库文件，让其他进程无法访问。"},{"id":2604,"sid":null,"sat":0,"tid":202,"tt":"RFC: remove DB_PRIVATE flag","src":"Bitcointalk","author":"jgarzik","date":"2010-08-26","ts":"2010-08-26T00:39:24Z","url":"https://bitcointalk.org/index.php?topic=920.msg11225#msg11225","zh":"<p>DB_PRIVATE 通过假定只有一个进程会访问 db4 数据库来启用一些优化。尤其是，这个标志让 db4 使用 pthreads 风格的互斥锁，而非笨重的操作系统级 flock 和共享内存。参考：<a href=\"http://pybsddb.sourceforge.net/api_c/env_open.html\">DB_ENV->open 文档</a>。</p><p>总的动机是：假定 (a) DB_PRIVATE 被移除、(b) bitcoin 正确使用 db4 事务，db4 数据库就可以在与 bitcoin 客户端并行的情况下被安全访问。倘若代码架构得当，db4 事务甚至可以包裹非 db4 数据，譬如 blk0001.dat。</p>","zhText":"DB_PRIVATE 通过假定只有一个进程会访问 db4 数据库来启用一些优化。尤其是，这个标志让 db4 使用 pthreads 风格的互斥锁，而非笨重的操作系统级 flock 和共享内存。参考：DB_ENV->open 文档。\n总的动机是：假定 (a) DB_PRIVATE 被移除、(b) bitcoin 正确使用 db4 事务，db4 数据库就可以在与 bitcoin 客户端并行的情况下被安全访问。倘若代码架构得当，db4 事务甚至可以包裹非 db4 数据，譬如 blk0001.dat。"},{"id":2558,"sid":420,"sat":1,"tid":199,"tt":"Need a post writing up some things users should know","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-26","ts":"2010-08-26T00:44:05Z","url":"https://bitcointalk.org/index.php?topic=873.msg11227#msg11227","zh":"<p>在有时间好好写代码解决之前，任何备份流程/办法都只是权宜之计。在代码到位之前，我们可以先用文字缓解局面。</p><p>备份的主要改进会是预生成的密钥池，以及加载时重新扫描、从区块历史里捞出被漏掉的交易。那样一次备份就能管用很久。</p>","zhText":"在有时间好好写代码解决之前，任何备份流程/办法都只是权宜之计。在代码到位之前，我们可以先用文字缓解局面。\n备份的主要改进会是预生成的密钥池，以及加载时重新扫描、从区块历史里捞出被漏掉的交易。那样一次备份就能管用很久。"},{"id":2608,"sid":421,"sat":1,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-26","ts":"2010-08-26T00:57:40Z","url":"https://bitcointalk.org/index.php?topic=921.msg11228#msg11228","zh":"<p>我本来在另一个主题里发，这里再重复一遍，这个主题看起来更切题。</p><p>备份的主要改进会是预生成的密钥池，以及加载时重新扫描、从区块历史里捞出被漏掉的交易。那样一次备份就能管用很久。</p><p>我正准备发和你一样的想法，nelisky。</p><p>加一个 json-rpc 命令如何：锁定钱包、刷盘、把 wallet.dat 拷贝到你指定的位置，然后解锁？这比密钥池工程量小，兴许可以先做。</p><p>拷贝文件最简单的可移植方法是什么？Boost 里有现成的吗？</p><p>该叫什么名字？兴许：\nbackupwallet <destination></p>","zhText":"我本来在另一个主题里发，这里再重复一遍，这个主题看起来更切题。\n备份的主要改进会是预生成的密钥池，以及加载时重新扫描、从区块历史里捞出被漏掉的交易。那样一次备份就能管用很久。\n我正准备发和你一样的想法，nelisky。\n加一个 json-rpc 命令如何：锁定钱包、刷盘、把 wallet.dat 拷贝到你指定的位置，然后解锁？这比密钥池工程量小，兴许可以先做。\n拷贝文件最简单的可移植方法是什么？Boost 里有现成的吗？\n该叫什么名字？兴许：\nbackupwallet"},{"id":2609,"sid":null,"sat":0,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"nelisky","date":"2010-08-26","ts":"2010-08-26T01:21:57Z","url":"https://bitcointalk.org/index.php?topic=921.msg11232#msg11232","zh":"<blockquote><p>我本来在另一个主题里发，这里再重复一遍，这个主题看起来更切题。</p><p>备份的主要改进会是预生成的密钥池，以及加载时重新扫描、从区块历史里捞出被漏掉的交易。那样一次备份就能管用很久。</p><p>我正准备发和你一样的想法，nelisky。</p></blockquote><p>是的，我看到了你的另一个帖子，我很喜欢地址池的主意，但等这些地址都用完了，我们仍然需要一种轻松备份的办法，不是吗？我知道地址空间巨大，但可能存在每天要生成上千个地址的应用。</p><blockquote><p>加一个 json-rpc 命令如何：锁定钱包、刷盘、把 wallet.dat 拷贝到你指定的位置，然后解锁？这比密钥池工程量小，兴许可以先做。</p><p>拷贝文件最简单的可移植方法是什么？Boost 里有现成的吗？</p><p>该叫什么名字？兴许：\nbackupwallet <destination></p></blockquote><p>各方面都很好，名字和实现思路都赞。</p><p>至于文件拷贝，为什么要加深 boost 依赖？我就希望核心库依赖越少越好。C++ 里直接用标准文件流不就行了？类似 <a href=\"http://www.dreamincode.net/code/snippet2306.htm\">http://www.dreamincode.net/code/snippet2306.htm</a> 这种（随手 Google 的，没试过但看着没错）。</p><p>锦上添花的话，为什么不加一个触发器，钱包一有变动就拷贝？嗯，这依赖文件锁才能正确工作，而我记得 Windows 上文件锁很糟。我已经很久没在那儿写代码了。</p>","zhText":"我本来在另一个主题里发，这里再重复一遍，这个主题看起来更切题。\n备份的主要改进会是预生成的密钥池，以及加载时重新扫描、从区块历史里捞出被漏掉的交易。那样一次备份就能管用很久。\n我正准备发和你一样的想法，nelisky。\n\n是的，我看到了你的另一个帖子，我很喜欢地址池的主意，但等这些地址都用完了，我们仍然需要一种轻松备份的办法，不是吗？我知道地址空间巨大，但可能存在每天要生成上千个地址的应用。\n加一个 json-rpc 命令如何：锁定钱包、刷盘、把 wallet.dat 拷贝到你指定的位置，然后解锁？这比密钥池工程量小，兴许可以先做。\n拷贝文件最简单的可移植方法是什么？Boost 里有现成的吗？\n该叫什么名字？兴许：\nbackupwallet \n\n各方面都很好，名字和实现思路都赞。\n至于文件拷贝，为什么要加深 boost 依赖？我就希望核心库依赖越少越好。C++ 里直接用标准文件流不就行了？类似 http://www.dreamincode.net/code/snippet2306.htm 这种（随手 Google 的，没试过但看着没错）。\n锦上添花的话，为什么不加一个触发器，钱包一有变动就拷贝？嗯，这依赖文件锁才能正确工作，而我记得 Windows 上文件锁很糟。我已经很久没在那儿写代码了。"},{"id":2610,"sid":null,"sat":0,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"jgarzik","date":"2010-08-26","ts":"2010-08-26T01:42:26Z","url":"https://bitcointalk.org/index.php?topic=921.msg11235#msg11235","zh":"<blockquote><p>拷贝文件最简单的可移植方法是什么？Boost 里可有现成的？</p></blockquote><p>mmap(2) + memcpy(3)？Boost::Iostreams 已然有一个 mapped_file Source。</p><blockquote><p>该叫什么名字？兴许：\nbackupwallet <destination></p></blockquote><p>听起来相当有用！</p>","zhText":"拷贝文件最简单的可移植方法是什么？Boost 里可有现成的？\n\nmmap(2) + memcpy(3)？Boost::Iostreams 已然有一个 mapped_file Source。\n该叫什么名字？兴许：\nbackupwallet \n\n听起来相当有用！"},{"id":2622,"sid":null,"sat":0,"tid":205,"tt":"Gentoo Linux Ebuild","src":"Bitcointalk","author":"mizerydearia","date":"2010-08-26","ts":"2010-08-26T06:10:29Z","url":"https://bitcointalk.org/index.php?topic=930.msg11252#msg11252","zh":"<p><del><a href=\"http://github.com/mizerydearia/bitcoin_gentoo_ebuild\">bitcoin ebuilds for gentoo linux</a></p><p>2011.03.02: bitcoin-git-9999 ebuild 已更新</del> 已过时</p><p>到 Freenode 的 #bitcoin-gentoo 看最新消息</p>","zhText":"bitcoin ebuilds for gentoo linux\n2011.03.02: bitcoin-git-9999 ebuild 已更新 已过时\n到 Freenode 的 #bitcoin-gentoo 看最新消息"},{"id":2623,"sid":422,"sat":1,"tid":205,"tt":"Gentoo Linux Ebuild","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T00:49:43Z","url":"https://bitcointalk.org/index.php?topic=930.msg11342#msg11342","zh":"<p>试试 -datadir=</p><p>上次我试 $(shell /usr/bin/wx-config) 时，立刻有人为它引发的构建问题叫起来。当时并无时间调查。</p><p>$(shell /usr/bin/wx-config) 的一个问题是，它会抓到碰巧装在系统上的任何版本（wx 2.8）、任何配置（非 UTF-8）的 wxWidgets。-lwx_gtk2ud-2.9 仅仅匹配正确的配置。倘若 wxWidgets 是用错误配置构建的，它就会失败。</p><blockquote><p>我记得在 freenode 的 #wxwidgets 聊天时，那边的开发者亦搞不懂为什么要用它。</p></blockquote><p>他们有说为什么搞不懂吗？</p><blockquote><p>这是因为在我的系统上路径是 /usr/include/wx-2.9/wx/wx.h</p></blockquote><p>为什么在那儿？是操作系统带的，还是你自己构建的？倘若你构建的，我并不明白它为什么会把自己装到别的地方。</p><p>wxWidgets 2.9 最终有 Debian 包了吗？</p><p>兴许我们该这样：</p><p>INCLUDEPATHS= \\\n -I\"/usr/local/include/wx-2.9\" \\\n -I\"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9\" \\\n -I\"/usr/include/wx-2.9\" \\\n -I\"/usr/lib/wx/include/gtk2-unicode-debug-static-2.9\"</p><p>再说一遍，这些路径能确保仅仅用 2.9，遇到 2.8 会失败。</p><p>wxWidgets 2.8 有 ANSI 和 UTF-16 两种，对我们都是错的。它相当诱人，因它作为包唾手可得；在我们开始把 2.9 硬编码进 makefile 之前，很多人都被它折磨过。</p>","zhText":"试试 -datadir=\n上次我试 $(shell /usr/bin/wx-config) 时，立刻有人为它引发的构建问题叫起来。当时并无时间调查。\n$(shell /usr/bin/wx-config) 的一个问题是，它会抓到碰巧装在系统上的任何版本（wx 2.8）、任何配置（非 UTF-8）的 wxWidgets。-lwx_gtk2ud-2.9 仅仅匹配正确的配置。倘若 wxWidgets 是用错误配置构建的，它就会失败。\n我记得在 freenode 的 #wxwidgets 聊天时，那边的开发者亦搞不懂为什么要用它。\n\n他们有说为什么搞不懂吗？\n这是因为在我的系统上路径是 /usr/include/wx-2.9/wx/wx.h\n\n为什么在那儿？是操作系统带的，还是你自己构建的？倘若你构建的，我并不明白它为什么会把自己装到别的地方。\nwxWidgets 2.9 最终有 Debian 包了吗？\n兴许我们该这样：\nINCLUDEPATHS= \\\n -I\"/usr/local/include/wx-2.9\" \\\n -I\"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9\" \\\n -I\"/usr/include/wx-2.9\" \\\n -I\"/usr/lib/wx/include/gtk2-unicode-debug-static-2.9\"\n再说一遍，这些路径能确保仅仅用 2.9，遇到 2.8 会失败。\nwxWidgets 2.8 有 ANSI 和 UTF-16 两种，对我们都是错的。它相当诱人，因它作为包唾手可得；在我们开始把 2.9 硬编码进 makefile 之前，很多人都被它折磨过。"},{"id":2611,"sid":423,"sat":1,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T01:13:42Z","url":"https://bitcointalk.org/index.php?topic=921.msg11345#msg11345","zh":"<p>倘若你把它读进内存再写出去，在内存紧张的情况下恐会失败。</p><p>我在找类似 copyfile(const char* from, const char* to) 或 copyfile(path from, path to) 的东西，最好 Boost 里就有。倘若你能帮我找到，我就更有可能动手实现它。</p><blockquote><p>至于文件拷贝，为什么要加深 boost 依赖？我就希望核心库依赖越少越好。</p></blockquote><p>我们需要 Boost 来做 JSON 和十来件原本依赖 wxWidgets 的事。Boost 是优秀的、可移植的库，我们不该躲着它。</p>","zhText":"倘若你把它读进内存再写出去，在内存紧张的情况下恐会失败。\n我在找类似 copyfile(const char* from, const char* to) 或 copyfile(path from, path to) 的东西，最好 Boost 里就有。倘若你能帮我找到，我就更有可能动手实现它。\n至于文件拷贝，为什么要加深 boost 依赖？我就希望核心库依赖越少越好。\n\n我们需要 Boost 来做 JSON 和十来件原本依赖 wxWidgets 的事。Boost 是优秀的、可移植的库，我们不该躲着它。"},{"id":2612,"sid":null,"sat":0,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"nelisky","date":"2010-08-27","ts":"2010-08-27T01:21:09Z","url":"https://bitcointalk.org/index.php?topic=921.msg11346#msg11346","zh":"<blockquote><p>倘若你把它读进内存再写出去，在内存紧张的情况下恐会失败。</p><p>我在找类似 copyfile(const char* from, const char* to) 或 copyfile(path from, path to) 的东西，最好 Boost 里就有。倘若你能帮我找到，我就更有可能动手实现它。</p><p>我们需要 Boost 来做 JSON 和十来件原本依赖 wxWidgets 的事。Boost 是优秀的、可移植的库，我们不该躲着它。</p></blockquote><p>好吧，那我提到的那个代码片段里朴素的标准 fstream 用法有什么问题？我觉得简单最好。</p><p>然而倘若你已然在用 boost::filesystem 的功能，直接用它里面的 copy_file 就行。我不过是觉得，若非为了别的用途已然引入了它，那有点杀鸡用牛刀。</p>","zhText":"倘若你把它读进内存再写出去，在内存紧张的情况下恐会失败。\n我在找类似 copyfile(const char* from, const char* to) 或 copyfile(path from, path to) 的东西，最好 Boost 里就有。倘若你能帮我找到，我就更有可能动手实现它。\n我们需要 Boost 来做 JSON 和十来件原本依赖 wxWidgets 的事。Boost 是优秀的、可移植的库，我们不该躲着它。\n\n好吧，那我提到的那个代码片段里朴素的标准 fstream 用法有什么问题？我觉得简单最好。\n然而倘若你已然在用 boost::filesystem 的功能，直接用它里面的 copy_file 就行。我不过是觉得，若非为了别的用途已然引入了它，那有点杀鸡用牛刀。"},{"id":2613,"sid":null,"sat":0,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"jgarzik","date":"2010-08-27","ts":"2010-08-27T02:14:19Z","url":"https://bitcointalk.org/index.php?topic=921.msg11348#msg11348","zh":"<blockquote><p>倘若你把它读进内存再写出去，在内存紧张的情况下恐会失败。</p></blockquote><p>我想你误会 mmap 是干什么的了？mmap / CreateFileMapping 并不会把文件读进堆内存：<a href=\"http://en.wikipedia.org/wiki/Mmap\">http://en.wikipedia.org/wiki/Mmap</a></p>","zhText":"倘若你把它读进内存再写出去，在内存紧张的情况下恐会失败。\n\n我想你误会 mmap 是干什么的了？mmap / CreateFileMapping 并不会把文件读进堆内存：http://en.wikipedia.org/wiki/Mmap"},{"id":2614,"sid":424,"sat":1,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T02:54:07Z","url":"https://bitcointalk.org/index.php?topic=921.msg11350#msg11350","zh":"<p>我怀疑 Windows 上并无 mmap(2)。我宁可调用现成的文件拷贝函数，也不想自己写一个再测试。</p><blockquote><p>然而倘若你已然在用 boost::filesystem 的功能，直接用它里面的 copy_file 就行。我不过是觉得，若非为了别的用途已然引入了它，那有点杀鸡用牛刀。</p></blockquote><p>谢谢。我原以为里面某处会有。</p><p>我们已然在十几个地方用了 boost::filesystem。这并非新增依赖。它给了我们大量可移植的东西，否则每个系统都得写 #ifdef，到处测试。</p>","zhText":"我怀疑 Windows 上并无 mmap(2)。我宁可调用现成的文件拷贝函数，也不想自己写一个再测试。\n然而倘若你已然在用 boost::filesystem 的功能，直接用它里面的 copy_file 就行。我不过是觉得，若非为了别的用途已然引入了它，那有点杀鸡用牛刀。\n\n谢谢。我原以为里面某处会有。\n我们已然在十几个地方用了 boost::filesystem。这并非新增依赖。它给了我们大量可移植的东西，否则每个系统都得写 #ifdef，到处测试。"},{"id":2615,"sid":null,"sat":0,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"jgarzik","date":"2010-08-27","ts":"2010-08-27T03:42:25Z","url":"https://bitcointalk.org/index.php?topic=921.msg11352#msg11352","zh":"<blockquote><p>我怀疑 Windows 上并无 mmap(2)。</p></blockquote><p>mmap 的 Windows 版本在你回复的那条消息里提到了：CreateFileMapping。</p><p>在我更早的消息里，我说过怎么从 boost 用它：Boost::Iostreams 已然有一个 mapped_file Source。</p>","zhText":"我怀疑 Windows 上并无 mmap(2)。\n\nmmap 的 Windows 版本在你回复的那条消息里提到了：CreateFileMapping。\n在我更早的消息里，我说过怎么从 boost 用它：Boost::Iostreams 已然有一个 mapped_file Source。"},{"id":2620,"sid":null,"sat":0,"tid":204,"tt":"New web service: obtain dump of bitcoin block NNNN","src":"Bitcointalk","author":"nelisky","date":"2010-08-27","ts":"2010-08-27T11:04:34Z","url":"https://bitcointalk.org/index.php?topic=928.msg11380#msg11380","zh":"<p>太棒了！多谢。</p>","zhText":"太棒了！多谢。"},{"id":2616,"sid":425,"sat":1,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T15:47:57Z","url":"https://bitcointalk.org/index.php?topic=921.msg11399#msg11399","zh":"<p>抱歉，我最近太忙，只能扫一眼消息，尚且跟不上。</p><p>我们要尽可能避免 Windows API 调用。它们通常要传 6-8 个参数、要大量测试才能用对，做件简单事得写一页代码。</p><p>我通常躲着 iostreams。似乎我太常撞上它的限制。他们 90 年代把 C++ 流标准搞得一团糟，真遗憾，用对了的话流可以相当强大有用。在 rpc.cpp 里用它最终恐也会被证明是个错误。</p><p>说到底，我宁可调用现成的文件拷贝函数，也不想自己写一个再测试。</p>","zhText":"抱歉，我最近太忙，只能扫一眼消息，尚且跟不上。\n我们要尽可能避免 Windows API 调用。它们通常要传 6-8 个参数、要大量测试才能用对，做件简单事得写一页代码。\n我通常躲着 iostreams。似乎我太常撞上它的限制。他们 90 年代把 C++ 流标准搞得一团糟，真遗憾，用对了的话流可以相当强大有用。在 rpc.cpp 里用它最终恐也会被证明是个错误。\n说到底，我宁可调用现成的文件拷贝函数，也不想自己写一个再测试。"},{"id":2621,"sid":426,"sat":1,"tid":204,"tt":"New web service: obtain dump of bitcoin block NNNN","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T16:13:16Z","url":"https://bitcointalk.org/index.php?topic=928.msg11400#msg11400","zh":"<p>把它当成每天产出多少区块的倒置柱状图挺有意思。目标是每天 144 个区块。</p>","zhText":"把它当成每天产出多少区块的倒置柱状图挺有意思。目标是每天 144 个区块。"},{"id":2513,"sid":427,"sat":1,"tid":192,"tt":"Bitcoins are most like shares of common stock","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T16:39:26Z","url":"https://bitcointalk.org/index.php?topic=845.msg11403#msg11403","zh":"<p>Bitcoin 没有分红，也没有未来分红的可能，因而不像股票。</p><p>更像收藏品或大宗商品。</p>","zhText":"Bitcoin 没有分红，也没有未来分红的可能，因而不像股票。\n更像收藏品或大宗商品。"},{"id":1677,"sid":428,"sat":1,"tid":137,"tt":"Bitcoin does NOT violate Mises' Regression Theorem","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T17:32:07Z","url":"https://bitcointalk.org/index.php?topic=583.msg11405#msg11405","zh":"<p>作为一个思想实验，设想有一种金属，稀缺如黄金，却具备以下特性：\n- 颜色是无聊的灰色\n- 不是电的良导体\n- 不特别坚固，但也不柔韧、不易锻造\n- 对任何实用或装饰用途都没有价值</p><p>以及一项特殊而神奇的属性：\n- 可以通过通信信道传输</p><p>倘若它出于任何原因获得了哪怕一点价值，那么任何想远距离转移财富的人都可以买入一些、传输出去、再让接收方卖出。</p><p>兴许它可以像你暗示的那样循环地获得初始价值：人们预见到它在交换中的潜在用处。（我肯定想要一些）兴许收藏者、随便什么理由都能点燃它。</p><p>我认为传统的货币资格标准是在这样一个假设下写成的：世界上有太多稀缺物在互相竞争，一个自带内在价值自动启动机制的东西必将胜过没有内在价值的东西。但倘若世界上没有任何具有内在价值的东西可用作货币，只有稀缺而无内在价值，我想人们仍然会选用某样东西。</p><p>（我在这里用「稀缺」一词，仅指潜在供给有限）</p>","zhText":"作为一个思想实验，设想有一种金属，稀缺如黄金，却具备以下特性：\n- 颜色是无聊的灰色\n- 不是电的良导体\n- 不特别坚固，但也不柔韧、不易锻造\n- 对任何实用或装饰用途都没有价值\n以及一项特殊而神奇的属性：\n- 可以通过通信信道传输\n倘若它出于任何原因获得了哪怕一点价值，那么任何想远距离转移财富的人都可以买入一些、传输出去、再让接收方卖出。\n兴许它可以像你暗示的那样循环地获得初始价值：人们预见到它在交换中的潜在用处。（我肯定想要一些）兴许收藏者、随便什么理由都能点燃它。\n我认为传统的货币资格标准是在这样一个假设下写成的：世界上有太多稀缺物在互相竞争，一个自带内在价值自动启动机制的东西必将胜过没有内在价值的东西。但倘若世界上没有任何具有内在价值的东西可用作货币，只有稀缺而无内在价值，我想人们仍然会选用某样东西。\n（我在这里用「稀缺」一词，仅指潜在供给有限）"},{"id":2624,"sid":429,"sat":1,"tid":206,"tt":"Version 0.3.11 with upgrade alerts","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-27","ts":"2010-08-27T21:54:12Z","url":"https://bitcointalk.org/index.php?topic=941.msg11439#msg11439","zh":"<p>0.3.11 版现已发布。</p><p>变更：\n- 加载时对 blk*.dat 做了一些检查\n- -4way 代码用 -march=amdfam10 编译，略微提速\n- 时钟偏差太大时警告\n- 警告/错误/警报现在也能在 getinfo 命令里看到\n- 警报系统</p><p>警报系统能够在状态栏显示通知，当你运行的版本需要为重要安全更新而升级时提醒你。</p><p>收到警报后，你的节点还可能进入安全模式，禁用以下 json-rpc 命令（自动化网站在用），在你有机会升级之前保护它不丢钱：\n sendtoaddress\n getbalance\n getreceivedbyaddress\n getreceivedbylabel\n listreceivedbyaddress\n listreceivedbylabel</p><p>倘若你判定是虚惊一场、想赌一把，可以用 -disablesafemode 开关重新启用它们。</p><p>这是一项重要的安全改进。对很大一类可能的问题，它能在问题被发现时立即警告所有人，防止他们基于坏信息行动。</p><p>节点收到警报后继续运行、不会停止铸币，因而旧版本可能仍会尝试分叉，然而警报系统能够确保用户被警告不要对分叉里的任何东西采取行动。</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.11/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.11/</a></p>","zhText":"0.3.11 版现已发布。\n变更：\n- 加载时对 blk*.dat 做了一些检查\n- -4way 代码用 -march=amdfam10 编译，略微提速\n- 时钟偏差太大时警告\n- 警告/错误/警报现在也能在 getinfo 命令里看到\n- 警报系统\n警报系统能够在状态栏显示通知，当你运行的版本需要为重要安全更新而升级时提醒你。\n收到警报后，你的节点还可能进入安全模式，禁用以下 json-rpc 命令（自动化网站在用），在你有机会升级之前保护它不丢钱：\n sendtoaddress\n getbalance\n getreceivedbyaddress\n getreceivedbylabel\n listreceivedbyaddress\n listreceivedbylabel\n倘若你判定是虚惊一场、想赌一把，可以用 -disablesafemode 开关重新启用它们。\n这是一项重要的安全改进。对很大一类可能的问题，它能在问题被发现时立即警告所有人，防止他们基于坏信息行动。\n节点收到警报后继续运行、不会停止铸币，因而旧版本可能仍会尝试分叉，然而警报系统能够确保用户被警告不要对分叉里的任何东西采取行动。\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.11/"},{"id":2390,"sid":null,"sat":0,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"tcatm","date":"2010-08-28","ts":"2010-08-28T00:27:08Z","url":"https://bitcointalk.org/index.php?topic=820.msg11467#msg11467","zh":"<p>我刚刚审了一遍源码，本来有几个进一步优化的想法，结果发现 4way 有部分是坏的：</p><p>来自 main.cpp：</p><pre><code>for (int j = 0; j &lt; NPAR; j++)\n                {\n                    if (thash[7][j] == 0)\n                    {\n                        for (int i = 0; i &lt; sizeof(hash)/4; i++)\n                          ((unsigned int*)&amp;hash)[i] = thash[i][j];\n                        pblock->nNonce = ByteReverse(tmp.block.nNonce + j);\n                    }\n                }</code></pre><p>这段代码只会处理 32 个哈希中的一个（即满足 thash[7] == 0 的最后一个），哪怕可能有不止一个哈希是正确的。</p><p>类似这样的东西应该能修好它，但在更高难度下不安全。另外，我不确定字节序是否应该反转。有人能审一下吗？</p><pre><code>unsigned int min_hash = ~1;\n       for (int j = 0; j &lt; NPAR; j++)\n                {\n                    if (thash[7][j] == 0)\n                    {\n                        if(thash[6][j] &lt; min_hash) {\n                          min_hash = thash[6][j];\n                          for (int i = 0; i &lt; sizeof(hash)/4; i++)\n                            ((unsigned int*)&amp;hash)[i] = thash[i][j];\n                          pblock->nNonce = ByteReverse(tmp.block.nNonce + j);\n                        }\n                    }\n                }</code></pre>","zhText":"我刚刚审了一遍源码，本来有几个进一步优化的想法，结果发现 4way 有部分是坏的：\n来自 main.cpp：\nfor (int j = 0; j < NPAR; j++)\n {\n if (thash[7][j] == 0)\n {\n for (int i = 0; i < sizeof(hash)/4; i++)\n ((unsigned int*)&hash)[i] = thash[i][j];\n pblock->nNonce = ByteReverse(tmp.block.nNonce + j);\n }\n }这段代码只会处理 32 个哈希中的一个（即满足 thash[7] == 0 的最后一个），哪怕可能有不止一个哈希是正确的。\n类似这样的东西应该能修好它，但在更高难度下不安全。另外，我不确定字节序是否应该反转。有人能审一下吗？\nunsigned int min_hash = ~1;\n for (int j = 0; j < NPAR; j++)\n {\n if (thash[7][j] == 0)\n {\n if(thash[6][j] < min_hash) {\n min_hash = thash[6][j];\n for (int i = 0; i < sizeof(hash)/4; i++)\n ((unsigned int*)&hash)[i] = thash[i][j];\n pblock->nNonce = ByteReverse(tmp.block.nNonce + j);\n }\n }\n }"},{"id":2629,"sid":null,"sat":0,"tid":206,"tt":"Version 0.3.11 with upgrade alerts","src":"Bitcointalk","author":"pavelo","date":"2010-08-28","ts":"2010-08-28T07:36:07Z","url":"https://bitcointalk.org/index.php?topic=941.msg11481#msg11481","zh":"<p>我记得，可以用某个 gcc __attribute__ 按函数指定 -march。如此，仅仅相关函数被优化，倘若用户不指定 -4way，其他一切照旧。</p>","zhText":"我记得，可以用某个 gcc __attribute__ 按函数指定 -march。如此，仅仅相关函数被优化，倘若用户不指定 -4way，其他一切照旧。"},{"id":2634,"sid":null,"sat":0,"tid":206,"tt":"Version 0.3.11 with upgrade alerts","src":"Bitcointalk","author":"torservers","date":"2010-08-28","ts":"2010-08-28T13:00:37Z","url":"https://bitcointalk.org/index.php?topic=941.msg11499#msg11499","zh":"<p>「关于」对话框仍然显示 0.3.10.1 beta。</p>","zhText":"「关于」对话框仍然显示 0.3.10.1 beta。"},{"id":2391,"sid":430,"sat":1,"tid":184,"tt":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-28","ts":"2010-08-28T14:27:15Z","url":"https://bitcointalk.org/index.php?topic=820.msg11503#msg11503","zh":"<p>这个简化是有意的。134,217,728 个情况里才会出现一次多个 thash[7]=0。它只让它慢了 0.0000007%。</p>","zhText":"这个简化是有意的。134,217,728 个情况里才会出现一次多个 thash[7]=0。它只让它慢了 0.0000007%。"},{"id":2635,"sid":431,"sat":1,"tid":206,"tt":"Version 0.3.11 with upgrade alerts","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-28","ts":"2010-08-28T14:54:04Z","url":"https://bitcointalk.org/index.php?topic=941.msg11505#msg11505","zh":"<blockquote><p>「关于」对话框仍然显示 0.3.10.1 beta。</p></blockquote><p>什么操作系统？我跑了 Windows 版和 64 位 Linux 版，检查了关于对话框。</p><p>Mac 版还是 0.3.10.1。</p><blockquote><p>我记得，可以用某个 gcc __attribute__ 按函数指定 -march。如此，仅仅相关函数被优化，倘若用户不指定 -4way，其他一切照旧。</p></blockquote><p>我已更新首帖，说得更具体了。仅仅 -4way 代码是如此编译的。</p>","zhText":"「关于」对话框仍然显示 0.3.10.1 beta。\n\n什么操作系统？我跑了 Windows 版和 64 位 Linux 版，检查了关于对话框。\nMac 版还是 0.3.10.1。\n我记得，可以用某个 gcc __attribute__ 按函数指定 -march。如此，仅仅相关函数被优化，倘若用户不指定 -4way，其他一切照旧。\n\n我已更新首帖，说得更具体了。仅仅 -4way 代码是如此编译的。"},{"id":2338,"sid":null,"sat":0,"tid":183,"tt":"Big endinan code problems","src":"Bitcointalk","author":"Gespenster","date":"2010-08-29","ts":"2010-08-29T17:18:16Z","url":"https://bitcointalk.org/index.php?topic=816.msg11595#msg11595","zh":"<blockquote><p>之前和之后分别是什么？有好几处 ByteReverse 调用，nonce 和时间戳那边可能也需要移除。</p><p>事实上你兴许可以完全去掉那个临时区块头，它存在的意义主要就是等着被 ByteReverse。</p></blockquote><p>我觉得它们全都可以去掉，因为 SHA-256 期望它的字节流是大端序。我认为最快的验证办法，是在大端机和小端机上同时用调试器跑这段代码，逐步比对结果。</p>","zhText":"之前和之后分别是什么？有好几处 ByteReverse 调用，nonce 和时间戳那边可能也需要移除。\n事实上你兴许可以完全去掉那个临时区块头，它存在的意义主要就是等着被 ByteReverse。\n\n我觉得它们全都可以去掉，因为 SHA-256 期望它的字节流是大端序。我认为最快的验证办法，是在大端机和小端机上同时用调试器跑这段代码，逐步比对结果。"},{"id":2339,"sid":432,"sat":1,"tid":183,"tt":"Big endinan code problems","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-08-29","ts":"2010-08-29T22:14:36Z","url":"https://bitcointalk.org/index.php?topic=816.msg11610#msg11610","zh":"<p>这份代码从头到尾都假定小端序，写作时就打定主意永远不移植到大端平台。每一个经网络发送的整数都得做字节交换，代码里还有几十处其他地方要改。不值得为此让源码膨胀。</p><p>反正大端序也正在被淘汰。</p>","zhText":"这份代码从头到尾都假定小端序，写作时就打定主意永远不移植到大端平台。每一个经网络发送的整数都得做字节交换，代码里还有几十处其他地方要改。不值得为此让源码膨胀。\n反正大端序也正在被淘汰。"},{"id":2664,"sid":null,"sat":0,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"MoonShadow","date":"2010-08-31","ts":"2010-08-31T13:27:53Z","url":"https://bitcointalk.org/index.php?topic=960.msg11774#msg11774","zh":"<p>倘若你的系统时钟偏差太大，你创建的区块会被拒绝，你的客户端亦会拒绝任何它认为是以未来日期创建的区块。</p>","zhText":"倘若你的系统时钟偏差太大，你创建的区块会被拒绝，你的客户端亦会拒绝任何它认为是以未来日期创建的区块。"},{"id":2679,"sid":null,"sat":0,"tid":209,"tt":"CryptoPP Assertion Error","src":"Bitcointalk","author":"denger","date":"2010-09-05","ts":"2010-09-05T13:50:55Z","url":"https://bitcointalk.org/index.php?topic=967.msg12052#msg12052","zh":"<p>忘了说，仅仅当我尝试用 sox 代理跑 bitcoind 时才会看到这个错误：</p><p>~/bitcoind -proxy=127.0.0.1:10000 -gen -server</p><p>我的代理是 ssh 通道：</p><p>ssh -n -D localhost:10000 <a href=\"mailto:someone@somewhere.com\">someone@somewhere.com</a> \"bash -c \\\"while true; do sleep 100; done\\\"\" &</p>","zhText":"忘了说，仅仅当我尝试用 sox 代理跑 bitcoind 时才会看到这个错误：\n~/bitcoind -proxy=127.0.0.1:10000 -gen -server\n我的代理是 ssh 通道：\nssh -n -D localhost:10000 someone@somewhere.com \"bash -c \\\"while true; do sleep 100; done\\\"\" &"},{"id":2680,"sid":433,"sat":1,"tid":209,"tt":"CryptoPP Assertion Error","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-05","ts":"2010-09-05T23:25:32Z","url":"https://bitcointalk.org/index.php?topic=967.msg12062#msg12062","zh":"<p>你大抵可以直接注释掉这一行\ncryptopp/secblock.h:187\n  //assert(false);</p><p>好用了告诉我，并留意是否内存泄漏。</p><p>它看起来是一个模板类，用来确保派生类定义自己的 allocate 和 deallocate 版本。倘若那真是问题所在、尚且一路带进了发布版，那就太怪了。大抵是虚惊一场。</p>","zhText":"你大抵可以直接注释掉这一行\ncryptopp/secblock.h:187\n //assert(false);\n好用了告诉我，并留意是否内存泄漏。\n它看起来是一个模板类，用来确保派生类定义自己的 allocate 和 deallocate 版本。倘若那真是问题所在、尚且一路带进了发布版，那就太怪了。大抵是虚惊一场。"},{"id":2665,"sid":434,"sat":1,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-05","ts":"2010-09-05T23:36:20Z","url":"https://bitcointalk.org/index.php?topic=960.msg12063#msg12063","zh":"<p>这条错误消息有没有更好的写法建议，让下一个人不那么容易困惑？</p><p>它想告诉用户时钟不对，需要校正。</p><p>它依赖 3 个时间源：\n1) 系统时钟\n2) 其他节点，倘若在系统时钟一小时以内\n倘若它们互相矛盾，那么\n3) 用户（请用户修正系统时钟）</p><p>我考虑过 NTP，然而这个方案更安全。</p>","zhText":"这条错误消息有没有更好的写法建议，让下一个人不那么容易困惑？\n它想告诉用户时钟不对，需要校正。\n它依赖 3 个时间源：\n1) 系统时钟\n2) 其他节点，倘若在系统时钟一小时以内\n倘若它们互相矛盾，那么\n3) 用户（请用户修正系统时钟）\n我考虑过 NTP，然而这个方案更安全。"},{"id":2668,"sid":null,"sat":0,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"Insti","date":"2010-09-06","ts":"2010-09-06T12:51:37Z","url":"https://bitcointalk.org/index.php?topic=960.msg12101#msg12101","zh":"<blockquote><p>这条错误消息有没有更好的写法建议，让下一个人不那么容易困惑？</p></blockquote><p>\"请检查你电脑的日期和时间是否正确。倘若你的时钟不对，Bitcoin 将无法正常工作。\"</p>","zhText":"这条错误消息有没有更好的写法建议，让下一个人不那么容易困惑？\n\n\"请检查你电脑的日期和时间是否正确。倘若你的时钟不对，Bitcoin 将无法正常工作。\""},{"id":2670,"sid":null,"sat":0,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"BioMike","date":"2010-09-06","ts":"2010-09-06T17:25:18Z","url":"https://bitcointalk.org/index.php?topic=960.msg12118#msg12118","zh":"<blockquote><p>我并不认为 bitcoin 客户端理应往自己身上塞额外的 NTP 客户端功能。</p></blockquote><p>千万别，NTP 干得相当好。别让其他服务去改时钟（这亦适用于 bitcoin）。合适的工具干合适的活！</p>","zhText":"我并不认为 bitcoin 客户端理应往自己身上塞额外的 NTP 客户端功能。\n\n千万别，NTP 干得相当好。别让其他服务去改时钟（这亦适用于 bitcoin）。合适的工具干合适的活！"},{"id":2682,"sid":null,"sat":0,"tid":210,"tt":"HTTP status codes from the JSON-RPC api","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-09-06","ts":"2010-09-06T19:18:04Z","url":"https://bitcointalk.org/index.php?topic=969.msg12125#msg12125","zh":"<p>对这个改动，现在有意见就提，否则就永远保持沉默……中本聪会把这项功能放进 Bitcoin 的下一个版本（0.3.12）。</p><p>倘若你用 JSON-RPC api，你理应检查你的错误条件处理代码；再说一遍，变化是：error 成员将是一个 Object（带 'code' 和 'message' 字段）而不是 String，而且 method-not-found 的 HTTP 状态码可能是 404 而不是 500。</p>","zhText":"对这个改动，现在有意见就提，否则就永远保持沉默……中本聪会把这项功能放进 Bitcoin 的下一个版本（0.3.12）。\n倘若你用 JSON-RPC api，你理应检查你的错误条件处理代码；再说一遍，变化是：error 成员将是一个 Object（带 'code' 和 'message' 字段）而不是 String，而且 method-not-found 的 HTTP 状态码可能是 404 而不是 500。"},{"id":2683,"sid":435,"sat":1,"tid":210,"tt":"HTTP status codes from the JSON-RPC api","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-06","ts":"2010-09-06T21:21:21Z","url":"https://bitcointalk.org/index.php?topic=969.msg12130#msg12130","zh":"<p>这在 SVN rev 147 里。</p><p>如此更标准。虽然 json-rpc 1.0 并无规定错误对象的格式，然而它规定了错误务必是<i>对象</i>而不是字符串或其他值，因而我们得改过来才算正确。code/message 成员在后来的 json-rpc 规范里已然成为标准。</p><p>倘若你有检查 error 并期望字符串的代码，你需要改它。出错时，error 成员现在是对象而不是字符串。</p><p>SVN rev 147 里尚有：\n- 命令行 json-rpc 把错误码作为退出码返回。unix 上退出码只能是 0-255，因而是 abs(code)%256。\n- 另一个帖子里讨论过的 \"backupwallet <destination>\" 命令。它会锁定钱包并拷贝，因而你能确定拿到的是正确的副本。</p>","zhText":"这在 SVN rev 147 里。\n如此更标准。虽然 json-rpc 1.0 并无规定错误对象的格式，然而它规定了错误务必是对象而不是字符串或其他值，因而我们得改过来才算正确。code/message 成员在后来的 json-rpc 规范里已然成为标准。\n倘若你有检查 error 并期望字符串的代码，你需要改它。出错时，error 成员现在是对象而不是字符串。\nSVN rev 147 里尚有：\n- 命令行 json-rpc 把错误码作为退出码返回。unix 上退出码只能是 0-255，因而是 abs(code)%256。\n- 另一个帖子里讨论过的 \"backupwallet \" 命令。它会锁定钱包并拷贝，因而你能确定拿到的是正确的副本。"},{"id":2671,"sid":436,"sat":1,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-06","ts":"2010-09-06T21:41:06Z","url":"https://bitcointalk.org/index.php?topic=960.msg12132#msg12132","zh":"<blockquote><p>\"请检查你电脑的日期和时间是否正确。倘若你的时钟不对，Bitcoin 将无法正常工作。\"</p></blockquote><p>谢谢。</p>","zhText":"\"请检查你电脑的日期和时间是否正确。倘若你的时钟不对，Bitcoin 将无法正常工作。\"\n\n谢谢。"},{"id":2704,"sid":null,"sat":0,"tid":212,"tt":"bitcoind as daemon in OSX","src":"Bitcointalk","author":"nelisky","date":"2010-09-06","ts":"2010-09-06T21:44:06Z","url":"https://bitcointalk.org/index.php?topic=992.msg12133#msg12133","zh":"<p>我从一开始就遇到这个，好在我是在 OSX 上开发、进而部署到 linux，因而不过是个小麻烦。</p><p>无论如何，在我的系统上（OSX 10.6）bitcoind 进程并不会自我守护化，加不加 -daemon 都不会。我能够用 '&' 或 ctrl-z bg 把它放到后台，它就正常工作。</p>","zhText":"我从一开始就遇到这个，好在我是在 OSX 上开发、进而部署到 linux，因而不过是个小麻烦。\n无论如何，在我的系统上（OSX 10.6）bitcoind 进程并不会自我守护化，加不加 -daemon 都不会。我能够用 '&' 或 ctrl-z bg 把它放到后台，它就正常工作。"},{"id":2617,"sid":437,"sat":1,"tid":203,"tt":"auto backing up of wallet.dat","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-06","ts":"2010-09-06T21:45:10Z","url":"https://bitcointalk.org/index.php?topic=921.msg12134#msg12134","zh":"<p>rpc backupwallet <destination> 已进 SVN rev 147。</p>","zhText":"rpc backupwallet 已进 SVN rev 147。"},{"id":2705,"sid":438,"sat":1,"tid":212,"tt":"bitcoind as daemon in OSX","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-06","ts":"2010-09-06T21:52:45Z","url":"https://bitcointalk.org/index.php?topic=992.msg12135#msg12135","zh":"<p>你能编译吗？</p><p>试着把 init.cpp 第 78 行从：\n#ifdef __WXGTK__</p><p>改成：\n#ifndef __WXMSW__</p><p>倘若好用了，我就改源码。它理应能行。</p>","zhText":"你能编译吗？\n试着把 init.cpp 第 78 行从：\n#ifdef __WXGTK__\n改成：\n#ifndef __WXMSW__\n倘若好用了，我就改源码。它理应能行。"},{"id":2709,"sid":null,"sat":0,"tid":213,"tt":"Always pay transaction fee?","src":"Bitcointalk","author":"FreeMoney","date":"2010-09-07","ts":"2010-09-07T08:04:49Z","url":"https://bitcointalk.org/index.php?topic=994.msg12155#msg12155","zh":"<p>现在的正确费率小到我认为收它的心理损害远大于收益。就像那个破地方，我买了 9 美元的餐，它还要为一小杯水收我两毛五。我知道按下按钮亦有成本，然而现在我反正不喜欢你了。</p><p>我预计要过很久才会有高比例的节点对普通交易收手续费。这意味着多数用户不会附手续费，愿意平均等 4 个区块或多久都行。因而在相当长的时间里，收手续费仅仅会意味着不把交易放进区块，这会让 bitcoin 略微失色、使用量略微下降，进而略微压低币价。因而任何持有币的人出于自利都理应免费纳入交易。</p><p>Jgarzik，你对一笔普通交易的资源成本有估计吗？</p>","zhText":"现在的正确费率小到我认为收它的心理损害远大于收益。就像那个破地方，我买了 9 美元的餐，它还要为一小杯水收我两毛五。我知道按下按钮亦有成本，然而现在我反正不喜欢你了。\n我预计要过很久才会有高比例的节点对普通交易收手续费。这意味着多数用户不会附手续费，愿意平均等 4 个区块或多久都行。因而在相当长的时间里，收手续费仅仅会意味着不把交易放进区块，这会让 bitcoin 略微失色、使用量略微下降，进而略微压低币价。因而任何持有币的人出于自利都理应免费纳入交易。\nJgarzik，你对一笔普通交易的资源成本有估计吗？"},{"id":2710,"sid":439,"sat":1,"tid":213,"tt":"Always pay transaction fee?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-07","ts":"2010-09-07T16:32:21Z","url":"https://bitcointalk.org/index.php?topic=994.msg12168#msg12168","zh":"<p>另一个选项是降低每个区块允许的免费交易数量，超过之后才要求手续费。节点每个区块仅仅接受一定 KB 的免费交易，超过后就开始要求至少 0.01 交易费。</p><p>这个门槛理应比现在更低。</p><p>我认为门槛永远不该是 0。我们理应始终允许至少一些免费交易。</p>","zhText":"另一个选项是降低每个区块允许的免费交易数量，超过之后才要求手续费。节点每个区块仅仅接受一定 KB 的免费交易，超过后就开始要求至少 0.01 交易费。\n这个门槛理应比现在更低。\n我认为门槛永远不该是 0。我们理应始终允许至少一些免费交易。"},{"id":2716,"sid":440,"sat":1,"tid":214,"tt":"Version 0.3.12","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-07","ts":"2010-09-07T19:17:55Z","url":"https://bitcointalk.org/index.php?topic=999.msg12181#msg12181","zh":"<p>0.3.12 版现已发布。</p><p>特性：\n- json-rpc 错误返回更标准的错误对象。（感谢 Gavin Andresen）\n- json-rpc 命令行返回退出码。\n- json-rpc \"backupwallet\" 命令。\n- 倘若收到的消息引发异常，会恢复并继续。其他节点本不该能引发异常，以前亦从未发生过，然而倘若被发现某种引发异常的途径，这能防止它被用来搞停网络节点。</p><p>倘若你的 json-rpc 代码检查错误字符串的内容，你需要改成期望 {\"code\":<number>,\"message\":<string>} 形式的错误对象，这是标准。见这个帖子：\n<a href=\"http://bitcointalk.org/index.php?topic=969.0\">http://bitcointalk.org/index.php?topic=969.0</a></p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.12/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.12/</a></p>","zhText":"0.3.12 版现已发布。\n特性：\n- json-rpc 错误返回更标准的错误对象。（感谢 Gavin Andresen）\n- json-rpc 命令行返回退出码。\n- json-rpc \"backupwallet\" 命令。\n- 倘若收到的消息引发异常，会恢复并继续。其他节点本不该能引发异常，以前亦从未发生过，然而倘若被发现某种引发异常的途径，这能防止它被用来搞停网络节点。\n倘若你的 json-rpc 代码检查错误字符串的内容，你需要改成期望 {\"code\":,\"message\":} 形式的错误对象，这是标准。见这个帖子：\nhttp://bitcointalk.org/index.php?topic=969.0\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.12/"},{"id":2657,"sid":null,"sat":0,"tid":207,"tt":"Bitcoin Blogger: Is It Better To Buy Or Generate Bitcoins?","src":"Bitcointalk","author":"BitLex","date":"2010-09-07","ts":"2010-09-07T20:10:54Z","url":"https://bitcointalk.org/index.php?topic=955.msg12189#msg12189","zh":"<blockquote><p>有意思的是 CUDA 帖子里那些用显卡跑出 25,000 khash/sec 的人的报告。倘若他们的功耗低于 1000 瓦（亦理应如此），单算电费的话，铸币又能盈利了。</p><p>年底难度到 1000。</p></blockquote><p>我刚对最新发布的 cuda 客户端做了个小测试，结果如下</p><p>AMD X3 @2.8ghz\n->官方客户端\n~3800khs ~150Watt</p><p>GTX260\n->puddinpop 的 cuda 客户端\n~33000khs ~200Watt</p><p>CPU 挖矿对我来说已然不盈利了，上个难度调整时我已然关掉了大部分生成器，\n显卡挖矿确实又能盈利了，\n不过我真不想信任一个会自作主张摆弄我余额的客户端，因而我不用它。\n希望有朝一日能看到开源客户端。</p><p>不过 1000 那个你是开玩笑吧？\n年底？\n兴许这个周末就到。</p>","zhText":"有意思的是 CUDA 帖子里那些用显卡跑出 25,000 khash/sec 的人的报告。倘若他们的功耗低于 1000 瓦（亦理应如此），单算电费的话，铸币又能盈利了。\n年底难度到 1000。\n\n我刚对最新发布的 cuda 客户端做了个小测试，结果如下\nAMD X3 @2.8ghz\n->官方客户端\n~3800khs ~150Watt\nGTX260\n->puddinpop 的 cuda 客户端\n~33000khs ~200Watt\nCPU 挖矿对我来说已然不盈利了，上个难度调整时我已然关掉了大部分生成器，\n显卡挖矿确实又能盈利了，\n不过我真不想信任一个会自作主张摆弄我余额的客户端，因而我不用它。\n希望有朝一日能看到开源客户端。\n不过 1000 那个你是开玩笑吧？\n年底？\n兴许这个周末就到。"},{"id":2713,"sid":null,"sat":0,"tid":213,"tt":"Always pay transaction fee?","src":"Bitcointalk","author":"theymos","date":"2010-09-07","ts":"2010-09-07T23:29:33Z","url":"https://bitcointalk.org/index.php?topic=994.msg12199#msg12199","zh":"<blockquote><p>现在的门槛是多少？客户端怎么提前知道要为此付费？</p></blockquote><p><a href=\"http://www.bitcoin.org/wiki/doku.php?id=transaction_fee\">http://www.bitcoin.org/wiki/doku.php?id=transaction_fee</a></p>","zhText":"现在的门槛是多少？客户端怎么提前知道要为此付费？\n\nhttp://www.bitcoin.org/wiki/doku.php?id=transaction_fee"},{"id":2717,"sid":null,"sat":0,"tid":214,"tt":"Version 0.3.12","src":"Bitcointalk","author":"theymos","date":"2010-09-08","ts":"2010-09-08T00:25:04Z","url":"https://bitcointalk.org/index.php?topic=999.msg12202#msg12202","zh":"<p>禁止「非标准」交易这项规定是干什么的？</p><pre><code>main.cpp:506\n// Rather not work on nonstandard transactions\nif (GetSigOpCount() > 2 || ::GetSerializeSize(*this, SER_NETWORK) &lt; 100)\n  return error(\"AcceptToMemoryPool() : nonstandard transaction\");</code></pre><p>\"GetSigOpCount\" 都统计什么？\"GetSerializeSize\" 又度量什么？</p><p>网络对它是「轻度」执行的：</p><pre><code>main.cpp:1425\n// Check that it's not full of nonstandard transactions\nif (nHeight > 79400 &amp;&amp; GetSigOpCount() > MAX_BLOCK_SIGOPS)\n  return error(\"AcceptBlock() : too many nonstandard transactions\");</code></pre>","zhText":"禁止「非标准」交易这项规定是干什么的？\nmain.cpp:506\n// Rather not work on nonstandard transactions\nif (GetSigOpCount() > 2 || ::GetSerializeSize(*this, SER_NETWORK) < 100)\n return error(\"AcceptToMemoryPool() : nonstandard transaction\");\"GetSigOpCount\" 都统计什么？\"GetSerializeSize\" 又度量什么？\n网络对它是「轻度」执行的：\nmain.cpp:1425\n// Check that it's not full of nonstandard transactions\nif (nHeight > 79400 && GetSigOpCount() > MAX_BLOCK_SIGOPS)\n return error(\"AcceptBlock() : too many nonstandard transactions\");"},{"id":2661,"sid":null,"sat":0,"tid":207,"tt":"Bitcoin Blogger: Is It Better To Buy Or Generate Bitcoins?","src":"Bitcointalk","author":"Immanuel","date":"2010-09-08","ts":"2010-09-08T13:51:52Z","url":"https://bitcointalk.org/index.php?topic=955.msg12229#msg12229","zh":"<blockquote><p>理应有人搞一个 newegg 联盟计划，推荐最好的比特币铸币装备。</p></blockquote><p>等 GPU 客户端完善了，我要买一块 GTX 465，配一颗便宜的双核 CPU、512MB 内存和一个机箱 CPU 套装；然后把它塞进壁橱，让它替我印一两年比特币。约莫 500 美元的投资，有耐心加上精细的能耗管理，兴许能盈利。</p>","zhText":"理应有人搞一个 newegg 联盟计划，推荐最好的比特币铸币装备。\n\n等 GPU 客户端完善了，我要买一块 GTX 465，配一颗便宜的双核 CPU、512MB 内存和一个机箱 CPU 套装；然后把它塞进壁橱，让它替我印一两年比特币。约莫 500 美元的投资，有耐心加上精细的能耗管理，兴许能盈利。"},{"id":2714,"sid":441,"sat":1,"tid":213,"tt":"Always pay transaction fee?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-08","ts":"2010-09-08T17:30:14Z","url":"https://bitcointalk.org/index.php?topic=994.msg12237#msg12237","zh":"<p>目前，付不付手续费由 -paytxfee 开关手动控制。让软件自动检查最近区块的大小、判断是否该付手续费，相当容易。我们离触及门槛尚且远得很，暂时不需要。而且先看看手动控制的效果如何，本来就是个好主意。</p><p>就算到了门槛也没什么大不了。免费交易不过是要花更久才进区块。</p><p>我粗略统计了 74000-78000 附近的 4000 个区块。这不包括区块奖励交易：</p><p>平均每区块 2 笔交易、每小时 17 笔、每天 400 笔。</p><p>平均每区块交易字节 428 字节，即每笔交易 214 字节。</p><p>现在的门槛是每区块 200KB，约合每区块 1000 笔交易。我认为理应降到每区块 50KB。那仍然是平均每区块交易量的 100 多倍。</p><p>门槛将来很容易调整。到时候我们能够决定调高。先保持较低作为断路器、按需调高是好主意。倘若现在就触及门槛，那几乎肯定是某种洪水攻击而不是真实使用。保持较低门槛有助于在这种情况下限制浪费的磁盘空间。</p>","zhText":"目前，付不付手续费由 -paytxfee 开关手动控制。让软件自动检查最近区块的大小、判断是否该付手续费，相当容易。我们离触及门槛尚且远得很，暂时不需要。而且先看看手动控制的效果如何，本来就是个好主意。\n就算到了门槛也没什么大不了。免费交易不过是要花更久才进区块。\n我粗略统计了 74000-78000 附近的 4000 个区块。这不包括区块奖励交易：\n平均每区块 2 笔交易、每小时 17 笔、每天 400 笔。\n平均每区块交易字节 428 字节，即每笔交易 214 字节。\n现在的门槛是每区块 200KB，约合每区块 1000 笔交易。我认为理应降到每区块 50KB。那仍然是平均每区块交易量的 100 多倍。\n门槛将来很容易调整。到时候我们能够决定调高。先保持较低作为断路器、按需调高是好主意。倘若现在就触及门槛，那几乎肯定是某种洪水攻击而不是真实使用。保持较低门槛有助于在这种情况下限制浪费的磁盘空间。"},{"id":2718,"sid":442,"sat":1,"tid":214,"tt":"Version 0.3.12","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-08","ts":"2010-09-08T18:06:04Z","url":"https://bitcointalk.org/index.php?topic=999.msg12240#msg12240","zh":"<p>Bitcoin 客户端目前仅仅创建和识别匹配两种模板之一的交易。</p><p>那是一些快速测试，粗略检查交易是否符合标准交易所符合的某些总体指标。节点仅仅会着手把这些交易加进自己的区块。</p><p>将来倘若我们给现有的 2 类交易增加更多模板，我们能够修改「不愿处理非标准交易」的测试来接受它们。</p>","zhText":"Bitcoin 客户端目前仅仅创建和识别匹配两种模板之一的交易。\n那是一些快速测试，粗略检查交易是否符合标准交易所符合的某些总体指标。节点仅仅会着手把这些交易加进自己的区块。\n将来倘若我们给现有的 2 类交易增加更多模板，我们能够修改「不愿处理非标准交易」的测试来接受它们。"},{"id":2662,"sid":443,"sat":1,"tid":207,"tt":"Bitcoin Blogger: Is It Better To Buy Or Generate Bitcoins?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-08","ts":"2010-09-08T20:27:39Z","url":"https://bitcointalk.org/index.php?topic=955.msg12248#msg12248","zh":"<blockquote><p>AMD X3 @2.8ghz\n->官方客户端\n~3800khs ~150Watt</p></blockquote><p>你试过 -4way 吗？</p><blockquote><p>一台 24 核机器我能期待多少哈希？我有一台四核在跑 4,300 hashes-per-second，因而我估计 24 核机器能以 25,000 hashes-per-second 挖比特币。</p></blockquote><p>AMD Phenom（理应是 4 核）CPU 用 -4way 能跑到约 11,000khps，提速约 100%。24 核理应能到 66,000khps。AMD 是最佳选择，因它的 SSE2 实现最好。（亦可能不过是因为 tcatm 手头是 AMD，把代码针对它做了优化）</p><p>事情太多，我还没来得及把 -4way 做成自动的。眼下你仍然得手动开。\n<a href=\"http://bitcointalk.org/index.php?topic=820.0\">http://bitcointalk.org/index.php?topic=820.0</a></p>","zhText":"AMD X3 @2.8ghz\n->官方客户端\n~3800khs ~150Watt\n\n你试过 -4way 吗？\n一台 24 核机器我能期待多少哈希？我有一台四核在跑 4,300 hashes-per-second，因而我估计 24 核机器能以 25,000 hashes-per-second 挖比特币。\n\nAMD Phenom（理应是 4 核）CPU 用 -4way 能跑到约 11,000khps，提速约 100%。24 核理应能到 66,000khps。AMD 是最佳选择，因它的 SSE2 实现最好。（亦可能不过是因为 tcatm 手头是 AMD，把代码针对它做了优化）\n事情太多，我还没来得及把 -4way 做成自动的。眼下你仍然得手动开。\nhttp://bitcointalk.org/index.php?topic=820.0"},{"id":2719,"sid":444,"sat":1,"tid":215,"tt":"Auto-detect for 128-bit 4-way SSE2","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-09","ts":"2010-09-09T01:04:05Z","url":"https://bitcointalk.org/index.php?topic=1007.msg12262#msg12262","zh":"<p>SVN rev 150 加了一些代码，尝试自动检测是否使用 4 路 SSE2。我们需要它，因它仅仅在拥有 128 位 SSE2 的某些较新 CPU 上更快，而在 64 位 SSE2 的 CPU 上不是。</p><p>它用 CPUID 指令获取 CPU 品牌、family、型号和 stepping。这是容易的部分。难的是知道拿型号怎么办。我并未找到任何按 family、model、stepping 排列的 CPU 对照表，仅仅能依据看到的零散报告。</p><p>这是我最终的结果：</p><pre><code>// We need Intel Nehalem or AMD K10 or better for 128bit SSE2\n  // Nehalem = i3/i5/i7 and some Xeon\n  // K10 = Opterons with 4 or more cores, Phenom, Phenom II, Athlon II\n  //  Intel Core i5  family 6, model 26 or 30\n  //  Intel Core i7  family 6, model 26 or 30\n  //  Intel Core i3  family 6, model 37\n  //  AMD Phenom    family 16, model 10\n  bool fUseSSE2 = ((fIntel &amp;&amp; nFamily * 10000 + nModel >=  60026) ||\n                   (fAMD   &amp;&amp; nFamily * 10000 + nModel >= 160010));</code></pre><p>我见过 AMD CPU 一些零散不一致的型号数字，因而不确定这能不能覆盖所有够格的 AMD。</p><p>倘若判断错了，你仍然能够用 -4way 或 -4way=0 覆盖。</p><p>它会把检测结果打进 debug.log。搜 CPUID。</p><p>仅仅 GCC 构建时才启用。</p>","zhText":"SVN rev 150 加了一些代码，尝试自动检测是否使用 4 路 SSE2。我们需要它，因它仅仅在拥有 128 位 SSE2 的某些较新 CPU 上更快，而在 64 位 SSE2 的 CPU 上不是。\n它用 CPUID 指令获取 CPU 品牌、family、型号和 stepping。这是容易的部分。难的是知道拿型号怎么办。我并未找到任何按 family、model、stepping 排列的 CPU 对照表，仅仅能依据看到的零散报告。\n这是我最终的结果：\n// We need Intel Nehalem or AMD K10 or better for 128bit SSE2\n // Nehalem = i3/i5/i7 and some Xeon\n // K10 = Opterons with 4 or more cores, Phenom, Phenom II, Athlon II\n // Intel Core i5 family 6, model 26 or 30\n // Intel Core i7 family 6, model 26 or 30\n // Intel Core i3 family 6, model 37\n // AMD Phenom family 16, model 10\n bool fUseSSE2 = ((fIntel && nFamily * 10000 + nModel >= 60026) ||\n (fAMD && nFamily * 10000 + nModel >= 160010));我见过 AMD CPU 一些零散不一致的型号数字，因而不确定这能不能覆盖所有够格的 AMD。\n倘若判断错了，你仍然能够用 -4way 或 -4way=0 覆盖。\n它会把检测结果打进 debug.log。搜 CPUID。\n仅仅 GCC 构建时才启用。"},{"id":2723,"sid":null,"sat":0,"tid":215,"tt":"Auto-detect for 128-bit 4-way SSE2","src":"Bitcointalk","author":"teknohog","date":"2010-09-09","ts":"2010-09-09T19:32:05Z","url":"https://bitcointalk.org/index.php?topic=1007.msg12336#msg12336","zh":"<p>由于 CallCPUID 函数包含 x86 汇编，它破坏了其他架构上的构建。我把 main.cpp 第 2770 行改成了</p><p>#if defined(__GNUC__) && defined(CRYPTOPP_X86_ASM_AVAILABLE)</p><p>好歹让它重新编译通过，至少在 ARM 上。</p>","zhText":"由于 CallCPUID 函数包含 x86 汇编，它破坏了其他架构上的构建。我把 main.cpp 第 2770 行改成了\n#if defined(__GNUC__) && defined(CRYPTOPP_X86_ASM_AVAILABLE)\n好歹让它重新编译通过，至少在 ARM 上。"},{"id":2730,"sid":null,"sat":0,"tid":216,"tt":"Won't let me send coins because it requires a transaction fee?","src":"Bitcointalk","author":"TTBit","date":"2010-09-09","ts":"2010-09-09T20:10:24Z","url":"https://bitcointalk.org/index.php?topic=1013.msg12339#msg12339","zh":"<p>舍入误差？你从水龙头收过比特币，然后给别人付 0.0495 btc？做过小数点后第 3 位或更细的操作吗？我在 TAABL 有 0.01 因舍入误差取不出来。不过，+50.00 就是 +50.00，那个理应取得出来。</p><p>新生成的区块约莫要 100 个区块才确认。我想你等了。</p>","zhText":"舍入误差？你从水龙头收过比特币，然后给别人付 0.0495 btc？做过小数点后第 3 位或更细的操作吗？我在 TAABL 有 0.01 因舍入误差取不出来。不过，+50.00 就是 +50.00，那个理应取得出来。\n新生成的区块约莫要 100 个区块才确认。我想你等了。"},{"id":2731,"sid":445,"sat":1,"tid":216,"tt":"Won't let me send coins because it requires a transaction fee?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-10","ts":"2010-09-10T00:23:24Z","url":"https://bitcointalk.org/index.php?topic=1013.msg12341#msg12341","zh":"<p>出事的那个是什么版本？发布版，还是自己构建的？什么操作系统？</p><p>你是用 IP 发的还是用 Bitcoin 地址发的？</p><p>你发 49.99 时，它有没有提示你付 0.01 手续费？</p><p>GetMinFee 有过一个改动，然而我看不出它怎么会导致这个。它仅仅在区块变得巨大时才开始生效。</p><p>区块数不同的原因，是 0.3.11 里把显示数字减了 1，因那样更合理。</p>","zhText":"出事的那个是什么版本？发布版，还是自己构建的？什么操作系统？\n你是用 IP 发的还是用 Bitcoin 地址发的？\n你发 49.99 时，它有没有提示你付 0.01 手续费？\nGetMinFee 有过一个改动，然而我看不出它怎么会导致这个。它仅仅在区块变得巨大时才开始生效。\n区块数不同的原因，是 0.3.11 里把显示数字减了 1，因那样更合理。"},{"id":2732,"sid":446,"sat":1,"tid":216,"tt":"Won't let me send coins because it requires a transaction fee?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-10","ts":"2010-09-10T00:46:37Z","url":"https://bitcointalk.org/index.php?topic=1013.msg12342#msg12342","zh":"<p>我猜我知道发生了什么。双击那笔铸币交易。它里面很可能带了一笔低于 0.01 的交易费。</p><p>有人一直在付 0.00000010 的交易费。我觉得用 -paytxfee 你连这个都设不出来，得改代码才行。你生成的区块价值 50.00000010，因而当你试图把整笔发出去时，只剩 0.00000010 当找零，这就触发了灰尘垃圾的 0.01 交易费。</p><p>除了这个边角案例它通常无害。我理应给 CreateTransaction 加个特例来处理这种情况。</p>","zhText":"我猜我知道发生了什么。双击那笔铸币交易。它里面很可能带了一笔低于 0.01 的交易费。\n有人一直在付 0.00000010 的交易费。我觉得用 -paytxfee 你连这个都设不出来，得改代码才行。你生成的区块价值 50.00000010，因而当你试图把整笔发出去时，只剩 0.00000010 当找零，这就触发了灰尘垃圾的 0.01 交易费。\n除了这个边角案例它通常无害。我理应给 CreateTransaction 加个特例来处理这种情况。"},{"id":2725,"sid":null,"sat":0,"tid":215,"tt":"Auto-detect for 128-bit 4-way SSE2","src":"Bitcointalk","author":"nimnul","date":"2010-09-10","ts":"2010-09-10T12:34:11Z","url":"https://bitcointalk.org/index.php?topic=1007.msg12361#msg12361","zh":"<p>> 理应有一个通向哈希处理器的接口（甚至每种实现一个完整的矿工）</p><p>+1。万一有人手里有 FPGA 或其他专用加速器呢。</p>","zhText":"> 理应有一个通向哈希处理器的接口（甚至每种实现一个完整的矿工）\n+1。万一有人手里有 FPGA 或其他专用加速器呢。"},{"id":2734,"sid":null,"sat":0,"tid":216,"tt":"Won't let me send coins because it requires a transaction fee?","src":"Bitcointalk","author":"theymos","date":"2010-09-10","ts":"2010-09-10T14:31:12Z","url":"https://bitcointalk.org/index.php?topic=1013.msg12364#msg12364","zh":"<blockquote><p>因而我在里面丢了一分钱。那么我的问题是：那笔交易费是进了下一个区块？还是进了我生成的那个之前的区块？</p></blockquote><p>你并未付交易费。你余额里有 .01000010；你不过是花不出去。倘若你把整个 0.01000010 发到另一个地址（不能拆开），网络会接受它，然而 Bitcoin 界面不支持这么高的精度。</p><blockquote><p>既然手续费适用于低于 0.01 的交易，加一笔手续费就理应至少 0.01 对吧？</p></blockquote><p>那不是网络强制的。交易费不是「输出」，因而不受「灰尘垃圾」限制约束。</p><blockquote><p>看起来我也付了手续费。为什么会这样？是一个区块交易太多、金额来自多个小额钱包（然而客户端理应能看到一个能满足整笔交易的钱包，对吧）？还是别的什么？</p></blockquote><p>你收到了 0.01 的手续费。你并未付手续费。</p>","zhText":"因而我在里面丢了一分钱。那么我的问题是：那笔交易费是进了下一个区块？还是进了我生成的那个之前的区块？\n\n你并未付交易费。你余额里有 .01000010；你不过是花不出去。倘若你把整个 0.01000010 发到另一个地址（不能拆开），网络会接受它，然而 Bitcoin 界面不支持这么高的精度。\n既然手续费适用于低于 0.01 的交易，加一笔手续费就理应至少 0.01 对吧？\n\n那不是网络强制的。交易费不是「输出」，因而不受「灰尘垃圾」限制约束。\n看起来我也付了手续费。为什么会这样？是一个区块交易太多、金额来自多个小额钱包（然而客户端理应能看到一个能满足整笔交易的钱包，对吧）？还是别的什么？\n\n你收到了 0.01 的手续费。你并未付手续费。"},{"id":2735,"sid":447,"sat":1,"tid":216,"tt":"Won't let me send coins because it requires a transaction fee?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-10","ts":"2010-09-10T17:12:33Z","url":"https://bitcointalk.org/index.php?topic=1013.msg12368#msg12368","zh":"<p>修复在 SVN rev 151。</p><p>下次升级后，你就能把卡住的 0.01（实际是 0.01000010）发出去了。</p>","zhText":"修复在 SVN rev 151。\n下次升级后，你就能把卡住的 0.01（实际是 0.01000010）发出去了。"},{"id":2726,"sid":448,"sat":1,"tid":215,"tt":"Auto-detect for 128-bit 4-way SSE2","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-10","ts":"2010-09-10T18:11:06Z","url":"https://bitcointalk.org/index.php?topic=1007.msg12372#msg12372","zh":"<blockquote><p>由于 CallCPUID 函数包含 x86 汇编，它破坏了其他架构上的构建。我把 main.cpp 第 2770 行改成了</p><p>#if defined(__GNUC__) && defined(CRYPTOPP_X86_ASM_AVAILABLE)</p><p>好歹让它重新编译通过，至少在 ARM 上。</p></blockquote><p>已加入 SVN rev 152</p>","zhText":"由于 CallCPUID 函数包含 x86 汇编，它破坏了其他架构上的构建。我把 main.cpp 第 2770 行改成了\n#if defined(__GNUC__) && defined(CRYPTOPP_X86_ASM_AVAILABLE)\n好歹让它重新编译通过，至少在 ARM 上。\n\n已加入 SVN rev 152"},{"id":2702,"sid":null,"sat":0,"tid":211,"tt":"Switch to GPL","src":"Bitcointalk","author":"BioMike","date":"2010-09-11","ts":"2010-09-11T14:24:07Z","url":"https://bitcointalk.org/index.php?topic=989.msg12414#msg12414","zh":"<p>呃……老兄，bitcoin 就是开源的。MIT 许可证就是开源许可证。\n这里并无闭源、专有软件或 DRM。</p>","zhText":"呃……老兄，bitcoin 就是开源的。MIT 许可证就是开源许可证。\n这里并无闭源、专有软件或 DRM。"},{"id":1691,"sid":449,"sat":1,"tid":139,"tt":"Running on a port other than 8333","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-12","ts":"2010-09-12T17:40:20Z","url":"https://bitcointalk.org/index.php?topic=589.msg12483#msg12483","zh":"<blockquote><p><del>另外，Bitcoin 是不是以独占方式打开 BerkeleyDB，从而不需要文件锁？</del>不是——我自己测过了。</p></blockquote><p>有没有办法以独占方式打开 BerkeleyDB？</p><p>DB_PRIVATE 是两头不讨好的东西。它并不独占，但一旦另一个进程试图同时访问，它就会把事情搞砸。</p><p>我在 rev 153 里去掉了 DB_PRIVATE 标志。</p>","zhText":"另外，Bitcoin 是不是以独占方式打开 BerkeleyDB，从而不需要文件锁？不是——我自己测过了。\n\n有没有办法以独占方式打开 BerkeleyDB？\nDB_PRIVATE 是两头不讨好的东西。它并不独占，但一旦另一个进程试图同时访问，它就会把事情搞砸。\n我在 rev 153 里去掉了 DB_PRIVATE 标志。"},{"id":2605,"sid":450,"sat":1,"tid":202,"tt":"RFC: remove DB_PRIVATE flag","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-12","ts":"2010-09-12T18:00:39Z","url":"https://bitcointalk.org/index.php?topic=920.msg12484#msg12484","zh":"<p>在 rev 153 里试着去掉了 DB_PRIVATE。我们得留意有什么不同。</p><p>至少在 Windows 上，它会创建 __db.001 到 __db.006 六个文件，大小从 24K 到 4MB。退出时不删除它们，就那么留在原地。</p><p>文档说它使用内存映射文件。我猜它们与数据库文件有同样的文件权限，所以同样的用户访问限制也适用。</p><p>Windows 私有局域网下载 78500 个区块的测试：\n用 DB_PRIVATE     20 分 51 秒\n不用 DB_PRIVATE   20 分 51 秒</p><p>我没料到两者会完全一样。</p>","zhText":"在 rev 153 里试着去掉了 DB_PRIVATE。我们得留意有什么不同。\n至少在 Windows 上，它会创建 __db.001 到 __db.006 六个文件，大小从 24K 到 4MB。退出时不删除它们，就那么留在原地。\n文档说它使用内存映射文件。我猜它们与数据库文件有同样的文件权限，所以同样的用户访问限制也适用。\nWindows 私有局域网下载 78500 个区块的测试：\n用 DB_PRIVATE 20 分 51 秒\n不用 DB_PRIVATE 20 分 51 秒\n我没料到两者会完全一样。"},{"id":2703,"sid":451,"sat":1,"tid":211,"tt":"Switch to GPL","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-12","ts":"2010-09-12T19:24:53Z","url":"https://bitcointalk.org/index.php?topic=989.msg12494#msg12494","zh":"<p>倘若唯一的库是闭源的，那就立个项目做一个开源的。</p><p>倘若唯一的库是 GPL 的，那就立个项目做一个非 GPL 的。</p><p>倘若最好的库是 MIT、Boost、new-BSD 或公有领域的，那我们就不用重写了。</p><p>我不怀疑 GPL 对操作系统是个好许可证，尤其因非 GPL 代码被允许与操作系统对接。对较小的项目，我认为对闭源接管的恐惧被夸大了。</p>","zhText":"倘若唯一的库是闭源的，那就立个项目做一个开源的。\n倘若唯一的库是 GPL 的，那就立个项目做一个非 GPL 的。\n倘若最好的库是 MIT、Boost、new-BSD 或公有领域的，那我们就不用重写了。\n我不怀疑 GPL 对操作系统是个好许可证，尤其因非 GPL 代码被允许与操作系统对接。对较小的项目，我认为对闭源接管的恐惧被夸大了。"},{"id":2736,"sid":null,"sat":0,"tid":217,"tt":"Memory leak","src":"Bitcointalk","author":"eurekafag","date":"2010-09-13","ts":"2010-09-13T05:51:44Z","url":"https://bitcointalk.org/index.php?topic=1023.msg12522#msg12522","zh":"<p>我有一个不常见的配置：无头网关上跑着 bitcoind，桌面上跑着标准 bitcoin（都是 Linux OpenSuSE，网关 11.1，桌面 11.3，两边都是 bitcoin 0.3.12）。TCP 端口 8333 在网关上转发到桌面（因而网关客户端不可能有入站连接）。不知为什么，当我在网关客户端之后启动桌面客户端时，桌面客户端连不上，长时间在 0 和 2 个连接之间闪。最终它恐会连上，然而连不上期间内存泄漏严重。约 200Kb/sec（每次 0-2 切换）。倘若客户端立刻连上就注意不到，然而我的情况并不是。倘若我先启动桌面、再启动无头客户端（在桌面连上之后），一切正常，无泄漏（或者小到可以忽略）。我猜引导函数里或引导过程中某处有未释放的内存。</p>","zhText":"我有一个不常见的配置：无头网关上跑着 bitcoind，桌面上跑着标准 bitcoin（都是 Linux OpenSuSE，网关 11.1，桌面 11.3，两边都是 bitcoin 0.3.12）。TCP 端口 8333 在网关上转发到桌面（因而网关客户端不可能有入站连接）。不知为什么，当我在网关客户端之后启动桌面客户端时，桌面客户端连不上，长时间在 0 和 2 个连接之间闪。最终它恐会连上，然而连不上期间内存泄漏严重。约 200Kb/sec（每次 0-2 切换）。倘若客户端立刻连上就注意不到，然而我的情况并不是。倘若我先启动桌面、再启动无头客户端（在桌面连上之后），一切正常，无泄漏（或者小到可以忽略）。我猜引导函数里或引导过程中某处有未释放的内存。"},{"id":2758,"sid":null,"sat":0,"tid":218,"tt":"Message Encryption as a built-in feature?","src":"Bitcointalk","author":"em3rgentOrdr","date":"2010-09-16","ts":"2010-09-16T09:14:09Z","url":"https://bitcointalk.org/index.php?topic=1032.msg12976#msg12976","zh":"<blockquote><p>类似这样的东西，再加上「传递支付」项目 <a href=\"http://bitcointalk.org/index.php?topic=922.msg12917#msg12917\">http://bitcointalk.org/index.php?topic=922.msg12917#msg12917</a>，是不是真的能大幅增强网络对攻击的抵抗力？你的一半手续费给收信人，另一半给 3 个随机的人——或者平分以增强匿名性。</p><p>作为额外的安全措施，你尚且可以发 3 条假消息或你决定的任意条数，把真消息藏起来。你付出的手续费于是按你决定的安全拆分份数摊开。这恐意味着，只要拥有一个 bitcoin 消息地址，你一整天都会收到随机的 bitcoin 支付。想象 twitter 混上 hashcash 和电子邮件。对外部世界来说，一条消息和你的一笔支付并无任何区别。</p></blockquote><p>太聪明了！！！我喜欢这个主意……而且用 bitcoin，你能够自定义安全等级：多付比特币就能发更多假消息、做更多安全拆分……</p><blockquote><p>人们对每条 .50c 的短信或彩信毫不在意。</p></blockquote><p>哈哈！嗯，这说对了一半。通常他们每月有一包定额短信可以发，用不完就白白浪费。然而他们往往忘了：<i>他们</i>给我发一条垃圾短信，<i>我</i>还得付 25 美分！！！</p><p>一台带加密消息选项的智能手机 bitcoin 客户端，相比大多数无线运营商对短信收的高额费用，会是一个绝佳的短信替代系统。当然，我知道现在有免费短信应用，然而它们往往带广告。而用 bitcoin，传递消息的小额手续费反而能够成为绝佳的激励……</p>","zhText":"类似这样的东西，再加上「传递支付」项目 http://bitcointalk.org/index.php?topic=922.msg12917#msg12917，是不是真的能大幅增强网络对攻击的抵抗力？你的一半手续费给收信人，另一半给 3 个随机的人——或者平分以增强匿名性。\n作为额外的安全措施，你尚且可以发 3 条假消息或你决定的任意条数，把真消息藏起来。你付出的手续费于是按你决定的安全拆分份数摊开。这恐意味着，只要拥有一个 bitcoin 消息地址，你一整天都会收到随机的 bitcoin 支付。想象 twitter 混上 hashcash 和电子邮件。对外部世界来说，一条消息和你的一笔支付并无任何区别。\n\n太聪明了！！！我喜欢这个主意……而且用 bitcoin，你能够自定义安全等级：多付比特币就能发更多假消息、做更多安全拆分……\n人们对每条 .50c 的短信或彩信毫不在意。\n\n哈哈！嗯，这说对了一半。通常他们每月有一包定额短信可以发，用不完就白白浪费。然而他们往往忘了：他们给我发一条垃圾短信，我还得付 25 美分！！！\n一台带加密消息选项的智能手机 bitcoin 客户端，相比大多数无线运营商对短信收的高额费用，会是一个绝佳的短信替代系统。当然，我知道现在有免费短信应用，然而它们往往带广告。而用 bitcoin，传递消息的小额手续费反而能够成为绝佳的激励……"},{"id":2763,"sid":null,"sat":0,"tid":219,"tt":"Issues building bitcoin on Windows 7","src":"Bitcointalk","author":"LobsterMan","date":"2010-09-17","ts":"2010-09-17T02:48:24Z","url":"https://bitcointalk.org/index.php?topic=1034.msg13037#msg13037","zh":"<p>好……因而用 nmake 从命令行构建仍然给我同样的问题：</p><pre><code>c:\\Users\\[myusername]\\Desktop\\bitcoin-0.3.12\\src>nmake /f makefile.vc\n\nMicrosoft (R) Program Maintenance Utility Version 10.00.30319.01\nCopyright (C) Microsoft Corporation.  All rights reserved.\n\n        cl /c /nologo /MDd /EHsc /GR /Zm300 /Zi /D__WXDEBUG__ /DWIN32 /D__WXMSW__ /D_WINDOWS /DNOPCH /I\"/boost\"  /I\"/db/build_windows\"\n /I\"/openssl/include\"  /I\"/wxwidgets/lib/vc_lib/mswud\"  /I\"/wxwidgets/include\" /DGUI /Foobj\\util.obj util.cpp\nutil.cpp\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(15) : error C2143: syntax error : missing ';' before '&lt;'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(16) : error C2146: syntax error : missing ';' before identifier 'cs_mapAddressBook'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(17) : error C2143: syntax error : missing ';' before '&lt;'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(23) : error C2146: syntax error : missing ';' before identifier 'dbenv'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int</code></pre><p>任何额外建议都感激不尽……</p><p>我认为在 headers.h 里加一个 #pragma warning(disable:4430) 能够忽略 C4430 错误，然而其他那些看起来更严重。</p><p>C2143 有时是 #includes 的问题引起的，然而既然我用的就是源码自带的文件……我假设它们都能用？会不会是 vs2010 的什么特性导致的？</p>","zhText":"好……因而用 nmake 从命令行构建仍然给我同样的问题：\nc:\\Users\\[myusername]\\Desktop\\bitcoin-0.3.12\\src>nmake /f makefile.vc\n\nMicrosoft (R) Program Maintenance Utility Version 10.00.30319.01\nCopyright (C) Microsoft Corporation. All rights reserved.\n\n cl /c /nologo /MDd /EHsc /GR /Zm300 /Zi /D__WXDEBUG__ /DWIN32 /D__WXMSW__ /D_WINDOWS /DNOPCH /I\"/boost\" /I\"/db/build_windows\"\n /I\"/openssl/include\" /I\"/wxwidgets/lib/vc_lib/mswud\" /I\"/wxwidgets/include\" /DGUI /Foobj\\util.obj util.cpp\nutil.cpp\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(15) : error C2143: syntax error : missing ';' before '<'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(16) : error C2146: syntax error : missing ';' before identifier 'cs_mapAddressBook'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(17) : error C2143: syntax error : missing ';' before '<'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(23) : error C2146: syntax error : missing ';' before identifier 'dbenv'\nc:\\users\\[myusername]\\desktop\\bitcoin-0.3.12\\src\\db.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau\nlt-int任何额外建议都感激不尽……\n我认为在 headers.h 里加一个 #pragma warning(disable:4430) 能够忽略 C4430 错误，然而其他那些看起来更严重。\nC2143 有时是 #includes 的问题引起的，然而既然我用的就是源码自带的文件……我假设它们都能用？会不会是 vs2010 的什么特性导致的？"},{"id":2772,"sid":null,"sat":0,"tid":220,"tt":"The case for removing IP transactions","src":"Bitcointalk","author":"bitcoinex","date":"2010-09-19","ts":"2010-09-19T00:54:49Z","url":"https://bitcointalk.org/index.php?topic=1048.msg13161#msg13161","zh":"<p>然而请千万别把 IP 交易整个删掉！\n<a href=\"http://bitcointalk.org/index.php?topic=1042.msg13160\">http://bitcointalk.org/index.php?topic=1042.msg13160</a></p>","zhText":"然而请千万别把 IP 交易整个删掉！\nhttp://bitcointalk.org/index.php?topic=1042.msg13160"},{"id":2778,"sid":null,"sat":0,"tid":221,"tt":"Bug?  /usr/bin/bitcoind \"\"","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-09-19","ts":"2010-09-19T15:19:57Z","url":"https://bitcointalk.org/index.php?topic=1063.msg13198#msg13198","zh":"<p>我同意 nelisky 的看法——这不是 bug。这是 unix 的 cat 命令对 \"\" 的说法：</p><pre><code>> cat \"\"\ncat: : No such file or directory</code></pre>","zhText":"我同意 nelisky 的看法——这不是 bug。这是 unix 的 cat 命令对 \"\" 的说法：\n> cat \"\"\ncat: : No such file or directory"},{"id":2737,"sid":452,"sat":1,"tid":217,"tt":"Memory leak","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-19","ts":"2010-09-19T17:22:03Z","url":"https://bitcointalk.org/index.php?topic=1023.msg13201#msg13201","zh":"<p>在 0 和 2 个连接之间来回跳，恐怕是它在连接自己。你用了 \"-connect\" 开关吗？</p><p>是你自己编译的还是发布版？什么版本？</p><p>我不确定 200Kb/sec 怎么来的，因连接尝试之间至少等半秒。它在 0 和 2 个连接之间闪多快？比每秒两次还快？</p><p>linux 上的等待函数是：</p><p>inline void Sleep(int64 n)\n{\n    boost::thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(n));\n}</p><p>倘若它工作不正常，那它就恐会全速空转循环。</p>","zhText":"在 0 和 2 个连接之间来回跳，恐怕是它在连接自己。你用了 \"-connect\" 开关吗？\n是你自己编译的还是发布版？什么版本？\n我不确定 200Kb/sec 怎么来的，因连接尝试之间至少等半秒。它在 0 和 2 个连接之间闪多快？比每秒两次还快？\nlinux 上的等待函数是：\ninline void Sleep(int64 n)\n{\n boost::thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(n));\n}\n倘若它工作不正常，那它就恐会全速空转循环。"},{"id":2764,"sid":453,"sat":1,"tid":219,"tt":"Issues building bitcoin on Windows 7","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-19","ts":"2010-09-19T18:46:46Z","url":"https://bitcointalk.org/index.php?topic=1034.msg13206#msg13206","zh":"<p>它绊倒的那些行：</p><pre><code>ERROR extern map&lt;string, string> mapAddressBook;\nERROR extern CCriticalSection cs_mapAddressBook;\nERROR extern vector&lt;unsigned char> vchDefaultKey;\nOK extern bool fClient;\nOK extern int nBestHeight;\n\nOK extern unsigned int nWalletDBUpdated;\nERROR extern DbEnv dbenv;</code></pre><p>因而它的表现就像什么都未定义，连 map 和 vector 都没有。</p><p>然而 db.h 是被 headers.h 包含的（而且仅仅在那里，别处都没有），而 headers.h 在 db.h 之前就包含了 vector、map、util.h 等等。</p><p>是不是 VC 在用预编译头并搞砸了？会不会是你目录里残留着以前失败尝试留下的预编译头文件，被它找到并使用了？</p><p>现在有一个安装包，让 MinGW 的安装变得相当简单。别用最新的 4.5.0，用往前几个版本，譬如 4.4.1（1.908.0）或 1.812.0。安装程序会完整装好一切，不像以前那么难。我记得我唯一要做的是把 make*.exe 之类的名字改成 make.exe。\n<a href=\"http://tdm-gcc.tdragon.net/\">http://tdm-gcc.tdragon.net/</a></p><p>跑题说一句：要是有人能折腾出 tcatm 的 4 路 128 位 SSE2 代码在 Windows 上可用就好了。MinGW 的优化有些问题，我不确定，兴许是栈上 16 字节对齐的问题，导致段错误。经过一番摆弄，我让他的代码在一个测试程序里跑起来了，然而不知为何在 Bitcoin 本体里不行。</p>","zhText":"它绊倒的那些行：\nERROR extern map<string, string> mapAddressBook;\nERROR extern CCriticalSection cs_mapAddressBook;\nERROR extern vector<unsigned char> vchDefaultKey;\nOK extern bool fClient;\nOK extern int nBestHeight;\n\nOK extern unsigned int nWalletDBUpdated;\nERROR extern DbEnv dbenv;因而它的表现就像什么都未定义，连 map 和 vector 都没有。\n然而 db.h 是被 headers.h 包含的（而且仅仅在那里，别处都没有），而 headers.h 在 db.h 之前就包含了 vector、map、util.h 等等。\n是不是 VC 在用预编译头并搞砸了？会不会是你目录里残留着以前失败尝试留下的预编译头文件，被它找到并使用了？\n现在有一个安装包，让 MinGW 的安装变得相当简单。别用最新的 4.5.0，用往前几个版本，譬如 4.4.1（1.908.0）或 1.812.0。安装程序会完整装好一切，不像以前那么难。我记得我唯一要做的是把 make*.exe 之类的名字改成 make.exe。\nhttp://tdm-gcc.tdragon.net/\n跑题说一句：要是有人能折腾出 tcatm 的 4 路 128 位 SSE2 代码在 Windows 上可用就好了。MinGW 的优化有些问题，我不确定，兴许是栈上 16 字节对齐的问题，导致段错误。经过一番摆弄，我让他的代码在一个测试程序里跑起来了，然而不知为何在 Bitcoin 本体里不行。"},{"id":2779,"sid":454,"sat":1,"tid":221,"tt":"Bug?  /usr/bin/bitcoind \"\"","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-19","ts":"2010-09-19T19:58:11Z","url":"https://bitcointalk.org/index.php?topic=1063.msg13211#msg13211","zh":"<p>那些 bug 追踪系统我一个都不了解。倘若要有一个，我们务必做一个经过充分调研的选择。</p><p>只用论坛我们管得相当好。我更容易看到论坛里发的 bug，而且我觉得其他用户在这里（而不是在 bug 追踪系统里）更愿意帮忙解决、追问后续。关键一步是其他用户帮忙解决那些其实不是 bug、不过是误解或困惑的简单问题。</p><p>我维护着一份论坛上见过的所有未解决 bug 的清单。有些情况我还在琢磨修复的最佳设计。我们这种软件并不该留这么多未解决 bug，多到需要一个追踪系统。</p>","zhText":"那些 bug 追踪系统我一个都不了解。倘若要有一个，我们务必做一个经过充分调研的选择。\n只用论坛我们管得相当好。我更容易看到论坛里发的 bug，而且我觉得其他用户在这里（而不是在 bug 追踪系统里）更愿意帮忙解决、追问后续。关键一步是其他用户帮忙解决那些其实不是 bug、不过是误解或困惑的简单问题。\n我维护着一份论坛上见过的所有未解决 bug 的清单。有些情况我还在琢磨修复的最佳设计。我们这种软件并不该留这么多未解决 bug，多到需要一个追踪系统。"},{"id":2674,"sid":null,"sat":0,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"Cdecker","date":"2010-09-19","ts":"2010-09-19T20:14:08Z","url":"https://bitcointalk.org/index.php?topic=960.msg13212#msg13212","zh":"<p>我想我们都同意改系统时间是不可行的，然而为什么我们不能仅仅在内部用一个偏移量、绕开整个问题？我们已然有（近似）同步客户端的办法了，为什么不加以利用？</p>","zhText":"我想我们都同意改系统时间是不可行的，然而为什么我们不能仅仅在内部用一个偏移量、绕开整个问题？我们已然有（近似）同步客户端的办法了，为什么不加以利用？"},{"id":2773,"sid":455,"sat":1,"tid":220,"tt":"The case for removing IP transactions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-19","ts":"2010-09-19T21:49:30Z","url":"https://bitcointalk.org/index.php?topic=1048.msg13219#msg13219","zh":"<p>最好默认禁用按 IP 收款，除非你明确打算用它。这是一大片无人使用的攻击面，并无必要默认开放。</p><p>在商店场景下，你通常仅仅想让顾客通过你的自动化系统付款，它仅仅发放与特定订单和账户关联的 bitcoin 地址。随机、无身份的支付自愿发到服务器的 IP 地址上，并无任何用处。</p><p>总的来说，按 IP 发送的实用场景有限。倘若不经代理直连，中间人风险或许能够容忍，然而没有隐私。倘若你用隐私代理，中间人风险则高得不可接受。倘若我们费劲实现了 SSL，通常仅仅大商家才愿意花功夫拿 CA 证书，而这些场景大多仍然用 bitcoin 地址更好。</p><p>我已把这个改动上传到 SVN rev 156。启用的开关是 \"-allowreceivebyip\"。</p><p>用这个版本的发送方会得到错误 \"Recipient is not accepting transactions sent by IP address\"。旧版本的发送方会得到 \"Transfer was not accepted\"。</p><p>我给开关用了不同的名字，因 \"-allowiptransactions\" 听起来像包含发送。倘若这个开关有更好的名字，我们能够再改。</p>","zhText":"最好默认禁用按 IP 收款，除非你明确打算用它。这是一大片无人使用的攻击面，并无必要默认开放。\n在商店场景下，你通常仅仅想让顾客通过你的自动化系统付款，它仅仅发放与特定订单和账户关联的 bitcoin 地址。随机、无身份的支付自愿发到服务器的 IP 地址上，并无任何用处。\n总的来说，按 IP 发送的实用场景有限。倘若不经代理直连，中间人风险或许能够容忍，然而没有隐私。倘若你用隐私代理，中间人风险则高得不可接受。倘若我们费劲实现了 SSL，通常仅仅大商家才愿意花功夫拿 CA 证书，而这些场景大多仍然用 bitcoin 地址更好。\n我已把这个改动上传到 SVN rev 156。启用的开关是 \"-allowreceivebyip\"。\n用这个版本的发送方会得到错误 \"Recipient is not accepting transactions sent by IP address\"。旧版本的发送方会得到 \"Transfer was not accepted\"。\n我给开关用了不同的名字，因 \"-allowiptransactions\" 听起来像包含发送。倘若这个开关有更好的名字，我们能够再改。"},{"id":2759,"sid":456,"sat":1,"tid":218,"tt":"Message Encryption as a built-in feature?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-19","ts":"2010-09-19T22:47:00Z","url":"https://bitcointalk.org/index.php?topic=1032.msg13221#msg13221","zh":"<p>theymos 已然说过了……ECDSA 并不支持加密消息。仅仅支持数字签名。</p>","zhText":"theymos 已然说过了……ECDSA 并不支持加密消息。仅仅支持数字签名。"},{"id":2675,"sid":null,"sat":0,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"LZ","date":"2010-09-20","ts":"2010-09-20T03:39:55Z","url":"https://bitcointalk.org/index.php?topic=960.msg13239#msg13239","zh":"<p>同意。并无必要设置系统时间。\n我们仅仅需要在程序里使用正确的时间。</p>","zhText":"同意。并无必要设置系统时间。\n我们仅仅需要在程序里使用正确的时间。"},{"id":2035,"sid":null,"sat":0,"tid":159,"tt":"Porn","src":"Bitcointalk","author":"kiba","date":"2010-09-23","ts":"2010-09-23T15:55:07Z","url":"https://bitcointalk.org/index.php?topic=671.msg13826#msg13826","zh":"<blockquote><p>为什么不用一个（用户友好的）基于比特币的文件托管服务取代 SharingMatrix/MegaUpload 之类，并让所有「免费」色情站（譬如 adultbay）改用它？倘若不必拿我的个人和信用卡信息冒险、不必面对那些邪恶邪恶的自动续费，我还真愿意为更高的带宽和并发下载数付费。</p><p>如此我们就能曲线用上色情（和音乐博客）了。</p></blockquote><p>是啊，Bitcoin 能够当好验证码。</p>","zhText":"为什么不用一个（用户友好的）基于比特币的文件托管服务取代 SharingMatrix/MegaUpload 之类，并让所有「免费」色情站（譬如 adultbay）改用它？倘若不必拿我的个人和信用卡信息冒险、不必面对那些邪恶邪恶的自动续费，我还真愿意为更高的带宽和并发下载数付费。\n如此我们就能曲线用上色情（和音乐博客）了。\n\n是啊，Bitcoin 能够当好验证码。"},{"id":2780,"sid":null,"sat":0,"tid":222,"tt":"The Niche List","src":"Bitcointalk","author":"kiba","date":"2010-09-23","ts":"2010-09-23T16:00:16Z","url":"https://bitcointalk.org/index.php?topic=1268.msg13828#msg13828","zh":"<p>这是「经济增长行动」。我们的使命是让每个人专注于一个狭窄的商品与服务范围，以此壮大 bitcoin 经济。</p><p>简单说，宣布你想消费什么，我就把它加进清单。进而会有人宣布他要试着进入那个细分领域。细分领域内部亦可以有竞争，然而尚有别的领域等着填补。</p><p>我们会通过催促、鼓励、开帖子、进而在服务没上线时表示失望等等，让这些人对自己的细分领域「负责」。</p><p>期待填补的细分领域：</p><p>1. 类似 craigslist 的本地分类广告。</p><p>2. 类似 \"Mechanical Turk\" 的站点，列出供人做的简单工作。由 noagendamarket 在经济论坛的 Stable Exchange Rate? 主题里建议。</p><p>3. 啤酒原料商店。麦芽、酵母、啤酒花等。</p><p>4. 卖各类草药等东西的植物商店。</p><p>6. 黑客学院。免费教育视频。固定学费课程。私教按次付费。</p><p>7. 接受比特币的约会网站。</p><p>8. 简易加密和备份服务。</p><p>已填补或正在做的细分领域：</p><p>1. 类似 <a href=\"http://projectwonderful.com\">http://projectwonderful.com</a> 的广告清算所。mskwik 建议。（我用 projectwonderful 赚过一点点钱。不知道能不能从 bitcoin 广告清算所赚到更多）noagenda 为它开了大额赏金，Biomike 正在做。</p><p>2. 像 rapidshare 和其他破托管一样的下载站。麻烦的验证码和强制的 paypal。Bitcoin 或许能同时顶替两者并理顺整个流程。Kiba 建议。Hippich 接手。最终催生出 3 个竞争者。</p><p>3. 自由职业者站点。whichspace 接手。</p><p>4. 披萨订购系统。能够从网页、命令行、智能手机、sms 等下单。mizerydearia 接手。</p>","zhText":"这是「经济增长行动」。我们的使命是让每个人专注于一个狭窄的商品与服务范围，以此壮大 bitcoin 经济。\n简单说，宣布你想消费什么，我就把它加进清单。进而会有人宣布他要试着进入那个细分领域。细分领域内部亦可以有竞争，然而尚有别的领域等着填补。\n我们会通过催促、鼓励、开帖子、进而在服务没上线时表示失望等等，让这些人对自己的细分领域「负责」。\n期待填补的细分领域：\n1. 类似 craigslist 的本地分类广告。\n2. 类似 \"Mechanical Turk\" 的站点，列出供人做的简单工作。由 noagendamarket 在经济论坛的 Stable Exchange Rate? 主题里建议。\n3. 啤酒原料商店。麦芽、酵母、啤酒花等。\n4. 卖各类草药等东西的植物商店。\n6. 黑客学院。免费教育视频。固定学费课程。私教按次付费。\n7. 接受比特币的约会网站。\n8. 简易加密和备份服务。\n已填补或正在做的细分领域：\n1. 类似 http://projectwonderful.com 的广告清算所。mskwik 建议。（我用 projectwonderful 赚过一点点钱。不知道能不能从 bitcoin 广告清算所赚到更多）noagenda 为它开了大额赏金，Biomike 正在做。\n2. 像 rapidshare 和其他破托管一样的下载站。麻烦的验证码和强制的 paypal。Bitcoin 或许能同时顶替两者并理顺整个流程。Kiba 建议。Hippich 接手。最终催生出 3 个竞争者。\n3. 自由职业者站点。whichspace 接手。\n4. 披萨订购系统。能够从网页、命令行、智能手机、sms 等下单。mizerydearia 接手。"},{"id":2715,"sid":457,"sat":1,"tid":213,"tt":"Always pay transaction fee?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-23","ts":"2010-09-23T16:08:35Z","url":"https://bitcointalk.org/index.php?topic=994.msg13829#msg13829","zh":"<blockquote><p>现在的门槛是每区块 200KB，约合每区块 1000 笔交易。我认为理应降到每区块 50KB。那仍然是平均每区块交易量的 100 多倍。</p></blockquote><p>我已在 SVN rev 157 里实现了这个改动。</p><p>我之前把门槛定得那么高，是为了允许相当大的交易不触发手续费。对于用 50 BTC 生成币构成的交易，门槛折合约 26,000 BTC。尽管当时的铸币难度比现在低 100 倍，那个水平下也只有极少数人碰到过手续费。新门槛把发送生成币的门槛放到了约 11,000 BTC。它基本只有用生成币时才会触及。倘若你是买来的比特币，它们以更大的交易计价，离手续费上限远得很——除非你是用几百笔独立交易买的。就算你真的触及手续费线，你也只需付一次，就能把自己的零碎交易打包到一起。</p>","zhText":"现在的门槛是每区块 200KB，约合每区块 1000 笔交易。我认为理应降到每区块 50KB。那仍然是平均每区块交易量的 100 多倍。\n\n我已在 SVN rev 157 里实现了这个改动。\n我之前把门槛定得那么高，是为了允许相当大的交易不触发手续费。对于用 50 BTC 生成币构成的交易，门槛折合约 26,000 BTC。尽管当时的铸币难度比现在低 100 倍，那个水平下也只有极少数人碰到过手续费。新门槛把发送生成币的门槛放到了约 11,000 BTC。它基本只有用生成币时才会触及。倘若你是买来的比特币，它们以更大的交易计价，离手续费上限远得很——除非你是用几百笔独立交易买的。就算你真的触及手续费线，你也只需付一次，就能把自己的零碎交易打包到一起。"},{"id":2809,"sid":458,"sat":1,"tid":223,"tt":"Internal version number","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-23","ts":"2010-09-23T16:19:08Z","url":"https://bitcointalk.org/index.php?topic=1269.msg13831#msg13831","zh":"<p>在下一个版本（0.3.13）里，我打算把内部版本号整数的格式从 313 改成 31300，譬如 31305 = 0.3.13.5。最后一个数字代表发布之间的 SVN 变更，理应在版本号里得到恰当体现。否则，万一我们在某个子版本里犯了错、需要绕过去，那会相当痛苦。</p>","zhText":"在下一个版本（0.3.13）里，我打算把内部版本号整数的格式从 313 改成 31300，譬如 31305 = 0.3.13.5。最后一个数字代表发布之间的 SVN 变更，理应在版本号里得到恰当体现。否则，万一我们在某个子版本里犯了错、需要绕过去，那会相当痛苦。"},{"id":2676,"sid":459,"sat":1,"tid":208,"tt":"Warning : Check your system clock (help me)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-23","ts":"2010-09-23T16:28:25Z","url":"https://bitcointalk.org/index.php?topic=960.msg13833#msg13833","zh":"<p>我并未搞懂，你是不是以为程序会设置系统时钟？它并不会。</p><blockquote><p>我们已然有（近似）同步客户端的办法了，为什么不加以利用？</p></blockquote><p>我们用一个基于其他节点时间中位数的内部偏移，然而出于安全考虑，不允许它们把我们的偏移量带偏超过一小时。倘若它们显示我们偏差超过一小时，我们就转为提醒用户去修自己的时钟。</p>","zhText":"我并未搞懂，你是不是以为程序会设置系统时钟？它并不会。\n我们已然有（近似）同步客户端的办法了，为什么不加以利用？\n\n我们用一个基于其他节点时间中位数的内部偏移，然而出于安全考虑，不允许它们把我们的偏移量带偏超过一小时。倘若它们显示我们偏差超过一小时，我们就转为提醒用户去修自己的时钟。"},{"id":2810,"sid":null,"sat":0,"tid":223,"tt":"Internal version number","src":"Bitcointalk","author":"nelisky","date":"2010-09-23","ts":"2010-09-23T16:48:04Z","url":"https://bitcointalk.org/index.php?topic=1269.msg13835#msg13835","zh":"<blockquote><p>在下一个版本（0.3.13）里，我打算把内部版本号整数的格式从 313 改成 31300，譬如 31305 = 0.3.13.5。最后一个数字代表发布之间的 SVN 变更，理应在版本号里得到恰当体现。否则，万一我们在某个子版本里犯了错、需要绕过去，那会相当痛苦。</p></blockquote><p>感谢提醒。其实我的 web 应用就在检查版本，用来断定 backupwallet 是否可用，不过既然我的私有版本已然扩散出去了，适应这个改动理应相当简单。</p>","zhText":"在下一个版本（0.3.13）里，我打算把内部版本号整数的格式从 313 改成 31300，譬如 31305 = 0.3.13.5。最后一个数字代表发布之间的 SVN 变更，理应在版本号里得到恰当体现。否则，万一我们在某个子版本里犯了错、需要绕过去，那会相当痛苦。\n\n感谢提醒。其实我的 web 应用就在检查版本，用来断定 backupwallet 是否可用，不过既然我的私有版本已然扩散出去了，适应这个改动理应相当简单。"},{"id":2036,"sid":460,"sat":1,"tid":159,"tt":"Porn","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-23","ts":"2010-09-23T17:56:55Z","url":"https://bitcointalk.org/index.php?topic=671.msg13844#msg13844","zh":"<p>对没有信用卡、或不想用手里那张卡的人来说，Bitcoin 会相当方便——不想让配偶在账单上看到、不信任把卡号交给「色情业者」、或者害怕自动续费的人。</p>","zhText":"对没有信用卡、或不想用手里那张卡的人来说，Bitcoin 会相当方便——不想让配偶在账单上看到、不信任把卡号交给「色情业者」、或者害怕自动续费的人。"},{"id":2814,"sid":null,"sat":0,"tid":224,"tt":"How divisible are bitcoins - the technical side","src":"Bitcointalk","author":"nelisky","date":"2010-09-23","ts":"2010-09-23T18:10:35Z","url":"https://bitcointalk.org/index.php?topic=1271.msg13847#msg13847","zh":"<blockquote><p>交易费不是会让这变得毫无意义吗？</p><p>倘若你在尽量让体育博彩的派彩精确，我觉得暂时四舍五入到 .01 没人会介意。毕竟那不过 $0.0006。</p></blockquote><p>高于 0.01 但精度更高的转账亦会被收交易费吗？我不知道还有这一说。</p><p>是的，我暂时在取整，然而我喜欢干净的东西：我要么允许提取更高精度的金额，要么把派彩取整到 2 位小数，我更愿意做前者，仅此而已。</p><p>不，这并不*只*是为了体育博彩。我有计划……</p>","zhText":"交易费不是会让这变得毫无意义吗？\n倘若你在尽量让体育博彩的派彩精确，我觉得暂时四舍五入到 .01 没人会介意。毕竟那不过 $0.0006。\n\n高于 0.01 但精度更高的转账亦会被收交易费吗？我不知道还有这一说。\n是的，我暂时在取整，然而我喜欢干净的东西：我要么允许提取更高精度的金额，要么把派彩取整到 2 位小数，我更愿意做前者，仅此而已。\n不，这并不*只*是为了体育博彩。我有计划……"},{"id":2815,"sid":461,"sat":1,"tid":224,"tt":"How divisible are bitcoins - the technical side","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-23","ts":"2010-09-23T18:39:56Z","url":"https://bitcointalk.org/index.php?topic=1271.msg13848#msg13848","zh":"<p>我不建议使用那些额外的小数位。它们不过是为将来预留的。</p><p>你说得对，高于 0.01 的金额仍然能够带额外精度，然而接收方看不到。UI 会把它向下取整显示。</p>","zhText":"我不建议使用那些额外的小数位。它们不过是为将来预留的。\n你说得对，高于 0.01 的金额仍然能够带额外精度，然而接收方看不到。UI 会把它向下取整显示。"},{"id":2811,"sid":462,"sat":1,"tid":223,"tt":"Internal version number","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-23","ts":"2010-09-23T18:46:20Z","url":"https://bitcointalk.org/index.php?topic=1269.msg13849#msg13849","zh":"<p>我并不认为这会给版本比较带来任何问题。31300 > 312。</p>","zhText":"我并不认为这会给版本比较带来任何问题。31300 > 312。"},{"id":2816,"sid":null,"sat":0,"tid":225,"tt":"How To Make a Distributed BitCoin Escrow Service","src":"Bitcointalk","author":"harding","date":"2010-09-26","ts":"2010-09-26T01:16:18Z","url":"https://bitcointalk.org/index.php?topic=1283.msg14070#msg14070","zh":"<p>摘要：给 BitCoin 一个去中心化的托管机制，将使它胜过所有其他交换媒介，这恐会提高它的普及速度。细节如下。</p><p>对一种<i>去中心化</i>货币来说，<i>中心化</i>托管如今似乎成了 BitCoin 的常态。譬如：</p><p>Alice 想向 Bob 买价值 $5 USD 的 BitCoin，然而两人互不完全信任，于是他们去找一个都信任的网站——譬如 Mt. Gox。他们在那里各自存入自己的钱，由 Mt. Gox 替他们完成交换。</p><p>无意冒犯 Mt. Gox（一个我喜欢的网站），然而我们能不用它的托管服务吗？</p><p>一个近乎分布式的替代方案：</p><ul><li>Charlie，一个受信任的第三方，生成一个 BitCoin 私钥。</li><li>Charlie 进而用 Unix 命令 <tt>split</tt> 把私钥切成两半——一半给 Alice，一半给 Bob。</li><li>Bob 把价值 $5 USD 的 BitCoin 存入这个被切分的 BitCoin 账户；</li><li>Alice 用公开的区块验证这笔交易；</li><li>Alice 用 PayPal 把 $5 USD 发给 Bob；</li><li>Bob 验证 PayPal 交易；</li><li>Bob 把他那半个被切分的私钥发给 Alice，如此 Alice 就能取用他先前存入的 BitCoin。</li></ul><p>（为简单起见我省略了部分 PayPal 细节，譬如谁付交易费、以及为避免拒付欺诈要等多久。我也省略了让 Bob 完成最后一步的任何激励。）</p><p>倘若我们把 Unix 命令 <tt>split</tt> 换成更精巧的东西，尚且能造出更高级的近乎分布式例子。譬如：一个 Shamir 秘密共享方案的实现，像 <tt>ssss</tt>[1]。类似 <tt>ssss</tt> 的工具允许 Alice 和 Bob 指定一名仲裁人，以备他们发生分歧。</p><p>当然，这一切的问题在于：我们务必信任 Charlie 不滥用他创建的那份完整私钥副本。</p><p>理想方案是 Alice 和 Bob 各自生成私钥的一半。我不完全理解现代密钥对所用的数学，然而我怀疑现有算法做不到这一点。</p><p>有没有别的办法，让 Alice 和 Bob 各自取得半个私钥，而不把完整的钥匙交给任何一方？</p><p>-Dave</p><p>[1] 见：<a href=\"http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing\">http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing</a></p>","zhText":"摘要：给 BitCoin 一个去中心化的托管机制，将使它胜过所有其他交换媒介，这恐会提高它的普及速度。细节如下。\n对一种去中心化货币来说，中心化托管如今似乎成了 BitCoin 的常态。譬如：\nAlice 想向 Bob 买价值 $5 USD 的 BitCoin，然而两人互不完全信任，于是他们去找一个都信任的网站——譬如 Mt. Gox。他们在那里各自存入自己的钱，由 Mt. Gox 替他们完成交换。\n无意冒犯 Mt. Gox（一个我喜欢的网站），然而我们能不用它的托管服务吗？\n一个近乎分布式的替代方案：\nCharlie，一个受信任的第三方，生成一个 BitCoin 私钥。\nCharlie 进而用 Unix 命令 split 把私钥切成两半——一半给 Alice，一半给 Bob。\nBob 把价值 $5 USD 的 BitCoin 存入这个被切分的 BitCoin 账户；\nAlice 用公开的区块验证这笔交易；\nAlice 用 PayPal 把 $5 USD 发给 Bob；\nBob 验证 PayPal 交易；\nBob 把他那半个被切分的私钥发给 Alice，如此 Alice 就能取用他先前存入的 BitCoin。\n（为简单起见我省略了部分 PayPal 细节，譬如谁付交易费、以及为避免拒付欺诈要等多久。我也省略了让 Bob 完成最后一步的任何激励。）\n倘若我们把 Unix 命令 split 换成更精巧的东西，尚且能造出更高级的近乎分布式例子。譬如：一个 Shamir 秘密共享方案的实现，像 ssss[1]。类似 ssss 的工具允许 Alice 和 Bob 指定一名仲裁人，以备他们发生分歧。\n当然，这一切的问题在于：我们务必信任 Charlie 不滥用他创建的那份完整私钥副本。\n理想方案是 Alice 和 Bob 各自生成私钥的一半。我不完全理解现代密钥对所用的数学，然而我怀疑现有算法做不到这一点。\n有没有别的办法，让 Alice 和 Bob 各自取得半个私钥，而不把完整的钥匙交给任何一方？\n-Dave\n[1] 见：http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing"},{"id":2817,"sid":463,"sat":1,"tid":225,"tt":"How To Make a Distributed BitCoin Escrow Service","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-26","ts":"2010-09-26T17:34:26Z","url":"https://bitcointalk.org/index.php?topic=1283.msg14136#msg14136","zh":"<p>尚未实现，然而网络能够支持要求两个签名的交易。它在这里有描述：\n<a href=\"http://bitcointalk.org/index.php?topic=750.0\">http://bitcointalk.org/index.php?topic=750.0</a></p><p>它绝对比没有托管的直接支付更安全，然而不如人工仲裁的托管好——前提是你足够信任那个人。</p><p>在这种托管里，骗子赢不了，然而你仍然可能吃亏。它至少消除了骗你的利润动机。卖方得到保证：钱是留给他的；买方保留着杠杆：交易完成之前卖方尚未拿到钱。</p>","zhText":"尚未实现，然而网络能够支持要求两个签名的交易。它在这里有描述：\nhttp://bitcointalk.org/index.php?topic=750.0\n它绝对比没有托管的直接支付更安全，然而不如人工仲裁的托管好——前提是你足够信任那个人。\n在这种托管里，骗子赢不了，然而你仍然可能吃亏。它至少消除了骗你的利润动机。卖方得到保证：钱是留给他的；买方保留着杠杆：交易完成之前卖方尚未拿到钱。"},{"id":2001,"sid":null,"sat":0,"tid":158,"tt":"Multiple Wallets, one computer (multiple accounts)","src":"Bitcointalk","author":"nelisky","date":"2010-09-27","ts":"2010-09-27T17:16:18Z","url":"https://bitcointalk.org/index.php?topic=665.msg14265#msg14265","zh":"<blockquote><p>用独立的「账户」（带标签的地址）来累积奖池是对的思路。用户买票，比特币转入对应的奖池账户。奖池被赢走时，交易从该账户流出，回到赢家的手里。</p></blockquote><p>是啊，这相当明显。我这是过度优化强迫症发作了——我觉得既然数据只在应用内部流动，就并无必要登记交易、给系统加那份「额外负载」，然而坦白说这点额外负载完全可以忽略，而且交易能让一切保持整洁。这方面你打算做点什么吗？我确信自己能摸索着把它做出来，不过是要花时间，然而我不想重复造轮子。</p>","zhText":"用独立的「账户」（带标签的地址）来累积奖池是对的思路。用户买票，比特币转入对应的奖池账户。奖池被赢走时，交易从该账户流出，回到赢家的手里。\n\n是啊，这相当明显。我这是过度优化强迫症发作了——我觉得既然数据只在应用内部流动，就并无必要登记交易、给系统加那份「额外负载」，然而坦白说这点额外负载完全可以忽略，而且交易能让一切保持整洁。这方面你打算做点什么吗？我确信自己能摸索着把它做出来，不过是要花时间，然而我不想重复造轮子。"},{"id":2822,"sid":null,"sat":0,"tid":226,"tt":"Remote RPC access","src":"Bitcointalk","author":"Marko","date":"2010-09-28","ts":"2010-09-28T13:58:51Z","url":"https://bitcointalk.org/index.php?topic=1291.msg14395#msg14395","zh":"<p>大家好……感谢所有反馈</p><p>ssh 方案很棒。不过，所有机器都是 Windows 机器，因而我得在每台上装一遍。当然还是比写一个代理应用强……</p><p>我看到了几周前关于 -rpcallowip 开关的条目。必要时我会编译自己的版本。话虽如此，我更想要官方发布版。有人知道下一个版本大抵什么时候出吗？</p><p>至于中间人攻击的可能性，仅仅当我要暴露的网路不可信时这才成为问题。还是说我漏了什么其他影响？</p>","zhText":"大家好……感谢所有反馈\nssh 方案很棒。不过，所有机器都是 Windows 机器，因而我得在每台上装一遍。当然还是比写一个代理应用强……\n我看到了几周前关于 -rpcallowip 开关的条目。必要时我会编译自己的版本。话虽如此，我更想要官方发布版。有人知道下一个版本大抵什么时候出吗？\n至于中间人攻击的可能性，仅仅当我要暴露的网路不可信时这才成为问题。还是说我漏了什么其他影响？"},{"id":2843,"sid":null,"sat":0,"tid":227,"tt":"I broke my wallet, sends never confirm now.","src":"Bitcointalk","author":"nanotube","date":"2010-09-29","ts":"2010-09-29T20:58:33Z","url":"https://bitcointalk.org/index.php?topic=1306.msg14621#msg14621","zh":"<p>好，因而我构建了一个修改版 bitcoind，在 SelectCoins 和 GetBalance 里都加上了 'pcoin->GetDepthInMainChain() < 1'。</p><p>我的「官方客户端」余额显示 131.00139787，修改版客户端余额显示 130.92112098，因而我的钱包里有约 0.08xx 价值「坏」比特币的交易。</p><p>我猜现在要做的，就是再建一个钱包，进而把所有「好币」从旧钱包发到新钱包（或者，我想……亦可以继续用同一个钱包，反正我的 bitcoind 并不会尝试发那些坏币，我可以直接无视它们……）</p><p>但是的，我希望 jgarzik 描述的那种修改（用命令行开关/复选框可配置）真能进主线——否则用假交易给别人的钱包「下毒」就太容易了。</p>","zhText":"好，因而我构建了一个修改版 bitcoind，在 SelectCoins 和 GetBalance 里都加上了 'pcoin->GetDepthInMainChain() 我的「官方客户端」余额显示 131.00139787，修改版客户端余额显示 130.92112098，因而我的钱包里有约 0.08xx 价值「坏」比特币的交易。\n我猜现在要做的，就是再建一个钱包，进而把所有「好币」从旧钱包发到新钱包（或者，我想……亦可以继续用同一个钱包，反正我的 bitcoind 并不会尝试发那些坏币，我可以直接无视它们……）\n但是的，我希望 jgarzik 描述的那种修改（用命令行开关/复选框可配置）真能进主线——否则用假交易给别人的钱包「下毒」就太容易了。"},{"id":2850,"sid":null,"sat":0,"tid":228,"tt":"Prioritized transactions, and tx fees","src":"Bitcointalk","author":"wscott","date":"2010-09-30","ts":"2010-09-30T09:40:21Z","url":"https://bitcointalk.org/index.php?topic=1314.msg14683#msg14683","zh":"<p>手续费是总交易量的函数。\n现在交易量尚且相当小，因而所有手续费都是零。\n将来交易量大了以后，每个区块仅仅会纳入部分当前交易，因而你要么付手续费、让自己的交易值得进区块，\n要么等到交易量回落。</p><p>-Wayne</p>","zhText":"手续费是总交易量的函数。\n现在交易量尚且相当小，因而所有手续费都是零。\n将来交易量大了以后，每个区块仅仅会纳入部分当前交易，因而你要么付手续费、让自己的交易值得进区块，\n要么等到交易量回落。\n-Wayne"},{"id":2844,"sid":464,"sat":1,"tid":227,"tt":"I broke my wallet, sends never confirm now.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T16:38:53Z","url":"https://bitcointalk.org/index.php?topic=1306.msg14714#msg14714","zh":"<p>正如你想明白的那样，根本问题在于：交易没有至少 1 个确认之前，我们并不该计数、亦不该花费。0/unconfirmed 交易就是彻头彻尾的二等公民。它们至多是「收到了什么东西」的提示，把它们计入余额或花出去都为时过早。</p><p>我做了改动，让它们以浅色显示，金额放在方括号里如 [+1.23]，不计入余额、不可用于花费。这并不适用于你发出的交易——你无条件地信任它们，因是你写的。</p><p>我并未用 (+1.23)，因会计里圆括号表示负数。我希望方括号的区分足够明显，让人明白是什么意思。</p><p>JSON-RPC 接口倘若需要，仍能够通过指定 0 个确认看到 0/unconfirmed。</p><p>我已把改动上传到 SVN rev 158。我很快会发 0.3.13 RC。</p><p>倘若你的钱包里有这类交易，在升级到 0.3.13（很快会来）之前，不要发出任何支付。</p><p>倘若你已然发出过这类交易，或者你就是它们的创建者，那么用 theymos 的补丁，或者做下面这个改动，进而用它把你的干净交易发到一个新钱包，清理干净。</p><p>把：\n    if (pcoin->GetDepthInMainChain() < 1 && pcoin->GetDebit() <= 0)\n        continue;\n改成：\n    if (pcoin->GetDepthInMainChain() < 1)\n        continue;</p>","zhText":"正如你想明白的那样，根本问题在于：交易没有至少 1 个确认之前，我们并不该计数、亦不该花费。0/unconfirmed 交易就是彻头彻尾的二等公民。它们至多是「收到了什么东西」的提示，把它们计入余额或花出去都为时过早。\n我做了改动，让它们以浅色显示，金额放在方括号里如 [+1.23]，不计入余额、不可用于花费。这并不适用于你发出的交易——你无条件地信任它们，因是你写的。\n我并未用 (+1.23)，因会计里圆括号表示负数。我希望方括号的区分足够明显，让人明白是什么意思。\nJSON-RPC 接口倘若需要，仍能够通过指定 0 个确认看到 0/unconfirmed。\n我已把改动上传到 SVN rev 158。我很快会发 0.3.13 RC。\n倘若你的钱包里有这类交易，在升级到 0.3.13（很快会来）之前，不要发出任何支付。\n倘若你已然发出过这类交易，或者你就是它们的创建者，那么用 theymos 的补丁，或者做下面这个改动，进而用它把你的干净交易发到一个新钱包，清理干净。\n把：\n if (pcoin->GetDepthInMainChain() GetDebit() GetDepthInMainChain() < 1)\n continue;"},{"id":1941,"sid":null,"sat":0,"tid":154,"tt":"BitCoin Wikipedia page DELETED!!!","src":"Bitcointalk","author":"sirius","date":"2010-09-30","ts":"2010-09-30T16:45:26Z","url":"https://bitcointalk.org/index.php?topic=652.msg14716#msg14716","zh":"<p>倘若我们给已删除的页面做不同语言版本，它们并不会被删掉吧？能做到就做。我能够写一个芬兰语版本。</p>","zhText":"倘若我们给已删除的页面做不同语言版本，它们并不会被删掉吧？能做到就做。我能够写一个芬兰语版本。"},{"id":2845,"sid":465,"sat":1,"tid":227,"tt":"I broke my wallet, sends never confirm now.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T16:59:00Z","url":"https://bitcointalk.org/index.php?topic=1306.msg14720#msg14720","zh":"<p>0.3.13 候选发布版，请测试：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe</a></p>","zhText":"0.3.13 候选发布版，请测试：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe"},{"id":2854,"sid":466,"sat":1,"tid":229,"tt":"0.3.13 RC1 for Windows, please test","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T17:04:15Z","url":"https://bitcointalk.org/index.php?topic=1322.msg14722#msg14722","zh":"<p>0.3.13 候选发布版即将发布，请测试：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe</a></p><p>- 交易没有 1 个确认前不计数、不可花费\n     <a href=\"http://bitcointalk.org/index.php?topic=1306.0\">http://bitcointalk.org/index.php?topic=1306.0</a>\n- 内部版本号从 312 改为 31300\n- 仅在指定 -allowreceivebyip 时接受按 IP 地址发送的交易\n- 去掉 DB_PRIVATE Berkeley DB 标志\n- 修复发送最后一分钱时低于一分找零的问题\n- 在 Linux 上自动检测是否使用 128 位 4 路 SSE2\nGavin Andresen：\n- 新增 -rpcallowip= 选项，接受来自其他机器的 json-rpc 连接\n- Linux 上收到 SIGTERM 时干净关机</p>","zhText":"0.3.13 候选发布版即将发布，请测试：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe\n- 交易没有 1 个确认前不计数、不可花费\n http://bitcointalk.org/index.php?topic=1306.0\n- 内部版本号从 312 改为 31300\n- 仅在指定 -allowreceivebyip 时接受按 IP 地址发送的交易\n- 去掉 DB_PRIVATE Berkeley DB 标志\n- 修复发送最后一分钱时低于一分找零的问题\n- 在 Linux 上自动检测是否使用 128 位 4 路 SSE2\nGavin Andresen：\n- 新增 -rpcallowip= 选项，接受来自其他机器的 json-rpc 连接\n- Linux 上收到 SIGTERM 时干净关机"},{"id":1942,"sid":467,"sat":1,"tid":154,"tt":"BitCoin Wikipedia page DELETED!!!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T17:50:32Z","url":"https://bitcointalk.org/index.php?topic=652.msg14729#msg14729","zh":"<p>倘若你要做，我认为理应是一篇相当简短、单段的文章，100 词以内，仅仅说明 Bitcoin 是什么。</p><p>我倒希望他们别删文章，而是加一个长度限制。倘若某样东西还不够有名，至少能够有一篇 stub 文章说明它是什么。我经常遇到恼人的红链，那些东西 Wiki 至少理应听说过。</p><p>文章能够简单到类似这样：\n\"Bitcoin is a peer-to-peer decentralised /link/electronic currency/link/.\"</p><p>更符合 Wiki 惯例的做法是，在我们所属的某个更通用的类目（譬如 Electronic Currency 或 Electronic Cash）里加一段。我们大抵能在那里立住一段。同样，保持简短。仅仅说明它是什么。</p>","zhText":"倘若你要做，我认为理应是一篇相当简短、单段的文章，100 词以内，仅仅说明 Bitcoin 是什么。\n我倒希望他们别删文章，而是加一个长度限制。倘若某样东西还不够有名，至少能够有一篇 stub 文章说明它是什么。我经常遇到恼人的红链，那些东西 Wiki 至少理应听说过。\n文章能够简单到类似这样：\n\"Bitcoin is a peer-to-peer decentralised /link/electronic currency/link/.\"\n更符合 Wiki 惯例的做法是，在我们所属的某个更通用的类目（譬如 Electronic Currency 或 Electronic Cash）里加一段。我们大抵能在那里立住一段。同样，保持简短。仅仅说明它是什么。"},{"id":2851,"sid":468,"sat":1,"tid":228,"tt":"Prioritized transactions, and tx fees","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T18:11:56Z","url":"https://bitcointalk.org/index.php?topic=1314.msg14732#msg14732","zh":"<p>它随区块填满逐步抬高手续费要求：</p><p><50KB  免费\n50KB   0.01\n250KB  0.02\n333KB  0.03\n375KB  0.04\n以此类推。</p><p>这是典型的定价机制。前 50KB 卖完后，价格涨到 0.01。250KB 卖完后，涨到 0.02。到了某个价格，只要你愿意出价比其他客户高，你几乎总能挤进去。</p><p>仅仅附上最低的 0.01 就已然大有帮助。</p>","zhText":"它随区块填满逐步抬高手续费要求：\n这是典型的定价机制。前 50KB 卖完后，价格涨到 0.01。250KB 卖完后，涨到 0.02。到了某个价格，只要你愿意出价比其他客户高，你几乎总能挤进去。\n仅仅附上最低的 0.01 就已然大有帮助。"},{"id":2852,"sid":null,"sat":0,"tid":228,"tt":"Prioritized transactions, and tx fees","src":"Bitcointalk","author":"theymos","date":"2010-09-30","ts":"2010-09-30T18:16:36Z","url":"https://bitcointalk.org/index.php?topic=1314.msg14733#msg14733","zh":"<p>不过那是每 KB 的成本，而一个 KB 仅仅能装约 9 个 TxIns，因而 0.01 并不保证满足要求。</p>","zhText":"不过那是每 KB 的成本，而一个 KB 仅仅能装约 9 个 TxIns，因而 0.01 并不保证满足要求。"},{"id":2853,"sid":469,"sat":1,"tid":228,"tt":"Prioritized transactions, and tx fees","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T18:22:22Z","url":"https://bitcointalk.org/index.php?topic=1314.msg14734#msg14734","zh":"<p>没错，这个开关理应更动态、按 KB 付费。不过是更难想清楚该怎么解释。</p>","zhText":"没错，这个开关理应更动态、按 KB 付费。不过是更难想清楚该怎么解释。"},{"id":2823,"sid":470,"sat":1,"tid":226,"tt":"Remote RPC access","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-09-30","ts":"2010-09-30T18:27:41Z","url":"https://bitcointalk.org/index.php?topic=1291.msg14736#msg14736","zh":"<p>倘若你在自己的局域网内使用，它能够安全，譬如你在一个场所有多台服务器互相通信。</p><p>0.3.13 RC1 的 Windows 版已可用：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe</a></p>","zhText":"倘若你在自己的局域网内使用，它能够安全，譬如你在一个场所有多台服务器互相通信。\n0.3.13 RC1 的 Windows 版已可用：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe"},{"id":2855,"sid":null,"sat":0,"tid":229,"tt":"0.3.13 RC1 for Windows, please test","src":"Bitcointalk","author":"LZ","date":"2010-09-30","ts":"2010-09-30T23:24:36Z","url":"https://bitcointalk.org/index.php?topic=1322.msg14782#msg14782","zh":"<p>要不要把<a href=\"https://bitcointalk.org/index.php?topic=151.msg14675#msg14675\">俄语本地化</a>加进 0.3.13？</p>","zhText":"要不要把俄语本地化加进 0.3.13？"},{"id":2856,"sid":471,"sat":1,"tid":229,"tt":"0.3.13 RC1 for Windows, please test","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-01","ts":"2010-10-01T00:32:46Z","url":"https://bitcointalk.org/index.php?topic=1322.msg14787#msg14787","zh":"<p>对 0.3.13 来说太晚了，然而我会尽量找时间把它加进下一个版本。</p>","zhText":"对 0.3.13 来说太晚了，然而我会尽量找时间把它加进下一个版本。"},{"id":2857,"sid":472,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-01","ts":"2010-10-01T00:34:35Z","url":"https://bitcointalk.org/index.php?topic=1327.msg14788#msg14788","zh":"<p>0.3.13 版现已发布。你理应升级，以预防 0/unconfirmed 交易的潜在问题。注意：0.3.13 能在你尚未花掉 0/unconfirmed 交易的情况下防止问题，然而倘若已然发生了，你需要 0.3.13.2。</p><p>变更：\n- 交易没有 1 个确认前不计数、不可花费。\n- 内部版本号从 312 改为 31300。\n- 仅在指定 -allowreceivebyip 时接受按 IP 地址发送的交易。\n- 去掉 DB_PRIVATE Berkeley DB 标志。\n- 修复发送最后一分钱时低于一分找零的问题。\n- 在 Linux 上自动检测是否使用 128 位 4 路 SSE2。\nGavin Andresen：\n- 新增 -rpcallowip= 选项，接受来自其他机器的 json-rpc 连接。\n- Linux 上收到 SIGTERM 时干净关机。</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.13/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.13/</a></p><p>（感谢 Laszlo 提供 Mac OSX 构建！）</p><p>注意：\nLinux 64 位版里的 SSE2 自动检测在 AMD 的 64 位模式下不起作用。请试试这个，并告诉我它是否判断正确：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz</a></p><p>你仍然能够用 -4way 和 -4way=0 手动控制 SSE2。</p><p>0.3.13.2 版（SVN rev 161）针对「你已有 0/unconfirmed 交易且可能已花掉」的情况做了改进。它的 Windows 构建在这里：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe</a></p>","zhText":"0.3.13 版现已发布。你理应升级，以预防 0/unconfirmed 交易的潜在问题。注意：0.3.13 能在你尚未花掉 0/unconfirmed 交易的情况下防止问题，然而倘若已然发生了，你需要 0.3.13.2。\n变更：\n- 交易没有 1 个确认前不计数、不可花费。\n- 内部版本号从 312 改为 31300。\n- 仅在指定 -allowreceivebyip 时接受按 IP 地址发送的交易。\n- 去掉 DB_PRIVATE Berkeley DB 标志。\n- 修复发送最后一分钱时低于一分找零的问题。\n- 在 Linux 上自动检测是否使用 128 位 4 路 SSE2。\nGavin Andresen：\n- 新增 -rpcallowip= 选项，接受来自其他机器的 json-rpc 连接。\n- Linux 上收到 SIGTERM 时干净关机。\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.13/\n（感谢 Laszlo 提供 Mac OSX 构建！）\n注意：\nLinux 64 位版里的 SSE2 自动检测在 AMD 的 64 位模式下不起作用。请试试这个，并告诉我它是否判断正确：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz\n你仍然能够用 -4way 和 -4way=0 手动控制 SSE2。\n0.3.13.2 版（SVN rev 161）针对「你已有 0/unconfirmed 交易且可能已花掉」的情况做了改进。它的 Windows 构建在这里：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe"},{"id":637,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"grondilu","date":"2010-10-01","ts":"2010-10-01T02:16:30Z","url":"https://bitcointalk.org/index.php?topic=151.msg14799#msg14799","zh":"<blockquote><p>除了 kriptomonunuo 的问题，还有一个问题：不管选了哪种语言，右侧菜单对所有语言都是英文！</p></blockquote><p>兴许你应该直接 pm sirius-m。</p><p>然而请先确认翻译现在是正确的，因我猜倘若我们为了翻译两次打扰他，他不会高兴的，尤其是用这种语言！</p>","zhText":"除了 kriptomonunuo 的问题，还有一个问题：不管选了哪种语言，右侧菜单对所有语言都是英文！\n\n兴许你应该直接 pm sirius-m。\n然而请先确认翻译现在是正确的，因我猜倘若我们为了翻译两次打扰他，他不会高兴的，尤其是用这种语言！"},{"id":2807,"sid":null,"sat":0,"tid":222,"tt":"The Niche List","src":"Bitcointalk","author":"kiba","date":"2010-10-01","ts":"2010-10-01T20:39:48Z","url":"https://bitcointalk.org/index.php?topic=1268.msg14902#msg14902","zh":"<p>还想看到哪些服务和商品被实现？有谁在做期待清单上的细分领域吗？</p>","zhText":"还想看到哪些服务和商品被实现？有谁在做期待清单上的细分领域吗？"},{"id":2910,"sid":null,"sat":0,"tid":231,"tt":"How to overthrow the GPU Oligarchs","src":"Bitcointalk","author":"LZ","date":"2010-10-02","ts":"2010-10-02T05:49:47Z","url":"https://bitcointalk.org/index.php?topic=1332.msg14960#msg14960","zh":"<p>能多讲讲这个吗：\n\"<i>they have to do weird things with extraNonce, which increases the size of the block header</i>\"。</p>","zhText":"能多讲讲这个吗：\n\"they have to do weird things with extraNonce, which increases the size of the block header\"。"},{"id":2912,"sid":null,"sat":0,"tid":231,"tt":"How to overthrow the GPU Oligarchs","src":"Bitcointalk","author":"theymos","date":"2010-10-02","ts":"2010-10-02T06:11:11Z","url":"https://bitcointalk.org/index.php?topic=1332.msg14966#msg14966","zh":"<blockquote><p>能多讲讲这个吗：\n\"they have to do weird things with extraNonce, which increases the size of the block header\"。</p></blockquote><p>铸币时，你计算的是区块头的哈希。哈希更多数据比哈希更少数据慢，因而区块头对所有人来说严格保持固定大小，只有一个例外。每次哈希尝试后，你递增 Nonce 头字段，然而这个字段仅仅 32 字节长，经常溢出。每当它溢出，你就递增可变长度的 extraNonce 字段。extraNonce 越大，铸币越慢。不过正常递增的情况下它并不会变得显著地大。</p><p>倘若你有很多台计算机、它们都在用同一个公钥做同一个区块，那么它们很可能在同时哈希同一个区块，这就毫无意义。为解决这个问题，每台计算机被赋予一个唯一的 extraNonce 修饰值。这个值恐要很大才能避免碰撞，因而拖慢了哈希。</p><p>毫无疑问你能够设计一个没有这个缺陷的矿池系统，然而会更难。</p><p>我看到 m0mchil 的 getwork 在对 extraNonce 做文章。我不知道那个实现有多糟，然而理论上它<i>必然</i>比没有它的客户端慢（在其他条件相同时；显然加上 GPU 支持会改善性能）。</p>","zhText":"能多讲讲这个吗：\n\"they have to do weird things with extraNonce, which increases the size of the block header\"。\n\n铸币时，你计算的是区块头的哈希。哈希更多数据比哈希更少数据慢，因而区块头对所有人来说严格保持固定大小，只有一个例外。每次哈希尝试后，你递增 Nonce 头字段，然而这个字段仅仅 32 字节长，经常溢出。每当它溢出，你就递增可变长度的 extraNonce 字段。extraNonce 越大，铸币越慢。不过正常递增的情况下它并不会变得显著地大。\n倘若你有很多台计算机、它们都在用同一个公钥做同一个区块，那么它们很可能在同时哈希同一个区块，这就毫无意义。为解决这个问题，每台计算机被赋予一个唯一的 extraNonce 修饰值。这个值恐要很大才能避免碰撞，因而拖慢了哈希。\n毫无疑问你能够设计一个没有这个缺陷的矿池系统，然而会更难。\n我看到 m0mchil 的 getwork 在对 extraNonce 做文章。我不知道那个实现有多糟，然而理论上它必然比没有它的客户端慢（在其他条件相同时；显然加上 GPU 支持会改善性能）。"},{"id":2860,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"ShadowOfHarbringer","date":"2010-10-02","ts":"2010-10-02T13:00:07Z","url":"https://bitcointalk.org/index.php?topic=1327.msg14997#msg14997","zh":"<p>很好，不过自动 4way 检测在我的 Gentoo AMD 64 位客户端上不工作。</p><p>我还是得自己加 \"-4way\" 开关。</p>","zhText":"很好，不过自动 4way 检测在我的 Gentoo AMD 64 位客户端上不工作。\n我还是得自己加 \"-4way\" 开关。"},{"id":2846,"sid":null,"sat":0,"tid":227,"tt":"I broke my wallet, sends never confirm now.","src":"Bitcointalk","author":"kermit","date":"2010-10-02","ts":"2010-10-02T14:17:40Z","url":"https://bitcointalk.org/index.php?topic=1306.msg15001#msg15001","zh":"<p>因而在 .13 里，1 个确认就足以付钱给别人，然而要 6 个才会在 GUI 里显示「已确认」。这不一致。这枚币足够好到可以付给你，却不够好到让我接受？我不知道 6 背后的逻辑是什么，然而无论它是什么，倘若它不过是用来决定显示哪个词，那它真的还代表着什么吗？</p>","zhText":"因而在 .13 里，1 个确认就足以付钱给别人，然而要 6 个才会在 GUI 里显示「已确认」。这不一致。这枚币足够好到可以付给你，却不够好到让我接受？我不知道 6 背后的逻辑是什么，然而无论它是什么，倘若它不过是用来决定显示哪个词，那它真的还代表着什么吗？"},{"id":2866,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"nanotube","date":"2010-10-03","ts":"2010-10-03T05:59:06Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15072#msg15072","zh":"<blockquote><p>Dwdollar 在 Bitcoin Market 丢了一些 BTC，因有人恶意或无意地给他发了「无法确认」的交易，而他并未升级。现在兴许是测试警报功能的好时机。</p></blockquote><p>我同意。否则这些 0/unconf 交易会在网络里传播，搞坏很多人的钱包。</p>","zhText":"Dwdollar 在 Bitcoin Market 丢了一些 BTC，因有人恶意或无意地给他发了「无法确认」的交易，而他并未升级。现在兴许是测试警报功能的好时机。\n\n我同意。否则这些 0/unconf 交易会在网络里传播，搞坏很多人的钱包。"},{"id":2739,"sid":null,"sat":0,"tid":217,"tt":"Memory leak","src":"Bitcointalk","author":"eurekafag","date":"2010-10-03","ts":"2010-10-03T07:07:42Z","url":"https://bitcointalk.org/index.php?topic=1023.msg15075#msg15075","zh":"<p>用 0.3.13 又出现了那个泄漏。日志在这里：<a href=\"http://pastebin.com/g0gqi7kx\">http://pastebin.com/g0gqi7kx</a> 我做了删节，因连接-断开不断重复、毫无变化，并遮掉了外部静态 IP（它被正确识别）。端口 8333 已转发、外部可见。我关掉它时 bitcoin 的 RES 已涨到 150 Mb。</p>","zhText":"用 0.3.13 又出现了那个泄漏。日志在这里：http://pastebin.com/g0gqi7kx 我做了删节，因连接-断开不断重复、毫无变化，并遮掉了外部静态 IP（它被正确识别）。端口 8333 已转发、外部可见。我关掉它时 bitcoin 的 RES 已涨到 150 Mb。"},{"id":2867,"sid":473,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T18:17:06Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15102#msg15102","zh":"<blockquote><p>很好，不过自动 4way 检测在我的 Gentoo AMD 64 位客户端上不工作。</p><p>我还是得自己加 \"-4way\" 开关。</p></blockquote><p>忘了说，我本来就怀疑检测在 64 位 AMD 上恐怕不工作。我觉得难以置信，然而 AMD 在 64 位模式下报告的型号数字不一样。</p><p>你能 grep 一下 debug.log 里的 CPUID、告诉我它说了什么吗？（其他有 64 位 AMD 的人也请）还有你的 AMD 芯片是什么型号？</p><p>所有支持 64 位的 AMD 亦都有更强的 SSE2 硬件吗？</p>","zhText":"很好，不过自动 4way 检测在我的 Gentoo AMD 64 位客户端上不工作。\n我还是得自己加 \"-4way\" 开关。\n\n忘了说，我本来就怀疑检测在 64 位 AMD 上恐怕不工作。我觉得难以置信，然而 AMD 在 64 位模式下报告的型号数字不一样。\n你能 grep 一下 debug.log 里的 CPUID、告诉我它说了什么吗？（其他有 64 位 AMD 的人也请）还有你的 AMD 芯片是什么型号？\n所有支持 64 位的 AMD 亦都有更强的 SSE2 硬件吗？"},{"id":2868,"sid":474,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T19:39:06Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15110#msg15110","zh":"<p>能请几个人跑一下这个特别构建吗？它会特赦那些灰尘垃圾交易，从而暂时解决 0/unconfirmed 问题。我们其实仅仅需要一个放行它们的区块，就能清理掉以前的交易。倘若你用它生成了区块，请回帖。</p><p>这些只有二进制包。linux 版只有 64 位。\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-win32.zip\">http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-win32.zip</a>\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz\">http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz</a></p><p>SHA1 fb7c66270281ed058c570627cf7baff0bdc16e5d bitcoin-0.3.13.1-specialbuild-win32.zip\nSHA1 9fc44ea5f2109618073e2cfd887e2cc266eb31a9 bitcoin-0.3.13.1-specialbuild-linux64.tar.gz</p><p>linux 64 位版包含对 cpuid 4 路 128 位 SSE2 自动检测的修改（针对 64 位模式下的 AMD），倘若你愿意测试看看是否更好。</p>","zhText":"能请几个人跑一下这个特别构建吗？它会特赦那些灰尘垃圾交易，从而暂时解决 0/unconfirmed 问题。我们其实仅仅需要一个放行它们的区块，就能清理掉以前的交易。倘若你用它生成了区块，请回帖。\n这些只有二进制包。linux 版只有 64 位。\nhttp://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-win32.zip\nhttp://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz\nSHA1 fb7c66270281ed058c570627cf7baff0bdc16e5d bitcoin-0.3.13.1-specialbuild-win32.zip\nSHA1 9fc44ea5f2109618073e2cfd887e2cc266eb31a9 bitcoin-0.3.13.1-specialbuild-linux64.tar.gz\nlinux 64 位版包含对 cpuid 4 路 128 位 SSE2 自动检测的修改（针对 64 位模式下的 AMD），倘若你愿意测试看看是否更好。"},{"id":2869,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"tcatm","date":"2010-10-03","ts":"2010-10-03T19:45:45Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15111#msg15111","zh":"<p>能附上源码吗？或者更好的是这些交易的 diff？我能够在我的 983 Mhash/s 机器上跑。</p>","zhText":"能附上源码吗？或者更好的是这些交易的 diff？我能够在我的 983 Mhash/s 机器上跑。"},{"id":2870,"sid":475,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T19:49:32Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15112#msg15112","zh":"<blockquote><p>983 Mhash/s 的机器。</p></blockquote><p>真的假的？什么硬件？</p>","zhText":"983 Mhash/s 的机器。\n\n真的假的？什么硬件？"},{"id":2871,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"tcatm","date":"2010-10-03","ts":"2010-10-03T19:50:15Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15113#msg15113","zh":"<p>三块 GPU（ATI HD 5870）。</p>","zhText":"三块 GPU（ATI HD 5870）。"},{"id":2872,"sid":476,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T20:02:24Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15116#msg15116","zh":"<pre><code>diff -u old\\main.cpp new\\main.cpp\n--- old\\main.cpp Sun Oct 03 20:57:20 2010\n+++ new\\main.cpp Sun Oct 03 20:57:54 2010\n@@ -2831,6 +2831,10 @@\n     bool fUseSSE2 = ((fIntel &amp;&amp; nFamily * 10000 + nModel >=  60026) ||\n                      (fAMD   &amp;&amp; nFamily * 10000 + nModel >= 160010));\n\n+    // AMD reports a lower model number in 64-bit mode\n+    if (fAMD &amp;&amp; sizeof(void*) > 4 &amp;&amp; nFamily * 10000 + nModel >= 160004)\n+        fUseSSE2 = true;\n+\n     static bool fPrinted;\n     if (!fPrinted)\n     {\n@@ -2989,6 +2993,17 @@\n\n                     // Transaction fee based on block size\n                     int64 nMinFee = tx.GetMinFee(nBlockSize);\n+                    //////// temporary code\n+                    if (nBlockSize &lt; MAX_BLOCK_SIZE_GEN / 10 &amp;&amp; GetWarnings(\"statusbar\") == \"\")\n+                    {\n+                        if (nBestHeight &lt; 91000)\n+                            nMinFee = 0;\n+                        if (nBestHeight &lt; 100000 &amp;&amp; nTxSize &lt; 2000)\n+                            nMinFee = 0;\n+                        if (nBestHeight &lt; 110000 &amp;&amp; nBestHeight % 10 == 0)\n+                            nMinFee = 0;\n+                    }\n+                    //////// temporary code\n\n                     map&lt;uint256, CTxIndex> mapTestPoolTmp(mapTestPool);\n                     if (!tx.ConnectInputs(txdb, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, nFees, false, true, nMinFee))\ndiff -u old\\serialize.h new\\serialize.h\n--- old\\serialize.h Sun Oct 03 20:57:45 2010\n+++ new\\serialize.h Sun Oct 03 20:57:54 2010\n@@ -22,8 +22,8 @@\n class CAutoFile;\n static const unsigned int MAX_SIZE = 0x02000000;\n\n-static const int VERSION = 31300;\n-static const char* pszSubVer = \"\";\n+static const int VERSION = 31301;\n+static const char* pszSubVer = \" test1\";</code></pre>","zhText":"diff -u old\\main.cpp new\\main.cpp\n--- old\\main.cpp Sun Oct 03 20:57:20 2010\n+++ new\\main.cpp Sun Oct 03 20:57:54 2010\n@@ -2831,6 +2831,10 @@\n bool fUseSSE2 = ((fIntel && nFamily * 10000 + nModel >= 60026) ||\n (fAMD && nFamily * 10000 + nModel >= 160010));\n\n+ // AMD reports a lower model number in 64-bit mode\n+ if (fAMD && sizeof(void*) > 4 && nFamily * 10000 + nModel >= 160004)\n+ fUseSSE2 = true;\n+\n static bool fPrinted;\n if (!fPrinted)\n {\n@@ -2989,6 +2993,17 @@\n\n // Transaction fee based on block size\n int64 nMinFee = tx.GetMinFee(nBlockSize);\n+ //////// temporary code\n+ if (nBlockSize < MAX_BLOCK_SIZE_GEN / 10 && GetWarnings(\"statusbar\") == \"\")\n+ {\n+ if (nBestHeight < 91000)\n+ nMinFee = 0;\n+ if (nBestHeight < 100000 && nTxSize < 2000)\n+ nMinFee = 0;\n+ if (nBestHeight < 110000 && nBestHeight % 10 == 0)\n+ nMinFee = 0;\n+ }\n+ //////// temporary code\n\n map<uint256, CTxIndex> mapTestPoolTmp(mapTestPool);\n if (!tx.ConnectInputs(txdb, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, nFees, false, true, nMinFee))\ndiff -u old\\serialize.h new\\serialize.h\n--- old\\serialize.h Sun Oct 03 20:57:45 2010\n+++ new\\serialize.h Sun Oct 03 20:57:54 2010\n@@ -22,8 +22,8 @@\n class CAutoFile;\n static const unsigned int MAX_SIZE = 0x02000000;\n\n-static const int VERSION = 31300;\n-static const char* pszSubVer = \"\";\n+static const int VERSION = 31301;\n+static const char* pszSubVer = \" test1\";"},{"id":2873,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"theymos","date":"2010-10-03","ts":"2010-10-03T20:09:51Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15118#msg15118","zh":"<p>ArtForz 已然在免手续费运行了，他占全网算力的 20-30%。不过，最初发送这些坏交易的人已然删掉了自己的钱包，网络亦忘掉了这些历史交易，因而基于此的交易无法确认。</p>","zhText":"ArtForz 已然在免手续费运行了，他占全网算力的 20-30%。不过，最初发送这些坏交易的人已然删掉了自己的钱包，网络亦忘掉了这些历史交易，因而基于此的交易无法确认。"},{"id":2874,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"tcatm","date":"2010-10-03","ts":"2010-10-03T20:10:47Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15119#msg15119","zh":"<p>已然在跑了。3 小时内理应能出一个块。</p>","zhText":"已然在跑了。3 小时内理应能出一个块。"},{"id":2918,"sid":null,"sat":0,"tid":231,"tt":"How to overthrow the GPU Oligarchs","src":"Bitcointalk","author":"kiba","date":"2010-10-03","ts":"2010-10-03T20:12:03Z","url":"https://bitcointalk.org/index.php?topic=1332.msg15120#msg15120","zh":"<blockquote><p>我更担心的是一个控制僵尸网络的人能干什么。</p></blockquote><p>那就算僵尸网络生成了所有这些比特币又如何？他不过能让市场为他的钱动一动。没什么大不了。</p>","zhText":"我更担心的是一个控制僵尸网络的人能干什么。\n\n那就算僵尸网络生成了所有这些比特币又如何？他不过能让市场为他的钱动一动。没什么大不了。"},{"id":3136,"sid":null,"sat":0,"tid":233,"tt":"[PATCH] increase block size limit","src":"Bitcointalk","author":"theymos","date":"2010-10-03","ts":"2010-10-03T20:28:39Z","url":"https://bitcointalk.org/index.php?topic=1347.msg15126#msg15126","zh":"<p>应用这个补丁会让你与其他 Bitcoin 客户端不兼容。</p>","zhText":"应用这个补丁会让你与其他 Bitcoin 客户端不兼容。"},{"id":2875,"sid":477,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T20:54:07Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15136#msg15136","zh":"<blockquote><p>ArtForz 已然在免手续费运行了，他占全网算力的 20-30%。不过，最初发送这些坏交易的人已然删掉了自己的钱包，网络亦忘掉了这些历史交易，因而基于此的交易无法确认。</p></blockquote><p>在你的节点拥有一条回溯到区块链的交易路径之前，交易不会被接受、亦不会显示为 0/unconfirmed。</p><p>你钱包里的任何交易亦都捆绑着抵达区块链所需的全部未记录交易。倘若你有一笔显示为 0/unconfirmed 的交易，那么它依赖的所有先前未记录交易你都有，你重播自己的交易时亦会一并重播它们。</p><p>倘若免手续费的区块已然生成、却没起作用，那我需要看看哪里出了问题。这是一段很少被用到的代码。它们本应被记录进每一个持有依赖交易的节点的钱包里。</p><blockquote><p>最初发送这些坏交易的人已然删掉了自己的钱包</p></blockquote><p>叹气……为什么要删除钱包，而不是把它移到一边、留个旧副本以防万一？永远不要删除钱包。</p><blockquote><p>已然在跑了。3 小时内理应能出一个块。</p></blockquote><p>收集重播交易恐需要一段时间。倘若你能接受入站连接会更有帮助，如此你能听到更多节点。就算你 3 小时内出了块，亦请至少连续跑上几天。</p>","zhText":"ArtForz 已然在免手续费运行了，他占全网算力的 20-30%。不过，最初发送这些坏交易的人已然删掉了自己的钱包，网络亦忘掉了这些历史交易，因而基于此的交易无法确认。\n\n在你的节点拥有一条回溯到区块链的交易路径之前，交易不会被接受、亦不会显示为 0/unconfirmed。\n你钱包里的任何交易亦都捆绑着抵达区块链所需的全部未记录交易。倘若你有一笔显示为 0/unconfirmed 的交易，那么它依赖的所有先前未记录交易你都有，你重播自己的交易时亦会一并重播它们。\n倘若免手续费的区块已然生成、却没起作用，那我需要看看哪里出了问题。这是一段很少被用到的代码。它们本应被记录进每一个持有依赖交易的节点的钱包里。\n最初发送这些坏交易的人已然删掉了自己的钱包\n\n叹气……为什么要删除钱包，而不是把它移到一边、留个旧副本以防万一？永远不要删除钱包。\n已然在跑了。3 小时内理应能出一个块。\n\n收集重播交易恐需要一段时间。倘若你能接受入站连接会更有帮助，如此你能听到更多节点。就算你 3 小时内出了块，亦请至少连续跑上几天。"},{"id":3137,"sid":478,"sat":1,"tid":233,"tt":"[PATCH] increase block size limit","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T21:07:28Z","url":"https://bitcointalk.org/index.php?topic=1347.msg15139#msg15139","zh":"<blockquote><p>应用这个补丁会让你与其他 Bitcoin 客户端不兼容。</p></blockquote><p>+1 theymos。别用这个补丁，它会让你与网络不兼容，损人不利己。</p><p>将来倘若更接近需要了，我们能够分阶段引入变更。</p>","zhText":"应用这个补丁会让你与其他 Bitcoin 客户端不兼容。\n\n+1 theymos。别用这个补丁，它会让你与网络不兼容，损人不利己。\n将来倘若更接近需要了，我们能够分阶段引入变更。"},{"id":2919,"sid":479,"sat":1,"tid":231,"tt":"How to overthrow the GPU Oligarchs","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T21:30:04Z","url":"https://bitcointalk.org/index.php?topic=1332.msg15142#msg15142","zh":"<blockquote><p>铸币时，你计算的是区块头的哈希。哈希更多数据比哈希更少数据慢，因而区块头对所有人来说严格保持固定大小，只有一个例外。</p></blockquote><p>这正是困惑的所在。extraNonce 不是区块头的一部分，它是第一笔交易的一部分。它并不会拖慢你的哈希。它并不改变头的大小。</p><p>我们务必保持警惕，把这个「区块内容会拖慢哈希速度」的误解扼杀在萌芽里。它并不会。</p><p>extraNonce 永远不需要很大。只要我们愿意，每次时间字段变化时都能够把它重置。最坏情况下，倘若你不想跟踪递增，extraNonce 可以是 4 个随机字节，碰撞浪费时间的概率微乎其微。</p><p>各自独立的机器天然免疫碰撞，因它们在第一笔交易里有各自生成的公钥。这对每个线程同样成立。</p>","zhText":"铸币时，你计算的是区块头的哈希。哈希更多数据比哈希更少数据慢，因而区块头对所有人来说严格保持固定大小，只有一个例外。\n\n这正是困惑的所在。extraNonce 不是区块头的一部分，它是第一笔交易的一部分。它并不会拖慢你的哈希。它并不改变头的大小。\n我们务必保持警惕，把这个「区块内容会拖慢哈希速度」的误解扼杀在萌芽里。它并不会。\nextraNonce 永远不需要很大。只要我们愿意，每次时间字段变化时都能够把它重置。最坏情况下，倘若你不想跟踪递增，extraNonce 可以是 4 个随机字节，碰撞浪费时间的概率微乎其微。\n各自独立的机器天然免疫碰撞，因它们在第一笔交易里有各自生成的公钥。这对每个线程同样成立。"},{"id":2878,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"ShadowOfHarbringer","date":"2010-10-03","ts":"2010-10-03T21:36:11Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15144#msg15144","zh":"<blockquote><p>忘了说，我本来就怀疑检测在 64 位 AMD 上恐怕不工作。我觉得难以置信，然而 AMD 在 64 位模式下报告的型号数字不一样。</p><p>你能 grep 一下 debug.log 里的 CPUID、告诉我它说了什么吗？（其他有 64 位 AMD 的人也请）还有你的 AMD 芯片是什么型号？</p><p>所有支持 64 位的 AMD 亦都有更强的 SSE2 硬件吗？</p></blockquote><p>如此够吗？：</p><pre><code>cat /proc/cpuinfo\nprocessor       : 0\nvendor_id       : AuthenticAMD\ncpu family      : 16\nmodel           : 2\nmodel name      : AMD Phenom(tm) 9850 Quad-Core Processor\nstepping        : 3\ncpu MHz         : 2508.353\ncache size      : 512 KB\nphysical id     : 0\nsiblings        : 4\ncore id         : 0\ncpu cores       : 4\napicid          : 0\ninitial apicid  : 0\nfpu             : yes\nfpu_exception   : yes\ncpuid level     : 5\nwp              : yes\nflags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs npt lbrv svm_lock\nbogomips        : 5018.72\nTLB size        : 1024 4K pages\nclflush size    : 64\ncache_alignment : 64\naddress sizes   : 48 bits physical, 48 bits virtual\npower management: ts ttp tm stc 100mhzsteps hwpstate</code></pre><p>编辑：\n另外，我刚搞明白 cpuid 那玩意儿怎么弄：</p><pre><code>CPUID 444d4163 family 16, model 2, stepping 3, fUseSSE2=0</code></pre>","zhText":"忘了说，我本来就怀疑检测在 64 位 AMD 上恐怕不工作。我觉得难以置信，然而 AMD 在 64 位模式下报告的型号数字不一样。\n你能 grep 一下 debug.log 里的 CPUID、告诉我它说了什么吗？（其他有 64 位 AMD 的人也请）还有你的 AMD 芯片是什么型号？\n所有支持 64 位的 AMD 亦都有更强的 SSE2 硬件吗？\n\n如此够吗？：\ncat /proc/cpuinfo\nprocessor : 0\nvendor_id : AuthenticAMD\ncpu family : 16\nmodel : 2\nmodel name : AMD Phenom(tm) 9850 Quad-Core Processor\nstepping : 3\ncpu MHz : 2508.353\ncache size : 512 KB\nphysical id : 0\nsiblings : 4\ncore id : 0\ncpu cores : 4\napicid : 0\ninitial apicid : 0\nfpu : yes\nfpu_exception : yes\ncpuid level : 5\nwp : yes\nflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs npt lbrv svm_lock\nbogomips : 5018.72\nTLB size : 1024 4K pages\nclflush size : 64\ncache_alignment : 64\naddress sizes : 48 bits physical, 48 bits virtual\npower management: ts ttp tm stc 100mhzsteps hwpstate编辑：\n另外，我刚搞明白 cpuid 那玩意儿怎么弄：\nCPUID 444d4163 family 16, model 2, stepping 3, fUseSSE2=0"},{"id":2879,"sid":480,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T21:43:20Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15147#msg15147","zh":"<p>ShadowOfHarbringer，你的机器用 -4way 更快吗？</p><p>倘若如此，那我在想：所有支持 64 位的 AMD 是不是都有 128 位 SSE2。</p><p>我在这里发的 specialbuild 版本找的是型号 4 或更高。倘若你的机器用 -4way 更快，那我就理应把它改成：任何支持 64 位的 AMD 都使用 SSE2。</p>","zhText":"ShadowOfHarbringer，你的机器用 -4way 更快吗？\n倘若如此，那我在想：所有支持 64 位的 AMD 是不是都有 128 位 SSE2。\n我在这里发的 specialbuild 版本找的是型号 4 或更高。倘若你的机器用 -4way 更快，那我就理应把它改成：任何支持 64 位的 AMD 都使用 SSE2。"},{"id":2740,"sid":481,"sat":1,"tid":217,"tt":"Memory leak","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T22:07:00Z","url":"https://bitcointalk.org/index.php?topic=1023.msg15150#msg15150","zh":"<p>你在连接自己。全部 21 次连接尝试都是对版本 31300（0.3.13）的节点。并非每个人都有 0.3.13。</p><p>IRC 看起来在正常工作。它理应尚有别的节点可试。</p><p>恐怕有什么我需要做的，确保它在断开后不会立刻再次尝试连接自己。不过我看不出这是怎么发生的，它理应重置 nLastTry、把自己排到队列末尾，然而日志里没有体现。</p><p>你能够把 addr.dat 移走试试。兴许它里面有什么不对。</p><p>你在用 -addnode 吗？</p>","zhText":"你在连接自己。全部 21 次连接尝试都是对版本 31300（0.3.13）的节点。并非每个人都有 0.3.13。\nIRC 看起来在正常工作。它理应尚有别的节点可试。\n恐怕有什么我需要做的，确保它在断开后不会立刻再次尝试连接自己。不过我看不出这是怎么发生的，它理应重置 nLastTry、把自己排到队列末尾，然而日志里没有体现。\n你能够把 addr.dat 移走试试。兴许它里面有什么不对。\n你在用 -addnode 吗？"},{"id":2884,"sid":null,"sat":0,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"lfm","date":"2010-10-03","ts":"2010-10-03T23:44:39Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15166#msg15166","zh":"<blockquote><p>我注意到这些选项并未出现在 --help 输出里……--help 不是理应完整列出这些选项吗？（尤其是官方发布包里既无 manpage 亦无其他帮助文档的情况下？）</p><p>不过是随口一问，希望结果能进下一个版本。</p></blockquote><p>命令行开关列在 \"bitcoind -?\" 里，不是 \"bitcoind help\"。不过你仍然是对的，那些选项在 \"-?\" 里亦缺失。</p>","zhText":"我注意到这些选项并未出现在 --help 输出里……--help 不是理应完整列出这些选项吗？（尤其是官方发布包里既无 manpage 亦无其他帮助文档的情况下？）\n不过是随口一问，希望结果能进下一个版本。\n\n命令行开关列在 \"bitcoind -?\" 里，不是 \"bitcoind help\"。不过你仍然是对的，那些选项在 \"-?\" 里亦缺失。"},{"id":2885,"sid":482,"sat":1,"tid":230,"tt":"Version 0.3.13, please upgrade","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-03","ts":"2010-10-03T23:46:19Z","url":"https://bitcointalk.org/index.php?topic=1327.msg15167#msg15167","zh":"<p>确保你的节点保持在线，如此它才能持续重播交易 b412a0。从 29/09/2010 16:41 起就未见它重播过了。</p>","zhText":"确保你的节点保持在线，如此它才能持续重播交易 b412a0。从 29/09/2010 16:41 起就未见它重播过了。"},{"id":638,"sid":483,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-04","ts":"2010-10-04T01:44:41Z","url":"https://bitcointalk.org/index.php?topic=151.msg15176#msg15176","zh":"<p>谢谢 eurekafag，俄语翻译已加入 SVN rev 160。</p>","zhText":"谢谢 eurekafag，俄语翻译已加入 SVN rev 160。"},{"id":639,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"eurekafag","date":"2010-10-04","ts":"2010-10-04T10:55:56Z","url":"https://bitcointalk.org/index.php?topic=151.msg15248#msg15248","zh":"<p>很高兴听到这个。我在哪里能找到最新的英文 .po 文件，好让翻译保持同步？</p>","zhText":"很高兴听到这个。我在哪里能找到最新的英文 .po 文件，好让翻译保持同步？"},{"id":3142,"sid":null,"sat":0,"tid":233,"tt":"[PATCH] increase block size limit","src":"Bitcointalk","author":"jgarzik","date":"2010-10-04","ts":"2010-10-04T18:33:55Z","url":"https://bitcointalk.org/index.php?topic=1347.msg15342#msg15342","zh":"<blockquote><p>不，倘若仅仅少数人改变行为，那才叫不兼容。要向全网推出一项变更，你需要让大多数客户端同时理解旧协议和新协议，进而当你占多数时再启用新协议。</p></blockquote><p>你刚才描述的就是一次全网升级。我会把那称为不兼容的变更。</p><p>提高交易速率上限所需的努力，和改变 bitcoin 根本性质所需的努力是一样的：说服绝大多数人升级。</p>","zhText":"不，倘若仅仅少数人改变行为，那才叫不兼容。要向全网推出一项变更，你需要让大多数客户端同时理解旧协议和新协议，进而当你占多数时再启用新协议。\n\n你刚才描述的就是一次全网升级。我会把那称为不兼容的变更。\n提高交易速率上限所需的努力，和改变 bitcoin 根本性质所需的努力是一样的：说服绝大多数人升级。"},{"id":642,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"sirius","date":"2010-10-04","ts":"2010-10-04T18:40:49Z","url":"https://bitcointalk.org/index.php?topic=151.msg15344#msg15344","zh":"<blockquote><p>我打算把这个页面翻译成波兰语。我猜我要做的就是查看原页面的 HTML 源码，进而把英文替换成波兰语？</p></blockquote><p>是的，然而仅仅翻译内容部分，不翻译下载部分。</p><blockquote><p>认真问一句：有谁能把世界语页面里的 \"Kriptomonunuo\" 换成 \"Cxifromono\" 吗？</p></blockquote><p>已完成</p>","zhText":"我打算把这个页面翻译成波兰语。我猜我要做的就是查看原页面的 HTML 源码，进而把英文替换成波兰语？\n\n是的，然而仅仅翻译内容部分，不翻译下载部分。\n认真问一句：有谁能把世界语页面里的 \"Kriptomonunuo\" 换成 \"Cxifromono\" 吗？\n\n已完成"},{"id":643,"sid":484,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-04","ts":"2010-10-04T19:21:01Z","url":"https://bitcointalk.org/index.php?topic=151.msg15360#msg15360","zh":"<blockquote><p>我在哪里能找到最新的英文 .po 文件，好让翻译保持同步？</p></blockquote><p>poedit 能做这件事。要么从发布包里取 src 目录，要么用 SVN 下载。把你的 .po 文件放在 src 目录下第 3 层深的地方。用 poedit 打开它，执行 Catalog->Update from sources。</p><p>举例来说，你有：\nsrc\nsrc\\base58.h\nsrc\\bignum.h\n...\nsrc\\util.cpp\nsrc\\util.h\nsrc\\xpm\nsrc\\localeu\\LC_MESSAGES\\bitcoin.po</p><p>用 poedit 打开 bitcoin.po，执行 Catalog->Update from sources。它会从 bitcoin.po 所在位置向上 3 层目录（..\\..\\..）寻找源码。</p><p>这会更新你已然做过的 .po 文件并加入所有新字符串。它恐会尝试匹配相近的字符串，因而检查一遍，确认它没做出任何错误的猜测。</p><p>务必使用我上传到 SVN 或发布包里的 .po 文件，因我总会修好至少几处东西。我把你的俄语那份附在这条消息里。</p>","zhText":"我在哪里能找到最新的英文 .po 文件，好让翻译保持同步？\n\npoedit 能做这件事。要么从发布包里取 src 目录，要么用 SVN 下载。把你的 .po 文件放在 src 目录下第 3 层深的地方。用 poedit 打开它，执行 Catalog->Update from sources。\n举例来说，你有：\nsrc\nsrc\\base58.h\nsrc\\bignum.h\n...\nsrc\\util.cpp\nsrc\\util.h\nsrc\\xpm\nsrc\\localeu\\LC_MESSAGES\\bitcoin.po\n用 poedit 打开 bitcoin.po，执行 Catalog->Update from sources。它会从 bitcoin.po 所在位置向上 3 层目录（..\\..\\..）寻找源码。\n这会更新你已然做过的 .po 文件并加入所有新字符串。它恐会尝试匹配相近的字符串，因而检查一遍，确认它没做出任何错误的猜测。\n务必使用我上传到 SVN 或发布包里的 .po 文件，因我总会修好至少几处东西。我把你的俄语那份附在这条消息里。"},{"id":3143,"sid":485,"sat":1,"tid":233,"tt":"[PATCH] increase block size limit","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-04","ts":"2010-10-04T19:48:40Z","url":"https://bitcointalk.org/index.php?topic=1347.msg15366#msg15366","zh":"<p>它能够分阶段引入，譬如：</p><p>if (blocknumber > 115000)\n    maxblocksize = largerlimit</p><p>它能够提前很多个版本就写进去，如此等到到达那个区块号、真正生效时，没有它的旧版本早已被淘汰。</p><p>接近截止区块号时，我能够向旧版本发警报，确保它们知道自己务必升级。</p>","zhText":"它能够分阶段引入，譬如：\nif (blocknumber > 115000)\n maxblocksize = largerlimit\n它能够提前很多个版本就写进去，如此等到到达那个区块号、真正生效时，没有它的旧版本早已被淘汰。\n接近截止区块号时，我能够向旧版本发警报，确保它们知道自己务必升级。"},{"id":644,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"eurekafag","date":"2010-10-05","ts":"2010-10-05T07:50:48Z","url":"https://bitcointalk.org/index.php?topic=151.msg15456#msg15456","zh":"<p>真惭愧，我之前并不知道有这么好用的工具。感谢清晰的说明，我已按 rev160 更新了翻译。我理应多久审查并更新一次翻译？每次修订都做不是问题，然而我不想每 2-3 天就往这个主题里灌一次翻译。兴许发布一个「几天后出新版本」的公告比较好，好让翻译者及时更新他们的文件？</p>","zhText":"真惭愧，我之前并不知道有这么好用的工具。感谢清晰的说明，我已按 rev160 更新了翻译。我理应多久审查并更新一次翻译？每次修订都做不是问题，然而我不想每 2-3 天就往这个主题里灌一次翻译。兴许发布一个「几天后出新版本」的公告比较好，好让翻译者及时更新他们的文件？"},{"id":3146,"sid":null,"sat":0,"tid":234,"tt":"Tor connections not working reliably, many seednodes offline","src":"Bitcointalk","author":"The Madhatter","date":"2010-10-06","ts":"2010-10-06T03:01:14Z","url":"https://bitcointalk.org/index.php?topic=1375.msg15596#msg15596","zh":"<p>通过 Tor 做种子引导很轻松。有 7 个 .onion 节点能够提供 IP。我还会用 '-noirc' 干脆关掉 IRC 那套来提速。</p><p>见 <a href=\"https://www.bitcoin.org/smf/index.php?topic=59.msg14635#msg14635\">https://www.bitcoin.org/smf/index.php?topic=59.msg14635#msg14635</a></p>","zhText":"通过 Tor 做种子引导很轻松。有 7 个 .onion 节点能够提供 IP。我还会用 '-noirc' 干脆关掉 IRC 那套来提速。\n见 https://www.bitcoin.org/smf/index.php?topic=59.msg14635#msg14635"},{"id":645,"sid":486,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-06","ts":"2010-10-06T15:42:39Z","url":"https://bitcointalk.org/index.php?topic=151.msg15660#msg15660","zh":"<p>poedit 不知为什么重排了文件。我重跑了一次 update from sources，它把顺序放回原样，因而现在没问题了。你是在一个文件不按字母序排列的盘上运行的吗，譬如 FAT 盘或 U 盘？</p><p>字符串不常新增或修改。要积累几个月才有足够的变更。</p><p>我已上传变更。</p><p>这个 Windows 构建内含俄语翻译：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe</a></p>","zhText":"poedit 不知为什么重排了文件。我重跑了一次 update from sources，它把顺序放回原样，因而现在没问题了。你是在一个文件不按字母序排列的盘上运行的吗，譬如 FAT 盘或 U 盘？\n字符串不常新增或修改。要积累几个月才有足够的变更。\n我已上传变更。\n这个 Windows 构建内含俄语翻译：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe"},{"id":2847,"sid":487,"sat":1,"tid":227,"tt":"I broke my wallet, sends never confirm now.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-06","ts":"2010-10-06T16:54:23Z","url":"https://bitcointalk.org/index.php?topic=1306.msg15672#msg15672","zh":"<p>那更多是 SelectCoins 层面的事。</p><p>SVN rev 161 有一个改进：递归判断你自己的未确认交易能否被花费。这是必需的，因你理应能立刻花掉自己的找零。</p><p>新的递归判定是：0/unconfirmed 能够花费，条件是它是你的，而且它的所有依赖要么已进区块、要么亦是你的。</p><p>这是一个 Windows 构建：\n<a href=\"http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe\">http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe</a></p><p>倘若你已然有 0/unconfirmed 交易、而且可能已然花过它，这个版本是个改进。倘若你是某笔 0/unconfirmed 交易的原始创建者，你仍然需要用 theymos 的补丁。</p>","zhText":"那更多是 SelectCoins 层面的事。\nSVN rev 161 有一个改进：递归判断你自己的未确认交易能否被花费。这是必需的，因你理应能立刻花掉自己的找零。\n新的递归判定是：0/unconfirmed 能够花费，条件是它是你的，而且它的所有依赖要么已进区块、要么亦是你的。\n这是一个 Windows 构建：\nhttp://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe\n倘若你已然有 0/unconfirmed 交易、而且可能已然花过它，这个版本是个改进。倘若你是某笔 0/unconfirmed 交易的原始创建者，你仍然需要用 theymos 的补丁。"},{"id":3147,"sid":488,"sat":1,"tid":234,"tt":"Tor connections not working reliably, many seednodes offline","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-06","ts":"2010-10-06T17:36:41Z","url":"https://bitcointalk.org/index.php?topic=1375.msg15682#msg15682","zh":"<p>兴许你不过是运气不好，摊上一个并无反向解析的出口节点。</p><p>IRC 服务器的响应看起来并不像是为此把你断开。它本该在那之后输出 IRC SENDING: NICK，然而它并未，于是超时了。</p><p>我看到问题了。IRC 代码在等一些特定短语来判断服务器何时准备好接收你的 NICK，然而它并未在找那一条特定的短语。我会修。</p><p>我不确定是否真的必须等服务器查完主机名才能发 nick。</p><p>第一次用 TOR，还得靠种子节点，花了多久才连上？</p>","zhText":"兴许你不过是运气不好，摊上一个并无反向解析的出口节点。\nIRC 服务器的响应看起来并不像是为此把你断开。它本该在那之后输出 IRC SENDING: NICK，然而它并未，于是超时了。\n我看到问题了。IRC 代码在等一些特定短语来判断服务器何时准备好接收你的 NICK，然而它并未在找那一条特定的短语。我会修。\n我不确定是否真的必须等服务器查完主机名才能发 nick。\n第一次用 TOR，还得靠种子节点，花了多久才连上？"},{"id":646,"sid":null,"sat":0,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"eurekafag","date":"2010-10-06","ts":"2010-10-06T19:39:36Z","url":"https://bitcointalk.org/index.php?topic=151.msg15697#msg15697","zh":"<p>真奇怪。我在惯用的 XFS 上运行的，新出现的未翻译字符串跑到了顶部。顺序有那么重要吗？我想对程序和对翻译者都不重要，因用 poedit 的人总能查到某个字符串属于哪里。顺便说一句，有一些相似的行兴许能够合并成一行。它们意思相当接近，不过差 1-2 个词。当然只是个建议。</p>","zhText":"真奇怪。我在惯用的 XFS 上运行的，新出现的未翻译字符串跑到了顶部。顺序有那么重要吗？我想对程序和对翻译者都不重要，因用 poedit 的人总能查到某个字符串属于哪里。顺便说一句，有一些相似的行兴许能够合并成一行。它们意思相当接近，不过差 1-2 个词。当然只是个建议。"},{"id":2808,"sid":489,"sat":1,"tid":222,"tt":"The Niche List","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-06","ts":"2010-10-06T23:10:31Z","url":"https://bitcointalk.org/index.php?topic=1268.msg15741#msg15741","zh":"<blockquote><p>1. 像 rapidshare 和其他破托管一样的下载站。麻烦的验证码和强制的 paypal。Bitcoin 或许能同时顶替两者并理顺整个流程。</p></blockquote><p>重复一下我自己说过的话：这有现成的开源软件，因而只需加装一个 Bitcoin 支付机制。我找到的一个好东西是 Mihalism Multi Host。它按免费托管设计，因而只需稍作调整、放宽限制以配合付费使用。</p>","zhText":"1. 像 rapidshare 和其他破托管一样的下载站。麻烦的验证码和强制的 paypal。Bitcoin 或许能同时顶替两者并理顺整个流程。\n\n重复一下我自己说过的话：这有现成的开源软件，因而只需加装一个 Bitcoin 支付机制。我找到的一个好东西是 Mihalism Multi Host。它按免费托管设计，因而只需稍作调整、放宽限制以配合付费使用。"},{"id":3148,"sid":490,"sat":1,"tid":235,"tt":"Key pool feature for safer wallet backup","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-09","ts":"2010-10-09T20:19:33Z","url":"https://bitcointalk.org/index.php?topic=1414.msg16316#msg16316","zh":"<p>SVN rev 163（版本 0.3.13.3）加入了密钥池功能。预生成的新密钥先在队列里放置一段时间再启用，如此 wallet.dat 的备份就持有你将来会用到的密钥。</p><p>眼下我把默认池大小设为 100。能够用 -keypool= 配置。注意，增大池需要一些时间，因而别玩过头。磁盘占用约为每把密钥 1K。</p><p>恢复那一侧我尚未处理。倘若你真的恢复了一个旧的 wallet.dat，我想你恐怕得删掉 blk*.dat，让重新下载时找回自己的交易。</p><p>我仅仅做过中等程度的测试。在它经过更多测试之前，网站服务器恐怕不该用它。</p>","zhText":"SVN rev 163（版本 0.3.13.3）加入了密钥池功能。预生成的新密钥先在队列里放置一段时间再启用，如此 wallet.dat 的备份就持有你将来会用到的密钥。\n眼下我把默认池大小设为 100。能够用 -keypool= 配置。注意，增大池需要一些时间，因而别玩过头。磁盘占用约为每把密钥 1K。\n恢复那一侧我尚未处理。倘若你真的恢复了一个旧的 wallet.dat，我想你恐怕得删掉 blk*.dat，让重新下载时找回自己的交易。\n我仅仅做过中等程度的测试。在它经过更多测试之前，网站服务器恐怕不该用它。"},{"id":3149,"sid":491,"sat":1,"tid":236,"tt":"Version 0.3.14","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-21","ts":"2010-10-21T16:39:27Z","url":"https://bitcointalk.org/index.php?topic=1528.msg17924#msg17924","zh":"<p>0.3.14 版现已发布\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.14/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.14/</a></p><p>变更：\n- 密钥池功能，更安全的钱包备份\nGavin Andresen：\n- 用 -testnet 开关进入 TEST 测试网模式\n- unix/osx 上可选用 SSL 进行 JSON-RPC 连接\n- validateaddress RPC 命令\neurekafag：\n- 俄语翻译</p>","zhText":"0.3.14 版现已发布\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.14/\n变更：\n- 密钥池功能，更安全的钱包备份\nGavin Andresen：\n- 用 -testnet 开关进入 TEST 测试网模式\n- unix/osx 上可选用 SSL 进行 JSON-RPC 连接\n- validateaddress RPC 命令\neurekafag：\n- 俄语翻译"},{"id":3151,"sid":null,"sat":0,"tid":237,"tt":"ERROR - PLEASE HELP ME!","src":"Bitcointalk","author":"theymos","date":"2010-10-21","ts":"2010-10-21T22:00:26Z","url":"https://bitcointalk.org/index.php?topic=1530.msg17955#msg17955","zh":"<p>Dhaw 发来了他的一些 debug.log 文件。我看到的症状：\n- 在大部分文件里，他的区块数一直「卡」在 1698。\n- 在一个文件里他接受了超过该数的区块，然而重启 Bitcoin 后又<i>退回</i> 1698。\n- 1698 之后收到的任何区块他恐都判定为无效。我并未看到实际的区块拒绝（不断被自动裁剪删掉），然而他的 debug.log 里满是针对他明显不认可为有效的区块的 \"block xxx have\" 消息。\n- 他连接的是真实节点。他成功连上了 IRC，亦能用 -addnode 连上我。我在我这端验证了他确实在成功发送 <i>getblocks</i> 消息。</p><p>我几乎可以肯定 Dhaw 不是骗子，而是某个 bug 的受害者。我猜每次他重启 Bitcoin，他的区块数据库都会损坏。</p><p>他讲「葡萄牙语（巴西）」。要是有个翻译就方便了。</p>","zhText":"Dhaw 发来了他的一些 debug.log 文件。我看到的症状：\n- 在大部分文件里，他的区块数一直「卡」在 1698。\n- 在一个文件里他接受了超过该数的区块，然而重启 Bitcoin 后又退回 1698。\n- 1698 之后收到的任何区块他恐都判定为无效。我并未看到实际的区块拒绝（不断被自动裁剪删掉），然而他的 debug.log 里满是针对他明显不认可为有效的区块的 \"block xxx have\" 消息。\n- 他连接的是真实节点。他成功连上了 IRC，亦能用 -addnode 连上我。我在我这端验证了他确实在成功发送 getblocks 消息。\n我几乎可以肯定 Dhaw 不是骗子，而是某个 bug 的受害者。我猜每次他重启 Bitcoin，他的区块数据库都会损坏。\n他讲「葡萄牙语（巴西）」。要是有个翻译就方便了。"},{"id":647,"sid":492,"sat":1,"tid":56,"tt":"Website and software translations","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-21","ts":"2010-10-21T22:50:47Z","url":"https://bitcointalk.org/index.php?topic=151.msg17965#msg17965","zh":"<p>顺序对程序不重要，然而对我这个维护者很重要。倘若 .po 文件的顺序被打乱，我就没法 diff 出变更。每次改动程序里的英文文本，我都要更新全部 7 个翻译文件，它们保持同一顺序会省事很多。</p><p>我仍然能够让 poedit 重新扫描，把顺序放回正常。</p><p>未翻译的字符串显示在顶部是正常的。</p><blockquote><p>顺便说一句，有一些相似的行兴许能够合并成一行。它们意思相当接近，不过差 1-2 个词。当然只是个建议。</p></blockquote><p>我知道，然而不把源码搞复杂的话不容易做到。</p>","zhText":"顺序对程序不重要，然而对我这个维护者很重要。倘若 .po 文件的顺序被打乱，我就没法 diff 出变更。每次改动程序里的英文文本，我都要更新全部 7 个翻译文件，它们保持同一顺序会省事很多。\n我仍然能够让 poedit 重新扫描，把顺序放回正常。\n未翻译的字符串显示在顶部是正常的。\n顺便说一句，有一些相似的行兴许能够合并成一行。它们意思相当接近，不过差 1-2 个词。当然只是个建议。\n\n我知道，然而不把源码搞复杂的话不容易做到。"},{"id":3163,"sid":null,"sat":0,"tid":237,"tt":"ERROR - PLEASE HELP ME!","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-10-22","ts":"2010-10-22T14:25:14Z","url":"https://bitcointalk.org/index.php?topic=1530.msg18074#msg18074","zh":"<p>这些币都是 Dhaw 在他自己（她？）的机器上生成的。</p><p>不幸的是，无论是 bug 还是 Dhaw 网络连接的某种怪异，它们全都生成在一条替代链上。</p><p>Bitcoin 客户端真的不该允许铸币，直到你拥有到最后一个区块检查点为止的全部区块。</p>","zhText":"这些币都是 Dhaw 在他自己（她？）的机器上生成的。\n不幸的是，无论是 bug 还是 Dhaw 网络连接的某种怪异，它们全都生成在一条替代链上。\nBitcoin 客户端真的不该允许铸币，直到你拥有到最后一个区块检查点为止的全部区块。"},{"id":3173,"sid":null,"sat":0,"tid":238,"tt":"Win7 64bit since last patch Tues now crashes","src":"Bitcointalk","author":"Odin","date":"2010-10-22","ts":"2010-10-22T21:24:38Z","url":"https://bitcointalk.org/index.php?topic=1540.msg18105#msg18105","zh":"<p>这来自 0.3.14-win32-setup.exe。之前（直到一小时前）我跑的是 2010 年七月的 bitcoin.exe（它亦崩溃），崩溃报告看起来类似。因而我升级看看问题是否已修。</p><p>澄清一下我说的情况：EXE 一启动就立刻报崩溃。因而我登录时看到 Win7 崩溃报告，手动启动也一样。崩溃报告之外的对话框是「应用程序无法正常启动（0xc0000005）。单击「确定」关闭应用程序。」</p><p>倘若可以的话，请也给这个应用程序 .EXE 打上版本信息，如你所见它现在是 0.0.0.0。</p><pre><code>Problem signature:\n  Problem Event Name: APPCRASH\n  Application Name: bitcoin.exe\n  Application Version: 0.0.0.0\n  Application Timestamp: 4cbf4979\n  Fault Module Name: mingwm10.dll\n  Fault Module Version: 0.0.0.0\n  Fault Module Timestamp: 46b3b561\n  Exception Code: c0000005\n  Exception Offset: 00001470\n  OS Version: 6.1.7600.2.0.0.256.1\n  Locale ID: 2057\n  Additional Information 1: 4c0d\n  Additional Information 2: 4c0d4d78887f76d971d5d00f1f20a433\n  Additional Information 3: 4c0d\n  Additional Information 4: 4c0d4d78887f76d971d5d00f1f20a433</code></pre>","zhText":"这来自 0.3.14-win32-setup.exe。之前（直到一小时前）我跑的是 2010 年七月的 bitcoin.exe（它亦崩溃），崩溃报告看起来类似。因而我升级看看问题是否已修。\n澄清一下我说的情况：EXE 一启动就立刻报崩溃。因而我登录时看到 Win7 崩溃报告，手动启动也一样。崩溃报告之外的对话框是「应用程序无法正常启动（0xc0000005）。单击「确定」关闭应用程序。」\n倘若可以的话，请也给这个应用程序 .EXE 打上版本信息，如你所见它现在是 0.0.0.0。\nProblem signature:\n Problem Event Name: APPCRASH\n Application Name: bitcoin.exe\n Application Version: 0.0.0.0\n Application Timestamp: 4cbf4979\n Fault Module Name: mingwm10.dll\n Fault Module Version: 0.0.0.0\n Fault Module Timestamp: 46b3b561\n Exception Code: c0000005\n Exception Offset: 00001470\n OS Version: 6.1.7600.2.0.0.256.1\n Locale ID: 2057\n Additional Information 1: 4c0d\n Additional Information 2: 4c0d4d78887f76d971d5d00f1f20a433\n Additional Information 3: 4c0d\n Additional Information 4: 4c0d4d78887f76d971d5d00f1f20a433"},{"id":3174,"sid":null,"sat":0,"tid":238,"tt":"Win7 64bit since last patch Tues now crashes","src":"Bitcointalk","author":"Odin","date":"2010-10-22","ts":"2010-10-22T21:30:29Z","url":"https://bitcointalk.org/index.php?topic=1540.msg18108#msg18108","zh":"<p>已然试过关掉 Windows Defender、实时检查、并把 \"C:\\Program Files (x86)\\bitcoin\" 加入排除项，然而没有任何区别。</p><p>就像最近的另一个主题显示的，他们的问题是如此修复的或有潜在的解决方向。</p><p>下面这个主题最接近。我可以说，崩溃始于 2010 年 10 月补丁日（windows 更新，几天前才装上）之后我重启的那一刻。</p><p><a href=\"http://bitcointalk.org/index.php?topic=991.0\">http://bitcointalk.org/index.php?topic=991.0</a></p><p>顺便说一句——我并未超频，也没用不该用的方式折腾任何东西。上面那个主题的楼主声称自己这么干了。另外我的 Wallet.dat 看起来正常，自我一次性装完 23 个更新重启后，AppRoaming 的文件都并未被修改过。</p>","zhText":"已然试过关掉 Windows Defender、实时检查、并把 \"C:\\Program Files (x86)\\bitcoin\" 加入排除项，然而没有任何区别。\n就像最近的另一个主题显示的，他们的问题是如此修复的或有潜在的解决方向。\n下面这个主题最接近。我可以说，崩溃始于 2010 年 10 月补丁日（windows 更新，几天前才装上）之后我重启的那一刻。\nhttp://bitcointalk.org/index.php?topic=991.0\n顺便说一句——我并未超频，也没用不该用的方式折腾任何东西。上面那个主题的楼主声称自己这么干了。另外我的 Wallet.dat 看起来正常，自我一次性装完 23 个更新重启后，AppRoaming 的文件都并未被修改过。"},{"id":3169,"sid":null,"sat":0,"tid":237,"tt":"ERROR - PLEASE HELP ME!","src":"Bitcointalk","author":"jimbobway","date":"2010-10-23","ts":"2010-10-23T18:16:49Z","url":"https://bitcointalk.org/index.php?topic=1530.msg18239#msg18239","zh":"<p>dhaw，你在跑什么样的杀毒软件或反间谍软件？</p>","zhText":"dhaw，你在跑什么样的杀毒软件或反间谍软件？"},{"id":3170,"sid":493,"sat":1,"tid":237,"tt":"ERROR - PLEASE HELP ME!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-23","ts":"2010-10-23T18:22:49Z","url":"https://bitcointalk.org/index.php?topic=1530.msg18241#msg18241","zh":"<blockquote><p>他的区块数一直「卡」在 1698。</p></blockquote><p>他在难度 1.0 下生成无效区块。他的 blk0001.dat 或 blkindex.dat 文件里一定有一条损坏的记录。他只需删掉 blk*.dat 让它重新下载。</p><p>安全锁定检测到了问题，显示着「WARNING: Displayed transactions may not be correct!」，因它看到了一条存在但无法接受的更长链。安全锁定不能停止铸币，否则会制造一种攻击可能。</p><blockquote><p>Bitcoin 客户端真的不该允许铸币，直到你拥有到最后一个区块检查点为止的全部区块。</p></blockquote><p>好主意，我做了一个改动，确保它在检查点区块 74000 之前不铸币。</p>","zhText":"他的区块数一直「卡」在 1698。\n\n他在难度 1.0 下生成无效区块。他的 blk0001.dat 或 blkindex.dat 文件里一定有一条损坏的记录。他只需删掉 blk*.dat 让它重新下载。\n安全锁定检测到了问题，显示着「WARNING: Displayed transactions may not be correct!」，因它看到了一条存在但无法接受的更长链。安全锁定不能停止铸币，否则会制造一种攻击可能。\nBitcoin 客户端真的不该允许铸币，直到你拥有到最后一个区块检查点为止的全部区块。\n\n好主意，我做了一个改动，确保它在检查点区块 74000 之前不铸币。"},{"id":3171,"sid":null,"sat":0,"tid":237,"tt":"ERROR - PLEASE HELP ME!","src":"Bitcointalk","author":"theymos","date":"2010-10-23","ts":"2010-10-23T18:29:19Z","url":"https://bitcointalk.org/index.php?topic=1530.msg18243#msg18243","zh":"<blockquote><p>他在难度 1.0 下生成无效区块。他的 blkindex.dat 文件里一定有一条损坏的 txindex 记录。他只需删掉 blk*.dat 让它重新下载。</p></blockquote><p>他已然这么做了，而且同样的问题立刻又出现了。因而大抵是杀毒软件的问题。</p>","zhText":"他在难度 1.0 下生成无效区块。他的 blkindex.dat 文件里一定有一条损坏的 txindex 记录。他只需删掉 blk*.dat 让它重新下载。\n\n他已然这么做了，而且同样的问题立刻又出现了。因而大抵是杀毒软件的问题。"},{"id":3188,"sid":null,"sat":0,"tid":239,"tt":"Suggestion: Allow short messages to be sent together with bitcoins ?","src":"Bitcointalk","author":"ShadowOfHarbringer","date":"2010-10-23","ts":"2010-10-23T18:33:56Z","url":"https://bitcointalk.org/index.php?topic=1545.msg18244#msg18244","zh":"<blockquote><p>我相当不喜欢这种消息设计。由于它并非协议所必需，我并不确定能不能轻松找到一个它真正合适的位置。不过我不是程序员。我很好奇中本聪对此的想法。</p></blockquote><p>是啊，我亦好奇。</p>","zhText":"我相当不喜欢这种消息设计。由于它并非协议所必需，我并不确定能不能轻松找到一个它真正合适的位置。不过我不是程序员。我很好奇中本聪对此的想法。\n\n是啊，我亦好奇。"},{"id":3172,"sid":494,"sat":1,"tid":237,"tt":"ERROR - PLEASE HELP ME!","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-23","ts":"2010-10-23T18:38:04Z","url":"https://bitcointalk.org/index.php?topic=1530.msg18245#msg18245","zh":"<p>好，倘若重新下载真的过不了区块 1698，那我们就进入更陌生的领域了。</p><p>是，恐怕他的杀毒软件、甚至路由器或防火墙在对某个字节序列做模式匹配并审查它。</p><p>拿到 knightmb 的 blk*.dat 试试能否让他跨过那个点，会很有启发。</p>","zhText":"好，倘若重新下载真的过不了区块 1698，那我们就进入更陌生的领域了。\n是，恐怕他的杀毒软件、甚至路由器或防火墙在对某个字节序列做模式匹配并审查它。\n拿到 knightmb 的 blk*.dat 试试能否让他跨过那个点，会很有启发。"},{"id":3175,"sid":495,"sat":1,"tid":238,"tt":"Win7 64bit since last patch Tues now crashes","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-23","ts":"2010-10-23T18:52:02Z","url":"https://bitcointalk.org/index.php?topic=1540.msg18246#msg18246","zh":"<blockquote><p>故障模块名称：   mingwm10.dll</p></blockquote><p>这是关键线索。我相信它的意思是崩溃发生在那里。兴许有其他版本能够试。mingwm10.dll 不过是一个简单的占位物，满足多线程应用的某个回调要求。</p><p>尚有其他人能在 64 位 Windows 上正常跑吗？</p>","zhText":"故障模块名称： mingwm10.dll\n\n这是关键线索。我相信它的意思是崩溃发生在那里。兴许有其他版本能够试。mingwm10.dll 不过是一个简单的占位物，满足多线程应用的某个回调要求。\n尚有其他人能在 64 位 Windows 上正常跑吗？"},{"id":3189,"sid":496,"sat":1,"tid":239,"tt":"Suggestion: Allow short messages to be sent together with bitcoins ?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-23","ts":"2010-10-23T19:02:57Z","url":"https://bitcointalk.org/index.php?topic=1545.msg18250#msg18250","zh":"<p>ECDSA 无法加密消息，仅仅能做签名。</p><p>永久记录明文消息给所有人看是不明智的。那会是一个等着发生的事故。</p><p>倘若要有一个消息系统，它理应是与 bitcoin 网络并行的独立系统。消息不应记录在区块链里。消息能够用 bitcoin 地址的密钥对签名，以证明来源。</p>","zhText":"ECDSA 无法加密消息，仅仅能做签名。\n永久记录明文消息给所有人看是不明智的。那会是一个等着发生的事故。\n倘若要有一个消息系统，它理应是与 bitcoin 网络并行的独立系统。消息不应记录在区块链里。消息能够用 bitcoin 地址的密钥对签名，以证明来源。"},{"id":3178,"sid":null,"sat":0,"tid":238,"tt":"Win7 64bit since last patch Tues now crashes","src":"Bitcointalk","author":"Odin","date":"2010-10-24","ts":"2010-10-24T12:09:47Z","url":"https://bitcointalk.org/index.php?topic=1540.msg18319#msg18319","zh":"<p>好，相当高兴知道别人都能正常跑。</p><p>不幸的是 bitcoin 对我不是关键应用，我得把时间花在其他事情上。不过，倘若有一个能给出崩溃代码行号的调试构建（0xc0000005 - ACCESS VIOLATION），我相当乐意跑一下，帮着定位引发问题的那一行。</p>","zhText":"好，相当高兴知道别人都能正常跑。\n不幸的是 bitcoin 对我不是关键应用，我得把时间花在其他事情上。不过，倘若有一个能给出崩溃代码行号的调试构建（0xc0000005 - ACCESS VIOLATION），我相当乐意跑一下，帮着定位引发问题的那一行。"},{"id":2002,"sid":497,"sat":1,"tid":158,"tt":"Multiple Wallets, one computer (multiple accounts)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-24","ts":"2010-10-24T19:17:51Z","url":"https://bitcointalk.org/index.php?topic=665.msg18349#msg18349","zh":"<p>我已然有了类似东西的开头。大体上和 Gavin 描述的一样。</p><p>再补充一些 rpc 接口：</p><p>move <fromaccount> <toaccount> <amount>\n   从一个内部账户转到另一个。我想空白账户名（\"\"）会是你的默认账户。倘若你卖东西给某个用户，能够执行 move \"theiraccount\" \"\" 123.45。\n   \"move\" 是这个名字的最佳选择吗？我避开了 \"transfer\"，因它听起来太像发送一笔交易。</p><p>我在考虑新增一个 getaccountaddress 函数，而不是重载 getnewaddress：</p><p>getaccountaddress <account>\n   给你一个从 getnewaddress <account> 分配的地址。它会一直返回同一个地址，直到该地址收到东西，进而分配一个新地址。（它会自动完成我前段时间贴的示例代码所做的事）</p><p>这些命令能不能让简单场景下不用自建数据库就实现你的网站？</p>","zhText":"我已然有了类似东西的开头。大体上和 Gavin 描述的一样。\n再补充一些 rpc 接口：\nmove \n 从一个内部账户转到另一个。我想空白账户名（\"\"）会是你的默认账户。倘若你卖东西给某个用户，能够执行 move \"theiraccount\" \"\" 123.45。\n \"move\" 是这个名字的最佳选择吗？我避开了 \"transfer\"，因它听起来太像发送一笔交易。\n我在考虑新增一个 getaccountaddress 函数，而不是重载 getnewaddress：\ngetaccountaddress \n 给你一个从 getnewaddress 分配的地址。它会一直返回同一个地址，直到该地址收到东西，进而分配一个新地址。（它会自动完成我前段时间贴的示例代码所做的事）\n这些命令能不能让简单场景下不用自建数据库就实现你的网站？"},{"id":2004,"sid":null,"sat":0,"tid":158,"tt":"Multiple Wallets, one computer (multiple accounts)","src":"Bitcointalk","author":"SmokeTooMuch","date":"2010-10-24","ts":"2010-10-24T20:58:32Z","url":"https://bitcointalk.org/index.php?topic=665.msg18367#msg18367","zh":"<blockquote><p>我想要多个「账户」、各有独立余额，并能按账户收发币。相当于同时跑多个钱包。</p><p>倘若能简单地列出每个「收款地址」的余额，并在发币时指定「来源」地址，会有帮助。</p></blockquote><p>用 -datadir 并改源码里的端口，然后每个 bitcoin 实例用不同的目录和端口。</p>","zhText":"我想要多个「账户」、各有独立余额，并能按账户收发币。相当于同时跑多个钱包。\n倘若能简单地列出每个「收款地址」的余额，并在发币时指定「来源」地址，会有帮助。\n\n用 -datadir 并改源码里的端口，然后每个 bitcoin 实例用不同的目录和端口。"},{"id":2005,"sid":498,"sat":1,"tid":158,"tt":"Multiple Wallets, one computer (multiple accounts)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-25","ts":"2010-10-25T16:53:53Z","url":"https://bitcointalk.org/index.php?topic=665.msg18508#msg18508","zh":"<p>这是一段伪代码，演示怎么使用基于账户的命令。它确实让网站整合容易多了。</p><p>print \"send to \" + getaccountaddress(username) + \" to fund your account\"\nprint \"balance: \" + getbalance(username, 0)\nprint \"available balance: \" + getbalance(username, 6)</p><p>// 如果达成一笔销售，把钱从他们的账户里移出\nmove(username, \"\", amount, 6)</p><p>// 提现\nsendfrom(username, bitcoinaddress, amount, 6)</p>","zhText":"这是一段伪代码，演示怎么使用基于账户的命令。它确实让网站整合容易多了。\nprint \"send to \" + getaccountaddress(username) + \" to fund your account\"\nprint \"balance: \" + getbalance(username, 0)\nprint \"available balance: \" + getbalance(username, 6)\n// 如果达成一笔销售，把钱从他们的账户里移出\nmove(username, \"\", amount, 6)\n// 提现\nsendfrom(username, bitcoinaddress, amount, 6)"},{"id":3179,"sid":499,"sat":1,"tid":238,"tt":"Win7 64bit since last patch Tues now crashes","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-10-25","ts":"2010-10-25T17:27:47Z","url":"https://bitcointalk.org/index.php?topic=1540.msg18511#msg18511","zh":"<p>我唯一能想到的，是看看能不能弄到其他版本的 mingwm10.dll。mingwm10.dll 是随 MinGW 编译器附带的一个小小的 DLL，多线程构建时需要它。我不确切知道它干什么，然而它大抵只是在对 Windows 说「好了好了，你看，我在一个 DLL 里，如你所愿」。</p><p>你 debug.log 文件的末尾恐会显示它崩溃前在做的最后一件事。</p>","zhText":"我唯一能想到的，是看看能不能弄到其他版本的 mingwm10.dll。mingwm10.dll 是随 MinGW 编译器附带的一个小小的 DLL，多线程构建时需要它。我不确切知道它干什么，然而它大抵只是在对 Windows 说「好了好了，你看，我在一个 DLL 里，如你所愿」。\n你 debug.log 文件的末尾恐会显示它崩溃前在做的最后一件事。"},{"id":418,"sid":null,"sat":0,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"LZ","date":"2010-11-03","ts":"2010-11-03T17:18:47Z","url":"https://bitcointalk.org/index.php?topic=64.msg19870#msg19870","zh":"<p>我喜欢中本聪在首帖里发布的图标。</p>","zhText":"我喜欢中本聪在首帖里发布的图标。"},{"id":3197,"sid":null,"sat":0,"tid":240,"tt":"Some testing that I did on the testnetwork, my findings.","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-11-09","ts":"2010-11-09T19:36:38Z","url":"https://bitcointalk.org/index.php?topic=1668.msg21057#msg21057","zh":"<p>在 davidonpda 的帮助下，我今天用中本聪最新的代码改动自己做了一些测试（按交易年龄、收入金额、交易总字节数设定优先级——svn rev 176）。</p><p>它表现符合预期，把更大、更老的交易排到那些被灌进网络的分币前面，因而就算有人决定当个混蛋、用交易灌爆网络，「正常」交易亦会被及时确认。</p>","zhText":"在 davidonpda 的帮助下，我今天用中本聪最新的代码改动自己做了一些测试（按交易年龄、收入金额、交易总字节数设定优先级——svn rev 176）。\n它表现符合预期，把更大、更老的交易排到那些被灌进网络的分币前面，因而就算有人决定当个混蛋、用交易灌爆网络，「正常」交易亦会被及时确认。"},{"id":419,"sid":500,"sat":1,"tid":38,"tt":"New icon/logo","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-13","ts":"2010-11-13T00:55:51Z","url":"https://bitcointalk.org/index.php?topic=64.msg21766#msg21766","zh":"<p>倘若有具备美术功底的人愿意贡献替代方案，我会很高兴。这个图标/标志本来就是为了在 16x16 和 20x20 像素尺寸下当好图标而设计的。我认为作为程序图标它已然是最佳，然而在更大尺寸下、作为网站用图，仍有改进空间。</p><p>倘若作者们能把作品放入公有领域，事情会简单得多。</p>","zhText":"倘若有具备美术功底的人愿意贡献替代方案，我会很高兴。这个图标/标志本来就是为了在 16x16 和 20x20 像素尺寸下当好图标而设计的。我认为作为程序图标它已然是最佳，然而在更大尺寸下、作为网站用图，仍有改进空间。\n倘若作者们能把作品放入公有领域，事情会简单得多。"},{"id":3198,"sid":501,"sat":1,"tid":240,"tt":"Some testing that I did on the testnetwork, my findings.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-13","ts":"2010-11-13T23:25:26Z","url":"https://bitcointalk.org/index.php?topic=1668.msg21896#msg21896","zh":"<p>感谢你们把灌水测试限制在测试网。</p><p>0.3.15 版组合了多项功能，帮助合法交易在洪水攻击期间插队。关键在于 Gavin 的想法：按依赖的年龄给交易排优先级。每一枚币都有权按一定频率转手。等得越久，累积的优先级越高。优先级 = sum(valuein * age) / txsize。交易费仍然优先于优先级，而优先级决定同一费率层内的处理顺序。</p><p>为支持优先级功能，SelectCoins 仅仅在万不得已、只剩下你自己的 0 确认交易时才使用它们。这有助于避免你快速转手自己的币，除非你真是通过快速转手全部币来强行做到的。</p>","zhText":"感谢你们把灌水测试限制在测试网。\n0.3.15 版组合了多项功能，帮助合法交易在洪水攻击期间插队。关键在于 Gavin 的想法：按依赖的年龄给交易排优先级。每一枚币都有权按一定频率转手。等得越久，累积的优先级越高。优先级 = sum(valuein * age) / txsize。交易费仍然优先于优先级，而优先级决定同一费率层内的处理顺序。\n为支持优先级功能，SelectCoins 仅仅在万不得已、只剩下你自己的 0 确认交易时才使用它们。这有助于避免你快速转手自己的币，除非你真是通过快速转手全部币来强行做到的。"},{"id":3349,"sid":502,"sat":1,"tid":242,"tt":"Version 0.3.15","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-13","ts":"2010-11-13T23:26:40Z","url":"https://bitcointalk.org/index.php?topic=1780.msg21897#msg21897","zh":"<p>0.3.15 版现已发布。</p><p>变更：\n- paytxfee 开关现在按 KB 计，因而会给大额交易加上正确的手续费\n- 发送时尽可能避免使用确认数少于 6 的币\n- BitcoinMiner 按依赖交易年龄的优先级顺序处理交易\n- 确保区块 74000 下载完成之前不启动挖矿\n- Dean Gores 的若干错误修复\n- getinfo 新增 testnet、keypoololdest 和 paytxfee</p>","zhText":"0.3.15 版现已发布。\n变更：\n- paytxfee 开关现在按 KB 计，因而会给大额交易加上正确的手续费\n- 发送时尽可能避免使用确认数少于 6 的币\n- BitcoinMiner 按依赖交易年龄的优先级顺序处理交易\n- 确保区块 74000 下载完成之前不启动挖矿\n- Dean Gores 的若干错误修复\n- getinfo 新增 testnet、keypoololdest 和 paytxfee"},{"id":3199,"sid":null,"sat":0,"tid":240,"tt":"Some testing that I did on the testnetwork, my findings.","src":"Bitcointalk","author":"ByteCoin","date":"2010-11-13","ts":"2010-11-13T23:55:11Z","url":"https://bitcointalk.org/index.php?topic=1668.msg21899#msg21899","zh":"<blockquote><p>为了支持优先级特性，SelectCoins 仅仅在你只剩下 0 确认交易时才会把它们作为最后手段使用。这有助于避免你快速周转自己的币——除非你就是故意在快速周转自己所有的币。</p></blockquote><p>当然，倘若网络没有被垃圾交易淹没、你也不太在意当前这笔交易被耽搁，那么优先使用你的 0 确认交易恐更划算，如此可以把较高优先级的币「省」下来，留到网络<b>真的</b>被淹没时用。</p><p>倘若我理解没错，在我看来当前逻辑更容易消耗掉积攒在较老交易上的优先级。不过这是个小问题。</p><p>当然，像我上面说的那样往交易里塞入约 1,000 个刚周转过的 BTC 来抬高优先级，这种钻空子的手法依然有效！</p><p>ByteCoin</p>","zhText":"为了支持优先级特性，SelectCoins 仅仅在你只剩下 0 确认交易时才会把它们作为最后手段使用。这有助于避免你快速周转自己的币——除非你就是故意在快速周转自己所有的币。\n\n当然，倘若网络没有被垃圾交易淹没、你也不太在意当前这笔交易被耽搁，那么优先使用你的 0 确认交易恐更划算，如此可以把较高优先级的币「省」下来，留到网络真的被淹没时用。\n倘若我理解没错，在我看来当前逻辑更容易消耗掉积攒在较老交易上的优先级。不过这是个小问题。\n当然，像我上面说的那样往交易里塞入约 1,000 个刚周转过的 BTC 来抬高优先级，这种钻空子的手法依然有效！\nByteCoin"},{"id":3200,"sid":503,"sat":1,"tid":240,"tt":"Some testing that I did on the testnetwork, my findings.","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-14","ts":"2010-11-14T16:53:19Z","url":"https://bitcointalk.org/index.php?topic=1668.msg21959#msg21959","zh":"<blockquote><p>当然，倘若网络没有被垃圾交易淹没、你也不太在意当前这笔交易被耽搁，那么优先使用你的 0 确认交易恐更划算，如此可以把较高优先级的币「省」下来，留到网络<b>真的</b>被淹没时用。</p></blockquote><p>你理应至少保留一些优先级，以防下一个区块到来之前网络被淹没。</p><p>只要所有依赖的交易都至少有 1 个确认，倘若交易一开始优先级不够，依赖交易会随着时间推移老化，直到它够为止。</p><blockquote><p>当然，像我上面说的那样往交易里塞入约 1,000 个刚周转过的 BTC 来抬高优先级，这种钻空子的手法依然有效！</p></blockquote><p>或者管理你在每笔交易上花费多少优先级。软件得预知你未来的计划，才能知道理应现在花掉优先级还是留到以后。不过我觉得我们不需要做到这么细。正常用户和攻击者之间的差异足够大。</p><p>优先级不必包办一切。一旦确认有洪水攻击，你能够加上 -paytxfee=0.01。希望有了优先级机制，你在此之前发出的交易最坏也不过是慢，而不是卡死。</p>","zhText":"当然，倘若网络没有被垃圾交易淹没、你也不太在意当前这笔交易被耽搁，那么优先使用你的 0 确认交易恐更划算，如此可以把较高优先级的币「省」下来，留到网络真的被淹没时用。\n\n你理应至少保留一些优先级，以防下一个区块到来之前网络被淹没。\n只要所有依赖的交易都至少有 1 个确认，倘若交易一开始优先级不够，依赖交易会随着时间推移老化，直到它够为止。\n当然，像我上面说的那样往交易里塞入约 1,000 个刚周转过的 BTC 来抬高优先级，这种钻空子的手法依然有效！\n\n或者管理你在每笔交易上花费多少优先级。软件得预知你未来的计划，才能知道理应现在花掉优先级还是留到以后。不过我觉得我们不需要做到这么细。正常用户和攻击者之间的差异足够大。\n优先级不必包办一切。一旦确认有洪水攻击，你能够加上 -paytxfee=0.01。希望有了优先级机制，你在此之前发出的交易最坏也不过是慢，而不是卡死。"},{"id":3354,"sid":null,"sat":0,"tid":243,"tt":"Need OP_BLOCKNUMBER to allow \"time\" limited transactions","src":"Bitcointalk","author":"theymos","date":"2010-11-15","ts":"2010-11-15T04:16:16Z","url":"https://bitcointalk.org/index.php?topic=1786.msg22024#msg22024","zh":"<p>进一步调查后我发现，nLockTime 要重新启用内存中的交易替换机制才有用。</p><pre><code>if (mapNextTx.count(outpoint))\n        {\n            // Disable replacement feature for now\n            return false;\n\n            // Allow replacing with a newer version of the same transaction\n            if (i != 0)\n                return false;\n            ptxOld = mapNextTx[outpoint].ptx;\n            if (!IsNewerThan(*ptxOld))\n                return false;\n            for (int i = 0; i &lt; vin.size(); i++)\n            {\n                COutPoint outpoint = vin[i].prevout;\n                if (!mapNextTx.count(outpoint) || mapNextTx[outpoint].ptx != ptxOld)\n                    return false;\n            }\n            break;</code></pre>","zhText":"进一步调查后我发现，nLockTime 要重新启用内存中的交易替换机制才有用。\nif (mapNextTx.count(outpoint))\n {\n // Disable replacement feature for now\n return false;\n\n // Allow replacing with a newer version of the same transaction\n if (i != 0)\n return false;\n ptxOld = mapNextTx[outpoint].ptx;\n if (!IsNewerThan(*ptxOld))\n return false;\n for (int i = 0; i < vin.size(); i++)\n {\n COutPoint outpoint = vin[i].prevout;\n if (!mapNextTx.count(outpoint) || mapNextTx[outpoint].ptx != ptxOld)\n return false;\n }\n break;"},{"id":3355,"sid":504,"sat":1,"tid":243,"tt":"Need OP_BLOCKNUMBER to allow \"time\" limited transactions","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-15","ts":"2010-11-15T18:37:44Z","url":"https://bitcointalk.org/index.php?topic=1786.msg22119#msg22119","zh":"<p>我们不能安全地实现 OP_BLOCKNUMBER。一旦发生分叉重组，交易必须仍能进入更晚的区块。OP_BLOCKNUMBER 交易及其所有依赖交易会失效。这对后来持有这些币、然而并未参与限时交易的人不公平。</p><p>nTimeLock 的方向正相反。它是一笔开放交易，在截止期限前能够不断被新版本替换。它不能被记录到链上，直到锁定期满。期限到达时版本最高的那笔会被记录。举例来说，它能够用来写一笔托管交易，自动永久锁定并完成——除非在期限前被撤销。这个特性尚未启用或使用，然而支持代码已在，之后能够实现。</p>","zhText":"我们不能安全地实现 OP_BLOCKNUMBER。一旦发生分叉重组，交易必须仍能进入更晚的区块。OP_BLOCKNUMBER 交易及其所有依赖交易会失效。这对后来持有这些币、然而并未参与限时交易的人不公平。\nnTimeLock 的方向正相反。它是一笔开放交易，在截止期限前能够不断被新版本替换。它不能被记录到链上，直到锁定期满。期限到达时版本最高的那笔会被记录。举例来说，它能够用来写一笔托管交易，自动永久锁定并完成——除非在期限前被撤销。这个特性尚未启用或使用，然而支持代码已在，之后能够实现。"},{"id":3109,"sid":null,"sat":0,"tid":232,"tt":"python OpenCL bitcoin miner","src":"Bitcointalk","author":"m0mchil","date":"2010-11-16","ts":"2010-11-16T10:30:41Z","url":"https://bitcointalk.org/index.php?topic=1334.msg22251#msg22251","zh":"<p>刚更新到 SVN 181，并修正了 getwork 补丁：在用新交易重建区块之间等待 60 秒。这其实是原版客户端的行为，补丁里误漏掉了。修复了每个 getwork 请求都占满 CPU 的问题（在最近大量交易垃圾攻击下变得很明显）。请升级。</p>","zhText":"刚更新到 SVN 181，并修正了 getwork 补丁：在用新交易重建区块之间等待 60 秒。这其实是原版客户端的行为，补丁里误漏掉了。修复了每个 getwork 请求都占满 CPU 的问题（在最近大量交易垃圾攻击下变得很明显）。请升级。"},{"id":3630,"sid":null,"sat":0,"tid":245,"tt":"Transaction / spam flood attack currently under way","src":"Bitcointalk","author":"MoonShadow","date":"2010-11-19","ts":"2010-11-19T20:29:12Z","url":"https://bitcointalk.org/index.php?topic=1850.msg22896#msg22896","zh":"<p>或许在最近实现的年龄优先级规则之外，还应加一条无手续费交易的最小年龄规则。换句话说，或许能够定一条生成规则：免费交易务必埋深 3 个区块之后才能再次免费转账。如此真实用户在必要时仍可立即花掉新资金，同时仍然能够不计成本地重新调配自己的资金。我认为这会显著抑制目前正在进行的垃圾交易攻击。</p>","zhText":"或许在最近实现的年龄优先级规则之外，还应加一条无手续费交易的最小年龄规则。换句话说，或许能够定一条生成规则：免费交易务必埋深 3 个区块之后才能再次免费转账。如此真实用户在必要时仍可立即花掉新资金，同时仍然能够不计成本地重新调配自己的资金。我认为这会显著抑制目前正在进行的垃圾交易攻击。"},{"id":3632,"sid":null,"sat":0,"tid":245,"tt":"Transaction / spam flood attack currently under way","src":"Bitcointalk","author":"MoonShadow","date":"2010-11-19","ts":"2010-11-19T20:43:39Z","url":"https://bitcointalk.org/index.php?topic=1850.msg22903#msg22903","zh":"<blockquote><p>那可能又会把人们的资金困住。想想 MtGox 甚至是比特币水龙头。水龙头每 3 个区块仅仅能发出五美分，因每次发五美分时，找零会发到一个新地址，免费交易被锁住 3 个区块。</p></blockquote><p>仅仅会有一点点影响。倘若这条规则及其理由广为人知，我认为像比特币水龙头这样的服务能够做出调整。我说的是基于币的流转来限制——倘若可行的话——而不是对某个地址下达三区块禁令。新客户端有 100 个地址，对吧？倘若比特币水龙头在每个地址里放超过 .05 BTC，随着请求到来轮换地址，那它半小时内就能无延迟地服务 100 个请求，延后一点尚且能更多。我不是说不能创建交易，不过是说矿工在依赖交易没有埋深三个区块之前并不会免费把它放进区块。付了手续费就能够为所欲为；而且矿工大抵亦不会对付费交易执行 3 区块延迟。如此免费交易的可能性依然保留，同时抑制了垃圾交易。倘若技术上有什么原因使这条规则行不通，我就不知道了。</p><p>编辑：试图处理提款请求的市场会知道过去 30 分钟里发来了多少请求，能够选择提醒请求者这类请求恐因该规则而延迟，或者选择自掏手续费。</p>","zhText":"那可能又会把人们的资金困住。想想 MtGox 甚至是比特币水龙头。水龙头每 3 个区块仅仅能发出五美分，因每次发五美分时，找零会发到一个新地址，免费交易被锁住 3 个区块。\n\n仅仅会有一点点影响。倘若这条规则及其理由广为人知，我认为像比特币水龙头这样的服务能够做出调整。我说的是基于币的流转来限制——倘若可行的话——而不是对某个地址下达三区块禁令。新客户端有 100 个地址，对吧？倘若比特币水龙头在每个地址里放超过 .05 BTC，随着请求到来轮换地址，那它半小时内就能无延迟地服务 100 个请求，延后一点尚且能更多。我不是说不能创建交易，不过是说矿工在依赖交易没有埋深三个区块之前并不会免费把它放进区块。付了手续费就能够为所欲为；而且矿工大抵亦不会对付费交易执行 3 区块延迟。如此免费交易的可能性依然保留，同时抑制了垃圾交易。倘若技术上有什么原因使这条规则行不通，我就不知道了。\n编辑：试图处理提款请求的市场会知道过去 30 分钟里发来了多少请求，能够选择提醒请求者这类请求恐因该规则而延迟，或者选择自掏手续费。"},{"id":3633,"sid":505,"sat":1,"tid":245,"tt":"Transaction / spam flood attack currently under way","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-19","ts":"2010-11-19T23:50:24Z","url":"https://bitcointalk.org/index.php?topic=1850.msg22952#msg22952","zh":"<blockquote><p>或许在最近实现的年龄优先级规则之外，还应加一条无手续费交易的最小年龄规则。换句话说，或许能够定一条生成规则：免费交易务必埋深 3 个区块之后才能再次免费转账。如此真实用户在必要时仍可立即花掉新资金，同时仍然能够不计成本地重新调配自己的资金。我认为这会显著抑制目前正在进行的垃圾交易攻击。</p></blockquote><p>我正在做的就是类似的事。优先级就是你描述的这个概念更正式化的版本。</p><blockquote><p>按现状，3.15 有不少免费交易空间，这些空间优先给 [年龄]*[金额]/[大小] 最高的交易，对吧？划出一部分自由空间要求 [年龄]*[金额]/[大小] > C 是否合理？</p><p>兴许能够把 C 设成让一笔标准的 1 BTC 交易能进下一个区块的主免费区。而 .1 BTC 的要等约 10 个区块才能进。再让允许 [年龄]*[金额]/[大小] < C 的区域每次放行十来笔交易。</p></blockquote><p>是的，就像这样。不要求优先级的区域是 3K，每区块约十来笔交易。</p><p>我刚上传了 SVN r185，对免费交易设置了最低优先级要求。交易洪水由反复重花的币构成，因而它们反复依赖自己的 0 确认交易。0 确认交易优先级为 0，这类免费交易只能一次等一笔交易先进区块。</p><p>0.3.15 版在使用 0 确认依赖写交易时，仅仅在别无选择的情况下才用，因而普通用户通常不会遇到这个问题。</p><p>我认为这是在把默认手续费设为 0.01 之外的一个好折中。要求免费交易只能这么频繁地周转币，并不算过分。你用免费交易，就是在接受施舍，而同一批币能用施舍的频率总得有个上限。</p><p>我们一直说免费交易恐会处理得慢一些。加上 -paytxfee=0.01 能够帮你确保交易快速通过。</p>","zhText":"或许在最近实现的年龄优先级规则之外，还应加一条无手续费交易的最小年龄规则。换句话说，或许能够定一条生成规则：免费交易务必埋深 3 个区块之后才能再次免费转账。如此真实用户在必要时仍可立即花掉新资金，同时仍然能够不计成本地重新调配自己的资金。我认为这会显著抑制目前正在进行的垃圾交易攻击。\n\n我正在做的就是类似的事。优先级就是你描述的这个概念更正式化的版本。\n按现状，3.15 有不少免费交易空间，这些空间优先给 [年龄]*[金额]/[大小] 最高的交易，对吧？划出一部分自由空间要求 [年龄]*[金额]/[大小] > C 是否合理？\n兴许能够把 C 设成让一笔标准的 1 BTC 交易能进下一个区块的主免费区。而 .1 BTC 的要等约 10 个区块才能进。再让允许 [年龄]*[金额]/[大小] 是的，就像这样。不要求优先级的区域是 3K，每区块约十来笔交易。\n我刚上传了 SVN r185，对免费交易设置了最低优先级要求。交易洪水由反复重花的币构成，因而它们反复依赖自己的 0 确认交易。0 确认交易优先级为 0，这类免费交易只能一次等一笔交易先进区块。\n0.3.15 版在使用 0 确认依赖写交易时，仅仅在别无选择的情况下才用，因而普通用户通常不会遇到这个问题。\n我认为这是在把默认手续费设为 0.01 之外的一个好折中。要求免费交易只能这么频繁地周转币，并不算过分。你用免费交易，就是在接受施舍，而同一批币能用施舍的频率总得有个上限。\n我们一直说免费交易恐会处理得慢一些。加上 -paytxfee=0.01 能够帮你确保交易快速通过。"},{"id":3130,"sid":null,"sat":0,"tid":232,"tt":"python OpenCL bitcoin miner","src":"Bitcointalk","author":"m0mchil","date":"2010-11-20","ts":"2010-11-20T10:16:19Z","url":"https://bitcointalk.org/index.php?topic=1334.msg23018#msg23018","zh":"<p>更新到 SVN 186</p>","zhText":"更新到 SVN 186"},{"id":3131,"sid":null,"sat":0,"tid":232,"tt":"python OpenCL bitcoin miner","src":"Bitcointalk","author":"wumpus","date":"2010-11-20","ts":"2010-11-20T15:03:00Z","url":"https://bitcointalk.org/index.php?topic=1334.msg23072#msg23072","zh":"<blockquote><p>更新到 SVN 186</p></blockquote><p>干净地适用，谢谢</p>","zhText":"更新到 SVN 186\n\n干净地适用，谢谢"},{"id":3132,"sid":506,"sat":1,"tid":232,"tt":"python OpenCL bitcoin miner","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-20","ts":"2010-11-20T17:24:20Z","url":"https://bitcointalk.org/index.php?topic=1334.msg23097#msg23097","zh":"<blockquote><p>更新到 SVN 186</p></blockquote><p>感谢 m0mchil 持续跟进更新！</p><p>GPU 矿工们，请尽快升级，终结免费交易滥用！这个版本带有新的基于优先级的免费交易垃圾限制。</p><blockquote><p>刚更新到 SVN 181，并修正了 getwork 补丁：在用新交易重建区块之间等待 60 秒。这其实是原版客户端的行为，补丁里误漏掉了。修复了每个 getwork 请求都占满 CPU 的问题（在最近大量交易垃圾攻击下变得很明显）。请升级。</p></blockquote><p>在 SVN 184 之前，把交易编译进区块用的是 n^2 算法。新的高效单遍算法要快上几个数量级。（O(n) 对比 O(n^2)/2，n=200 时约莫快 10 到 100 倍）</p>","zhText":"更新到 SVN 186\n\n感谢 m0mchil 持续跟进更新！\nGPU 矿工们，请尽快升级，终结免费交易滥用！这个版本带有新的基于优先级的免费交易垃圾限制。\n刚更新到 SVN 181，并修正了 getwork 补丁：在用新交易重建区块之间等待 60 秒。这其实是原版客户端的行为，补丁里误漏掉了。修复了每个 getwork 请求都占满 CPU 的问题（在最近大量交易垃圾攻击下变得很明显）。请升级。\n\n在 SVN 184 之前，把交易编译进区块用的是 n^2 算法。新的高效单遍算法要快上几个数量级。（O(n) 对比 O(n^2)/2，n=200 时约莫快 10 到 100 倍）"},{"id":3133,"sid":null,"sat":0,"tid":232,"tt":"python OpenCL bitcoin miner","src":"Bitcointalk","author":"slush","date":"2010-11-23","ts":"2010-11-23T18:28:53Z","url":"https://bitcointalk.org/index.php?topic=1334.msg23867#msg23867","zh":"<p>你好 m0mchil，首先感谢你的工作。有没有可能把 getwork 补丁并入官方客户端？我在一台老的 centos 服务器上跑 bitcoin，在这里编译太痛苦了！</p>","zhText":"你好 m0mchil，首先感谢你的工作。有没有可能把 getwork 补丁并入官方客户端？我在一台老的 centos 服务器上跑 bitcoin，在这里编译太痛苦了！"},{"id":3634,"sid":507,"sat":1,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-23","ts":"2010-11-23T19:50:12Z","url":"https://bitcointalk.org/index.php?topic=1901.msg23876#msg23876","zh":"<p>我把 m0mchil 的 getwork 重新设计后上传到了 SVN r189（版本号 31601）</p><p>m0mchil 的外部比特币矿工构想解决了很多问题。GPU 编程不成熟、编译困难，我不想给构建加更多依赖。getwork 让这些问题得以分开解决——不同的硬件和操作系统用不同的程序。服务器农场能够仅仅跑一个 Bitcoin 节点、其余全跑 getwork 客户端，这亦很方便。</p><p>接口有几处变化：</p><p>getwork [data]\n倘若未指定 [data]，返回格式化的待运算哈希数据：\n  \"midstate\"：哈希完数据前一半之后的预计算哈希状态\n  \"data\"：区块数据\n  \"hash1\"：用于第二次哈希的格式化哈希缓冲区\n  \"target\"：小端序哈希目标\n倘若指定了 [data]，则尝试解出该区块，成功时返回 true。[data] 就是 \"data\" 字段返回的那 128 字节区块数据，不过是改了 nonce。</p><p>注意事项：\n- 提交疑似命中时不返回新工作，仅仅不带参数调用时才返回。\n- 区块字段已拆分为 data 和 hash1。\n- data 为 128 字节，包含已被 midstate 哈希过的前一半。\n- hash1 恒定不变，然而为方便仍一并给出。\n- \"ThreadRPCServer method=getwork\" 的日志已禁用，否则日志里垃圾太多。</p>","zhText":"我把 m0mchil 的 getwork 重新设计后上传到了 SVN r189（版本号 31601）\nm0mchil 的外部比特币矿工构想解决了很多问题。GPU 编程不成熟、编译困难，我不想给构建加更多依赖。getwork 让这些问题得以分开解决——不同的硬件和操作系统用不同的程序。服务器农场能够仅仅跑一个 Bitcoin 节点、其余全跑 getwork 客户端，这亦很方便。\n接口有几处变化：\ngetwork [data]\n倘若未指定 [data]，返回格式化的待运算哈希数据：\n \"midstate\"：哈希完数据前一半之后的预计算哈希状态\n \"data\"：区块数据\n \"hash1\"：用于第二次哈希的格式化哈希缓冲区\n \"target\"：小端序哈希目标\n倘若指定了 [data]，则尝试解出该区块，成功时返回 true。[data] 就是 \"data\" 字段返回的那 128 字节区块数据，不过是改了 nonce。\n注意事项：\n- 提交疑似命中时不返回新工作，仅仅不带参数调用时才返回。\n- 区块字段已拆分为 data 和 hash1。\n- data 为 128 字节，包含已被 midstate 哈希过的前一半。\n- hash1 恒定不变，然而为方便仍一并给出。\n- \"ThreadRPCServer method=getwork\" 的日志已禁用，否则日志里垃圾太多。"},{"id":3637,"sid":null,"sat":0,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"nelisky","date":"2010-11-23","ts":"2010-11-23T20:43:52Z","url":"https://bitcointalk.org/index.php?topic=1901.msg23890#msg23890","zh":"<p>我理解外部矿工的用例，然而我更喜欢一体化的做法。我还能把自己的挖矿代码编译进去吗？我很喜欢你不久前推出的那个改造过的接口，相当想继续用下去。</p>","zhText":"我理解外部矿工的用例，然而我更喜欢一体化的做法。我还能把自己的挖矿代码编译进去吗？我很喜欢你不久前推出的那个改造过的接口，相当想继续用下去。"},{"id":3638,"sid":508,"sat":1,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-23","ts":"2010-11-23T20:55:27Z","url":"https://bitcointalk.org/index.php?topic=1901.msg23891#msg23891","zh":"<p>它不是严格意义上的即插即用替代品。我想把接口稍微清理一下。仅仅需要改几处。</p><p>ScanHash_ 函数不会消失。顺带一提，这个接口的参数设计就是参照那组函数（midstate, data, hash1）镜像的。</p>","zhText":"它不是严格意义上的即插即用替代品。我想把接口稍微清理一下。仅仅需要改几处。\nScanHash_ 函数不会消失。顺带一提，这个接口的参数设计就是参照那组函数（midstate, data, hash1）镜像的。"},{"id":3641,"sid":null,"sat":0,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"jgarzik","date":"2010-11-24","ts":"2010-11-24T04:47:42Z","url":"https://bitcointalk.org/index.php?topic=1901.msg24008#msg24008","zh":"<p>刚开始用 C 写一个简单的 CPU 矿工，主要是做演示，顺便弄懂 'getwork'。</p><p>仓库在 git://github.com/jgarzik/cpuminer.git</p><p>实现已然完成……然而跑不通，先别太兴奋。我怀疑 ByteReverse（或缺少它）有什么古怪。'data' 和 'nonce' 到底要不要字节反转、怎么反转，相当不清楚。</p>","zhText":"刚开始用 C 写一个简单的 CPU 矿工，主要是做演示，顺便弄懂 'getwork'。\n仓库在 git://github.com/jgarzik/cpuminer.git\n实现已然完成……然而跑不通，先别太兴奋。我怀疑 ByteReverse（或缺少它）有什么古怪。'data' 和 'nonce' 到底要不要字节反转、怎么反转，相当不清楚。"},{"id":3642,"sid":null,"sat":0,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"DiabloD3","date":"2010-11-24","ts":"2010-11-24T11:31:11Z","url":"https://bitcointalk.org/index.php?topic=1901.msg24050#msg24050","zh":"<p>中本聪，请修正你的 getwork 实现，使其符合 m0mchill 的规范</p>","zhText":"中本聪，请修正你的 getwork 实现，使其符合 m0mchill 的规范"},{"id":3643,"sid":null,"sat":0,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"m0mchil","date":"2010-11-24","ts":"2010-11-24T11:56:34Z","url":"https://bitcointalk.org/index.php?topic=1901.msg24053#msg24053","zh":"<p>不必这么改，我会把矿工改成符合规范的。我眼下不过是有点忙。</p>","zhText":"不必这么改，我会把矿工改成符合规范的。我眼下不过是有点忙。"},{"id":3644,"sid":509,"sat":1,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-24","ts":"2010-11-24T17:21:01Z","url":"https://bitcointalk.org/index.php?topic=1901.msg24095#msg24095","zh":"<blockquote><p>实现已然完成……然而跑不通，先别太兴奋。我怀疑 ByteReverse（或缺少它）有什么古怪。'data' 和 'nonce' 到底要不要字节反转、怎么反转，相当不清楚。</p></blockquote><p>getwork 负责字节反转。midstate、data 和 hash1 已然是大端序，你把 data 按大端序传回去即可，因而你全程用大端序工作，不需要做任何字节反转。它们与传给 ScanHash_ 函数的是同一份数据。你能够把 midstate、data 和 hash1 放进 16 字节对齐的缓冲区，传给 ScanHash_ 函数，譬如 ScanHash(pmidstate, pdata + 64, phash1, nHashesDone)。找到 nonce 后，把它补进 data 再调用 getwork。</p><p>我或许理应把 ScanHash_ 函数改成用 pdata 而不是 pdata + 64，如此更一致。</p><p>target 是小端序，意图与 m0mchil 的做法一致。（倘若不是，那就理应修正。）这是唯一需要你做字节反转的地方。我猜是这样：if ByteReverse((unsigned int*)hash[6]) < (unsigned int*)target[6]。</p><blockquote><p>中本聪，请修正你的 getwork 实现，使其符合 m0mchill 的规范</p></blockquote><p>这就是新规范。把你的矿工更新到它理应不难。</p><p>变化有：\n- 提交疑似命中时不返回新工作，仅仅不带参数调用时才返回。\n- 区块字段已拆分为 data 和 hash1。\n- state 改名为 midstate，保持一致性。\n- 不再需要 extranonce。</p>","zhText":"实现已然完成……然而跑不通，先别太兴奋。我怀疑 ByteReverse（或缺少它）有什么古怪。'data' 和 'nonce' 到底要不要字节反转、怎么反转，相当不清楚。\n\ngetwork 负责字节反转。midstate、data 和 hash1 已然是大端序，你把 data 按大端序传回去即可，因而你全程用大端序工作，不需要做任何字节反转。它们与传给 ScanHash_ 函数的是同一份数据。你能够把 midstate、data 和 hash1 放进 16 字节对齐的缓冲区，传给 ScanHash_ 函数，譬如 ScanHash(pmidstate, pdata + 64, phash1, nHashesDone)。找到 nonce 后，把它补进 data 再调用 getwork。\n我或许理应把 ScanHash_ 函数改成用 pdata 而不是 pdata + 64，如此更一致。\ntarget 是小端序，意图与 m0mchil 的做法一致。（倘若不是，那就理应修正。）这是唯一需要你做字节反转的地方。我猜是这样：if ByteReverse((unsigned int*)hash[6]) 中本聪，请修正你的 getwork 实现，使其符合 m0mchill 的规范\n\n这就是新规范。把你的矿工更新到它理应不难。\n变化有：\n- 提交疑似命中时不返回新工作，仅仅不带参数调用时才返回。\n- 区块字段已拆分为 data 和 hash1。\n- state 改名为 midstate，保持一致性。\n- 不再需要 extranonce。"},{"id":3134,"sid":510,"sat":1,"tid":232,"tt":"python OpenCL bitcoin miner","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-24","ts":"2010-11-24T17:53:09Z","url":"https://bitcointalk.org/index.php?topic=1334.msg24101#msg24101","zh":"<p>修订版 getwork 已然进了官方客户端，然而矿工程序需要稍微更新一下才能使用。</p>","zhText":"修订版 getwork 已然进了官方客户端，然而矿工程序需要稍微更新一下才能使用。"},{"id":3664,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"wumpus","date":"2010-11-25","ts":"2010-11-25T14:31:34Z","url":"https://bitcointalk.org/index.php?topic=1931.msg24370#msg24370","zh":"<p>确实，把数据随客户端一起发布不过是权宜之计。</p><p>倘若比特币 P2P 协议在传输大量区块时效率低下的话，这个问题理应修掉。我想原因在于硬盘同步在同时进行。兴许初次下载期间理应暂停这个同步，或者把协议对区块 [0..last-10000] 的传输改造得更像 bittorrent，因那部分基本上已然板上钉钉。</p>","zhText":"确实，把数据随客户端一起发布不过是权宜之计。\n倘若比特币 P2P 协议在传输大量区块时效率低下的话，这个问题理应修掉。我想原因在于硬盘同步在同时进行。兴许初次下载期间理应暂停这个同步，或者把协议对区块 [0..last-10000] 的传输改造得更像 bittorrent，因那部分基本上已然板上钉钉。"},{"id":3665,"sid":511,"sat":1,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-25","ts":"2010-11-25T17:51:39Z","url":"https://bitcointalk.org/index.php?topic=1931.msg24438#msg24438","zh":"<p>花时间的不是下载，而是验证和建立索引。</p><p>从带宽上说，它比下载一个压缩包更高效。比特币仅仅下载 blk0001.dat 里的数据，目前是 55MB，进而自己构建 blkindex.dat，为 47MB。构建 blkindex.dat 才是全部磁盘活动的来源。</p><p>在区块下载期间，它每 500 个区块才把数据库刷一次盘。你恐会看到区块计数在 ??499 和 ??999 处停顿。那就是在刷盘。</p><p>自己做验证和建索引，是确保索引数据安全的唯一办法。倘若从一个不受信任的来源复制 blk0001.dat 和 blkindex.dat，就无法知道里面的全部内容是否可信。</p><p>兴许 Berkeley DB 有一些可调的开关，能够启用或加大缓存内存。</p>","zhText":"花时间的不是下载，而是验证和建立索引。\n从带宽上说，它比下载一个压缩包更高效。比特币仅仅下载 blk0001.dat 里的数据，目前是 55MB，进而自己构建 blkindex.dat，为 47MB。构建 blkindex.dat 才是全部磁盘活动的来源。\n在区块下载期间，它每 500 个区块才把数据库刷一次盘。你恐会看到区块计数在 ??499 和 ??999 处停顿。那就是在刷盘。\n自己做验证和建索引，是确保索引数据安全的唯一办法。倘若从一个不受信任的来源复制 blk0001.dat 和 blkindex.dat，就无法知道里面的全部内容是否可信。\n兴许 Berkeley DB 有一些可调的开关，能够启用或加大缓存内存。"},{"id":3689,"sid":512,"sat":1,"tid":249,"tt":"Version 0.3.17","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-25","ts":"2010-11-25T20:07:36Z","url":"https://bitcointalk.org/index.php?topic=1946.msg24460#msg24460","zh":"<p>0.3.17 版现已发布。</p><p>变更：\n- 新的 getwork，感谢 m0mchil\n- UI 选项菜单中新增交易手续费设置\n- 免费交易限额\n- sendtoaddress 返回交易 ID 而不是 \"sent\"\n- getaccountaddress <account></p><p>UI 里的交易手续费设置很容易，因它从 0.1.5 起就留在那里，我只需重新启用。</p><p>基于账户的命令：move、sendfrom 和 getbalance <account> 将在下一版发布。在那之前我们还有一些改动要做。</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.17/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.17/</a></p>","zhText":"0.3.17 版现已发布。\n变更：\n- 新的 getwork，感谢 m0mchil\n- UI 选项菜单中新增交易手续费设置\n- 免费交易限额\n- sendtoaddress 返回交易 ID 而不是 \"sent\"\n- getaccountaddress \nUI 里的交易手续费设置很容易，因它从 0.1.5 起就留在那里，我只需重新启用。\n基于账户的命令：move、sendfrom 和 getbalance 将在下一版发布。在那之前我们还有一些改动要做。\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.17/"},{"id":3668,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"jgarzik","date":"2010-11-26","ts":"2010-11-26T02:07:43Z","url":"https://bitcointalk.org/index.php?topic=1931.msg24522#msg24522","zh":"<blockquote><p>兴许 Berkeley DB 有一些可调的开关，能够启用或加大缓存内存。</p></blockquote><p>下载期间你需要 <a href=\"http://en.wikipedia.org/wiki/ACID\">ACID</a> 的哪些性质？</p><p>添加 BDB 记录不过是向日志文件追加，直到你<a href=\"http://www.mathematik.uni-ulm.de/help/BerkeleyDB/ref/transapp/checkpoint.html\">发出一次检查点</a>。检查点随后更新主数据库文件。</p><p>在正常 BDB 事务下，能够保证每条日志记录在事务提交成功之前都同步到磁盘盘片。这相当严格，然而完整 ACID 务必如此。启用 <a href=\"http://www.mathematik.uni-ulm.de/help/BerkeleyDB/api_c/env_set_flags.html\">DB_TXN_NOSYNC</a> 仍能保留很多：</p><p>\"数据库完整性会得到维持，然而如果应用或系统发生故障，恢复时最近已提交的一部分事务有可能被撤销\"</p><p>比特币显然能在最近的事务被撤销后恢复，因而，在 100% 的初始区块下载期间都设这个标志似乎是有益的。</p><p>剩下的就是检查点，它是在检查点时刻的工作量——必须从日志复制到数据库文件的记录数——与实际耗时之间的权衡。只能试几个值看感觉了——兴许每 10,000 个区块检查点一次？</p>","zhText":"兴许 Berkeley DB 有一些可调的开关，能够启用或加大缓存内存。\n\n下载期间你需要 ACID 的哪些性质？\n添加 BDB 记录不过是向日志文件追加，直到你发出一次检查点。检查点随后更新主数据库文件。\n在正常 BDB 事务下，能够保证每条日志记录在事务提交成功之前都同步到磁盘盘片。这相当严格，然而完整 ACID 务必如此。启用 DB_TXN_NOSYNC 仍能保留很多：\n\"数据库完整性会得到维持，然而如果应用或系统发生故障，恢复时最近已提交的一部分事务有可能被撤销\"\n比特币显然能在最近的事务被撤销后恢复，因而，在 100% 的初始区块下载期间都设这个标志似乎是有益的。\n剩下的就是检查点，它是在检查点时刻的工作量——必须从日志复制到数据库文件的记录数——与实际耗时之间的权衡。只能试几个值看感觉了——兴许每 10,000 个区块检查点一次？"},{"id":3669,"sid":513,"sat":1,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-26","ts":"2010-11-26T17:32:01Z","url":"https://bitcointalk.org/index.php?topic=1931.msg24662#msg24662","zh":"<p>我在一块慢速的 7 年老硬盘上测过，带宽和 CPU 显然不是瓶颈。初始下载用了 1 小时 20 分钟。</p><p>倘若远超这个时间——当然 24 小时肯定算远超——那一定是从很慢的节点下载，或者你的连接比每秒约 15KB（120kbps）慢得多，或者有别的地方出了问题。出现那种情况时，最好能知道瓶颈看起来在哪里。</p><p>约莫每 10 分钟最新区块送达时，它都有机会切换到更快的节点。最新区块广播时，它会向其他节点请求接下来的 500 个区块，并从发送最快的一个继续下载。至少，它本该这样工作。</p><blockquote><p>下载期间你需要 <a href=\"http://en.wikipedia.org/wiki/ACID\">ACID</a> 的哪些性质？</p></blockquote><p>兴许仅仅需要更多的读缓存。它必须随机地读遍 blk0001.dat 和 blkindex.dat 来建索引。它不能假设文件比内存小，虽然目前仍是这样。缓存会相当有效，因大多数依赖都是新近的。</p><p>理应有人用不同的 Berkeley DB 设置做实验，看看有没有能让下载显著加快的配置。倘若真发现了什么，我们再落实细节。</p><blockquote><p>添加 BDB 记录不过是向日志文件追加，直到你发出一次检查点。检查点随后更新主数据库文件。</p></blockquote><p>我们每 500 个区块检查点一次。</p>","zhText":"我在一块慢速的 7 年老硬盘上测过，带宽和 CPU 显然不是瓶颈。初始下载用了 1 小时 20 分钟。\n倘若远超这个时间——当然 24 小时肯定算远超——那一定是从很慢的节点下载，或者你的连接比每秒约 15KB（120kbps）慢得多，或者有别的地方出了问题。出现那种情况时，最好能知道瓶颈看起来在哪里。\n约莫每 10 分钟最新区块送达时，它都有机会切换到更快的节点。最新区块广播时，它会向其他节点请求接下来的 500 个区块，并从发送最快的一个继续下载。至少，它本该这样工作。\n下载期间你需要 ACID 的哪些性质？\n\n兴许仅仅需要更多的读缓存。它必须随机地读遍 blk0001.dat 和 blkindex.dat 来建索引。它不能假设文件比内存小，虽然目前仍是这样。缓存会相当有效，因大多数依赖都是新近的。\n理应有人用不同的 Berkeley DB 设置做实验，看看有没有能让下载显著加快的配置。倘若真发现了什么，我们再落实细节。\n添加 BDB 记录不过是向日志文件追加，直到你发出一次检查点。检查点随后更新主数据库文件。\n\n我们每 500 个区块检查点一次。"},{"id":3700,"sid":null,"sat":0,"tid":249,"tt":"Version 0.3.17","src":"Bitcointalk","author":"nelisky","date":"2010-11-26","ts":"2010-11-26T17:58:18Z","url":"https://bitcointalk.org/index.php?topic=1946.msg24668#msg24668","zh":"<p>OSX 构建是谁负责的？鉴于它通常滞后，我猜是由一个不以 OSX 为主操作系统的人完成的。倘若如此我能够帮忙，告诉我现在是怎么做的就行。</p>","zhText":"OSX 构建是谁负责的？鉴于它通常滞后，我猜是由一个不以 OSX 为主操作系统的人完成的。倘若如此我能够帮忙，告诉我现在是怎么做的就行。"},{"id":3701,"sid":514,"sat":1,"tid":249,"tt":"Version 0.3.17","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-26","ts":"2010-11-26T18:23:30Z","url":"https://bitcointalk.org/index.php?topic=1946.msg24673#msg24673","zh":"<p>是 Laszlo 在做，然而我有一阵子没让他做了，因为没有重大更新。这一版我会让他做。</p>","zhText":"是 Laszlo 在做，然而我有一阵子没让他做了，因为没有重大更新。这一版我会让他做。"},{"id":3646,"sid":null,"sat":0,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"DiabloD3","date":"2010-11-26","ts":"2010-11-26T21:17:07Z","url":"https://bitcointalk.org/index.php?topic=1901.msg24701#msg24701","zh":"<blockquote><p>- 提交疑似命中时不返回新工作，仅仅不带参数调用时才返回。</p></blockquote><p>倘若你返回我发给客户端的东西究竟是不是一次真正的命中，会相当有用。如此通过健全性检查，矿工里的调试会更容易。</p>","zhText":"- 提交疑似命中时不返回新工作，仅仅不带参数调用时才返回。\n\n倘若你返回我发给客户端的东西究竟是不是一次真正的命中，会相当有用。如此通过健全性检查，矿工里的调试会更容易。"},{"id":3647,"sid":515,"sat":1,"tid":246,"tt":"New getwork","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-26","ts":"2010-11-26T21:31:13Z","url":"https://bitcointalk.org/index.php?topic=1901.msg24708#msg24708","zh":"<p>它就是这么做的，返回 true/false。</p>","zhText":"它就是这么做的，返回 true/false。"},{"id":3659,"sid":null,"sat":0,"tid":247,"tt":"New demonstration CPU miner available","src":"Bitcointalk","author":"jgarzik","date":"2010-11-26","ts":"2010-11-26T21:45:54Z","url":"https://bitcointalk.org/index.php?topic=1925.msg24712#msg24712","zh":"<blockquote><p>我该用哪个特定版本的 jansson？我从 git 装的，编译时出现如下错误：</p><pre><code>util.c: In function json_rpc_call:\nutil.c:133:2: warning: passing argument 2 of json_loads makes integer from pointer without a cast\n/usr/local/include/jansson.h:188:9: note: expected size_t but argument is of type struct json_error_t *\nutil.c:133:2: error: too few arguments to function json_loads\n/usr/local/include/jansson.h:188:9: note: declared here</code></pre></blockquote><p>已用 jansson 1.2 和 1.3 的发布版测试过。</p><p>编辑：倘若没有 jansson，当前的 cpuminer.git 会构建一个树内版本。因而你能够选择如此解决问题……把系统里的 jansson 删掉。</p>","zhText":"我该用哪个特定版本的 jansson？我从 git 装的，编译时出现如下错误：\nutil.c: In function json_rpc_call:\nutil.c:133:2: warning: passing argument 2 of json_loads makes integer from pointer without a cast\n/usr/local/include/jansson.h:188:9: note: expected size_t but argument is of type struct json_error_t *\nutil.c:133:2: error: too few arguments to function json_loads\n/usr/local/include/jansson.h:188:9: note: declared here\n已用 jansson 1.2 和 1.3 的发布版测试过。\n编辑：倘若没有 jansson，当前的 cpuminer.git 会构建一个树内版本。因而你能够选择如此解决问题……把系统里的 jansson 删掉。"},{"id":3660,"sid":516,"sat":1,"tid":247,"tt":"New demonstration CPU miner available","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-26","ts":"2010-11-26T22:02:41Z","url":"https://bitcointalk.org/index.php?topic=1925.msg24719#msg24719","zh":"<p>你理应试试把 tcatm 的 4 路 SSE2 SHA 放进 sha256.cpp。它作为 C 文件编译没问题，只需把 sha256.cpp 改名为 sha256.c。我在 Windows 上简单测试时让它跑通了，然而与 Bitcoin 链接时不行。作为 C 程序的一部分而不是 C++，成功的机会恐更大。</p><p>目前它仅仅在 Linux 构建中启用，因而倘若你让它跑通了，能够让 Windows 用户亦用上。在 AMD CPU 上约莫提速 100%。</p>","zhText":"你理应试试把 tcatm 的 4 路 SSE2 SHA 放进 sha256.cpp。它作为 C 文件编译没问题，只需把 sha256.cpp 改名为 sha256.c。我在 Windows 上简单测试时让它跑通了，然而与 Bitcoin 链接时不行。作为 C 程序的一部分而不是 C++，成功的机会恐更大。\n目前它仅仅在 Linux 构建中启用，因而倘若你让它跑通了，能够让 Windows 用户亦用上。在 AMD CPU 上约莫提速 100%。"},{"id":3673,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"jgarzik","date":"2010-11-28","ts":"2010-11-28T02:33:29Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25017#msg25017","zh":"<p>IRC 上又来了一个新用户，这次是 Linux，下载速度是每 4 秒 1 个区块——估计总下载时间要 4 天左右。</p><p>这个帖子里其他评论者说得对：升级用户不需要区块数据库……然而务必<i>做点什么</i>来改善新用户的初始区块下载体验。数据库随便你怎么优化……总会有节点出于各种原因慢吞吞地给你发区块。</p><p>我们把创世区块到区块 74000 的哈希硬编码（编译）进了比特币，因而没理由不能从<i>任何地方</i>自动下载区块数据库的压缩包，解包、验证、进而开跑。</p>","zhText":"IRC 上又来了一个新用户，这次是 Linux，下载速度是每 4 秒 1 个区块——估计总下载时间要 4 天左右。\n这个帖子里其他评论者说得对：升级用户不需要区块数据库……然而务必做点什么来改善新用户的初始区块下载体验。数据库随便你怎么优化……总会有节点出于各种原因慢吞吞地给你发区块。\n我们把创世区块到区块 74000 的哈希硬编码（编译）进了比特币，因而没理由不能从任何地方自动下载区块数据库的压缩包，解包、验证、进而开跑。"},{"id":3675,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"jgarzik","date":"2010-11-28","ts":"2010-11-28T07:33:55Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25058#msg25058","zh":"<blockquote><p>*必须做点什么*，区块链在接下来一年左右会变得*相当庞大*，对吧？</p></blockquote><p>是的，没错。</p><p>想必某个时候会出现仅仅下载区块头的轻量客户端，然而那仍然会有成百上千个……</p>","zhText":"*必须做点什么*，区块链在接下来一年左右会变得*相当庞大*，对吧？\n\n是的，没错。\n想必某个时候会出现仅仅下载区块头的轻量客户端，然而那仍然会有成百上千个……"},{"id":3735,"sid":null,"sat":0,"tid":250,"tt":"[2.5+ EH] Slush Pool (slushpool.com); World's First Mining Pool","src":"Bitcointalk","author":"farmer_boy","date":"2010-11-28","ts":"2010-11-28T15:58:18Z","url":"https://bitcointalk.org/index.php?topic=1976.msg25118#msg25118","zh":"<p>我想我起初误解了区块——我们计算的哈希与地址无关。现在我相信我们要找的是形如 sha256（比特币地址 + 金额（我不确定这个值是否是隐含的，因而可能没有）+ <答案>）的东西，并带有一些期望的性质（末尾零的个数是其中之一的一种近似），其中 + 表示某种比特串接运算符。</p><p>倘若计算是这样的，那_也许_行得通，然而我不明白为什么别人不能仅仅把对你毫无价值的哈希发给你、而把对你有用的扣下不发。用这种机制他们能够让你破产。无论如何，我认为仅仅用自然语言来讨论这些话题是个坏办法。直接把你在服务器和客户端上打算做的计算写出来，进而我们就能看出这是个绝妙的主意还是有缺陷的主意。在计算旁边标注各自想达成的目标，亦对沟通有帮助。</p><p>逼节点合作可不是件容易事。</p>","zhText":"我想我起初误解了区块——我们计算的哈希与地址无关。现在我相信我们要找的是形如 sha256（比特币地址 + 金额（我不确定这个值是否是隐含的，因而可能没有）+ ）的东西，并带有一些期望的性质（末尾零的个数是其中之一的一种近似），其中 + 表示某种比特串接运算符。\n倘若计算是这样的，那_也许_行得通，然而我不明白为什么别人不能仅仅把对你毫无价值的哈希发给你、而把对你有用的扣下不发。用这种机制他们能够让你破产。无论如何，我认为仅仅用自然语言来讨论这些话题是个坏办法。直接把你在服务器和客户端上打算做的计算写出来，进而我们就能看出这是个绝妙的主意还是有缺陷的主意。在计算旁边标注各自想达成的目标，亦对沟通有帮助。\n逼节点合作可不是件容易事。"},{"id":3736,"sid":517,"sat":1,"tid":250,"tt":"[2.5+ EH] Slush Pool (slushpool.com); World's First Mining Pool","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-28","ts":"2010-11-28T16:03:30Z","url":"https://bitcointalk.org/index.php?topic=1976.msg25119#msg25119","zh":"<p>ribuck 的描述非常准确。</p><p>矿池运营者能够修改他们的 getwork，多加一个参数：你的份额应发送到的地址。</p><p>对矿池运营者来说，简单的做法是等下一个区块被找到后按比例分配：\n用户的近似命中数/所有人的近似命中总数</p><p>如此起步更容易亦更安全。它还有个好处：同一用户的多次命中能够合并成一笔交易。你的命中通常会有很多来自同一些人。</p><p>即时满足的方式是每次近似命中立即支付固定金额，运营者承担在区块被找到之前命中数或多或少的随机风险。</p><p>无论哪种方式，提交解出区块的那次命中的用户理应从最上面额外拿一笔，譬如 10 BTC。</p><p>新用户其实甚至不需要 Bitcoin 软件。他们能够下载一个矿工程序，在 mtgox 或 mybitcoin 开个账户，把存款地址填进矿工，进而指向任何人的矿池服务器。矿工说找到了东西之后，过一会儿账户里就会出现几个币。</p><p>矿工作者最好确保绝不误报近似命中。用户要靠这个来检查矿池运营者有没有作弊。倘若矿工错误地报告找到了东西，用户去查账户、什么都没找到，就会迁怒于矿池运营者。</p>","zhText":"ribuck 的描述非常准确。\n矿池运营者能够修改他们的 getwork，多加一个参数：你的份额应发送到的地址。\n对矿池运营者来说，简单的做法是等下一个区块被找到后按比例分配：\n用户的近似命中数/所有人的近似命中总数\n如此起步更容易亦更安全。它还有个好处：同一用户的多次命中能够合并成一笔交易。你的命中通常会有很多来自同一些人。\n即时满足的方式是每次近似命中立即支付固定金额，运营者承担在区块被找到之前命中数或多或少的随机风险。\n无论哪种方式，提交解出区块的那次命中的用户理应从最上面额外拿一笔，譬如 10 BTC。\n新用户其实甚至不需要 Bitcoin 软件。他们能够下载一个矿工程序，在 mtgox 或 mybitcoin 开个账户，把存款地址填进矿工，进而指向任何人的矿池服务器。矿工说找到了东西之后，过一会儿账户里就会出现几个币。\n矿工作者最好确保绝不误报近似命中。用户要靠这个来检查矿池运营者有没有作弊。倘若矿工错误地报告找到了东西，用户去查账户、什么都没找到，就会迁怒于矿池运营者。"},{"id":3740,"sid":null,"sat":0,"tid":251,"tt":"Is safe running bitcoins with the same wallet on more computers simultaneously?","src":"Bitcointalk","author":"BitLex","date":"2010-11-28","ts":"2010-11-28T16:03:41Z","url":"https://bitcointalk.org/index.php?topic=1986.msg25120#msg25120","zh":"<p>生成更多地址加入密钥池的选项已然存在</p><pre><code># bitcoin.conf\n\n# Pre-generate this many public/private key pairs, so wallet backups will be valid for\n# both prior transactions and several dozen future transactions.\nkeypool=100</code></pre><p>然而据我理解，它本意是让备份（在一段时间内）保持有效，而不是同步多个钱包。\n我不知道长远看这会怎么运作。</p>","zhText":"生成更多地址加入密钥池的选项已然存在\n# bitcoin.conf\n\n# Pre-generate this many public/private key pairs, so wallet backups will be valid for\n# both prior transactions and several dozen future transactions.\nkeypool=100然而据我理解，它本意是让备份（在一段时间内）保持有效，而不是同步多个钱包。\n我不知道长远看这会怎么运作。"},{"id":3679,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"MoonShadow","date":"2010-11-28","ts":"2010-11-28T16:25:15Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25126#msg25126","zh":"<p>我的理解是，索引缺失时客户端启动时已然会重新检查区块链。我第一次启动时就是这么做的，而且看起来确实像是在沿着链推进。反正它不是亦需要索引才能工作吗？为什么启动时要假设区块链是有效的？任何人都可能改过它。创世区块是编码进客户端的，不是吗？那个加上区块链检查点是仅有的被假定为正确的部分，还是我弄错了？没有充分的理由阻止用其他方式下载区块链。在比特币网络接近其容量极限的未来，通过 P2P 网络下载整条区块链将是有害的。</p><p>即使是已然剪掉默克尔树的链，亦理应能从头验证，否则用默克尔树还有什么意义？</p>","zhText":"我的理解是，索引缺失时客户端启动时已然会重新检查区块链。我第一次启动时就是这么做的，而且看起来确实像是在沿着链推进。反正它不是亦需要索引才能工作吗？为什么启动时要假设区块链是有效的？任何人都可能改过它。创世区块是编码进客户端的，不是吗？那个加上区块链检查点是仅有的被假定为正确的部分，还是我弄错了？没有充分的理由阻止用其他方式下载区块链。在比特币网络接近其容量极限的未来，通过 P2P 网络下载整条区块链将是有害的。\n即使是已然剪掉默克尔树的链，亦理应能从头验证，否则用默克尔树还有什么意义？"},{"id":3680,"sid":518,"sat":1,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-28","ts":"2010-11-28T17:13:01Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25138#msg25138","zh":"<p>尽管说了这么多，当前的下一步是：</p><blockquote><p>理应有人用不同的 Berkeley DB 设置做实验，看看有没有能让下载显著加快的配置。倘若真发现了什么，我们再落实细节。</p></blockquote><p>具体来说，我怀疑更多的读缓存可能帮大忙。</p><blockquote><p>IRC 上又来了一个新用户，这次是 Linux，下载速度是每 4 秒 1 个区块——估计总下载时间要 4 天左右。</p></blockquote><p>那就是出了更具体的问题。那不是正常初始下载时间。没有更多细节就无法诊断。如果是下载慢造成的，10-20 分钟后下一次区块广播本该让它切换到更快的来源，它提速了吗？debug.log 里恐有线索。他们的网络连接有多快？是一直慢，还是仅仅在某处变慢？</p><blockquote><p>我们把创世区块到区块 74000 的哈希硬编码（编译）进了比特币，因而没理由不能从<i>任何地方</i>自动下载区块数据库的压缩包，解包、验证、进而开跑。</p></blockquote><p>74000 检查点不足以保护你，而且倘若下载已然超过 74000 就毫无作用。-checkblocks 能够做更多，然而仍然容易被绕过。你终究得信任压缩包的提供者。</p><p>倘若真有一个「验证」步骤，那耗时和现在正常的初始下载一样长——瓶颈是建索引，不是数据下载。</p><blockquote><p>想必某个时候会出现仅仅下载区块头的轻量客户端，然而那仍然会有成百上千个……</p></blockquote><p>每个区块头 80 字节，不需要建索引。兴许 1 分钟就够。</p><blockquote><p>未压缩的数据，用一个并非为批量数据传输设计的协议（比特币 P2P）。</p></blockquote><p>数据主要是哈希、密钥和签名，不可压缩。</p><p>初始下载的速度并不反映协议的批量数据传输速率。真正的制约因素是下载过程中的建索引。</p>","zhText":"尽管说了这么多，当前的下一步是：\n理应有人用不同的 Berkeley DB 设置做实验，看看有没有能让下载显著加快的配置。倘若真发现了什么，我们再落实细节。\n\n具体来说，我怀疑更多的读缓存可能帮大忙。\nIRC 上又来了一个新用户，这次是 Linux，下载速度是每 4 秒 1 个区块——估计总下载时间要 4 天左右。\n\n那就是出了更具体的问题。那不是正常初始下载时间。没有更多细节就无法诊断。如果是下载慢造成的，10-20 分钟后下一次区块广播本该让它切换到更快的来源，它提速了吗？debug.log 里恐有线索。他们的网络连接有多快？是一直慢，还是仅仅在某处变慢？\n我们把创世区块到区块 74000 的哈希硬编码（编译）进了比特币，因而没理由不能从任何地方自动下载区块数据库的压缩包，解包、验证、进而开跑。\n\n74000 检查点不足以保护你，而且倘若下载已然超过 74000 就毫无作用。-checkblocks 能够做更多，然而仍然容易被绕过。你终究得信任压缩包的提供者。\n倘若真有一个「验证」步骤，那耗时和现在正常的初始下载一样长——瓶颈是建索引，不是数据下载。\n想必某个时候会出现仅仅下载区块头的轻量客户端，然而那仍然会有成百上千个……\n\n每个区块头 80 字节，不需要建索引。兴许 1 分钟就够。\n未压缩的数据，用一个并非为批量数据传输设计的协议（比特币 P2P）。\n\n数据主要是哈希、密钥和签名，不可压缩。\n初始下载的速度并不反映协议的批量数据传输速率。真正的制约因素是下载过程中的建索引。"},{"id":3741,"sid":519,"sat":1,"tid":251,"tt":"Is safe running bitcoins with the same wallet on more computers simultaneously?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-28","ts":"2010-11-28T18:06:39Z","url":"https://bitcointalk.org/index.php?topic=1986.msg25154#msg25154","zh":"<blockquote><p>它会自动同步吗？</p></blockquote><p>完全不会。不建议亦不支持使用多份 wallet.dat，事实上整个比特币的设计就是为了防住这种用法。两份副本都会被搞坏。</p><p>倘若你想把多台机器上生成的币并进一个钱包，现在更好的办法是在那些机器上跑 getwork 矿工。jgarzik 有个 CPU 矿工，支持 tcatm 的 4 路 SSE2，因而倘若你是 AMD 或较新的 Intel（酷睿 3、5 或 7），在 Windows 上最高能比内置 SHA 快一倍。</p><p>新的演示版 CPU 矿工已发布：\n<a href=\"http://bitcointalk.org/index.php?topic=1925.0\">http://bitcointalk.org/index.php?topic=1925.0</a></p>","zhText":"它会自动同步吗？\n\n完全不会。不建议亦不支持使用多份 wallet.dat，事实上整个比特币的设计就是为了防住这种用法。两份副本都会被搞坏。\n倘若你想把多台机器上生成的币并进一个钱包，现在更好的办法是在那些机器上跑 getwork 矿工。jgarzik 有个 CPU 矿工，支持 tcatm 的 4 路 SSE2，因而倘若你是 AMD 或较新的 Intel（酷睿 3、5 或 7），在 Windows 上最高能比内置 SHA 快一倍。\n新的演示版 CPU 矿工已发布：\nhttp://bitcointalk.org/index.php?topic=1925.0"},{"id":3683,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"jgarzik","date":"2010-11-29","ts":"2010-11-29T19:01:12Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25434#msg25434","zh":"<blockquote><p>构建 blkindex.dat 才是全部磁盘活动的来源。\n[...]\n兴许 Berkeley DB 有一些可调的开关，能够启用或加大缓存内存。</p></blockquote><p>AddToBlockIndex（main.cpp）里下面这段代码效率极差，大幅拖慢初始区块下载：</p><pre><code>CTxDB txdb;\n    txdb.WriteBlockIndex(CDiskBlockIndex(pindexNew));\n\n    // New best\n    if (pindexNew->bnChainWork > bnBestChainWork)\n        if (!SetBestChain(txdb, pindexNew))\n            return false;\n\n    txdb.Close();</code></pre><p>这使得向数据库装载大量记录的标准技术（db4 或 SQL 或其他）无法使用：把多条记录插入包进单个数据库事务。理想情况下，比特币在初始区块下载期间约莫每 1,000 个区块才发出一次 TxnCommit()。倘若发生崩溃，数据库仍处于一致状态。</p><p>此外，<b>每处理一个新区块都打开并关闭数据库</b>的开销高得离谱。对每一次数据库开-关操作，db4 都会</p><ul><li>诊断数据库健康状况，判断是否需要恢复。这个测试可能需要数据复制。</li><li>重新初始化内存池</li><li>读取数据库文件元数据</li><li>获取文件锁</li><li>读取并初始化 b 树或哈希专属元数据。构建哈希表/b 树根。</li><li>强制同步，即使事务以 DB_TXN_NOSYNC 调用</li><li>fsync 内存池</li></ul><p>而且，比特币还强制做一次数据库检查点，把日志里的全部事务推进主数据库。</p><p>没错，这一长串操作是按数据库（DB）执行的，不是按环境（DB_ENV），而这是一次数据库关-开循环。对比特币来说，那意味着我们<i>每处理一个新区块</i>都要来一遍。效率低得离谱，而且 db4 也不是设计成这么用的。</p><p>建议：</p><p>1) 比特币理应在程序启动时就打开数据库而不仅仅是环境，并在程序关闭时关闭数据库。db4 的设计本就能应对崩溃，只要保持正确的事务性用法——而比特币已然在正确使用 db4 事务了。</p><p>2) 对于初始区块下载，事务提交理应每 N 条记录发生一次，而不是每条记录一次。我建议 N=1000。</p><p>编辑：更新了几处细节，修正了一些错别字。</p>","zhText":"构建 blkindex.dat 才是全部磁盘活动的来源。\n[...]\n兴许 Berkeley DB 有一些可调的开关，能够启用或加大缓存内存。\n\nAddToBlockIndex（main.cpp）里下面这段代码效率极差，大幅拖慢初始区块下载：\nCTxDB txdb;\n txdb.WriteBlockIndex(CDiskBlockIndex(pindexNew));\n\n // New best\n if (pindexNew->bnChainWork > bnBestChainWork)\n if (!SetBestChain(txdb, pindexNew))\n return false;\n\n txdb.Close();这使得向数据库装载大量记录的标准技术（db4 或 SQL 或其他）无法使用：把多条记录插入包进单个数据库事务。理想情况下，比特币在初始区块下载期间约莫每 1,000 个区块才发出一次 TxnCommit()。倘若发生崩溃，数据库仍处于一致状态。\n此外，每处理一个新区块都打开并关闭数据库的开销高得离谱。对每一次数据库开-关操作，db4 都会\n诊断数据库健康状况，判断是否需要恢复。这个测试可能需要数据复制。\n重新初始化内存池\n读取数据库文件元数据\n获取文件锁\n读取并初始化 b 树或哈希专属元数据。构建哈希表/b 树根。\n强制同步，即使事务以 DB_TXN_NOSYNC 调用\nfsync 内存池\n而且，比特币还强制做一次数据库检查点，把日志里的全部事务推进主数据库。\n没错，这一长串操作是按数据库（DB）执行的，不是按环境（DB_ENV），而这是一次数据库关-开循环。对比特币来说，那意味着我们每处理一个新区块都要来一遍。效率低得离谱，而且 db4 也不是设计成这么用的。\n建议：\n1) 比特币理应在程序启动时就打开数据库而不仅仅是环境，并在程序关闭时关闭数据库。db4 的设计本就能应对崩溃，只要保持正确的事务性用法——而比特币已然在正确使用 db4 事务了。\n2) 对于初始区块下载，事务提交理应每 N 条记录发生一次，而不是每条记录一次。我建议 N=1000。\n编辑：更新了几处细节，修正了一些错别字。"},{"id":3684,"sid":520,"sat":1,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-29","ts":"2010-11-29T20:19:12Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25449#msg25449","zh":"<p>看起来你倾向于把一切都假设成错的，比实际情况还要过头。</p><p>写区块索引是轻量工作。构建交易索引才是每个区块都要做更多随机访问的。我怀疑慢就慢在读取所有前序交易输入上。读缓存对此会有帮助。最好由 DB 来做。兴许它有设置缓存内存大小的选项。</p><blockquote><p>1) 比特币理应在程序启动时就打开数据库而不仅仅是环境，并在程序关闭时关闭数据库。</p></blockquote><p>它已然这么做了。见 CDB。（譬如）CTxDB 对象的生命周期不过是为了支持数据库事务，以及关闭时判断数据库是否还有人在用。</p><blockquote><p>而且，比特币还强制做一次数据库检查点，把日志里的全部事务推进主数据库。</p></blockquote><p>倘若它真在那么做，会慢得多。它本该不过是一分钟一次或 500 区块一次：</p><pre><code>if (strFile == \"blkindex.dat\" &amp;&amp; IsInitialBlockDownload() &amp;&amp; nBestHeight % 500 != 0)\n        nMinutes = 1;\n    dbenv.txn_checkpoint(0, nMinutes, 0);</code></pre><p>或许理应加上这个：\n    if (!fReadOnly)\n        dbenv.txn_checkpoint(0, nMinutes, 0);</p><blockquote><p>2) 对于初始区块下载，事务提交理应每 N 条记录发生一次，而不是每条记录一次。我建议 N=1000。</p></blockquote><p>事务提交意味着刷盘吗？这让我很意外。我以为包在事务里的数据库操作会像其他数据库操作一样被记日志。很多数据库应用几乎每一对操作都得包进事务，譬如把钱从一个账户挪到另一个。（借记 a，贷记 b）我无法想象它们还被要求自己把操作攒成批。</p><p>在下面两种情况下，情况 1 刷一次盘、情况 2 刷两次吗？</p><p>情况 1：\nwrite\nwrite\nwrite\nwrite\ncheckpoint</p><p>情况 2：\nbegin transaction\nwrite\nwrite\ncommit transaction\nbegin transaction\nwrite\nwrite\ncommit transaction\ncheckpoint</p><p>扭曲我们的数据库用法不会是正确的路子。出路在于 BDB 设置和缓存。</p>","zhText":"看起来你倾向于把一切都假设成错的，比实际情况还要过头。\n写区块索引是轻量工作。构建交易索引才是每个区块都要做更多随机访问的。我怀疑慢就慢在读取所有前序交易输入上。读缓存对此会有帮助。最好由 DB 来做。兴许它有设置缓存内存大小的选项。\n1) 比特币理应在程序启动时就打开数据库而不仅仅是环境，并在程序关闭时关闭数据库。\n\n它已然这么做了。见 CDB。（譬如）CTxDB 对象的生命周期不过是为了支持数据库事务，以及关闭时判断数据库是否还有人在用。\n而且，比特币还强制做一次数据库检查点，把日志里的全部事务推进主数据库。\n\n倘若它真在那么做，会慢得多。它本该不过是一分钟一次或 500 区块一次：\nif (strFile == \"blkindex.dat\" && IsInitialBlockDownload() && nBestHeight % 500 != 0)\n nMinutes = 1;\n dbenv.txn_checkpoint(0, nMinutes, 0);或许理应加上这个：\n if (!fReadOnly)\n dbenv.txn_checkpoint(0, nMinutes, 0);\n2) 对于初始区块下载，事务提交理应每 N 条记录发生一次，而不是每条记录一次。我建议 N=1000。\n\n事务提交意味着刷盘吗？这让我很意外。我以为包在事务里的数据库操作会像其他数据库操作一样被记日志。很多数据库应用几乎每一对操作都得包进事务，譬如把钱从一个账户挪到另一个。（借记 a，贷记 b）我无法想象它们还被要求自己把操作攒成批。\n在下面两种情况下，情况 1 刷一次盘、情况 2 刷两次吗？\n情况 1：\nwrite\nwrite\nwrite\nwrite\ncheckpoint\n情况 2：\nbegin transaction\nwrite\nwrite\ncommit transaction\nbegin transaction\nwrite\nwrite\ncommit transaction\ncheckpoint\n扭曲我们的数据库用法不会是正确的路子。出路在于 BDB 设置和缓存。"},{"id":3746,"sid":null,"sat":0,"tid":252,"tt":"Incompatible wallet format with latest bitcoin-git ?","src":"Bitcointalk","author":"davout","date":"2010-11-29","ts":"2010-11-29T21:09:06Z","url":"https://bitcointalk.org/index.php?topic=2007.msg25471#msg25471","zh":"<p>Bitcoin version 3.17.1 beta\nDefault data directory /home/david/.bitcoin\nBound to port 8333\nbitcoin server starting\nLoading addresses...\ndbenv.open strLogDir=/home/david/.bitcoin/database strErrorFile=/home/david/.bitcoin/db.log\nLoaded 5017 addresses\n addresses               122ms\nLoading block index...\nLoadBlockIndex(): hashBestChain=00000000000013587f18  height=94571\n block index            1294ms\nLoading wallet...</p><p>************************\nEXCEPTION: NSt8ios_base7failureE\nCDataStream::read() : end of data\nbitcoin in AppInit()</p><p>terminate called after throwing an instance of 'std::ios_base::failure'</p><p>************************\nEXCEPTION: NSt8ios_base7failureE\nCDataStream::read() : end of data\nbitcoin in AppInit()</p><p>what():  CDataStream::read() : end of data</p>","zhText":"Bitcoin version 3.17.1 beta\nDefault data directory /home/david/.bitcoin\nBound to port 8333\nbitcoin server starting\nLoading addresses...\ndbenv.open strLogDir=/home/david/.bitcoin/database strErrorFile=/home/david/.bitcoin/db.log\nLoaded 5017 addresses\n addresses 122ms\nLoading block index...\nLoadBlockIndex(): hashBestChain=00000000000013587f18 height=94571\n block index 1294ms\nLoading wallet...\n************************\nEXCEPTION: NSt8ios_base7failureE\nCDataStream::read() : end of data\nbitcoin in AppInit()\nterminate called after throwing an instance of 'std::ios_base::failure'\n************************\nEXCEPTION: NSt8ios_base7failureE\nCDataStream::read() : end of data\nbitcoin in AppInit()\nwhat(): CDataStream::read() : end of data"},{"id":3687,"sid":null,"sat":0,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"jgarzik","date":"2010-11-30","ts":"2010-11-30T07:28:00Z","url":"https://bitcointalk.org/index.php?topic=1931.msg25675#msg25675","zh":"<p>我用干净的数据目录（无内容）、-noirc、-addnode=10.10.10.1、Linux 64 位做了两次计时。硬件：SATA SSD</p><p>主线，无补丁：\n     下载 94660 个区块用时 32 分钟。</p><p>主线 + AddToBlockIndex() 里的 TxnBegin/TxnCommit：\n     下载 94660 个区块用时 25 分钟。</p>","zhText":"我用干净的数据目录（无内容）、-noirc、-addnode=10.10.10.1、Linux 64 位做了两次计时。硬件：SATA SSD\n主线，无补丁：\n 下载 94660 个区块用时 32 分钟。\n主线 + AddToBlockIndex() 里的 TxnBegin/TxnCommit：\n 下载 94660 个区块用时 25 分钟。"},{"id":3747,"sid":521,"sat":1,"tid":252,"tt":"Incompatible wallet format with latest bitcoin-git ?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-11-30","ts":"2010-11-30T19:02:31Z","url":"https://bitcointalk.org/index.php?topic=2007.msg25799#msg25799","zh":"<p>这个钱包之前是配合什么用的？早期的账户补丁还是 git 构建？</p><p>出错是在加载钱包时。我想一定是在这段里：</p><pre><code>else if (strType == \"acentry\")\n    {\n        string strAccount;\n        ssKey >> strAccount;\n        uint64 nNumber;\n        ssKey >> nNumber;\n        if (nNumber > nAccountingEntryNumber)\n            nAccountingEntryNumber = nNumber;\n    }</code></pre><p>你能够用这个检查：</p><pre><code>else if (strType == \"acentry\")\n    {\n        string strAccount;\n        assert(!ssKey.empty());\n        ssKey >> strAccount;\n        uint64 nNumber;\n        if (ssKey.size() != 8 )\n            printf(\"***** %s %d\n\", strAccount.c_str(), ssKey.size());\n        assert(ssKey.empty() == false);\n        ssKey >> nNumber;\n        if (nNumber > nAccountingEntryNumber)\n            nAccountingEntryNumber = nNumber;\n    }</code></pre><p>git 上某个时期是否有过一个账户功能的过渡版本，其键仅有 (\"acentry\", \"account\")？</p><p>倘若你有 gdb，能够在 gdb 里运行它并做一次回溯。</p><p>gdb --args bitcoin ...\nrun\n(等待异常出现)\nbt</p>","zhText":"这个钱包之前是配合什么用的？早期的账户补丁还是 git 构建？\n出错是在加载钱包时。我想一定是在这段里：\nelse if (strType == \"acentry\")\n {\n string strAccount;\n ssKey >> strAccount;\n uint64 nNumber;\n ssKey >> nNumber;\n if (nNumber > nAccountingEntryNumber)\n nAccountingEntryNumber = nNumber;\n }你能够用这个检查：\nelse if (strType == \"acentry\")\n {\n string strAccount;\n assert(!ssKey.empty());\n ssKey >> strAccount;\n uint64 nNumber;\n if (ssKey.size() != 8 )\n printf(\"***** %s %d\n\", strAccount.c_str(), ssKey.size());\n assert(ssKey.empty() == false);\n ssKey >> nNumber;\n if (nNumber > nAccountingEntryNumber)\n nAccountingEntryNumber = nNumber;\n }git 上某个时期是否有过一个账户功能的过渡版本，其键仅有 (\"acentry\", \"account\")？\n倘若你有 gdb，能够在 gdb 里运行它并做一次回溯。\ngdb --args bitcoin ...\nrun\n(等待异常出现)\nbt"},{"id":3688,"sid":522,"sat":1,"tid":248,"tt":"RFC: ship block chain 1-74000 with release tarballs?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-01","ts":"2010-12-01T21:25:39Z","url":"https://bitcointalk.org/index.php?topic=1931.msg26016#msg26016","zh":"<p>这是个好优化。下次更新 SVN 时我会加上。</p><p>更一般地，我们还可以考虑这个：</p><p>dbenv.set_lk_max_objects(10000);\n        dbenv.set_errfile(fopen(strErrorFile.c_str(), \"a\")); /// debug\n        dbenv.set_flags(DB_AUTO_COMMIT, 1);\n+       dbenv.set_flags(DB_TXN_NOSYNC, 1);\n        ret = dbenv.open(strDataDir.c_str(),\n                         DB_CREATE     |\n                         DB_INIT_LOCK  |\n                         DB_INIT_LOG   |</p><p>之后我们依赖 CDB::Close() 里的 dbenv.txn_checkpoint(0, 0, 0) 在钱包写入后刷盘。</p>","zhText":"这是个好优化。下次更新 SVN 时我会加上。\n更一般地，我们还可以考虑这个：\ndbenv.set_lk_max_objects(10000);\n dbenv.set_errfile(fopen(strErrorFile.c_str(), \"a\")); /// debug\n dbenv.set_flags(DB_AUTO_COMMIT, 1);\n+ dbenv.set_flags(DB_TXN_NOSYNC, 1);\n ret = dbenv.open(strDataDir.c_str(),\n DB_CREATE |\n DB_INIT_LOCK |\n DB_INIT_LOG |\n之后我们依赖 CDB::Close() 里的 dbenv.txn_checkpoint(0, 0, 0) 在钱包写入后刷盘。"},{"id":3314,"sid":null,"sat":0,"tid":241,"tt":"Wikileaks contact info?","src":"Bitcointalk","author":"RHorning","date":"2010-12-04","ts":"2010-12-04T22:17:44Z","url":"https://bitcointalk.org/index.php?topic=1735.msg26876#msg26876","zh":"<blockquote><p>往好处想，倘若比特币真的成了「维基解密货币」、被全世界政府围攻，至少我们能拿回自己的维基百科词条！</p></blockquote><p>这话太对了。到那时关于比特币的「可靠来源」肯定不缺。我想它很可能登上大多数报纸的头版，并在电台谈话节目和其他广播电视网络上被广泛讨论。</p><p>就我自己而言，关于维基解密，我快要说「放马过来」了。注意我在这里用的是真名而不是化名，我愿意以个人身份说：我不怕同比特币这个项目扯上关系。警察已然擅自闯进过我家干了一堆蠢事，因而对我来说那道线早已被越过了。我在政治上认识的够多的人，倘若在我身上出了什么事，是会被注意到的，事情亦会有后续。</p><p>支持维基解密是道德上正确的事。倘若他们愿意收几个我的比特币，我不仅想捐款，还想让全世界知道他们亦可以通过比特币给维基解密捐款。</p><p>我无法代表比特币社区里的所有人，然而我在这件事上代表我自己：我不怕美国政府会因为我在经济上支持维基解密而对我做什么。要说有影响，那仅仅会表明我不再生活在宪政政府之下。倘若美国政府想自曝其短、以这种方式亮出底牌，那就随它去。倘若美国政府杀了我或把我关进监狱，我肯定会设法让这个社区知道真相。我亦不认为事情会到那一步，然而真到了我也不在乎。</p><p>倘若必须在这件事上「投票」，我会鼓励比特币社区像支持 EFF 那样再次伸出盘子，并鼓励维基解密在他们的网站上放一个比特币捐款地址。无论如何这都会为比特币社区带来新鲜血液，对维基解密恐亦有好处。用不用比特币，留给维基解密自己决定。至于政府对比特币的审查，我们知道这迟早会来，那我们为什么还要对抗这个不可避免的结果？除了低调调查之外的任何动作，都仅仅会让更多人对比特币产生兴趣，而这仅仅会对项目更有利。作为项目它已然杀不死了，充其量增长速度被拖慢一点，而且这种公开曝光更可能反而加速它的普及。</p><p>我唯一可能的担忧是协议本身现在有多健全。要说有影响，大量新人的涌入对此亦有帮助；最坏的情况不过是比特币以某种方式被攻破，需要创建一种新的加密货币来修复比特币的问题。到那时留存下来的是加密货币的理念本身，而审查一种理念是极其困难的。</p><p>基本上，放马过来。让我们鼓励维基解密使用比特币，我愿意承担由此带来的任何风险或后果。</p><p>—— Robert S. Horning\n犹他州洛根市</p>","zhText":"往好处想，倘若比特币真的成了「维基解密货币」、被全世界政府围攻，至少我们能拿回自己的维基百科词条！\n\n这话太对了。到那时关于比特币的「可靠来源」肯定不缺。我想它很可能登上大多数报纸的头版，并在电台谈话节目和其他广播电视网络上被广泛讨论。\n就我自己而言，关于维基解密，我快要说「放马过来」了。注意我在这里用的是真名而不是化名，我愿意以个人身份说：我不怕同比特币这个项目扯上关系。警察已然擅自闯进过我家干了一堆蠢事，因而对我来说那道线早已被越过了。我在政治上认识的够多的人，倘若在我身上出了什么事，是会被注意到的，事情亦会有后续。\n支持维基解密是道德上正确的事。倘若他们愿意收几个我的比特币，我不仅想捐款，还想让全世界知道他们亦可以通过比特币给维基解密捐款。\n我无法代表比特币社区里的所有人，然而我在这件事上代表我自己：我不怕美国政府会因为我在经济上支持维基解密而对我做什么。要说有影响，那仅仅会表明我不再生活在宪政政府之下。倘若美国政府想自曝其短、以这种方式亮出底牌，那就随它去。倘若美国政府杀了我或把我关进监狱，我肯定会设法让这个社区知道真相。我亦不认为事情会到那一步，然而真到了我也不在乎。\n倘若必须在这件事上「投票」，我会鼓励比特币社区像支持 EFF 那样再次伸出盘子，并鼓励维基解密在他们的网站上放一个比特币捐款地址。无论如何这都会为比特币社区带来新鲜血液，对维基解密恐亦有好处。用不用比特币，留给维基解密自己决定。至于政府对比特币的审查，我们知道这迟早会来，那我们为什么还要对抗这个不可避免的结果？除了低调调查之外的任何动作，都仅仅会让更多人对比特币产生兴趣，而这仅仅会对项目更有利。作为项目它已然杀不死了，充其量增长速度被拖慢一点，而且这种公开曝光更可能反而加速它的普及。\n我唯一可能的担忧是协议本身现在有多健全。要说有影响，大量新人的涌入对此亦有帮助；最坏的情况不过是比特币以某种方式被攻破，需要创建一种新的加密货币来修复比特币的问题。到那时留存下来的是加密货币的理念本身，而审查一种理念是极其困难的。\n基本上，放马过来。让我们鼓励维基解密使用比特币，我愿意承担由此带来的任何风险或后果。\n—— Robert S. Horning\n犹他州洛根市"},{"id":3347,"sid":null,"sat":0,"tid":241,"tt":"Wikileaks contact info?","src":"Bitcointalk","author":"bober182","date":"2010-12-05","ts":"2010-12-05T08:34:35Z","url":"https://bitcointalk.org/index.php?topic=1735.msg26998#msg26998","zh":"<p>维基解密的董事会有 10 名成员加上 JA，下面尚有约莫 150~200 名职员，再往下是 1,400 名志愿者。</p>","zhText":"维基解密的董事会有 10 名成员加上 JA，下面尚有约莫 150~200 名职员，再往下是 1,400 名志愿者。"},{"id":3348,"sid":523,"sat":1,"tid":241,"tt":"Wikileaks contact info?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-05","ts":"2010-12-05T09:08:08Z","url":"https://bitcointalk.org/index.php?topic=1735.msg26999#msg26999","zh":"<blockquote><p>基本上，放马过来。让我们鼓励维基解密使用比特币，我愿意承担由此带来的任何风险或后果。</p></blockquote><p>不，不要「放马过来」。</p><p>这个项目需要渐进式成长，让软件在此过程中逐步得到强化。</p><p>我在此呼吁维基解密不要尝试使用比特币。比特币现在不过是一个处于婴儿期的小型 beta 社区。你从中拿不到超过零花钱的金额，而在这个阶段你招来的围攻火力很可能毁掉我们。</p>","zhText":"基本上，放马过来。让我们鼓励维基解密使用比特币，我愿意承担由此带来的任何风险或后果。\n\n不，不要「放马过来」。\n这个项目需要渐进式成长，让软件在此过程中逐步得到强化。\n我在此呼吁维基解密不要尝试使用比特币。比特币现在不过是一个处于婴儿期的小型 beta 社区。你从中拿不到超过零花钱的金额，而在这个阶段你招来的围攻火力很可能毁掉我们。"},{"id":3751,"sid":null,"sat":0,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"genjix","date":"2010-12-08","ts":"2010-12-08T20:20:57Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28227#msg28227","zh":"<p>既然 WalletTx 是按顺序加入钱包的，我们是否可以假设较旧的 txid 在钱包中出现得更早？</p><p>那么做一次线性查找、进而继续输出之后的 txid 就再简单不过了。</p><p>有人能确认这一点吗？</p>","zhText":"既然 WalletTx 是按顺序加入钱包的，我们是否可以假设较旧的 txid 在钱包中出现得更早？\n那么做一次线性查找、进而继续输出之后的 txid 就再简单不过了。\n有人能确认这一点吗？"},{"id":3752,"sid":524,"sat":1,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-08","ts":"2010-12-08T20:21:49Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28228#msg28228","zh":"<p>如此使用 listtransactions 是不安全的。</p><p>我知道我一直因为对 listtransactions 迟迟不肯松口而挨批。让我解释一下我为什么犹豫。</p><p>交易是动态的。过去的交易或许会失去确认、消失又回来、失效并彻底消失，或者被另一笔双重支出取代。它们的日期或许会变，顺序亦或许会变。</p><p>程序员自然而然地想如此用 listtransactions：从我上次询问之后，把新交易喂给我，我自己记账或保存静态记录。这在一切常规使用中似乎都没问题，然而倘若你把金额用于任何用途，它就极具被利用的空间：\n1) 你怎么知道一笔过去的交易失效并消失了？\n2) 发生区块链重组时，交易重新确认后很容易被重复计数。\n3) 一笔交易或许被 txid 不同的双重支出取代。你会把两笔支出都算进去。</p><p>「我仅仅需要看新交易、因之前的交易我已然看过了」这个假设模型不成立。旧交易随时可能改变。</p><p>每当你基于收到的支付金额采取行动，你都务必回到比特币那里请求当前余额总额（或使用 move 或 sendfrom），并做好余额可能下降的准备。</p><p>现在我们有了账户功能，能够更容易地按正确方式做事，因而推出 listtransactions 的时机更成熟了。</p>","zhText":"如此使用 listtransactions 是不安全的。\n我知道我一直因为对 listtransactions 迟迟不肯松口而挨批。让我解释一下我为什么犹豫。\n交易是动态的。过去的交易或许会失去确认、消失又回来、失效并彻底消失，或者被另一笔双重支出取代。它们的日期或许会变，顺序亦或许会变。\n程序员自然而然地想如此用 listtransactions：从我上次询问之后，把新交易喂给我，我自己记账或保存静态记录。这在一切常规使用中似乎都没问题，然而倘若你把金额用于任何用途，它就极具被利用的空间：\n1) 你怎么知道一笔过去的交易失效并消失了？\n2) 发生区块链重组时，交易重新确认后很容易被重复计数。\n3) 一笔交易或许被 txid 不同的双重支出取代。你会把两笔支出都算进去。\n「我仅仅需要看新交易、因之前的交易我已然看过了」这个假设模型不成立。旧交易随时可能改变。\n每当你基于收到的支付金额采取行动，你都务必回到比特币那里请求当前余额总额（或使用 move 或 sendfrom），并做好余额可能下降的准备。\n现在我们有了账户功能，能够更容易地按正确方式做事，因而推出 listtransactions 的时机更成熟了。"},{"id":3755,"sid":null,"sat":0,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"jgarzik","date":"2010-12-08","ts":"2010-12-08T20:46:03Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28247#msg28247","zh":"<blockquote><p>我知道我一直因为对 listtransactions 迟迟不肯松口而挨批。让我解释一下我为什么犹豫。</p><p>交易是动态的。过去的交易或许会失去确认、消失又回来、失效并彻底消失，或者被另一笔双重支出取代。它们的日期或许会变，顺序亦或许会变。</p><p>程序员自然而然地想如此用 listtransactions：从我上次询问之后，把新交易喂给我，我自己记账或保存静态记录。这在一切常规使用中似乎都没问题，然而倘若你把金额用于任何用途，它就极具被利用的空间：\n1) 你怎么知道一笔过去的交易失效并消失了？\n2) 发生区块链重组时，交易重新确认后很容易被重复计数。\n3) 一笔交易或许被 txid 不同的双重支出取代。你会把两笔支出都算进去。</p></blockquote><p>到某个时点，接受交易的网站或个人<b>务必</b>承担这种风险。无论你用 listreceivedbyaddress 还是 listtransactions，这都不可避免。这正是我对 listtransactions 的犹豫显得如此反常的原因。</p><p>几乎每个接受比特币的交易所或网站都会到达一个<b>二元决策点</b>：交易被接受，货物发出或货币交换完成。过了这个二元决策点之后，即使区块链重组或交易消失，网站除了认亏之外别无他法（或在比特币之外追讨退款）。</p><p>从网站的角度看，'listtransactions 6' 和 'listreceivedbyaddress 6' 之间没有任何实际差别，因对网站运营者的最终结果是一样的：货已发出/订单已接受/货币已交换。</p>","zhText":"我知道我一直因为对 listtransactions 迟迟不肯松口而挨批。让我解释一下我为什么犹豫。\n交易是动态的。过去的交易或许会失去确认、消失又回来、失效并彻底消失，或者被另一笔双重支出取代。它们的日期或许会变，顺序亦或许会变。\n程序员自然而然地想如此用 listtransactions：从我上次询问之后，把新交易喂给我，我自己记账或保存静态记录。这在一切常规使用中似乎都没问题，然而倘若你把金额用于任何用途，它就极具被利用的空间：\n1) 你怎么知道一笔过去的交易失效并消失了？\n2) 发生区块链重组时，交易重新确认后很容易被重复计数。\n3) 一笔交易或许被 txid 不同的双重支出取代。你会把两笔支出都算进去。\n\n到某个时点，接受交易的网站或个人务必承担这种风险。无论你用 listreceivedbyaddress 还是 listtransactions，这都不可避免。这正是我对 listtransactions 的犹豫显得如此反常的原因。\n几乎每个接受比特币的交易所或网站都会到达一个二元决策点：交易被接受，货物发出或货币交换完成。过了这个二元决策点之后，即使区块链重组或交易消失，网站除了认亏之外别无他法（或在比特币之外追讨退款）。\n从网站的角度看，'listtransactions 6' 和 'listreceivedbyaddress 6' 之间没有任何实际差别，因对网站运营者的最终结果是一样的：货已发出/订单已接受/货币已交换。"},{"id":3756,"sid":525,"sat":1,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-08","ts":"2010-12-08T22:36:45Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28292#msg28292","zh":"<p>那你如何应对我在你引用的那条消息里列出的问题？</p>","zhText":"那你如何应对我在你引用的那条消息里列出的问题？"},{"id":3757,"sid":null,"sat":0,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"jgarzik","date":"2010-12-08","ts":"2010-12-08T23:07:22Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28301#msg28301","zh":"<p>我认为关键在于：过了某个时点之后，这些东西必然不再安全，即便用 listreceivedbyaddress 也一样。因而我觉得把主线比特币下网站现状与 listtransactions 拿来比较是有帮助的。让我们把这个时点称作<b>确认点</b>。逐一回应你的问题……</p><blockquote><p>1) 你怎么知道一笔过去的交易失效并消失了？</p></blockquote><p>bitcoinmarket、mtgox 和其他网站似乎都把 6 个确认当作它们的「确认点」，即交易能够被视为「安全」的时刻。倘若一笔过去的交易失效并消失，网站无法避免潜在损失，因用户已然收到他们的 PayPal-USD 或 LR-USD 或 Pecunix GAU 并消失了。</p><p>网上商店或实体店也一样。存在一个确认点，顾客在那时拿到商品。倘若交易在那之后失效，商店的损失不可避免，因顾客已然带着购买的商品走了。</p><blockquote><p>2) 发生区块链重组时，交易重新确认后很容易被重复计数。</p></blockquote><p>让我们假设 txid 0x1234 的确认数由于大量区块重组而在 0 到 10 到 0 之间剧烈跳动、来回反复。</p><p>无论用 listreceivedbyaddress 还是 listtransactions，你都有一个二元的确认点——时间上的一个时刻，交易在那一刻越过「商店认可」的信心水平。在那个确认点，顾客带着购买的商品离开，此后无论区块链或交易如何表现，商店的损失都无法避免。</p><p>我确实同意程序员可能犯错，误以为确认数仅仅会增加。然而即使犯了这种人为错误，用 listreceivedbyaddress 时同样会带来危险。</p><blockquote><p>3) 一笔交易或许被 txid 不同的双重支出取代。你会把两笔支出都算进去。</p></blockquote><p>在<i>这一点</i>上，我同意 listtransactions 由于 txid 变化会带来一些额外的危险，<i>当且仅当</i>新的双重支出恰好匹配 JSON-RPC 用户正在查询的目标比特币地址。</p><p>即便如此，在这种情况下用户的安全亦完全取决于他们的信心水平：倘若交易在 6 个确认之前被取代，软件大抵不会察觉任何异常。倘若交易在 6 个确认之后被取代，顾客已然带着购买的商品走了，比特币用户承担损失。</p><p>这是比特币本身固有的性质。区块重组<i>可能</i>发生在 50 个区块之后。然而网站不愿意让用户等 50 个区块才拿到商品。这就是众所周知的自动售货机问题。listtransactions 并没有给这个问题添加任何东西，超出了 listreceivedbyaddress 已然暴露的风险之外。</p><p>交易在二元「确认点」之后仍可能亦终将被取代。所有比特币用户都务必把这一点纳入经营计划，就像他们把信用卡拒付风险或入店行窃风险计入成本一样。</p>","zhText":"我认为关键在于：过了某个时点之后，这些东西必然不再安全，即便用 listreceivedbyaddress 也一样。因而我觉得把主线比特币下网站现状与 listtransactions 拿来比较是有帮助的。让我们把这个时点称作确认点。逐一回应你的问题……\n1) 你怎么知道一笔过去的交易失效并消失了？\n\nbitcoinmarket、mtgox 和其他网站似乎都把 6 个确认当作它们的「确认点」，即交易能够被视为「安全」的时刻。倘若一笔过去的交易失效并消失，网站无法避免潜在损失，因用户已然收到他们的 PayPal-USD 或 LR-USD 或 Pecunix GAU 并消失了。\n网上商店或实体店也一样。存在一个确认点，顾客在那时拿到商品。倘若交易在那之后失效，商店的损失不可避免，因顾客已然带着购买的商品走了。\n2) 发生区块链重组时，交易重新确认后很容易被重复计数。\n\n让我们假设 txid 0x1234 的确认数由于大量区块重组而在 0 到 10 到 0 之间剧烈跳动、来回反复。\n无论用 listreceivedbyaddress 还是 listtransactions，你都有一个二元的确认点——时间上的一个时刻，交易在那一刻越过「商店认可」的信心水平。在那个确认点，顾客带着购买的商品离开，此后无论区块链或交易如何表现，商店的损失都无法避免。\n我确实同意程序员可能犯错，误以为确认数仅仅会增加。然而即使犯了这种人为错误，用 listreceivedbyaddress 时同样会带来危险。\n3) 一笔交易或许被 txid 不同的双重支出取代。你会把两笔支出都算进去。\n\n在这一点上，我同意 listtransactions 由于 txid 变化会带来一些额外的危险，当且仅当新的双重支出恰好匹配 JSON-RPC 用户正在查询的目标比特币地址。\n即便如此，在这种情况下用户的安全亦完全取决于他们的信心水平：倘若交易在 6 个确认之前被取代，软件大抵不会察觉任何异常。倘若交易在 6 个确认之后被取代，顾客已然带着购买的商品走了，比特币用户承担损失。\n这是比特币本身固有的性质。区块重组可能发生在 50 个区块之后。然而网站不愿意让用户等 50 个区块才拿到商品。这就是众所周知的自动售货机问题。listtransactions 并没有给这个问题添加任何东西，超出了 listreceivedbyaddress 已然暴露的风险之外。\n交易在二元「确认点」之后仍可能亦终将被取代。所有比特币用户都务必把这一点纳入经营计划，就像他们把信用卡拒付风险或入店行窃风险计入成本一样。"},{"id":3765,"sid":526,"sat":1,"tid":254,"tt":"Version 0.3.18","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-08","ts":"2010-12-08T23:19:24Z","url":"https://bitcointalk.org/index.php?topic=2162.msg28302#msg28302","zh":"<p>变更：\n- 修复了从 0.3.17 降级后再次升级时的 wallet.dat 兼容性问题\n- 增加 IsStandard() 检查，区块中仅仅接受已知交易类型\n- Jgarzik 的优化，略微加快初始区块下载</p><p>本版的主要新增是 Gavin 一直在做的基于账户的 JSON-RPC 命令（详情见 <a href=\"http://bitcointalk.org/index.php?topic=1886.0\">http://bitcointalk.org/index.php?topic=1886.0</a>）。\n- getaccountaddress\n- sendfrom\n- move\n- getbalance\n- listtransactions</p><p>下载：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.18/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.18/</a></p>","zhText":"变更：\n- 修复了从 0.3.17 降级后再次升级时的 wallet.dat 兼容性问题\n- 增加 IsStandard() 检查，区块中仅仅接受已知交易类型\n- Jgarzik 的优化，略微加快初始区块下载\n本版的主要新增是 Gavin 一直在做的基于账户的 JSON-RPC 命令（详情见 http://bitcointalk.org/index.php?topic=1886.0）。\n- getaccountaddress\n- sendfrom\n- move\n- getbalance\n- listtransactions\n下载：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.18/"},{"id":3758,"sid":null,"sat":0,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"davux","date":"2010-12-08","ts":"2010-12-08T23:40:59Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28307#msg28307","zh":"<blockquote><p>每当你基于收到的支付金额采取行动，你都务必回到比特币那里请求当前余额总额（或使用 move 或 sendfrom），并做好余额可能下降的准备。</p></blockquote><p>那这就是开发者应用中的设计问题，而不是 listtransactions 固有的问题。你的意思是：倘若使用 listtransactions 不加小心，就可能危险。好，然而很多编程工具同样有陷阱。譬如，用线程编程就满是设计陷阱。这并不意味不该把这个工具提供给开发者，而是文档务必大力警示这些陷阱。</p><p>我的观点是：把 listtransactions 做出来，然而像任何 API 一样精确地写好文档，并说明使用它时不该犯的设计错误。</p>","zhText":"每当你基于收到的支付金额采取行动，你都务必回到比特币那里请求当前余额总额（或使用 move 或 sendfrom），并做好余额可能下降的准备。\n\n那这就是开发者应用中的设计问题，而不是 listtransactions 固有的问题。你的意思是：倘若使用 listtransactions 不加小心，就可能危险。好，然而很多编程工具同样有陷阱。譬如，用线程编程就满是设计陷阱。这并不意味不该把这个工具提供给开发者，而是文档务必大力警示这些陷阱。\n我的观点是：把 listtransactions 做出来，然而像任何 API 一样精确地写好文档，并说明使用它时不该犯的设计错误。"},{"id":3759,"sid":527,"sat":1,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T00:12:17Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28313#msg28313","zh":"<p>我说的不是某个 minconf 水平下的正常风险，我说的是如此使用 listtransactions 带来的额外陷阱。</p><blockquote><p>2) 发生区块链重组时，交易重新确认后很容易被重复计数。</p></blockquote><p>楼主的 listtransactions <account> [count=10] [txid] 示例似乎在暗示——而且程序员亦很容易假定——只要传入上一次调用 listtransactions 的最后一个 txid，就不会再看到同一笔交易，然而事实并非如此。倘若你不自己维护一个持久的映射或字典来记录哪些 txid 已然接受过，就很容易把支付重复计数。</p><p>一个函数看起来就是为某种显而易见的用法量身定做的，而那种用法却是个不显眼的陷阱——这总说不过去。</p><blockquote><p>listtransactions 并没有给这个问题添加任何东西，超出了 listreceivedbyaddress 已然暴露的风险之外。</p></blockquote><p>假设两笔支出都指向同一地址。getreceivedbyaddress 在任一时刻仅仅会计入其中一笔支出，绝不会两笔都算。</p><p>用 listtransactions，两笔都算进去就太容易了。你看到第一笔支出，计入；看到第二笔支出，又计入。总额被重复计算。</p>","zhText":"我说的不是某个 minconf 水平下的正常风险，我说的是如此使用 listtransactions 带来的额外陷阱。\n2) 发生区块链重组时，交易重新确认后很容易被重复计数。\n\n楼主的 listtransactions [count=10] [txid] 示例似乎在暗示——而且程序员亦很容易假定——只要传入上一次调用 listtransactions 的最后一个 txid，就不会再看到同一笔交易，然而事实并非如此。倘若你不自己维护一个持久的映射或字典来记录哪些 txid 已然接受过，就很容易把支付重复计数。\n一个函数看起来就是为某种显而易见的用法量身定做的，而那种用法却是个不显眼的陷阱——这总说不过去。\nlisttransactions 并没有给这个问题添加任何东西，超出了 listreceivedbyaddress 已然暴露的风险之外。\n\n假设两笔支出都指向同一地址。getreceivedbyaddress 在任一时刻仅仅会计入其中一笔支出，绝不会两笔都算。\n用 listtransactions，两笔都算进去就太容易了。你看到第一笔支出，计入；看到第二笔支出，又计入。总额被重复计算。"},{"id":3761,"sid":null,"sat":0,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"jgarzik","date":"2010-12-09","ts":"2010-12-09T00:58:05Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28330#msg28330","zh":"<blockquote><p>我再补充一个不要做「列出 <txid> 之后发生的交易」的理由：</p></blockquote><p>关于「<txid> 之后的交易」，我同意你和中本聪的看法。我的 listtransactions（现在叫 xlisttransactions）补丁刻意不提供那个功能，从来都没有。</p>","zhText":"我再补充一个不要做「列出 之后发生的交易」的理由：\n\n关于「 之后的交易」，我同意你和中本聪的看法。我的 listtransactions（现在叫 xlisttransactions）补丁刻意不提供那个功能，从来都没有。"},{"id":3788,"sid":null,"sat":0,"tid":254,"tt":"Version 0.3.18","src":"Bitcointalk","author":"nanotube","date":"2010-12-09","ts":"2010-12-09T06:19:05Z","url":"https://bitcointalk.org/index.php?topic=2162.msg28434#msg28434","zh":"<p>还要考虑到：把数据编码进比特币区块链现在已然可行，只需特意构造交易即可。（见 <a href=\"http://privwiki.dreamhosters.com/wiki/Bitcoin_DNS_System_Proposal#Overcoming_potential_resistance_bitcoin_developers.2Fcommunity\">http://privwiki.dreamhosters.com/wiki/Bitcoin_DNS_System_Proposal#Overcoming_potential_resistance_bitcoin_developers.2Fcommunity</a> 的 'first' 选项）。</p><p>另一种做法是仅仅用时间戳和花费证明（即带手续费的一笔常规交易），把实际的数据存储推给外部服务（见同页 'third' 选项）。</p><p>然而为什么不让大家省点事，直接允许交易里携带譬如 64 或 128 字节的随机数据呢？看起来这些比特币的边带用途最终仅仅会增强网络的安全——提高挖矿激励，带来更多算力。</p>","zhText":"还要考虑到：把数据编码进比特币区块链现在已然可行，只需特意构造交易即可。（见 http://privwiki.dreamhosters.com/wiki/Bitcoin_DNS_System_Proposal#Overcoming_potential_resistance_bitcoin_developers.2Fcommunity 的 'first' 选项）。\n另一种做法是仅仅用时间戳和花费证明（即带手续费的一笔常规交易），把实际的数据存储推给外部服务（见同页 'third' 选项）。\n然而为什么不让大家省点事，直接允许交易里携带譬如 64 或 128 字节的随机数据呢？看起来这些比特币的边带用途最终仅仅会增强网络的安全——提高挖矿激励，带来更多算力。"},{"id":3800,"sid":null,"sat":0,"tid":254,"tt":"Version 0.3.18","src":"Bitcointalk","author":"ShadowOfHarbringer","date":"2010-12-09","ts":"2010-12-09T13:51:20Z","url":"https://bitcointalk.org/index.php?topic=2162.msg28519#msg28519","zh":"<p>在这件事上我完全支持中本聪。</p><p>在比特币链上留下存储数据的可能性，就是个等着出事的事故。就等着有人往链里编码儿童色情吧——它会永远留在那里。而政府也就有了打击它的完美宣传素材。倘若比特币与变态、黑手党和金融骗局挂钩，「正常」人就根本不会用它了。</p>","zhText":"在这件事上我完全支持中本聪。\n在比特币链上留下存储数据的可能性，就是个等着出事的事故。就等着有人往链里编码儿童色情吧——它会永远留在那里。而政府也就有了打击它的完美宣传素材。倘若比特币与变态、黑手党和金融骗局挂钩，「正常」人就根本不会用它了。"},{"id":3801,"sid":528,"sat":1,"tid":254,"tt":"Version 0.3.18","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T14:37:05Z","url":"https://bitcointalk.org/index.php?topic=2162.msg28533#msg28533","zh":"<p>新的交易模板能够按需添加。几天之内就会有大量 GPU 算力接受并处理它。网络支持会<i>远远早于</i>「出现足够多懂得接收和解释新交易的客户端」而就绪。</p><p>时间戳哈希现在已然可行：</p><p>txin: 0.01\ntxout: 0.00  <appid, hash> OP_CHECKSIG\nfee: 0.01</p><p>倘若真有像 BitDNS 这样的应用准备开始插入哈希，我们随时能够为时间戳加一个专门的交易模板。</p><p>我喜欢 Hal Finney 那个用户友好的时间戳构想。把文件的哈希转换成一个比特币地址，进而向它发送 0.01：</p><blockquote><p>我想到了一个简单办法来实现上面说的时间戳概念。对想加时间戳的文件跑 sha1sum。把结果转换成一个比特币地址，譬如通过 <a href=\"http://blockexplorer.com/q/hashtoaddress\">http://blockexplorer.com/q/hashtoaddress</a>。进而向那个地址发一笔小额支付。</p><p>这笔钱将永远丢失，因没有办法再花出去，然而这个时间戳比特币地址会留在区块链里，作为该文件存在过的记录。</p><p>我明白这算不算对比特币分布式数据库的正当用法尚有争议，然而没有什么能阻止人们这么做，因而我们应当意识到这可能会发生。</p></blockquote>","zhText":"新的交易模板能够按需添加。几天之内就会有大量 GPU 算力接受并处理它。网络支持会远远早于「出现足够多懂得接收和解释新交易的客户端」而就绪。\n时间戳哈希现在已然可行：\ntxin: 0.01\ntxout: 0.00 OP_CHECKSIG\nfee: 0.01\n倘若真有像 BitDNS 这样的应用准备开始插入哈希，我们随时能够为时间戳加一个专门的交易模板。\n我喜欢 Hal Finney 那个用户友好的时间戳构想。把文件的哈希转换成一个比特币地址，进而向它发送 0.01：\n我想到了一个简单办法来实现上面说的时间戳概念。对想加时间戳的文件跑 sha1sum。把结果转换成一个比特币地址，譬如通过 http://blockexplorer.com/q/hashtoaddress。进而向那个地址发一笔小额支付。\n这笔钱将永远丢失，因没有办法再花出去，然而这个时间戳比特币地址会留在区块链里，作为该文件存在过的记录。\n我明白这算不算对比特币分布式数据库的正当用法尚有争议，然而没有什么能阻止人们这么做，因而我们应当意识到这可能会发生。"},{"id":3802,"sid":null,"sat":0,"tid":254,"tt":"Version 0.3.18","src":"Bitcointalk","author":"Gavin Andresen","date":"2010-12-09","ts":"2010-12-09T14:51:07Z","url":"https://bitcointalk.org/index.php?topic=2162.msg28539#msg28539","zh":"<blockquote><p><b>默认禁止超过 128 字节（或任何大家同意的阈值）的非标准交易？</b></p><p>我想听听为什么上面这个选项被开发者们否掉了。</p></blockquote><p>几个月前，约莫在 0.3.9 的漏洞被发现的时候，我私下告诉过中本聪：我认为把可接受的交易类型做成白名单是更好的路线，而不是把我们发现问题会造成麻烦的交易类型一一拉黑。</p><p>危险之处类似于那些试图对用户输入的 HTML 拉黑 <script> 标签来防跨站脚本攻击的网站。看看 <a href=\"http://ha.ckers.org/xss.html\">http://ha.ckers.org/xss.html</a>，黑客的创造力可见一斑。</p><p>我没问过中本聪，最近关于 BitDNS 往区块链里塞额外数据的讨论有没有动摇他的看法，或者他有没有半夜醒来、意识到对 OP_SOMETHING 的创造性使用恐招致漏洞。我觉得这不重要；我仍然坚信把可接受的交易类型做成白名单才是正道。</p><p>至于「上面这个选项被开发者们否掉了」——<b>什么都没被否掉！</b>再说一遍，我没和中本聪谈过，然而我对第三种「标准」交易类型持开放态度，它包含额外的任意数据。让我们来讨论这个话题，在 -testnet 上实现它，戳一戳它，设想所有可能被滥用的方式，估算收益与成本……倘若普遍共识认为这是个好主意，再把它投入生产。</p>","zhText":"默认禁止超过 128 字节（或任何大家同意的阈值）的非标准交易？\n我想听听为什么上面这个选项被开发者们否掉了。\n\n几个月前，约莫在 0.3.9 的漏洞被发现的时候，我私下告诉过中本聪：我认为把可接受的交易类型做成白名单是更好的路线，而不是把我们发现问题会造成麻烦的交易类型一一拉黑。\n危险之处类似于那些试图对用户输入的 HTML 拉黑 标签来防跨站脚本攻击的网站。看看 http://ha.ckers.org/xss.html，黑客的创造力可见一斑。\n我没问过中本聪，最近关于 BitDNS 往区块链里塞额外数据的讨论有没有动摇他的看法，或者他有没有半夜醒来、意识到对 OP_SOMETHING 的创造性使用恐招致漏洞。我觉得这不重要；我仍然坚信把可接受的交易类型做成白名单才是正道。\n至于「上面这个选项被开发者们否掉了」——什么都没被否掉！再说一遍，我没和中本聪谈过，然而我对第三种「标准」交易类型持开放态度，它包含额外的任意数据。让我们来讨论这个话题，在 -testnet 上实现它，戳一戳它，设想所有可能被滥用的方式，估算收益与成本……倘若普遍共识认为这是个好主意，再把它投入生产。"},{"id":3803,"sid":529,"sat":1,"tid":254,"tt":"Version 0.3.18","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T15:17:53Z","url":"https://bitcointalk.org/index.php?topic=2162.msg28549#msg28549","zh":"<p>当我意识到新交易类型能够多快被添加进来时，我亦转而同意 Gavin 的白名单主张了。</p><blockquote><p>为什么不让大家省点事，直接允许交易里携带譬如 64 或 128 字节的随机数据呢？</p></blockquote><p>这已然可行了。<pubkey> OP_CHECKSIG。<pubkey> 能够是 33 到 120 字节。</p><p>我亦支持增加第三种交易类型，承载时间戳哈希大小的任意数据。反正现在已然能做到，不提供反而不合理。它还可以告诉节点：不必费心为它建索引。</p>","zhText":"当我意识到新交易类型能够多快被添加进来时，我亦转而同意 Gavin 的白名单主张了。\n为什么不让大家省点事，直接允许交易里携带譬如 64 或 128 字节的随机数据呢？\n\n这已然可行了。 OP_CHECKSIG。 能够是 33 到 120 字节。\n我亦支持增加第三种交易类型，承载时间戳哈希大小的任意数据。反正现在已然能做到，不提供反而不合理。它还可以告诉节点：不必费心为它建索引。"},{"id":3763,"sid":null,"sat":0,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"jgarzik","date":"2010-12-09","ts":"2010-12-09T16:13:50Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28572#msg28572","zh":"<blockquote><p>情况并非总是如此。有时客户在网站上会有余额。网站运营者肯定想知道一笔过去的交易失效并消失了。</p></blockquote><p>当然，用交易来追踪这一点相当容易。</p>","zhText":"情况并非总是如此。有时客户在网站上会有余额。网站运营者肯定想知道一笔过去的交易失效并消失了。\n\n当然，用交易来追踪这一点相当容易。"},{"id":1814,"sid":null,"sat":0,"tid":150,"tt":"Automated nightly builds","src":"Bitcointalk","author":"Cdecker","date":"2010-12-09","ts":"2010-12-09T17:03:21Z","url":"https://bitcointalk.org/index.php?topic=644.msg28612#msg28612","zh":"<p>其实 openSuse 构建服务更适合那些需要为大量系统可靠构建、并在所有发行版间保持一致更新的软件包，不过加一个小小的 cron 任务就能够拉取 SVN 并把改动推送到构建服务，触发一次重新编译。然而我不建议滥用它。</p><p>我觉得我们迟早理应加一个持续集成工具，用（目前尚不存在的）单元测试来检查代码提交。如此尚且能顺带产出每晚构建版 ^^</p>","zhText":"其实 openSuse 构建服务更适合那些需要为大量系统可靠构建、并在所有发行版间保持一致更新的软件包，不过加一个小小的 cron 任务就能够拉取 SVN 并把改动推送到构建服务，触发一次重新编译。然而我不建议滥用它。\n我觉得我们迟早理应加一个持续集成工具，用（目前尚不存在的）单元测试来检查代码提交。如此尚且能顺带产出每晚构建版 ^^"},{"id":3764,"sid":530,"sat":1,"tid":253,"tt":"JSON-RPC method idea: list transactions newer than a given txid","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T18:08:08Z","url":"https://bitcointalk.org/index.php?topic=2151.msg28640#msg28640","zh":"<blockquote><p>关于「<txid> 之后的交易」，我同意你和中本聪的看法。我的 listtransactions（现在叫 xlisttransactions）补丁刻意不提供那个功能，从来都没有。</p></blockquote><p>只要这个接口的定位是向用户展示最近 N 笔交易历史之类的用途，就没问题——何况现在有了账户功能，用正确的方式做支付检测更容易了。</p><p>Gavin，listtransactions 能不能加个选项，列出所有账户的交易？</p><p>我不确定接口理应是什么样，兴许：\nlisttransactions <JSON null type> [count]</p><p>不过从命令行做这个会很别扭。</p><p>我想不出接口的好方案，问题就在这。兴许像 \"\" 一样来个 \"*\" 特例。如此人人都得确保没有用户能创建名为 \"*\" 的账户。</p><blockquote><p>当然，用交易来追踪这一点相当容易。</p></blockquote><p>我不明白用交易追踪这事儿怎么就「相当容易」了。</p>","zhText":"关于「 之后的交易」，我同意你和中本聪的看法。我的 listtransactions（现在叫 xlisttransactions）补丁刻意不提供那个功能，从来都没有。\n\n只要这个接口的定位是向用户展示最近 N 笔交易历史之类的用途，就没问题——何况现在有了账户功能，用正确的方式做支付检测更容易了。\nGavin，listtransactions 能不能加个选项，列出所有账户的交易？\n我不确定接口理应是什么样，兴许：\nlisttransactions [count]\n不过从命令行做这个会很别扭。\n我想不出接口的好方案，问题就在这。兴许像 \"\" 一样来个 \"*\" 特例。如此人人都得确保没有用户能创建名为 \"*\" 的账户。\n当然，用交易来追踪这一点相当容易。\n\n我不明白用交易追踪这事儿怎么就「相当容易」了。"},{"id":1815,"sid":531,"sat":1,"tid":150,"tt":"Automated nightly builds","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T18:28:45Z","url":"https://bitcointalk.org/index.php?topic=644.msg28643#msg28643","zh":"<p>谢谢你把这套东西搭起来，Cdecker。</p><p>有没有办法让它亦构建 GUI 版本？如果是 Ubuntu 的话，装上 wxWidgets 2.9.0 之后理应只要严格按 build-unix.txt 里的步骤来就行。这个环境能让你把 wxWidgets 构建一次后留在那里反复使用吗？</p>","zhText":"谢谢你把这套东西搭起来，Cdecker。\n有没有办法让它亦构建 GUI 版本？如果是 Ubuntu 的话，装上 wxWidgets 2.9.0 之后理应只要严格按 build-unix.txt 里的步骤来就行。这个环境能让你把 wxWidgets 构建一次后留在那里反复使用吗？"},{"id":3576,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"kiba","date":"2010-12-09","ts":"2010-12-09T19:51:05Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28673#msg28673","zh":"<p>我们的代码仓库尚且不存在，DomainChain/BitDNS 的最佳路线亦还在讨论中。</p><p>* kiba 很着急。</p>","zhText":"我们的代码仓库尚且不存在，DomainChain/BitDNS 的最佳路线亦还在讨论中。\n* kiba 很着急。"},{"id":3577,"sid":532,"sat":1,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T21:02:42Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28696#msg28696","zh":"<p>我认为 BitDNS 完全能够是一个独立的网络、独立的区块链，同时与比特币共享 CPU 算力。唯一的重叠是让矿工能同时为两个网络寻找工作证明。</p><p>两个网络之间不需要任何协调。矿工能够并行订阅两个网络。他们扫描 SHA，倘若命中，就可能同时解出两个网络的解。倘若其中一个网络难度较低，解可能仅仅属于其中一个网络。</p><p>我想外部矿工程序能够同时对两个程序调用 getwork 并合并工作。兴许先调用 Bitcoin，从它那里拿到工作，再交给 BitDNS 的 getwork 合并成一份合并工作。</p><p>网络之间不是彼此碎片化，而是共享并增强彼此的总 CPU 算力。这就解决了另一个问题：倘若存在多个网络，而可用的 CPU 算力集中围攻其中一个，网络之间就会互为威胁。相反，世界上所有网络共享合并的 CPU 算力，总强度反而增加。小网络亦能借助现成的矿工基础更容易起步。</p>","zhText":"我认为 BitDNS 完全能够是一个独立的网络、独立的区块链，同时与比特币共享 CPU 算力。唯一的重叠是让矿工能同时为两个网络寻找工作证明。\n两个网络之间不需要任何协调。矿工能够并行订阅两个网络。他们扫描 SHA，倘若命中，就可能同时解出两个网络的解。倘若其中一个网络难度较低，解可能仅仅属于其中一个网络。\n我想外部矿工程序能够同时对两个程序调用 getwork 并合并工作。兴许先调用 Bitcoin，从它那里拿到工作，再交给 BitDNS 的 getwork 合并成一份合并工作。\n网络之间不是彼此碎片化，而是共享并增强彼此的总 CPU 算力。这就解决了另一个问题：倘若存在多个网络，而可用的 CPU 算力集中围攻其中一个，网络之间就会互为威胁。相反，世界上所有网络共享合并的 CPU 算力，总强度反而增加。小网络亦能借助现成的矿工基础更容易起步。"},{"id":3579,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"nanotube","date":"2010-12-09","ts":"2010-12-09T21:20:40Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28700#msg28700","zh":"<blockquote><p>我认为 BitDNS 完全能够是一个独立的网络、独立的区块链，同时与比特币共享 CPU 算力。唯一的重叠是让矿工能同时为两个网络寻找工作证明。</p></blockquote><p>理论上听起来很棒……</p><blockquote><p>两个网络之间不需要任何协调。矿工能够并行订阅两个网络。他们扫描 SHA，倘若命中，就可能同时解出两个网络的解。倘若其中一个网络难度较低，解可能仅仅属于其中一个网络。</p><p>我想外部矿工程序能够同时对两个程序调用 getwork 并合并工作。兴许先调用 Bitcoin，从它那里拿到工作，再交给 BitDNS 的 getwork 合并成一份合并工作。</p></blockquote><p>如此矿工基本上就得多干「额外的活」。倘若从 bitdns 挖矿的额外工作里得不到回报（这当然会拖慢主比特币的工作），矿工有什么动力把 bitdns（以及其他任何侧链）纳入进来呢？</p><p>很想听听你对此的进一步想法。</p>","zhText":"我认为 BitDNS 完全能够是一个独立的网络、独立的区块链，同时与比特币共享 CPU 算力。唯一的重叠是让矿工能同时为两个网络寻找工作证明。\n\n理论上听起来很棒……\n两个网络之间不需要任何协调。矿工能够并行订阅两个网络。他们扫描 SHA，倘若命中，就可能同时解出两个网络的解。倘若其中一个网络难度较低，解可能仅仅属于其中一个网络。\n我想外部矿工程序能够同时对两个程序调用 getwork 并合并工作。兴许先调用 Bitcoin，从它那里拿到工作，再交给 BitDNS 的 getwork 合并成一份合并工作。\n\n如此矿工基本上就得多干「额外的活」。倘若从 bitdns 挖矿的额外工作里得不到回报（这当然会拖慢主比特币的工作），矿工有什么动力把 bitdns（以及其他任何侧链）纳入进来呢？\n很想听听你对此的进一步想法。"},{"id":3583,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"nanotube","date":"2010-12-09","ts":"2010-12-09T22:43:26Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28713#msg28713","zh":"<blockquote><p>和主链一样的激励——你能拿到报酬。</p></blockquote><p>然而如果纯粹挖比特币、不做侧链哈希就能拿到同样多的报酬……</p>","zhText":"和主链一样的激励——你能拿到报酬。\n\n然而如果纯粹挖比特币、不做侧链哈希就能拿到同样多的报酬……"},{"id":3584,"sid":533,"sat":1,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T22:46:50Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28715#msg28715","zh":"<blockquote><p>如此矿工基本上就得多干「额外的活」。倘若从 bitdns 挖矿的额外工作里得不到回报（这当然会拖慢主比特币的工作），矿工有什么动力把 bitdns（以及其他任何侧链）纳入进来呢？</p></blockquote><p>激励在于：同样一份工作，还能从额外的侧链拿到报酬。</p><p>既然你在生成比特币，为什么不在<i>同一份工作</i>里顺便拿到免费域名呢？</p><p>倘若你现在每周能生成 50 BTC，那么现在你还能同时得到 50 BTC 和一些域名。</p><p>你手里有一份工作。解出它，就同时解出 Bitcoin 和 BitDNS 各一个区块。概念上，它们通过一棵默克尔树绑在一起。要提交给 Bitcoin，就把 BitDNS 分支掰掉；要提交给 BitDNS，就把 Bitcoin 分支掰掉。</p><p>实践中，要为 Bitcoin 做兼容改造，BitDNS 侧大抵要多占约 200 个额外字节，然而这不算什么。你一直在说每个区块 50 个域名，相比之下为了向后兼容每区块多出的这 200 字节根本不值一提。倘若我们足够在意省这几个字节，将来尚且可以安排一个遥远的区块高度，让比特币升级到顶部带默克尔树的现代化结构。</p><p>注意，各条链都在这棵新默克尔树之下。也就是说，Bitcoin 和 BitDNS 各自在自己的区块内部拥有自己的链环。这与常见的时间戳服务器结构正好相反——常见结构是链条在上、默克尔树在下，因那样会形成一条共同的主链。而这是两个不共享链的时间戳服务器。</p>","zhText":"如此矿工基本上就得多干「额外的活」。倘若从 bitdns 挖矿的额外工作里得不到回报（这当然会拖慢主比特币的工作），矿工有什么动力把 bitdns（以及其他任何侧链）纳入进来呢？\n\n激励在于：同样一份工作，还能从额外的侧链拿到报酬。\n既然你在生成比特币，为什么不在同一份工作里顺便拿到免费域名呢？\n倘若你现在每周能生成 50 BTC，那么现在你还能同时得到 50 BTC 和一些域名。\n你手里有一份工作。解出它，就同时解出 Bitcoin 和 BitDNS 各一个区块。概念上，它们通过一棵默克尔树绑在一起。要提交给 Bitcoin，就把 BitDNS 分支掰掉；要提交给 BitDNS，就把 Bitcoin 分支掰掉。\n实践中，要为 Bitcoin 做兼容改造，BitDNS 侧大抵要多占约 200 个额外字节，然而这不算什么。你一直在说每个区块 50 个域名，相比之下为了向后兼容每区块多出的这 200 字节根本不值一提。倘若我们足够在意省这几个字节，将来尚且可以安排一个遥远的区块高度，让比特币升级到顶部带默克尔树的现代化结构。\n注意，各条链都在这棵新默克尔树之下。也就是说，Bitcoin 和 BitDNS 各自在自己的区块内部拥有自己的链环。这与常见的时间戳服务器结构正好相反——常见结构是链条在上、默克尔树在下，因那样会形成一条共同的主链。而这是两个不共享链的时间戳服务器。"},{"id":3809,"sid":null,"sat":0,"tid":255,"tt":"Fees in BitDNS confusion","src":"Bitcointalk","author":"jgarzik","date":"2010-12-09","ts":"2010-12-09T23:07:04Z","url":"https://bitcointalk.org/index.php?topic=2181.msg28719#msg28719","zh":"<blockquote><p>想请教下面这个例子：\n我广播一笔交易，向某个地址发送 X 个币。\n因没带手续费，它有一阵子没被收进区块。</p><p>我有没有办法取消它，这次带上手续费重新广播？</p></blockquote><p>交易替换的事参见关于 <a href=\"http://bitcointalk.org/index.php?topic=1786.msg22119#msg22119\">locktime 的讨论</a>。</p>","zhText":"想请教下面这个例子：\n我广播一笔交易，向某个地址发送 X 个币。\n因没带手续费，它有一阵子没被收进区块。\n我有没有办法取消它，这次带上手续费重新广播？\n\n交易替换的事参见关于 locktime 的讨论。"},{"id":3810,"sid":534,"sat":1,"tid":255,"tt":"Fees in BitDNS confusion","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-09","ts":"2010-12-09T23:58:54Z","url":"https://bitcointalk.org/index.php?topic=2181.msg28729#msg28729","zh":"<p>不是 locktime。</p><p>有一个面向遥远未来的可能设计：</p><p>你有意写一笔双重支出。用同样的输入和输出再写一遍，然而这次带上手续费。当你的双重支出进入区块时，第一笔支出就失效了。收款方其实不会察觉，因在新交易生效的那一刻，旧交易就失效了，新交易直接取而代之。</p><p>说起来容易，实现起来难。要写出一个能正确构造双重支出的客户端、在钱包里管理两个版本直到其中之一被选中、处理好所有边角情况，工作量不小。现有代码里的每一个假设都是「你不会试图写双重支出」。</p><p>比特币矿工侧亦需要一些改动，让交易池有可能接受双重支出，然而仅仅严格限于输入输出匹配且手续费更高的情况。目前，双重支出从不被交易池接受，因而每个节点都在用它见到的第一笔交易进块来作证。</p>","zhText":"不是 locktime。\n有一个面向遥远未来的可能设计：\n你有意写一笔双重支出。用同样的输入和输出再写一遍，然而这次带上手续费。当你的双重支出进入区块时，第一笔支出就失效了。收款方其实不会察觉，因在新交易生效的那一刻，旧交易就失效了，新交易直接取而代之。\n说起来容易，实现起来难。要写出一个能正确构造双重支出的客户端、在钱包里管理两个版本直到其中之一被选中、处理好所有边角情况，工作量不小。现有代码里的每一个假设都是「你不会试图写双重支出」。\n比特币矿工侧亦需要一些改动，让交易池有可能接受双重支出，然而仅仅严格限于输入输出匹配且手续费更高的情况。目前，双重支出从不被交易池接受，因而每个节点都在用它见到的第一笔交易进块来作证。"},{"id":3600,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"ribuck","date":"2010-12-10","ts":"2010-12-10T16:58:15Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28904#msg28904","zh":"<blockquote><p>之所以这笔支付是不可逆的，是因为它来自一条完全不同的链。</p></blockquote><p>这回明白了。是的，让两条链保持同步会麻烦重重。</p>","zhText":"之所以这笔支付是不可逆的，是因为它来自一条完全不同的链。\n\n这回明白了。是的，让两条链保持同步会麻烦重重。"},{"id":3601,"sid":535,"sat":1,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-10","ts":"2010-12-10T17:29:28Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28917#msg28917","zh":"<p>把世界上所有的工作证明共识系统都堆进一个数据集是不可扩展的。</p><p>Bitcoin 和 BitDNS 能够分开使用。用户并不应该为了用其中一个就得把两个的全部数据都下载下来。BitDNS 用户亦不会想下载接下来好几个互不相干的网络决定塞进来的所有东西。</p><p>两个网络需要有各自独立的命运。BitDNS 用户恐对加入各种大数据特性相当宽松，因需要的域名注册商相对较少；而比特币用户恐会越来越强硬地限制链的体积，好让大量用户和小型设备用得轻松。</p><p>关于能否用比特币安全购买域名的担忧是个烟雾弹。用比特币交换其他不可抵赖的商品很容易。</p><p>倘若你还在担心，密码学上能够实现无风险交易。双方在两侧各设置交易，使得当双方都签名后，第二个签名者的签名会触发两笔交易同时释放。第二个签名者无法仅仅释放一笔而不释放另一笔。</p>","zhText":"把世界上所有的工作证明共识系统都堆进一个数据集是不可扩展的。\nBitcoin 和 BitDNS 能够分开使用。用户并不应该为了用其中一个就得把两个的全部数据都下载下来。BitDNS 用户亦不会想下载接下来好几个互不相干的网络决定塞进来的所有东西。\n两个网络需要有各自独立的命运。BitDNS 用户恐对加入各种大数据特性相当宽松，因需要的域名注册商相对较少；而比特币用户恐会越来越强硬地限制链的体积，好让大量用户和小型设备用得轻松。\n关于能否用比特币安全购买域名的担忧是个烟雾弹。用比特币交换其他不可抵赖的商品很容易。\n倘若你还在担心，密码学上能够实现无风险交易。双方在两侧各设置交易，使得当双方都签名后，第二个签名者的签名会触发两笔交易同时释放。第二个签名者无法仅仅释放一笔而不释放另一笔。"},{"id":3605,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Hal","date":"2010-12-10","ts":"2010-12-10T19:14:04Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28938#msg28938","zh":"<p>中本聪，你是否认可这样一种设想：额外的区块链各自创造自己风味的币，在交易所与比特币交易？这些链专属的币用来奖励那些链上的矿工，并在那条链的领域内购买某些权利或特权？</p>","zhText":"中本聪，你是否认可这样一种设想：额外的区块链各自创造自己风味的币，在交易所与比特币交易？这些链专属的币用来奖励那些链上的矿工，并在那条链的领域内购买某些权利或特权？"},{"id":3834,"sid":536,"sat":1,"tid":257,"tt":"Accounts example code","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-10","ts":"2010-12-10T19:21:03Z","url":"https://bitcointalk.org/index.php?topic=2202.msg28947#msg28947","zh":"<p>一个使用 0.3.18 新的基于账户命令的伪代码示例。</p><p>print \"send to \" + getaccountaddress(username) + \" to fund your account\"\nprint \"balance: \" + getbalance(username, 0)\nprint \"available balance: \" + getbalance(username, 6)</p><p>// if you make a sale, move the money from their account to your \"\" account\nif (move(username, \"\", amount, 6, \"purchased item\"))\n    SendTheGoods()</p><p>// withdrawal\nsendfrom(username, bitcoinaddress, amount, 6, \"withdrawal by user\")</p><p>你能够用 listtransactions(username) 向他们展示其近期交易列表。</p>","zhText":"一个使用 0.3.18 新的基于账户命令的伪代码示例。\nprint \"send to \" + getaccountaddress(username) + \" to fund your account\"\nprint \"balance: \" + getbalance(username, 0)\nprint \"available balance: \" + getbalance(username, 6)\n// if you make a sale, move the money from their account to your \"\" account\nif (move(username, \"\", amount, 6, \"purchased item\"))\n SendTheGoods()\n// withdrawal\nsendfrom(username, bitcoinaddress, amount, 6, \"withdrawal by user\")\n你能够用 listtransactions(username) 向他们展示其近期交易列表。"},{"id":3609,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"jgarzik","date":"2010-12-10","ts":"2010-12-10T19:41:41Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28956#msg28956","zh":"<p>比特币本身就是人造稀缺。</p>","zhText":"比特币本身就是人造稀缺。"},{"id":3610,"sid":537,"sat":1,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-10","ts":"2010-12-10T19:55:12Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28959#msg28959","zh":"<blockquote><p>额外的区块链各自创造自己风味的币，在交易所与比特币交易？这些链专属的币用来奖励那些链上的矿工，并在那条链的领域内购买某些权利或特权？</p></blockquote><p>对，域名和比特币之间的汇率会是浮动的。</p><p>对 BitDNS 来说，比 10 分钟更长的出块间隔更合适。</p><p>到目前为止这场讨论里已然需要不少管理数据了。倘若你能自由使用所需的空间、不必为比特币链里的昂贵空间付手续费，事情会容易得多。有这么几种交易：</p><p>更改 IP 记录。</p><p>改名。一个域名对象能够让你持有一个域名，并且能够随意把它改成任何未被占用的名字。这会鼓励用户释放不再想要的域名。生成的域名起初是空白的，由矿工卖给某个人，由他改成自己想要的名字。</p><p>续期。能够免费，或者要求消耗另一个域名对象来续期。在后者情况下，域名对象（域名币？）能够代表持有一个域名一年的权利。花费掉的手续费作为下一区块的费用归矿工。</p>","zhText":"额外的区块链各自创造自己风味的币，在交易所与比特币交易？这些链专属的币用来奖励那些链上的矿工，并在那条链的领域内购买某些权利或特权？\n\n对，域名和比特币之间的汇率会是浮动的。\n对 BitDNS 来说，比 10 分钟更长的出块间隔更合适。\n到目前为止这场讨论里已然需要不少管理数据了。倘若你能自由使用所需的空间、不必为比特币链里的昂贵空间付手续费，事情会容易得多。有这么几种交易：\n更改 IP 记录。\n改名。一个域名对象能够让你持有一个域名，并且能够随意把它改成任何未被占用的名字。这会鼓励用户释放不再想要的域名。生成的域名起初是空白的，由矿工卖给某个人，由他改成自己想要的名字。\n续期。能够免费，或者要求消耗另一个域名对象来续期。在后者情况下，域名对象（域名币？）能够代表持有一个域名一年的权利。花费掉的手续费作为下一区块的费用归矿工。"},{"id":3612,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Hal","date":"2010-12-10","ts":"2010-12-10T20:12:02Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28962#msg28962","zh":"<p>好，那么倘若要有 bitdnscoins（又名 DCC，DomainChain Coins），它们就务必有用武之地。否则每个 BitDNS 矿工都会用自己的注册把每个区块塞满，而不是用别人的注册来替换、换取一种没用处的货币的交易费。</p><p>规则必须是：你务必花费一定数量的 bitdnscoins/DCC 才能注册名字和/或进行其他 BitDNS 交易。这是让这种替代货币变得抢手和有价值的唯一办法。</p><p>（当然我们能够学比特币，宣布 DCC 总量永远只有 2200 万枚，它们会因稀缺而变得像比特币一样有价值。然而这条路看起来站不住脚。）</p>","zhText":"好，那么倘若要有 bitdnscoins（又名 DCC，DomainChain Coins），它们就务必有用武之地。否则每个 BitDNS 矿工都会用自己的注册把每个区块塞满，而不是用别人的注册来替换、换取一种没用处的货币的交易费。\n规则必须是：你务必花费一定数量的 bitdnscoins/DCC 才能注册名字和/或进行其他 BitDNS 交易。这是让这种替代货币变得抢手和有价值的唯一办法。\n（当然我们能够学比特币，宣布 DCC 总量永远只有 2200 万枚，它们会因稀缺而变得像比特币一样有价值。然而这条路看起来站不住脚。）"},{"id":3613,"sid":538,"sat":1,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-10","ts":"2010-12-10T20:19:39Z","url":"https://bitcointalk.org/index.php?topic=1790.msg28963#msg28963","zh":"<p>我同意。所有交易——IP 更改、续期等等——都理应带一笔归矿工的手续费。</p><p>你能够考虑用一定量的工作来生成一个域名，而不是固定总量发行。每个域名的工作量能够按随摩尔定律增长的计划表来安排。如此域名的数量会随需求和用户数的增长而增长。</p>","zhText":"我同意。所有交易——IP 更改、续期等等——都理应带一笔归矿工的手续费。\n你能够考虑用一定量的工作来生成一个域名，而不是固定总量发行。每个域名的工作量能够按随摩尔定律增长的计划表来安排。如此域名的数量会随需求和用户数的增长而增长。"},{"id":3835,"sid":null,"sat":0,"tid":258,"tt":"Bitcoin and buffer overflow attacks","src":"Bitcointalk","author":"da2ce7","date":"2010-12-11","ts":"2010-12-11T05:49:22Z","url":"https://bitcointalk.org/index.php?topic=2208.msg29095#msg29095","zh":"<p>我确信比特币的根基（即区块链）对任何非国家级资金的攻击都是安全的。唯一让我害怕的攻击是缓冲区溢出攻击——偷走钱包里的私钥，然而先不花出去。</p><p>倘若区块链遭到足够大的攻击，我们随时能够造一个不含这次攻击的新分支；而私钥一旦被窃，没有什么轻松的恢复手段，除非（在攻击规模巨大的情况下）从 0 重新开始整条区块链。</p><p>我不是安全专家，不知道比特币面对这类攻击的防御力如何。不过以我的非专业理解，直接向 IP 地址转账似乎是个显而易见的攻击面。</p><p>两个问题：当前比特币软件有哪些可能让私钥被盗的攻击面？\n其次，能够采取哪些措施来把比特币的攻击面降到最小？</p>","zhText":"我确信比特币的根基（即区块链）对任何非国家级资金的攻击都是安全的。唯一让我害怕的攻击是缓冲区溢出攻击——偷走钱包里的私钥，然而先不花出去。\n倘若区块链遭到足够大的攻击，我们随时能够造一个不含这次攻击的新分支；而私钥一旦被窃，没有什么轻松的恢复手段，除非（在攻击规模巨大的情况下）从 0 重新开始整条区块链。\n我不是安全专家，不知道比特币面对这类攻击的防御力如何。不过以我的非专业理解，直接向 IP 地址转账似乎是个显而易见的攻击面。\n两个问题：当前比特币软件有哪些可能让私钥被盗的攻击面？\n其次，能够采取哪些措施来把比特币的攻击面降到最小？"},{"id":3838,"sid":null,"sat":0,"tid":258,"tt":"Bitcoin and buffer overflow attacks","src":"Bitcointalk","author":"wumpus","date":"2010-12-11","ts":"2010-12-11T09:59:40Z","url":"https://bitcointalk.org/index.php?topic=2208.msg29124#msg29124","zh":"<p>没有办法绝对保证不存在缓冲区溢出攻击。不过，用一种因检查数组下标而没有缓冲区溢出的语言来实现客户端（Python、Java、C# 等）会有帮助。</p>","zhText":"没有办法绝对保证不存在缓冲区溢出攻击。不过，用一种因检查数组下标而没有缓冲区溢出的语言来实现客户端（Python、Java、C# 等）会有帮助。"},{"id":3617,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"joe","date":"2010-12-11","ts":"2010-12-11T10:53:58Z","url":"https://bitcointalk.org/index.php?topic=1790.msg29130#msg29130","zh":"<p>比特币是什么？一种用去中心化方式记录固定数量物品的所有权归属。</p><p>DNS 问题是更一般功能的一个具体实例：记录固定数量物品的所有权归属，<b>且集合中每个成员都可区分</b>。</p><p>结果发现比特币本来就可区分。从数学上讲它们是良序的，因而能够给每个比特币分配一个编号，譬如 0 到 2100 万。</p><p>因而，要实现 DNS 功能，我们仅仅需要这么做：\n1. 创建第二个 coinbase，能够从主 coinbase（比特币）分叉而来\n2. 把第二个 coinbase 中的每一枚币解释为全部 DNS 名称的 sha256 哈希空间中一段良定义的区间</p><p>于是 DNS 名称的所有权就由你持有第二个 coinbase 中的哪些币来决定。</p><p>几个月前我反对往现有的比特币网络协议和客户端里加 DNS 之类的功能，因我主张比特币理应忠于自己的有限目标。然而现在多想了想，我支持在主网络中加入额外的 coinbase/记录系统。这么做的原因是避免 CPU 算力被稀释到多个网络。我们要的是一张强大的网络，因而网络理应是多能的。</p><p>其实，兴许应该允许任何人在主网络上创建新的 coinbase，并规定诸如数量和分发速率之类的规则。就 DNS 而言，大家只需一致同意把某个特定的 coinbase 解释为 DNS 名称的 sha256 哈希空间不同部分的权利。</p><p>我同意 da2ce7 提出的那个想法，他说这个想法源自中本聪的一个设想。我认为它与我允许在同一网络上随意创建新 coinbase 的想法兼容。</p><p>我找不到 nanotube 和 theymos 的那个提案，因而无法评论。</p>","zhText":"比特币是什么？一种用去中心化方式记录固定数量物品的所有权归属。\nDNS 问题是更一般功能的一个具体实例：记录固定数量物品的所有权归属，且集合中每个成员都可区分。\n结果发现比特币本来就可区分。从数学上讲它们是良序的，因而能够给每个比特币分配一个编号，譬如 0 到 2100 万。\n因而，要实现 DNS 功能，我们仅仅需要这么做：\n1. 创建第二个 coinbase，能够从主 coinbase（比特币）分叉而来\n2. 把第二个 coinbase 中的每一枚币解释为全部 DNS 名称的 sha256 哈希空间中一段良定义的区间\n于是 DNS 名称的所有权就由你持有第二个 coinbase 中的哪些币来决定。\n几个月前我反对往现有的比特币网络协议和客户端里加 DNS 之类的功能，因我主张比特币理应忠于自己的有限目标。然而现在多想了想，我支持在主网络中加入额外的 coinbase/记录系统。这么做的原因是避免 CPU 算力被稀释到多个网络。我们要的是一张强大的网络，因而网络理应是多能的。\n其实，兴许应该允许任何人在主网络上创建新的 coinbase，并规定诸如数量和分发速率之类的规则。就 DNS 而言，大家只需一致同意把某个特定的 coinbase 解释为 DNS 名称的 sha256 哈希空间不同部分的权利。\n我同意 da2ce7 提出的那个想法，他说这个想法源自中本聪的一个设想。我认为它与我允许在同一网络上随意创建新 coinbase 的想法兼容。\n我找不到 nanotube 和 theymos 的那个提案，因而无法评论。"},{"id":3619,"sid":null,"sat":0,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Anonymous","date":"2010-12-11","ts":"2010-12-11T11:48:31Z","url":"https://bitcointalk.org/index.php?topic=1790.msg29137#msg29137","zh":"<blockquote><p>看起来是一石二鸟……</p></blockquote><p>这似乎是个健全的方案。它包含了 theymos 和 nanotube 的提案，亦包含了中本聪想要的东西。我喜欢其中没有免费午餐这一点——人人都得为自己的路付费。</p>","zhText":"看起来是一石二鸟……\n\n这似乎是个健全的方案。它包含了 theymos 和 nanotube 的提案，亦包含了中本聪想要的东西。我喜欢其中没有免费午餐这一点——人人都得为自己的路付费。"},{"id":3620,"sid":539,"sat":1,"tid":244,"tt":"BitDNS and Generalizing Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-11","ts":"2010-12-11T13:08:30Z","url":"https://bitcointalk.org/index.php?topic=1790.msg29159#msg29159","zh":"<p>@dtvan：这 3 点都很到位。\n1) IP 记录不必进链，仅仅做注册商功能，不做 DNS。顺带把 CA 问题亦解决了，漂亮。\n2) 选一个顶级域名，.web +1。\n3) 过期机制加可观的续期费用，相当重要。</p><blockquote><p>不过现在多想了想，我支持在主网络中加入额外的 coinbase/记录系统。这么做的原因是避免 CPU 算力被稀释到多个网络。我们要的是一张强大的网络，因而网络理应是多能的。</p></blockquote><p>避免 CPU 算力碎片化已然不是理由了。独立的网络/链能够在不共享其他东西的前提下共享算力。参见：<a href=\"http://bitcointalk.org/index.php?topic=1790.msg28696#msg28696\">http://bitcointalk.org/index.php?topic=1790.msg28696#msg28696</a> 和 <a href=\"http://bitcointalk.org/index.php?topic=1790.msg28715#msg28715\">http://bitcointalk.org/index.php?topic=1790.msg28715#msg28715</a></p>","zhText":"@dtvan：这 3 点都很到位。\n1) IP 记录不必进链，仅仅做注册商功能，不做 DNS。顺带把 CA 问题亦解决了，漂亮。\n2) 选一个顶级域名，.web +1。\n3) 过期机制加可观的续期费用，相当重要。\n不过现在多想了想，我支持在主网络中加入额外的 coinbase/记录系统。这么做的原因是避免 CPU 算力被稀释到多个网络。我们要的是一张强大的网络，因而网络理应是多能的。\n\n避免 CPU 算力碎片化已然不是理由了。独立的网络/链能够在不共享其他东西的前提下共享算力。参见：http://bitcointalk.org/index.php?topic=1790.msg28696#msg28696 和 http://bitcointalk.org/index.php?topic=1790.msg28715#msg28715"},{"id":3839,"sid":540,"sat":1,"tid":258,"tt":"Bitcoin and buffer overflow attacks","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-11","ts":"2010-12-11T13:32:37Z","url":"https://bitcointalk.org/index.php?topic=2208.msg29165#msg29165","zh":"<blockquote><p>直接向 IP 地址转账似乎是个显而易见的攻击面。</p></blockquote><p>就怕你找得到一个把它打开的人。它默认是关闭的。</p><blockquote><p>没有办法绝对保证不存在缓冲区溢出攻击。不过，用一种因检查数组下标而没有缓冲区溢出的语言来实现客户端（Python、Java、C# 等）会有帮助。</p></blockquote><p>全程用的都是 STL。几乎不存在什么缓冲区。</p>","zhText":"直接向 IP 地址转账似乎是个显而易见的攻击面。\n\n就怕你找得到一个把它打开的人。它默认是关闭的。\n没有办法绝对保证不存在缓冲区溢出攻击。不过，用一种因检查数组下标而没有缓冲区溢出的语言来实现客户端（Python、Java、C# 等）会有帮助。\n\n全程用的都是 STL。几乎不存在什么缓冲区。"},{"id":3828,"sid":null,"sat":0,"tid":256,"tt":"minimalistic bitcoin client on D language?","src":"Bitcointalk","author":"Hal","date":"2010-12-11","ts":"2010-12-11T20:08:45Z","url":"https://bitcointalk.org/index.php?topic=2188.msg29223#msg29223","zh":"<blockquote><p>多一个客户端是好事，尤其现在这个 Bitcoin 客户端乱成一团。密码学代码写成这样，我看了都*震惊*。</p></blockquote><p>我想听听对代码的具体批评。在我看来它是一项令人赞叹的工作，虽然我希望能有更多注释。目前我主要研读了 init、main、script 和一点 net 模块。这是一套强劲的机器。</p>","zhText":"多一个客户端是好事，尤其现在这个 Bitcoin 客户端乱成一团。密码学代码写成这样，我看了都*震惊*。\n\n我想听听对代码的具体批评。在我看来它是一项令人赞叹的工作，虽然我希望能有更多注释。目前我主要研读了 init、main、script 和一点 net 模块。这是一套强劲的机器。"},{"id":3832,"sid":null,"sat":0,"tid":256,"tt":"minimalistic bitcoin client on D language?","src":"Bitcointalk","author":"ribuck","date":"2010-12-11","ts":"2010-12-11T21:46:14Z","url":"https://bitcointalk.org/index.php?topic=2188.msg29253#msg29253","zh":"<p>抱怨代码很容易。然而一个人若不能证明自己能做得更好，就没有抱怨的道德资格。</p>","zhText":"抱怨代码很容易。然而一个人若不能证明自己能做得更好，就没有抱怨的道德资格。"},{"id":3833,"sid":541,"sat":1,"tid":256,"tt":"minimalistic bitcoin client on D language?","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-11","ts":"2010-12-11T22:07:04Z","url":"https://bitcointalk.org/index.php?topic=2188.msg29259#msg29259","zh":"<blockquote><p>我想听听对代码的具体批评。在我看来它是一项令人赞叹的工作，虽然我希望能有更多注释。目前我主要研读了 init、main、script 和一点 net 模块。这是一套强劲的机器。</p></blockquote><p>这话从你嘴里说出来分量很重，Hal。谢谢。</p>","zhText":"我想听听对代码的具体批评。在我看来它是一项令人赞叹的工作，虽然我希望能有更多注释。目前我主要研读了 init、main、script 和一点 net 模块。这是一套强劲的机器。\n\n这话从你嘴里说出来分量很重，Hal。谢谢。"},{"id":3843,"sid":null,"sat":0,"tid":259,"tt":"PC World Article on Bitcoin","src":"Bitcointalk","author":"Timo Y","date":"2010-12-11","ts":"2010-12-11T22:44:55Z","url":"https://bitcointalk.org/index.php?topic=2216.msg29267#msg29267","zh":"<p>对一份主流出版物来说，这篇文章出奇地中立和准确。</p><p>PC World 可不是小角色。我按捺不住兴奋。是时候恢复维基百科词条了。</p>","zhText":"对一份主流出版物来说，这篇文章出奇地中立和准确。\nPC World 可不是小角色。我按捺不住兴奋。是时候恢复维基百科词条了。"},{"id":3844,"sid":542,"sat":1,"tid":259,"tt":"PC World Article on Bitcoin","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-11","ts":"2010-12-11T23:39:16Z","url":"https://bitcointalk.org/index.php?topic=2216.msg29280#msg29280","zh":"<p>要是在任何别的背景下得到这种关注就好了。维基解密捅了马蜂窝，蜂群正朝我们涌来。</p>","zhText":"要是在任何别的背景下得到这种关注就好了。维基解密捅了马蜂窝，蜂群正朝我们涌来。"},{"id":3845,"sid":543,"sat":1,"tid":260,"tt":"Added some DoS limits, removed safe mode (0.3.19)","src":"Bitcointalk","author":"Satoshi Nakamoto","date":"2010-12-12","ts":"2010-12-12T18:22:33Z","url":"https://bitcointalk.org/index.php?topic=2228.msg29479#msg29479","zh":"<p>DoS 方面还有很多工作要做，然而我先把目前手上的东西快速构建一版以防万一，进而再去琢磨更复杂的想法。这一版的版本号是 0.3.19。</p><p>- 增加了一些 DoS 防控\n正如 Gavin 和我之前明确说过的，这个软件对 DoS 攻击毫无抵抗力。这是其中一项改进，然而仍有数不清的攻击途径。</p><p>-limitfreerelay 部分暂时保留为开关，需要的话就在那里。</p><p>- 移除「安全模式」警报\n「安全模式」警报是 0.3.9 溢出漏洞之后的一项临时措施。我们尽管可以说用户运行时加 \"-disablesafemode\" 就行，然而为了体面起见，不如干脆不要有它。它从来就不是一项长期特性。看到一条更长（总工作证明更多）的无效区块链时，安全模式仍会触发。</p><p>构建：\n<a href=\"http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.19/\">http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.19/</a></p>","zhText":"DoS 方面还有很多工作要做，然而我先把目前手上的东西快速构建一版以防万一，进而再去琢磨更复杂的想法。这一版的版本号是 0.3.19。\n- 增加了一些 DoS 防控\n正如 Gavin 和我之前明确说过的，这个软件对 DoS 攻击毫无抵抗力。这是其中一项改进，然而仍有数不清的攻击途径。\n-limitfreerelay 部分暂时保留为开关，需要的话就在那里。\n- 移除「安全模式」警报\n「安全模式」警报是 0.3.9 溢出漏洞之后的一项临时措施。我们尽管可以说用户运行时加 \"-disablesafemode\" 就行，然而为了体面起见，不如干脆不要有它。它从来就不是一项长期特性。看到一条更长（总工作证明更多）的无效区块链时，安全模式仍会触发。\n构建：\nhttp://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.19/"},{"id":10,"sid":null,"sat":0,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Jost Reinert","date":"2011-01-07","ts":"2011-01-07T10:23:00Z","url":"http://p2pfoundation.ning.com/xn/detail/2003008:Comment:18222","zh":"<p>挺有意思的项目。我在德国管理一种叫 Rheingold 的微货币。\n它基于现金。因此「信任」的问题并未解决。不过，我们这里没有把货币当作信贷放出的中央银行——每一个发行自己货币的人都是自己拿去印的。因而 Rheingold 更像是一群去中心化的小央行。如此铸币税亦归每个人自己所得。\n而且我们的货币是无债务的。\n我很想在我们的博客上推广你们的项目 <a href=\"http://rheingoldblog.wordpress.com\">http://rheingoldblog.wordpress.com</a>。说不定你自己亦能带着自己的现金钞票成为一名 Rheingold 成员。既然我们定位为艺术项目，整个项目未来还会在博物馆展出。我们已经有超过 1.000 名成员（德式写法，即一千名），大多在德国。我们的网站 <a href=\"http://www.rheingoldregio.de\">http://www.rheingoldregio.de</a>\n有没有合作的想法？</p>","zhText":"挺有意思的项目。我在德国管理一种叫 Rheingold 的微货币。\n它基于现金。因此「信任」的问题并未解决。不过，我们这里没有把货币当作信贷放出的中央银行——每一个发行自己货币的人都是自己拿去印的。因而 Rheingold 更像是一群去中心化的小央行。如此铸币税亦归每个人自己所得。\n而且我们的货币是无债务的。\n我很想在我们的博客上推广你们的项目 http://rheingoldblog.wordpress.com。说不定你自己亦能带着自己的现金钞票成为一名 Rheingold 成员。既然我们定位为艺术项目，整个项目未来还会在博物馆展出。我们已经有超过 1.000 名成员（德式写法，即一千名），大多在德国。我们的网站 http://www.rheingoldregio.de\n有没有合作的想法？"},{"id":9001,"sid":null,"sat":1,"tid":null,"tt":"Re: Holding coins in an unspendable state for a rolling time window","src":"Email","author":"Satoshi Nakamoto","date":"2011-04-23","ts":"2011-04-23T15:40:00Z","url":"https://plan99.net/~mike/satoshi-emails/thread5.html","zh":"<p>Mike Hearn 问：</p><p>「我心里还有几件事想问你（一如既往）。其一，你打算在某个时候重新回到社区吗（比如做代码评审），还是计划彻底退出公众视野？」</p><p>我已经转向别的事情了。它现在在 Gavin 和大家手里，很好。</p><p>我确实希望你的 BitcoinJ 能继续开发成另一个客户端实现。它让 Java 开发者有事可做，而且基于一个更简单、不必包揽一切的基础，做起来也更容易。等急不可耐的新用户能在另一个客户端还在下载区块链时就开始用它，它就会形成规模。</p><p style=\"color:var(--mute);font-size:14px;border-top:1px dashed var(--line);padding-top:10px;margin-top:18px\">编辑注：本邮件由收件人 Mike Hearn 于 2017 年 8 月公开。这是中本聪已知倒数第二封邮件——三天后，他发出了最后一封（致 Gavin Andresen）。</p>","zhText":"我已经转向别的事情了。它现在在 Gavin 和大家手里，很好。我确实希望你的 BitcoinJ 能继续开发成另一个客户端实现。它让 Java 开发者有事可做，而且基于一个更简单、不必包揽一切的基础，做起来也更容易。等急不可耐的新用户能在另一个客户端还在下载区块链时就开始用它，它就会形成规模。"},{"id":9002,"sid":null,"sat":1,"tid":null,"tt":"alert key","src":"Email","author":"Satoshi Nakamoto","date":"2011-04-26","ts":"2011-04-26T10:29:00Z","url":"https://riski.wiki/wiki/User:Gavinandresen/Blog/2022-04-26_Eleven_years_ago_today%E2%80%A6","zh":"<p>主题：alert key</p><p>我希望你不要总把我描述成一个神秘的影子人物，媒体只会把这变成「海盗货币」的噱头。也许不如多讲这个开源项目本身，多给开发者们一些肯定；这有助于激励他们。</p><p>我已经转向别的事情了，以后很可能联系不上。这是 CAlert 密钥和广播代码，以备不时之需。你大概应该再交给另外一两个人。有几位老用户几乎一直在线。</p><p style=\"color:var(--mute);font-size:14px;border-top:1px dashed var(--line);padding-top:10px;margin-top:18px\">编辑注：这是已知中本聪的最后一封邮件。由收件人 Gavin Andresen 于 2022 年 4 月 26 日在其博客全文公开。邮件同时将全网警报密钥（alert key）移交给了 Andresen——此后再无任何公开确认的中本聪通信。</p>","zhText":"我希望你不要总把我描述成一个神秘的影子人物，媒体只会把这变成「海盗货币」的噱头。也许不如多讲这个开源项目本身，多给开发者们一些肯定；这有助于激励他们。我已经转向别的事情了，以后很可能联系不上。这是 CAlert 密钥和广播代码，以备不时之需。你大概应该再交给另外一两个人。有几位老用户几乎一直在线。"},{"id":14,"sid":4,"sat":1,"tid":1,"tt":"Bitcoin open source implementation of P2P currency","src":"P2P Foundation","author":"Satoshi Nakamoto","date":"2014-03-07","ts":"2014-03-07T01:17:00Z","url":"http://p2pfoundation.ning.com/xn/detail/2003008:Comment:52186","zh":"<p>我不是多里安·中本。</p>","zhText":"我不是多里安·中本。"}],"threadPosts":{"1":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],"2":[15],"3":[16,17],"4":[18,19,20,21,22,23,24],"5":[25,26],"6":[27,28],"7":[29],"8":[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60],"9":[61,62,63,64],"10":[65],"11":[66,67,68],"12":[69,70,71,72,73],"13":[74,75],"14":[76,77,78,79,80,81,82,83],"15":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],"16":[99,100,101,102,103],"17":[104,105,106,107,108],"18":[109,110,111,112,113,114,115,116],"19":[117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166],"20":[167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],"21":[182,183],"22":[184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246],"23":[247,248,249,250,251,252,253],"24":[254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272],"25":[273,274],"26":[275,276,277,278,279,280,281,282,283,284,285,286],"27":[287,288,289,290,291,292,293,294,295,296],"28":[297,298,299,300,301],"29":[302,303,304,305],"30":[306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323],"31":[324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345],"32":[346,347],"33":[348],"34":[349,350,351,352,353,354,355],"35":[356,357,358,359],"36":[360,361,362,363,364,365,366],"37":[367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388],"38":[389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419],"39":[420,421],"40":[422,423,424,425,426,427,428,429,430,431],"41":[432,433,434,435,436,437,438],"42":[439,440,441,442,443,444,445],"43":[446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467],"44":[468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489],"45":[490,491,492],"46":[493,494,495],"47":[496,497,498,499,500,501,502],"48":[503,504,505,506,507,508,509,510,511,512],"49":[513,514,515,516,517,518,519,520,521,522,523,524,525],"50":[526,527,528,529,530,531],"51":[532,533,534,535,536],"52":[537,538],"53":[539,540,541],"54":[542,543],"55":[544,545,546,547,548,549,550,551,552,553,554,555,556],"56":[557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647],"57":[648,649,650,651,652,653,654,655,656,657],"58":[658,659,660,661,662,663],"59":[664],"60":[665,666,667,668,669,670,671,672,673,674,675,676,677,678,679],"61":[680,681,682,683,684,685,686,687,688],"62":[689,690,691,692,693,694,695],"63":[696,697,698,699,700],"64":[701,702,703,704,705,706,707,708,709,710,711,712],"65":[713,714,715,716,717,718],"66":[719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738],"67":[739,740,741,742,743,744,745,746,747,748,749],"68":[750,751,752,753,754,755],"69":[756,757,758,759,760],"70":[761,762,763,764,765,766,767,768],"71":[769,770,771,772,773,774,775],"72":[776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817],"73":[818,819,820,821,822,823,824,825,826,827,828,829],"74":[830,831,832,833,834,835,836,837],"75":[838,839,840,841,842,843,844,845,846,847,848],"76":[849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865],"77":[866,867,868,869,870],"78":[871,872,873,874,875,876,877],"79":[878,879,880,881,882,883],"80":[884],"81":[885,886,887,888],"82":[889,890,891,892,893,894,895,896,897,898,899,900,901,902,903],"83":[904,905,906,907,908,909,910,911,912,913],"84":[914,915,916,917],"85":[918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955],"86":[956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013],"87":[1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032],"88":[1033,1034,1035,1036,1037,1038],"89":[1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051],"90":[1052,1053,1054],"91":[1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078],"92":[1079,1080,1081,1082,1083,1084,1085],"93":[1086,1087,1088,1089,1090],"94":[1091,1092],"95":[1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],"96":[1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121],"97":[1122,1123,1124,1125,1126,1127],"98":[1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139],"99":[1140,1141,1142,1143,1144,1145,1146,1147,1148,1149],"100":[1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163],"101":[1164,1165,1166,1167,1168],"102":[1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196],"103":[1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211],"104":[1212,1213,1214,1215,1216],"105":[1217,1218,1219],"106":[1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258],"107":[1259,1260,1261,1262,1263,1264,1265],"108":[1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279],"109":[1280,1281,1282,1283,1284,1285,1286,1287],"110":[1288,1289,1290,1291,1292],"111":[1293,1294,1295,1296],"112":[1297],"113":[1298,1299,1300,1301,1302,1303,1304],"114":[1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325],"115":[1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361],"116":[1362,1363],"117":[1364,1365,1366],"118":[1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378],"119":[1379,1380,1381,1382,1383,1384,1385],"120":[1386,1387],"121":[1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406],"122":[1407,1408,1409,1410,1411,1412,1413,1414,1415],"123":[1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461],"124":[1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472],"125":[1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583],"126":[1584,1585,1586],"127":[1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603],"128":[1604,1605,1606,1607,1608,1609,1610,1611],"129":[1612,1613,1614,1615,1616,1617,1618,1619],"130":[1620,1621,1622,1623],"131":[1624],"132":[1625,1626,1627,1628,1629,1630],"133":[1631],"134":[1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649],"135":[1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666],"136":[1667],"137":[1668,1669,1670,1671,1672,1673,1674,1675,1676,1677],"138":[1678,1679,1680,1681,1682,1683,1684],"139":[1685,1686,1687,1688,1689,1690,1691],"140":[1692,1693,1694,1695,1696,1697],"141":[1698,1699],"142":[1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713],"143":[1714,1715,1716,1717,1718,1719,1720,1721,1722,1723],"144":[1724,1725,1726,1727,1728,1729,1730,1731],"145":[1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782],"146":[1783,1784,1785,1786,1787,1788,1789],"147":[1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803],"148":[1804,1805,1806,1807,1808,1809],"149":[1810,1811],"150":[1812,1813,1814,1815],"151":[1816,1817,1818,1819,1820,1821,1822,1823,1824,1825],"152":[1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912],"153":[1913],"154":[1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942],"155":[1943,1944],"156":[1945,1946,1947],"157":[1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986],"158":[1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005],"159":[2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036],"160":[2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056],"161":[2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067],"162":[2068,2069,2070,2071,2072,2073,2074,2075,2076],"163":[2077,2078,2079],"164":[2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096],"165":[2097,2098],"166":[2099,2100,2101],"167":[2102,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140],"168":[2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,2156,2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170],"169":[2171,2172,2173,2174,2175,2176,2177,2178,2179,2180],"170":[2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212],"171":[2213,2214,2215,2216,2217,2218,2219,2220,2221,2222],"172":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236],"173":[2237],"174":[2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252],"175":[2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277],"176":[2278,2279],"177":[2280,2281,2282,2283,2284,2285,2286],"178":[2287,2288,2289,2290],"179":[2291,2292,2293,2294],"180":[2295,2296,2297,2298,2299,2300],"181":[2301,2302,2303,2304,2305,2306,2307,2308],"182":[2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331],"183":[2332,2333,2334,2335,2336,2337,2338,2339],"184":[2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391],"185":[2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459],"186":[2460],"187":[2461,2462,2463,2464,2465],"188":[2466,2467,2468,2469],"189":[2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481],"190":[2482,2483,2484,2485,2486],"191":[2487,2488,2489],"192":[2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513],"193":[2514,2515,2516,2517,2518,2519,2520],"194":[2521,2522,2523,2524],"195":[2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536],"196":[2537,2538,2539,2540,2541,2542,2543,2544,2545],"197":[2546,2547,2548],"198":[2549,2550,2551],"199":[2552,2553,2554,2555,2556,2557,2558],"200":[2559,2560],"201":[2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601],"202":[2602,2603,2604,2605],"203":[2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617],"204":[2618,2619,2620,2621],"205":[2622,2623],"206":[2624,2625,2626,2627,2628,2629,2630,2631,2632,2633,2634,2635],"207":[2636,2637,2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662],"208":[2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676],"209":[2677,2678,2679,2680],"210":[2681,2682,2683],"211":[2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,2698,2699,2700,2701,2702,2703],"212":[2704,2705],"213":[2706,2707,2708,2709,2710,2711,2712,2713,2714,2715],"214":[2716,2717,2718],"215":[2719,2720,2721,2722,2723,2724,2725,2726],"216":[2727,2728,2729,2730,2731,2732,2733,2734,2735],"217":[2736,2737,2738,2739,2740],"218":[2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759],"219":[2760,2761,2762,2763,2764],"220":[2765,2766,2767,2768,2769,2770,2771,2772,2773],"221":[2774,2775,2776,2777,2778,2779],"222":[2780,2781,2782,2783,2784,2785,2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808],"223":[2809,2810,2811],"224":[2812,2813,2814,2815],"225":[2816,2817],"226":[2818,2819,2820,2821,2822,2823],"227":[2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847],"228":[2848,2849,2850,2851,2852,2853],"229":[2854,2855,2856],"230":[2857,2858,2859,2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885],"231":[2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919],"232":[2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134],"233":[3135,3136,3137,3138,3139,3140,3141,3142,3143],"234":[3144,3145,3146,3147],"235":[3148],"236":[3149],"237":[3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172],"238":[3173,3174,3175,3176,3177,3178,3179],"239":[3180,3181,3182,3183,3184,3185,3186,3187,3188,3189],"240":[3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200],"241":[3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348],"242":[3349],"243":[3350,3351,3352,3353,3354,3355],"244":[3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512,3513,3514,3515,3516,3517,3518,3519,3520,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3581,3582,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620],"245":[3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633],"246":[3634,3635,3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647],"247":[3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660],"248":[3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688],"249":[3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,3701],"250":[3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713,3714,3715,3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736],"251":[3737,3738,3739,3740,3741],"252":[3742,3743,3744,3745,3746,3747],"253":[3748,3749,3750,3751,3752,3753,3754,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764],"254":[3765,3766,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3781,3782,3783,3784,3785,3786,3787,3788,3789,3790,3791,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3802,3803],"255":[3804,3805,3806,3807,3808,3809,3810],"256":[3811,3812,3813,3814,3815,3816,3817,3818,3819,3820,3821,3822,3823,3824,3825,3826,3827,3828,3829,3830,3831,3832,3833],"257":[3834],"258":[3835,3836,3837,3838,3839],"259":[3840,3841,3842,3843,3844],"260":[3845]},"threads":{"1":{"title":"Bitcoin open source implementation of P2P currency","url":"http://p2pfoundation.ning.com/forum/topics/bitcoin-open-source","source":"P2P Foundation"},"2":{"title":"Welcome to the new Bitcoin forum!","url":"https://bitcointalk.org/index.php?topic=5","source":"Bitcointalk"},"3":{"title":"Repost: Bitcoin Maturation","url":"https://bitcointalk.org/index.php?topic=6","source":"SourceForge 遗留（转贴）"},"4":{"title":"Repost: Request: Make this anonymous?","url":"https://bitcointalk.org/index.php?topic=7","source":"SourceForge 遗留（转贴）"},"5":{"title":"Repost: How anonymous are bitcoins?","url":"https://bitcointalk.org/index.php?topic=8","source":"SourceForge 遗留（转贴）"},"6":{"title":"Repost: Linux/UNIX compile","url":"https://bitcointalk.org/index.php?topic=9","source":"SourceForge 遗留（转贴）"},"7":{"title":"[OLD THREAD] Bitcoin version 0.2 development status","url":"https://bitcointalk.org/index.php?topic=10","source":"Bitcointalk"},"8":{"title":"A few suggestions","url":"https://bitcointalk.org/index.php?topic=12","source":"Bitcointalk"},"9":{"title":"Questions about Bitcoin","url":"https://bitcointalk.org/index.php?topic=13","source":"Bitcointalk"},"10":{"title":"Bitcoin 0.2 released!","url":"https://bitcointalk.org/index.php?topic=16","source":"Bitcointalk"},"11":{"title":"Is my second Transaction working correctly? +Transfer Question","url":"https://bitcointalk.org/index.php?topic=17","source":"Bitcointalk"},"12":{"title":"64bit support","url":"https://bitcointalk.org/index.php?topic=18","source":"Bitcointalk"},"13":{"title":"Number of connections?","url":"https://bitcointalk.org/index.php?topic=21","source":"Bitcointalk"},"14":{"title":"TOR and I2P","url":"https://bitcointalk.org/index.php?topic=22","source":"Bitcointalk"},"15":{"title":"A newb's test - anyone want to buy a picture for $1?","url":"https://bitcointalk.org/index.php?topic=25","source":"Bitcointalk"},"16":{"title":"Bitcoin crash when sending coins","url":"https://bitcointalk.org/index.php?topic=27","source":"Bitcointalk"},"17":{"title":"Blocks never stop generating?","url":"https://bitcointalk.org/index.php?topic=28","source":"Bitcointalk"},"18":{"title":"Payment server","url":"https://bitcointalk.org/index.php?topic=29","source":"Bitcointalk"},"19":{"title":"We accept Bitcoins [moved to bitcoin.it/wiki/Trade]","url":"https://bitcointalk.org/index.php?topic=30","source":"Bitcointalk"},"20":{"title":"Questions about Addresses","url":"https://bitcointalk.org/index.php?topic=34","source":"Bitcointalk"},"21":{"title":"Win32 CPU Cycles vs 'Live Protection' Engines ?","url":"https://bitcointalk.org/index.php?topic=35","source":"Bitcointalk"},"22":{"title":"Proof-of-work difficulty increasing","url":"https://bitcointalk.org/index.php?topic=43","source":"Bitcointalk"},"23":{"title":"How divisible are bitcoins and other market/economic questions","url":"https://bitcointalk.org/index.php?topic=44","source":"Bitcointalk"},"24":{"title":"Make your \"we accept Bitcoin\" logo","url":"https://bitcointalk.org/index.php?topic=45","source":"Bitcointalk"},"25":{"title":"Simple to implement feature requests","url":"https://bitcointalk.org/index.php?topic=46","source":"Bitcointalk"},"26":{"title":"Bitcoin client and website translation","url":"https://bitcointalk.org/index.php?topic=47","source":"Bitcointalk"},"27":{"title":"What's with this odd generation?","url":"https://bitcointalk.org/index.php?topic=48","source":"Bitcointalk"},"28":{"title":"DEB Package?","url":"https://bitcointalk.org/index.php?topic=49","source":"Bitcointalk"},"29":{"title":"Setting up multiple bitcoin machines behind NAT","url":"https://bitcointalk.org/index.php?topic=54","source":"Bitcointalk"},"30":{"title":"URI-scheme for bitcoin","url":"https://bitcointalk.org/index.php?topic=55","source":"Bitcointalk"},"31":{"title":"The current Bitcoin economic model doesn't work","url":"https://bitcointalk.org/index.php?topic=57","source":"Bitcointalk"},"32":{"title":"Number of connections","url":"https://bitcointalk.org/index.php?topic=58","source":"Bitcointalk"},"33":{"title":"Post your static IP","url":"https://bitcointalk.org/index.php?topic=59","source":"Bitcointalk"},"34":{"title":"UI improvements","url":"https://bitcointalk.org/index.php?topic=60","source":"Bitcointalk"},"35":{"title":"generation slowed down dramatically","url":"https://bitcointalk.org/index.php?topic=61","source":"Bitcointalk"},"36":{"title":"Bitcoin Address Collisions","url":"https://bitcointalk.org/index.php?topic=62","source":"Bitcointalk"},"37":{"title":"Command Line and JSON-RPC","url":"https://bitcointalk.org/index.php?topic=63","source":"Bitcointalk"},"38":{"title":"New icon/logo","url":"https://bitcointalk.org/index.php?topic=64","source":"Bitcointalk"},"39":{"title":"wxWidgets 2.9.0","url":"https://bitcointalk.org/index.php?topic=65","source":"Bitcointalk"},"40":{"title":"Money Transfer Regulations","url":"https://bitcointalk.org/index.php?topic=69","source":"Bitcointalk"},"41":{"title":"bitcoin auto-renice-ing","url":"https://bitcointalk.org/index.php?topic=72","source":"Bitcointalk"},"42":{"title":"Idea for file hosting and proxy services","url":"https://bitcointalk.org/index.php?topic=83","source":"Bitcointalk"},"43":{"title":"On IRC bootstrapping","url":"https://bitcointalk.org/index.php?topic=84","source":"Bitcointalk"},"44":{"title":"Exchange Methods","url":"https://bitcointalk.org/index.php?topic=87","source":"Bitcointalk"},"45":{"title":"who is bitcoin.com","url":"https://bitcointalk.org/index.php?topic=88","source":"Bitcointalk"},"46":{"title":"removing bitcoin addresses","url":"https://bitcointalk.org/index.php?topic=101","source":"Bitcointalk"},"47":{"title":"Is there a way to automate bitcoin payments for a website?","url":"https://bitcointalk.org/index.php?topic=112","source":"Bitcointalk"},"48":{"title":"Ummmm... where did my bitcoins go?","url":"https://bitcointalk.org/index.php?topic=125","source":"Bitcointalk"},"49":{"title":"A New Currency System for the World","url":"https://bitcointalk.org/index.php?topic=128","source":"Bitcointalk"},"50":{"title":"For a website taking payments with bitcoins, better: IP or bitcoin addresses?","url":"https://bitcointalk.org/index.php?topic=129","source":"Bitcointalk"},"51":{"title":"Could the bitcoin network be destroyed by someone generating endless bitcoin add","url":"https://bitcointalk.org/index.php?topic=130","source":"Bitcointalk"},"52":{"title":"Exception: 9key_error error","url":"https://bitcointalk.org/index.php?topic=135","source":"Bitcointalk"},"53":{"title":"Odd amount of generated coins","url":"https://bitcointalk.org/index.php?topic=141","source":"Bitcointalk"},"54":{"title":"CLI bitcoin generation","url":"https://bitcointalk.org/index.php?topic=145","source":"Bitcointalk"},"55":{"title":"Bitcoin in Ubuntu 10.04","url":"https://bitcointalk.org/index.php?topic=149","source":"Bitcointalk"},"56":{"title":"Website and software translations","url":"https://bitcointalk.org/index.php?topic=151","source":"Bitcointalk"},"57":{"title":"Share database blocks ?","url":"https://bitcointalk.org/index.php?topic=153","source":"Bitcointalk"},"58":{"title":"Tracing a coin's lineage","url":"https://bitcointalk.org/index.php?topic=154","source":"Bitcointalk"},"59":{"title":"JSON-RPC programming tips using labels","url":"https://bitcointalk.org/index.php?topic=157","source":"Bitcointalk"},"60":{"title":"Hostnames instead of IP Addresses","url":"https://bitcointalk.org/index.php?topic=158","source":"Bitcointalk"},"61":{"title":"Can't Build r80 from SVN","url":"https://bitcointalk.org/index.php?topic=163","source":"Bitcointalk"},"62":{"title":"What is the incentive to collect transactions?","url":"https://bitcointalk.org/index.php?topic=165","source":"Bitcointalk"},"63":{"title":"Building BitCoin Client completely Headless","url":"https://bitcointalk.org/index.php?topic=171","source":"Bitcointalk"},"64":{"title":"Bitcoin mobile.","url":"https://bitcointalk.org/index.php?topic=177","source":"Bitcointalk"},"65":{"title":"Technical clarifications","url":"https://bitcointalk.org/index.php?topic=179","source":"Bitcointalk"},"66":{"title":"Get 5 free bitcoins from freebitcoins.appspot.com","url":"https://bitcointalk.org/index.php?topic=183","source":"Bitcointalk"},"67":{"title":"new binary release?","url":"https://bitcointalk.org/index.php?topic=184","source":"Bitcointalk"},"68":{"title":"Dealing with SHA-256 Collisions","url":"https://bitcointalk.org/index.php?topic=191","source":"Bitcointalk"},"69":{"title":"Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG","url":"https://bitcointalk.org/index.php?topic=195","source":"Bitcointalk"},"70":{"title":"How fast do the fastest computers generate bitcoins?","url":"https://bitcointalk.org/index.php?topic=197","source":"Bitcointalk"},"71":{"title":"Dying bitcoins","url":"https://bitcointalk.org/index.php?topic=198","source":"Bitcointalk"},"72":{"title":"0.3 almost ready -- please test the Mac version!","url":"https://bitcointalk.org/index.php?topic=199","source":"Bitcointalk"},"73":{"title":"Major Meltdown","url":"https://bitcointalk.org/index.php?topic=202","source":"Bitcointalk"},"74":{"title":"Bitcoin Faucet changes","url":"https://bitcointalk.org/index.php?topic=206","source":"Bitcointalk"},"75":{"title":"Bitcoin clients getting k-lined from the IRC bootstrapping channel","url":"https://bitcointalk.org/index.php?topic=215","source":"Bitcointalk"},"76":{"title":"Beta?","url":"https://bitcointalk.org/index.php?topic=217","source":"Bitcointalk"},"77":{"title":"IPv6, headless client, and more","url":"https://bitcointalk.org/index.php?topic=218","source":"Bitcointalk"},"78":{"title":"Feature Request: Limiting Connections","url":"https://bitcointalk.org/index.php?topic=223","source":"Bitcointalk"},"79":{"title":"Slashdot Submission for 1.0","url":"https://bitcointalk.org/index.php?topic=234","source":"Bitcointalk"},"80":{"title":"Bitcoin 0.3 released!","url":"https://bitcointalk.org/index.php?topic=238","source":"Bitcointalk"},"81":{"title":"Security","url":"https://bitcointalk.org/index.php?topic=240","source":"Bitcointalk"},"82":{"title":"Anonymity","url":"https://bitcointalk.org/index.php?topic=241","source":"Bitcointalk"},"83":{"title":"BTC Vulnerability? (Massive Attack against BTC system. Is it really?)","url":"https://bitcointalk.org/index.php?topic=242","source":"Bitcointalk"},"84":{"title":"bitcoin 0.3 win64 - broken access to APPDATA if non-latin characters in username","url":"https://bitcointalk.org/index.php?topic=246","source":"Bitcointalk"},"85":{"title":"Scalability","url":"https://bitcointalk.org/index.php?topic=286","source":"Bitcointalk"},"86":{"title":"Flood attack 0.00000001 BC","url":"https://bitcointalk.org/index.php?topic=287","source":"Bitcointalk"},"87":{"title":"Warning this block was not received by any other nodes","url":"https://bitcointalk.org/index.php?topic=291","source":"Bitcointalk"},"88":{"title":"Donations to freebitcoins.appspot.com needed!","url":"https://bitcointalk.org/index.php?topic=295","source":"Bitcointalk"},"89":{"title":"Fedora 13 libcrypto","url":"https://bitcointalk.org/index.php?topic=296","source":"Bitcointalk"},"90":{"title":"Building Bitcoin 0.3","url":"https://bitcointalk.org/index.php?topic=298","source":"Bitcointalk"},"91":{"title":"Runaway CPU usage for 64bit BitCoin (Linux Client)","url":"https://bitcointalk.org/index.php?topic=299","source":"Bitcointalk"},"92":{"title":"Resending transaction","url":"https://bitcointalk.org/index.php?topic=303","source":"Bitcointalk"},"93":{"title":"Stuck on 513 blocks","url":"https://bitcointalk.org/index.php?topic=305","source":"Bitcointalk"},"94":{"title":"Error on Ubuntu 10.04","url":"https://bitcointalk.org/index.php?topic=318","source":"Bitcointalk"},"95":{"title":"No blocks downloaded - MS Security Essentials users please read","url":"https://bitcointalk.org/index.php?topic=323","source":"Bitcointalk"},"96":{"title":"Hash/sec Throttling for Democracy","url":"https://bitcointalk.org/index.php?topic=325","source":"Bitcointalk"},"97":{"title":"UPDATED - Linux x64 bins for those having libcrypto and GLIBCXX_3.4.11 troubles","url":"https://bitcointalk.org/index.php?topic=326","source":"Bitcointalk"},"98":{"title":"resource hog","url":"https://bitcointalk.org/index.php?topic=327","source":"Bitcointalk"},"99":{"title":"wiki registration email?","url":"https://bitcointalk.org/index.php?topic=338","source":"Bitcointalk"},"100":{"title":"They want to delete the Wikipedia article","url":"https://bitcointalk.org/index.php?topic=342","source":"Bitcointalk"},"101":{"title":"stopped prodicing coins","url":"https://bitcointalk.org/index.php?topic=343","source":"Bitcointalk"},"102":{"title":"Hash() function not secure","url":"https://bitcointalk.org/index.php?topic=360","source":"Bitcointalk"},"103":{"title":"Website integration for bitcoin","url":"https://bitcointalk.org/index.php?topic=364","source":"Bitcointalk"},"104":{"title":"[Bitcoin 0.3.0] Runtime error","url":"https://bitcointalk.org/index.php?topic=373","source":"Bitcointalk"},"105":{"title":"bitcoin trademark?","url":"https://bitcointalk.org/index.php?topic=378","source":"Bitcointalk"},"106":{"title":"Bitcoin 0.3.1 released","url":"https://bitcointalk.org/index.php?topic=383","source":"Bitcointalk"},"107":{"title":"\"SetIcons(): icon bundle doesn't contain any suitable icon\"","url":"https://bitcointalk.org/index.php?topic=391","source":"Bitcointalk"},"108":{"title":"Source code documentation","url":"https://bitcointalk.org/index.php?topic=393","source":"Bitcointalk"},"109":{"title":"Request: expected bitcoins per day display","url":"https://bitcointalk.org/index.php?topic=397","source":"Bitcointalk"},"110":{"title":"Assertion Failure - Ubuntu Lucid","url":"https://bitcointalk.org/index.php?topic=400","source":"Bitcointalk"},"111":{"title":"The dollar cost of bitmining energy","url":"https://bitcointalk.org/index.php?topic=403","source":"Bitcointalk"},"112":{"title":"Sample account system using JSON-RPC needed","url":"https://bitcointalk.org/index.php?topic=417","source":"Bitcointalk"},"113":{"title":"Network Size","url":"https://bitcointalk.org/index.php?topic=419","source":"Bitcointalk"},"114":{"title":"Bitcoin snack machine (fast transaction problem)","url":"https://bitcointalk.org/index.php?topic=423","source":"Bitcointalk"},"115":{"title":"Nenolod, the guy that wants to prove Bitcoin doesn't work.","url":"https://bitcointalk.org/index.php?topic=431","source":"Bitcointalk"},"116":{"title":"BUG Report: Rounding glitch","url":"https://bitcointalk.org/index.php?topic=432","source":"Bitcointalk"},"117":{"title":"Privacy versus Safety: handling change","url":"https://bitcointalk.org/index.php?topic=434","source":"Bitcointalk"},"118":{"title":"Bitcoin 0.3.2 released","url":"https://bitcointalk.org/index.php?topic=437","source":"Bitcointalk"},"119":{"title":"Did block generation crawl to a halt?","url":"https://bitcointalk.org/index.php?topic=441","source":"Bitcointalk"},"120":{"title":"Faster SHA-256, MSVC build ","url":"https://bitcointalk.org/index.php?topic=453","source":"Bitcointalk"},"121":{"title":"Builds for Ubuntu?","url":"https://bitcointalk.org/index.php?topic=454","source":"Bitcointalk"},"122":{"title":"md5?","url":"https://bitcointalk.org/index.php?topic=458","source":"Bitcointalk"},"123":{"title":"JSON-RPC password","url":"https://bitcointalk.org/index.php?topic=461","source":"Bitcointalk"},"124":{"title":"Warning: don't use -server or bitcoind where you web browse (v0.3.2 and lower)","url":"https://bitcointalk.org/index.php?topic=479","source":"Bitcointalk"},"125":{"title":"Bitcoin x64 for Windows","url":"https://bitcointalk.org/index.php?topic=501","source":"Bitcointalk"},"126":{"title":"JSON-RPC Multiple Invocations","url":"https://bitcointalk.org/index.php?topic=528","source":"Bitcointalk"},"127":{"title":"Scalability and transaction rate","url":"https://bitcointalk.org/index.php?topic=532","source":"Bitcointalk"},"128":{"title":"bitcoind not responding to RPC","url":"https://bitcointalk.org/index.php?topic=548","source":"Bitcointalk"},"129":{"title":"Faster initial block download (5x faster)","url":"https://bitcointalk.org/index.php?topic=550","source":"Bitcointalk"},"130":{"title":"Reading/Writing Blocks and FLATDATA","url":"https://bitcointalk.org/index.php?topic=555","source":"Bitcointalk"},"131":{"title":"Version 0.3.2.5 -- please test!","url":"https://bitcointalk.org/index.php?topic=556","source":"Bitcointalk"},"132":{"title":"a simple traffic load test run","url":"https://bitcointalk.org/index.php?topic=567","source":"Bitcointalk"},"133":{"title":"Bitcoin 0.3.3 released -- PLEASE UPGRADE","url":"https://bitcointalk.org/index.php?topic=570","source":"Bitcointalk"},"134":{"title":"Stealing Coins","url":"https://bitcointalk.org/index.php?topic=571","source":"Bitcointalk"},"135":{"title":"Bitcoin x86 for Windows","url":"https://bitcointalk.org/index.php?topic=572","source":"Bitcointalk"},"136":{"title":"bitcoind without wxWidgets","url":"https://bitcointalk.org/index.php?topic=576","source":"Bitcointalk"},"137":{"title":"Bitcoin does NOT violate Mises' Regression Theorem","url":"https://bitcointalk.org/index.php?topic=583","source":"Bitcointalk"},"138":{"title":"Difficulty","url":"https://bitcointalk.org/index.php?topic=587","source":"Bitcointalk"},"139":{"title":"Running on a port other than 8333","url":"https://bitcointalk.org/index.php?topic=589","source":"Bitcointalk"},"140":{"title":"Having problems specifing -datadir","url":"https://bitcointalk.org/index.php?topic=601","source":"Bitcointalk"},"141":{"title":"Build error SVN r115 on my Mac: workaround","url":"https://bitcointalk.org/index.php?topic=604","source":"Bitcointalk"},"142":{"title":"[PATCH] implement 'xlisttransactions'","url":"https://bitcointalk.org/index.php?topic=611","source":"Bitcointalk"},"143":{"title":"Linux distribution download","url":"https://bitcointalk.org/index.php?topic=612","source":"Bitcointalk"},"144":{"title":"Transaction disappeared in the void...","url":"https://bitcointalk.org/index.php?topic=615","source":"Bitcointalk"},"145":{"title":"*** ALERT *** Upgrade to 0.3.6","url":"https://bitcointalk.org/index.php?topic=626","source":"Bitcointalk"},"146":{"title":"Implementation bug prior to 0.3.6","url":"https://bitcointalk.org/index.php?topic=628","source":"Bitcointalk"},"147":{"title":"Protocol Buffers for Bitcoin","url":"https://bitcointalk.org/index.php?topic=632","source":"Bitcointalk"},"148":{"title":"Building initial transaction trust through \"coin ripping\"","url":"https://bitcointalk.org/index.php?topic=635","source":"Bitcointalk"},"149":{"title":"Bug: \"Immature\" coins lost in wallet.dat during transaction","url":"https://bitcointalk.org/index.php?topic=642","source":"Bitcointalk"},"150":{"title":"Automated nightly builds","url":"https://bitcointalk.org/index.php?topic=644","source":"Bitcointalk"},"151":{"title":"A proposal for a semi-automated Escrow mechanism","url":"https://bitcointalk.org/index.php?topic=645","source":"Bitcointalk"},"152":{"title":"4 hashes parallel on SSE2 CPUs for 0.3.6","url":"https://bitcointalk.org/index.php?topic=648","source":"Bitcointalk"},"153":{"title":"Webpage idea: Next predicted difficulty change","url":"https://bitcointalk.org/index.php?topic=651","source":"Bitcointalk"},"154":{"title":"BitCoin Wikipedia page DELETED!!!","url":"https://bitcointalk.org/index.php?topic=652","source":"Bitcointalk"},"155":{"title":"Linux version => No GUI after upgrade.  WTF?","url":"https://bitcointalk.org/index.php?topic=655","source":"Bitcointalk"},"156":{"title":"Mac Client Problems Outlined...","url":"https://bitcointalk.org/index.php?topic=660","source":"Bitcointalk"},"157":{"title":"What happens when network is split for prolonged time and reconnected?","url":"https://bitcointalk.org/index.php?topic=661","source":"Bitcointalk"},"158":{"title":"Multiple Wallets, one computer (multiple accounts)","url":"https://bitcointalk.org/index.php?topic=665","source":"Bitcointalk"},"159":{"title":"Porn","url":"https://bitcointalk.org/index.php?topic=671","source":"Bitcointalk"},"160":{"title":"Bitcoind x86 binary for CentOS","url":"https://bitcointalk.org/index.php?topic=685","source":"Bitcointalk"},"161":{"title":"Authentication, JSON RPC and Python","url":"https://bitcointalk.org/index.php?topic=689","source":"Bitcointalk"},"162":{"title":"Bitcoin Watchdog Service","url":"https://bitcointalk.org/index.php?topic=691","source":"Bitcointalk"},"163":{"title":"Please upgrade to 0.3.8!","url":"https://bitcointalk.org/index.php?topic=696","source":"Bitcointalk"},"164":{"title":"Who's the Spanish jerk draining the Faucet?","url":"https://bitcointalk.org/index.php?topic=704","source":"Bitcointalk"},"165":{"title":"bitcoind transaction to ip address","url":"https://bitcointalk.org/index.php?topic=711","source":"Bitcointalk"},"166":{"title":"Transaction Overload Solution","url":"https://bitcointalk.org/index.php?topic=713","source":"Bitcointalk"},"167":{"title":"Bitcoin minting is thermodynamically perverse","url":"https://bitcointalk.org/index.php?topic=721","source":"Bitcointalk"},"168":{"title":"latency and locality","url":"https://bitcointalk.org/index.php?topic=723","source":"Bitcointalk"},"169":{"title":"Escrow","url":"https://bitcointalk.org/index.php?topic=750","source":"Bitcointalk"},"170":{"title":"bitcoin generation broken in 0.3.8?  (64-bit)","url":"https://bitcointalk.org/index.php?topic=753","source":"Bitcointalk"},"171":{"title":"What could be the transition plan to Y2038 compliant Bitcoin? (it already is)","url":"https://bitcointalk.org/index.php?topic=760","source":"Bitcointalk"},"172":{"title":"Version 0.3.8.1 update for Linux 64-bit","url":"https://bitcointalk.org/index.php?topic=765","source":"Bitcointalk"},"173":{"title":"Connection limits","url":"https://bitcointalk.org/index.php?topic=766","source":"Bitcointalk"},"174":{"title":"Not a suggestion","url":"https://bitcointalk.org/index.php?topic=770","source":"Bitcointalk"},"175":{"title":"Lost large number of bitcoins","url":"https://bitcointalk.org/index.php?topic=782","source":"Bitcointalk"},"176":{"title":"Compile error in SVN r127","url":"https://bitcointalk.org/index.php?topic=784","source":"Bitcointalk"},"177":{"title":"Where is the separate discussion devoted to possible Bitcoin weaknesses.","url":"https://bitcointalk.org/index.php?topic=788","source":"Bitcointalk"},"178":{"title":"BSD detection","url":"https://bitcointalk.org/index.php?topic=790","source":"Bitcointalk"},"179":{"title":"Bugfixes in SVN rev 130","url":"https://bitcointalk.org/index.php?topic=795","source":"Bitcointalk"},"180":{"title":"Version 0.3.9 rc1, please test","url":"https://bitcointalk.org/index.php?topic=806","source":"Bitcointalk"},"181":{"title":"Proposed change to sendtoaddress API call","url":"https://bitcointalk.org/index.php?topic=807","source":"Bitcointalk"},"182":{"title":"Potential disaster scenario","url":"https://bitcointalk.org/index.php?topic=813","source":"Bitcointalk"},"183":{"title":"Big endinan code problems","url":"https://bitcointalk.org/index.php?topic=816","source":"Bitcointalk"},"184":{"title":"tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10","url":"https://bitcointalk.org/index.php?topic=820","source":"Bitcointalk"},"185":{"title":"overflow bug SERIOUS","url":"https://bitcointalk.org/index.php?topic=823","source":"Bitcointalk"},"186":{"title":"Version 0.3.10 - block 74638 overflow PATCH!","url":"https://bitcointalk.org/index.php?topic=827","source":"Bitcointalk"},"187":{"title":"0.3.10.1 Question on where block should be","url":"https://bitcointalk.org/index.php?topic=828","source":"Bitcointalk"},"188":{"title":"[PATCH] Automatic block validation","url":"https://bitcointalk.org/index.php?topic=832","source":"Bitcointalk"},"189":{"title":"checkpointing the block chain","url":"https://bitcointalk.org/index.php?topic=834","source":"Bitcointalk"},"190":{"title":"blocks minus 1","url":"https://bitcointalk.org/index.php?topic=837","source":"Bitcointalk"},"191":{"title":"Checking the block chain on load","url":"https://bitcointalk.org/index.php?topic=841","source":"Bitcointalk"},"192":{"title":"Bitcoins are most like shares of common stock","url":"https://bitcointalk.org/index.php?topic=845","source":"Bitcointalk"},"193":{"title":"Difficulty: More nodes active, or faster nodes?","url":"https://bitcointalk.org/index.php?topic=846","source":"Bitcointalk"},"194":{"title":"New screenshots to the front page?","url":"https://bitcointalk.org/index.php?topic=850","source":"Bitcointalk"},"195":{"title":"28 days without generation, i have 4200khash/s","url":"https://bitcointalk.org/index.php?topic=862","source":"Bitcointalk"},"196":{"title":"Convert Bitcoin to GTK: Yes?  No?  wx is better?","url":"https://bitcointalk.org/index.php?topic=867","source":"Bitcointalk"},"197":{"title":"HOWTO: Compiling Bitcoin on Ubuntu 10.04 (Karmic)","url":"https://bitcointalk.org/index.php?topic=868","source":"Bitcointalk"},"198":{"title":"Hypothetical question on lost coins / transfers","url":"https://bitcointalk.org/index.php?topic=870","source":"Bitcointalk"},"199":{"title":"Need a post writing up some things users should know","url":"https://bitcointalk.org/index.php?topic=873","source":"Bitcointalk"},"200":{"title":"integrating digital payments into p2p protocols","url":"https://bitcointalk.org/index.php?topic=890","source":"Bitcointalk"},"201":{"title":"Development of alert system","url":"https://bitcointalk.org/index.php?topic=898","source":"Bitcointalk"},"202":{"title":"RFC: remove DB_PRIVATE flag","url":"https://bitcointalk.org/index.php?topic=920","source":"Bitcointalk"},"203":{"title":"auto backing up of wallet.dat","url":"https://bitcointalk.org/index.php?topic=921","source":"Bitcointalk"},"204":{"title":"New web service: obtain dump of bitcoin block NNNN","url":"https://bitcointalk.org/index.php?topic=928","source":"Bitcointalk"},"205":{"title":"Gentoo Linux Ebuild","url":"https://bitcointalk.org/index.php?topic=930","source":"Bitcointalk"},"206":{"title":"Version 0.3.11 with upgrade alerts","url":"https://bitcointalk.org/index.php?topic=941","source":"Bitcointalk"},"207":{"title":"Bitcoin Blogger: Is It Better To Buy Or Generate Bitcoins?","url":"https://bitcointalk.org/index.php?topic=955","source":"Bitcointalk"},"208":{"title":"Warning : Check your system clock (help me)","url":"https://bitcointalk.org/index.php?topic=960","source":"Bitcointalk"},"209":{"title":"CryptoPP Assertion Error","url":"https://bitcointalk.org/index.php?topic=967","source":"Bitcointalk"},"210":{"title":"HTTP status codes from the JSON-RPC api","url":"https://bitcointalk.org/index.php?topic=969","source":"Bitcointalk"},"211":{"title":"Switch to GPL","url":"https://bitcointalk.org/index.php?topic=989","source":"Bitcointalk"},"212":{"title":"bitcoind as daemon in OSX","url":"https://bitcointalk.org/index.php?topic=992","source":"Bitcointalk"},"213":{"title":"Always pay transaction fee?","url":"https://bitcointalk.org/index.php?topic=994","source":"Bitcointalk"},"214":{"title":"Version 0.3.12","url":"https://bitcointalk.org/index.php?topic=999","source":"Bitcointalk"},"215":{"title":"Auto-detect for 128-bit 4-way SSE2","url":"https://bitcointalk.org/index.php?topic=1007","source":"Bitcointalk"},"216":{"title":"Won't let me send coins because it requires a transaction fee?","url":"https://bitcointalk.org/index.php?topic=1013","source":"Bitcointalk"},"217":{"title":"Memory leak","url":"https://bitcointalk.org/index.php?topic=1023","source":"Bitcointalk"},"218":{"title":"Message Encryption as a built-in feature?","url":"https://bitcointalk.org/index.php?topic=1032","source":"Bitcointalk"},"219":{"title":"Issues building bitcoin on Windows 7","url":"https://bitcointalk.org/index.php?topic=1034","source":"Bitcointalk"},"220":{"title":"The case for removing IP transactions","url":"https://bitcointalk.org/index.php?topic=1048","source":"Bitcointalk"},"221":{"title":"Bug?  /usr/bin/bitcoind \"\"","url":"https://bitcointalk.org/index.php?topic=1063","source":"Bitcointalk"},"222":{"title":"The Niche List","url":"https://bitcointalk.org/index.php?topic=1268","source":"Bitcointalk"},"223":{"title":"Internal version number","url":"https://bitcointalk.org/index.php?topic=1269","source":"Bitcointalk"},"224":{"title":"How divisible are bitcoins - the technical side","url":"https://bitcointalk.org/index.php?topic=1271","source":"Bitcointalk"},"225":{"title":"How To Make a Distributed BitCoin Escrow Service","url":"https://bitcointalk.org/index.php?topic=1283","source":"Bitcointalk"},"226":{"title":"Remote RPC access","url":"https://bitcointalk.org/index.php?topic=1291","source":"Bitcointalk"},"227":{"title":"I broke my wallet, sends never confirm now.","url":"https://bitcointalk.org/index.php?topic=1306","source":"Bitcointalk"},"228":{"title":"Prioritized transactions, and tx fees","url":"https://bitcointalk.org/index.php?topic=1314","source":"Bitcointalk"},"229":{"title":"0.3.13 RC1 for Windows, please test","url":"https://bitcointalk.org/index.php?topic=1322","source":"Bitcointalk"},"230":{"title":"Version 0.3.13, please upgrade","url":"https://bitcointalk.org/index.php?topic=1327","source":"Bitcointalk"},"231":{"title":"How to overthrow the GPU Oligarchs","url":"https://bitcointalk.org/index.php?topic=1332","source":"Bitcointalk"},"232":{"title":"python OpenCL bitcoin miner","url":"https://bitcointalk.org/index.php?topic=1334","source":"Bitcointalk"},"233":{"title":"[PATCH] increase block size limit","url":"https://bitcointalk.org/index.php?topic=1347","source":"Bitcointalk"},"234":{"title":"Tor connections not working reliably, many seednodes offline","url":"https://bitcointalk.org/index.php?topic=1375","source":"Bitcointalk"},"235":{"title":"Key pool feature for safer wallet backup","url":"https://bitcointalk.org/index.php?topic=1414","source":"Bitcointalk"},"236":{"title":"Version 0.3.14","url":"https://bitcointalk.org/index.php?topic=1528","source":"Bitcointalk"},"237":{"title":"ERROR - PLEASE HELP ME!","url":"https://bitcointalk.org/index.php?topic=1530","source":"Bitcointalk"},"238":{"title":"Win7 64bit since last patch Tues now crashes","url":"https://bitcointalk.org/index.php?topic=1540","source":"Bitcointalk"},"239":{"title":"Suggestion: Allow short messages to be sent together with bitcoins ?","url":"https://bitcointalk.org/index.php?topic=1545","source":"Bitcointalk"},"240":{"title":"Some testing that I did on the testnetwork, my findings.","url":"https://bitcointalk.org/index.php?topic=1668","source":"Bitcointalk"},"241":{"title":"Wikileaks contact info?","url":"https://bitcointalk.org/index.php?topic=1735","source":"Bitcointalk"},"242":{"title":"Version 0.3.15","url":"https://bitcointalk.org/index.php?topic=1780","source":"Bitcointalk"},"243":{"title":"Need OP_BLOCKNUMBER to allow \"time\" limited transactions","url":"https://bitcointalk.org/index.php?topic=1786","source":"Bitcointalk"},"244":{"title":"BitDNS and Generalizing Bitcoin","url":"https://bitcointalk.org/index.php?topic=1790","source":"Bitcointalk"},"245":{"title":"Transaction / spam flood attack currently under way","url":"https://bitcointalk.org/index.php?topic=1850","source":"Bitcointalk"},"246":{"title":"New getwork","url":"https://bitcointalk.org/index.php?topic=1901","source":"Bitcointalk"},"247":{"title":"New demonstration CPU miner available","url":"https://bitcointalk.org/index.php?topic=1925","source":"Bitcointalk"},"248":{"title":"RFC: ship block chain 1-74000 with release tarballs?","url":"https://bitcointalk.org/index.php?topic=1931","source":"Bitcointalk"},"249":{"title":"Version 0.3.17","url":"https://bitcointalk.org/index.php?topic=1946","source":"Bitcointalk"},"250":{"title":"[2.5+ EH] Slush Pool (slushpool.com); World's First Mining Pool","url":"https://bitcointalk.org/index.php?topic=1976","source":"Bitcointalk"},"251":{"title":"Is safe running bitcoins with the same wallet on more computers simultaneously?","url":"https://bitcointalk.org/index.php?topic=1986","source":"Bitcointalk"},"252":{"title":"Incompatible wallet format with latest bitcoin-git ?","url":"https://bitcointalk.org/index.php?topic=2007","source":"Bitcointalk"},"253":{"title":"JSON-RPC method idea: list transactions newer than a given txid","url":"https://bitcointalk.org/index.php?topic=2151","source":"Bitcointalk"},"254":{"title":"Version 0.3.18","url":"https://bitcointalk.org/index.php?topic=2162","source":"Bitcointalk"},"255":{"title":"Fees in BitDNS confusion","url":"https://bitcointalk.org/index.php?topic=2181","source":"Bitcointalk"},"256":{"title":"minimalistic bitcoin client on D language?","url":"https://bitcointalk.org/index.php?topic=2188","source":"Bitcointalk"},"257":{"title":"Accounts example code","url":"https://bitcointalk.org/index.php?topic=2202","source":"Bitcointalk"},"258":{"title":"Bitcoin and buffer overflow attacks","url":"https://bitcointalk.org/index.php?topic=2208","source":"Bitcointalk"},"259":{"title":"PC World Article on Bitcoin","url":"https://bitcointalk.org/index.php?topic=2216","source":"Bitcointalk"},"260":{"title":"Added some DoS limits, removed safe mode (0.3.19)","url":"https://bitcointalk.org/index.php?topic=2228","source":"Bitcointalk"}}}