如何将比特币核心与I2P匿名网络协议结合使用?
比特币核心
托尔
点对点
i2p公司
分享
改进这个问题
跟随
3月8日19:38问
迈克尔·福克森
597277银牌2222铜牌
添加评论
1个答案
9
乔恩·阿塔克在推特上回答了这个问题。
配置和设置
首先安装并启动I2P(2.35或更高版本)。
$apt安装i2pd
$systemctl启用i2pd.service
$systemctl启动i2pd.service
在bitcoin.conf文件中添加(我假设您运行bitcoin Core v22+,希望同时使用Tor和I2P,但如果对Tor不感兴趣,请删除debug=Tor和onlynet=onion):
调试=tor
调试=i2p
onlynet=洋葱
onlynet=i2p
i2psam=127.0.0.1:7656
I2P有两个配置选项。I2P只需设置第二个即可工作。
-I2P接收传入
如果还设置了set和-i2psam,则会创建传入的I2P连接
通过SAM代理接受。如果未设置,但设置了-i2psam
然后只有传出连接才会连接到I2P网络。
如果未设置-i2psam,则忽略。监听传入的I2P
连接是通过SAM代理完成的,而不是通过绑定到
本地地址和端口(默认值:1)
-i2psam=<ip:端口>
I2P SAM代理到达I2P对等点并接受I2P连接(默认:
(无)
连接到I2P对等点
在这个文件的底部有一些硬编码的I2P种子可以用来开始连接。向下滚动到#手动添加2021-05以获得最低限度的i2p引导支持
您可以使用配置文件(bitcoin.conf)中的-addnode或-seednode连接到这些种子。
(如果peers.dat为空,并且以-dnsseed=0启动,则节点将只知道硬编码种子。)
一旦建立了连接,就可以查看I2P对等点:
watch-t./src/比特币cli-netinfo 4
(有关-netinfo的更多信息,请参阅使用bitcoin cli的帮助文档-netinfo帮助或此StackExchange问题)
在此处输入图像描述
这是由Vasil Dimov于2021年3月合并的比特币核心PR 20685和用于addrv2消息的BIP 155实现的
关于2012年支持I2P的历史讨论就在这里(感谢亚当·乔纳斯找到这个)
分享
改进这个答案
跟随
19小时前编辑的
3月8日19:38回答
迈克尔·福克森
597277银牌2222铜牌
1
谢谢分享。如果你能在3月9日0:07查看一份公关,其中可能包含一些关于i2p的内容,那会很有帮助:github.com/bitcoin/bitcoin/pull/21157–Prayank
当我尝试启动服务时,我得到“System has not been booted with systemd as init System(PID 1)”(系统尚未启动,系统为初始化系统(PID 1))。无法操作。”—5月3日10:57
“4”是什么意思5月3日11:09
1
@Rebload:请参阅Jon Atack的pull github.com/bitcoin/bitcoin/pull/20829“4-Like 1 but with address and version columns”。基本上,4提供的信息最多,而0提供的信息最少迈克尔·福克森5月3日11:45
1
@你的错误信息。在运行watch命令之前是否运行bitcoind?如果你是我不知道你为什么会收到这个错误信息。欢迎在Freenode#比特币核心公关评论–迈克尔•福克森5月3日11:58提问
添加评论
你的答案
禁止节点爬虫有什么坏处吗?
有多个实体和开源软件在比特币P2P网络上爬行,以发现和监控用于各种目的(统计、调查、学术论文等)的节点
我认识的一些人:
btc\节点\扫描仪
dsn.tm.kit.edu软件
节点.multiven.io
bitnodes.earn.com
位节点.io
禁止这样的节点将释放我的连接槽,让我可以使用真正有用的节点来提供一致性资源。但是,禁止这种爬虫节点有什么坏处吗?
另外,如何禁止btc种子节点?这会对P2P网络的健康产生负面影响吗?
我认为理想的答案可以提供两种情况的效果:
由一个用户执行的禁止操作及其影响
大量/有意义的用户进行的禁止以及整个网络将受到怎样的影响
谢谢你
网络
节点
点对点
分享
改进这个问题
跟随
5月2日20:48问
隐翅虫
3344青铜徽章
添加评论
1个答案
0
作为一个实际问题,很难具体禁止爬虫,因为没有可靠的方法将它们与其他正常节点区分开来。事实上,它们可以只是普通的节点,使用代码来收集所需的数据并将其报告给聚合系统。
那么你就只能禁止普通节点了。因为运行一个节点的所有价值都来自于它通过其他节点与P2P网络的连接,这是没有意义的。
分享
改进这个答案
跟随
5月6日17:35回答
大乔希
19044青铜徽章
我提到的节点组(bitnodes、dsn.tm.kit.edu等)都有公共用户代理(在getpeerinfo中命名为subver),因此您可以(当前)轻松地禁用它们。尽管他们有可能(开始)假装成普通节点,转而使用比特币核心的Subversion,但核心问题仍然存在cryptagoras 5月6日20:19
如果以这种方式被禁止,爬虫程序肯定会开始模仿真实的节点彼特·维尔18小时前
添加评论
你的答案
将来有没有可能缩短阻塞间隔?
将来有没有可能缩短交易的确认时间?能不能缩短到10分钟以内?能快点吗?
闭塞间隔
分享
改进这个问题
跟随
2月21日12:40编辑
墨奇♦
54.4K33333金徽章151151银徽章470470青铜徽章
2月16日16:26被问到
拉舒尔古普塔
2111青铜徽章
相关信息:bitcoin.stackexchange.com/questions/43700/…bitcoin.stackexchange.com/questions/44416/…bitcoin.stackexchange.com/questions/46618/…UTF-8 2017年2月16日17:04
您可以浏览比特币改进方案;这是建议创新的标准方法Nate Eldredge 2月16日22:06
添加评论
1个答案
-1
是和否。当且仅当>50%的活动节点通过采用协议更改“同意”协议时,协议的任何更改都是可能的。
但是要让每个人都同意是非常困难的。例如,比特币现金(Bitcoin Cash,BHC)作为比特币的一个分支存在,是因为在增加区块大小方面存在争议。似乎这样一种降低挡位时间的努力很可能会导致类似的混乱辩论,最终导致分裂。
分享
改进这个答案
跟随
5月6日18:14回答
夜蛾
17544青铜徽章
1
那不是真的。为什么超过50%的活动节点需要同意迈克5月7日15:00
我的理解是,难度水平每两周都会经过协商一致的调整(即>50%)。它的调整向上或向下与目标保持挡位时间在10分钟。因此,如果只有一些节点希望更快地创建块,它们将以较低的难度创建块,这意味着它们对有效的块散列有不同的概念。网络的一部分会认为这些散列是有效的,而另一部分则不会。多数服从多数。其他人必须排成一行或以叉子的形式存在诺克托努拉5月8日16:40
1
困难不是协商一致决定的;这是协议规则。如果矿工生成的块不符合协议的难度规则,则这些块是无效的。你需要一个系统的分支来调整这个规则,这意味着如果旧的和新的规则仍然受到一些人的欢迎,就需要一个单独的货币16小时前的皮特·维尔
添加评论
你的答案
当你进行比特币交易时,收款人(和整个世界?)真的能看到你整个钱包里有多少硬币吗?
我真的希望我错得很厉害,但我得问问。。。
我有这样一个想法,我基于多年来听到的评论和解释,当你进行比特币交易时,例如0.001 BTC,你的钱包(假设比特币核心)实际上发送你钱包的全部资金,比如说1.5 BTC,但也包括1.5减去0.001 BTC的“回馈”信号,即1499 BTC,在同样的“原子行动”,意思是你从来没有真正的风险失去所有的钱,但它是广告的人收到它,也许整个世界。
我不明白为什么它会这样做,而且这似乎对隐私极为不利,而且我根本不确定它是否会这样做。也许只是偶尔发生?如果是,什么时候?或者它不是指“钱包里的全部资金”,而是指别的什么?
我希望有人能彻底解决这个问题。有人在2009年就知道比特币,但在2021年就开始问这个问题了,在用比特币做了十多年的高度敏感任务之后。。。我不喜欢随机的人知道我有多少比特币,我只是通过给他们寄钱,希望这不是它的工作方式。
比特币核心
交易
安全
隐私
分享
改进这个问题
跟随
问5月6日11:46
厘米
4111青铜徽章
这是否回答了您的问题bitcoin.stackexchange.com/a/56491/95422萨克斯霍尔5月6日12:54
比特币隐私有很多方面。参见:en.bitcoin.it/Privacy–chytrik 5月6日17:26
添加评论
1个答案
1
不,你不会在付款时透露你钱包的全部金额,但实际上你可以透露你比特币上的一些信息。
您的钱包有多个地址,每个地址都可以收到一笔或多笔付款,一旦您收到付款,此金额将成为UTXO(未使用的交易输出),您可以稍后使用它进行付款;因此,你的钱包里会有一些UTXO,当你付款时,你必须花一个完整的UTXO(你在以前的付款中收到的金额),而不是整个钱包。
例如,如果您收到四个不同地址的四笔付款(0.3、0.04、0.61、0.05-钱包总余额1 btc),并且您必须支付0.2 btc,则您将使用大于请求金额的UTXO,在我们的示例中为0.3 btc UTXO(但您也可以选择0.61)。因此,您将使用一个输入(0.3 btc)和两个输出进行交易:0.2 btc用于支付,0.1作为您在新地址上收到的更改。
在这种情况下,您将向对方(唯一知道此地址是您的)披露您至少有其他0.1 btc,但没有钱包余额。任何在区块链上看到此交易的其他人都无法知道此地址是您的地址,甚至可能无法区分付款和更改,这取决于交易是如何进行的。
这是最简单的情况,你披露的信息较少,还有其他因素可以披露你持有的部分资产(即,如果你使用同一地址收到多笔付款,当你从该地址消费时,你将披露其全部金额,不仅是你选择的UTXO),比特币的隐私也不是那么简单,这里可以充分解释。
您可以在此处阅读更多内容:
https://bitcoin.org/en/protect-your-privacy
https://en.bitcoin.it/Privacy
分享
如何通过RPC从比特币核心快速获取下一个待开采区块的目标?
下一个块的目标在getblocktemplate中可用,但是我不知道是否有一种方法可以在不获取所有挂起事务的情况下获取目标,这可能需要很长时间并生成大量数据。
您也可以使用getbestblock来获取顶部块,然后使用getblockheader来获取之前的2016块,然后根据时间进行计算,但这同样非常缓慢,而且数据量很大。
有没有一种快速的方法来确定RPC上比特币核心的下一个块的目标?
比特币核心
json rpc
矿工配置
分享
改进这个问题
跟随
5月7日3:19编辑
问5月6日4点22分
大乔希
19044青铜徽章
添加评论
1个答案
0
你可以很容易地从困难中计算出来
所以只要通过RPC调用getdifficle就可以计算出:
target=targetmax/难度
其中targetmax=269595352529101130949315647634472399136010898738574164086137773096960
目标max是genesis块中的一个固定数字
如果哈希值(转换为十进制)低于此值,则它是有效块
分享
改进这个答案
跟随
5月7日0:28回答
哈密塔
9199青铜徽章
2
报告了洛杉矶的困难
我已经重新安装了我的电脑,丢失了BitcoinCore,还有私钥,我能取回我的钱包吗?
o几年前我重新安装了电脑,丢了BitcoinCore钱包,但我还有私钥。。有办法把钱包拿回来吗?
比特币核心
私钥
丢失的钱包
分享
改进这个问题
跟随
5小时前问的
阿里昂
1
新贡献者
添加评论
1个答案
0
对。你的私钥是你钱包的重要部分。请参见:https://developer.bitcoin.org/reference/rpc/importprivkey.html
分享
改进这个答案
跟随
5小时前回答的
铸币者
1
我们怎样才能从最低的哈希值中导出系统上所做的所有工作?
如果不是数学上的(我想证明可能相当严格),你能提供一个直观的解释为什么最低的哈希值接近系统上所做的工作总量吗?资料来源:https://youtu.be/zYzEmBlJ77s?t=4720
我的想法是:我们可以计算出找到比我们找到的哈希值低的哈希值的概率。从那里,我们可以找到一个分布的“中点”,即需要多少次尝试才能找到这样一个散列。所以它给了你一个关于分布的点。
谢谢您!
搞砸
分享
改进这个问题
跟随
5小时前问的
鲍勃
111青铜徽章
新贡献者
添加评论
1个答案
0
在比特币中使用的工作证明依赖于寻找低散列,换句话说,寻找以一定数量的零开始的散列。要找到二进制表示以30个零开始的散列,平均需要做2^30次尝试。当你找到这个散列并呈现它时,它就证明你确实做了同样多的工作。它是双向的,当你尝试2^30次时,你得到的最低哈希值将以大约30个零开始。
重要的是,这在任何规模上都有效。我能找到的最小的块散列从23个十六进制零或92个二进制零开始,这表明网络已经计算了大约2^92个散列。
如果您想更直观地看到它,请从另一个线程中查看这个答案,该线程显示了有史以来最低哈希中的零数是如何随时间而增加的。
分享
改进这个答案
跟随
4小时前回答的
伏伊特ěch标准
5122青铜徽章
比特币cli如何在不同节点上获得钱包余额?
我正在制作一个比特币移动应用程序,并试图从运行在单独节点上的守护进程中获取手机上钱包的余额。移动钱包连接到此节点,可以使用任何CLI命令,如getinfo getbalance等。
我应该将哪些CLI命令传递给守护进程,以便在我的移动应用程序上提供钱包余额?
比特币核心
比特币cli
平衡
守护进程
客户端
分享
改进这个问题
跟随
7月10日18点54分问
巴尼钱伯斯
33322银牌1212铜牌
添加评论
2个答案
5
你不能,因为比特币核心不存储这样的信息。比特币核心并不存储所有地址的所有信息,它只存储自己地址的信息以及验证交易所需的较低级别的信息(地址是较高级别的抽象)。没有命令允许您获取比特币核心钱包中没有的给定地址的余额或交易,因为此类信息不可用。
分享
改进这个答案
跟随
7月10日6:01答复
麻吉弟弟周立铭♦
53.4k44金徽章5656银徽章109109青铜徽章
添加评论
0
您可以从blockchair.com下载数据库转储https://gz.blockchair.com/bitcoin/addresses/ 数据库每天更新,并且包含网络上每个地址的satoshis余额。
分享
改进这个答案
跟随
4小时前回答的
1葛兰科
111青铜徽章
新贡献者
添加评论
使用tor连接比特币网络的安全方法是什么?
我记得的一个案例是,有人因为审查而无法将他的比特币完整节点连接到网络:https://twitter.com/TheBlueMatt/status/1161291626553270272
马特建议对无法连接的人使用TOR网桥(直接/vpn/TOR无网桥)
有什么更安全的方法连接到Tor网络以便您可以使用比特币?
完整节点
托尔
分享
改进这个问题
跟随
8月30日20:50问
普拉扬克
380711金徽章66银徽章1818铜徽章
添加评论
1个答案
0
Tor和比特币
最近我读了一篇博客文章,其中强调了使用tor bridges所涉及的问题,我将总结一些我觉得有趣的事情:
作者要求不要使用未上市或私人桥梁,这与马特在上述推文中所说的相反。
收集未列出的桥梁:http://hackerfactor.com/blog/index.php?/archives/892-Tor-0day-Finding-Bridges.html文件
公共网桥:你的Tor连接看起来像成千上万的其他用户。这在数量上提供了安全性。在最坏的情况下,对手可以看到你在使用Tor,但看不到你在Tor网络上做什么。此外,如果您断开连接,然后稍后从其他位置重新连接,则不会有任何东西将您的新连接链接到以前的连接;这降低了基于连接方法进行跟踪的风险。
使用Tor有时会给你带来风险:中国和印度
如果Tor的使用可以唯一地与您关联,那么您是可识别的。可识别意味着你可能被监视。你如何连接到Tor允许你被识别。在高风险地区,使用Tor会让你成为嫌疑犯,而未列出的桥梁会让你很容易被追踪。然而,如果你被逮捕,那么官方的指控很可能是关于一个与Tor无关的话题(规避审查、散布骚乱等)。
未上市和私人网桥用户也面临着最大的风险,因为他们位于禁止直接和公共网桥连接的许可区域
如果它们是阻塞的,那么它们显式地寻找Tor用户。
白俄罗斯互联网中断印度互联网关闭
未列出的桥集非常独特,而且非常独特
如果将Tor浏览器配置为使用网桥,则在启动期间,它会立即连接到所有配置的网桥。网络上的观察者将看到从当前真实IP地址到“非常独特且有效唯一”的网桥集的连接请求。这使得跟踪你的对手知道建立连接的IP地址就是你。结合历史观察,他们可以确定您第一次请求这组桥的时间、每次访问Tor时您在哪里以及您当前所在的位置。
在浏览器关闭之前,它不会断开与已建立的网桥连接的连接。一个敌手能准确地看到你所处的桥位和你所切换到的桥位。
如果您的所有网桥都匹配我收集的一组网桥,那么我就确切地知道您使用的是哪个torexit节点以及您使用它的时间范围。虽然你不是独一无二的,但你非常与众不同。这允许我将您的真实IP地址与来自已知Tor出口节点的流量相关联。
您的未列出(或专用)网桥集存储到磁盘。如果您使用的系统从不保存到磁盘,例如Tails,那么您就可以了。只是不要重复使用桥牌。但是如果你在桌面或移动设备上使用Tor浏览器,那么你就足够独特了。
对手将用户置于一个角落:使用具有唯一跟踪属性的Tor,或者不使用Tor(为什么他们不封锁所有未上市的桥梁?也许他们还没有润滑油。或者,追踪和识别内部持不同政见者可能比阻止他们的联系要好。他们可能故意阻止安全和匿名方式连接到Tor网络,以便将您清除。)
从实际的角度来看,Tor用户应该考虑发现和连接性之间的权衡。如果您所处的环境不允许直接连接,也不允许公共网桥,那么使用Tor网络可能不够安全。
这篇博文提到了Tor浏览器的使用,当你在机器上使用带有Tor代理的Bitcoin full node时,情况可能就不一样了。然而,如果你生活在一个有政府定期审查网络的地区,提到的很多事情都很重要。
资料来源:http://hackerfactor.com/blog/index.php?/archives/893-Tor-0day-Tracking-Bridge-Users.html
可以在Windows或Ubuntu中使用Tor browser配置网桥:
Tor浏览器桥
Tails OS和其他一些Linux发行版可能有不同的设置来配置网桥:https://tails.boum.org/doc/first_steps/welcome_screen/bridge_mode/index.en.html
如果您想使用带有torproxy的网桥,则必须在/etc/tor/torrc文件中添加一些内容,并且您可以将更改与torrc文件进行比较
我应该在比特币核心提取请求的描述中包括什么?
我应该在向比特币核心回购(Bitcoin Core repo)开放的拉取请求(pull request,PR)的描述中包括什么,以帮助审阅者快速高效地审阅和测试PR?
比特币核心开发
比特币核心评论
分享
改进这个问题
跟随
昨天编辑的
昨天问
迈克尔·福克森
597277银牌2222铜牌
添加评论
1个答案
1
目前在contribution.md中有一些(有限的)指导。
拉请求的标题应以拉请求影响的组件或区域作为前缀
e、 g.共识:为BIP-XXXX OP\U CHECKAWESOMESIG添加新的操作码
pull请求的主体应该包含对补丁做了什么的充分描述,更重要的是,为什么要这样做,以及理由和推理。您应该包括对任何讨论的引用(例如,其他问题或邮件列表讨论)。
很难准确地解释PR描述中应该包含什么,因为这在很大程度上取决于它是什么类型的pull请求(新请求的描述不应该包含任何@提及。)一个小文档PR只需要一两句话来解释更改和进行更改的理由。在另一个极端,一个共识的改变将需要一个长的,详细的描述,解释历史背景,链接到以前的讨论(例如BIPs,邮件列表),并说服评论者,社区对这个改变有共识。
然而,公关作者应该设法使公关审查尽可能容易。理想情况下,评审人员应该能够从PR描述中了解PR试图做什么以及为什么,而不必探索PR链以获得所需的上下文。另外,关于审阅者应该注意什么的指针(特别是如果有特定的安全考虑)或者关于审阅者如何测试PR的指导也可能被证明是有用的。如果它很容易被审查,那么它更有可能被审查。
fanquake在这个公关评论中提供了一些额外的指导:
PR描述(和commit消息)可能包括:正在更改什么,为什么它等同于以前的检查?什么时候变的?e、 qt5.12并不是我们构建Qt的唯一版本,我们支持的最低版本仍然是5.9.x。如果所构建的Qt版本与此更改无关,为什么会这样?链接到相关的上游变更(如适用)。
您如何验证/评审员应如何验证这是一个无操作?e、 g.“如果这是对配置检查的更改,那么在更改之前和之后生成的二进制文件应该是相同的。你可以用build for compare.py来证明这一点。”
添加更多的信息不仅意味着更多的贡献者可以,或者将更有可能进行审查,而且任何与安全相关的更改都应该比“依赖项头中发生的某些更改”更好地进行总结。
公关作者还应该考虑使公关容易测试新的/经验不足的审查,尤其是如果它不是一个复杂的公关,需要大量的上下文理解。
一个很好的例子,公关的描述,为经验较少的评论家是这一个从乔恩阿塔克。它精确地列出了审阅者需要做什么来验证功能是否如所描述的那样工作,包括审阅者可以运行的确切命令。
欢迎测试和审核!如何测试:
要运行full-live仪表板(在Linux上):$`watch–interval 1
要运行完整的仪表板:$./src/bitcoin cli-netinfo 4
要查看帮助:$./src/bitcoin cli-netinfo help
查看帮助摘要:$./src/bitcoin cli-help | grep-a4netinfo
这里有Jon Atack关于向比特币核心提交拉取请求的额外指导。
分享
改进这个答案
跟随