Converts a BitCoin Hash160 (in Hex) to a valid BitCoin address

Convert multiple BTC address (base58) to hash160 /r/Bitcoin

Convert multiple BTC address (base58) to hash160 /Bitcoin submitted by BitcoinAllBot to BitcoinAll [link] [comments]

PSA: Guide on how to recover your lost Segwit coins using Electron Cash

How to get your recovered SegWit funds using Electron Cash

Background

Thousands of BCH on thousands of coins that were accidentally send to Segwit 3xxx addresses were recovered by BTC.TOP in block 582705.
This was a wonderful service to the community. This had to be done quickly as the coins were anyone can spend and needed to be sent somewhere. This all had to be done before thieves could get their dirty paws on them.
So.. How were they recovered? Did BTC.TOP just take the coins for themselves? NO: They were not taken by BTC.TOP. This would be wrong (morally), and would open them up to liability and other shenanigans (legally).
Instead --BTC.TOP acted quickly and did the legally responsible thing with minimal liability. They were sent on to the intended destination address of the SegWit transaction (if translated to BCH normal address).
This means BTC.TOP did not steal your coins and/or does not have custody of your funds!
But this does mean you now need to figure out how to get the private key associated with where they were sent -- in order to unlock the funds. (Which will be covered below).
Discussions on why this was the most responsible thing to do and why it was done this way are available upon request. Or you can search this subreddit to get to them.

Ok, so BTC.TOP doesn't have them -- who does?

You do (if they were sent to you)! Or -- the person / address they were sent to does!

HUH?

The Segwit transactions have a bad/crazy/messed-up format which contains an output (destination) which contains a hash of a public key inside. So they "sort of" contain a regular bitcoin address inside of them, with other Segwit garbage around them. This hash was decoded and translated to a regular BCH address, and the funds were sent there.
Again: The funds were forwarded on to a regular BCH address where they are safe. They are now guarded by a private key -- where they were not before (before they were "anyone can spend"). It can be argued this is the only reasonable thing to have done with them (legally and morally) -- continue to send them to their intended destination. This standard, if it's good enough for the US Post Office and Federal Mail, is good enough here. It's better than them being stolen.

Ok, I get it... they are on a regular BCH address now. The address of the destination of the Tx, is it?

Yes. So now a regular BCH private key (rather than anyone can spend) is needed to spend them further. Thus the Segwit destination address you sent them to initially was effectively translated to a BCH regular address. It's as if you posted a parcel with the wrong ZIP code on it -- but the USPS was nice enough to figure that out and send it to where you intended it to go.

Why do it this way and not return to sender?

Because of the ambiguity present-- it's not entirely clear which sender to return them to. There is too much ambiguity there, and would have led to many inputs not being recovered in a proper manner. More discussion on this is available upon request.

Purpose of this guide

This document explains how to:
Complications to watch out for:

Step 1: Checking where your coins went

To verify if this recovery touched one of your lost coins: look for the transaction that spent your coins and open it on bch.btc.com explorer.

Normal aka "P2PKH"

Let’s take this one for example.
Observe the input says:
P2SH 160014d376cf1baff9eeed943d58551d53c48377adb98c 
And the output says:
P2PKH OP_DUP OP_HASH160 d376cf1baff9eeed943d58551d53c48377adb98c OP_EQUALVERIFY OP_CHECKSIG 
Notice a pattern?
The fact that these two highlighted hexadecimal strings are the same means that the funds were forwarded to the identical public key, and can be spent by the private key (corresponding to that public key) if it is imported into a Bitcoin Cash wallet.

Multisig aka "P2SH"

If the input starts with “P2SH 220020…”, as in this example, then your segwit address is a script -- probably a multisignature. While the input says “P2SH 22002019aa2610492ee2c18605597136294596d4f0f9bc6ce0974ed3a975d65da4ca1e”, the output says “P2SH OP_HASH160 21bdc73fb15b3bb7bd1be365e92447dc2a44e662 OP_EQUAL”. These two strings actually correspond to the same script, but they are different in content and length due to segwit’s design. However, you just need to RIPEMD160 hash the first string and compare to the second -- you can check this by entering the input string (after the 220020 part) into this website’s Binary Hash field and checking the resulting RIPEMD160 hash. The resulting hash is 21bdc73fb15b3bb7bd1be365e92447dc2a44e662, which corresponds to the output hex above, and this means the coins were forwarded to the same spending script but in "non-segwit form". You will need to re-assemble the same multi-signature setup and enough private keys on a Bitcoin Cash wallet. (Sorry for the succinct explanation here. Ask in the comments for more details perhaps.)

No match -- what?!

If the string does not match (identically in the Normal case above, or after properly hashing in the Multisig case above), then your coins were sent elsewhere, possibly even taken by an anonymous miner. :'(

Step 2: How To Do the Recovery

Recover "Normal" address transactions (P2PKH above)

This is for recoveries where the input string started with “160014”.
Option 1 (BIP39 seed):
Option 2 (single key):
Option 3 (xprv -- many keys):
Code:
mkey = "yprvAJ48Yvx71CKa6a6P8Sk78nkSF7iqqaRob1FN7Jxsqm3L52K8XmZ7EtEzPzTUWXAaHNfN4DFAuP4cdM38yrE6j3YifV8i954hyD5rhPyUNVP" from electroncash.bitcoin import DecodeBase58Check, EncodeBase58Check EncodeBase58Check(b'\x04\x88\xad\xe4'+DecodeBase58Check(mkey)[4:]) 
Option 4 (hardware wallet):

How to Recover Multisignature wallets (P2WSH-in-P2SH in segwit parlance)

This is for recoveries where the input string started with "220020.
Please read the above instructions for how to import single keys. You will need to do similar but taking care to reproduce the same set of multisignature keys as you had in the BTC wallet. Note that Electron Cash does not support single-key multisignature, so you need to use the BIP39 / xprv approach.
If you don’t observe the correct address in Electron Cash, then check the list of public keys by right clicking on an address, and compare it to the list seen in your BTC wallet. Also ensure that the number of required signers is identical.
submitted by NilacTheGrim to btc [link] [comments]

why multi-signature address begin with '3' ?

submitted by uraymeiviar to Bitcoin [link] [comments]

TIL: Bitcoin addresses do not contain "0", "O", "l", or "I" to prevent mistyping addresses.

When a Bitcoin Address is generated from a public key, the public key is first hashed using HASH160, then encoded into a Base58 number which is prefixed with an address type signify-er in the format of 0x00. The Base58 encoding removes the usage of the characters 0, O, l, and I because they can be easily mistaken for each other and could result in funds being sent to the wrong address.
submitted by i7Robin to Bitcoin [link] [comments]

BITBOX SDK v7 is live! 100% refactor from Babel to Typescript and much more!

I'm very pleased to announce BITBOX v7 is live! This is a complete refactor from Babel to typescript. Our goal is to create professional-grade software and typescript provides the abstractions to take BITBOX to an entirely new place. Thanks to James_Cramer for helping debug.
All documentation has been updated. All BITBOX scaffolds (angular, react, next, node, vue and websockets) have been updated as well.
Changes include interfaces for all classes and returned data structures. Data types for all method definitions, arguments/parameters and variables. All interfaces are also defined in the docs.
New functionality includes:
Over 2000+ passing tests .
submitted by cgcardona to btc [link] [comments]

OP_CHECKDATASIG is copying Blockstream, and is inferior to OP_DATASIGVERIFY

Hi all,
Bitcoin-ABC's implementation of Bitcoin Cash is set to hard fork on November 18th, activating a bunch of features aimed at enhencing the usability of the currency.
One of the proposed improvements is OP_CHECKDATASIG, which can be used to run a verify operation on a (signature, message hash, pubkey) triplet. By itself, this is an extremely useful opcode to have. It allows one to embed an arbitrary message to the transaction, and these messages can then be used in applications external to the chain, or as an way to allow delegated signatures on top of the script itself that is being verified. Pretty cool.
OP_CHECKDATASIG is also exceptional for a different reason. In particular, it is an almost exact line-by-line copy of a little-known, yet fairly mature opcode called OP_CHECKSIGFROMSTACK, implemented here : https://github.com/ElementsProject/elements/commit/c35693257ca59b80659cfc4a965311f028c2d751#diff-be2905e2f5218ecdbe4e55637dac75f3R1328
For those who haven't been following, Elements is a project created by Blockstream, and elements alpha is a sidechain where experimental features can be added and tested. This commit from October 2016 shows (among other things) the addition of OP_CHECKSIGFROMSTACK to the elements alpha chain. Compared to the recent addition of OP_CHECKDATASIG to the bitcoin-abc client, the similarity is obvious : https://reviews.bitcoinabc.org/source/bitcoin-abc/change/mastesrc/script/interpreter.cpp;9ba4bfca513d6386ee3d313b15bdd4584da7633d
On the other hand, consider Bitcoin Unlimited's OP_DATASIGVERIFY : https://github.com/BitcoinUnlimited/BitcoinUnlimited/commit/1bf53307cab5d96076721ef5a238a63b03aca07d#diff-be2905e2f5218ecdbe4e55637dac75f3R970
This looks more like an independent development. It allows the same functionality as OP_CHECKDATASIG, but it does so in a way which is more transparent and also accessible for normal users. What I mean by that is, recall the verification parameters passed to OP_CHECKDATASIG, these were (signature, message hash, pubkey). For OP_DATASIGVERIFY, the parameters are slightly different: (signature, message, pubkey hash). The difference is subtle, but important. OP_DATASIGVERIFY follows the same design pattern as the widely known signmessage and verifymessage features that are implemented by various wallets (and in use by services like https://vote.bitcoin.com/ ). That is, a raw message is signed for and published by the user to the world, and independent verifiers are able to match the published signature and message to a specific pubkey hash - the data that makes up the user's on-chain address. If you've ever used this message signing and verifying feature of your wallet, you probably know how useful it can be. In contrast, OP_CHECKDATASIG verifies a message hash, not a plaintext message, against a pubkey, not a public address. This means that for a verifymessage-like operation, the script used in the transaction would become quite cumbersome:

  OP_HASH256[1]  OP_DUP OP_TOALTSTACK[2] OP_CHECKDATASIGVERIFY[3] OP_FROMALTSTACK OP_HASH160[4]  OP_EQUALVERIFY 

  1. We want to publish a plaintext message, but we have to "feed" its hash to OP_CHECKDATASIGVERIFY, so we have to use an OP_HASH256
  2. The pubkey we provide for verification will be "used up" by OP_CHECKDATASIGVERIFY, so we must both duplicate it and keep the copy in altstack
  3. OP_CHECKDATASIGVERIFY behaves exactly like OP_CHECKDATASIG, except that it fails the entire script immediately if the signature fails to verify
  4. We have the pubkey, but we still have to check that its hash matches the address, so we use OP_HASH160 and test for equality. Note that this means that we have to publis both public key /and/ its hash in the same transaction. Almost too wasteful.

Using OP_DATASIGVERIFY instead, the script is simply:
   OP_DATASIGVERIFY 

Hashing of the plaintext message is done internally by the OP_DATASIGVERIFY operation, and the same is also true for the hashing of the resulting public key against the provided pubkey hash (the data that makes up the address). A second not-so-obvious difference is the actual content of in the two scripts. For the OP_DATASIGVERIFY script, this message is actually parsed and verified using the exact same format as verifymessage in the wallet. This means that services like blockchain explorers can then simply decode the data in such a transaction and present it to users in a manner that enables them to run local verification of the message using their own wallet, simply by copy+pasting the information! Using OP_CHECKDATASIG instead, the does not follow the same semantics and format as the one in verifymessage, and no wallet exists today which support such a verifying operation in the UI. It is also hard to expect something like verifydatasigmessage to be implemented on absolutely all wallets.
I think it benefits of OP_DATASIGVERIFY when measured against OP_CHECKDATASIG are obvious, and am curious to hear your opinions.
submitted by moosapor to btc [link] [comments]

Using Plus500 for bitcoin trading?

Hello all,

I have recently started bitcoin trading, being introduced by Plus500. I found it extremely easy and simple. But I am sure that it should come with a trade-off. What are your thoughts of such applications for bitcoin or cryptocurrency trading? Is it bad that I don't get to deal with addresses or hash160 numbers? Is it still legit to use this app on long term bitcoin investments? If you are against it, why, and what should I use instead? Thank you very much beforehand for your thoughts and perhaps suggestions. :)
submitted by Huzo11 to Bitcoin [link] [comments]

Those large Bitcoin Cash transactions are not what you think they are

I've decided to take a look at these large transactions that occurred on Bitcoin Cash yesterday. I have analyzed them to see what they are doing, and it is actually kind of funny. Contrary to popular belief, those transactions are not preparation transactions for the attack presented by _chjj yesterday, and I will explain why below.
For starters, lets look at the large transactions. There are 7 of them: https://bch-bitcore2.trezor.io/tx/ac4849b3b03e44d5fcba8becfc642a8670049b59436d6c7ab89a4d3873d9a3ef, https://bch-bitcore2.trezor.io/tx/1bd4f08ffbeefbb67d82a340dd35259a97c5626368f8a6efa056571b293fae52, https://bch-bitcore2.trezor.io/tx/c0472d267c8d178804eefdddb348f2f7a8a95bf6a4152b952a5fb6bfa09cab2e, https://bch-bitcore2.trezor.io/tx/27cb862d9c4c7eaace8d901e89365f2e843572788b774b14e5675fd9107d6637, https://bch-bitcore2.trezor.io/tx/b87d1dc8c0f3b450f1c1a845a5561ad87d850173b852c6839de6eb04441dfc7f, https://bch-bitcore2.trezor.io/tx/fc3e3bbd49ad6a6e87e7220f380b24ae86e566b1d26d0e40fb5250e54a25dc2a, https://bch-bitcore2.trezor.io/tx/dbd3f7518111d679c1b229af71181c9395e3bf8c1370b6856376f391d25c883e. Each of these transactions has 31243 identical P2SH outputs of 1 satoshi each, and one change output. So at first glance, these look a lot like attack transactions for _chjj's attack. But looking closer, it looks like the first output of each transaction has been spent in https://bch-bitcore2.trezor.io/tx/36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d. Lets take a closer look at that transaction
36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d is strangely large for a transaction spending P2SH outputs, it is nearly 70 kB but only spends 7 inputs. This means that those inputs must be massive, almost 10 kB each, which, incidentally, is the size limit for a scriptSig. Unfortunately block explorers based on insight aren't showing us the scriptSig, so this will need to be decoded with a node.
Here is the decoded output (I have cut out a few things because it is too large):
{ "hex": , "txid": "36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d", "hash": "36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d", "size": 69651, "version": 2, "locktime": 0, "vin": [ { "txid": "ac4849b3b03e44d5fcba8becfc642a8670049b59436d6c7ab89a4d3873d9a3ef", "vout": 0, "scriptSig": { "asm": "492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884cab492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e87", "hex":  }, "sequence": 4294967295 }, { "txid": "1bd4f08ffbeefbb67d82a340dd35259a97c5626368f8a6efa056571b293fae52", "vout": 0, "scriptSig": { "asm": "492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e  492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e 788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c89492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e87", "hex":  }, "sequence": 4294967295 }, { "txid": "c0472d267c8d178804eefdddb348f2f7a8a95bf6a4152b952a5fb6bfa09cab2e", "vout": 0, "scriptSig": { "asm": "57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d617274  57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d617274 7888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c8f57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d61727487", "hex":  }, "sequence": 4294967295 }, { "txid": "27cb862d9c4c7eaace8d901e89365f2e843572788b774b14e5675fd9107d6637", "vout": 0, "scriptSig": { "asm": "492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f736869  492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f736869 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c8b492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f73686987", "hex":  }, "sequence": 4294967295 }, { "txid": "b87d1dc8c0f3b450f1c1a845a5561ad87d850173b852c6839de6eb04441dfc7f", "vout": 0, "scriptSig": { "asm": "4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b  788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c904920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b87", "hex":  }, "sequence": 4294967295 }, { "txid": "fc3e3bbd49ad6a6e87e7220f380b24ae86e566b1d26d0e40fb5250e54a25dc2a", "vout": 0, "scriptSig": { "asm": "48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d6978  48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d6978 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c8b48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d697887", "hex":  }, "sequence": 4294967295 }, { "txid": "dbd3f7518111d679c1b229af71181c9395e3bf8c1370b6856376f391d25c883e", "vout": 0, "scriptSig": { "asm": "5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d65  5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d65 7888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c935468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d6587", "hex":  }, "sequence": 4294967295 } ], "vout": [ { "value": 0.00000000, "n": 0, "scriptPubKey": { "asm": "OP_DUP OP_HASH160 f6c403dd1f02211d21db137cd219e156ce7e5ca7 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a914f6c403dd1f02211d21db137cd219e156ce7e5ca788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ "1PVn3ZM5mUW9n9eVXRAedUbpJdAMCG7KXS" ] } } ], "blockhash": "000000000000000005a42e167af40866487ceda82863614c409d67d1239aff19", "confirmations": 174, "time": 1505044920, "blocktime": 1505044920 } 
Well that's interesting. Lets find the redeemScript of the first transaction and decode it:
bitcoin-cli decodescript 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884cab492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e87 { "asm": "OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e OP_EQUAL", "type": "nonstandard", "p2sh": "39BLXfKysaXNuGuBrgT7b9WfaiBMw2VMZf" } 
Well that is a very interesting script. So lets explore what this script is doing. OP_OVER means that the top stack item is copied, e.g. x1 x2 -> x1 x2 x1. OP_EQUALVERIFY means that the top two stack items must be equal to each other and they are consumed. There are 55 OP_OVER OP_EQUALVERIFY pairs here, which means that something will need to be repeated 55 times. At the end of the script, we see this byte string and then OP_EQUAL. That means that whatever is being repeated much match this byte string in order for this script to validate. The scriptSig that this redeemScript comes from does exactly that, the byte string at the bottom of the script are repeated a bunch of times. And it looks like all of the 7 scripts do basically the same thing, but with different length byte strings. Now lets see what our byte strings are.
492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e 57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d617274 492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f736869 4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b 48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d6978 5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d65 
Looking more closely at these scripts, we see that there are repeating sequences, and they are different lengths. This means that it isn't just random garbage. Well the first thing to try is to see if this hex results in any ascii, and what do you know, this is what we get for the first string:
I will not clone Bitcoin for personal gain I will not clone Bitcoin for personal gain I will not clone Bitcoin for personal gain I will not clone Bitcoin for personal gain 
Huh. That's interesting. I think someone is being mocked. Lets see what the rest are:
I will not use assert(0) for input validation I will not use assert(0) for input validation I will not use assert(0) for input validation Writing gibberish equations on a blackboard does not make me look smart Writing gibberish equations on a blackboard does not make me look smart I will not worship a false satoshi I will not worship a false satoshi I will not worship a false satoshi I will not worship a false satoshi I am not a FDIC-insured bank I am not a FDIC-insured bank I am not a FDIC-insured bank I am not a FDIC-insured bank I am not a FDIC-insured bank High explosives and mail don't mix High explosives and mail don't mix High explosives and mail don't mix High explosives and mail don't mix They are laughing at me, not with me They are laughing at me, not with me They are laughing at me, not with me They are laughing at me, not with me 
So it seems that someone is just mocking you all. They have put these mocking strings in a redeemScript and require you to repeat them in order to spend them. This kind of reminds me of Bart Simpson performing his punishment of writing sentences over and over on a chalkboard. The other thing that this does is that in order to clean up the thousands of outputs, you will need to spend 10 kB per output, which will severely bloat your blockchain. Or you can just leave them in the UTXO set which will bloat the UTXO set with dust. But what to do with these is something you all will need to deal with, I'm just here to see what was up with these transactions.
As for why these transactions don't work for _chjj's attack, they require that the spending transactions be very large. But that is not ideal because for that attack to work, the spends need to be very small so that more spends can fit in one block which will increase memory usage. These transactions are not good for that since you can only fit a much smaller number of transactions in a block so the memory blow up is way less.
Edit: I don't support Bitcoin Cash, which is why I say that this is "your problem". I just thought this was interesting as it looked like it could impact Bitcoin as well, which is why I investigated this.
submitted by achow101 to btc [link] [comments]

This is how we will recover coins sent to the wrong address or an unowned address

Don't worry, I'm NOT advocating that transactions should be reversible.
Many of us have accidentally sent coins to the wrong address or an unowned address, resulting in those coins being permanently unrecoverable and unspendable. I haven't made this mistake (yet), but damn it makes me nervous when I send larger transactions.
Unfortunately, we'll never be able to revert those past mistakes, but with a small change to the bitcoin protocol, we can make it so that we can recover the coins when we make this sort of mistake in the future.
Please let me know your thoughts about my solution below, and if something like this is already in the works.

The solution, conceptually

If everybody knew everyone else's public keys, we could prevent these permanent mistakes with multisig scripts. The change I'm proposing will make it so we can prevent the mistakes without knowing each other's public keys, but I'll explain it in terms of multisig, because the solution is conceptually the same, and easier to explain:
Instead of sending coins directly to a recipient address, send your coins to a 1-of-2 multisig account, shared by both you and the recipient.
This means that effectively, the transaction is "cancellable", but only until the recipient sends the coins to his own account. At that point the coins are irreversibly his.
The downside of this is that when receiving a payment, you must explicitly accept it before the coins are truly yours -- you should not consider the coins as yours until you do this. The upside is that it guarantees that coins are never lost at inactive addresses.

Problems that this solves

  1. Sending to an unowned address (base58Check almost always protects against this)
  2. Sending to an address that was owned, but the private keys were lost and nobody has control of the address anymore
  3. Sending to the wrong (but owned) address, unless the unintended recipient is quick to claim the coins
  4. Sending your coins to the wrong address on an exchange (i.e. an address for a forked blockchain)

Implementation and technical details

We can accomplish the above without knowledge of each others' public keys, if we use a custom pubkey script. Nodes only accept transactions with standard pubkey scripts, so we'd need to define a new standard script.
The typical P2PKH script looks like this:
scriptPubKey: OP_DUP OP_HASH160 OP_DUP  OP_EQUALVERIFY OP_CHECKSIG scriptSig:   
The new standard script I'm proposing is this:
scriptPubKey: OP_DUP OP_HASH160 OP_DUP  OP_EQUAL OP_SWAP  OP_EQUAL OP_ADD OP_VERIFY OP_CHECKSIG ( would be your address, and  would be the recipient's address) scriptSig:   
This script allows the coins to be spent by either the owner of or .
I call this new transaction type Pay To Either Public Key Hash (P2EPKH), or colloquially, "fuck-up protection".
Of course, wallets would have to be able to recognize the new transaction type, and offer controls to claim coins from incoming P2EPKH transactions or to cancel unclaimed P2EPKH transactions.

Feedback, please.

What do you all think? Is this generally a decent idea? Has this idea been floated around before? Is there another solution for this issue in the works? If this is a good idea, how do I get the attention of the devs?
submitted by ransoing to btc [link] [comments]

A reminder why CryptoNote protocol was created...

CryptoNote v 2.0 Nicolas van Saberhagen October 17, 2013
1 Introduction
“Bitcoin” [1] has been a successful implementation of the concept of p2p electronic cash. Both professionals and the general public have come to appreciate the convenient combination of public transactions and proof-of-work as a trust model. Today, the user base of electronic cash is growing at a steady pace; customers are attracted to low fees and the anonymity provided by electronic cash and merchants value its predicted and decentralized emission. Bitcoin has effectively proved that electronic cash can be as simple as paper money and as convenient as credit cards.
Unfortunately, Bitcoin suffers from several deficiencies. For example, the system’s distributed nature is inflexible, preventing the implementation of new features until almost all of the net- work users update their clients. Some critical flaws that cannot be fixed rapidly deter Bitcoin’s widespread propagation. In such inflexible models, it is more efficient to roll-out a new project rather than perpetually fix the original project.
In this paper, we study and propose solutions to the main deficiencies of Bitcoin. We believe that a system taking into account the solutions we propose will lead to a healthy competition among different electronic cash systems. We also propose our own electronic cash, “CryptoNote”, a name emphasizing the next breakthrough in electronic cash.
2 Bitcoin drawbacks and some possible solutions
2.1 Traceability of transactions
Privacy and anonymity are the most important aspects of electronic cash. Peer-to-peer payments seek to be concealed from third party’s view, a distinct difference when compared with traditional banking. In particular, T. Okamoto and K. Ohta described six criteria of ideal electronic cash, which included “privacy: relationship between the user and his purchases must be untraceable by anyone” [30]. From their description, we derived two properties which a fully anonymous electronic cash model must satisfy in order to comply with the requirements outlined by Okamoto and Ohta:
Untraceability: for each incoming transaction all possible senders are equiprobable.
Unlinkability: for any two outgoing transactions it is impossible to prove they were sent to the same person.
Unfortunately, Bitcoin does not satisfy the untraceability requirement. Since all the trans- actions that take place between the network’s participants are public, any transaction can be unambiguously traced to a unique origin and final recipient. Even if two participants exchange funds in an indirect way, a properly engineered path-finding method will reveal the origin and final recipient.
It is also suspected that Bitcoin does not satisfy the second property. Some researchers stated ([33, 35, 29, 31]) that a careful blockchain analysis may reveal a connection between the users of the Bitcoin network and their transactions. Although a number of methods are disputed [25], it is suspected that a lot of hidden personal information can be extracted from the public database.
Bitcoin’s failure to satisfy the two properties outlined above leads us to conclude that it is not an anonymous but a pseudo-anonymous electronic cash system. Users were quick to develop solutions to circumvent this shortcoming. Two direct solutions were “laundering services” [2] and the development of distributed methods [3, 4]. Both solutions are based on the idea of mixing several public transactions and sending them through some intermediary address; which in turn suffers the drawback of requiring a trusted third party. Recently, a more creative scheme was proposed by I. Miers et al. [28]: “Zerocoin”. Zerocoin utilizes a cryptographic one-way accumulators and zero-knoweldge proofs which permit users to “convert” bitcoins to zerocoins and spend them using anonymous proof of ownership instead of explicit public-key based digital signatures. However, such knowledge proofs have a constant but inconvenient size - about 30kb (based on today’s Bitcoin limits), which makes the proposal impractical. Authors admit that the protocol is unlikely to ever be accepted by the majority of Bitcoin users [5].
2.2 The proof-of-work function
Bitcoin creator Satoshi Nakamoto described the majority decision making algorithm as “one- CPU-one-vote” and used a CPU-bound pricing function (double SHA-256) for his proof-of-work scheme. Since users vote for the single history of transactions order [1], the reasonableness and consistency of this process are critical conditions for the whole system.
The security of this model suffers from two drawbacks. First, it requires 51% of the network’s mining power to be under the control of honest users. Secondly, the system’s progress (bug fixes, security fixes, etc...) require the overwhelming majority of users to support and agree to the changes (this occurs when the users update their wallet software) [6].Finally this same voting mechanism is also used for collective polls about implementation of some features [7].
This permits us to conjecture the properties that must be satisfied by the proof-of-work pricing function. Such function must not enable a network participant to have a significant advantage over another participant; it requires a parity between common hardware and high cost of custom devices. From recent examples [8], we can see that the SHA-256 function used in the Bitcoin architecture does not posses this property as mining becomes more efficient on GPUs and ASIC devices when compared to high-end CPUs.
Therefore, Bitcoin creates favourable conditions for a large gap between the voting power of participants as it violates the “one-CPU-one-vote” principle since GPU and ASIC owners posses a much larger voting power when compared with CPU owners. It is a classical example of the Pareto principle where 20% of a system’s participants control more than 80% of the votes.
One could argue that such inequality is not relevant to the network’s security since it is not the small number of participants controlling the majority of the votes but the honesty of these participants that matters. However, such argument is somewhat flawed since it is rather the possibility of cheap specialized hardware appearing rather than the participants’ honesty which poses a threat. To demonstrate this, let us take the following example. Suppose a malevolent individual gains significant mining power by creating his own mining farm through the cheap hardware described previously. Suppose that the global hashrate decreases significantly, even for a moment, he can now use his mining power to fork the chain and double-spend. As we shall see later in this article, it is not unlikely for the previously described event to take place.
2.3 Irregular emission
Bitcoin has a predetermined emission rate: each solved block produces a fixed amount of coins. Approximately every four years this reward is halved. The original intention was to create a limited smooth emission with exponential decay, but in fact we have a piecewise linear emission function whose breakpoints may cause problems to the Bitcoin infrastructure.
When the breakpoint occurs, miners start to receive only half of the value of their previous reward. The absolute difference between 12.5 and 6.25 BTC (projected for the year 2020) may seem tolerable. However, when examining the 50 to 25 BTC drop that took place on November 28 2012, felt inappropriate for a significant number of members of the mining community. Figure 1 shows a dramatic decrease in the network’s hashrate in the end of November, exactly when the halving took place. This event could have been the perfect moment for the malevolent individual described in the proof-of-work function section to carry-out a double spending attack [36]. Fig. 1. Bitcoin hashrate chart (source: http://bitcoin.sipa.be)
2.4 Hardcoded constants
Bitcoin has many hard-coded limits, where some are natural elements of the original design (e.g. block frequency, maximum amount of money supply, number of confirmations) whereas other seem to be artificial constraints. It is not so much the limits, as the inability of quickly changing them if necessary that causes the main drawbacks. Unfortunately, it is hard to predict when the constants may need to be changed and replacing them may lead to terrible consequences.
A good example of a hardcoded limit change leading to disastrous consequences is the block size limit set to 250kb1. This limit was sufficient to hold about 10000 standard transactions. In early 2013, this limit had almost been reached and an agreement was reached to increase the limit. The change was implemented in wallet version 0.8 and ended with a 24-blocks chain split and a successful double-spend attack [9]. While the bug was not in the Bitcoin protocol, but rather in the database engine it could have been easily caught by a simple stress test if there was no artificially introduced block size limit.
Constants also act as a form of centralization point. Despite the peer-to-peer nature of Bitcoin, an overwhelming majority of nodes use the official reference client [10] developed by a small group of people. This group makes the decision to implement changes to the protocol and most people accept these changes irrespective of their “correctness”. Some decisions caused heated discussions and even calls for boycott [11], which indicates that the community and the developers may disagree on some important points. It therefore seems logical to have a protocol with user-configurable and self-adjusting variables as a possible way to avoid these problems.
2.5 Bulky scripts
The scripting system in Bitcoin is a heavy and complex feature. It potentially allows one to create sophisticated transactions [12], but some of its features are disabled due to security concerns and some have never even been used [13]. The script (including both senders’ and receivers’ parts) for the most popular transaction in Bitcoin looks like this: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. The script is 164 bytes long whereas its only purpose is to check if the receiver possess the secret key required to verify his signature.
Read the rest of the white paper here: https://cryptonote.org/whitepaper.pdf
submitted by xmrhaelan to CryptoCurrency [link] [comments]

/u/Septem_151 on Cybercash, as imagined in 1998

TL;DR: A Transaction Input is what reveals your public key, not the Transaction Output, and an address represents the hash of a Public Key.
UTXOs that are P2PKH (Pay to Pub Key Hash) go to the hash of a public key. More specifically, the following script, known as the scriptPubKey, is pushed onto a stack: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
These operations define how the coins are allowed to be spent. OP_DUP = Duplicate the top item of the stack, OP_HASH160 = Popping the top of the stack and pushing the RIPEMD-160 hash of the SHA-256 hash of the popped data back onto the stack, = Pushing the recipient’s decoded Address onto the stack, OP_EQUALVERIFY = checking if the top two values on the stack are equal and popping them if true, and OP_CHECKSIG = checks if the signature is verified by the public key on the stack (more on this later). For more information, check the bitcoin wiki’s section on bitcoin script.
A legacy bitcoin address (beginning with a 1) is just a public key hash that is encoded in Base58 with a version byte (0x00) prepended, and a checksum appended to the end. To convert an address to a PubKeyHash is as simple as decoding from Base58.
However, when a UTXO is Spent, the spender must prove ownership by providing some additional values to satisfy the UTXO’s scriptPubKey. This combination of values is known as the scriptSig, and for P2PKH consists of two parts: Signature>
When a Transaction is evaluated and verified, the input’s scriptSig and the scriptPubKey of the output it’s spending are placed onto a stack so the whole thing becomes: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
First, the signature is pushed to the stack. Then the public key associated with the bitcoin address. OP_DUP duplicates the public key, OP_HASH160 pops the public key off the stack and pushes the hash of the public key onto the stack. Then the PubKeyHash whom the coins belongs to is pushed to the stack. Then OP_EQUALVERIFY checks to see if the public key does indeed hash to the specified PubKeyHash. If true, the two values are popped off the stack. Then OP_CHECKSIG takes the last two elements from the stack (the signature and the unhashed public key) and checks if the signature is valid. If true, the input is valid and “unlocks” the UTXO for spending.
This is a big part of why you should not reuse addresses: only when you SPEND a UTXO do you reveal your Public Key to the world. Until spent, your public key is secured behind other barriers (SHA-256 and RIPEMD-160). If Elliptic Curve cryptography is to be broken by quantum computers, it will also need to break the hashing algorithms above as well to at least invalidate P2PKH outputs. Back in the very early days, some Outputs were made using P2PK (Pay to Pub Key) which does not use this intermediary hashing technique and is considered far less secure, thus it is rarely used today if at all.
Septem_151
submitted by highhighhopes101 to TalkativePeople [link] [comments]

/u/brianddk on ELI5 Going from 0 to BECH32 address in JavaScript

Generated from the test-vector seed 12x {'all'}. The library you want is bitcoinjs-lib. Here's a clip of code I wrote in January 2018. You might need to use some older versions of these libraries for it to work. I haven't updated it. I know there were some malware inserted into the NodeJS CDN at some point, but I don't know which release. If I recall I think Jan 2018 was clean but I noted not to update bitcoinjs for some reason.
I'll leave generating an xpub or seed from imputed entropy as an exercise. A fuller implementation (that I stole this from) can be found here: https://github.com/iancoleman/jsbip39
``` // output of get_public_node var pubNode='xpub6BiVtCpG9fQPxnPmHXG8PhtzQdWC2Su4qWu6XW9tpWFYhxydCLJGrWBJZ5H6qTAHdPQ7pQhtpjiYZVZARo14qHiay2fvrX996oEP42u8wZy'
var bitcoin=require('bitcoinjs-lib'); var root=bitcoin.HDNode.fromBase58(pubNode); var child=root.derivePath('0/0'); var pubKey = child.keyPair.getPublicKeyBuffer()
// legacy address var lgcyAddr=child.getAddress();
// p2sh segwit var redeemScript = bitcoin.script.witnessPubKeyHash.output.encode(bitcoin.crypto.hash160(pubKey)) var scriptPubKey = bitcoin.script.scriptHash.output.encode(bitcoin.crypto.hash160(redeemScript)) var p2shAddr = bitcoin.address.fromOutputScript(scriptPubKey)
// bech32 segwit var bech32Addr = bitcoin.address.fromOutputScript(redeemScript)
console.log(lgcyAddr); console.log(p2shAddr); console.log(bech32Addr); ```
brianddk
submitted by highhighhopes101 to TalkativePeople [link] [comments]

As part of my ongoing effort to develop stupid shit for Garlicoin, I present you: W-addresses!

“Wait, what?!” I hear you asking? Well…(buckle up, this is another one of my technical posts that goes on, and on…)
For some time now, I have been using native SegWit (Pay-to-Witness-Public-Key-Hash, P2WPKH) transactions for myself. Mostly because they have a 75% fee subsidy on signature data (which comes out on ~50% fee subsidy on the entire transaction, depending on the type of transaction) and I am dutch after all ;-)
It turns out that Garlicoin Core kind of supports them and kind of does not. If you manually register the transaction redeem script to your wallet (using the addwitnessaddress command) it will start recognizing them on the blockchain but gets kind of confused on how to deal with them, so it registers them all as ‘change’ transactions. Still, this means you can receive coins using these types of transactions and pay with them in all ways you can with regular Garlicoins, except your transactions are cheaper.
However, sending coins using native SegWit is quite a hassle. You can basically only do it by creating your own raw transactions (createrawtransaction, edit it to make it native SegWit, fundrawtransaction, signrawtransaction, sendrawtransaction). On top of this, any change address the wallet creates are still legacy/normal Garlicoin addresses, so you will end up with a bunch of unspent transaction outputs (UTXOs) for which you have to pay full fee anyway. I decided we (I) could do better than this.
But first a few steps back. What is this native SegWit anyway and weren’t people already using SegWit? Wasn’t there a user that just after mainnet launched accidentally made a SegWit transaction? So what the hell am I talking about?
To understand this, you will need to know a few things about what SegWit is and how Bitcoin Garlicoin transactions work in general. Note that this bit gets really technical, so if you are not interested, you might want to skip ahead. A lot.
First thing to understand is that addresses are not really a thing if you look at the blockchain. While nodes and explorers will interpret parts of a transaction as addresses, in reality addresses are just an abstraction around Bitcoin Script and an easy way send coins instead of asking people “hey, can you send some coins to the network in such a way that only the private key that corresponds to public key XYZ can unlock them?”. Let’s look at an example: say I ask you to send coins to my address GR1Vcgj2r6EjGQJHHGkAUr1XnidA19MrxC. What ends up happening is that you send coins out a transaction where you say that the coin are locked in the blockchain and can only be unlocked by successfully executing the following script:
OP_DUP OP_HASH160 4e9856671c3abb2f03b7d80b9238e8f5ecd9f050 OP_EQUALVERIFY OP_CHECKSIG
Now, without getting too technical, this means something like this:
As you can see, the address actually represents a well-known piece of script. This start making sense if you look at the decoded address:
26 4E9856671C3ABB2F03B7D80B9238E8F5ECD9F050 F8F1F945
The first byte (0x26, or 38) is the version byte. This tells the clients how the interpret the rest of the script. In our case 38 means Pay-to-Public-Key-Hash (P2PKH), or in other words the script mentioned above. The part after that is just the SHA1 hash of the public key and the final 4 bytes are a checksum to verify you did not make a typo when entering the address.
Enter SegWit. What SegWit exactly is depends on who you are talking to, however it mostly is a different transaction format/protocol. The main change of SegWit is that signature data is not longer included in the transaction (fixing transaction malleability). Instead transaction data is sent separate from the transaction itself and outside of the (main) blocks.
This is not really that much of an issue, except for the fact that people wanted to enable SegWit as a soft-fork instead of a hard-fork. This means that somehow unupgraded nodes needed a way to deal with these new transaction types without being able to verify them.
The solution turned out to be to make use of an implementation detail of Bitcoin Script: if a piece of script executes without any errors, the last bit of data determines whether the transaction is valid (non-zero) or invalid (zero). This is what they used to implement SegWit.
So what does this look like? Well, you might be surprised how simple a P2WPKH (the SegWit way of doing a P2PKH transaction) script looks:
00 4e9856671c3abb2f03b7d80b9238e8f5ecd9f050
Yes. That’s it.
The first byte is the Witness program version byte. I.e. it tells you how the other data should be interpreted (very similar to how addresses work). Then there is the hash of the public key. As you can see, SegWit does not actually use Bitcoin Script. Mostly because it needs old nodes to ‘just accept’ its transactions. However interestingly enough, while the transaction format changed, the transaction data is pretty much the same:
This means that these kind of SegWit transactions need a new way of addressing them. Now, you might think that this is where the ‘3’ addresses on Bitcoin or the ‘M’ addresses on Garlicoin come in. However, that is not the case.
These addresses are what are called Pay-to-Script-Hash (P2SH) addresses. There scrypt is like this:
OP_HASH160 35521b9e015240942ad6b0735c6e7365354b0794 OP_EQUAL
Huh? Yeah, these are a very special type of transactions, that kind of go back to the “hey, can you send some coins to the network in such a way that only the private key that corresponds to public key XYZ can unlock them?” issue.
These transactions are a way to have arbitrary smart contracts (within the limits of Bitcoin Script) to determine whether a transaction output can be spend or not without the sender of the coins having to deal with your scripts. Basically they use a hash of the “real” script, which whoever owns the coins has to provide when they want to spend them, as well as the specific inputs required for a script. This functionality is for example used in multi-signature (MultiSig) wallets, without requiring someone sending money to these wallets having to deal with random bits of information like how many signatures are required, how many private keys belong to the wallet, etc.
This same method is used for so called P2SH-wrapped SegWit transactions (or P2SH-P2WPKH). Consider our earlier SegWit transaction output script:
00 4e9856671c3abb2f03b7d80b9238e8f5ecd9f050
Or 00144e9856671c3abb2f03b7d80b9238e8f5ecd9f050 in low-level hex. The P2SH script for this would be:
OP_HASH160 a059c8385124aa273dd3feaf52f4d94d42f01796 OP_EQUAL
Which would give us address MNX1uHyAQMXsGiGt5wACiyMUgjHn1qk1Kw. This is what is now widely known and used as SegWit. But this is P2SH-wrapper SegWit, not native or "real" SegWit. Native would be using the data-only SegWit script directly.
The reason for using the P2SH variant is mostly about compatibility. While SegWit nodes understand these newer transactions, they were never officially assigned a way to convert them to addresses. Hence, they will show up in blockchain explorers as Unparsed address [0] or something similar. Then there is also the whole thing about old nodes and relaying non-standard transactions, but I will skip that bit for now.
Bitcoin is using/going to use new BECH32 addresses for native SegWit transactions, which looks completely different from the old Base-58 encoded addresses. However, right now, especially on Garlicoin, you cannot really use them and have to use the P2SH variant. But why not use these new cool transaction types without having to deal with all that useless and complex P2SH wrapping, right? Right? …
Well, I went ahead and gave them their (unofficial) address space.
So last thursday I made some changes to Garlicoin Core, to make dealing with these native SegWit transaction a lot easier. In short, the changes consist of:
  • Assigning address version byte 73 to them, in other words addresses starting with a ‘W’ (for ‘witness’).
  • Allowing the use of ‘W’ addresses when sending coins.
  • Make the wallet automatically recognize the SegWit transaction type for any newly generated address.
  • Add the getwitnessaddress command, which decodes a version 38 ‘G’ address and re-encodes the same data as a version 73 ‘W’ address (unfortunately it is not as simple as just changing the first letter). Note that this can be any address, not just your own. (That said, you should not send SegWit transactions to people not expecting them, always use the address given to you.)
  • Added the usewitnesschangeaddress configuration setting, to automatically use the cheaper SegWit transaction outputs for transaction change outputs.
  • (Since using the 'W' address only changes the way coins are sent to you and the private key used for both transaction types is the same:) When receiving coins they show all up under the original ‘G’ address, whether a SegWit or legacy/normal transaction type was used. The idea behind this is that both are actually the same "physical" (?) address, just to the way to coins to it differs. Address book entries are also merged and default to the ‘G’ address type.
Anyway, I don’t expect people to actually use this or it getting merged into mainline or anything. I actually mostly made this for myself, but thought I should share anyway. I guess it was also a nice opportunity to talk a bit about transactions and SegWit. :-)
Btw, I also changed my pool to allow mining to ‘W’ addresses, to make coin consolidation cheaper (due to the SegWit fee subsidy). Right now this is only for instant payout though (as I would have to update the wallet node the pool is using for daily payout, which I haven’t done yet).
Also note that you can actually mine to a ‘W’ address (and therefore use cheaper transactions) even if you are running the official, non-patched version of Garlicoin Core, however:
  • You need to manually convert your ‘G’ address to a ‘W’ address.
  • You need to run the addwitnessaddress command (Help -> Debug Window -> Console) to make the wallet recognize SegWit transactions (you can ignore the ‘M’ address it produces).
  • The wallet might get a bit confused as it does not really understand how it got the coins. This is mostly notable in the ‘Coin Control’ window if you have it enabled. Apart from that everything should still work though.
submitted by nuc1e4r5n4k3 to garlicoin [link] [comments]

VGO will be launched on LOEX Global at 20:00 on July 2.

Dear LOEX users: Loex Global will soon launch VGO (VirtualGoodsToken) and open VGO/USDT trading pairs. The specific time is as follows: Loex Global will provide VGO charging service at 14:00 Singapore time on July 2.VGO/USDT trading market will be opened at 20:00 on July 2.
Token Introduction Token Name:VirtualGoodsToken Abbreviation:VGO Issue Supply:2.1 billion Website:http://vgo.life Official Website:http://vgo.life/vgo_white_paper.pdf Project Introduction:VGO (VirtualGoodsToken, Chinese for Virtual Goods Pass) addresses many of the limitations of the Bitcoin system as a transactional, everyday currency designed to provide a scalable and sustainable alternative to Bitcoin. VGO is a bitcoin spread project. The algorithm mainly includes SHA256 and RIPEMD160. Bitcoin combines the application of these two hash algorithms into two functions: hash256(d)=sha256(sha256(d)) and hash160(d)= Ripemd160(sha256(d)), where d is the byte array to be hashed, and the two generate hexadecimal values ​​of 256 bits (32 bytes) and 160 bits (20 bytes), respectively. Hash256 is mainly used to generate identifiers, such as block ID, transaction ID, etc., and hash160 is mainly used to generate VGO addresses. The above algorithm can be developed on any computer and never requires specialized mining equipment. VGO enables efficient transaction confirmation. And through the VVM (VGO Virtual Machine) smart contract virtual machine to carry out smart contract encoding operation, providing a faster, more scalable blockchain platform, more suitable for daily trading use.
Risk Reminder Investing in digital assets comes with high risks due to huge price fluctuations. Before investing, please have a full understanding of all the risks of investing in digital assets and be prudent of your own investment decisions.
Enjoy your trading on Loex Global! Follow us on: www.loex.io
Loex Global Related Community
Official reddit:https://www.reddit.com/useLOEXCHANGE
Official Twitter:https://twitter.com/LoexGlobal
Official telegraph group:http://t.me/loexmember
Official BQI community:https://t.bqi.com/exchange/loex.html
Official Weibo :https://weibo.com/6870211274/profile?rightmod=1&wvr=6&mod=personnumber
Loex Global June 28, 2019
submitted by LOEXCHANGE to u/LOEXCHANGE [link] [comments]

BIP 199 HTLC initial stack state

Hey fellow bitcoiners and redditors

I'm trying to understand how HTLCs (Hashed Time-Locked Contracts) can be implemented in Bitcoin and BIP-199 turned out to be the best resource for that purpose.

TL;DR
Question answered!
  1. Does the stack need to feature the secret/image twice in the OP_IF case? => call the script with [pubKey, signature, 1]
  2. How can the OP_ELSE flow ever be executed successfully (since this requires the stack to be empty, but [pubKey, signature] are required for OP_CHECKSIG at the very end of the script )? => call the script with [pubKey, signature, 0]

Full story
This is the example HTLC script I copied from BIP-199:
OP_IF
[HASHOP] OP_EQUALVERIFY OP_DUP OP_HASH160
OP_ELSE
[TIMEOUTOP] OP_DROP OP_DUP OP_HASH160
OP_ENDIF
OP_EQUALVERIFY
OP_CHECKSIG

IF-Case (seller can claim the buyers deposited BTCs)
TL;DR: detailed debug log of this path. Question: Can I avoid providing the preimage twice?

Before running this script, the preimage should be known and the stack should looks:
preimage
preimage
pubKey
signature

  • So since the stack is not empty, it will jump into the OP_IF clause.
    • the OP_IF will pop the top value => stack is now: [preimage, pubKey, signature]
  • [HASHOP] will hash the preimage
    • the preimage on the stack will, be replaced by the image => stack: [image, pubKey, signature]
  • digest (a synonym for image) will be pushed
    • => stack: [image, image pubKey, signature]
  • OP_EQUALVERIFY checks the two top items for equality: image == image => true
    • ...and removes them, if they are equal => stack: [pubKey, signature]
  • OP_DUP will duplicate the pubKey, => stack: [pubKey, pubKey, signature]
  • OP_HASH160 will double-hash the pubKey => stack: [p2pkhAddress, pubKey, signature]
  • represents the p2pkhAddress => stack: [p2pkhAddress, p2pkhAddress, pubKey, signature]
  • OP_EQUALVERIFY checks the two top items for equality: p2pkhAddress == p2pkhAddress => true
    • ...and removes them, if they are equal => stack: [pubKey, signature]
  • OP_CHECKSIG checks the signature
  • Done, all fine!
  • Question: This flow requires the secret to be on the stack twice before starting the script; Can I avoid that somehow?

ELSE-Case (buyer claims refund of his/her deposited BTCs)
Since the script runs an OP_CHECKSIG at the very end. This means the stack has to contain at least [pubKey, signature] before the execution pointer moves to OP_IF. However, OP_IF returns true "If the top stack value is not False". So how can the script possibly ever execute the OP_ELSE flow?

Disclaimer
  • My mother tongue is not English, please forgive me any mistakes. :)
  • I'm just getting started with BTC scripting, please forgive me any noob mistakes.
  • I also searched the whole stackexchange/search engine/reddit/github universum for this issue, obivously without success.
PS - buy Bitcoin :)
submitted by redditeraya to Bitcoin [link] [comments]

Is it possible to bruteforce a public key?

Knowing the hash160 and the bitcoin address itself, is there a way to find out the public key if there is no spend transaction?
submitted by quin24 to Bitcoin [link] [comments]

Inquiry on SegWit(P2SH) Address

Hi, I'm Daisy,an employee working at BaihuaBlockchian(a Chinse WeChat Official Account) . We want to help common people have a go about lightning network. So I'm searching for a wallet which supports lightning network recently. And BlueWallet is the sole one supports lightning network based on IOS. However I came across a problem about SegWit(P2SH) Address. For example, when I imported my private key 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn (don't worry, there is no bitcin in this address) and chose SegWit(P2SH) Address , I got the address
35YjHrdgaS3R3pw2KFrMyBu3e2PZN7L7kD. I guess this is how BlueWallet generates a SegWit(P2SH) Address
WIF private key:5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn
HEX: 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD
uncompressed public key:04f028892bad7ed57d2fb57bf33081d5cfcf6f9ed3d3d7f159c2e2fff579dc341a07cf33da18bd734c600b96a72bbc4749d5141c90ec8ac328ae52ddfe2e505bdb
HASH160(uncompressed public key):211b74ca4686f81efda5641767fc84ef16dafe0b
Redeem script:0014211b74ca4686f81efda5641767fc84ef16dafe0b
HASH160(redeem script ):2a4f4a92750379d39fc9b73cbfb2ff2e478ff291
Base58Check:35YjHrdgaS3R3pw2KFrMyBu3e2PZN7L7kD
And when I used the private key 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn to spend bitcoin in 35YjHrdgaS3R3pw2KFrMyBu3e2PZN7L7kD, I got an alert :
Segwit supports only compressed public keys
So I think maybe the right way should be like this:
HEX: 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDDWIFC private key:KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ
compressed public key:03f028892bad7ed57d2fb57bf33081d5cfcf6f9ed3d3d7f159c2e2fff579dc341a
HASH160(compressed public key):bbc1e42a39d05a4cc61752d6963b7f69d09bb27b
Redeem script:0014bbc1e42a39d05a4cc61752d6963b7f69d09bb27b
HASH160(redeem script):9ca0e746160117cc342531ab7e44d0e12961c544
Base58Check:3FyC6EYuxW22uj4CaEGjNCjxeg7gHyFeVv
Therefore, I think BlueWalllet makes a mistake when it's generating a SegWit(P2SH) Address, it doesn't convert the umcompressed key into compressed key and SegWit doese not support uncompressed key.
Yesterday, I sent several Satoshis into this address 3JyGdeQ8oth9aGZr1DAoHcGyczkkTFg3H8 which was also generated by BlueWallet. I'm not sure if they are lost forever.

submitted by Daisy2019121 to bluewallet [link] [comments]

Please Protect Consumers by Using Stealth Addressing

It's recently been brought to attention that various companies have been heavy handed in their restrictions of how one may spend their purchased coins. I'm writing this up so that people can have a basic understanding of stealth addressing and how it works. If you'd like more details on the cryptography behind stealth addresses, please refer yourself to 13.4.3 of Wiley's Understanding Bitcoin: Cryptography, Engineering and Economics.
A stealth address looks like this: vJmwY32eS5VDC2C4GaZyXt7i4iCjzSMZ1XSd6KbkA7QbGE492akT2eZZMjCwWDqKRSYhnSA8Bgp78KeAYFVCi8ke5mELdoYMBNep7L
When you send funds to a stealth address, you create a data containing (OP_RETURN) output and a normal output to a one-time use Bitcoin address. The latter output contains the money you actually wish to send, while the former output contains some data which looks, to observers of the blockchain, like a bunch of indecipherable garbage.
Here's an example:
Tx hash 6ea5c6f1a97f382f87523d13ef9f2ef17b828607107efdbba42a80b8a6555356 https://blockchain.info/tx/6ea5c6f1a97f382f87523d13ef9f2ef17b828607107efdbba42a80b8a6555356
So, when you send money from Bob to Alice using a stealth address, what's basically going on from a privacy perspective?
To everyone else observing, it's impossible to tell that Alice was sent money. The only thing that they can tell is that Bob sent money to a stealth output, and that's if Bob himself didn't receive his funds as the result of stealth output and his address is somehow already known.
Using stealth addresses, it will be impossible for someone to tell where your money is being sent. The only thing obviously visible is the amount sent. In the future, a Bitcoin sidechain, such as that proposed by andytoshi and gmaxwell, may have mandatory stealth addressing as found in altcoins such as Monero; however, the technology is currently available for use in Bitcoin using simple OP_RETURN scripts.
There is a downside to this technology: to receive coins, you need to scan every incoming Bitcoin transaction to see if it might have an output belonging to you. However, I'm sure if you care about the privacy of your customers and their ability to be able to send funds to you in the future, the benefits more than outweigh the costs!
Current software/clients supporting stealth transactions include:
Hopefully, more soon!
Additional, for free references if you don't want have access to the Wiley book:
https://wiki.unsystem.net/en/index.php/DarkWallet/Stealth
http://sx.dyne.org/stealth.html
submitted by therealtacotime to Bitcoin [link] [comments]

Deep Analysis Of Qtum's Account Abstraction Layer (Qtum AAL)

Analysis of Qtum Account Abstraction Layer (AAL) Implementation
https://mp.weixin.qq.com/s?__biz=MzI2MzM2NDQ2NA==&mid=2247485993&idx=1&sn=57ad353fd13b10ab85b62d693f86b1f5&chksm=eabc4036ddcbc9208ea766274defc543a9238967c5d2c541e615906a25a2962d75c4c6bd2c2b&scene=21#wechat_redirect
Qtum is designed with a bitcoin UTXO-based account model and implements a smart contract that supports the EVM specification, which is done through the Account Abstract Layer (ALA). AAL adapts the UTXO account to the EVM contract account, so that the AAL can use the UTXO transaction output to create a smart contract on the chain, send the transaction to the contract account to trigger the execution of the contract, and the AAL will eventually execute after the execution. The results were processed and adapted to UTXO. Thanks to the AAL, contract developers don't need to care about the UTXO transformation details related to contract operations, they can use the features of EVM to develop and are compatible with existing Ethereum smart contracts. This paper first analyzes the working process of AAL by interpreting the implementation code from UTXO transaction to smart contract execution.
 
1. UTMO transaction added script opcode
Qtum has added three opcodes OP_CREATE, OP_CALL and OP_SPEND for UTXO trading scripts to provide operational support for conversion between UTXO and EVM account models. These opcodes are defined in the opcodetype enumeration type:
 
Enum opcodetype{
......
OP_CREATE = 0xc1,
OP_CALL = 0xc2,
OP_SPEND= 0xc3,
......
}
 
These three opcodes have the following effects:
OP_CREATE is used to create smart contracts;
OP_CALL is used for the execution of the contract;
OP_SPEND is used for the cost of the contract balance.
In order to identify and process the transactions controlled by these opcodes during the block generation process, the HasCreateOrCall() and HasOpSpend() functions are added to the class CTransaction for UTXO model transactions for use in the mempool in the new block. The transaction is processed and the corresponding processing is added to the EvalScript() function of the script opcode parsing.
 
2. Conversion of UTXO transactions to EVM model transactions
When generating new blocks, in addition to regular parameter legality, consensus rules, DDOS attack checks, etc. for UTXO transactions, it is also necessary to use the opcode check function HasCreateOrCall() to determine whether the transaction output contains OP_CREATE or OP_CALL, which respectively correspond to EVM needs to perform contract creation or contract calls. This section has the following processing:
 
2.1 Performing account parameter extraction for EVM model
The contract uses the data, gasPrice, gasLimit, and VM version parameters in the execution of the EVM. These parameters are sent by the RPC call sendtocontract. The sendtocontract generates a UTXO transaction and uses the OP_CALL opcode in the transaction output. Will be broadcast to the blockchain network. The adaptation from UTXO to EVM in AAL is implemented by the QtumTxConverter class, in which the member functions extractQtumTransactions() and parseEthTXParams() of the class complete the parameter extraction for all such UTXO transaction output. The code fragment is as follows:
 
Dev::Address receiveAddress;
Valtype vecAddr;
If (opcode == OP_CALL)
{
vecAddr = stack.back();
Stack.pop_back();
receiveAddress = dev::Address(vecAddr);
}
Valtype code(stack.back());
Stack.pop_back();
Uint64_t gasPrice = CScriptNum::vch_to_uint64(stack.back());
Stack.pop_back();
Uint64_t gasLimit = CScriptNum::vch_to_uint64(stack.back());
Stack.pop_back();
VersionVM version(CScriptNum::vch_to_uint64(stack.back()));
Stack.pop_back();
Return EthTransactionParams{version, dev::u256(gasLimit), dev::u256(gasPrice), code,
receiveAddress }
 
The above code first judges that if the opcode is OP_CALL, the contract with the address vecAddr has been created, so it is directly converted into the address of the EVM format receiveAddress, otherwise it is OP_CREATE, the corresponding contract is created, there is no such field, so no extraction is done. Next, the data, gasPrice, gasLimit, and VM version are extracted in turn, which are all essential parameters for the EVM to execute bytecode.
 
2.2 Transaction conversion of the EVM account model
Transaction conversion is done through the function createEthTX() of the QtumTxConverter class. The QtumTransaction type transaction is created using the parameters extracted in the previous step and the UTXO transaction output vout. Since QtumTransaction is derived from the dev::eth::Transaction class in EVM, the QtumTransaction class is supported by operations related to EVM execution.
 
QtumTransaction txEth;
If ( etp.receiveAddress == dev::Address() ) {
txEth = QtumTransaction(txBit.vout[nOut].nValue, etp.gasPrice, (etp.gasLimit *
Etp.gasPrice),
Etp.code, dev::u256(0));
}
Else{
txEth = QtumTransaction(txBit.vout[nOut].nValue, etp.gasPrice, (etp.gasLimit *
Etp.gasPrice),
etp.receiveAddress, etp.code, dev::u256(0));
}
Dev::Address sender(GetSenderAddress(txBit, view));
txEth.forceSender(sender);
txEth.setHashWith(uintToh256(txBit.GetHash()));
txEth.setNVout(nOut);
 
First, the code etp.receiveAddress == dev::Address() determines whether the contract is not in the EVM state and needs to be newly created or the contract already included in the EVM state. The only difference is the contract address. Then, the QtumTransaction() constructor completes some of the transaction parameter constructs, the next statement extracts the sender of the transaction, and then sets the transaction HASH. A UTXO transaction supports multiple inputs and outputs. Qtum's AAL design takes this into account, so AAL supports a transaction output containing UTXO accounts and contract accounts. The last set nOut indicates that the nOut output of the transaction is sent to the smart contract. , so this output will trigger contract execution. In this way, the transaction conversion is completed according to the EVM account model.
 
3. Contract execution and UTXO conversion of execution results
The execution of the contract changes state (managed by the QtumState class's instantiated object globalState). For the contract state, Qtum follows the EVM definition, so it is compatible with all EVM-compliant smart contracts. But the transfer of the account amount, Qtum made a UTXO conversion, which means that the smart contract and the ordinary UTXO model account can complete the interaction, which is an important part of AAL to achieve UTXO support smart contract. The following is a brief introduction to the conversion process of contract execution and status results.
 
3.1 Contract execution environment construction and contract execution
The execution of the contract is a critical step in the processing of the contract, directly affecting the state of the contract. The implementation of the EVM to the contract bytecode is implemented by the ByteCodeExec class. The main function is performByteCode(). The main process of this step is to use the transaction parameters extracted above to build the virtual machine execution environment, and then complete the execution of the contract, the code is as follows:
 
For(QtumTransaction& tx : txs){
Dev::eth::EnvInfo envInfo(BuildEVMEnvironment());
Std::unique_ptr
Se(dev::eth::ChainParams(dev::eth::genesisInfo(dev::eth::Network::HomesteadTest)).
createSealEngine());
If(!tx.isCreation() && !globalState->addressInUse(tx.receiveAddress())){
Dev::eth::ExecutionResult execRes;
execRes.excepted = dev::eth::TransactionException::Unknown;
Result.push_back(ResultExecute{execRes, dev::eth::TransactionReceipt(dev::h256(),
Dev::u256(), dev::eth::LogEntries()), CTransaction()});
Continue;
}
Result.push_back(globalState->execute(envInfo, *se.get(), tx, type, OnOpFunc()));
}
 
The first is to build a contract execution environment, which is done by BuildEVMEnvironment(). It can be seen that this execution environment is carried out for each independent transaction, so as to minimize the contract execution process of different transactions and avoid the cross-effects in the contract execution process. Then build a new sealEngine class, which is the EVM execution engine, which is done by the createSealEngine() function. In the middle, the possible state exceptions that occur are checked, and then globalState->execute() completes the execution of the contract. Here, the execution environment envInfo and the EVM execution engine se are used.
 
3.2 UTXO conversion of contract execution results
After the completion of the contract execution, the result is stored in vector result. The vector vector records the transfer relationship between EVM accounts generated by each contract execution. AAL completes the transfer from EVM account model to UTXO model by converting these transfers into UTXO transactions. Conversion of the transaction. This processing is implemented by the processingResults() function. The following is a code snippet.
 
ByteCodeExecResult resultBCE;
For(size_t i = 0; i < result.size(); i++){
If(result[i].execRes.excepted != dev::eth::TransactionException::None){
If(txs[i].value() > 0){
CMutableTransaction tx;
Tx.vin.push_back(CTxIn(h256Touint(txs[i].getHashWith()), txs[i].getNVout(), CScript() <<
OP_SPEND));
CScript script(CScript() << OP_DUP << OP_HASH160 << txs[i].sender().asBytes() <<
OP_EQUALVERIFY << OP_CHECKSIG);
Tx.vout.push_back(CTxOut(CAmount(txs[i].value()), script));
resultBCE.valueTransfers.push_back(CTransaction(tx));
}
} else {
resultBCE.usedFee += CAmount(result[i].execRes.gasUsed);
CAmount ref((txs[i].gas() - result[i].execRes.gasUsed) * txs[i].gasPrice());
If(ref > 0){
CScript script(CScript() << OP_DUP << OP_HASH160 << txs[i].sender().asBytes() <<
OP_EQUALVERIFY << OP_CHECKSIG);
resultBCE.refundOutputs.push_back(CTxOut(ref, script));
resultBCE.refundSender += ref;
}
} if(result[i].tx != CTransaction()){
resultBCE.valueTransfers.push_back(result[i].tx);
}}
 
First, the resultBCE variable of type ByteCodeExecResult is defined to save the result of the conversion. Use the opcode OP_SPEND to implement the transaction cost, because the UTXO of Bitcoin uses the private key signature to realize the balance after the transaction input is unlocked, and the EVM implementation involves the transfer between different accounts, so these need to be implemented by OP_SPEND Transfer to UTXO model trading conversion. If execRes.excepted is not None, ie the contract execution exception, the balance is returned to the contract caller. Otherwise, if there is no abnormality, the remaining gas after deducting the consumed gas is returned to the caller of the contract. For the transfer that occurs during contract execution, its UTXO transaction is stored in result[i].tx. Therefore, transactions between different UTXO accounts generated by this process of contract execution are stored in the valueTransfers vector, and eventually these transactions are included in the new block. At this point, the AAL module completes the conversion from EVM transactions to UTXO.
 
4. Summary
AAL assists in the creation, execution, and cost of contracts through the addition of UTXO script opcodes. Before the contract is created and executed, the conversion of the UTXO transaction to the EVM model transaction is required, and then the executed EVM execution environment and engine are used to complete the execution of the contract. AAL finally processed the results of the contract and adapted it from EVM to UTXO, thus implementing a UTXO-based smart contract. AAL makes Qtum compatible with EVM-compliant smart contracts, providing Dapp with a new base platform, while UTXO's advantages allow for advantages such as parallel processing and privacy.
 
Huaming
He is currently a Qtum core developer and researcher. He graduated from Huazhong University of Science and Technology and has a graduate degree from the Chinese Academy of Sciences. Prior to joining Qtum, he has been engaged in the development of algorithms and protocol stacks for many years of wireless networks (including 4G LTE and wireless ad hoc networks); since 2015, he has been in contact with blockchain technology and has participated in the first hackathon competition organized by Wanxiang Blockchain. .
submitted by thisthingismud to Qtum [link] [comments]

Unconfirmed Bitcoin Problem

I posted this on another forum and was referred here to try to get a hold of a Bitcoin Developer to help solve my problem. IMO, there is a bug in the blockchain. Either the blockchain is reporting transactions to me that never existed, or I have unconfirmed transactions in my ledger that need to be confirmed and are not confirming. The transactions are from 2013 and 2014 when I first started mining.
I am running the latest version of Bitcoin Core, and have fully synced through the blockchain.
Background: Years ago I mined a little bit of BTC, and forgot about it. With the prices going astronomical I wanted to open my old wallet up and sell some. I opened it in Bitcoin Core and I can see a bunch of transactions, but they're all unconfirmed and my balance is reporting zero.
Address: 1BWCNpA3MGYHS3sbbVpGW7jY1Ean1Y3sX4
One of many transaction id's:
Status: 0/unconfirmed, not in memory pool Date: 1/23/2014 22:01 Credit: 0.10630472 BTC Net amount: +0.10630472 BTC Transaction ID: c16587ae806c2392635a20843a78f8f6a1275c6990a797f8266e3b9d8a29bd1e Transaction total size: 225 bytes Output index: 0
When I try to rebroadcast the raw transaction I get this...
Missing parents for c16587ae806c2392635a20843a78f8f6a1275c6990a797f8266e3b9d8a29bd1e while inserting: [c677f8172824b4bb761f0ce51e23235f4a6613c62e74e847936f95440fae6b6c]
If I decode it I get this...
{ "lock_time":0, "size":225, "inputs":[ { "prev_out":{ "index":0, "hash":"c677f8172824b4bb761f0ce51e23235f4a6613c62e74e847936f95440fae6b6c" }, "script":"47304402204f1602b609027990a8e17355bdb9d967882aed3ac85e06c9311d33a3228ba9d90220097941a24457d36508f8d17e94400184c849f44c48296aab09e4deb9d23e4e2f012103db4cc04dac3ee0cb4ab0afc108eb1f398ab659be127240a672b1abe139f84b60" } ], "version":1, "vin_sz":1, "hash":"c16587ae806c2392635a20843a78f8f6a1275c6990a797f8266e3b9d8a29bd1e", "vout_sz":2, "out":[ { "script_string":"OP_DUP OP_HASH160 7336d1277adaf305dddde5cedc686bb1e4988bda OP_EQUALVERIFY OP_CHECKSIG", "address":"1BWCNpA3MGYHS3sbbVpGW7jY1Ean1Y3sX4", "value":10630472, "script":"76a9147336d1277adaf305dddde5cedc686bb1e4988bda88ac" }, { "script_string":"OP_DUP OP_HASH160 95a28eec6c32896699df4ca36c880d7e42e504c5 OP_EQUALVERIFY OP_CHECKSIG", "address":"1EeCRLCksdBRJ7SUkAAFKk1TssVv62hoTQ", "value":89379528, "script":"76a91495a28eec6c32896699df4ca36c880d7e42e504c588ac" } ] }
Does this offer any more clues?
This is the raw transaction in Hex...
01000000016c6bae0f44956f9347e8742ec613664a5f23231ee50c1f76bbb4242817f877c6000000006a47304402204f1602b609027990a8e17355bdb9d967882aed3ac85e06c9311d33a3228ba9d90220097941a24457d36508f8d17e94400184c849f44c48296aab09e4deb9d23e4e2f012103db4cc04dac3ee0cb4ab0afc108eb1f398ab659be127240a672b1abe139f84b60ffffffff024835a200000000001976a9147336d1277adaf305dddde5cedc686bb1e4988bda88acc8d25305000000001976a91495a28eec6c32896699df4ca36c880d7e42e504c588ac00000000
I really need help ASAP so I can sell some coins. How do I resolve this issue, or at the bare minimum how do we correct the blockchain so this issue doesn't affect others? Any help is appreciated!
submitted by AmericasLastHope to Bitcoin [link] [comments]

what is this m i misguided.......

i thought bct bech32 address format is superior with its 128 bit security compare to hash160 based coins with 80 bit security........i concluded bch cashaddress "bitcoincash:q....................." is having 80 bits security.....where as btc native segwit address format "bc1q..........." is 128 bit secure since its base32......then i got this.....
https://news.bitcoin.com/bitcoin-cash-community-prepares-for-change-the-address-day/
i saw bch cashaddress is also bech32......plz help me understand what is correct and what is wrong.......
submitted by newbe567890 to btc [link] [comments]

Those large Bitcoin Cash transactions are not what you think they are

I've decided to take a look at these large transactions that occurred on Bitcoin Cash yesterday. I have analyzed them to see what they are doing, and it is actually kind of funny. Contrary to popular belief, those transactions are not preparation transactions for the attack presented by _chjj yesterday, and I will explain why below.
For starters, lets look at the large transactions. There are 7 of them: https://bch-bitcore2.trezor.io/tx/ac4849b3b03e44d5fcba8becfc642a8670049b59436d6c7ab89a4d3873d9a3ef, https://bch-bitcore2.trezor.io/tx/1bd4f08ffbeefbb67d82a340dd35259a97c5626368f8a6efa056571b293fae52, https://bch-bitcore2.trezor.io/tx/c0472d267c8d178804eefdddb348f2f7a8a95bf6a4152b952a5fb6bfa09cab2e, https://bch-bitcore2.trezor.io/tx/27cb862d9c4c7eaace8d901e89365f2e843572788b774b14e5675fd9107d6637, https://bch-bitcore2.trezor.io/tx/b87d1dc8c0f3b450f1c1a845a5561ad87d850173b852c6839de6eb04441dfc7f, https://bch-bitcore2.trezor.io/tx/fc3e3bbd49ad6a6e87e7220f380b24ae86e566b1d26d0e40fb5250e54a25dc2a, https://bch-bitcore2.trezor.io/tx/dbd3f7518111d679c1b229af71181c9395e3bf8c1370b6856376f391d25c883e. Each of these transactions has 31243 identical P2SH outputs of 1 satoshi each, and one change output. So at first glance, these look a lot like attack transactions for _chjj's attack. But looking closer, it looks like the first output of each transaction has been spent in https://bch-bitcore2.trezor.io/tx/36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d. Lets take a closer look at that transaction
36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d is strangely large for a transaction spending P2SH outputs, it is nearly 70 kB but only spends 7 inputs. This means that those inputs must be massive, almost 10 kB each, which, incidentally, is the size limit for a scriptSig. Unfortunately block explorers based on insight aren't showing us the scriptSig, so this will need to be decoded with a node.
Here is the decoded output (I have cut out a few things because it is too large):
{ "hex": , "txid": "36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d", "hash": "36a094b53ef46b1ffdfd853079be9f21da4a5f789dd28c9d7c6d84770a7b5c1d", "size": 69651, "version": 2, "locktime": 0, "vin": [ { "txid": "ac4849b3b03e44d5fcba8becfc642a8670049b59436d6c7ab89a4d3873d9a3ef", "vout": 0, "scriptSig": { "asm": "492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884cab492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e87", "hex":  }, "sequence": 4294967295 }, { "txid": "1bd4f08ffbeefbb67d82a340dd35259a97c5626368f8a6efa056571b293fae52", "vout": 0, "scriptSig": { "asm": "492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e  492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e 788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c89492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e87", "hex":  }, "sequence": 4294967295 }, { "txid": "c0472d267c8d178804eefdddb348f2f7a8a95bf6a4152b952a5fb6bfa09cab2e", "vout": 0, "scriptSig": { "asm": "57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d617274  57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d617274 7888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c8f57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d61727487", "hex":  }, "sequence": 4294967295 }, { "txid": "27cb862d9c4c7eaace8d901e89365f2e843572788b774b14e5675fd9107d6637", "vout": 0, "scriptSig": { "asm": "492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f736869  492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f736869 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c8b492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f73686987", "hex":  }, "sequence": 4294967295 }, { "txid": "b87d1dc8c0f3b450f1c1a845a5561ad87d850173b852c6839de6eb04441dfc7f", "vout": 0, "scriptSig": { "asm": "4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b  788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c904920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b87", "hex":  }, "sequence": 4294967295 }, { "txid": "fc3e3bbd49ad6a6e87e7220f380b24ae86e566b1d26d0e40fb5250e54a25dc2a", "vout": 0, "scriptSig": { "asm": "48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d6978  48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d6978 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c8b48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d697887", "hex":  }, "sequence": 4294967295 }, { "txid": "dbd3f7518111d679c1b229af71181c9395e3bf8c1370b6856376f391d25c883e", "vout": 0, "scriptSig": { "asm": "5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d65  5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d65 7888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884c935468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d6587", "hex":  }, "sequence": 4294967295 } ], "vout": [ { "value": 0.00000000, "n": 0, "scriptPubKey": { "asm": "OP_DUP OP_HASH160 f6c403dd1f02211d21db137cd219e156ce7e5ca7 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a914f6c403dd1f02211d21db137cd219e156ce7e5ca788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ "1PVn3ZM5mUW9n9eVXRAedUbpJdAMCG7KXS" ] } } ], "blockhash": "000000000000000005a42e167af40866487ceda82863614c409d67d1239aff19", "confirmations": 174, "time": 1505044920, "blocktime": 1505044920 } 
Well that's interesting. Lets find the redeemScript of the first transaction and decode it:
bitcoin-cli decodescript 78887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878887888788878884cab492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e87 { "asm": "OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY OP_OVER OP_EQUALVERIFY 492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e OP_EQUAL", "type": "nonstandard", "p2sh": "39BLXfKysaXNuGuBrgT7b9WfaiBMw2VMZf" } 
Well that is a very interesting script. So lets explore what this script is doing. OP_OVER means that the top stack item is copied, e.g. x1 x2 -> x1 x2 x1. OP_EQUALVERIFY means that the top two stack items must be equal to each other and they are consumed. There are 55 OP_OVER OP_EQUALVERIFY pairs here, which means that something will need to be repeated 55 times. At the end of the script, we see this byte string and then OP_EQUAL. That means that whatever is being repeated much match this byte string in order for this script to validate. The scriptSig that this redeemScript comes from does exactly that, the byte string at the bottom of the script are repeated a bunch of times. And it looks like all of the 7 scripts do basically the same thing, but with different length byte strings. Now lets see what our byte strings are.
492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e0a492077696c6c206e6f7420636c6f6e6520426974636f696e20666f7220706572736f6e616c206761696e 492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e0a492077696c6c206e6f74207573652061737365727428302920666f7220696e7075742076616c69646174696f6e 57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d6172740a57726974696e6720676962626572697368206571756174696f6e73206f6e206120626c61636b626f61726420646f6573206e6f74206d616b65206d65206c6f6f6b20736d617274 492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f7368690a492077696c6c206e6f7420776f727368697020612066616c7365207361746f736869 4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b0a4920616d206e6f74206120464449432d696e73757265642062616e6b 48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d69780a48696768206578706c6f736976657320616e64206d61696c20646f6e2774206d6978 5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d650a5468657920617265206c61756768696e67206174206d652c206e6f742077697468206d65 
Looking more closely at these scripts, we see that there are repeating sequences, and they are different lengths. This means that it isn't just random garbage. Well the first thing to try is to see if this hex results in any ascii, and what do you know, this is what we get for the first string:
I will not clone Bitcoin for personal gain I will not clone Bitcoin for personal gain I will not clone Bitcoin for personal gain I will not clone Bitcoin for personal gain 
Huh. That's interesting. I think someone is being mocked. Lets see what the rest are:
I will not use assert(0) for input validation I will not use assert(0) for input validation I will not use assert(0) for input validation Writing gibberish equations on a blackboard does not make me look smart Writing gibberish equations on a blackboard does not make me look smart I will not worship a false satoshi I will not worship a false satoshi I will not worship a false satoshi I will not worship a false satoshi I am not a FDIC-insured bank I am not a FDIC-insured bank I am not a FDIC-insured bank I am not a FDIC-insured bank I am not a FDIC-insured bank High explosives and mail don't mix High explosives and mail don't mix High explosives and mail don't mix High explosives and mail don't mix They are laughing at me, not with me They are laughing at me, not with me They are laughing at me, not with me They are laughing at me, not with me 
So it seems that someone is just mocking you all. They have put these mocking strings in a redeemScript and require you to repeat them in order to spend them. This kind of reminds me of Bart Simpson performing his punishment of writing sentences over and over on a chalkboard. The other thing that this does is that in order to clean up the thousands of outputs, you will need to spend 10 kB per output, which will severely bloat your blockchain. Or you can just leave them in the UTXO set which will bloat the UTXO set with dust. But what to do with these is something you all will need to deal with, I'm just here to see what was up with these transactions.
As for why these transactions don't work for _chjj's attack, they require that the spending transactions be very large. But that is not ideal because for that attack to work, the spends need to be very small so that more spends can fit in one block which will increase memory usage. These transactions are not good for that since you can only fit a much smaller number of transactions in a block so the memory blow up is way less.
submitted by achow101 to Bitcoincash [link] [comments]

HACK BITCOIN ADDRESS 2019 How To Hack Any Bitcoin Address Bitcoin Lesson  Keys & Addresses Bitcoin: ScriptSig And ScriptPubKey Terminology - Part11 How to find your Bitcoin Wallet Address on Blockchain

An alternate theory is that using the Hash160 provides an extra layer of security. For example, if we immediately give away our public key when we want to receive bitcoins, the “only” thing protecting you from attackers trying to get to your private key is the elliptic curve. The address is already a hash, together with a 4-byte checksum and a version byte. To get from an address to a hash160, you don't have to compute sha256 or ripemd160 of anything. You just have to decode it from base58 back to hex, and discard the unwanted junk. Bitcoin Hash160 generator, BitCoin address generator, Bitcoin public key to Hash160, Bitcoin address validity checker. Toggle navigation Ju-Jitsu Para Todos Diccionario de argot español: 8118 (El Libro De Bolsillo - Bibliotecas Temáticas - Biblioteca De Consulta) The most popular and trusted block explorer and crypto transaction search engine. The most popular and trusted block explorer and crypto transaction search engine.

[index] [880] [2526] [15632] [24909] [15300] [7639] [6786] [5933] [10346] [3102]

HACK BITCOIN ADDRESS 2019

A few of the most trusted and understood Bitcoin organizations, including the Mt. Gox and the now-outdated Bitcoinica trades, have additionally endured prominent burglaries. In this video, you'll learn how to do a Bitcoin address lookup, so you can help protect yourself from any known bitcoin scams. See my recommended resource for the absolute best in cryptocurrency ... Commands: $ sudo apt-get update $ sudo apt-get -y upgrade $ sudo apt-get install -y python3-pip $ sudo apt-get install build-essential libssl-dev libffi-dev python-dev $ sudo apt-get install -y ... We aim to understand how bitcoin nodes validate a bitcoin transaction by concatenation of output and input scripts . ... Check the bitcoin address from the input: ... a9 ⇨ OP_HASH160 Length: 14 ... 39:02 - Address ↳ 39:37 - Extra Security (Hash160) ↳ 43:20 - Locking Mechanism ↳ 48:54 - Address 56:48 - Technical Walkthrough ↳ 1:09:35 - Code ↳ 1:11:03 - Example ↳ 1:12:41 - Useful ...

Flag Counter