$GoodBit - An Independent Stablecoin of Cyberspace

2022-02-28
An Independent Stablecoin of Cyberspace

The project ¹ we want to do is called “typography” or “digitypography”. The purpose is to build a new stablecoin system. $Typography and $GoodBit is the main currency pair in the system. The stabilization mechanism is to control the supply of $GoodBit by burning a certain amount of $Typography to mint one $GoodBit or minting a certain amount of $Typography to burn one $GoodBit, so that one $GoodBit can be paid on average for the purpose of copying and quoting one bit of NFT content. Specifically, the “General Knowledge Graph” should be implemented in the form of “Directed Acyclic Graph”, and version control should be implemented for all NFT content in the system. Each specific version of NFT is similar to one commit in git version control system. The owner of the NFT can issue the corresponding CQLTs (Copy and Quote License Tokens). Others can buy and burn multiple different CQLTs to mint their own NFT. This new NFT is then connected as a successor node to the corresponding NFTs of those CQLTs, so as to realize the historical proof of NFT merges and changes. This huge NFT graph is stored in a permanent way. And then all the transaction records of CQLTs and $GoodBits are used to control the issuance of $GoodBits. Specifically, we need to track the circulation of each CQLT. Each CQLT has a price in $GoodBit based on its latest transaction or destruction record. Track all the CQLTs, the sum of their prices in $GoodBits, divided by the sum of the bits of their corresponding NFT content, we can obtain the average price in $GoodBit for copying and quoting one bit of NFT content on average within the whole system. In addition, we know the price of one $GoodBit in $Typography in the trading market of $GoodBit and $Typography. Therefore, we can calculate the average price in $Typography for copying and quoting one bit. The stability mechanism of the whole system is to achieve the purpose of adjusting the average price of copying and quoting one bit to one $GoodBit by allowing a two-way free burning and minting of one $GoodBit with a certain amount of $Typography required for copying and quoting one bit on average.

Outside the digital economy and within the real economy, commodities can also be tokenized into CQLTs. Everyone can burn their CQLTs to “mint” their commodities. Because the batch production behavior is essentially the batch copy behavior. All designs can actually use NFTs to prove their copyright.


人类走出文中第一章,即商品货币从无到有,经历了上千年,走出文中第二章,即信用货币挑战并取代商品货币,经历了约 200 年,目前正经历文中第三章的阶段,即信用货币之间互相竞争,至今时间约为 50 年。
加密货币行业以 2015 年 Bitfinex 上线 USDT 交易山寨币取代了 BTC 作为山寨币交易对为时间点,标志着行业结束了只有商品货币的时代;目前 Binance 交易所发行了自己的 BUSD,Terra 发行了 UST,以及诸如 MIM、OHM 等算法稳定币,标志着信用货币开始全方位挑战商品货币,并捷报频传;可以预见未来不管监管的尺度松紧,行业一定会进入信用货币互相竞争的阶段,届时所有的项目都会将被问道:“为什么不发稳定币”。²

我们想做的项目叫做“印刷术”(typography、digitypography)。目的是构建一个基于开放式博弈的生态型稳定币系统。“印刷术”($Typography)和“好比特”($GoodBit)是其中一对货币对。稳定机制是通过销毁一定量的“印刷术”铸造一个“好比特”或者销毁一个“好比特”铸造一定量的“印刷术”来控制“好比特”的发行量,以达到一个“好比特”在一般水平上可以用来购买一个比特量的 NFT 内容的“复制引用权”的目的。具体来说,要用“有向无环图”(DAG)的方式实现“通用知识图谱”,对所有的 NFT 的内容实现版本控制。每一个特定的版本的 NFT 类似 git 里面的 commit。NFT 的所有者可以发行相应的“复制引用许可代币”(Copy and Quote License Token)。其他的人可以购买并销毁多个不同的“复制引用许可代币”来铸造自己的 NFT。这个新的 NFT 就以后继节点的方式连接到那些“复制引用许可代币”相应的 NFT 之后,以实现 NFT 的合并和更改的历史证明。这个巨大的 NFT 图谱以永存的方式存储。而所有“复制引用许可代币”和“好比特”的交易记录被用来控制“好比特”的发行量。具体来说,要追踪每一个“复制引用许可代币”的流通。每一个“复制引用许可代币”根据其最新的交易或者销毁记录,有一个以“好比特”计价的价格。追踪所有的“复制引用许可代币”,它们以“好比特”计价的价格的总和、除以、它们相应的 NFT 内容的比特量的总和,可以得到、整个系统之内、复制引用一个比特以“好比特”计价的平均价格。另外,我们知道“印刷术”与“好比特”的交易市场中,一个“好比特”以“印刷术”计价的价格。因此,我们可以算出、复制引用一个比特以“印刷术”计价的平均价格。整个系统的稳定机制是,通过允许、一个“好比特”与复制引用一个比特在一般水平上所需支付的“印刷术”的、双向自由的销毁铸造,来达到、把复制引用一个比特的平均价格调整为一个“好比特”、的目的。

在数字经济之外、实体经济之内,日用商品也可以代币化为 CQLT。每个人都可以销毁他们的 CQLT 来“铸造”他们的日用商品。因为批量生产行为实质上是批量复制行为。所有种类的设计其实都可以用 NFT 来证明版权。


私たちがやりたいプロジェクトは「タイポグラフィ」(typography)、「デジタイポグラフィ」(digitypography)と呼ばれています。目的は、新しいステーブルコインシステムを構築することです。「印刷術」($Typography)と「良いビット」($GoodBit)はその中に主な通貨ペアです。

価格安定化メカニズムは、「良いビット」を鋳造するために一定量の「印刷術」を焼却するか、「良いビット」を焼却するために一定量の「印刷術」を鋳造することによって、「良いビット」の発行量を制御することです。これにより、一般的に、一個ビットの NFT コンテンツをコピーして参照するために、一個「良いビット」で支払うことができます。

具体的には、「一般知識グラフ」というのを、「有向非巡回グラフ」(DAG)の形式で実装する必要があり、バージョン管理はすべての NFT コンテンツに実装する必要があります。NFT の各特定のバージョンは、git でのコミットに似ています。

NFT の所有者は、その NFT に対応する「コピー参照ライセンストークン」(Copy and Quote License Token)を発行できます。

他の人は、複数の異なる「コピー参照ライセンストークン」を購入して焼却し、自分の NFT を鋳造することができます。次に、その新しい NFT は、後続ノードの形式で「コピー参照ライセンストークン」に対応する NFT に接続され、NFT の合併と変更の歴史を証明します。

この巨大な NFT グラフは、永続的な方法で保存されます。また、「コピー参照ライセンストークン」と「良いビット」のすべての取引履歴は、「良いビット」の発行を制御するために使用されます。

具体的には、各「コピー参照ライセンストークン」の流通を追跡します。各「コピー参照ライセンストークン」には、最新の取引または焼却の記録に基づいた「良いビット」で表される価格があります。

すべての「コピー参照ライセンストークン」を追跡して、システム全体で一個ビットをコピーして参照するためにの「良いビット」で表される平均価格は、「良いビット」で表される価格の合計を、対応する NFT コンテンツのビットの合計で、割ったものです。

さらに、私たちは、「印刷術」と「良いビット」の取引市場によって、一個「良いビット」が「印刷術」で表される価格を知っています。したがって、一個ビットをコピーして参照するためにの「印刷術」で表される平均価格を計算できます。

システム全体の価格安定メカニズムは、一個「良いビット」と、一個ビットをコピーして参照するために一般的に必要とされる「印刷術」を、自由に鋳造と焼却を可能にすることによって、ビットをコピーして参照する平均価格を一個「良いビット」に調整する目的を達成します。

阅读此文

2022-02-28
Add Tweets to Home Page

Browser Side

In [ ]:
cat << EOF > ~/digitypography/themes/freemind/source/js/twitter.js
var twitter = (function() {
  function escapeHtml(str) {
    return \$('<div/>').text(str).html();
  }
  function render(target, tweets) {
    var i = 0, fragment = '', t = \$(target)[0];

    for(i = 0; i < tweets.length; ++i) {
      fragment += '<li><i class="fa fa-star"></i><a href="https://twitter.com/charisbit/status/' + tweets[i].id + '">'
          + tweets[i].created_at.replace('T', ' ').replace('.000Z', ' UTC') + '</a><p>' + escapeHtml(tweets[i].text||'') + '</p></li>';
    }
    t.innerHTML = fragment;
  }
  return {
    showTweets: function(options) {
      options.blacklist = options.blacklist.split(',');
      \$.ajax({
          url: 'https://jhub.name/typography/?tweet.fields=created_at&max_results=' + options.count
        , dataType: 'json'
        , error: function (err) { \$(options.target + ' li.loading').addClass('error').text('Error loading feed'); }
        , success: function (data) {
          if (!data ) { return; }
          var tweets = [];
          for (var i = 0; i < data.data.length; ++i) {
            if (options.blacklist instanceof Array && options.blacklist.indexOf(data.data[i].id) !== -1) { continue; }
            tweets.push(data.data[i]);
          }
          render(options.target, tweets);
        }
      });
    }
  };
})();
EOF

Server Side

In [ ]:
curl -H "Authorization: Bearer ${BEARER_TOKEN}" 'https://api.twitter.com/2/users/by/username/charisbit?user.fields=created_at'
{"data":{"name":"Charis","username":"charisbit","created_at":"2022-02-28T13:05:23.000Z","id":"1498283136295211010"}}
In [ ]:
curl -H "Authorization: Bearer ${BEARER_TOKEN}" 'https://api.twitter.com/2/users/1498283136295211010/tweets?tweet.fields=created_at&max_results=10'
{"meta":{"result_count":0}}
  • My solution using Traefik to proxy Tweets API
In [ ]:
cat << EOF | sudo tee /opt/tljh/state/dynamic/typography.toml > /dev/null

[frontends.typography]
backend = "typography"

[frontends.typography.routes.r1]
rule = "PathPrefix:/typography/"

[frontends.typography.routes.r2]
rule = "ReplacePath:/2/users/1498283136295211010/tweets"

[frontends.typography.headers.customrequestheaders]
Authorization = "Bearer ${BEARER_TOKEN}"

[frontends.typography.headers.customresponseheaders]
Access-Control-Allow-Origin = "*"

[backends.typography.servers.s1]
url = "https://api.twitter.com"
weight = 1

EOF
In [ ]:
sudo systemctl restart traefik
In [ ]:
curl 'https://jhub.name/typography/?tweet.fields=created_at&max_results=10'
{"data":[{"created_at":"2022-02-28T14:15:00.000Z","id":"1498300708893835264","text":"$GoodBit is designed to measure the meaningfulness for bits. The average $GoodBit of each bit of contents of NFTs of corresponding Copy and Quote License Tokens is stabilized at 1 $GoodBit, so that 1 $GoodBit can be used to pay for copying and quoting 1 bit on average."}],"meta":{"oldest_id":"1498300708893835264","newest_id":"1498300708893835264","result_count":1}}
阅读此文