Skip to content
/ citycoin Public template
forked from citycoins/contracts

A smart contract implementation of the Proof of Transfer consensus mechanism, allowing for the mining and Stacking of a new fungible token on the Stacks blockchain with a portion of miner rewards going to a custodied account for a city to #pickupthebag.

License

Notifications You must be signed in to change notification settings

Alma-Research/citycoin

 
 

Repository files navigation

CityCoins on Stacks

Contract Tests codecov.io Discord Chat

Abstract

Support a city by mining, buying, or holding their CityCoin!

Contributing

For more information on the project, its goals, and technical details, please review the Product Requirements Document.

PRs are welcome! Please see the open issues and comment if interested, or submit a PR for review.

All code submitted should be thoroughly commented and tested where applicable.

Testing

Contracts are tested via clarinet and typescript.

To test the contract using clarinet, first install the tool to make it available on your system.

Several commands are available to help with testing via npm:

  • to run the prepare script: npm run clarinet:prepare
  • to run all tests: npm test, npm run test, npm run clarinet:test
  • to run individual tests: npm run test:auth npm run test:core npm run test:token
  • to run specific clarinet functions npm run clarinet:check npm run clarinet:codecov npm run console, npm run clarinet:console

A bash script is provided to prepare the tests as part of clarinet:prepare, and executes the following steps:

  1. copies all contract files from ./contracts to ./contracts/clarinet
  2. modifies address used in impl-trait by replacing it with a different address. e.g. (impl-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-10-ft-standard.ft-trait) is converted to: (impl-trait 'ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE.sip-10-ft-standard.ft-trait)
  3. appends code stored in ./contracts/test_addons at the end of contract file with the same name e.g. ./contracts/test_addons/citycoin-core-v1.clar is added to ./contracts/citycoin-core-v1.clar

Note: clarinet:test, clarinet:check, and clarinet:console automatically execute clarinet:prepare.

Definitions, Resources, and Links

CityCoins Resources

Some quick definitions and additional resources related to the technology behind the project.

  • Stacks Blockchain: Stacks makes Bitcoin programmable, enabling decentralized apps and smart contracts that inherit all of Bitcoin’s powers.
  • Proof of Transfer (PoX): The consensus mechanism for the Stacks blockchain, which the CityCoins protocol is based on.
  • Clarity Language: A smart contract language developed by Blockstack (now Hiro) and Algorand, designed to be more safe, secure, and predictable.
  • Smart Contract: A computer program or a transaction protocol which is intended to automatically execute, control or document legally relevant events and actions according to the terms of a contract or an agreement.
  • Fungible Token: Digital assets that can be sent, received, combined, and divided.

References

About

A smart contract implementation of the Proof of Transfer consensus mechanism, allowing for the mining and Stacking of a new fungible token on the Stacks blockchain with a portion of miner rewards going to a custodied account for a city to #pickupthebag.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.4%
  • Shell 0.6%