As far as you use a DECIMAL(16, 8) field, values are stored with 6 decimal digits. It doesn't matter if they are bitcoins, euros, dollars, ...
If you want to use a monetary type, then you should take care and properly configure the server just to hold all values.
8.2. Monetary Types
The money type stores a currency amount with a fixed fractional
precision; see Table 8.3. The fractional precision is determined by
the database's lc_monetary setting. The range shown in the table
assumes there are two fractional digits. Input is accepted in a
variety of formats, including integer and floating-point literals, as
well as typical currency formatting, such as '$1,000.00'. Output is
generally in the latter form but depends on the locale.
CREATE TABLE Amounts(ID int, Value decimal(16,8), Value2 money);
INSERT INTO Amounts VALUES
(1, 100, 100), (2, 12.22636, 12.22636), (3, 0.1, 0.1);
SELECT * FROM Amounts;
✓
3 rows affected
id | value | value2
-: | -----------: | -------:
1 | 100.00000000 | £100.00
2 | 12.22636000 | £12.23
3 | 0.10000000 | £0.10
dbfiddle here