Cryptography 使用ECDSA和ECDH的比特币

Cryptography 使用ECDSA和ECDH的比特币,cryptography,bitcoin,ecdsa,Cryptography,Bitcoin,Ecdsa,我知道比特币地址是如何生成的,但似乎它只是使用ECDH生成比特币地址,但我看到很多人说它使用ECDSA,我想知道比特币在哪里使用ECDSA,比特币如何使用密码验证交易,以及哪个加密函数用于签署交易。 谢谢。比特币不使用ECDSA生成其地址,这是因为您可以使用ECDSA的公钥生成比特币地址。真正使用椭圆曲线的地方是在事务签名中 首先,使用中的所有正确字段(包括ScriptPubKey)创建一个原始事务,然后将其转换为字节列表。然后获取事务字节的SHA256,然后获取SHA256的结果。这是消息摘要

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

比特币不使用ECDSA生成其地址,这是因为您可以使用ECDSA的公钥生成比特币地址。真正使用椭圆曲线的地方是在事务签名中


首先,使用中的所有正确字段(包括ScriptPubKey)创建一个原始事务,然后将其转换为字节列表。然后获取事务字节的SHA256,然后获取SHA256的结果。这是消息摘要,这是您需要使用ECDSA私钥签名以生成SigScript的内容。然而,SigScript包含的不仅仅是签名摘要。首先是SIGASHU代码的摘要长度+1,然后是签名本身,接着是sig哈希代码,然后是公钥的长度,最后是公钥本身。一旦连接了所有这些,就需要将SigScript插入到事务中。很明显,整个SigScript都有一个大小前缀,就像SigPubKey一样。最后插入大小和结果,现在您有了一个可以广播的签名事务。

请先阅读他们的教程,这可能也太广泛了。您提供的stackexchange链接是否有技术细节教程?从未听说过它的担忧,意思是在我阅读比特币源代码后,我大致知道发生了什么。通常它被称为scriptSig
1.var hash = crypto.randomBytes(32);
2.var publickey = ecdh.setPrivateKey(hash,'hex').getPublicKey('hex');
then sha256 => ripemd160 => encode... => address