Samiksha Jaiswal (Editor)

Counterparty (technology)

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Stable release
  
1.3.0

Operating system
  
Cross-platform

Website
  
counterparty.io

Written in
  
Python, JavaScript

License
  
MIT

Counterparty (technology)

Developer(s)
  
Robby Dermody, Adam Krellenstein, Ouziel Slama, Evan Wagner

Counterparty is a financial platform for creating peer-to-peer financial applications on the bitcoin blockchain. The protocol specification and all Counterparty software is open source. The reference client is counterpartyd and a web wallet called Counterwallet showcases all protocol features. The protocol’s native currency, XCP, is the fuel that powers Counterparty. It is slightly deflationary, with approximately 2.6 million XCP having been created by burning Bitcoins in January 2014. Counterparty provides users with the world's first functioning decentralized digital currency exchange, as well as the ability to create their own virtual assets, issue dividends, create price feeds, bets and contracts for difference.

Contents

XCP

Counterparty has a native currency called XCP. It was originally issued using a provable method called "proof of burn". This method involves sending bitcoins to a special address that renders the coins permanently unspendable. By avoiding funding during its launch, Counterparty has ensured that developers and users have equal financial opportunities. During January 2014, 2125.63 bitcoins were sent to 1CounterpartyXXXXXXXXXXXXXXXUWLpVr (worth roughly US$1.8 million at the time). XCP is used in the Counterparty protocol to create new assets, make bets, and perform callbacks on callable assets. Counterparty used proof of burn to issue XCP, instead of a more traditional fund-raising technique for altcoin launches, to keep the initial distribution of funds as fair and decentralized as possible, and to avoid potential legal issues.

Assets

With Counterparty, users can create their own currencies inside the bitcoin blockchain. These are separate from bitcoin the currency itself, but exist entirely inside ordinary bitcoin transactions. Tokens can be received, stored, and sent from any bitcoin address to any other. They can also be placed in cold storage. Counterparty tokens are not tied to the BTC balance of any given address. This means that sending/receiving bitcoins has no effect on the balance of tokens. Among other features, Counterparty adds the ability create, send, trade, and pay distributions on assets, in a fully decentralized and trustless manner. While Counterparty has its own internal currency (XCP), trading and creating assets does not require anything apart from regular bitcoin transaction fees.

Many of the features described below can be accessed using the Web-based Counterwallet. Especially casual users and those without a counterparty-cli setup can benefit from the convenience of Counterwallet. Counterparty-issued assets (tokens) can have plain-text or Enhanced Asset Information.

Creating Assets

Counterparty allows users to issue assets. An asset that is created within the Counterparty protocol is often called a user-created token. User-created tokens are just as real as XCP or even BTC. With the asset issuance function, every user has the ability to create a new currency project inside the bitcoin and Counterparty ecosystem.

You can create two different types of assets:

  1. Named: A unique string of 4 to 12 uppercase Latin characters (inclusive) not beginning with ‘A’. Alphabetic tokens carry a one-time issuance fee of 0.5 XCP to discourage spam and squatting. This fee is burned (permanently taken out of circulation). BTC and XCP are the only three-character asset names.
  2. Numeric (Free): An integer between 26^12 + 1 and 256^8(inclusive), prefixed with A. Numeric assets only require one bitcoin transaction fee to be created.

The different kinds of assets

The most basic kind of asset must specify:

  • who is issuing it (source)
  • the name of the asset (asset)
  • how much of asset is being issued (quantity)
  • a description of asset (description)
  • It is possible to issue more of asset, but, at any one time, there can only be one address which issues asset. With that said, the Counterparty protocol allows source to transfer issuance rights of asset. Moreover, an asset can also be locked, so that there can be no further issuances of it. (See the examples for instructions on how to do this withcounterparty-cli). A description must always be included, even ifdescription is just an empty string; the syntax of an asset with no description is description="".

    Beyond creating the most basic asset, it is also possible to make assets either divisible or callable. If an asset is made divisible (or callable) upon its initial issuance, it must always be divisible (or callable) with every issuance thereafter. A divisible user-created asset is, like, bitcoin and XCP, divisible up to 8 decimal places. A callable asset is an asset which the issuer can call back (i.e. repurchase) from its owners at a date (call-date) and for a price (call-price) specified at the initial issuance.

    Sending Assets

    To send an asset in Counterparty, one must specify:

  • who is sending the asset (source)
  • what asset source is sending (asset)
  • how much of asset source is sending (quantity)
  • to whom source is sending quantity of asset (destination)
  • Paying distributions on assets

    It is possible to distribute funds proportionally among asset holders using the distribution function. This feature is also known as dividend payments, depending on their desired purpose. Distributions are paid in any distribution_asset to everyone who holds the asset in proportion to how many units he holds; specifically: Let total equal the total distribution paid out, and quantity be the total amount of asset, then: quantity-per-unit = total/quantity

    Distributions can be paid out to any assets that you ownership and control over. You can freely select the currency in which distributions are to be paid out: BTC, XCP, or any other user-created asset.

    Use-cases

  • Programmable Smart Contracts - Turing-complete smart contracts scripting is one of the most powerful Counterparty features. Users can write their own custom financial instruments and decentralized applications (Dapp). Counterparty contracts are 100% compatible with Ethereum scripting, and pretty much all contracts can be run on both platforms without code changes.
  • Betting - Counterparty turns the bitcoin blockchain into a betting platform and prediction market. Oracles can create broadcasts of information, and users can then place bets on these broadcasts. Funds are escrowed automatically by the protocol, and benefit from being stored securely inside the bitcoin blockchain. Funds placed on bets are provably inaccessible until the bet is resolved or expires. Oracles can set a fee fraction to receive for their betting feeds, providing incentive to run their broadcasts.
  • Tickets & Coupons - Assets can be used as tickets to a music event, parking tickets, coupons, etc.
  • Token Controlled Access (TCA) - Token Controlled Access is the idea of granting access to private forums, chatrooms, games, projects or other social media based on the ownership of tokens. Different types of tokens represent different types of membership, and holders of that token can register and/or view the restricted content. To invite new users, smaller fractions of these tokens can be transferred. If the token is indivisible and scarce, it will limit the amount of users others are able to invite. These tokens are also publicly tradable on the DEX and therefore can have a monetary value, and/or one proportional to other types of these tokens.
  • Proof of Publication - Using broadcasts, users can publish timestamped information onto the bitcoin blockchain. This makes it possible to verify that something has been posted at a certain time, and it cannot be deleted.
  • Crowdfunding - Counterparty assets can be used for crowdfunding. You can issue a certain amount of assets and sell these to start your project. Due to the high amount of trust involved, it is better to use a Counterparty-based crowdfunding platform which can perform due-diligence on your project. This will provide your users trust, and demonstrate the legitimacy of your project. There is nothing stopping you from doing this on your own, but users may rightfully be suspicious about your project.
  • Derivatives - You can back Counterparty assets with tangible goods, such as gold.
  • In-game Currency - To integrate your multiplayer game into the global economy, Counterparty assets can also be used as in-game currency.
  • Altcoin Migration - If you have an altcoin that seeks to fulfill a specific purpose, but do not wish to continue mining, you can migrate it to Counterparty with proof-of-burn.
  • Verifiable Voting -Counterparty supports voting through the use of user-created tokens. This means that you can post the terms and options of your vote as a broadcast, and let users vote on its outcome with full transparency by using tokens. If you create a token (EXAMPLE), you can create any other tokens (such as EXAMPLEVOTE) and pay distributions of EXAMPLEVOTE to all holders of EXAMPLE in one single action. Create a distribution payment and choose EXAMPLEVOTE as the currency to distribute. This way, all holders of EXAMPLE will receive EXAMPLEVOTE in the amount you specify. Now all you need are as many different bitcoin addresses as there are choices in your poll. For example: one bitcoin address for yes, one for no. To cast their votes, holders of EXAMPLE can then send the EXAMPLEVOTE they have received to whichever address they agree with. The results of the poll will then be public and verifiable on the bitcoin blockchain, and can be visualized in a block explorer.
  • Decentralized Exchange (DEX)

    Counterparty supports peer-to-peer asset exchange: users can trade assets with no middleman and no counterparty risk. The platform upon which trading is done is Counterparty’s decentralized exchange and the bitcoin blockchain. In what follows trading on the decentralized exchange will be detailed and explained by means of examples. For the purposes of the following use-cases:

  • “ordern” denotes the nth order in time, give_asset n denotes the asset being given in the order, etc.
  • Sally’s creates order1 and Alice creates order2
  • give_asset2 = get_asset1
  • Creating an order

    At its most basic level, a trade on Counterparty’s decentralized exchange consists of two orders, which are matched by the protocol. When Sally is constructing her order, she must specify:

  • her address (source1)
  • the asset she will give (give_asset1)
  • the quantity of give_asset1 she will give (give_quantity1)
  • the asset she will get (get_asset)
  • the quantity of get_asset1 she will get (get_quantity)
  • how long before her order expires (expiration1)
  • Software

    counterpartyd is the reference implementation of the Counterparty protocol, and Counterwallet is a deterministic web-wallet frontend to counterpartyd, in which all cryptography is handled client-side. Both are open source and hosted on GitHub. Counterparty offers support for Solidity.

    Notable assets and issuers

  • LTBCoin: Let's Talk Bitcoin, a podcast about bitcoin, has launched a Counterparty asset called 'LTBCOIN'. LTBcoin is a crypto-rewards system where people who help LTB to be useful are rewarded for their efforts. And it’s built on bitcoin. LTBcoin is the proprietary token for the Let’s Talk Bitcoin Network. It is the exclusive token accepted for sponsorships. It will provide the user a significant discount in the network wide and ACT-specific e-commerce stores. It can be used in the network for tipping and will generally be useful in every corner of the LTB universe. LTBcoin does not use computational mining. Instead, coins are distributed to the content creators, the community and the platform according to a fixed schedule. After a period of 260 weeks (5 years), all coins will be distributed and no new coins will be created. LTBcoin is a user-defined asset using the Counterparty protocol. LTBcoin can be traded on the Counterparty distributed exchange for XCP or other user-defined assets. The Counterparty Asset ID for LTBCoin is LTBCOIN
  • Storj: Storj (pronounced: storage) aims to become a cloud storage platform that can’t be censored or monitored, or have downtime. Storj is a platform, cryptocurrency, and suite of decentralized applications that allows users to store data in a secure and decentralized manner. It uses blockchain features like a transaction ledger, public/private key encryption, and cryptographic hash functions for security. Furthermore, it will be way cheaper (10x-to-100x), faster, and more secure than traditional cloud storage services. Storj is working hard to solve data security issues with the help of its own web app, MetaDisk, and client app, DriveShare. It is the first decentralized, end-to-end encrypted cloud storage that uses blockchain technology and cryptography to secure online files. There is no need to trust a corporation, vulnerable servers, or employees with your files. Storj completely removes trust from the equation. To best protect your data, files are encrypted client-side on users’ computers before they are uploaded. Each file is split up into chunks which are first encrypted and then distributed for storage across the Storj network. The network consists of DriveShare nodes run by users around the world who rent out their unused hard drive space in return for Storjcoin X (SJCX). The decentralized aspect of Storj means there are no central servers to be compromised, and because of the use of client-side encryption, only the end-users have access to their unencrypted files and encryption keys. The Counterparty Asset ID for Storj is SJCX
  • GetGems: GetGems introduces cryptocurrency in a secure, fast bitcoin Wallet with all of the messaging features of Telegram, the world’s most encrypted stand alone instant messenger. GetGems makes handling bitcoin as simple as sending a text message. There is an Android and iOS application for download available. The Counterparty Asset ID for GetGems is GEMZ
  • FoldingCoin: FoldingCoin Inc. looks to harness computational power used in alternative cryptocurrency blockchains to be better used for medical and scientific projects with goals of solving world problems. In doing so, FoldingCoin Inc. looks to compensate participants with cryptocurrencies built on Counterparty. FoldingCoin Inc currently distributes tokens to participants of Stanford's Folding@home project. The Counterparty Asset ID for FoldingCoin is FLDC
  • Swarm: Swarm is attempting to decentralize the online crowdfunding scene and has hopes to be "the Facebook of crowdfunding". The Counterparty Asset ID for Swarm is SWARM
  • Spells of Genesis: Gaming company Everdreamsoft has developed Spells of Genesis as a blockchain based trading card game on the Counterparty platform. Spells of Genesis is a mobile game mixing the collection and strategic aspects of Trading Card games with the addictiveness of Arcade games. While working as a core of the whole game economy and background story, bitcoin and cryptocurrency will be used as an in-game means of exchange. The use of blockchain technology will allow game items to be easily and freely traded within the app and outside of it. The Counterparty Asset ID for Spells of Genesis is BITCRYSTALS.
  • Tatiana Coin: Singer songwriter Tatiana Moroz released one of the earliest digital artist tokens. This token can be redeemed for products and services from Moroz. The Counterparty Asset ID for Tatiana Coin is TATIANACOIN
  • RealEst. Coin: RealEst. Coin allows you to invest bitcoin into U.S. commercial real estate. This app token gives common investors the opportunity to crowdfund acquisitions of net leased commercial real estate, and secure payouts from the monthly lease payments of the tenant. The Counterparty Asset ID for RealEst. Coin is REALEST.
  • A full list of currently developed assets on Counterparty can be found at XCPassets.org.
  • Block Explorers

    Since Counterparty Assets are created within the bitcoin blockchain, the assets actually exist in any bitcoin block explorer, however, to decode the information on what bitcoin address has what asset an additional layer of block exploration needs to be applied. Currently there are two block explorers you can use to locate Counterparty assets in bitcoin wallets:

  • Blockscan - Blockscan was the first block explorer built specifically for the Counterparty protocol. You can explore everything from the original burns used to generate XCP, to the most recent assets created by users. This feature rich website allows you to really dive into the blockchain to take a look at all the assets, broadcasts, and transactions that take place. Blockscan also offers additional features if you register for an account. Once you log in to an account made on Blockscan you can verify addresses that you own by signing messages or broadcasting feeds and then your username will be associated with those wallets. This allows you to create voting scoreboards and change asset descriptions for ones you own in that wallet.
  • Counterparty Chain - Counterparty Chain by CoinDaddy has a block explorer and API service for XCP assets (Counterparty). But CoinDaddy is not just simply a block explorer, they also have a whole suite of features available to the public including Asset registration, transfer services, asset enhancement, asset vending machines, and enhanced broadcasting.
  • References

    Counterparty (technology) Wikipedia