Discover more from Bitcoin.Review
BR046 - Libbitcoin Vulnerability, Acoustic Attack, Mempool.space & + MORE ft. Odell, Marty & Harry
Quote of the Day
“The production of too many useful things results in too many useless people.” ~ Karl Marx
00:02:22 Key listening attack
New acoustic attack steals data from keystrokes with 95% accuracy [BleepingComputer]
A team of researchers from British universities has trained a deep learning model that can steal data from keyboard keystrokes recorded using a microphone with an accuracy of 95%.
When Zoom was used for training the sound classification algorithm, the prediction accuracy dropped to 93%, which is still dangerously high, and a record for that medium.
“Much before AI key listening there was just key listening. And also hidden cameras and tempest attacks. That’s why key scrambling for PINs is so important.” ~ @NVK
00:15:03 Libbitcoin Bitcoin Explorer Vulnerability CVE-2023-39910
“If you generated a wallet using Libbitcoin’s Bitcoin Explorer, including as described in the appendix to Mastering Bitcoin, your funds are at risk (or already stolen).” [David A. Harding / Full details]
Milk Sad discovered a cryptographic weakness in the widely utilized Libbitcoin Explorer (bx) cryptocurrency wallet tool while following up on mysterious wallet thefts.
The bx seed subcommand for generation of new wallet private key entropy is flawed and produces insecure output.
On Libbitcoin Explorer 3.x versions, bx seed uses the Mersenne Twister pseudorandom number generator (PRNG) initialized with 32 bits of system time.
Bad actors have discovered this flaw and are actively exploiting it to steal funds from affected wallets on multiple blockchains.
There is reason to believe some Libbitcoin Explorer versions before 3.0.0 also produce weak bx seed output in some system environments.
Think of this as securing your online bank account with a password manager that creates a long random password, but it often creates the same passwords for every user. Malicious people have figured this out and drained funds on any account they can find.
00:25:21 COLDCARD Firmware Pull Requests
offer to store/vault ephemeral secrets if opt-in enabled by user
vault is in settings object (encrypted)
user can easily switch to ephemeral seeds stored in Seed Vault
Seed Vault (if enabled) is inside
Advanced/Tools -> Seed Vault
Stored seeds can be chosen based on secret XFP:
This PR will introduce saving and restoring XOR from sd cards.
Red Mk4 now in stock and all colors shipping within 2-3 days
Software Releases & Project Updates
00:26:24 Wasabi v2.0.4
Improved transactions and tx control
New transaction speedup feature
Child Pays For Parent (CPFP)
Replace By Fee (RBF)
Better fee estimation
Better wallet load times
Block filters allow light clients to download only the blocks that contain their transactions instead of downloading every block
Optimizes the filter checking process to reduce wallet loading times by 90%
Privacy Warnings and Spending Suggestions
New Privacy Warnings present users with one click fixes if they are attempting to construct a transaction that spends nonprivate funds or creates change
Whales who set a high anonymity score target now need fewer coinjoin rounds to reach 100% privacy.
The amount of outputs a client can create in a round has been increased from 8 to 10
Decompositions that produce change outputs are now rarely chosen.
Adjustments to the anonymity score calculator reduces the amount of coinjoining required before coins are considered private
More experienced users can directly interact with core features of the wallet through an RPC interface
00:31:54 BTC Pay Server 1.11.0
Complete overhaul of Invoice Reporting
POS Cart redesign
Add product categories to POS apps
Checkout v2: Play sound when invoice is paid
Add support for ExchangeRateHost and FreeCurrencyRates rate providers
00:32:13 Samurai v0.99.98h
New feature: Verify signed message
New feature: Sweep timelocked fidelity bond (addition to existing sweep private key tool)
New UI: Addition of Joinbot toggle on Deposit and Postmix send screen
New UI: UTXO screen “select all” button
New: In-app error logs
Collaborative Wallets: Create, sign, and share multisig on Tap (NFC/ AirDrop)
Assisted Inheritance Key: Signs after a delay of 30 days giving the owner a chance to decline the request
Inheritance support documents: Safe Guarding tips, Letter to the Attorney and Recover Instructions for the heir
Ability to hide hot wallets
Open sourced the code
Mempool Clock launched
Bitcoin Calculator launched
Some v3.0 updates already live
Re-implemented our block template algorithm in Rust for improved accuracy and performance
Begun visualizing both
mempoolfullrbf=1transactions together on RBF timeline
Forked blockstream/electrs to mempool/electrs
Made many fixes and improvements
It’s a breaking change – mempool/mempool 3.x will require mempool/electrs 3.x
Started integrating Mempool Accelerator™
Now display and index P2PK outputs using their public keys
Made mempool blocks scrollable
Imported historical mempool data from 2017 and 2018
01:07:42 MyCitadel Desktop v1.4.0
Context menus for transaction, address and coin lists
Copy txid, address, amounts, heights to clipboard via context menu
Ability to pay full wallet balance to an address
New distributive format: Appimage
Included Python packaging in Windows, simplifying the installation process
01:09:01 HWI v2.3.0
Jade DIY devices
GUI import/export of PSBTs to/from file
Apple Silicon hwi binary for MacOS 12.0+ (hwi-qt cannot be built yet)
01:09:32 Blockstream Green v4.0.11
Add lightning onchain deposits
Allow scanning QR code from images
01:09:50 Electrs v0.10.0
Add ARM build and integration tests in Cirrus CI
01:10:20 Libwally Core v0.9.1
Avoid potential resource exhaustion for platforms with odd malloc semantics when provided with malicious input
Add support for descriptors containing built-in wrappers with constant arguments and empty descriptors via raw()
Add various PSBT/transaction/witness stack helper functions
Improve the reliability of clearing memory on all platforms
01:11:17 Blockstream Satellite v2.4.6
Support for reporting to a custom Blockstream Monitoring server for testing.
Environmental variable to disable the verification of TBS USB drivers.
Generation of manpage and bash completion files via Makefile.
Command blocksat-cli sat-ip ls to list the available Sat-IP receivers.
Support for new Satellite API order queues on the api list command.
Automatic patching and runtime verification of the channel configuration file used by USB receivers.
Support for NetworkManager when configuring static IP addresses.
01:17:04 StartOS v0.3.4.4
Https over Tor for faster UI loading times
Change password through UI
Use IP address for Network Folder backups
Automatically retry spendable outputs if not successfully published
Permit the closure of the LN-DLC channel in any intermediate state.
v1.1.0 Charge funding transaction on-chain fees upon receiving and inbound JIT Channel
Added prometheus metrics to coordinator:
channel_balance_satoshi, channel_outbound_capacity_satoshi, channel_inbound_capacity_satoshi, channel_is_usable, node_connected_peers_total, node_balance_satoshi, position_quantity_contracts, position_margin_sats
Track channel data
Track channel liquidity
Track on-chain transactions
Display service status in the app
Fail HTLCs backwards
Show local time in candlestick chart
Enable wumbo channels for up to 1 BTC
01:21:19 Brainbow v0.1.149
Switched from light to dark mode
‘Always On’ mode ensures that the wallet remains active, even when using slow connections, preventing it from going idle
The project maintainers are looking for feedback. Issues can be reported on Twitter/X or by filing an issue on GitHub.
01:22:27 Start 9
SimpleX Server for StartOS is now available on the Start9 Registry [Announcement]
New auto-withdrawal feature [Announcement]
01:34:59 Boltz Update
Uniting Liquid & mainchain swaps in one web app
Swap to Taproot addresses
Liquid swaps now available via onion domain
Increasing Liquid Swap Limits to 0.1 BTC
01:35:32 Agoradesk v1.1.9
New feature: Configure which notifications you wish to receive - trades, chats, payments.
Improved country search - now ordered by name with search functionality by name or code.
01:35:57 Orange Pill App 1.4.7
Added a referral program inside the app (earn 10k sats for each signup)
01:37:38 The Bitcoin Company 1.31
Added the ability to purchase TBC Gift Cards
01:39:23 bitaxeUltra: An open source #Bitcoin ASIC miner project based on the BM1366 ASIC used in the Antminer S19XP
The first fully open source hardware Bitcoin ASIC miner
Fist working prototype demoed
Standalone: can mine directly to your pool over WiFi. No External computer needed.
Embedded: low cost, low maintenance, high availability, high reliability, low power.
ASIC: based on the very, very efficient BM1366 from Bitmain.
Versatile: solo/pool mining, autotune power/heat/efficiency.
Open Source: All design files are provided.
ESP32-S3-WROOM-1 wifi microcontroller on board
TI TPS40305 buck regulator steps down the 5V input to power the BM1397
Maxim DS4432U+ current DAC digitally adjusts the BM1397 core voltage from 0.04V to 2.4V
TI INA260 power meter measures the input voltage and current of the miner
Microchip EMC2101 measures the BM1397 internal diode temperature. Also PWM controls the fan and monitors tach output.
0.91” SSD1306 OLED I2C Display Module
01:40:35 Timechain Calendar: Real-time data from the Bitcoin timechain
Scrub back in time through the blocks and enjoy calendar features tied to this immutable history
“I created Timechain Calendar as a new dashboard visualizer of live network data - I think of it as a cross between Mempool.space and a BlockClock, with some new paradigms of visualizing the timechain. It’s also a unique block lookup tool, giving the user a variety of methods of finding blocks in the past and estimating blocks in the future.” - TC
Free and open source project that lets you try to reach a bitcoin block with a small piece of hardware
The main aim of this project is to let you learn more about mining and to have a beautiful piece of hardware in your desktop
01:42:50 FROSTSNAP: “Easy, Personalized, Secure Bitcoin Multisig”
Frostsnap uses an experimental FROST implementation from secp256kfun
This repository is comprised of the following components:
device/ - The firmware which runs on ESP-32 microprocessors, handles message IO, user interaction, and display.
coordinator-cli/ - A simple CLI Bitcoin wallet which instructs devices what to do over USB serial. It can also post to Nostr!
frostsnap_core/ - Software library for handling the state of Frostsnap coordinators and devices, and how they respond to messages of different kinds.
frostsnap_comms/ - Software library for how the devices and coordinators serialize different types of bincode messages.
Free open source software under the MIT license.
01:45:25 Libflorestra: Bitcoin full node at your fingertips
Libfloresta provides a series of tools for Bitcoin wallet and application developers, to integrate resource efficient Bitcoin full node functionality into their applications.
With Libfloresta, developers can easily integrate Bitcoin full node functionality into their applications, without having to worry about the complexities of running a full node. So any application can give its users full sovereignty over their funds, without having to maintain a separate server.
Lightning & L2(+)
Software Releases & Project Updates
01:48:51 Mutiny Wallet now available for testing on Android
01:49:06 Mutiny Node
01:49:58 Zeus v0.7.7
Added confirmation process to delete a node connection
lnurlpay metadata display enhancements
Notes display enhancements
Bug fix: Camera: prevent scanning in background
Sparko interface now marked as deprecated
Introduction of a Master key
As a user, you now have a Master key from which you are able to derive your private keys for Nostr, on-chain bitcoin, Lightning login (LNURL-auth). This also includes a recovery phrase which makes backups a lot easier
Personalization of the Alby Account
The new Alby Account connector allows you to personalize the browser extension by showing your own lightning address, your avatar from your personal Alby page and much more in the future.
Login with lightning changes
Alby can now tie the login with lightning via LNURL-auth to a private key
Is Now Open Source
“Originally decided not to open source nodeless because I was worried about getting investor funding. Well jokes on me I couldn’t get funding either way 🤣 So fuck it, we’re going open source, slowly but surely.” ~ @utxo
Working on a load balancer/middleware service for lightning nodes
Will handle failovers, caching and rate limiting to protect your production nodes.
Currently only supports LND but will be adding CLN support as well.
Anyone is welcome to it under MIT license.
01:50:44 Wallet of Satoshi v2.2.4
PERMANENTLY REMOVE Buy and Sell Bitcoin Options
01:51:09 Nayuta Wallet v1.0.0
Support lightning invoice from another app (e.g. Damus)
iCloud Auto Backup
01:51:17 Breez SDK Core v0.1.4
Adjust default fees to reasonable values.
Introduce custom errors
01:51:25 Loop v0.26.0-beta
Enables loop out and autoloop out operations to sweep htlcs to addresses generated from an extened public key.
01:52:19 Cashu v0.13.0 – Ecash backups
Deterministic secret derivation: Allows users to re-generate tokens and restore balances if they lose access to their wallets
01:52:34 Minibits v0.0.7-alpha
Offline send and receive: Send e-cash while the device is offline. New coin selection allows to pick exact coins to be sent, without the need to connect to the mint. E-cash can be exchanged with both devices staying offline using QR code.
01:52:39 Lightning Terminal v0.10.4-alpha
Update to the integrated Taproot Assets daemon version
Adds functionality to query information of specific LND accounts
Enables labeling of accounts
01:52:45 RGB Core
01:52:49 taproot-assets v0.2.3
script: pin GOAMD64 for release builds
Remove lnd references in user-visible issue copy
QueryAssetStats and UniverseStats no auth client access
Add block height to asset mint proof
Add CLI flag to skip authentication for stats related RPC endpoints
Improve universe stats
Add proof block height verification
01:53:26 JoltzRewards announces the launch of Taproot Assets Wallet
Mint Tokens & Collectibles
01:53:33 Thunderhub v0.13.20
Add signet network
Improve channel open
React tables migration
Change the default received onchain address to taproot
01:53:38 Clams v1.8.0
New /channels nav link and associated routes that allow you to view channels, open channels and modify channel settings.
Auto connection to a node by adding the connection details to the URL.
01:53:48 Peach v0.2.12
Filter your offers based on premium and receive push notifications based those parameters.
Swap lightning sats for on-chain sats with your peers! (No fee aside from on-chain network fee).
01:53:52 Stacker News v1.2.1
01:59:31 PkgZap by Alby: Value4Value payments for npm (and other package managers)
Allows developers to contribute back to all code dependencies by zapping all at once
Leverages the lightning network to offer direct contributions of any amount.
Payments happen instantly and automatically split across all dependencies.
Drastically lowers the barriers for project owners to give value back for the value that they receive
As a package developer:
You only have to add the lightning address to your package.json file.
As a project developer
You can fetch funding details of all the dependencies used in your project
Enter your desired total amount you want to split among all supported dependencies
Approve the wallet connection and you’re done!
Focus on high-availability, modularity and security
Built on the Lightning Development Kit (#LDK), Orage aims to provide the necessary tools, simplicity, and infrastructure to seamlessly integrate both individual users and enterprises into the ecosystem
Utilizing the LDK, Orage offers built-in features such as custom scripts. This will pave the way for greater flexibility in the types of applications that can be built on the #LightningNetwork.
The goal is to stimulate the development of more ‘Lightning-aware’ applications by integrating custom scripts, Discreet Log Contracts (DLCs), and Taproot.
Software Releases & Project Updates
02:00:15 Simplex Chat v5.2.0
message delivery receipts – with opt out per contact!
filter favorite and unread chats.
keep your connections working after restoring from backup.
share your address with group members via your chat profile.
improved disappearing messages.
a bit more usable groups.
chat preference to prohibit message reactions.
restart and shutdown buttons.
more stable message delivery.
02:00:59 fldigi fldigi: Ham Radio Digital Modem Application
02:01:31 Thanks to everyone who streamed sats, and shoutout to our top boosters:
@transisto [🏆 TOP BOOSTER] (100,000 sats) “I agree with NVK, We need multisig wallets to talk to each others securely. nunchuck is great but it’s too risky to use software keys or HWW with no screens on a single implementation. What’s happening to Specter wallet?”
@apemithrandir (7,777 sats) “Craig one of my favourite Guests, at least since Odell was shooed”
@btcmcboatface (5,044 sats) “a boostagram as a token of appreciation!”
@ahanniga (3,000 sats) “Great chat and panel 🤓”
@nomadjoe (2,222 sats) “antiwar.com”
@heidisov (2,100 sats) “Strong black coffee is the way to listen …love this podcast.”
@michaelmatulef (2,100 sats) “Thank you Elon for rugging NVK. The Pablo.Review podcast is so much more educational and entertaining 😁”
@vake (2,000 sats) “the “bitcoin is boring and nothing happens” podcast”
Bitcoin Optech Newsletter
02:03:52 Highlights from recent Bitcoin Optech Newsletters
LN specification clean up proposed:
Rusty Russell posted to the Lightning-Dev mailing list a link to a PR where he proposes to remove some features that are no longer supported by modern LN implementations and to assume other features will always be supported.
Simplified LN closing protocol:
Rusty Russell posted to the Lightning-Dev mailing list a proposal that simplifies the process of two LN nodes mutually closing a channel they share. With the new closing protocol, one of the nodes tells its peer that it wants to close the channel and indicates the amount of transaction fee it will pay.
That closing initiator will be responsible for the entire fee, although both outputs of a typical mutual close transaction will be immediately spendable so either party will be able to use CPFP fee bumping in the normal case.
The new protocol is also compatible with exchanging information for MuSig2-based scriptless multisignatures, which are part of in-development upgrades to LN that will increase privacy and lower onchain fee costs.
LN Summit notes:
Ropics discussed included: Reliable transaction confirmation, Taproot and MuSig2 channels, Updated channel announcements, PTLCs and redundant overpayment, Channel jamming mitigation proposals, Simplified commitments, The specification process
Safety of blind MuSig2 signing:
Tom Trevethan posted to the Bitcoin-Dev mailing list to request a review of a cryptographic protocol planned as part of a statechains deployment.
The goal was to deploy a service that would use its private key to create a MuSig2 partial signature without gaining any knowledge about what it was signing or how its partial signature was used.
The blind signer would simply report how many signatures it had created with a particular key.
News & Noteworthy
02:04:33 Ai4ALL results are in
8 incorporated NOSTR
NIPs created (1 - NIP-90)
Replit prizes ($2,500) and bounties (11)
Hackathon Prizes ($14,000)
Overall winner: PhotoBolt.
PhotoBolt turns a product image into a poster by breaking down the work into a chain of smaller jobs, publishing them to the nostr network for Generative AI Service Providers to compete against each other in completing the jobs for satoshis.
Winner of the Agents (Machine Payments) Track is Flow.
Flow provides no-code AI workflow automations powered by the lightning network.
Winner of the Privacy Track is Netonomy.
Netonomy is a portal to a decentralized future where people become servers and interact through open protocols.
Winner of the Training Track is Bitcoin-PAL.
Bitcoin-PAL is a bitcoin-focused AI chatbot coupled with an incentivized crowd-sourcing platform that trains and educates LLMs and users with bitcoin.
Winner of the Bitcoin Education Track is BitDevs Upgraded.
BitDevs Upgraded is a website template with a fresh new UI and AI LLM which generates summaries of meetup content to improve the experience of BitDevs attendees.
The hackathon offered a total of 17 bounties, including eight specifically focused on combining Nostr and AI.
02:07:30 The Human Rights Foundation
Launched a new campaign called the Bitcoin Bounty Challenge
Launched with an initial set of 10 bounty challenges. (11th added - BIP47 Expansion)
An individual or team who fully solves any of the ten challenges will be eligible to receive a bounty of 2 BTC.
The Bitcoin Bounty Challenge will run until December 31, 2024. Any unclaimed bounties will convert into general operating funding for the HRF’s Bitcoin Development Fund on January 1, 2025.
Voltage X Human Rights Foundation Partnership Announced
Voltage will support HRF efforts with easy-to-maintain BTCPay Server instances, inbound and outbound liquidity for lightning donations, and troubleshooting and technical support.
The grant opens up opportunities for campaigns that promote and bolster Bitcoin schools and communities worldwide.
Mick Morucci, CEO of Geyser, emphasized the importance of Bitcoin for underserved populations, stating, “These are the people that would most benefit from bitcoin, which can act as a shield. These are also those that are least aware of bitcoin.”
The grant seeks to amplify the efforts of Bitcoin communities that are emerging across the globe, offering knowledge, education and tools to promote participation in the Bitcoin movement.
To fund the grant, Geyser has raised 1 BTC, thanks to generous donors and a partnership with Blink.
The organization aims to distribute the proceeds to numerous projects that demonstrate impact, need and proof of work.
Applications for the grant are currently open and will be accepted until mid-August.
02:08:00 Stratum v2 (SRI) Roadmap - To infinity and beyond Announced
Business & Finance
02:09:00 PayPal Launches a Stablecoin [Bloomberg]
PayPal USD will be pegged to dollar, issued by Paxos Trust
Tether Purchased 1,529 Bitcoin In Q2, CTO Confirms [Bitcoin Magazine]
Tether, the company behind the world’s most popular stablecoin USDT, acquired 1,529 bitcoin in the second quarter of 2023.
Legal & Political
Kuwait Cracks Down on Crypto, Banning Payments, Investment and Mining [Coindesk]
Kuwait has prohibited the use of crypto for payments or investment to combat money laundering, according to a circular by the country’s financial regulator issued on Monday.
The Capital Markets Authority also placed an “absolute” ban on all digital asset mining, prohibited the recognition of crypto as decentralized currency, and also warned the public that companies are not allowed to provide any type of crypto-related services.
Coin Center’s case challenging Congress’s expansion of Section 6050I of the tax code was dismissed as unripe by the district court. [Announcement]
2/ This law take effect on Jan 1, 2024, and will require citizens who are recipients of crypto payments of $10,000 or more to report to the government not just the transaction, but the PII of the sender as well–all without a warrant.
SEC asked Coinbase to halt trading in everything except bitcoin, CEO says [Financial Times]
Coinbase chief executive Brian Armstrong told the Financial Times that the SEC made the recommendation before launching legal action against the Nasdaq-listed company last month for failing to register as a broker.
The SEC’s case identified 13 mostly lightly traded cryptocurrencies on Coinbase’s platform as securities, asserting that by offering them to customers the exchange fell under the regulator’s remit.
Bitfinex Hacker and Wife Plead Guilty to Money Laundering Conspiracy Involving Billions in Cryptocurrency [Press Release]
Ilya Lichtenstein, 35, and Heather Morgan, 33, were arrested in February 2022 after the government seized approximately 95,000 of those stolen bitcoin from cryptocurrency wallets in the defendants’ control. At the time of the seizure, the recovered funds were valued at approximately $3.6 billion. Since their arrests, the government has seized another approximately $475 million tied to the hack.
02:16:42 Chainalysis Investigations Lead Is ‘Unaware’ of Scientific Evidence the Surveillance Software Works [Coindesk]
Elizabeth Bisbee, head of investigations at Chainalysis Government Solutions, testified she was “unaware” of scientific evidence for the accuracy of Chainalysis’ Reactor software used by law enforcement, an unreleased transcript of a June 23 hearing shared with CoinDesk shows.
02:16:58 PayPal permanently locked the GrapheneOS Foundation account on Jul 27, 2023 [Announcement]
GrapheneOS Foundation is a non-profit organization incorporated federally in Canada
The foundation believes their account was shut down because they accept cryptocurrency donations
02:17:26 Worldcoin Safety and Privacy Concerns
Kenya suspends Worldcoin’s crypto project over safety concerns [Reuters]
Kenya’s interior ministry said on Wednesday that it had suspended the local activities of cryptocurrency project Worldcoin while government agencies assess potential risks to public safety.
Police Raid Worldcoin Cryptocurrency Warehouse in Nairobi [Kahawatungu]
Data Commissioner Immaculate Kassait defended her office and said Tools for Humanity, the parent company of Worldcoin, failed to disclose its true intentions during registration.
Worldcoin says will allow companies, governments to use its ID system [Reuters]
Companies could pay Worldcoin to use its digital identity system, for example if a coffee shop wants to give everyone one free coffee, then Worldcoin’s technology could be used to ensure that people do not claim more than one coffee without the shop needing to gather personal data, Macieira said. “The idea is that as we build this infrastructure and that we allow other third parties to use the technology.”
02:18:55 BTC Sessions New Tutorial: Mastering Bitcoin Transactions: Unlocking Nunchuk Wallet’s ADVANCED Features
Child Pays For Parent
Node connection (Start9 example)
02:19:12 Here’s a list of our top recently published reads:
Libbitcoin Bitcoin Explorer Vulnerability CVE-2023-39910 by Milk Sad
Passphrases Are Not the Solution for Bitcoin Custody by Hugo Nguyen
How to Build Your Own Bitcoin Park by Rod
Azteco Guide by bitcoiner.guide
StaticWire: Rent Internet Protocol Subnets Using Bitcoin’s Lightning Network by Andy Schroder
Drivechains Research by BitMEX
How can I manually (on paper) calculate a Bitcoin public key from a private key? (Poelstra’s Response on Stack Exchange)
Increasing Interoperability Between Bitcoin’s Second-Layer Protocols by Chase Smith
On how we get to “self-custodial custodians” by Arvin from Galoy
Lightning Everywhere by Tony Giorgio
Episode submission ideas
We’re looking for ideas for interesting panel conversations. To send Bitcoin related questions, just go to bitcoin.review and follow the contact links at the bottom of the page.