The key difficulties of cryptocurrencies are:Until those problems are solved, the only real applications of cryptocurrency will by illegal activities, notably buying drugs, paying for ransomware. But also paying for anti-censorship services from inside dictatorships. It is for this reason that Ciro Santilli believes that privacy coins are the best investments until then. People concerned with their privacy are likely to more naturally make fewer larger payments to reduce exposure, and therefore transaction fees matter less, and can be seen as a reasonable privacy tax. Also drugs are expensive, just have a look at any uncensored Onion service search engine, so individual transactions tend to be large.
- how do transaction fees/guarantees/times compare to centralized systems such as credit cards:Obviously, decentralized currencies cannot be cheaper to maintain than centralized ones, since with decentralization you still have to send network messages at all times, and instead of one party carrying out computations, multiple parties have to carry out computations.
- bitcoin.stackexchange.com/questions/1261/is-it-possible-to-send-bitcoins-without-paying-a-fee "The Blockchain Scalability Problem & the Race for Visa-Like Transaction Speed" (2019)
The battle for a scalable solution is the blockchain's moon race. Bitcoin processes 4.6 transactions per second. Visa does around 1,700 transactions per second on average (based on a calculation derived from the official claim of over 150 million transactions per day).
- towardsdatascience.com/the-blockchain-scalability-problem-the-race-for-visa-like-transaction-speed-5cce48f9d44
Crypto could however be close enough in price to centralized systems that it becomes viable, this can be considered. - how can governments tax cryptocurrency. Notably, because:See also globalization reduces the power of governments.
- taxation has to be progressive, e.g. we have to tax the rich more than the poor, and anonymity in transactions would weaken that
- it would be even easier to move money into fiscal paradises, and then just say, oops, lost my passwords, those coins are actually gone
If crypto really takes off, 99.99% of people will only ever use it through some cryptocurrency exchange (unless scalability problems are solved, and they replace fiat currencies entirely), so the experience will be very similar to PayPal, and without "true" decentralization.
For those reasons, Ciro Santilli instead believes that governments should issue electronic money, and maintain an open API that all can access instead. The centralized service will always be cheaper for society to maintain than any distributed service, and it will still allow for proper taxation.
Ciro believes that it is easy for people to be seduced by the idealistic promise that "cryptocurrency will make the world more fair and equal by giving everyone equal opportunities, away from the corruption of Governments". Such optimism that new technologies will solve certain key social problems without the need for constant government intervention and management is not new, as shown e.g. at HyperNormalisation by Adam Curtis (2016) when he talks about the cyberspace (when the Internet was just beginning): youtu.be/fh2cDKyFdyU?t=2375. Technologies can make our lives better. But in general, some of them also have to be managed.
In any case, cryptocurrencies are bullshit, the true currency of the future is going to be Magic: The Gathering cards. And Cirocoin.
One closely related thing that Ciro Santilli does think could be interesting exploring right now however, notably when having Monero-like anonymity in mind, would be anonymous electronic voting.
TODO evaluate the possible application of cryptocurrency for international transfers:Of course, the ideal solution would be for governments to just allow for people from other countries to create accounts in their country, and use the centralized API just like citizens. Having an account of some sort is of course fundamental to avoid money laundering/tax evasion, be it on the API, or when you are going to cash out the crypto into fiat. So then the question becomes: suppose that governments are shit and never make such APIs, are international transfers just because traditional banks are inneficient/greedy? Or is it because of the inevitable cost of auditing transfers? E.g. how does Transferwise compare to Bitcoin these days? And if cryptocurrency is more desirable, why wouldn't Transferwise just use it as their backend, and reach very similar fees?
While the idea that inflation due to money creation in fiat currencies does feel kind of bad, it could also be seen as a form of taxation, which is something Ciro Santilli sometimes thinks we should have more of. Ciro hasn't fully researched/rationalized how they compare, and would be open for arguments, see also: Section "Money creation vs tax".
Notable ones:
- buy some at a cryptocurrency exchange. This is the only viable way of obtaining crypto nowadays, since basically all cryptocurrencies require specialized hardware to mine.
- send it to a self hosted Bitcoin wallet without a full node, e.g. Electrum
- then send something out of the wallet back to the exchange wallet!
- convert the crypto back to cash
E.g.: Coinbase Bitcoin hello world.
For the love of God, on Ubuntu install from the official AppImage downloaded from electrum.org/#download, not this random outdated Snap snapcraft.io/electrum:
How it works: Section "How Bitcoin works".
Official website: bitcoin.org/en/
Reference implementation: Bitcoin Core.
Here is a very direct description of the system:Code 1. "Sample Bitcoin transaction graph" illustrates these concepts:
- each transaction (transaction is often abbreviated "tx") has a list of inputs, and a list of outputs
- each input is the output of a previous transaction. You verify your identity as the indented receiver by producing a digital signature for the public key specified on the output
- each output specifies the public key of the receiver and the value being sent
- the sum of output values cannot obvious exceed the sum of input values. If it is any less, the leftover is sent to the miner of the transaction as a transaction fee, which is an incentive for mining.
- once an output is used from an input, it becomes marked as spent, and cannot be reused again. Every input uses the selected output fully. Therefore, if you want to use an input of 1 BTC to pay 0.1 BTC, what you do is to send 0.1 BTC to the receiver, and 0.9 BTC back to yourself as change. This is why the vast majority of transactions has two outputs: one "real", and the other change back to self.
tx0
: magic transaction without any inputs, i.e. either Genesis block or a coinbase mining reward. Since it is a magic transaction, it produces 3 Bitcoins from scratch: 1 inout0
and 2 inout1
tx1
: regular transaction that takes:Since this is a regular transaction, no new coins are produced.- a single input from
tx0 out0
, with value 1 - produces two outputs:
out0
for value 0.5out1
for value 0.3
- this means that there was 0.2 left over from the input. This value will be given to the miner that mines this transaction.
- a single input from
tx2
: regular transaction with a single input and a single output. It uses up the entire input, leading to 0 miner fees, so this greedy one might (will?) never get mined.tx3
: regular transaction with two inputs and one output. The total input is 2.3, and the output is 1.8, so the miner fee will be 0.5
tx1 tx3
tx0 +---------------+ +---------------+
+----------+ | in0 | | in0 |
| out0 |<------out: tx0 out0 | +------out: tx1 out1 |
| value: 1 | +---------------+ | +---------------+
+----------+ | out0 | | | in1 |
| out1 |<-+ | value: 0.5 | | +----out: tx2 out0 |
| value: 2 | | +---------------+ | | +---------------+
+----------+ | | out1 |<-+ | | out1 |
| | value: 0.3 | | | value: 1.8 |
| +---------------+ | +---------------+
| |
| |
| |
| tx2 |
| +---------------+ |
| | in0 | |
+----out: tx0 out1 | |
+---------------+ |
| out0 |<---+
| value: 2 |
+---------------+
Since every input must come from a previous output, there must be some magic way of generating new coins from scratch to bootstrap the system. This mechanism is that when the miner mines successfully, they get a mining fee, which is a magic transaction without any valid inputs and a pre-agreed value, and an incentive to use their power/compute resources to mine. This magic transaction is called a "coinbase transaction".
The key innovation of Bitcoin is how to prevent double spending, i.e. use a single output as the input of two different transactions, via mining.
For example, what prevents me from very quickly using a single output to pay two different people in quick succession?
The solution are the blocks. Blocks discretize transactions into chunks in a way that prevents double spending.
A block contains:
- a list of transactions that are valid amongst themselves. Notably, there can't be double spending within a block.People making transactions send them to the network, and miners select which ones they want to add to their block. Miners prefer to pick transactions that are:
- small, as less bytes means less hashing costs. Small generally means "doesn't have a gazillion inputs/outputs".
- have higher transaction fees, for obvious reasons
- the ID of its parent block. Blocks therefore form a linear linked list of blocks, except for temporary ties that are soon resolved. The longest known list block is considered to be the valid one.
- a nonce, which is an integer chosen "arbitrarily by the miner"
For a block to be valid, besides not containing easy to check stuff like double spending, the miner must also select a nonce such that the hash of the block starts with N zeroes.
For example, considering the transactions from Code 1. "Sample Bitcoin transaction graph", the block structure shown at Code 2. "Sample Bitcoin blockchain" would be valid. In it
block0
contains two transactions: tx0
and tx1
, and block1
also contains two transactions: tx2
and tx3
. block0 block1 block2
+------------+ +--------------+ +--------------+
| prev: |<----prev: block0 |<----prev: block1 |
+------------+ +--------------+ +--------------+
| txs: | | txs: | | txs: |
| - tx0 | | - tx2 | | - tx4 |
| - tx1 | | - tx3 | | - tx5 |
+------------+ +--------------+ +--------------+
| nonce: 944 | | nonce: 832 | | nonce: 734 |
+------------+ +--------------+ +--------------+
nonce
s are on this example arbitrary chosen numbers that would lead to a desired hash for the block.block0
is the Genesis block, which is magic and does not have a previous block, because we have to start from somewhere. The network is hardcoded to accept that as a valid starting point.Now suppose that the person who created
Clearly, this transaction would try to spend Notably, it is not possible that
tx2
had tried to double spend and also created another transaction tx2'
at the same time that looks like this:
tx2'
+---------------+
| in0 |
| out: tx0 out1 |
+---------------+
| out0 |
| value: 2 |
+---------------+
tx0 out1
one more time in addition to tx2
, and should not be allowed! If this were attempted, only the following outcomes are possible:block1
containstx2
. Then whenblock2
gets made, it cannot containtx2'
, becausetx0 out1
was already spent bytx2
block1
containstx2'
.tx2
cannot be spent anymore
block1
contains both tx2
and tx2'
, as that would make the block invalid, and the network would not accept that block even if a miner found a nonce
.Since hashes are basically random, miners just have to try a bunch of nonces randomly until they find one that works.
The more zeroes, the harder it is to find the hash. For example, on the extreme case where N is all the bits of the hash output, we are trying to find a hash of exactly 0, which is statistically impossible. But if e.g. N=1, you will in average have to try only two nonces, N=2 four nonces, and so on.
The value N is updated every 2 weeks, and aims to make blocks to take 10 minutes to mine on average. N has to be increased with time, as more advanced hashing hardware has become available.
Once a miner finds a nonce that works, they send their block to the network. Other miners then verify the block, and once they do, they are highly incentivized to stop their hashing attempts, and make the new valid block be the new parent, and start over. This is because the length of the chain has already increased: they would need to mine two blocks instead of one if they didn't update to the newest block!
Therefore if you try to double spend, some random miner is going to select only one of your transactions and add it to the block.
They can't pick both, otherwise their block would be invalid, and other miners wouldn't accept is as the new longest one.
Then sooner or later, the transaction will be mined and added to the longest chain. At this point, the network will move to that newer header, and your second transaction will not be valid for any miner at all anymore, since it uses a spent output from the first one that went in. All miners will therefore drop that transaction, and it will never go in.
The goal of having this mandatory 10 minutes block interval is to make it very unlikely that two miners will mine at the exact same time, and therefore possibly each one mine one of the two double spending transactions. When ties to happen, miners randomly choose one of the valid blocks and work on top of it. The first one that does, now has a block of length L + 2 rather than L + 1, and therefore when that is propagated, everyone drops what they are doing and move to that new longest one.
Bibliography:
bitcoin.org domain registration: 2008-08-18 by www.namecheap.com, an American company. But using a privacy oriented registrar: bitcoin.stackexchange.com/questions/89532/how-did-nakamoto-untraceably-pay-for-registering-bitcoin-org It is unknown how he could have paid anonymously, so it seems likely that the true identity could be obtained by law enforcement if needed.
2008-08-22: private Wei Dai email. Reproduced at www.gwern.net/docs/bitcoin/2008-nakamoto on gwern.net from address
satoshi@anonymousspeech.com
. Email provider shutting down entirely on 2021-09-30 as per archive.ph/wip/RRNKx, homepage now juts contains useless Bitcoin stuff.Bitcoin whitepaper announcement: 2008-10-31 www.metzdowd.com/pipermail/cryptography/2008-October/014810.html linking to www.bitcoin.org/bitcoin.pdf, email sent from from satoshi@vistomail.com Claimed one year and a half development time. Provider apparently closed in 2014: www.reddit.com/r/Bitcoin/comments/3h80mi/vistomailcom_closed_and_domain_changed_owner_in/, as of 2021 just reads:
Once upon a time a man paid me a visit in cyberspace, at this very domain. He planted a seed in our heads that would become the path we are walking today.
Replies in November: www.metzdowd.com/pipermail/cryptography/2008-November/thread.html#14863 under satoshi@anonymousspeech.com claims source code shared privately by request at that point.
First open source release: 9 January 2009. Announcement: www.metzdowd.com/pipermail/cryptography/2009-January/014994.html "Windows only for now. Open source C++ code is included" Arghhhhhh how can those libertarians use Microsoft Windows??? Had a GUI already.
2011-04-23 Satoshi sent his last email ever, it was to Martti Malmi. www.nytimes.com/2015/05/17/business/decoding-the-enigma-of-satoshi-nakamoto-and-the-birth-of-bitcoin.html mentions:
May 2011 was also the last time Satoshi communicated privately with other Bitcoin contributors. In an email that month to Martti Malmi, one of the earliest participants, Satoshi wrote, "I've moved on to other things and probably won't be around in the future."
Hal Finney:
- Jan 11, 2009 twitter.com/halfin/status/1110302988 "Running Bitcoin"
Reuploaded into the blockchain itself: bitcoin.stackexchange.com/questions/35959/how-is-the-whitepaper-decoded-from-the-blockchain-tx-with-1000x-m-of-n-multisi/105574#105574 by using the Satoshi uploader.
More conveniently available at: bitcoin.org/bitcoin.pdf nowadays.
Bibliography:
- bitcoin.stackexchange.com/questions/5883/is-there-a-listing-of-strange-or-unusual-scripts-found-in-transactions/105392#105392
- bitcoin.stackexchange.com/questions/547/useful-alternative-bitcoin-transaction-scripts
- bitcoin.stackexchange.com/questions/35956/non-standard-tx-with-obscure-op-codes-examples/36037#36037 notably provides the amazing www.quantabytes.com/articles/a-survey-of-bitcoin-transaction-types
Interesting ones:
- 77822fd6663c665104119cb7635352756dfc50da76a92d417ec1a12c518fad69 0
OP_IF OP_INVALIDOPCODE None None OP_ENDIF
. The second constant contains an ASCII patchRemove (SINGLE|DOUBLE)BYTE
so presumably this is a proof of concept.
- 4373b97e4525be4c2f4b491be9f14ac2b106ba521587dad8f134040d16ff73af 0
OP_ADD OP_ADD None OP_EQUAL OP_NOTIF OP_RETURN OP_ENDIF OP_FROMALTSTACK None OP_DROP
is provably unspendable because it always falls onOP_FROMALTSTACK
but nothing is ever placed in the ALTSTACK
They appear to be included, with rationale that you can already include syntactically valid crap in an unprovable way: github.com/bitcoin/bitcoin/issues/320 Better then have syntactically invalid crap that is provable.
The outputs of this transaction seem to be the first syntactically incorrect scripts of the blockchain: blockchain.info/tx/ebc9fa1196a59e192352d76c0f6e73167046b9d37b8302b6bb6968dfd279b767?format=json, found by parsing everything locally. The transaction was made in 2013 for 0.1 BTC, which then became unspendable.
The first invalid script is just e.g. "script":"01", which says will push one byte into the stack, but then ends prematurely.
Reference implementation?
Executables provided:
bitcoin-qt
There are apparently two methods:
- in the script, e.g. as in the Genesis block message
- in output addresses
Specific implementations:
- eternitywall.it/ Eternity WallLaunched 2015 www.newsbtc.com/news/bitcoin/eternity-wall-records-1150-documents-blockchain-first-year/TODO find sample transactions. Did it support images?Shutdown sometime after 2019, working archive: web.archive.org/web/20190417074034/https://eternitywall.it/ says "Sorry, the service is not properly working at the moment..." and last working message timestamped "April 16, 2019 8:02 PM GMT".
TODO: it would be cool to have something like bitcoinstrings.com but including the actual transactions:
Local methods:
- bitcoin-strings-with-txids
- bitcoin.stackexchange.com/questions/30295/how-can-i-search-for-transaction-text-on-the-blockchain
- bitcoin.stackexchange.com/questions/22500/is-there-a-lightweight-blockchain-parser-library-server/101472#101472
- github.com/alecalve/python-bitcoin-blockchain-parser
- bitcoin.stackexchange.com/questions/84266/wondering-how-to-use-bitcoin-parser
- github.com/bitcoinprivacy/Bitcoin-Graph-Explorer stores the blockchain in a database, and should allow more intelligent querying.
Further bibliography:
- bitcoin.stackexchange.com/questions/799/can-i-download-the-whole-block-chain-from-somewhere
- bitcoin.stackexchange.com/questions/68925/how-can-data-be-accessed-searched-for-in-a-blockchain
- bitcoin.stackexchange.com/questions/55188/download-single-and-specific-block-for-study-purposes
- www.fiverr.com/usefulshine/embed-your-logo-or-brand-art-on-blockchain user usefulshine from India embeds ASCII art for you into the blockchain starting at 260 dollars! XD
TODO who owns it? Are they reliable?
- transaction hex data: blockchain.info/tx/930a2114cdaa86e1fac46d15c74e81c09eee1d4150ff9d48e76cb0697d8e1d72?format=hex
- disassembled transaction as JSON: blockchain.info/tx/930a2114cdaa86e1fac46d15c74e81c09eee1d4150ff9d48e76cb0697d8e1d72?format=json
- block by height:
This helper dumps a transaction JSON to a binary:
bitcoin-tx-out-scripts() (
# Dump data contained in out scripts. Remove first 3 last 2 bytes of
# standard transaction boilerplate.
h="$1"
echo curl "https://blockchain.info/tx/${h}?format=json" |
jq '.out[].script' tmp.json |
sed 's/"76a914//;s/88ac"//' |
xxd -r -p > "${h}.bin"
)
Set of scripts b Ciro Santilli, primarily created while researching Cool data embedded in the Bitcoin blockchain.
bitcoinstrings.com has all
strings -n20
strings, we can obtain the whole thing and clean it up a bit with:
wget -O all.html https://bitcoinstrings.com/all
cp all.html all-recode.html
recode html..ascii all-recode.html
awk '!seen[$0]++' all-recode.html > all-uniq.html
awk
to skip the gazillion "mined by message" repeats.A lot of in that website stuff appears to be cut up at the 20 mark. As shown in Force of Will, this is possibly because they didn't use
-w
in strings -n20
, and the text after the newlines was less than 20 characters.That website can be replicated by downloading the Bitcoin blockchain locally, then:
cd .bitcoin/blocks
for f in blk*.dat; do strings -n20 -w $f | awk '!seen[$0]++' > ${f%.dat}.txt; done
tail +n1 *.txt
Remove most of the binary crap:
head -n-1 *.txt | grep -e '[. ]' | grep -iv 'mined by' | less
By "Satoshi uploader" we mean the data upload script present in tx 4b72a223007eab8a951d43edc171befeabc7b5dca4213770c88e09ba5b936e17 of the Bitcoin blockchain.
The uploader, and its accompanying downloader, are Python programs stored in the blockchain itself. They are made to upload and download arbitrary data into the blockchain via RPC.
These scripts were notably used for: illegal content of block 229k. The script did not maintain its popularity much after this initial surge up loads, likely all done by the same user: there are very very few uploads done after block 229k with the Satoshi uploader.
Our choice of name as "Satoshi uploader" is copied from A Quantitative Analysis of the Impact of Arbitrary Blockchain Content on Bitcoin by Matzutt et al. (2018) because the scripts are Copyrighted Satoshi Nakamoto on the header comment, although as mentioned at Hidden surprises in the Bitcoin blockchain by Ken Shirriff (2014) this feels very unlikely to be true.
A more convenient version of those scripts that can download directly from blockchain.info without the need for a full local node can be found at: github.com/cirosantilli/bitcoin-strings-with-txids/blob/master/download_tx_consts.py by using the
--satoshi
option. E.g. with it you can download the uploader script with:
./download_tx_consts.py --satoshi 4b72a223007eab8a951d43edc171befeabc7b5dca4213770c88e09ba5b936e17
mv 4b72a223007eab8a951d43edc171befeabc7b5dca4213770c88e09ba5b936e17.bin uploader.py
The scripts can be found in the blockchain at:
- uploader: tx 4b72a223007eab8a951d43edc171befeabc7b5dca4213770c88e09ba5b936e17 block 229991 reproduced at: gist.github.com/cirosantilli/ade4dde7c2f2f5020d792872681763e8The uploader creates a standard Pay-to-PubkeyHash transaction with a single output and data as a fake pubkey hash, and sends change to an address specified on the command line:
./bitcoinInsertionTool.py <data> <change-addr>
- downloader: tx 6c53cd987119ef797d5adccd76241247988a0a5ef783572a9972e7371c5fb0cc block 229991 reproduced at gist.github.com/cirosantilli/e90bd2e6c3fab25a20898e61e3ab3e90The downloader just strips all operands, and keeps all data, notably where public key hashes would be normally put.
The uploader script uses its own cumbersome data encoding format, which we call the "Satoshi uploader format". The is as follows:This means that if we want to index certain file types encoded in this format, a good heuristic is to skip the first 9 bytes (4 size, 4 CRC, 1
- ignore all script operands and constants less than 20 bytes (40 hex characters). And there are a lot of small operands, e.g. the uploader itself uses format www.blockchain.com/btc/tx/4b72a223007eab8a951d43edc171befeabc7b5dca4213770c88e09ba5b936e17 has a
OP_1
, data,OP_3
,OP_CHECKMULTISIG
pattern on every output script, so theOP_1
andOP_3
are ignored - ignore the last output, which contains a real change transaction instead of arbitrary data. TODO why not just do what with the length instead?
- the first 4 bytes are the payload length, the next 4 bytes a CRC-32 signature. The payload length is in particular useful because of possible granularity of transactions. But it is hard to understand why a CRC-32 is needed in the middle of the largest hash tree ever created by human kind!!! It does however have the adavantage that it allows us to more uniquely identify which transactions use the format or not.
OP_1
) and look for file signatures.Let's try out the downloader to download itself. First you have to be running a Bitcoin Core server locally. Then, supposing
we run:
worked! The source of the downloader script is visible! Note that we had to wait for the sync of the entire blockchain to be fully finished for some reason for that to work.
.bitcon/bitoin.conf
containing:
rpcuser=asdf
rpcpassword=qwer
server=1
txindex=1
git clone git://github.com/jgarzik/python-bitcoinrpc.git
git -C python-bitcoinrpc checkout cdf43b41f982b4f811cd4ebfbc787ab2abf5c94a
wget https://gist.githubusercontent.com/shirriff/64f48fa09a61b56ffcf9/raw/ad1d2e041edc0fb7ef23402e64eeb92c045b5ef7/bitcoin-file-downloader.py
pip install python-bitcoinrpc==1.0
BTCRPCURL=http://asdf:qwer@127.0.0.1:8332 \
PYTHONPATH="$(pwd)/python-bitcoinrpc:$PYTHONPATH" \
python3 bitcoin-file-downloader.py \
6c53cd987119ef797d5adccd76241247988a0a5ef783572a9972e7371c5fb0cc
Other known uploads in Satoshi format except from the first few:
- tx 89248ecadd51ada613cf8bdf46c174c57842e51de4f99f4bbd8b8b34d3cb7792 block 344068 see ASCII art
- tx 1ff17021495e4afb27f2f55cc1ef487c48e33bd5a472a4a68c56a84fc38871ec contains the ASCII text
e5a6f30ff7d43f96f61af05efaf96f869aa072b5a071f32a24b03702d1dcd2a6
. This number however is not a known transaction ID in the blockchain, and has no Google hits.
tx 243dea31863e94dc2f293489db02452e9bde279df1ab7feb6e456a4af672156a contains another upload script. The help reads:
Publish text in the blockchain, suitably padded for easy recovery with strings
This is likely a system that uploads text to the blockchain.
One example can be seen on the marijuana plant.
Messages are uploaded one line per transaction, and thus may be cut up on the blk.txt, and possibly even out of order.
But because each line starts with
j(
you can generally piece things up regardless.TODO identify. The first occurrence seems to be in tx e8c61e29c6b829e289f8d0fc95f9eb2eb00c89c85cfa3a9c700b15805451ae6a:
j(DOCPROOF@?pnvf=!;AG
Claims provably fair. satoshidice.com/fair clarifies what that means: they prove fairness by releasing a hash of the seed before the bets, and the actual seed after the bets.
As mentioned in bitcoin.it, it functions basically as cryptocurrency tumbler in practice.
en.bitcoin.it/wiki/Genesis_block contains some comments on the data.
Inscription added by Satoshi Nakamoto on the Genesis block containing:
The Times 03/Jan/2009 Chancellor on brink of second bailout for bankswhich is a reference to: www.thetimes.co.uk/article/chancellor-alistair-darling-on-brink-of-second-bailout-for-banks-n9l382mn62h wihch is fully titled:
Chancellor Alistair Darling on brink of second bailout for banksThe "Alistair" was slikely removed due to limited payload concerns.
Through the newspaper reference, the message proves a minimal starting date for the first mine.
And it hints that one of Bitcoin's motivation was the financial crisis of 2007-2008, where banks were given bailouts by the government to not go under, which many people opposed as the crisis was their own fault in the first place. A notable related stab is taken at Len Sassaman tribute.
We can extract the image from the blockchain ourselves by starting from: blockchain.info/block-height/0?format=json.
From that page we manually extract the hash
and that does contain the famous genesis block string:
The JSON clarifies that the data is encoded in the
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
and then:
wget -O 0.hex https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f?format=hex
xxd -p -r 0.hex
EThe Times 03/Jan/2009 Chancellor on brink of second bailout for banks
script
field of the transaction input
:
{
{
"script":"04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73"
The extra
where:
E
(0x45 in ASCII) in EThe Times
is just extra noise required by the script, we can break things up as:
04ffff001d0104 45 5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73
54
isT
- the
04ffff001d0104
part just doesn't show up on the terminal because it is not made of any printable characters.
The initial
04
is OP_RETURN
.TODO what is actual the meaning of the
ffff001d010445
part? @defango
twitter.com/defango/status/1642750851134652417 comments:
04ffff001d0104 is a hexadecimal string. It is commonly used in the Bitcoin network as a part of the mining process. Specifically, it is used as the target value for a block to be considered valid by the Bitcoin network.This value represents the level of difficulty required for a miner to generate a block that meets the network's criteria. The first four bytes, 04ffff, represent the maximum possible target value. The next three bytes, 001d01, represent the current difficulty levelwhile the final byte, 04, is a padding byte. In summary, this value sets the difficulty level for mining a new block in the Bitcoin network.
TODO the
output
of the transaction has a jumbled script, likely just a regular output to get things going, can't be arbitrary like input.- medium.com/@chain.info1/the-mystery-behind-satoshi-tribute-donations-cf4ce28c56a1 The Mystery Behind "Satoshi Tribute" Donations by Chain.Info (2020)
This was getting very hot as of 2022 for some reason. Would be good to understand why besides the awesome name.
Cryptocurrency with focus on anonymity.
As mentioned at Section "Cryptocurrency", Ciro Santilli believes that anonymity is the only feature that really matters on crypto coins, and therefore if he were to invest in crypto, he would invest in Monero or some other privacy coin.
localmonero.co/knowledge/monero-stealth-addresses?language=en gives an overview of the privacy mechanisms:
- ring signatures, which hide the true output (sender)localmonero.co/knowledge/ring-signatures Gives an overview. Mentions that it is prone to heuristic attacks.Uses a system of decoys, that adds 10 fake possible previous outputs as inputs, in addition to the actual input.So the network only knows/verifies that one of those 11 previous outputs was used, but it does not know which one.It's a bit like having a built-in cryptocurrency tumbler in every transaction.TODO so how do you know which previous outputs were spent or not?
- RingCT which hides the amounts.
- stealth addresses, which hides who you send toThis forces receivers to scan try and unlock every single transaction in the chain to see if it is theirs or not.The sender therefore can know when the money is spent, but once again, not to whom it is being sent.
Based on en.wikipedia.org/wiki/CryptoNote and like Satoshi Nakamoto created by under the pseudonym "Nicolas van Saberhagen" www.reddit.com/r/Monero/comments/7v2obe/offering_a_bounty_for_a_video_of_the_speech_by/
Developers tried to fight application-specific integrated circuit mining, but they failed it seems:
This can also be seen by the ridiculous hash rates on Ciro's test: how to mine Monero.
Coinbase has actually stayed away from trading it even as of 2019 when Monero was the third largest market capitalization crypto because of fear of regulatory slashback: decrypt.co/36731/heres-why-coinbase-still-hasnt-listed-monero. Although it must be said, the value of privacy crypto is greatly reduced when everyone is trading it on exchanges, which require a passport upload to work.
Ubuntu 20.10 as per xmrig.com/docs/miner/build/ubuntu:
At minexmr.com/#getting_started we see that all you then need is a single CLI command:
Seems simple, well done devs!
sudo apt install git build-essential cmake libuv1-dev libssl-dev libhwloc-dev
git clone https://github.com/xmrig/xmrig.git
mkdir xmrig/build && cd xmrig/build
cmake ..
make -j$(nproc)
xmrig -o pool.minexmr.com:4444 -u <your-monero-address>
Benchmark on Lenovo ThinkPad P51 (2017) as per xmrig.com/docs/miner/benchmark:
gives:
which according to the minexmr.com mining pool would generate 0.0005 XMR/day, which at the February 2021 rate of 140 USD/XMR is 0.07 USD/day. The minimum payout in that pool is 0.004 XMR so it would take 8 days to reach that.
./xmrig --bench=1M
948.1 h/s
So clearly, application-specific integrated circuit mining is the only viable way of doing this.
Some people considering Raspberry Pis also conclude obviously that it is useless at a 10H/s rate:
www.makeuseof.com/cryptos-you-can-mine-at-home/ is a completely full of bullshit article that says otherwise. How can someone publish that!
Test buy 2023-04-10 in the UK:
- fee: 0.99 pounds, minimum buy: 1.99 pounds
- bought 10 pounds, minus 0.99 fee, totalled: 0.00039162 BTC (£8.92) presumably after further fees/spread
- bitcoin price on Google on that day: 22,777.54 GBP / BTC
- bitcoin transaction fees were about 2.7 BTC on that day
Sending 5 pounds to wallet
12dg2FaiZLp3VzDtLvwPinaKz41TQcEGbs
- network fee: 0.00001989 BTC
- total bitcoin cost: -0.00023928 BTC
- new balance: 15,234 satoshi (39,162 - 23,928).
- total spent: £5.45
- time est.: about 30 minutes
This worked and I received 21939 satoshis (23928 - 1989) on Electrum on one of the outputs of transaction 1177268091cbeaacbcaac5dc4f6d1774c4ec11b4bcffafa555cd2775eafb954c.
Sending 1 satoshi back! The lowest fee in Electron is 1120 Satoshis targeting 25 blocks (4 hours). Let's do it. Failed, server forbids dust, minimum is 1000 satoshi. OK, sending 1000 satoshi, at 1139 fee.
Some analysts seem to suggest that the things she said were bad.
But they're not.
They're a rare example of someone with some power saying cool honest stuff that comes across their mind.
Unlike the endless mandatory corporate bullshit we usually get otherwise.