Académique Documents
Professionnel Documents
Culture Documents
Transactions
Transactions transfer the ability to move some number of satoshis from the control
of one SK to the control of another SK.
Some information is required to unlock the satoshis and complete the script, this
locking script can be different for different txs and in general is known as an
encumbrance.
This information, also known as an unlocking script, is usually a SK, but when
using P2SH it can be any information. All information required to spend the coins
is hashed before sending, allowing txs to be sent over compromised networks. If a
tx is assembled on a secure device the tx can be sent from a malicious computer.
Txs 2
A tx can be created manually, however most modern wallets will handle it for you.
When a tx is made the entire balance of the sending wallet is emptied, often the
previous balance is not meant to be entirely spent and so a change address is required
on some DIY transactions. Any amount not accounted for between the sender and
receivers is taken by the miner as a fee.
Most txs require a fee or they will not get mined. Fees are based on size of tx data, not
number of satoshis. So txs with more inputs and outputs will incur higher fees
A tx consists of at least one input and one output. However in practice txs usually have
at least two outputs, one for the intended recipient and one for the 'change' address.
Txs 3
To be valid they must contain all the needed information for the Bitcoin protocol to
verify them as true. If a transaction is made without all conditions being met the
transaction will evaluate to false and will be invalid. Invalid txs do not propagate
across the network and are not accepted into blocks.
The simplest conditions that exist to spend coins are that the funds to be 'moved'
exist, and that they are under the control of a secret key that is present. As well as
including a acceptable address to send them to and some hash needed to unlock
the funds.
The acceptable address does not actually have to be one that has keys to unlock
it. So funds can be sent to addresses that they cannot be retrieved from.
Txs 4
The hash that unlocks the funds, is often the hash of the script that takes as input
a signature and SK, the one used in P2PKH txs. But in P2SH txs the script that is
hashed isn't guaranteed to work, an error in said script can cause funds to be
irretrievable.
Txs can be prepared ahead of time, just awaiting a PK to be completed. This is
how business can prepare a QR code that when scanned by the spender already
lists the payment details and just required finalization.
Once the tx is completed it is broadcast to the network through the nodes that are
connected to the wallet application. Most clients will connect to the node or nodes
that are run by the company that released the software Some more advanced
clients can be configured to which nodes they connect to.
Txs 5
This last part the nLockTime field is often set to 0, which means txs are mined
right away. If there is a value the tx cannot be mined until that condition is met.
The nLockTime variable is read as block height if it is less than 500,000,000 (and
not 0) and as a timestamp if it is a higher value.
A new OP code which fully integrated with Core near the end of 2015 is called
CLTV or check locktime verify. The goal of it is to mine a tx right away that cannot
be spent until some time in the future. With nLockTime, the tx cannot be mined
and added to the blockchain until it is past the locktime, the tx must be kept and
not broadcast until the specified time.
Txs 6
Txs must have at least one input and one output, but how many can they have? In
theory one could publish enough data in one tx to fill an entire block.
For this reason early in Bitcoin's existence its creator added a cap to the size of
the blocks.
This was done as an anti spam measure and intended for the limit to be raised if
we got close to it.
However if one could fill txs large enough to hit the limit, then if the limit were
raised, they might be able to make txs large enough to fill that block as well.
The problem remains unfixed.
Txs 7
Modern HD wallets (Hierarchical Deterministic not high-def) generate a new
address for every tx they receive, so when they make payments it can often 'come
from' a number of addresses.
Payments can be made to a number of addresses at once in one tx as well.
Txs move control of coins, a less technical and sometimes plain incorrect way to
say this is that they move coins.
Txs wait to be put into a block, during that time they are unconfirmed, after they
are included in a block they are thought to be more confirmed but not entirely.
Txs 8
For arbitrary reasons SN decided that after 6 blocks a tx should be considered
confirmed. Different versions of the blockchain can coexist for a short time.
Coins can be created every time a block is found, only a few times have miners
not taken the full block reward. The coins lost by not taking the block reward are
gone forever.
The block reward started as 50 bitcoins per block, in 2013 roughly 4 years after its
creation in 2009, the first halving occurred and the number of blocks mined per
block was cut in half.
The bitcoin reward is expected to drop from 25 to 12.5 on JUly 11th in the
Summer of 2016. It will be the second of 33 halvings.
Txs 9
The block reward is also called the 'coinbase reward' and it is encoded in the
'generation tx' which is listed first on the block that mines it.
Aside from the generation tx all other txs have a similar structure. When any of
these other txs are made they require the coins to already be under the control of
a SK, or technically incorrectly in a public address.
There are two main parts of the tx, the input and the output.
The input references which associated address will be emptied and provides the
unlocking script to do so.
The output tells how many satoshis to take from that address and gives a script
that needed to unlock the funds.
Addresses
Satoshis are technically never held or kept in any address or PK. Some people
may get pedantic about this point and on the subject of to and from or send
addresses. These terms may not be as technically correct as possible but they are
very intuitive and helpful in understanding.
To spend any satoshis from an address one must spend all satoshis from that
address. This is the reason for the change address. Wallets will often try to build a
tx out of smaller outputs from previous txs (UTXOs) that are in its control. Your
mileage may vary, test different wallets if you need to know.
Transaction inputs
A tx can have a number of inputs, all of which reference a UTXO which exists in
the blockchain in the form of a tx hash (1) and the sequence number (2) that tells
which address in said tx.
(3) & (4) tell the size of the unlocking script and provide it.
(5) is a currently disabled section called the Sequence Number which was
intended to enable tx spending before the LockTime.
The script that unlocks the coins has historically derived from the SK with P2PKH
txs but very slowly other tx types have increased in use to over 1% of txs.
While P2PKH is the most popular type of standard input there are 5 standard tx
types.
P2PKH Cont
One only needs a secret key to unlock these txs, the key is used to create the
public key from it and to combine with a message to generate a signature.
By giving the other party the signature along with the public key they can decode
the message.
Bitcoin assumes valid possession of secret keys, and that having the SK is
enough power to use it. By using the ECDSA it can be shown that a message was
signed by a certain SK which is the only way to create the associated PK.
P2SH Cont
The benefit of this type of tx are thus: less data to store in the UTXO set, ability for
added complexity to tx parameters, and that the person creating the tx doesn't
have to pay a high fee for the data. So the redeem script can be very complex.
Paying out to multiple parties for instance. This way if a business wants to do
complex things with the money, they don't have to pass that cost along to the
customer.
These allow for a second script to be used in the validation of bitcoin txs. This
script is known as the redeem script. When coins are moved under P2SH control a
tx is created the redeem script hash is included in the output.
The script for this is: OP_HASH160 <scriptHash> OP_EQUAL. As you can see
the provided data is simply hashed and compared
P2SH Cont 3
The redeem script originally had to be one of the other standard tx type but now
(after v0.9.2 of Core) the code can be anything. It could be a secret clue in a
cipher to be assembled and hashed, or more realistically it could be a 'm-of-n OR
x script'.
These type of programs are known as smart contracts and they can be dependent
on anything programmable, like stock sales, company mergers, or published death
certificates.
They could be made to allocate funds differently in different circumstances such
as a contract that paid out to one party or another depending on results of an
insurance claim.
P2SH Cont 4
Programs could be prepared to operate on contracts if their conditions were met,
or computers could be programed to hold contracts and monitor for the conditions
so they could broadcast specialized txs at specific times. Programs could even
handle escrow or arbitration.
There are very many possibilities with the blockchain and bitcoin, but a majority of
them require a great amount of work to become viable. Such as the uploading of
documents to a blockchain, and a standardization of doing so that all programs
can read. Because of this, most large scale crypto integration is still many years
away.
The ability to create addresses with P2SH not only saves space but is less
complex for the spenders wallet software.
P2PK Cont
These txs were used mainly during the early time in Btcs life when people sent
payments directly to IP addresses.
Sending to an IP address offered no MITM protection, making txs of this nature
vulnerable and it was removed from Core.
Txs still occur using these scripts often in the generation tx with outdated mining
software.
The code is simply <pubkey> OP_CHECKSIG, and only requires a signature
made with the SK the made the PK.
Multi-sig Cont
Once the keys are created their addresses (or rather the PKs used to create them)
are put into a key pair generator and a P2SH addresses and redeem script are
given.
To spend coins locked under such keys the OP_CHECKMULTISIG code is used.
The scriptPubKey lists how many sigs are needed, and lists the public keys along
with how many there are. The spender adds the needed amount of sigs as their
ScriptSig, the sigs are read, then the scriptPublicKey, then the opcode evaluates
the stack.
The user provides multiple public keys, and specify the number of valid signatures
that must be present. The number of signatures can be less than the number of
public keys
Multi-Sig continued 3
It is possible to create a raw multisig tx, but this is not recommended. Virtually all
multisig addresses are actually made with P2SH.
Using P2SH is more common and leaves less data on the blockchain.
When using raw multisig the network only allows up to 3 max pieces while still
being a standard tx, however up to 20 can be created.
A P2SH tx has a max size for the redeem script, and each signature used in
validation takes up space.
So 7 or 15 keys is the most that can be make with P2SH, depending on if the keys
are compressed or not.
Multi-Sig continued 4
Multisig can be used in many ways. By people in their day to day lives as well as
their long term goals. By businesses who want to increase accountability and limit
fraud. Even people who want to hide bitcoins in an elaborate puzzle are free to do
so.
According to a April 2014 analysis 1 of 3 is the most popular, followed by 1 of 2.
OP_RETURN Cont
A single tx can normally have many inputs and outputs, but it can only have one
OP_RETURN output. Most txs that use an OP_RETURN pay no coins to that
address and instead spend the coins as a fee and change address.
Any message is hashed so others can prove they had a document by showing the
hash of as it existed at the time of hashing, but since it is hashed it is harder or
impossible to find what was hashed by looking at the output data.
Some companies that want to use the bc to secure their records use this type of
transaction.
Non-standard txs
Anything that can be done with the opcodes can be done, including math,
comparisons, adding/deleting terms, and hashing.
Anyone-Can-Spend Outputs, where the scriptPubKey is empty. Any miner who
incorporates this tx can use a scriptSig of OP_TRUE and spend these txs in the same
block.
Transaction Puzzles. For example the code could be OP_HASH <value> OP_EQUAL
and then people would have to find some data that when double hashed resulted in the
same value as <value>. Unlike regular txs, these have no sigs and can be tampered
with in transit.
Stealth Outputs are txs that aren't indexed by block explorers.This can be done by
adding information followed by a command to delete it.
Generation Transaction
The Generation Tx, also known as the Coinbase Tx, or the Coinbase Reward is
where new btc come from. It is always the first (and sometimes only) tx in the
block.
Banks around the world do something called 'Fractional-reserve banking' to create
money from loans.
Bitcoin creates units of currency that get paid to the miner who found a valid proof
of work. There is no UTXO leading to these coins.
The amount of bitcoin rewarded over time diminishes every 210,000 blocks which
is roughly 4 years.
Blocks
Blocks are containers of data, they are made by miners.
The blocks have 2 main parts, a block header and transactions.
The block header has 6 component parts, one of which is the block header hash
of the last block mined, the parent block.
The txs include a generation tx in which the miner gets to claim a reward for
finding the valid block. This is always the first tx included in any block and
sometimes the only tx. In a Merkle tree it is the far left 'leaf'.
Blocks 2
Txs from users are relayed by nodes to the miner, they are kept in a memory pool once they arrive. Once
they are added into a block they are saved to the blockchain and unless they have already been spent
also added to the UTXO set.
Blocks are usually referred to in 2 ways. Either by ' block height', which indicated how many blocks have
come before it since the genesis block. This number is imprecise early in the block's life as it is not
confirmed. The (double SHA256) hash of the block header is often used by programs, known obviously as
the block header hash.
The block is transmitted to all nodes, and each node computes the block hash themselves. In 2016 an
upgrade was established that would allow lower bandwidth usage between nodes and in some cases
faster block propagation times.
The block header hash of the parent block is needed to mine so miners cannot start trying to pre-mine the
next block. Also blocks can at times have more than one child.
Block Structure
1) Block size field. States how many bytes of data the block is not including its own data which is 4 bytes.
2) The Block Header. This field itself has 6 of its own parameters. This field is what is hashed in attempts
to find a number lower than the target difficulty. It takes up 80 bytes.
3) Transaction counter, 1 to 9 bytes depending on how many txs are in the block.
4) Transactions take up the rest of the block. There is no set number of txs that need to go into a block,
but miners will almost always include the generation transaction even if they don't include any other txs.
With the current block size limit there is a maximum number of txs that can be included in any block.
When introduced the block size limit was far above normal use, and there have been difficulties agreeing
on how to change it. Different numbers and sets of txs will change the resulting hash digest of the block
header.
Merkle Trees
& a database
Using Merkle trees to validate if a value (tx) is included in a block is more efficient
than using a database or hash list.
Figure 7-4 from Mastering Bitcoin shows how one can validate that tx K is in the
block with only K and 4 other pieces of information.
With hundred or thousands of txs in a block this data structure can provide
validation for SPV nodes in only a few hundred bytes. For instance 16 txs in a
block would require 4 hashes and would require 128 bytes, but 65,535 txs would
only require 16 hashes and 512 bytes.
The Blockchain
The blockchain is a file shared by thousands of computers worldwide.
The Bitcoin blockchain is the original blockchain, and the idea of blockchains
originated with the Bitcoin protocol created by Satoshi Nakamoto.
There are many altchains, altcoins, altclients, et cetera that use blockchains in
some way.
The blockchain is a list of digital data, with Bitcoin the data represents value.
Initially stored on just SN's computer, the blockchain is now stored on over 5,000
computers worldwide.
Other Blockchains
The Blockchain, the public blockchain, the World Wide Ledger (WWL), the Bitcoin
Blockchain; whatever you want to call it, it may have been the first but it isn't the
only and it might not stay the most important chain.
Based on the Bitcoin bc, Litecoin is often said to be the digital Silver to Bitcoin
being digital Gold. Litecoin was long second most decentralized popular crypto
after btc since roughly its creation until Ethereum usurped it.
Ethereum is not a fork of Bitcoin at all, it uses a token called 'ether' to facilitate
smart contracts using its turing complete scripting language. It has attracted the
eye of many businesses as of late and gain even more attention after the theft of
nearly 1/3rd of a ~150 million dollar investment
Figure from a
Jan 19th, 2016
report by the
UK Government's
Science Office
What is a BC without:
Miners? 'Miners' add data to the chain, and if the file is to grow then it would need
something to add data to the chain, even if they are not called miners. In the start
of btc all connections to the network (network nodes) were also miners. We will
here distinguish between miners who add txs into blocks and nodes who maintain
the ledger.
A token / coin? Without a token there is no block reward, fees, or txs as we have
learned about them. There are theoretical reasons why miners might want to
maintain a chain they where there are no coins, but no one has publicly shown a
working model
What is a BC without:
POW? The POW is how miners earn the ability to add data to the chain, it causes
the average time between blocks. Without a POW anyone with the ability to mine
could add data at any time without restriction. This would be a data chain or a
distributed database but not a blockchain. A system like this might attempt to
restrict access to who can mine, but without validation anyone breaks into their
network they can easily run amok.
A public that can access the chain? If participation is somehow limited past it's
current status of needing equipment, connections, and electricity in a way where
only vetted or approved nodes can connect the it would be a private blockchain.
Bitcoin's blockchain was based on the idea that you shouldn't have to trust others,
but private blockchain require trust in one way or another.
What is a BC without:
An incentive? Miners are incentivized to find a valid POW via a payment of tokens.
Most of these tokens come from the block subsidy, and a small number come from
fees. It is thought that in the future there will be more fees to compensate for the
dropping block reward. If there is no financial reward for mining and maintaing the
chain then miners would have to have some other reason for mining. If only fees
or block rewards existed they would be depended on more heavily than btc
currently is.
A digital signature at all? Without any sort of digital signature it would just be a
database.
What is a BC without:
Nodes? Nodes hold the tx database, without them users could send txs straight to
miners who could confirm them and broadcast a confirmation that then gets
deleted. This would require a backend structure different than the blockchain, or
perhaps as a second layer.
Users? If all users were nodes or miners and the public was not invited perhaps
the only 'users' would be large companies. Such a situation sounds like a fraud
resistant version backbone for bank interchange, like an improved SWIFT.
A consensus algorithm? Btc always accepts the longest proof of work chain, the
same rules apply to all nodes. Without a working consensus protocol chains may
split and remain split, they may both continue but more likely one will fail.
What is a BC without:
Secret Keys? SKs are all that are needed to move cryptos, users keep them safe
and don't share them and in return they can use them as they wish. If there were
no SKs at all then either there needs to be another system of authentication or
security is not an issue and it would be okay for anyone to use anything. SKs
being not directly availabel to the end user is different though. Users might be
using an HD wallet and not be able to access their master SK, there might be a
password, code, or other identified used to authorized access to the key. There is
however the option that SKs aren't available to users because they don't have
control of their units, such as in the case proposed bank or government coins.
What is a BC without:
ECDSA? Bitcoin uses digital signatures to verify SKs. There are other methods of
verifying digital signatures such as RSA, but elliptical curve cryptography offers
smaller keys and easier key generation.
Secp256k1? ECC uses a specific curve for each implementation, SN chose a
seldom used but efficient curve. As long as the curve is secure it shouldn't matter
what parameters or criteria is has; but no one can know what is secure only
probably secure.
Non-turing complete script? Other chains like Ethereum have more advances
scripts that can execute complex commands. This enables more utility but it also
offers an avenue for error and attack.
Nodes
In its most basic sense a node is a connection point.The latin root, nodus means
knot. For the many descriptions of the word a node may connect only two things, it
may connect to only one thing, or it could connect to a vast number of other
things. For Bitcoin, a node is any computer connected to the Bitcoin network.
There are four functions that nodes perform. Due to evolving nomenclature what is
nowadays referred to as a node is only required to perform one of these functions.
When Btc was started all nodes did all four functions, over time separate
implementations have been created to handle these functions.
Node functions
Network routing function: All nodes must transmit data they receive, verify it, and
relay it to the network if valid. This data can be transactions or blocks. They will
also maintain a connection to the network by finding new peer nodes when old
peers go away. Nodes with
Complete blockchain: Node that maintain an up-to-date version of the blockchain
are known as full nodes as they have the full blockchain. Node may also keep
track of the UTXO set separately for faster access by keeping it on the computer
memory (think RAM), which is erased every time the computer shuts down,
different than persistent storage (think hard drives).
Extended
network
From
Mastering
Bitcoin
Full Nodes
These nodes start by downloading the Btc protocol which has the Genesis block
encoded in it. They then use a list of hard coded peers to find more peers,
download and verify blocks from them until they are current.
Full nodes with Btc are not compensated, yet they form the backbone of the
network.
Running a full node can be expensive as it requires large amounts of bandwidth
and is often run on a dedicated computer. It also consumes electricity and
produces heat and noise (from the fan).
Litenodes
To verify a tx the SPV wallet will ask its peers if the tx is included in a block, then
it will wait. If the network mines a number of valid blocks on top of the block in
question then the SPV miner is satisfied that the block and therefore also the tx is
valid and verified.
By downloading a tx and associated Merkle tree branches a SPV node can verify
that a tx was included in a block.
If one only downloads their own txs then others could guess what addresses they
control. Something called 'Bloom filters' was created to obfuscate that. But they
dont work idealy.
SPV
Downloading more txs and branches requires more data and space, but it makes it
harder for connected nodes to see which txs the SPV client is interested in. The
bloom filter can cause false positives however, saying a tx is in a block when it is
not.
If the peer nodes of the SPV client were bad actors they could say the tx was not
included in the block and give them nothing to check which could be problematic if
the SPV client was the receiver of a tx by their peer nodes who wanted to double
spend it. Client software will try and find a number of random peers but it remains
a potential area for misuse. While peers can deny knowing anything they cannot
give a false idea of a tx being in a block where it isn't.
Controlled Supply
Miners early in Bitcoin's existence could turn on their PCs and generate 50 coins
per block fairly easily. Over time the amount of bitcoin given in the block subsidy
decreases, and the price of equipment to get the remaining pieces goes up. As
with California's gold rush, early people could pick up nuggets of gold in riverbeds
or on the ground, over time people needed to use shovels and picks to dig, and
nowadays effective gold mining requires large investments in infrastructure, the
amount of gold left in the Earth is less, and it is harder to get to.
'Halvings' happen every 210,000 blocks, they decrease the block subsidy by half.
What began as 50 btc/block turned to 25 btc/block in Nov 2012. Block 420,000 will
be mined in the Summer and the rate will drop to 12.5 during the second halving.
This will happen 34 times until block 13,230,000 when the block subsidy is equal
to the atomic unit, one satoshi. At the current rate this should happen a few years
before 2140.
Finally, after 13.44 million blocks, in approximately 2140, almost
2,099,999,997,690,000 satoshis, or almost 21 million bitcoins, will be issued.
Thereafter, blocks will contain no new bitcoins, and miners will be rewarded solely
through the transaction fees - by Andreas Antonopoulos in 'Mastering Bitcoin'.
Consensus Mechanism
Emergent consensus happens at no particular time but over time a winner is clear.
Decentralized consensus means that there is no leader to choses things, every
node will make their own decisions independent of the decisions of others, based
on the rules and criteria they have.
Four independent actions work together to achieve this consensus:
Verification of tx data
Assembly of tx into blocks along with a proof of work
Adding blocks onto the blockchain after verifying them
Choosing the blockchain with the longest proof of work as the valid chain
Consensus
If nodes start obeying other rules than the rest of the network then they have
created two incompatible chains, this is known as forking the codebase. The word
fork can have multiple meanings in Cryptocurrency-land, just like the word
consensus and decentralizes. Make sure any conversations you have on the
subject you make clear which definition of the words you are referring to.
Forks have been done before without problem, and will need to be done again
many times in the future to address problems both known and unforeseen.
The code can 'fork' temporarily if two miners find valid blocks at nearly the same
time, but more blocks will soon be found on one chain which will become the
mainchain.
Mining Txs
When a tx is broadcast to the network each node will store it in their memory pool.
But just because a tx was broadcast doesn't necessarily mean it will be mined into
a block.
Mempools have limited sizes and txs can be forgotten by nodes turning off then
back on, or some policies will evict txs that have sat in the mempool for a long
time and have less fees than newers txs.
Some want the ability for larger blocks so that legitimate txs aren't excluded, some
want wallets to find ways to notice if a tx didn't go through and rebroadcast it with
a higher fee. This proposal, Replace By Fee, or RBF is controversial to many
because it may remove the limited security of 0-confirmation txs in some
circumstances.
Mining Txs 2
Miners will try to mine a block until they receive a valid block from their peers.
They can quickly validate a block and they will move on to the next block which
requires making a new block header.
They store any newly received blocks and calculate the required work to create
those blocks.
The blocks with the most proof of work are considered as the mainchain and other
received and valid blocks are held temporarily. If a child block is found of that temp
block, and there is more proof of work, then the node re-converges on the longest
chain.
Mining Txs 3
Sometimes blocks can be found quickly, and a child block received before a
parent block, these blocks are held in an orphan block pool while the node waits
for a parent block.
A miner will switch to a new block once an old block is found, to do this they would
replace the hash of the previous block header, remove txs from their mempool and
recalculate their Merkle root, update their timestamp.
The last sections of the header are the difficulty and the nonce. With the difficulty
known and added the miner can start mining, performing the double SHA256 hash
of the header until they find a result less than the difficulty.
Difficulty
Miners might mine when it isn't profitable in the hopes it will be again soon. But as
new devices come out and the difficulty goes up some are priced out of new
hardware; leading to some centralization of miners.
Forks
If two blocks are mined at the same time and each spread to half of the network,
then half the world will have a different main chain from the other until the next
block is found on either chain.
This unlikely event would be an example of a type of a fork, the blockchain has
split but it can easily go back together with one block fading away.
In development of the client and the creation of other clients, forks change the
protocol rules. These forks come in two flavors, 'hardforks' and 'softforks'.
Softforks restrict the protocol. Nothing that wasn't possible before is possible after
a softfork.
Forking
Nodes should but don't need to update for a softfork, but if a miner doesn't they
may find a block with a tx that the majority of the network rejects they lose their
reward. E.g. Adding the 1mb temp cap to the size of the blocks in the block chain
when blocks bigger than 1mb were allowed before.
Hardforks can augment the protocol or have less restrictive rules. If nodes and
miners don't update and the majority of the network do then they will reject 'new'
blocks as invalid. Miners will build their blocks off of only blocks they see valid,
leading to them dropping behind the network and creating invalid blocks.
Both can be a mechanism of change, though soft forks are preferred when
possible, and soft forks have been the source of many developments. There is hot
contention over when, what, and how to fork Bitcoin over.
Sources
Bitcoin Knots https://bitcoinknots.org/
Try hashing with SHA256 http://www.movable-type.co.uk/scripts/sha256.html
Idea that total number of satoshis is due to computational constraints https://www.reddit.com/r/Bitcoin/comments/20etko/why_21_million/cg2r7ks
'educated guess' link to copy https://bitcoinfoundation.org/forum/index.php?/topic/54-my-first-message-to-satoshi/
Picture of btc tx https://www.cryptocoinsnews.com/bitcoin-transaction-really-works/
Tx stack/script for P2PH table https://en.bitcoin.it/wiki/Transaction#Pay-to-PubkeyHash
Script validation table https://bitcoin.org/en/developer-guide#p2pkh-script-validation
Learn more about generation txs https://en.bitcoin.it/wiki/Transaction#Types_of_Transaction
Byte info https://en.wikipedia.org/wiki/Byte
Some locktime info https://bitcoin.org/en/developer-guide#term-locktime
Check LockTime Verify or CLTV https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
SN's 100 million tx / day idea https://www.mail-archive.com/cryptography@metzdowd.com/msg09964.html
How tx sigs work https://www.cryptocompare.com/wallets/guides/how-do-digital-signatures-in-bitcoin-work/
Math behind sigs https://en.wikipedia.org/wiki/Digital_Signature_Algorithm
Digital sig pic https://upload.wikimedia.org/wikipedia/commons/2/2b/Digital_Signature_diagram.svg and
https://en.wikipedia.org/wiki/File:User_Acdx_SVG_Test.svg
Tx type analysis http://www.quantabytes.com/articles/a-survey-of-bitcoin-transaction-types
BIP 16 https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki
reads like propaganda
https://bitcoinmagazine.com/articles/bitcoin-rbf-bitcoin-knots-and-bitcoin-addrindex-three-core-forks-that-don-t-break-with-consensus-1458237046
Sources 2
More on smart contracts https://en.bitcoin.it/wiki/Contract
Standard txs https://bitcoin.org/en/developer-guide#standard-transactions
MultiSig uses https://coinkite.com/faq/multisig, https://en.bitcoin.it/wiki/Multisignature
MultiSig max bitcoin.stackexchange.com/questions/23893/what-are-the-limits-of-m-and-n-in-m-of-n-multisig-addresses
Send to IP https://en.bitcoin.it/wiki/IP_transaction
Non std txs https://medium.com/@alcio/a-look-at-bitcoin-non-standard-outputs-c97f65cccbb6#.9me3b6kvn
Address prefixes https://en.bitcoin.it/wiki/List_of_address_prefixes
MultiSig itself https://bitcointalk.org/index.php?topic=317569
Raw txs https://en.bitcoin.it/wiki/Raw_Transactions
Crypto Graffiti https://bitcointalk.org/index.php?topic=524877.0
OP_RETURN history https://bitcoin.stackexchange.com/questions/29554/explanation-of-what-an-op-return-transaction-looks-like
Missing Gox coins http://blog.wizsec.jp/2015/04/the-missing-mtgox-bitcoins.html
Unix time https://en.wikipedia.org/wiki/Unix_time
Block info https://en.bitcoin.it/wiki/Block_hashing_algorithm
Hashcash info https://en.bitcoin.it/wiki/Hashcash
Merkle Tree info https://en.wikipedia.org/wiki/Merkle_tree
Merkle Tree graphs and images http://chimera.labs.oreilly.com/books/1234000001802/ch07.html#merkle_trees
Discussion on 'lite' nodes https://bitcointalk.org/index.php?topic=88208.0
Pruning discussion https://news.bitcoin.com/pros-and-cons-on-bitcoin-block-pruning/
What is a blockchain http://www.coindesk.com/danger-blockchain-monoculture/
Sources 3
A better timestamp? https://www.certificate-transparency.org/log-proofs-work
Ripple as TTP http://www.coindesk.com/report-conflict-ripple-labs-consensus-protocol/
Article on UK science office report
http://bravenewcoin.com/news/british-prime-minister-and-cabinet-advised-to-start-using-distributed-ledger-technology/
Bitcoin's curve https://en.bitcoin.it/wiki/Secp256k1
Elliptic curves in general https://en.wikipedia.org/wiki/Elliptic_curve
Computer Ports, or network endpoints, btc has an open port tohttps://en.wikipedia.org/wiki/Port_(computer_networking)
Some small info on full nodes https://en.bitcoin.it/wiki/Full_node
Source for 'What's required to run a full node?' req.s https://bitcoin.org/en/full-node#what-is-a-full-node
More than 8 peers https://www.reddit.com/r/Bitcoin/comments/1scd4z/im_running_a_full_node_and_so_should_you/cdw3lrh
Setting up a full node https://bitcore.io/guides/full-node/
Calculate max total number of bitcoins https://bitcoin.stackexchange.com/questions/161/how-many-bitcoins-will-there-eventually-be
A banks way to create money https://en.wikipedia.org/wiki/Fractional-reserve_banking
Block versions https://bitcoin.org/en/developer-reference#block-versions
More on version bits http://bitcoin-development.narkive.com/2P0s5SLn/bip-proposal-version-bits-with-timeout-and-delay
Version bits BIP https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
Generation tx structure http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html and
https://bitcoin.stackexchange.com/questions/20721/what-is-the-format-of-coinbase-transaction
Block timestamp deviations https://en.bitcoin.it/wiki/Block_timestamp
Sources 4
Hashing algorithm https://en.bitcoin.it/wiki/Block_hashing_algorithm
Verification and Validation https://en.wikipedia.org/wiki/Verification_and_validation
Tx priority example https://en.bitcoin.it/wiki/Transaction_fees
List of distributed computing projects https://en.wikipedia.org/wiki/List_of_distributed_computing_projects
Soft fork wiki https://en.bitcoin.it/wiki/Softfork
One way hash functions https://en.wikipedia.org/wiki/One-way_function
Compression function https://en.wikipedia.org/wiki/One-way_compression_function
Cryptographic hash functions https://en.wikipedia.org/wiki/Cryptographic_hash_function
Avalanche effect https://en.wikipedia.org/wiki/Avalanche_effect
Comparison of hash functions https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions
SHA-2 family hash functions https://en.wikipedia.org/wiki/SHA-2
HMACs https://en.wikipedia.org/wiki/Hash-based_message_authentication_code
Hashing when signing txs https://tools.ietf.org/html/rfc6979#section-3.2
In blocks https://jornc.github.io/bitcoin-transaction-explorer/
Why it is hard to factor a certain large integer from another larger integer https://en.wikipedia.org/wiki/Integer_factorization
Studies https://docs.google.com/spreadsheets/d/1VaWhbAj7hWNdiE73P-W-wrl5a0WNgzjofmZXe0Rh5sg/edit?pli=1#gid=0
Mining with Pools https://deepbit.net/longpolling.php
'From' addresses don't exist https://en.bitcoin.it/wiki/From_address