Marathon Digital Holdings gives in and adopts Taproot
From the 6th of May 2021 MARA Pool mined censored blocks in the Bitcoin Blockchain. They were declared as OFAC Compliant. It was noted that some transaction, despite the filters, were coming from transaction traceable to Hydra.
The real funny thing is that in order to fight this, transactions from Iran and other countries were sent to the addresses of MARA Pool, so that in the end MARA Pool bitcoins should have been filtered and censored by MARA Pool itself. This showed in the clearest way that MARA Pool attempt to censorship Bitcoin was a failure by all the line.
The 31th of May 2021 Marathon Digital Holding sent out a press with this title: “Marathon’s Mining Pool, MaraPool, To Cease Filtering Transactions”. You can find it here: https://ir.marathondh.com/news-events/press-releases/detail/1244/marathon-signals-for-taproot
They say they have adopted Taproot and will not censorship anymore the blocks.
It’s clear that it was not a “decision”, but definitely they found that their approach has miserably failed. Completely.
Bitcoin Blockchain with the adoption of Taproot and Schnorr Signatures will be even more censorship resistant and there will be no way to state clearly where a transaction will come from. Hard times for who wants to mine the fungibility of Bitcoin.
We can archive this attempt to control Bitcoin. It didn’t even last long. 25 days.
Let’s see the block mined by MARA Pool, let’s compare fees and number of transactions included within the blocks “OFAC Compliant” and not.In [1]:
# First we import blocksci import blocksci # We import Counter from collections, which we will use to count items in the lists we'll create from collections import Counter # We instantiate the chain object chain = blocksci.Blockchain("/BlockSci/config_file") # We also import other libraries import pandas as pd import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline sns.set() %time
CPU times: user 2 µs, sys: 2 µs, total: 4 µs Wall time: 9.54 µs
In [2]:
# The block height of the chain used in this Notebook print(len(chain))
685964
In [3]:
# List blocks mined as OFAC Compliant ofac_blocks_list = [] sum_fees_ofac_blocks = 0 nr_trans_ofac_blocks = 0 for x in chain : if "OFAC" in str(x.coinbase_param) : print (" Height:", x.height, "TimeStamp:", x.time,"Fees:", x.fee/1e08) ofac_blocks_list.append(x) sum_fees_ofac_blocks += x.fee nr_trans_ofac_blocks += x.tx_count print("Number of OFAC Compliant blocks found: ", len(ofac_blocks_list)) print("Median fee per OFAC block: ", (sum_fees_ofac_blocks/ len(ofac_blocks_list)/1e8), "bitcoin") print("Median Number of transactions per block (OFAC) ", nr_trans_ofac_blocks / len(ofac_blocks_list))
Height: 682170 TimeStamp: 2021-05-06 04:50:11 Fees: 0.05095356 Height: 682472 TimeStamp: 2021-05-07 23:33:02 Fees: 0.46791246 Height: 682537 TimeStamp: 2021-05-08 08:06:18 Fees: 0.92199734 Height: 682593 TimeStamp: 2021-05-08 15:41:26 Fees: 0.14279267 Height: 682816 TimeStamp: 2021-05-09 21:04:43 Fees: 0.96328865 Height: 682843 TimeStamp: 2021-05-10 01:01:38 Fees: 0.48400948 Height: 683315 TimeStamp: 2021-05-12 18:33:06 Fees: 0.27102372 Height: 683394 TimeStamp: 2021-05-13 05:13:57 Fees: 0.04922775 Height: 683412 TimeStamp: 2021-05-13 07:31:29 Fees: 0.17891398 Height: 683526 TimeStamp: 2021-05-14 01:06:37 Fees: 0.31408185 Height: 683596 TimeStamp: 2021-05-14 16:51:02 Fees: 1.03762463 Height: 683628 TimeStamp: 2021-05-14 20:52:54 Fees: 0.70197438 Height: 683811 TimeStamp: 2021-05-16 06:27:42 Fees: 0.3664704 Height: 684152 TimeStamp: 2021-05-19 04:22:49 Fees: 0.74019458 Height: 684217 TimeStamp: 2021-05-19 17:31:21 Fees: 1.11437835 Height: 684308 TimeStamp: 2021-05-20 12:05:41 Fees: 1.14902694 Height: 684329 TimeStamp: 2021-05-20 16:41:38 Fees: 1.16243244 Height: 684509 TimeStamp: 2021-05-22 09:09:06 Fees: 0.79709421 Height: 684550 TimeStamp: 2021-05-22 14:48:11 Fees: 0.90005206 Height: 684621 TimeStamp: 2021-05-23 05:57:14 Fees: 0.32440476 Height: 684842 TimeStamp: 2021-05-25 01:05:54 Fees: 0.10884603 Height: 684852 TimeStamp: 2021-05-25 03:06:25 Fees: 0.13680179 Height: 685031 TimeStamp: 2021-05-26 14:47:00 Fees: 0.24858622 Height: 685221 TimeStamp: 2021-05-28 03:55:18 Fees: 0.17645753 Height: 685437 TimeStamp: 2021-05-30 00:25:26 Fees: 0.16853315 Height: 685487 TimeStamp: 2021-05-30 08:18:27 Fees: 0.18786433 Height: 685550 TimeStamp: 2021-05-30 18:34:27 Fees: 0.08601165 Height: 685659 TimeStamp: 2021-05-31 14:19:50 Fees: 0.64959816 Height: 685818 TimeStamp: 2021-06-01 16:07:33 Fees: 0.65760579 Height: 685884 TimeStamp: 2021-06-02 04:28:10 Fees: 0.30919456 Height: 685951 TimeStamp: 2021-06-02 12:32:57 Fees: 0.49884389 Number of OFAC Compliant blocks found: 31 Median fee per OFAC block: 0.4956837841935484 bitcoin Median Number of transactions per block (OFAC) 1635.0645161290322
In [8]:
non_ofac_blocks_list = [] sum_fees_no_ofac_blocks = 0 nr_trans_non_ofac_blocks = 0 median_fees_ofac_blocks = 0 median_fees_non_ofac_blocks = 0 for i in range(682170, 685543) : if not "OFAC" in str(x.coinbase_param) : sum_fees_no_ofac_blocks = sum_fees_no_ofac_blocks + chain[i].fee non_ofac_blocks_list.append(x) nr_trans_non_ofac_blocks += chain[i].tx_count median_fees_ofac_blocks = (sum_fees_ofac_blocks/ len(ofac_blocks_list)/1e8) median_fees_non_ofac_blocks = (sum_fees_no_ofac_blocks / len(non_ofac_blocks_list))/1e8 ofac_nr = len(ofac_blocks_list) non_ofac_nr = len(non_ofac_blocks_list) print("OFAC Compliant blocks:", ofac_nr) print("Non-OFAC Compliant blocks", non_ofac_nr) print("Number of non-OFAC Compliant blocks found: ", len(non_ofac_blocks_list)) print("Number of OFAC Compliant blocks found:", len(ofac_blocks_list)) print("Percent of OFAC Compliant blocks vs. non-OFAC:", ((ofac_nr / non_ofac_nr)*100), "%") print("Median fees per non OFAC block: ", sum_fees_no_ofac_blocks / len(non_ofac_blocks_list)/1e8 , "bitcoin") print("Median fees per OFAC block: ", sum_fees_ofac_blocks / len(ofac_blocks_list)/1e8 , "bitcoin") print("Median Number of transactions per block OFAC Block:", (nr_trans_non_ofac_blocks / len(non_ofac_blocks_list)) ) print("Median Number of transactions per block (non-OFAC) ", (nr_trans_ofac_blocks / len(ofac_blocks_list)) ) print("Non OFAC blocks have median ", (((nr_trans_non_ofac_blocks / len(non_ofac_blocks_list)) / (nr_trans_ofac_blocks / len(ofac_blocks_list))) * 100), " more transactions per block") print("And median more", ((median_fees_non_ofac_blocks - median_fees_ofac_blocks)), " bitcoin fees per block.")
OFAC Compliant blocks: 31 Non-OFAC Compliant blocks 3373 Number of non-OFAC Compliant blocks found: 3373 Number of OFAC Compliant blocks found: 31 Percent of OFAC Compliant blocks vs. non-OFAC: 0.9190631485324637 % Median fees per non OFAC block: 0.6100702352297658 bitcoin Median fees per OFAC block: 0.4956837841935484 bitcoin Median Number of transactions per block OFAC Block: 1796.6243699970353 Median Number of transactions per block (non-OFAC) 1635.0645161290322 Non OFAC blocks have median 109.88094673172233 more transactions per block And median more 0.11438645103621736 bitcoin fees per block.
Do you want to have access to blockchain analysis? Register at PlutoHash here: www.plutohash.com/beta and join the fray! Don’t forget to smile!In [ ]: