我试图通过仅使用本地存储的区块链(通过比特币核心下载)来检查给定比特币地址的余额。类似于此(通过使用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;
}
我的要求是以与第一种方法相同的方式检查平衡,但通过查询存储在磁盘上的块。
实际上,我需要的可能只是这个问题的答案:
在你的问题中,第一次和第二次尝试完全不同。第一种方法是使用json rpc请求守护进程保持平衡(我敢说这是正确的方法——你不会从汽车发动机上取下顶部,自己上下推动活塞来实现向前运动,是吗?)第二个尝试打开守护进程的数据库本身并直接计算余额。
您不需要“网络”来查询本地主机,您只需要安装了TCP/IP支持的机器,所以无论采用何种方式,都可以使用第一种方法—使用将相关json rpc数据写入http请求的库,或者自己生成相关http请求。。
BitcoinLib可能会被维护,也可能不会被维护(我不知道),但这并不会使它查询本地守护进程的能力失效;据我所知,GetBalance还没有被删除或重构,我将BitcoinLib与最新的bitcoind一起用于包括GetBalance在内的各种操作
主要内容:比特币现金如何存在?,什么是比特币硬叉?比特币现金是互联网上的点对点电子现金。它完全分散,没有中央银行,也不需要任何可信赖的第三方运营。 比特币现金是一种从比特币网络的硬分叉开发的加密货币。它从2017年中期开始存在。比特币现金与比特币不同。它是比特币核心软件的升级版本。它使用起来更快,更便宜,更可靠。它将比特币的块大小从1MB增加到8MB,并允许每天处理大约200万个交易。 比特币现金如何存在? 比特币区块链是一个不断更新的分类账,比
本文向大家介绍比特币区块链中使用哪种加密算法?相关面试题,主要包含被问及比特币区块链中使用哪种加密算法?时的应答技巧和注意事项,需要的朋友参考一下 回答:不同的区块链使用不同的密码算法。比特币区块链使用SHA256哈希算法。
加密货币是一种数字资产,可用于在各方之间交换价值。它使用强大的加密技术来保护金融交易并控制该货币的新单位的创建并验证资产的转移,它不是物理上存在的。 与美元,日元或人民币等法定货币等政府货币不同,所有这些货币均由政府印制。因此,存在一个集中的机构,它创造了数千或数百万或更多的货币。使用像比特币这样的加密货币,这些实际上是由使加密货币起作用的相同数学公式创建的。因此,加密货币使用分散控制,其通过作为
比特币是人类历史上第一种数字货币。 什么是数字货币?一句话概括,数字货币是基于数学加密原理构建的不可伪造的货币系统,而比特币是第一个基于数学加密原理构建的分布式数字货币系统。 比特币和区块链有什么关系?一句话概括,比特币使用区块链技术实现了数字货币的可信支付。 比特币的历史可以追溯到2008年10月,一个名叫中本聪的神秘人物在一个密码学朋克论坛上发表了一篇比特币:一种点对点的电子现金系统的文章,这
我试图了解比特币区块破解尝试是如何工作的。 我看到nonce是一个32位的数字,所以40亿值来尝试。此外,我看到了一个著名的矿池,手头有500 Ph/s的电力。我发现有一个特定的块在40分钟内解决了。 也就是说,(40x3600)x(500x10^15)=7.2x10^22散列,在该池上计算,以解一个块。 这意味着在这40分钟内,nonce已经“循环”了167630亿次。 所以我想知道,在每一个非
8.1 P2P网络架构 比特币采用了基于互联网(Internet)的点对点(peer-to-peer)网络架构。点对点,或者叫P2P是指位于同一网络中的每台计算机都彼此平等,身份对等,各个节点共同提供网络服务,不存在任何“特殊”节点。网络节点以“扁平”的拓扑结构相互连通。 网络中不存在任何服务器端、中央化的服务、以及层级结构。点对点网络中的节点同时提供和消费服务,互惠互利。点对点网络也因此具有可靠