Há uma melhor opção clara entre as três que você sugeriu (mais uma dos comentários).
GRANDE — usa apenas 8 bytes, mas o maior
BIGINT
tem apenas 19 dígitos decimais; se você dividir por 10, o maior valor que você pode representar é 9,22, o que não é um intervalo suficiente. DUPLO — tem apenas 15–17 dígitos decimais de precisão; tem todas as desvantagens conhecidas da aritmética de ponto flutuante.
VARCHAR — usará mais de 20 bytes se você estiver lidando com 18 casas decimais; exigirá conversões string↔int constantes; não pode ser classificado; não pode ser comparado; não pode ser adicionado no banco de dados; muitas desvantagens.
DECIMAL(27,18) – se estiver usando MySQL, isso levará 12 bytes (4 para cada grupo de 9 dígitos ). Este é um tamanho de armazenamento bastante razoável e tem alcance suficiente para suportar quantidades tão grandes quanto um bilhão ou tão pequenas quanto um Wei. Ele pode ser classificado, comparado, adicionado, subtraído, etc. no banco de dados sem perda de precisão.
Eu usaria
DECIMAL(27,18)
(ou DECIMAL(36,18)
se você precisar armazenar valores realmente grandes) para armazenar valores monetários de criptomoedas.