0

我正在使用 NBitcoin 库、C# 和 Visual Studio 2019。

这个想法是创建一个哈希集,将比特币地址解码为字节数组,使用具有此签名的 Key 类构造函数:

Key(byte[] data, int count = -1, bool fCompressedIn = true)

在我的程序中,它看起来像这样:

var key = new Key(byteArray, -1, true)

byteArray

byte[] byteArray = Encoders.Base58.DecodeData("15sYbVpRh6dyWycZMwPdxJWD4xbfxReeHe");

最后,我将密钥添加到哈希集中,如下所示:

keys.Add(key);

可怕的是,编译器卡住了

var key = new Key(byteArray, -1, true) 

有一个错误:

System.ArgumentException: 'EC 密钥的大小应为 32'

我尝试使用 Base32 进行编码:

byte[] byteArray = Encoders.Base32.EncodeData("15sYbVpRh6dyWycZMwPdxJWD4xbfxReeHe"); 

但我得到另一个错误:

无法从字符串转换为字节 []

纠结这个问题很久了,没有解决办法。。。

代码是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using NBitcoin;
using NBitcoin.DataEncoders;

namespace MyCoins
{
    static class Program
    {        
        static void Main()
        {
            // Create a HashSet:
            var keys = new HashSet<Key>();

            // I get the hash of the address:
            byte[] byteArray = Encoders.Base58.DecodeData("1123UAmo4xoNK2oXWfrrdiCwA6kcUQz9aa");

            // I pass the byteArray that I created above
            var key = new Key(byteArray, -1, true);
            // When I do this, I get the error: 'The size of an EC key should be 32 Parameter name: data'
            
            // Add the key to the HashSet:
            keys.Add(key);
         }
     }
}
4

0 回答 0