【问题标题】:How does full node verify transaction if all it has bitcoin address and no public key如果所有交易都有比特币地址且没有公钥,全节点如何验证交易
【发布时间】:2019-09-15 10:02:59
【问题描述】:

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

【问题讨论】:

  • 阅读更多关于公钥私钥加密的信息。
  • 我想你误解了我的问题。我知道非对称加密是如何工作的,但在这种情况下,执行交易的节点没有公钥,还是有?
  • 比特币节点不验证 USER 因为在比特币中不存在一个 id 钱包或一些信息来引用一个用户,但比特币核心使用脚本语言进行验证交易对发送比特币有效。因此,所有可以在交易中创建有效脚本的人都可以使用比特币,通过私有类的签名可以创建这个安全的世界
  • @Pessy 交易包含公钥。检查scriptPubKeyscriptSig

标签: bitcoin


【解决方案1】:

比特币的核心是语言,比特币脚本,这是一种没有图灵完备的语言,因为没有循环。

节点比特币不需要公钥来花费比特币,但是​​交易输入有一个解锁的脚本(称为 ScriptSig)这个交易可以解锁一个先前的输出交易有一个锁定的脚本(称为脚本公钥) , 用于解锁在栈中执行的节点 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 包含私钥的签名

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

现在我有一个问题要问你。

你说

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

这是什么意思?

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 2021-04-15
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多