Tonal Bitcoin

From Bitcoin Wiki
Revision as of 17:17, 5 November 2014 by Gafter (talk | contribs) (Removing non-criticisms from the criticism section.)
Jump to navigation Jump to search

Tonal Bitcoin is a representation of the Bitcoin system aimed toward people who prefer the Tonal number system.

Number system

The Tonal number system is an alternative to the decimal and SI ("metric") system, which improves usability by allowing for infinite binary division (note that Bitcoin protocol support is still finite). Instead of counting: one, two, three, four, five, six, seven, eight, nine, ten, eleven, etc... In tonal, you would count: an, de, ti, go, su, by, ra, me, ni, ko, hu, vy, la, po, fy, ton, ton-an, etc... This means you get common binary divisions like one sixteenth (0.0625 in decimal) as a clean number: 0.1 in tonal. The tonal number system, prior to Bitcoin, already defines everyday units of measure including lengths, time, capacity, weight, power, gold/silver coinage, calendar, temperature, and even postage stamps and music.

For more information on the Tonal system in general, please see the book.

As an altcoin

While Tonal Bitcoin shares a common blockchain and network with decimal Bitcoin (BTC), it is still also considered to be alternative cryptocurrency ("altcoin") since the units are non-trivially presented differently. That is, merchants who wish to advertise their product to TBC users would be best to advertise an equivalent TBC price alongside the BTC price. Additionally, had a separate block chain ("altchain") been created for TBC, there would have been no advantage to it, and instead enabled a number of abuses and reduced compatibility. Therefore, as an altcoin, TBC demonstrates an ideal way to extend Bitcoin without needing to resort to unnecessary complications.

From the altcoin perspective, TBC is seen to have a number of benefits over more common altchain-based altcoins:

  • It shares the same blockchain as BTC, so benefits from the full security and difficulty backing the Bitcoin blockchain.
  • TBC is mined together with BTC - unlike ordinary merged mining, you don't get BTC plus TBC, just one or the other at your choice.
  • TBC is completely compatible with all Bitcoin addresses: if you send BTC to a TBC client's address, it will automatically get converted and vice-versa.

Tonal Bitcoin is also notably the first altcoin ever, having been created in 2011 January.

Specification

Please note, that all numbers of TBC and its divisions/multipliers are written in Tonal, not decimal. This means that instead of counting 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- you count: 0, 1, 2, 3, 4, 5, 6, 7, 8, , 9, , , , , , 10. Some higher-value digits may require installing a font.

Abbreviation Pronunciation Tonal (TBC) Decimal (BTC)
Tam-Bitcoin 1 0000 0000      2 814 749.767 106 56
ᵇTBC Bong-Bitcoin 1 0000      42.949 672 96
ᵐTBC Mill-Bitcoin 1000      2.684 354 56
ˢTBC San-Bitcoin 100      0.167 772 16
ᵗTBC Ton-Bitcoin 10      0.010 485 76
TBC Bitcoin* 1      0.000 655 36
TBCᵗ Bitcoin-ton 0.1    0.000 040 96
TBCˢ Bitcoin-san 0.01   0.000 002 56
TBCᵐ Bitcoin-mill 0.001  0.000 000 16
TBCᵇ Bitcoin-bong 0.0001 0.000 000 01

* Tonal Bitcoin and Decimal Bitcoin can be differentiated by the pronunciation of the numbers. "One bitcoin", "two bitcoin", etc is decimal, but "an bitcoin", "de bitcoin" is tonal.

The total number of Tonal Bitcoins ever (analogous to the 21mil BTC in decimal representation) is just over 7.75059 tam-bitcoin.

Compatible Clients

While all Bitcoin clients will correctly approximate values in decimal bitcoin, actual Tonal compatibility is sparse.

  • Spesmilo, despite its name, could be configured to display TBC

Guessing TBC or BTC

Given variable 'value' in base units (uBTCents/TBCᵇ), one can guess whether it is properly Decimal Bitcoin or Tonal Bitcoin with the following pseudo-code:

if ( ! ( this % 0x10000 ) )
	Choose Tonal Bitcoin
if ( ! ( this % 1000000 ) )
	Choose Decimal Bitcoin
if ( ! ( this % 0x100 ) )
	Choose Tonal Bitcoin

Python

import math

def formatBTC(n, addSign = False):
	s = "%0.2f BTC" % (math.ceil(n * 100) / 100.,)
	if addSign and n >= 0:
		s = "+" + s
	return s

def Bitcoin2BTC(n):
	return n / 100000000.

toTonalDict = dict(((57, u'\ue9d9'), (65, u'\ue9da'), (66, u'\ue9db'), (67, u'\ue9dc'), (68, u'\ue9dd'), (69, u'\ue9de'), (70, u'\ue9df'), (97, u'\ue9da'), (98, u'\ue9db'), (99, u'\ue9dc'), (100, u'\ue9dd'), (101, u'\ue9de'), (102, u'\ue9df')))

def formatTBC(n, addSign = False):
	s = "%x" % n
	n %= 1
	if n:
		s += '.'
		while n:
			n *= 16
			s += "%x" % n
			n %= 1
	s = unicode(s).translate(toTonalDict)
	s += " TBC"
	if addSign and n >= 0:
		s = "+" + s
	return s

def Bitcoin2TBC(n):
	return n / 65536.

def formatBitcoin(n, addSign = False):
	if not n % 0x10000:
		return formatTBC(Bitcoin2TBC(n), addSign);
	if not n % 1000000:
		return formatBTC(Bitcoin2BTC(n), addSign);
	if not n % 0x100:
		return formatTBC(Bitcoin2TBC(n), addSign);
	s = "%d uBTCents" % (n,);
	if addSign and n > 0:
		s = "+" + s;
	return s;

Criticism

Hexadecimal could be done without new fonts as characters

The tonal notation requires extra nonstandard fonts (the tonal digits are not in Unicode). Within the programming community there is a widely accepted convention for hexadecimal notation: use A-F for the higher order digits. Thus hexadecimal notation accomplishes most of the same goals as tonal notation, at least for Bitcoin, with no requirement for changing fonts, and is much more widely known, thus is more suited to wider usage.

Not relevant to Bitcoin

The tonal system could just as easily be applied to any currency. There is no community transacting using Tonal Bitcoin, so the tonal system isn't really relevant to Bitcoin.