如果无法从比特币地址获得公共地址。进行交易的完整节点如何验证交易是否来自授权用户。
答案 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包含私钥的签名
所有有关简单节点比特币的工作信息。
现在我有问题要问你。
您说
不可能从比特币地址获取公共地址。
这是什么意思?