Here’s a joke config to put in your conf.d directory as coin-conf.pl…

package App::Phoebe;
use Modern::Perl;
our (@extensions);
push(@extensions, \&serve_coin);
sub serve_coin {
  my $stream = shift;
  my $url = shift;
  my $headers = shift;
  my $host = host_regex();
  my $port = port($stream);
  if ($url =~ m!^gemini://($host)(?::$port)?/do/coins$!) {
    result($stream, "20", "text/gemini");
    $stream->write("# GemCoin Exchange\n");
    $stream->write("=> /do/coins/balance GemCoin Balance\n");
    $stream->write("=> /do/coins/transfer GemCoin Transfer\n");
    return 1;
  } elsif ($url =~ m!^gemini://($host)(?::$port)?/do/coins/balance$!) {
    result($stream, "20", "text/gemini");
    $stream->write("# GemCoin Balance\n");
    $stream->write(sprintf("Your current balance: %.2f gems (%.2f \$)\n", rand(100), rand(10000)));
    $stream->write("=> /do/coins GemCoin Exchange\n");
    $stream->write("=> /do/coins/transfer GemCoin Transfer\n");
    return 1;
  } elsif ($url =~ m!^gemini://($host)(?::$port)?/do/coins/transfer$!) {
    result($stream, "10", "Recipient Mastodon Account");
    return 1;
  } elsif ($url =~ m!^gemini://($host)(?::$port)?/do/coins/transfer\?(.*)$!) {
    my $r = $2;
    result($stream, "20", "text/gemini");
    $stream->write("# GemCoin Transfer Success!\n");
    $stream->write("We sent the indicated amount to $r.\n");
    $stream->write(sprintf("Amount deducted: %.2f gems\n", rand(10)));
    $stream->write(sprintf("Your current balance: %.2f gems\n", rand(100)));
    $stream->write("=> /do/coins/balance GemCoin Balance\n");
    $stream->write("=> /do/coins/transfer GemCoin Transfer\n");
    return 1;
  }
  return;
}
1;