{"id":19099080,"url":"https://github.com/cancelchain/documentation","last_synced_at":"2026-04-15T09:31:07.860Z","repository":{"id":119236211,"uuid":"606994059","full_name":"cancelchain/documentation","owner":"cancelchain","description":"Documentation for CancelChain","archived":false,"fork":false,"pushed_at":"2023-06-27T14:50:07.000Z","size":799,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-27T06:52:11.704Z","etag":null,"topics":["blockchain","flask","python"],"latest_commit_sha":null,"homepage":"https://docs.cancelchain.org","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cancelchain.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-27T04:45:44.000Z","updated_at":"2023-03-05T18:11:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"7c0e121a-ca0d-4582-9f67-19fde8eea415","html_url":"https://github.com/cancelchain/documentation","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":"readthedocs/tutorial-template","purl":"pkg:github/cancelchain/documentation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fdocumentation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fdocumentation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fdocumentation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fdocumentation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cancelchain","download_url":"https://codeload.github.com/cancelchain/documentation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fdocumentation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31834491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T07:17:56.427Z","status":"ssl_error","status_checked_at":"2026-04-15T07:17:30.007Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","flask","python"],"created_at":"2024-11-09T03:48:27.049Z","updated_at":"2026-04-15T09:31:07.835Z","avatar_url":"https://github.com/cancelchain.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"CancelChain\n###########\n\nCancelChain is an open-source python project that implements a custom blockchain ledger. The ledger protocol allows for the assigning of tokens to subjects (utf-8 strings of less than 80 characters) as indications of either opposition or support. Opposition entries are allowed to be rescinded later. Support is forever.\n\n* `Project Home Page`_\n* `Documentation`_\n* `Blog`_\n\n\nQuick Start\n===========\n\nRequirements\n------------\n\nPython \u003e= 3.9\n\nInstall\n-------\n\nInstall CancelChain using pip:\n\n.. code-block:: console\n\n  $ pip install cancelchain\n\nIt is recommended that a `python virtual environment`_ is used for `all \u003chttps://realpython.com/python-virtual-environments-a-primer/#avoid-system-pollution\u003e`__ `the \u003chttps://realpython.com/python-virtual-environments-a-primer/#sidestep-dependency-conflicts\u003e`__ `usual \u003chttps://realpython.com/python-virtual-environments-a-primer/#minimize-reproducibility-issues\u003e`__ `reasons \u003chttps://realpython.com/python-virtual-environments-a-primer/#dodge-installation-privilege-lockouts\u003e`_.\n\n\nConfigure\n---------\n\nCreate a `python-dotenv`_ ``.env`` file. The ``cancelchain`` command loads a ``.env`` file in the current working directory by default.  See `dotenv documentation`_ to locate the file elsewhere. The following ``cancelchain`` command examples assume that the ``.env`` file is loaded by default.\n\nA minimal ``.env`` configuration file:\n\n.. code-block:: console\n\n  # Flask Settings\n  FLASK_APP=cancelchain\n  FLASK_SECRET_KEY=0b6ceaa3b10d3e7a5dc53194\n\n  # Flask-SQLAlchemy Settings\n  FLASK_SQLALCHEMY_DATABASE_URI=sqlite:///cc.sqlite\n\nThe `FLASK_SECRET_KEY`_ value should be a unique random string.\n\nSee the `Configuration Documentation`_ for more configuration settings.\n\n\nInitialize\n----------\n\nCreate a local database by running the `init command`_:\n\n.. code-block:: console\n\n  $ cancelchain init\n\nThe `FLASK_SQLALCHEMY_DATABASE_URI`_ value in the example configuration above specifies a `SQLite`_ database called ``cc.sqlite`` with a file path relative to the ``cancelchain`` `instance folder`_.\n\n\nImport\n------\n\nDownload the most recent export of `CancelChain data`_. This `JSON Lines`_ file is updated at every blockchain epoch (2016 blocks or approximately every two weeks).\n\nRun the `import command`_, passing it the location of the downloaded file:\n\n.. code-block:: console\n\n  $ cancelchain import path/to/cancelchain.jsonl\n\nThis command could take a while to run depending on your computer and the number of blocks imported. A progress bar will display with estimated time remaining. You can run the ``import`` command multiple times and it will only import new blocks that are not yet in the database.\n\n\nRun\n---\n\nRun the ``cancelchain`` application by issuing the ``run`` command:\n\n.. code-block:: console\n\n  $ cancelchain run\n\nOpen `http://localhost:5000 \u003chttp://localhost:5000\u003e`_ in a browser to explore the local copy of the blockchain.\n\nHome Page (Current Chain)\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. image:: https://github.com/cancelchain/cancelchain/blob/7a4fab66dfe6026e56c79df3e147b1ecbdbb6158/readme-assets/browser-chain.png?raw=true\n   :width: 500pt\n\nBlock Page\n^^^^^^^^^^\n\n.. image:: https://github.com/cancelchain/cancelchain/blob/7a4fab66dfe6026e56c79df3e147b1ecbdbb6158/readme-assets/browser-block.png?raw=true\n   :width: 500pt\n\nTransaction Page\n^^^^^^^^^^^^^^^^\n\n.. image:: https://github.com/cancelchain/cancelchain/blob/7a4fab66dfe6026e56c79df3e147b1ecbdbb6158/readme-assets/browser-txn.png?raw=true\n   :width: 500pt\n\nRunning the ``cancelchain`` application also exposes a set of web service endpoints that comprise the communications layer of the blockchain. See the  `API Documentation`_ for more information.\n\nThere are other ``cancelchain`` commands for interacting with the blockchain. See the `Command Line Interface Documentation`_ for more information or run ``cancelchain --help``.\n\n\nJoining The CancelChain Network\n===============================\n\nThe CancelChain is run by a permissioned network of nodes. A CancelChain instance requires `miller`_ or `transactor`_ role `API access`_ to a node in the network in order to have locally milled blocks or submitted transactions propagate to the official CancelChain.\n\n`The Cancel Button`_ allows `reader`_ role `API access`_ to any account that completes at least one transaction on the blockchain:\n\n1) `Register for an account`_.\n2) Submit a successful transaction for any subject. Access won't be granted until the sentiment transaction successfully completes.\n3) Click `Download Account Key`_ on the `account page`_ to download the account's key (`PEM`_) file.\n4) Create a directory called ``wallets`` and copy the downloaded key file into it.\n5) Add the following settings to the ``.env`` configuration file. Replace ``CCTheCancelButtonAddressCC`` with the address on the `account page`_ and ``/path/to/wallet`` with the path to the ``wallets`` directory created above:\n\n  .. code-block:: console\n\n    # CancelChain Settings\n    CC_NODE_HOST=http://CCTheCancelButtonAddressCC@localhost:5000\n    CC_PEERS=[\"https://CCTheCancelButtonAddressCC@thecancelbutton.com\"]\n    CC_DEFAULT_COMMAND_HOST=https://CCTheCancelButtonAddressCC@thecancelbutton.com\n    CC_WALLET_DIR=/path/to/wallets\n\n6) Restart to load the new configuration.\n\nSee `Configuration Documentation`_ for more detailed information about these settings.\n\nThe `reader`_ role `API access`_ allows the `sync command`_ to update to the most recent peer block data:\n\n.. code-block:: console\n\n  $ cancelchain sync\n\nThis command could take a while to run depending on your computer, internet access, and the number of blocks synchronized. A progress bar will display with estimated time remaining. You can run the `sync command`_ multiple times and it will only synchronize new blocks that are not yet in the database.\n\nReader access also allows querying data (i.e. subject counts and balances) using the CLI. See `Command Line Interface Documentation`_ for more information.\n\nIf you would like to be granted other `API access`_ to a node in the CancelChain network, send an email to contact@cancelchain.org including what kind of role you'd like (e.g. `reader`_, `transactor`_, or `miller`_) and how you intend to use it (e.g. research, business, non-profit, hobby).\n\nSee the `documentation`_ for some potential development ideas.\n\n\n.. _account page: https://thecancelbutton.com/account\n.. _API access: https://docs.cancelchain.org/en/latest/api.html#api-roles\n.. _API Documentation: https://docs.cancelchain.org/en/latest/api.html\n.. _Blog: https://blog.cancelchain.org\n.. _CancelChain data: https://storage.googleapis.com/blocks.cancelchain.org/cancelchain.jsonl\n.. _FLASK_SECRET_KEY: https://docs.cancelchain.org/en/latest/usage.html#SECRET_KEY\n.. _FLASK_SQLALCHEMY_DATABASE_URI: https://docs.cancelchain.org/en/latest/usage.html#SQLALCHEMY_DATABASE_URI\n.. _Command Line Interface Documentation: https://docs.cancelchain.org/en/latest/usage.html#command-line-interface\n.. _Configuration Documentation: https://docs.cancelchain.org/en/latest/usage.html#configuration\n.. _documentation: https://docs.cancelchain.org\n.. _Documentation: https://docs.cancelchain.org\n.. _dotenv documentation: https://docs.cancelchain.org/en/latest/usage.html#dotenv\n.. _Download Account Key: https://thecancelbutton.com/pem\n.. _import command: https://docs.cancelchain.org/en/latest/usage.html#import\n.. _init command: https://docs.cancelchain.org/en/latest/usage.html#init\n.. _instance folder: https://flask.palletsprojects.com/en/2.2.x/config/#instance-folders\n.. _JSON Lines: https://jsonlines.org/\n.. _miller: https://docs.cancelchain.org/en/latest/api.html#miller\n.. _PEM: https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail\n.. _Project Home Page: https://cancelchain.org\n.. _python virtual environment: https://docs.python.org/3/library/venv.html\n.. _python-dotenv: https://pypi.org/project/python-dotenv/\n.. _reader: https://docs.cancelchain.org/en/latest/api.html#reader\n.. _Register for an account: https://thecancelbutton.com/register\n.. _SQLite: https://sqlite.org/index.html\n.. _sync command: https://docs.cancelchain.org/en/latest/usage.html#sync\n.. _The Cancel Button: https://thecancelbutton.com\n.. _transactor: https://docs.cancelchain.org/en/latest/api.html#transactor\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcancelchain%2Fdocumentation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcancelchain%2Fdocumentation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcancelchain%2Fdocumentation/lists"}