分类
Uncategorized

比特币核心:单元测试失败:system\u tests.cpp:第48行BOOST\u AUTO\u Test(run\u命令)

我克隆了比特币的核心并进行了构建。但是,我在system\u tests.cpp的第48行BOOST\u AUTO\u Test(run\u命令)中遇到单元测试失败。
首先,我的环境:
硬件:Intel i7-8550U@1.80GHz 2001 Mhz,4核,8个逻辑处理器,x64。
操作系统:Windows 10主页
工具链:visualstudio2019v142,配置:Release,平台x64。
生成完成时没有出现错误,但我确实收到以下消息:
C:\Users\name\source\repos\bitcoin first\build\u msvc\test\u bitcoin\test\u bitcoin.vcxproj:警告:VC项目不支持项目项中的通配符,可能会导致Visual Studio IDE中的意外行为、不稳定和性能下降。请参阅https://aka.ms/cpp/projectwildcards 支持的选项。
运行test\u bitcoin时,除了源系统的run\u command\u tests.cpp第48行之外,所有测试都通过。我得到以下错误:
struct boost::process::process\错误:CreateProcess失败:系统找不到指定的文件。
VS测试资源管理器还提供:
未知位置(0):“run\u command”中出现异常:struct boost::process::process\u错误:CreateProcess失败:系统找不到指定的文件。系统测试.cpp(52):最后一个检查点:
system_tests.cpp中的相关代码(请忽略行号后的任何空格语法问题)。我手动添加了它们,它们没有问题):
48 BOOST\u AUTO\u TEST\u CASE(运行命令)
49 {
50    {
51 const UniValue result=RunCommandParseJSON(“”);
52 BOOST_CHECK(result.isNull());
53    }
54    {
55#ifdef WIN32
56//Windows需要单引号以防止从JSON中转义双引号。。。
57//const UniValue result=RunCommandParseJSON(“cmd.exe/c echo'{\“success\”:true}’);
58 const UniValue result=RunCommandParseJSON(“echo'{\“success\”:true}’”);
59
60#其他
61        // … 但是,如果使用Linux和macOS,它们只会引用一句话
62 const UniValue result=RunCommandParseJSON(“echo\”{\“success\”:true}\“”);
63#结束
64 BOOST_CHECK(result.isObject());
65 const UniValue&success=查找值(结果,“success”);
66增压检查(!success.isNull());
67 BOOST\u CHECK\u EQUAL(success.getBool(),true);
68    }
69    {
70//Boost处理无效命令
71 BOOST_CHECK_异常(RunCommandParseJSON(“无效的_命令”),BOOST::process::process_error,checkMessage);//命令失败
72    }
73    {
74//返回非零退出码,没有输出到stderr
75 BOOST\u CHECK\u异常(RunCommandParseJSON(“false”),std::runtime\u error,checkMessageFalse);
76    }
77    {
78//返回非零退出代码,并显示stderr的错误消息
79 BOOST\u CHECK\u异常(RunCommandParseJSON(“ls nosuchfile”),std::runtime\u error,checkMessageStdErr);
80    }
81    {
82 BOOST_REQUIRE_THROW(RunCommandParseJSON(“echo\”{\”),std::runtime_error);//无法分析JSON
83    }
84//Test std::in,Windows除外
85#如果NDEF WIN32
86    {
87 const UniValue result=RunCommandParseJSON(“cat”,“{\”success\“:true}”);
88 BOOST_CHECK(result.isObject());
89 const UniValue&success=查找值(结果,“success”);
90Ω检查(!success.isNull());
91 BOOST\u CHECK\u EQUAL(success.getBool(),true);
92    }
93#结束
94 }
95#endif//有ŠBOOSTŠ进程
58号线坏了。基于此https://stackoverflow.com/questions/47028660/boost-createprocess-failed,我删除了第58行并添加了以下第57行:
57 const UniValue result=RunCommandParseJSON(“cmd.exe/c echo'{\“success\”:true}’);
再次运行system_tests.cpp可以让我通过CreateProcess失败,但是在system_tests.cpp第48行run_command()中会产生以下失败:
类std::运行时错误:无法解析JSON:“{”success“:true}”。
VS测试资源管理器还声明:
未知位置(0):“run\u command”中出现异常:class std::runtime\u错误:无法分析JSON:“{”success“:true}”system\u tests.cpp(52):最后一个检查点:
我很难相信这个测试是错误的——我没有发现这个失败的原因。相反,我怀疑我没有正确设置某些开关、选项或配置。
任何意见或帮助将不胜感激。
比特币核心

但以下几点会起作用。
RunCommandParseJSON(“cmd.exe”,“/c echo'{\”success\“:true}’”);
分享
改进这个答案
跟随
4月4日20:42回答
潘昆
65133银牌1515铜牌
谢谢你的建议。我运行了它,得到了一个类似的运行时错误:class std::runtime\u错误:无法解析JSON:microsoftwindows[Version 10.0.19041.867]。在这里,它看起来像是ehco命令生成了“microsoftwindows[Version 10.0.19041.867]”。而在上一个运行时错误中,它生成了desire字符串{“success”:true}TKChattoraj 4月4日21:29
添加评论
0
这是我的工作。我仍然很难相信测试代码需要修改,但这就是我所做的,现在测试通过了。
在上面,我修改了RunCommandParseJSON()的调用,以提供命令窗口的显式调用。显然,这是Windows所需要的。线路变成:
57 const UniValue result=RunCommandParseJSON(“cmd.exe/c echo'{\“success\”:true}’);
RunCommandParseJSON()是从/src/util/system.cpp调用的。它接受一个表示要启动的子进程的字符串输入。在这种情况下,启动命令窗口并回显字符串{“success”:true}。
这产生了运行时错误:
class std::runtime\错误:无法解析JSON:“{”success“:true}”
注意:echo命令的字符串输出以单引号开始和结束。正如在代码的原始注释中所指出的,需要单引号来避免Windows从JSON中转义双引号。
RunCommandParseJSON()从/src/UniValue/lib/UniValue\u read.cpp调用UniValue::read()。UniValue::read(),似乎不适合字符串输入以单引号开头和结尾的情况。
因此,我将第59行从:
while(raw<end&amp;&amp;(json\u isspace(*raw))//跳过空白
收件人:
while(raw<end&amp;&amp;(json|isspace(*raw)| |(*raw==’\”)//跳过空格和单引号以开始和结束json字符串
这使得
const UniValue result=RunCommandParseJSON(“cmd.exe/c echo'{\“success\”:true}’);
运行命令测试成功的方面。
尽管如此,在进一步测试抛出正确错误时,run\ u命令仍出现错误:
没有输出到stderr
发送给stderr的错误消息
无法分析JSON错误
无输出到stderr case测试何时可以启动命令窗口进程,但给定的命令无效。此测试已修改为允许正确调用窗口的命令窗口,更改为:
BOOST\u CHECK\u异常(RunCommandParseJSON(“false”),std::runtime\u error,checkMessageFalse);
收件人:
BOOST\u CHECK\u异常(RunCommandParseJSON(“cmd.exe/c false”),std::runtime\u error,checkMessageFalse);
这产生了所需的错误,但不是测试所要求的确切错误消息。我把支票改成:
const std::字符串what(例如what());增强检查(what.find(“returned 1”)!=std::string::npos);
发送给Stderr的错误消息测试是否能够启动命令窗口进程,接收有效的命令,但输入无效。更改为:
BOOST\u CHECK\u异常(RunCommandParseJSON(“ls nosuchfile”),std::runtime\u error,checkMessageStdErr);
收件人:
BOOST\u CHECK\u异常(RunCommandParseJSON(“cmd.exe/c dir nosuchfile”),std::runtime\u error,checkMessageStdErr);
复制我所看到的窗口版本的测试。
“无法解析JSON”错误测试启动命令窗口进程、发送包含有效输入的有效命令的能力,但无法解析字符串(此错误实际上是在早期遇到的。)更改为:
BOOST_REQUIRE_THROW(RunCommandParseJSON(“cmd.exe/c echo'{‘”),std::runtime_error);//无法分析JSON
通过这些更改,所有单元测试现在都通过了。
我看不出这些变化改变了测试的性质。如果有人注意到了,我肯定会很感激别人告诉我。
分享

时光素材-香车美女  (738)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

尝试安装filebazaar时遇到ELIFECYCLE错误

在Ubuntu18.04上尝试安装filebazaar时,画布模块出现错误。。。有熟悉这个问题的人吗?我已经研究了node canvas的github问题(比如我在这里留言的问题),但是到目前为止没有一个解决方案适合我。
下面是我运行的命令:
$sudo npm安装-g filebazaar
下面是错误输出:
$sudo npm安装-gcanvas@1.6.13
> canvas@1.6.13安装/usr/local/lib/node\u modules/canvas
>节点gyp重建
吉普,呃!配置错误
吉普,呃!堆栈错误:EACCES:权限被拒绝,mkdir’/usr/local/lib/node\u modules/canvas/build’
吉普,呃!系统Linux 4.15.0-55-通用
吉普,呃!命令“/usr/local/bin/node”“/usr/local/lib/node\u modules/npm/node\u modules/node gyp/bin/node gyp.js”“重建”
吉普,呃!cwd/usr/local/lib/node\u模块/canvas
吉普,呃!节点-v12.5.0
吉普,呃!节点gyp-v3.8.0
吉普,呃!不好
npm错误!代码失效循环
npm错误!错误1
npm错误!canvas@1.6.13安装:`node gyp rebuild`
npm错误!退出状态1
npm错误!
npm错误!失败于canvas@1.6.13安装脚本。
npm错误!这可能不是npm的问题。上面可能有额外的日志输出。
npm错误!此运行的完整日志可在以下位置找到:
npm错误/home/chris/.npm/\u logs/2019-09-17T20\u 39\u 13\u 514Z-debug.log
感谢您的帮助:)
雷电网
编译
分享
改进这个问题
跟随
9月18日22:29编辑
萨克斯霍夫
223155金徽章1313银徽章2727铜徽章
19年9月17日21:02问
克里斯·吉达
1111青铜徽章
添加评论
3个答案
0
可能目录没有正确的权限,请尝试使用sudo chmod 777命令
如果仍然不起作用,请在安装sudo npm install-g——unsafe perm之前尝试这些标志
或者sudo node gyp rebuild-g——不安全的烫发
然后再试一次
分享
改进这个答案
跟随
编辑时间:9月18日8:10
19年9月18日4:29答复
萨克斯霍夫
223155金徽章1313银徽章2727铜徽章
可能目录没有正确的权限,请尝试以下命令sudo chmod 777:您指的是哪个目录?–Chris Guida 19年9月18日20:29
/usr/local/lib/node\u modules/canvas请参阅this thread also stackoverflow.com/questions/42308879/npm-err-code-elifecycle–萨克斯霍夫19年9月18日20:35
你说得对,我没有很多目录的权限,包括/usr/local/lib/node\u模块Chris Guida 10月8日19:01
添加评论
0
我发现了问题:有一些由root拥有的目录需要由我的用户拥有。
我让自己成为一些npm相关文件夹的所有者,例如:
sudo chown-R`whoami`/usr/local/lib/node\u模块
……这似乎解决了问题。
分享
改进这个答案
跟随
答复时间:10月8日19:03
克里斯·吉达
1111青铜徽章
添加评论
0
配置npm将全局包安装到您的用户目录中,可以消除这些烦人的权限问题。
请参见:https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally#manually-更改npms默认目录
分享
改进这个答案
跟随

时光素材-香车美女  (737)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

比特币地址能超过35吗?

比特币地址能超过35吗?
地址越长是否表示碰撞的可能性越低和/或安全性越高?
比特币
地址
地址生成
分享
改进这个问题
跟随
6月26日下午14:24问
呆子
5777青铜徽章
添加评论
3个答案
1.
根据比特币维基:
比特币地址,简称地址,是由26-35个字母数字字符组成的标识符
以及:
有些比特币地址可以短于34个字符(最多26个字符),但仍然有效。相当一部分比特币地址只有33个字符,有些地址甚至更短。每个比特币地址代表一个数字。这些较短的地址之所以有效,仅仅是因为它们代表恰好以零开头的数字,当省略零时,编码的地址就会变短。
所以不,长度并不意味着更高/更低的安全性。
分享
改进这个答案
跟随
17年6月26日14:42回答
sr镀锌
264411金徽章99银徽章3434铜徽章
添加评论
0
比特币地址只是事务输出脚本的可读表示。有些脚本没有标准的表示/地址,但我们可以为它们创建自己的“地址”。例如,对于任何脚本,我们都可以通过以十六进制形式对脚本进行编码来创建一个“地址”。
这些“地址”可以短于26个符号或长于35个符号
分享
改进这个答案
跟随
6月26日17点12分回答
阿马克林
632111金徽章1616银徽章3030铜徽章
添加评论
0
怎么样?
https://www.blockchain.com/btc-testnet/address/tb1qcqqpm3y7fzjcmlgu3faun5d543k5yy6jm0lpx3
主网比特币地址的最小和最大长度是多少?
分享
改进这个答案
跟随
9小时前编辑的
19小时前回答的
Алексей Неудачин
10111青铜徽章

时光素材-香车美女  (736)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

可能的签名人数与音乐

对于multisig,一个门限签名方案最多可以使用20个签名(在m-of-n multisig地址中m和n的极限是多少?)。
据我所知,MuSig不应该有硬编码限制,因为对于区块链,每个方案总是看起来像一个单一的签名(来自一个单一的密钥对),即使实际上那些是多个签名,只是聚合成一个。
是否还有其他限制可以与MuSig一起使用的签名数量的东西,或者这个可能的签名数量本质上是无限的?
多重签名
施诺尔签名
沉思
密钥聚合
分享
改进这个问题
跟随
8小时前编辑的
真实的还是随机的
34411银徽章55铜徽章
6月11日7点47分问
达利特塞里奥
15733青铜徽章
添加评论
1个答案
5.
具有MuSig(和MuSig2)的签名者的数量实际上是无限的。例如,在我的笔记本电脑上创建一个拥有100万签名者的MuSig签名大约需要130秒(参见https://github.com/jonasnick/musig-benchmark).
但是,MuSig(2)没有与OP\u CHECKMULTISIG相同的功能。MuSig只支持m=n,这是比特币空间之外“多重签名”的定义。opu CHECKMULTISIG支持m<=n,因此更准确地称为“阈值签名”。有一个名为FROST的方案,它允许创建看起来像单个Schnorr签名的阈值签名,并正在进行的工作来实现它,以便在比特币中使用。
请注意,tapscript禁用了OP\u CHECKMULTISIG,而是引入了OP\u CHECKSIGADD,它没有20签名限制。
分享
改进这个答案
跟随

时光素材-香车美女  (735)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

是否可以通过将硬件钱包插入USB端口直接将BTC发送到硬件钱包(如Trezor)?

这个问题是关于硬件钱包(比如Trezor)是如何独立的。或者换言之,它还依赖于哪些其他组件(如果有的话)。
因此,这是关于当Alice想将比特币发送到Bobs钱包地址时,比特币在Bobs硬件钱包中结束所需的其他组件。
例如,硬件钱包是否依赖于连接到
在PC上运行并连接到internet的带有钱包地址的软件,或
一些web应用程序,或者可能是BTC生态系统的一部分,承载钱包地址
或者只需将硬件钱包插入PC上的USB端口,就可以将比特币直接发送到硬件钱包(如Trezor)?
硬件钱包
分享
改进这个问题
跟随
18小时前问的
编码器
11333青铜徽章
添加评论
2个答案
1.
像Trezor这样的硬件钱包只是一个聪明的私钥存储库,可以让它做一些固件定义的事情(比如签署交易)。执行这些操作的指令通过USB从任何运行能够产生这些指令的软件的设备传送到it。通常,这将是一台PC或一部手机,运行的是由制造商或开源社区创建的钱包软件。
我将试着概述一下,当Alice和Bob都使用硬件钱包时,他们到底需要什么来发送比特币给Bob:
鲍勃需要一个比特币地址给爱丽丝。他使用他的钱包软件来指示他的硬件钱包从它的扩展公钥生成一个新地址。这一步可以在没有互联网连接的情况下完成,但是如果没有连接到比特币网络,钱包软件将不知道哪些地址已经被使用,并可能最终重用一个地址。Bob在硬件钱包显示屏上查看生成的地址(而不是在他的PC上,因为它可能会被感染而显示攻击者的地址),并将其提供给Alice。
Alice使用她的钱包软件创建一个交易,输入Bob的地址、发送金额和发送费用(可能更多,如RBF、锁定时间…)。她需要连接到比特币网络才能知道她的UTXOs。创建后,她将未签名的事务发送到硬件钱包进行签名。硬件钱包将在其显示屏上显示交易的详细信息,并要求她确认。签名后的交易被发送回钱包软件,现在或将来的任何时候都可以广播到比特币网络。
热释光;医生:你需要一台运行钱包软件的电脑或手机来使用你的硬件钱包。
分享
改进这个答案
跟随
16小时前回答的
沃伊奇·斯特纳德
56411银牌1515铜牌
谢谢你的回答。如果说资金只在区块链中记录为现在属于Bob地址(即其HW钱包提供的地址)的意义上转移,是否正确?鲍勃的钱包是否具备一些功能,可以让鲍勃将这些资金发放出去,并将其寄往其他地方coderworks 12小时前
@编码器。1) 只有在区块链上进行验证后,才能进行正确的、转移和记录资金交易。2) 如果鲍勃想花这笔钱,那么他必须提供一个与他的地址相关的签名,只有他的私钥才能提供stackaccount 11小时前
添加评论

当Alice想将比特币发送到Bobs钱包地址时,比特币在Bobs硬件钱包中结束还需要哪些组件。
没有。
因为接收钱包在交易过程中不起任何作用(除了过去的某段时间提供接收地址,你可以用二维码等形式与爱丽丝通信)。一个接收钱包可以离线,无电源,仍然收到钱,因为钱包不包含钱-钱只是区块链中的一个记录,每个人都有一个副本(或访问副本)。
另一方面,花钱需要能够与硬件钱包协同工作的软件来创建一个交易,并让一些同行意识到它。正如WillO所指出的,这个软件可以是安装在个人计算机上的软件,也可以是使用普通web浏览器访问的基于web的应用程序。
相关:
Trezor硬件钱包是否依赖于wallet.Trezor.io?
分享
改进这个答案
跟随
6小时前编辑的
16小时前回答的
红砂砖
12.5k22金徽章1717银徽章3939铜徽章
OP可能会发现,即使是花钱,你实际上也不需要自己运行软件。您可以将您的Trezor插入计算机的USB端口,然后连接到Trezor的网站www.Trezor.io,这就是您所需要的一切威洛12小时前
@威洛:说得好,答案也相应更新了,谢谢红砖6小时前
添加评论
你的答案

时光素材-香车美女  (734)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

用美元交易加密货币

当我在Binance这样的交易所买了加密货币后,如果它下跌了,我可以卖美元。基本上,如果我从一种货币中获利,我能用它做什么来保护它?
交易
安全
分享
改进这个问题
跟随
2月14日17:24被问到
博扎拉马
1.
添加评论
3个答案
1.
是的,套现是一种利润保护,但也是一种止损收益。有关如何销售或联系他们的支持团队的说明,请按照《exchange用户指南》进行操作,具体操作方式与exchange有关。
分享
改进这个答案
跟随
2月14日17:56答复
威尔泰克
297622金徽章1010银徽章4040铜徽章
添加评论
0
是的,威尔泰克是对的。如果你使用的交易所允许,你可以提取你的资产。顺便说一句,不仅仅是Binance提供了这样的选择。也可以用Cex套现。看看吧。
分享
改进这个答案
跟随
7月31日8点16分回复
瑞奇币
911青铜徽章
添加评论
-3
只是为了安全起见,并防止情况时,你可能会失去一点美元美元对美元,或美元对BTC之一,你只需要使用良好的交换。顺便说一句,你可以尝试贸易与BTC美元对在这里https://whitebit.com/ru/trade-pro/BTC_USDT
分享
改进这个答案
跟随
4小时前回答的
佛罗伦萨
1.
新贡献者
添加评论

时光素材-香车美女  (733)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

为什么交易钉住更多的是关注承诺层面而不是HTLC层面的闪电?

n本周关于L2 onchain support的IRC研讨会t-bast和ariard一致认为,事务固定更多的是在承诺级别(例如延迟子CLTV事务的父级)而不是HTLC级别。
我现在还不清楚这是为什么或者是如何运作的。我的印象是,承诺交易的确认对时间不敏感。有两个时间敏感的问题;未及时收到HTLC的原始图像,并在对方广播过期状态的情况下确认您的司法交易。我错过了什么?
安全
雷电网
分享
改进这个问题
跟随
6月17日11:53问
迈克尔·福克森
675988银牌2323铜牌
添加评论
1个答案
2.
正如我在2020年6月的Lightning dev邮件列表文章“Pinning:The Good,The Bad,The ught”中所解释的,在承诺级别的Pinning涉及到一个Lightning路由集线器的情况,无法确认在上游链路上HTLC成功。这是第三个案件的时间敏感的问题,超越了接收前图像和得到你的正义确认。
攻击场景是这样的。马利西亚和马洛里向鲍勃开通了两条通道,一个诚实的路由中心。Malicia为1 BTC HTLC绘制了一条通过Bob到Mallory的支付路径。此支付路径强制执行Bob的cltvëU delta策略(共40个区块)。假设在设置阶段链尖为N,HTLC timelock在第一个跃点的N+60处过期,在第二个跃点的N+40处过期。一旦支付路径被锁定,Mallory将广播她的承诺交易和HTLC成功交易,Bob将在onchain中发现HTLC前映像。
同时,Malicia在网络mempools底部feerate组之间广播一个低feerate承诺事务和一个低feerate、高绝对费用CPFP事务。此恶意CPFP交易的绝对费用必须高于在Malicia-Bob链接的最新有效状态下Bob的诚实承诺交易。根据BIP125规则3,此较高费用的CPFP将阻止将Malicia低价承诺交易替换为Bob的诚实承诺交易。由于Bob不知道Malicia的承诺交易中的哪一个在网络上传播,他将无法在自己的锚槽上进行CPFP(请记住,根据协议规则,LN交易对手可能拥有两个有效的承诺交易,从收到已签署的承诺到回复撤销和确认)。
如果Malicia的承诺交易在N+60之前未确认,则此锁定攻击是成功的。在该高度,她可以用更高的费率方案替换她的CPFP,以确认承诺,并用她的HTLC超时交易花费提供的HTLC。鲍勃已经向马洛里支付了一笔HTLC,却无法从马利西亚那里收回同样的HTLC。
承诺级别的钉扎比HTLC级别的钉扎更令人担忧,而HTLC级别的钉扎是通过升级到锚通道类型来解决的。实际上,LN节点现在不能单方面地对承诺事务收费,例如在mempool接受评估期间提高其收费率,以排除任何恶意的远程承诺。
分享
改进这个答案
跟随
4小时前编辑的
迈克尔·福克森
675988银牌2323铜牌

时光素材-香车美女  (732)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

芬香:区块链架构之美 从比特币、以太坊、超级账本看区块链架构设计

【京东】区块链架构之美 从比特币、以太坊、超级账本看区块链架构设计书籍 电子工业出版社
————————————
商城价:62.30元
入口https://u.jd.com/63Ti3Jq

f57232b0b88e5976b3e40fcd4284713

分类
Uncategorized

芬香:正版区块链:比特币底层技术如何改变货币、商业和世界理论与方法白皮书资料课程数字货币虚拟币投资笔

【京东】【社】正版区块链:比特币底层技术如何改变货币、商业和世界理论与方法白皮书资料课程数字货币虚拟币投资笔
————————————
商城价:105.00元
入口https://u.jd.com/6rTilcM

38810d999f2f381028dd78bc81ee4ba

分类
Uncategorized

芬香:区块链与人工智能数字经济新时代+数字货币比特币数据报告与操作指南+2.0时代+数据化风控+消费信贷

【京东旗舰店】区块链与人工智能数字经济新时代+数字货币比特币数据报告与操作指南+2.0时代+数据化风控+消费信贷
————————————
商城价:425.00元
入口https://u.jd.com/6sTIMad

c339cc36bdc674c54774bbedf3f5984