我试图通过仅使用本地存储的区块链(通过比特币核心下载)来检查给定比特币地址的余额.与此类似的东西(通过使用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;
}
Run Code Online (Sandbox Code Playgroud)
上面的示例需要访问网络.我需要离线做同样的事情.我想出了类似的东西,但显然它不起作用:
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 …Run Code Online (Sandbox Code Playgroud) 我想做自己的比特币图表.
您是否知道检索比特币历史价格数据的可靠方法?有没有办法使用REST检索它?我看到Bitfloor,它支持REST,但它没有返回任何有用的值,它有一个"内部服务器错误".
我也看到了Bitcoincharts,但我认为它仅限于2000个数据值.
你会建议我使用任何框架或系统吗?
我正在尝试根据这些规范提出一个匹配比特币地址的正则表达式:
比特币地址或简称地址是27-34个字母数字字符的标识符,从数字1或3开始[...]
我认为它看起来像这样
/^[13][a-zA-Z0-9]{27,34}/
Run Code Online (Sandbox Code Playgroud)
事实是,我对正则表达式并不擅长,而且我没有找到一个单一的来源来确认这不会产生假阴性.
我在网上发现了一个^1[1-9A-Za-z][^OIl]{20,40},但我甚至不知道这个[^OIl]部分是什么意思,它似乎与3比特币地址不匹配.
当我在bitcoind服务器上调用getwork时,我得到以下内容:
./bitcoind getwork
{
"midstate" : "695d56ae173bbd0fd5f51d8f7753438b940b7cdd61eb62039036acd1af5e51e3",
"data" : "000000013d9dcbbc2d120137c5b1cb1da96bd45b249fd1014ae2c2b400001511000000009726fba001940ebb5c04adc4450bdc0c20b50db44951d9ca22fc5e75d51d501f4deec2711a1d932f00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"target" : "00000000000000000000000000000000000000000000002f931d000000000000"
}
Run Code Online (Sandbox Code Playgroud)
该协议似乎没有记录.如何根据此数据计算哈希值.我认为这些数据是小端的.那么第一步是将所有内容转换为大端?完成后,我计算数据的sha256.数据可以分为两个每个64字节的块.第一个卡盘的散列由中间状态给出,因此不必计算.
因此,我必须使用中间状态作为初始哈希值来使用sha256对chunck#2进行散列.一旦完成,我最终得到一个块2的哈希值,它是32字节.我再次计算此块的哈希值以获得最终哈希值.
然后,我将所有内容转换为小端并提交作品吗?
hash1用于什么?
这个问题可以进入比特币论坛,但我试图从编程的角度来理解.
存在用于分布式存储的技术,例如分布式哈希表(例如kademlia或类似的).比特币区块链与分布式哈希表有何不同?或者是支持比特币区块链的分布式哈希表技术?或者为什么比特币区块链被称为与DHT相比这样的突破?
我最接近的是来自blockchain.info
https://blockchain.info/qr?data=1Agb153xWsbqS9vt8gP4vBFKHkAchLMdSX&size=200
我找不到其他参数的文档,比如'amount'了吗?
我确实找到了一个名为http://www.btcfrog.com/qr/的服务,该服务生成一个金额的QR码.我以前从未听说过他们(相信?).鉴于此代码将显示在网站上,我不确定要为"纠错级别"或"代码平方大小"放置什么.
我有一个表单的字节数组[4,-101,122,-41,-30,23,-28,3,..],我想以6d69f597b217fa333246c2c8
我在函数下面使用的形式转换
function toHexString(bytes) {
return bytes.map(function(byte) {
return (byte & 0xFF).toString(16)
}).join('')
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个相同形式的字符串,但我怀疑它不是一个有效的转换,因为十六进制字符串比预期短一点.我认为翻译应该得到"0a10a6dc".请告诉我,如果我错了或这是一个正确的转换,但也许我没有使用正确的字节数组
字节数组 4,-127,45,126,58,-104,41,-27,-43,27,-35,100,-50,-77,93,-16,96,105,-101,-63,48,-105,49,-67,110,111,26,84,67,-89,-7,-50,10,-12,56,47,-49,-42,-11,-8,-96,-117,-78,97,-105,9,-62,-44,-97,-73,113,96,23,112,-14,-62,103,-104,90,-14,117,78,31,-116,-7
相应的转换 4812d7e3a9829e5d51bdd64ceb35df060699bc1309731bd6e6f1a5443a7f9ceaf4382fcfd6f5f8a08bb261979c2d49fb771601770f2c267985af2754e1f8cf9
可以制作镀铬扩展程序来维护比特币钱包,同时还可以让网上商店轻松集成一键购买体验.
假设点击了网页上的按钮.是否有可能触发对chrome扩展的函数调用来发送比特币?
显然,让网页无限制地访问Chrome扩展程序永远不会被设计出来.但有没有办法使这项工作安全?
我正在尝试添加比特币作为货币在我的网站上显示.我有汇率和一切,但IllegalArgumentException每当我使用时我都会收到java.util.Currency.getInstance("BTC").这是有道理的,因为它没有包含在ISO 4217货币代码列表中,也没有包含在Java 7中.我已经看到了几个选项,但没有什么能真正解决我的问题.
根据Java 平台文档,您可以通过创建文件来覆盖特定区域设置的货币$JAVA_HOME/lib/currency.properties.这是一个问题,因为比特币不依赖于特定的区域,也不应该用来代替任何国家的货币.
此 StackOverflow帖子中提供了另一个类似的情况,其中中国有第二个货币代码可供使用,因此解决方案是构建自己的currency.data文件,为中国语言环境添加第二种货币.这样做更好,但仍存在将货币绑定到区域设置的问题.
有没有人遇到这个问题或找到了解决方法?我知道比特币相对较新,但能够以比特币格式显示价格会很酷.
我正在尝试使用交易信息
bitcoind gettransaction \
9962d5c704ec27243364cbe9d384808feeac1c15c35ac790dffd1e929829b271
Run Code Online (Sandbox Code Playgroud)
但我收到了
error: {"code":-5,"message":"Invalid or non-wallet transaction id"}
Run Code Online (Sandbox Code Playgroud)
如何使用比特币API查看交易?
bitcoin ×10
blockchain ×2
.net ×1
arrays ×1
c# ×1
currency ×1
dht ×1
distributed ×1
hashtable ×1
java ×1
java-7 ×1
javascript ×1
regex ×1
sha256 ×1