其中使用ECDSA和ECDH的比特币

问题描述 投票:1回答:1
1.var hash = crypto.randomBytes(32);
2.var publickey = ecdh.setPrivateKey(hash,'hex').getPublicKey('hex');
then sha256 => ripemd160 => encode... => address

[我知道比特币地址是如何生成的,但是似乎只是使用ECDH来生成比特币地址,但是我看到很多人说它使用ECDSA,我想知道使用ECDSA的比特币在哪里以及如何使用密码学来验证交易的比特币,以及用于签名交易的加密功能。谢谢。

cryptography bitcoin ecdsa
1个回答
1
投票

除了您可以使用ECDSA的公钥生成比特币地址这一事实外,比特币不使用ECDSA生成地址。真正使用椭圆曲线的地方是签署交易。

首先,使用包括ScriptPubKey在内的所有正确字段创建一个原始事务,然后将其转换为字节列表。然后,您获取事务字节的SHA256,然后获取SHA256的结果。这是消息摘要,这是您需要使用ECDSA私钥进行签名以生成SigScript的内容。但是,SigScript不仅包含签名摘要。首先是SIGHASH_CODE的摘要长度+ 1,然后是签名本身,然后是sig哈希码,然后是公用密钥的长度,最后是公用密钥本身。将所有这些串联后,就需要将SigScript插入事务中。显然,像SigPubKey一样,整个SigScript都带有一个大小前缀。最后插入大小和结果,现在您可以签署交易了。

© www.soinside.com 2019 - 2024. All rights reserved.