设为首页 |收藏本站

QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

比特币论坛|比特币官网-专业的比特币、区块链论坛!|比特币8818

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 308|回复: 4

Bitcoin Cash 交易签名与构造

[复制链接]

Rank: 4

  • TA的每日心情

    2019-6-11 18:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    Rank: 8Rank: 8

    458

    主题

    910

    帖子

    4775

    积分

    论坛元老

    积分
    4775
    发表于 2018-9-18 17:45:37 | 显示全部楼层 |阅读模式
    ​​
    BitcoinCash与旧的Bitcoin的交易签名不同,采用了类似BitcoinSW的 BIP143协议,但是没有SW功能。

    如果你从来没有做过BTC的签名,也没弄过SW,那么恭喜你,和我一样,上面的资料不用看了,下面我会手把手的教你如果购造一个BitcoinCash的最常用的P2PKH(Pay-to-Public-Key-Hash)交易,并签名。

    你要对UTXO有一定的了解,才能看懂BCH的交易结构。

    对txid为e1583427ce0b2ad9e4adc1621aada387f5d7b7fc105d7f0ea3d5d1339714cc88的交易进行分析,

    这个交易是从地址qzv8nyncjruxvwvq92zes6amtuj6cxrfp5creydtnm转出0.00027317个bch,转给自已(找零)0.00022090个,转给地址qz88qqxctlqkppds353wpx92ajxpc8x4lccgpz7lmf为0.00005000个,矿工费花了0.00000227个BCH。

    看一下这个交易的原始交易数据:

    0100000001892f8ddd7b54bb79278a3859ba4474a68eb28956d549e09aa5e121423e0c5cb6000000006b483045022100fac3c23687a75f23038d104a8545932db9815afdb6436daf2f52507a3a62da58022020ec3941165cfb6c054efd9f4cac757adab9d8c378953ed621d118106a1779c34121023839c718238a1795a12aa2f7af43816a7ca51dee1b45576d6c81bb7eed710f19ffffffff024a560000000000001976a9149879927890f86639802a85986bbb5f25ac18690d88ac88130000000000001976a9148e7000d85fc16085b08d22e098aaec8c1c1cd5fe88ac00000000
    看不懂?不要紧,把数据粘到这里解码一下:https://bch.btc.com/tools/tx/decode
    这是一个典型的交易,有一个input和两个output的交易,其中一个output转帐到原地址(找零)。
    用解析工具解析的内部,可以看个大概含义了,但是对于每一个数据的具体含义,要手工分析。
    BCH的交易结构和BTC相同,但是签名数据的计算方式不同。
    下面,我们对这些数据手工分析

    详细讲解每一项数据的来源

    【1】版本号
    在BCH中,版本号是01000000,但是有些交易是02000000,暂时不知道差异。

    【2】输入数量
    这里的每一个输入是一个UTXO,即使是同一个地址,也会存在多个UTXO作为输入。

    【3】输入txid的反序
    这里指的是一个UTXO的ID,然后把数据高低换位。在2018-8-31 12:00 UTC 8+的时间,可以查到地址qzv8nyncjruxvwvq92zes6amtuj6cxrfp5creydtnm有一条UTXO,交易ID为b65c0c3e4221e1a59ae049d55689b28ea67444ba59388a2779bb547bdd8d2f89,把这个交易ID反序,就可以得到892f8ddd7b54bb79278a3859ba4474a68eb28956d549e09aa5e121423e0c5cb6。

    【4】输入tx的序号
    同上,找到的UTXO为b65c0c3e4221e1a59ae049d55689b28ea67444ba59388a2779bb547bdd8d2f89,这条交易有两个输出,第一条(序号0)为转帐到qzv8nyncjruxvwvq92zes6amtuj6cxrfp5creydtnm的输出,第二条(序号1)是op_return。我们需要的序号是0,编码长度为4byte,LE小端编码,得到结果00000000。

    【5】脚本长度
    这里的脚本长度,指的是解锁脚本的长度,包括两部分,一部分是签名,一部分是公钥,要把这两部分的长度加起来。

    【6】签名长度
    签名数据的长度,这里的48是16进制,表示签名数据有72个byte。

    【7】签名数据
    这一部分很复杂,放在后面详细讲解。

    【8】SigHash Code
    这个可以认为是签名的类型。当前例子是P2PKH交易,BTC使用SIGHASH_ALL(0x01),BCH需要与SIGHASH_FORKID(0x40)做逻辑或运算,结果是0x41。

    【9】公钥长度
    公钥的长度,现在使用的是压缩公钥,长度33(0x21)。

    【10】公钥
    现在使用的是压缩公钥,只包括椭圆曲线Q点的X坐标,数据前补02(y为偶数)或03(y为奇数)。

    【11】序号
    ffffffff表示没有序号,这里不使用这个功能。

    【12】输出数量
    这个例子中有两个输出。如果带有op_return,也算是一个输出。

    【13】转帐金额
    单位为聪,LE小端编码。转帐到这人地址的数量为22090聪,转化为16进制是564a,使用小端编码为8byte,结果是4a56000000000000。

    【14】锁定脚本长度
    包括几个操作码和公钥hash的长度。
    此例子是P2PKH(支付到公钥地址模式),它的格式为:
    OP_DUP(0x76) OP_HASH160(0xa9)公钥hash长度(0x14)[一个20字节的公钥hash]  OP_EQUALVERIFY(0x88)OP_CHECKSIG(0xac)



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    Rank: 1

    该用户从未签到

    Rank: 4

    0

    主题

    315

    帖子

    640

    积分

    高级会员

    积分
    640
    QQ
    发表于 2019-6-13 05:11:51 | 显示全部楼层
    打酱油的人拉,回复下赚取积分
    回复 支持 反对

    使用道具 举报

    Rank: 1

    该用户从未签到

    Rank: 4

    0

    主题

    296

    帖子

    612

    积分

    高级会员

    积分
    612
    QQ
    发表于 2019-6-20 06:57:01 来自手机 | 显示全部楼层
    看帖、回帖、拿分、走人
    回复 支持 反对

    使用道具 举报

    Rank: 1

    该用户从未签到

    Rank: 4

    0

    主题

    325

    帖子

    841

    积分

    高级会员

    积分
    841
    QQ
    发表于 2019-7-10 22:43:18 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

    Rank: 1

    该用户从未签到

    Rank: 4

    2

    主题

    306

    帖子

    632

    积分

    高级会员

    积分
    632
    发表于 2019-8-2 22:47:43 | 显示全部楼层
    我是个凑数的。。。
    回复 支持 反对

    使用道具 举报

    guest
    welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    回帖奖励

    [详情]

  • * 每天自己主题被回复3次可获得额外2金钱奖励。
  • * 每天回复他人主题5次可获得额外3贡献的奖励。
  • * 奖励每天都可领取,一定要多参与论坛讨论哦。
  • * 同一主题的重复回复不计。
  • QQ|关于我们|Archiver|手机版|小黑屋|比特币论坛|比特币官网-专业的比特币、区块链论坛!|比特币8818   

    GMT+8, 2019-8-19 04:08 , Processed in 1.890687 second(s), 103 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表