Can bitcoin really implement smart contracts?

I am unbiased and want both ETH and BTC to succeed.

Same here. Well, I want cryptocurrency to replace as much as it makes sense to replace. Whether thats bitcoin or Ethereum or something else, so long as it diminishes counterparty risk and helps solve collective problem that would otherwise be solved by centralizing power I'm all for it.

Can someone give me an honest break down of ETH vs BTC when it comes to smart contracts?

Bitcoin transactions have inputs and outputs. When a transaction happens there is no balance of funds to take from instead the transaction must refer to an output of a previous transaction (the exception being a coinbase transaction which is the first transaction in each block that is the reward to miners)

Bitcoin has no memory for anything other than those outputs. The most it has to use for smart contracts is that each output can be given an encumbrance, that is a condition that must be met for the output to be used in a later transaction. A regular transaction has a condition that the to be included a signature must be provided such that a public key can be recovered from the signature that when hashed matches a given hash. This hash is what a bitcoin address encodes, knowing the private key means you can generate the needed signature. Other conditions could be created as well the set of conditions/instructions that are available are called bitcoin script but the instructions are very limited to avoid complexity.

Ethereum differs in that when you send a transaction you dont reference an output but instead an account or contract. With regular accounts you have to sign the transaction for it to be valid but you dont have to reference a specific time that the account received funds in the past. Ethereum has a virtual environment that keeps track of the balances of every address. To make sure a transaction can only submitted once each transaction includes a number that can only be used once.

Transactions can also upload contracts. Like bitcoin script this is just a set of instructions but unlike bitcoin script the data can be executed in later transactions as well, the contract has its own private memory, multiple entry points for execution (functions) , instructions for conditional loops and the ability to call other contracts and even deploy them. Basically everything you need to write whatever smart contract you want, you just have to figure out how.

Ethereum also has higher level languages that can be compiled down to the instruction set so that writing smart contracts can be easy to pick up for a programmers or even complete learners. New languages can be added including formally verified ones.

Keep in mind though a lot can be done with just the limited set of conditional transactions bitcoin has especially if you are willing to trust a group of people using a multisig account.

/r/ethereum Thread