如果全节点都有比特币地址且没有公钥,全节点如何验证交易

时间:2019-09-15 10:02:59

标签: bitcoin

如果无法从比特币地址获得公共地址。进行交易的完整节点如何验证交易是否来自授权用户。

1 个答案:

答案 0 :(得分:0)

比特币的核心是他的语言, Bitcoin Script ,这是一种没有图灵完整的语言,因为它没有循环。

节点比特币不需要公钥来消费比特币,但是​​交易输入具有未锁定的脚本(称为ScriptSig),该交易可以使用已锁定的脚本(称为Script pubkey)来解锁先前的输出交易。 ,对于解锁在堆栈中执行的ScriptSig + ScrptPubKey的节点,如果返回true,则该交易是可花费的,否则为否。

一个例子

如果您有两次交易

Input:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

比特币如何执行脚本

完整脚本

304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10 OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG

如果您将脚本推入this ide内并运行它,您将看到比特币如何运行脚本。

在此示例中,ide返回false,因为无法使用其输入发送事务输出

ScriptPubKey(大多数时间)包含pubKey

ScriptSing包含私钥的签名

所有有关简单节点比特币的工作信息。

现在我有问题要问你。

您说

  

不可能从比特币地址获取公共地址。

这是什么意思?