{"id":15728577,"url":"https://github.com/cancelchain/cancelchain","last_synced_at":"2025-05-13T04:30:31.388Z","repository":{"id":119237767,"uuid":"590656550","full_name":"cancelchain/cancelchain","owner":"cancelchain","description":"A Blockchain of Accountability, Forgiveness, and Support","archived":false,"fork":false,"pushed_at":"2023-06-26T18:56:42.000Z","size":801,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-28T17:51:01.934Z","etag":null,"topics":["blockchain","blockchain-network","blockchain-platform","blockchain-projects","flask","python","python-blockchain"],"latest_commit_sha":null,"homepage":"https://cancelchain.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","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":"LICENSE","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-01-18T22:36:55.000Z","updated_at":"2025-02-18T15:40:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8cdbd09-1e46-4e3f-8375-5a4c4373e290","html_url":"https://github.com/cancelchain/cancelchain","commit_stats":{"total_commits":44,"total_committers":1,"mean_commits":44.0,"dds":0.0,"last_synced_commit":"1879c4e5feca65305eb13be4b2f93685f4bd24e2"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fcancelchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fcancelchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fcancelchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cancelchain%2Fcancelchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cancelchain","download_url":"https://codeload.github.com/cancelchain/cancelchain/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253876276,"owners_count":21977597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","blockchain-network","blockchain-platform","blockchain-projects","flask","python","python-blockchain"],"created_at":"2024-10-03T23:03:56.499Z","updated_at":"2025-05-13T04:30:31.349Z","avatar_url":"https://github.com/cancelchain.png","language":"Python","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%2Fcancelchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcancelchain%2Fcancelchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcancelchain%2Fcancelchain/lists"}