• bitcoin script


    P2PK P2PKH,MS,P2SH,OP_RETURN 等的区别

    1.P2PK pay_to_public_key

    pubkey script:

     <pubkey> OP_CHECKSIG
    

    signature script: [sig]

    2. P2PKH pay_to_public_key_hash

    pubkey script:

     OP_DUP OP_HASH160 hash(pubkey) OP_EQUALVERIFY 
    

    signature script:

    [sig] <pubkey>
    

    3.P2SH pay_to_script_hash

    pubkey script:

    OP_HASH160 hash(Redeem script) OP_EQUAL
    
    

    signature script:
    此处和上面两个都不一样,解锁需要分成两部
    第一步: 验证 redeem script hash 值是否正确,也就是将redeem script 作为数据放到栈上,然后执行 OP_HASH160,如果为真才会执行第二步,否则失败
    第二步:执行redeem script, 将signature script+redeem script 一起执行,如果为真则成功,否则交易失败

    4.P2WPKH pay_to_witness_public_key_hash

    pubkey script:

    0 HASH160(public key)
    

    解锁脚本 signature script(scriptSig):

    还增加了一个 witness 字段,用于验证交易合法性
    witness:

    如果按照前面的验证规则,所有的隔离见证交易都是合法的,所以这是一个软分叉.

    5. P2WSH pay_to_witness_script_hash

    pubkey script:

    0 SHA256(redeem script)
    

    scriptSig: 空
    witness:

    矿工如何区分交易类型?

    主要是根据 pubkey script 的模式进行匹配,不同的模式匹配不同的验证规则.尤其是隔离见证部分.

    scriptSig包含什么内容?

    没看源码,纯属个人猜想.
    一个 tx 的结构如下:

    type MsgTx struct {
    	Version  int32
    	TxIn     []*TxIn
    	TxOut    []*TxOut
    	LockTime uint32
    }
    // TxIn defines a bitcoin transaction input.
    type TxIn struct {
    	PreviousOutPoint OutPoint
    	SignatureScript  []byte
    	Witness          TxWitness
    	Sequence         uint32
    }
    // TxOut defines a bitcoin transaction output.
    type TxOut struct {
    	Value    int64
    	PkScript []byte
    }
    

    签名放在 TxIn 中,因此签名应该是对hash(Version,LockTime, current TxIn(exclude signature script),all TxOut)) 进行签名.

    这样狂购可以验证交易,但是不能修改交易. 至于 TxID 为什么会变,是否因为 TxIn以及 TxOut 的顺序可以被矿工调整?

  • 相关阅读:
    开源 IM 工具编译与环境搭建攻略
    spark研究之install4j打包spark
    OPENFIRE+SPARK语音视频出错连不上的解决办法,倾心吐露:
    Openfire更服务器名称的方法
    install4j打包Spark详解
    关于install4j打包spark的一些方法
    ASP连接LOTUS数据库
    Enabling Large File Uploads On Your Domino Server for XPages
    phpcms v9 数据库操作函数
    phpcms前台的控制器
  • 原文地址:https://www.cnblogs.com/baizx/p/9485733.html
Copyright © 2020-2023  润新知