Guest User

Untitled

a guest
May 24th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.57 KB | None | 0 0
  1. bitcoin-cli getrawtransaction 7edb32d4ffd7a385b763c7a8e56b6358bcd729e747290624e18acdbe6209fc45
  2. 0100000001c8cc2b56525e734ff63a13bc6ad06a9e5664df8c67632253a8e36017aee3ee40000000009000483045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001455141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51aefeffffff0120f40e00000000001976a9141d30342095961d951d306845ef98ac08474b36a088aca7270400
  3.  
  4. bitcoin-cli decoderawtransaction $(bitcoin-cli getrawtransaction 7edb32d4ffd7a385b763c7a8e56b6358bcd729e747290624e18acdbe6209fc45)
  5. {
  6. "txid": "7edb32d4ffd7a385b763c7a8e56b6358bcd729e747290624e18acdbe6209fc45",
  7. "hash": "7edb32d4ffd7a385b763c7a8e56b6358bcd729e747290624e18acdbe6209fc45",
  8. "version": 1,
  9. "size": 229,
  10. "vsize": 229,
  11. "weight": 916,
  12. "locktime": 272295,
  13. "vin": [
  14. {
  15. "txid": "40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8",
  16. "vout": 0,
  17. "scriptSig": {
  18. "asm": "0 3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b790[ALL] 5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae",
  19. "hex": "00483045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001455141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae"
  20. },
  21. "sequence": 4294967294
  22. }
  23. ],
  24. "vout": [
  25. {
  26. "value": 0.00980000,
  27. "n": 0,
  28. "scriptPubKey": {
  29. "asm": "OP_DUP OP_HASH160 1d30342095961d951d306845ef98ac08474b36a0 OP_EQUALVERIFY OP_CHECKSIG",
  30. "hex": "76a9141d30342095961d951d306845ef98ac08474b36a088ac",
  31. "reqSigs": 1,
  32. "type": "pubkeyhash",
  33. "addresses": [
  34. "13fLLox43yXYvfoZadXpGbkTUXkW8bhqut"
  35. ]
  36. }
  37. }
  38. ]
  39. }
  40.  
  41. bitcoin-cli decoderawtransaction $(bitcoin-cli getrawtransaction 40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8)
  42. {
  43. "txid": "40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8",
  44. "hash": "40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8",
  45. "version": 1,
  46. "size": 189,
  47. "vsize": 189,
  48. "weight": 756,
  49. "locktime": 0,
  50. "vin": [
  51. {
  52. "txid": "42a3fdd7d7baea12221f259f38549930b47cec288b55e4a8facc3c899f4775da",
  53. "vout": 0,
  54. "scriptSig": {
  55. "asm": "3044022048d1468895910edafe53d4ec4209192cc3a8f0f21e7b9811f83b5e419bfb57e002203fef249b56682dbbb1528d4338969abb14583858488a3a766f609185efe68bca[ALL] 031a455dab5e1f614e574a2f4f12f22990717e93899695fb0d81e4ac2dcfd25d00",
  56. "hex": "473044022048d1468895910edafe53d4ec4209192cc3a8f0f21e7b9811f83b5e419bfb57e002203fef249b56682dbbb1528d4338969abb14583858488a3a766f609185efe68bca0121031a455dab5e1f614e574a2f4f12f22990717e93899695fb0d81e4ac2dcfd25d00"
  57. },
  58. "sequence": 4294967295
  59. }
  60. ],
  61. "vout": [
  62. {
  63. "value": 0.00990000,
  64. "n": 0,
  65. "scriptPubKey": {
  66. "asm": "OP_HASH160 e9c3dd0c07aac76179ebc76a6c78d4d67c6c160a OP_EQUAL",
  67. "hex": "a914e9c3dd0c07aac76179ebc76a6c78d4d67c6c160a87",
  68. "reqSigs": 1,
  69. "type": "scripthash",
  70. "addresses": [
  71. "3P14159f73E4gFr7JterCCQh9QjiTjiZrG"
  72. ]
  73. }
  74. }
  75. ]
  76. }
  77.  
  78. 00483045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001455141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae
  79.  
  80. step 1: stack -> 0x00 (OP_0)
  81. step 2: stack -> 0x00, 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001
  82. step 3: stack -> 0x00,
  83. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  84. 0x5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae
  85.  
  86. a914e9c3dd0c07aac76179ebc76a6c78d4d67c6c160a87
  87.  
  88. step 4: 0xa9 (OP_HASH160)
  89. stack -> 0x00,
  90. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  91. 0xe9c3dd0c07aac76179ebc76a6c78d4d67c6c160a
  92.  
  93. step 5: 0x14 (pushdata 20 bytes) 0xe9c3dd0c07aac76179ebc76a6c78d4d67c6c160a
  94. stack -> 0x00,
  95. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  96. 0xe9c3dd0c07aac76179ebc76a6c78d4d67c6c160a,
  97. 0xe9c3dd0c07aac76179ebc76a6c78d4d67c6c160a
  98.  
  99. step 6: 87 OP_EQUAL
  100. stack -> 0x00,
  101. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  102. 0x01
  103.  
  104. 0x5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae
  105.  
  106. step 7: 0x51 (OP_1)
  107. stack -> 0x00,
  108. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  109. 0x01
  110.  
  111. step 8: 0x41 (Pushdata 65 bytes) 042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf
  112. stack -> 0x00,
  113. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  114. 0x01,
  115. 0x042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf
  116.  
  117. step 9: 0x51 (OP_1)
  118. stack -> 0x00,
  119. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001,
  120. 0x01,
  121. 0x042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf,
  122. 0x01
  123.  
  124. step 10: 0xae (OP_CHECKMULTISIG)
  125. We have 1 sig and 1 pubkey. To check multisig we need to get transaction which was signed. We will come back to this step once we have transaction which was signed.
  126.  
  127. 0x3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001
  128.  
  129. 0x30 DER
  130. 0x45 Length
  131. 0x02 Type Integer
  132. 0x21 Length of r
  133. 00 (ignore) ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf883 (r)
  134. 02 Type Integer
  135. 20 Length of s
  136. 0b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b790 (s)
  137. 01 SIGHASH_ALL
  138.  
  139. 01 00 00 00 Version
  140. 01 input count
  141. c8 cc 2b 56 52 5e 73 4f f6 3a 13 bc 6a d0 6a 9e 56 64 df 8c 67 63 22 53 a8 e3 60 17 ae e3 ee 40 Previous transaction
  142. 00 00 00 00 Previous transaction out index
  143. --------- replace this [
  144. 90
  145. 00 48 30 45 02 21 00 ad 08 51 c6 9d d7 56 b4 51
  146. 90 b5 a8 e9 7c b4 ac 3c 2b 0f a2 f2 aa e2 3a ed
  147. 6c a9 7a b3 3b f8 83 02 20 0b 24 85 93 ab c1 25
  148. 95 12 79 3e 7d ea 61 03 6c 60 17 75 eb b2 36 40
  149. a0 12 0b 0d ba 2c 34 b7 90 01 45 51 41 04 2f 90
  150. 07 4d 7a 5b f3 0c 72 cf 3a 8d fd 13 81 bd bd 30
  151. 40 70 10 e8 78 f3 a1 12 69 d5 f7 4a 58 78 85 05
  152. cd ca 22 ea 6e ab 7c fb 40 dc 0e 07 ab a2 00 42
  153. 4a b0 d7 91 22 a6 53 ad 0c 7e c9 89 6b df 51 ae
  154. ------------- ]
  155. fe ff ff ff sequence
  156. 01 out count
  157. 20 f4 0e 00 00 00 00 00 value
  158. 19 script size
  159. 76 a9 14 1d 30 34 20 95 96 1d 95 1d 30 68 45 ef 98 ac 08 47 4b 36 a0 88 ac script pubkey
  160. a7 27 04 00 lock time
  161. ---> Add SIGHASH_ALL here
  162.  
  163. 01 00 00 00 Version
  164. 01 input count
  165. c8 cc 2b 56 52 5e 73 4f f6 3a 13 bc 6a d0 6a 9e 56 64 df 8c 67 63 22 53 a8 e3 60 17 ae e3 ee 40 Previous transaction
  166. 00 00 00 00 Previous transaction out index
  167. ------- locking script [
  168. 17
  169. a914e9c3dd0c07aac76179ebc76a6c78d4d67c6c160a87
  170. ------- ]
  171. fe ff ff ff sequence
  172. 01 out count
  173. 20 f4 0e 00 00 00 00 00 value
  174. 19 script size
  175. 76 a9 14 1d 30 34 20 95 96 1d 95 1d 30 68 45 ef 98 ac 08 47 4b 36 a0 88 ac
  176. a7 27 04 00 lock time
  177. 01 00 00 00 SIGHASH_ALL
  178.  
  179. 0100000001c8cc2b56525e734ff63a13bc6ad06a9e5664df8c67632253a8e36017aee3ee400000000017a914e9c3dd0c07aac76179ebc76a6c78d4d67c6c160a87feffffff0120f40e00000000001976a9141d30342095961d951d306845ef98ac08474b36a088aca727040001000000
  180.  
  181. 0x042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf
  182.  
  183. 0x2f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf
  184.  
  185. def sigcheck(sig_b: bytes, pubkey_b: bytes, raw_txn_b: bytes):
  186. txn_sha256_b = hashlib.sha256(raw_txn_b).digest()
  187.  
  188. prefix = pubkey_b[0:1]
  189. print('prefix = %s' % prefix)
  190. print('input pubkey = %s' % bytes.decode(binascii.hexlify(pubkey_b)))
  191. if prefix == b'x02' or prefix == b'x03':
  192. pubkey_b = getFullPubKeyFromCompressed(pubkey_b)[1:]
  193. elif prefix == b'x04':
  194. pubkey_b = pubkey_b[1:]
  195.  
  196. try:
  197. print("full public key = %s" % bytes.decode(binascii.hexlify(pubkey_b)))
  198. vk = ecdsa.VerifyingKey.from_string(pubkey_b, curve=ecdsa.SECP256k1)
  199. if vk.verify(sig_b, txn_sha256_b, hashlib.sha256) == True:
  200. print('valid')
  201. return 1
  202. else:
  203. print('sigcheck: invalid')
  204. return 0
  205. except ecdsa.BadSignatureError:
  206. print('sigcheck: Bad Signature')
  207. return 0
Add Comment
Please, Sign In to add comment