- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试通过使用ONLY 本地存储的区 block 链(通过 Bitcoin Core 下载)来检查给定比特币地址的余额。与此类似的东西(通过使用 NBitCoin 和/或 QBitNinja),但不需要访问网络:
private static readonly QBitNinjaClient client = new QBitNinjaClient(Network.Main);
public decimal CheckBalance(BitcoinPubKeyAddress address)
{
var balanceModel = client.GetBalance(address, true).Result;
decimal balance = 0;
if (balanceModel.Operations.Count > 0)
{
var unspentCoins = new List<Coin>();
foreach (var operation in balanceModel.Operations)
unspentCoins.AddRange(operation.ReceivedCoins.Select(coin => coin as Coin));
balance = unspentCoins.Sum(x => x.Amount.ToDecimal(MoneyUnit.BTC));
}
return balance;
}
上面的例子需要访问网络。我需要离线做同样的事情。我想到了这样的东西,但显然它不起作用:
public decimal CheckBalanceLocal(BitcoinPubKeyAddress address)
{
var node = Node.ConnectToLocal(Network.Main);
node.VersionHandshake();
var chain = node.GetChain();
var store = new BlockStore(@"F:\Program Files\Bitcoin\Cache\blocks", Network.Main);
var index = new IndexedBlockStore(new InMemoryNoSqlRepository(), store);
index.ReIndex();
var headers = chain.ToEnumerable(false).ToArray();
var balance = (
from header in headers
select index.Get(header.HashBlock)
into block
from tx in block.Transactions
from txout in tx.Outputs
where txout.ScriptPubKey.GetDestinationAddress(Network.Main) == address
select txout.Value.ToDecimal(MoneyUnit.BTC)).Sum();
return balance;
}
InMemoryNoSqlRepository
存储在一个文件中,以防止使用 ReIndex()
这会减慢一切我的要求是用与第一种方法相同的方式检查余额,但通过查询存储在我的磁盘上的 block 。
实际上我需要的可能只是 this question 的答案:
最佳答案
您问题中的第一次和第二次尝试完全不同。第一个使用 json rpc 向守护进程询问平衡(我敢说这是正确的方法 - 你不要从你的汽车引擎上取下顶部并自己上下插入活塞以实现向前运动,做你?)第二次尝试打开守护程序本身的数据库并直接计算余额。
您不需要“需要网络”来查询本地主机,您只需要一台安装了 TCP/IP 支持的机器,所以只需通过任何方式使用第一种方法 - 通过使用编写相关 json 的库-rpc数据放入http请求,或者自己形成相关的http请求..
BitcoinLib 可能会维护也可能不会维护(我不知道),但这并不会使它查询本地守护进程的能力失效;据我所知,GetBalance 尚未被删除或重构,我将 BitcoinLib 与最新的 bitcoind 一起用于各种操作,包括 GetBalance
关于c# - 使用 C# .NET 查询本地比特币区 block 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027747/
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 9 年前。 Improve
根据其他问题的列表,要构建我需要的原始交易: listunspent - 您可以获得所有未花费交易的列表 您可以决定要花哪些钱 您使用createrawtransaction来创建您的输入/输出,tx
我想查看不在我钱包中的btc地址余额。似乎像 blockchainexplorer 这样的网站会做这类事情。他们还提供 API,但我遇到了他们的 API 使用限制。所以我下载了完整的区 block 链
我的设置:在 Mongoose 模块的帮助下,我们处理所有 Mongo 数据库操作。对于每个新用户,都会生成一个钱包并将其存储在 Mongo 集合中。 方法:如果我们使用User.find({}, f
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我正在尝试建立一个以比特币为中心的网站,并且由于主机的限制,我需要能够执行以下操作,而无需在任何服务器上运行比特币守护程序: 创建一个新的比特币地址(getnewaddress($account))
我目前正在开发一个比特币应用程序,它涉及运行一个完整的比特币节点。 当我测试我的源代码时,我决定使用比特币注册测试模式。 这是我如何启动我的比特币节点: ./bitcoind -regtest -rp
私钥是随机生成的,不与任何钱包关联。 我想为比特币准备公钥生成的自定义(简单)实现。然而,经过几次尝试,我的结果是不正确的。我将它们与在线生成器进行了比较。我发现我使用了除法而不是 modinv。不幸
我是比特币和区 block 链的新手,希望您能帮助我解决一些问题。所以我启动了一个“regtest”网络并使用 生成了 101 个 block bitcoin-cli -regtest generat
当我在我的 bitcoind 服务器上调用 getwork 时,我得到以下信息: ./bitcoind getwork { "midstate" : "695d56ae173bbd0fd5f5
我正在编写一个 JavaScript 函数来返回当前的 BTC/USD 汇率。我做了一些研究,但我只想要一些简单的东西。它不会在服务器端用于计算值(明显的安全隐患),而只是为了方便我的用户。我有 2
我正在使用 Bitrise 生成构建并将其上传到 AppStore。当我在设备上运行应用程序或生成构建并通过 Xcode 上传到 AppStore 时没有出现任何错误,但是当我尝试通过 Bitrise
我目前正在我的 Windows 7 上创建“比特币”。 我已经完成了所有必要的步骤,现在我要进行最后一部分,以获取 .exe 文件。 这是我在 QT 4.8.5 命令提示符中输入的命令 qmake U
以下链接提供有关 BTC 地址的 JSON 数据 -> https://blockchain.info/address/1GA9RVZHuEE8zm4ooMTiqLicfnvymhzRVm?forma
我是一名优秀的程序员,十分优秀!