import%20marimo%0A%0A__generated_with%20%3D%20%220.24.0%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%3Ca%20href%3D%22https%3A%2F%2Fcolab.research.google.com%2Fgithub%2Fapplejxd%2Fcolaboratory%2Fblob%2Fmaster%2Falgorithm%2Fmining.ipynb%22%20target%3D%22_parent%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcolab.research.google.com%2Fassets%2Fcolab-badge.svg%22%20alt%3D%22Open%20In%20Colab%22%2F%3E%3C%2Fa%3E%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%5BBlock%20395791%5D(https%3A%2F%2Fexplorer.btc.com%2Fbtc%2Fblock%2F395791)%0A%20%20%20%20%E3%81%A8%0A%20%20%20%20%5BBlock%20395790%5D(https%3A%2F%2Fexplorer.btc.com%2Fbtc%2Fblock%2F395790)%0A%20%20%20%20%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%AE%E6%A4%9C%E8%A8%BC%0A%0A%20%20%20%20-%20%5B%E5%8F%82%E8%80%83%E3%82%B5%E3%82%A4%E3%83%881%5D(https%3A%2F%2Fen.bitcoin.it%2Fwiki%2FBlock_hashing_algorithm)%0A%20%20%20%20-%20%5B%E5%8F%82%E8%80%83%E3%82%B5%E3%82%A4%E3%83%882%5D(https%3A%2F%2Fqiita.com%2Fryskchy%2Fitems%2Fa862139e9521942248fa%23%25E5%258F%2582%25E8%2580%2583%25E6%2596%2587%25E7%258C%25AE)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%0A%20%20%20%20version%20%3D%200x4%0A%20%20%20%20%23%20%E5%89%8D%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E5%80%A4%0A%20%20%20%20prev_block%20%3D%200x0000000000000000005629ef6b683f8f6301c7e6f8e796e7c58702a079db14e8%0A%20%20%20%20%23%20%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%AB%E3%83%AB%E3%83%BC%E3%83%88%0A%20%20%20%20markle_root%20%3D%200xefb8011cb97b5f1599b2e18f200188f1b8207da2884392672f92ac7985534eeb%0A%20%20%20%20timestamp%20%3D%20%222016-01-30%2013%3A23%3A09%22%0A%20%20%20%20bits%20%3D%200x180928f0%0A%20%20%20%20nonce%20%3D%200x56591fc2%0A%20%20%20%20return%20bits%2C%20markle_root%2C%20nonce%2C%20prev_block%2C%20timestamp%2C%20version%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%82%92%E8%AA%BF%E6%95%B4%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(markle_root%2C%20prev_block%2C%20version)%3A%0A%20%20%20%20version_h%20%3D%20version.to_bytes(4%2C%20%22little%22).hex()%0A%20%20%20%20print(version_h)%0A%0A%20%20%20%20prev_block_h%20%3D%20prev_block.to_bytes(32%2C%20%22little%22).hex()%0A%20%20%20%20print(prev_block_h)%0A%0A%20%20%20%20markle_root_h%20%3D%20markle_root.to_bytes(32%2C%20%22little%22).hex()%0A%20%20%20%20print(markle_root_h)%0A%20%20%20%20return%20markle_root_h%2C%20prev_block_h%2C%20version_h%0A%0A%0A%40app.cell%0Adef%20_(timestamp)%3A%0A%20%20%20%20from%20datetime%20import%20datetime%0A%0A%20%20%20%20timestamp_s%20%3D%20int((datetime.strptime(timestamp%2C%20%22%25Y-%25m-%25d%20%25H%3A%25M%3A%25S%22)-datetime(1970%2C1%2C1)).total_seconds())%0A%20%20%20%20timestamp_h%20%3D%20timestamp_s.to_bytes(4%2C%20%22little%22).hex()%0A%20%20%20%20print(timestamp_h)%0A%20%20%20%20return%20(timestamp_h%2C)%0A%0A%0A%40app.cell%0Adef%20_(bits%2C%20nonce)%3A%0A%20%20%20%20bits_h%20%3D%20bits.to_bytes(4%2C%20%22little%22).hex()%0A%20%20%20%20print(bits_h)%0A%0A%20%20%20%20nonce_h%20%3D%20nonce.to_bytes(4%2C%20%22little%22).hex()%0A%20%20%20%20print(nonce_h)%0A%20%20%20%20return%20bits_h%2C%20nonce_h%0A%0A%0A%40app.cell%0Adef%20_(bits_h%2C%20markle_root_h%2C%20nonce_h%2C%20prev_block_h%2C%20timestamp_h%2C%20version_h)%3A%0A%20%20%20%20from%20binascii%20import%20hexlify%2C%20unhexlify%0A%20%20%20%20from%20hashlib%20import%20sha256%0A%0A%20%20%20%20header_hex%20%3D%20(version_h%20%2B%20prev_block_h%20%2B%20markle_root_h%20%2B%20timestamp_h%20%2B%20bits_h%20%2B%20nonce_h)%0A%20%20%20%20print(header_hex)%0A%0A%20%20%20%20header_bin%20%3D%20unhexlify(header_hex)%0A%20%20%20%20hash%20%3D%20sha256(sha256(header_bin).digest()).digest()%0A%0A%20%20%20%20print(hexlify(hash).decode(%22utf-8%22))%0A%20%20%20%20print(hexlify(hash%5B%3A%3A-1%5D).decode(%22utf-8%22))%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
20d63db4e7cfbfaadd49fad2569b0458