网赚论坛

 找回密码
 免费注册
查看: 871|回复: 0
打印 上一主题 下一主题

Blockchain上不一样的交易脚本

[复制链接]

17

主题

17

帖子

68

积分

Ⅰ级财主

Rank: 1

积分
68
跳转到指定楼层
楼主
发表于 2017-11-21 02:53:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2014年底一段时间我比较闲,用改写的blockparser查看了bitcoin的数据。当时发现很多奇怪的tx,还发现有些有趣的tx。也发现一些泄露秘钥的tx。当时并没有做什么记录,于是今天我又把这个程序翻出来,居然优化了一下,跑了一些结果。时隔1年,blockchain已经增大了2倍多,目测优化过后的代码应该比去年完成扫描还要快些。先列出一些不一样的输出脚本类型吧。有些脚本无法被answer是因为有各种错误,但奇怪这些tx是怎么被确认的呢,难道确认时候不校验outputScript是否合法吗?



1 type:0000000000000000000000000000000000874baa

txHash =af32bb06f12f2ae5fdb7face7cd272be67c923e86b7a66a76ded02d954c2f94d

minted in block = 211914

mint time = 1355302091 (Wed Dec 12 08:48:112012 GMT)

output[0] = 100000000

ScriptHex:aa20000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f87

0xAA OP_HASH256

OP_PUSHDATA(32,0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f){-3}

0x87 OP_EQUAL



2 type:0000000000000000000000000000000000874baa

txHash =a4bfa8ab6435ae5f25dae9d89e4eb67dfa94283ca751f393c1ddc5a837bbc31b

minted in block = 211997

mint time = 1355361152 (Thu Dec 13 01:12:322012 GMT)

output[0] = 100000000

ScriptHex:aa206fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d619000000000087

0xAA OP_HASH256

OP_PUSHDATA(32,0x6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000){-3}

0x87 OP_EQUAL


这两个tx非常有意思,是要用第一个Block的hash256作为challenge,但是第一次没有注意hash字节序是翻转的(大小端不一致),给出了翻转字节序的data,是找不到答案的。第二个data则是正确的。




1 type:000000000000000000754b006c686a64875d9393

txHash =4373b97e4525be4c2f4b491be9f14ac2b106ba521587dad8f134040d16ff73af

minted in block = 305806

mint time = 1402775993 (Sat Jun 14 19:59:532014 GMT)

output[0] = 143600

ScriptHex:93935d87646a686c4c97203c73637269707420747970653d27746578742f6a617661736372697074273e646f63756d656e742e777269746528273c696d67207372633d27687474703a2f2f7777772e74726f6c6c626f742e6f72672f7873732d626c6f636b636861696e2d6465746563746f722e7068703f687265663d27202b206c6f636174696f6e2e68726566202b2027273e27293b3c2f7363726970743e2075

0x93 OP_ADD.

0x5D OP_13

0x87 OP_EQUAL

0x64 OP_NOTIF

0x6A OP_RETURN

0x68 OP_ENDIF

0x6C OP_FROMALTSTACK

OP_PUSHDATA(151,0x203c73637269707420747970653d27746578742f6a617661736372697074273e646f63756d656e742e777269746528273c696d67207372633d27687474703a2f2f7777772e74726f6c6c626f742e6f72672f7873732d626c6f636b636861696e2d6465746563746f722e7068703f687265663d27202b206c6f636174696f6e2e68726566202b2027273e27293b3c2f7363726970743e20){-2}

0x75 OP_DROP



通过查看bitcoin源码可以看出,OP_FROMALTSTACK 使用的altstack是局部的,虽然outputScript和inputScript使用同一个stack处理校验,但各自有各自的altstack,所以这个challenge是没有answer的。但如果换成 OP_TOALTSTACK 就有解。

另外这个pushdata解码出来是一段javascript代码,如果直接执行会带参数到跳到www.trollbot.org,对于web版钱包实现不好可能会有xss攻击风险。顺手看了一下,见: http://www.trollbot.org/xss-blockchain-detector.php?href=

果然作者说这是一个风险提示实验,这个跳转本身不具有危险性,但是TX中的js脚本能够执行则很危险。



3 type:0000000000000000000000000000000000004b00

txHash =ebc9fa1196a59e192352d76c0f6e73167046b9d37b8302b6bb6968dfd279b767

minted in block = 265458

mint time = 1382508379 (Wed Oct 23 06:06:192013 GMT)

output[3] = 1

ScriptHex: 4c0201

OP_PUSHDATA(1, 0x01){-1}


script type = couldn't parse script


这个tx下面有8个output,全部都是pushdata,但是每一个都给出了错误的格式。有一些没有长度,另外几个长度超过了已有数据,如果Block浏览器实现有bug,就会溢出。这个测试是故意的,都没有对应的answer。




1 type:0000000000000000000000874ba8a8a8a8a8754b

txHash =ed7f71fdf6ae57f55b25c60e88771449a88f9c459db495a9efd9e90149af8b92

minted in block = 357261

mint time = 1432128560 (Wed May 20 13:29:202015 GMT)

output[1] = 430000

ScriptHex:187468652070617373776f72642069732070617373776f726475a8a8a8a8a8201c9f63d17e1ca2c830d0fc831e9ba4f6452204480d7908d0a0dbd3a9835de17d87

OP_PUSHDATA(24,0x7468652070617373776f72642069732070617373776f7264){-3}

0x75 OP_DROP

0xA8 OP_SHA256....

OP_PUSHDATA(32,0x1c9f63d17e1ca2c830d0fc831e9ba4f6452204480d7908d0a0dbd3a9835de17d){-3}

0x87 OP_EQUAL


我会说这个答案就是password吗!




1001 type:0000000000000000000000000000747069726373

txHash =fa735229f650a8a12bcf2f14cca5a8593513f0aabc52f8687ee148c9f9ab6665

minted in block = 166533

mint time = 1329079084 (Sun Feb 12 20:38:042012 GMT)

output[1] = 70359

ScriptHex: 736372697074

0x73 OP_IFDUP

0x63 OP_IF

0x72 OP_2SWAP

0x69 OP_VERIFY

0x70 OP_2OVER

0x74 OP_DEPTH


script type = broken script generatedby p2pool - coins lost


这种tx一共有1182个,2013年之后应该不会再增加了。它们都是p2pool挖矿直接产生的,脚本中OP_IF不完整,没有对应的OP_ENDIF,所以不可能被answer。




1 type:00000000000000000000000000684b00004bff63

txHash =77822fd6663c665104119cb7635352756dfc50da76a92d417ec1a12c518fad69

minted in block = 251718

mint time = 1376296294 (Mon Aug 12 08:31:342013 GMT)

output[0] = 1500000

ScriptHex: 63ff054effffffff4da305......

0x63 OP_IF

0xFF OP_INVALIDOPCODE

OP_PUSHDATA(5,0x4effffffff){-1}

OP_PUSHDATA(1443,0x46726f6d206133613631666566......a0a){-2}

0x68 OP_ENDIF


script type = couldn't parse script


这个不写全了, pushdata最多支持520字节,1443个超出了。所以也不能answer。



160 type:0000000000000000000000000000000000004b6a

txHash =8383f069af8d91be4e3299b79ef585095be3309372d8457c9bc07a43d40ca939

minted in block = 342661

mint time = 1423461116 (Mon Feb 9 05:51:56 2015 GMT)

output[1] = 1000000

ScriptHex:6a3ba38a0c96529a32f53f31ebb77536084e0f37c62cd86231d5fdd2fed2710b21c1687474703a2f2f6d7367652e75732f7265706f732f31382e676974

0x6A OP_RETURN

OP_PUSHDATA(59,0xa38a0c96529a32f53f31ebb77536084e0f37c62cd86231d5fdd2fed2710b21c1687474703a2f2f6d7367652e75732f7265706f732f31382e676974){-3}


2015年开始流行了使用op_return来记录文本,这个应该是最贵的一个了吧!



1 type:0000000000000000000000000000000000004b6a

txHash =139c004f477101c468767983536caaeef568613fab9c2ed9237521f5ff530afd

minted in block = 247633

mint time = 1374362200 (Sat Jul 20 23:16:402013 GMT)

output[1] = 100000

ScriptHex:6a20d68bdab455902dcc59f4e8f775a59c58ea8ae8f0a6cb7f3b96f8a3cfd84c9af7

0x6A OP_RETURN

OP_PUSHDATA(32,0xd68bdab455902dcc59f4e8f775a59c58ea8ae8f0a6cb7f3b96f8a3cfd84c9af7){-3}


script type = couldn't parse script


这个是第一个。



1001 type:0000000000000000000000000000000000004b6a

txHash =544c51527aa277f0389af266ffe5d9e8d5af0d04ab8d01a693f0c62495298dc6

minted in block = 373029

mint time = 1441400076 (Fri Sep 4 20:54:36 2015 GMT)

output[0] = 10000

ScriptHex:6a2369643b666f756e646174696f6e64622e75736572737573657273757365727374737439

0x6A OP_RETURN

OP_PUSHDATA(35,0x69643b666f756e646174696f6e64622e75736572737573657273757365727374737439){-3}


这是第1001个。但是到2016年1月20日,已经有39151个付费op_return了。不付费的可能更多,我没有统计。

先到这吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2024-12-27 17:13 , Processed in 0.234000 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

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