主页 > imtoken所有版本 > 《区块链研究实验室》比特币地址协议ScriptPubKey

《区块链研究实验室》比特币地址协议ScriptPubKey

imtoken所有版本 2023-06-16 08:06:18

比特币的地址是由什么生成_怎么生成比特币地址_比特币地址在线生成

对于区块链来说,最重要的不是比特币地址,而是比特币协议通过ScriptPubKey来识别比特币的接收者。

怎么生成比特币地址_比特币的地址是由什么生成_比特币地址在线生成

ScriptPubKey 看起来像这样:

OP_DUP OP_HASH160 14836dbe7f38c5ac3d49e8d790af808a4ee9edcf OP_EQUALVERIFY OP_CHECKSIG

这是一个简短的脚本,解释了拥有比特币所需的条件。 我们可以从比特币地址生成 ScriptPubKey。 这是一个对所有比特币客户端友好的步骤比特币的地址是由什么生成,将比特币地址翻译成区块链可读的地址。

比特币的地址是由什么生成_怎么生成比特币地址_比特币地址在线生成

var publicKeyHash = new KeyId("14836dbe7f38c5ac3d49e8d790af808a4ee9edcf");

var testNetAddress = publicKeyHash。 GetAddress(Network.TestNet);

var mainNetAddress = publicKeyHash。 GetAddress(网络。主要);

Console.WriteLine(mainNetAddress.ScriptPubKey);

// OP_DUP OP_HASH160 14836dbe7f38c5ac3d49e8d790af808a4ee9edcf OP_EQUALVERIFY OP_CHECKSIG

Console.WriteLine(testNetAddress.ScriptPubKey);

// OP_DUP OP_HASH160 14836dbe7f38c5ac3d49e8d790af808a4ee9edcf OP_EQUALVERIFY OP_CHECKSIG

注意到测试网和主网地址的 ScriptPubKey 是一样的吗?

请注意 ScriptPubKey 如何包含公钥的哈希值?

我们不会深入细节,但请注意比特币的地址是由什么生成,ScriptPubKey 与比特币地址无关,但它确实显示了公钥的哈希值。

比特币地址由一个版本字节组成,该版本字节标识网络在何处使用该地址和公钥的哈希值。 所以我们可以回退并从 ScriptPubKey 和网络标识符生成一个比特币地址。

var paymentScript = publicKeyHash.ScriptPubKey;

var sameMainNetAddress = paymentScript. GetDestinationAddress(Network.Main);

Console.WriteLine(mainNetAddress == sameMainNetAddress); // 真的

也可以从 ScriptPubKey 中检索哈希并从中生成比特币地址:

var samePublicKeyHash = (KeyId) paymentScript。 获取目的地();

Console.WriteLine(publicKeyHash == samePublicKeyHash); // 真的

var sameMainNetAddress2 = new BitcoinPubKeyAddress(samePublicKeyHash, Network.Main);

Console.WriteLine(mainNetAddress == sameMainNetAddress2); // 真的

所以现在你明白了私钥、公钥、公钥哈希、比特币地址和ScriptPubKey之间的关系。