是我搞错了,gdb调试,main.cpp:598 这里不知道为什么会执行两次,第一次错的,第二次就对了。
把编译选项从 -O2 改为 -O0 就只执行一次,可能是优化的原因吧。
另外手续费的问题找到了,wallet.cpp:1279 行
- bool fAllowFree = false;//CTransaction::AllowFree(dPriority);
+ bool fAllowFree = true;//CTransaction::AllowFree(dPriority);
不知道这里为什么要改成不允许免费发送。。。。
感觉是有bug啊,它这里面用了一堆模板,我不知道怎么调试了。
src/wallet.cpp:1269
unsigned int nBytes = ::GetSerializeSize(*(CTransaction*)&wtxNew, SER_NETWORK, PROTOCOL_VERSION);
这里返回 nBytes 为225
src/wallet.cpp:1280
int64 nMinFee = wtxNew.GetMinFee(1, fAllowFree, GMF_SEND);
src/main.cpp:598
unsigned int nBytes = ::GetSerializeSize(*this, SER_NETWORK, PROTOCOL_VERSION);
这里返回的 nBytes 变成 222585704 了
14:57:28

listaccounts
怎么有个负数啊,你看这样有问题吗?我发0.1还是问我要0.01的手续费。
14:57:28

{
"" : -1.02000000,
"alt" : 52.69102260,
"alt2" : 0.10000000
}
填的已经是0.0001了,信息提示还是问我是否要支付0.01,如果选择否,它就放弃发送了。
如果选择不支付,它就放弃发送了。
你们用的哪个钱包呢?不是protoshares-qt吗?
是的,就是官方的版本。
你现在设置里头填写的是0么?填上0.0001试试。
在命令行下使用 listaccounts 命令,查看你的每个钱包地址上有多少余额,找到余额最小的那个,比如最小的上面有0.1PTS,那你发送0.1PTS试试。
我的第一个也是跟你一样是负数,貌似是已经花出去的钱。