Skip to main content

Cross-chain atomic swap between the networks of two cryptocurrencies based on Hash Time Lock Contracts (HTLC's) protocol.

Project description

Swap

Build Status PyPI Version Documentation Status PyPI License PyPI Python Version Coverage Status

A Python library for Cross-chain atomic swap between the networks of two cryptocurrencies. Cross-chain atomic swap is the cheapest and most secured by cryptographic proof to swap cryptocurrencies. It’s a brand new decentralized payment environment based on Hash Time Lock Contracts (HTLCs) protocol.

Available Cryptocurrencies, Assets & Tokens

You can swap the following available cryptocurrencies:

Cryptocurrencies Networks
Bitcoin BTC mainnet, testnet
Bytom v1.0 BTM - More Assets mainnet, solonet, testnet
Ethereum ETH, ERC20 - More Tokens mainnet, ropsten, kovan, rinkeby, testnet
Vapor BTM - More Assets mainnet, solonet, testnet
XinFin XDC, XRC20 - More Tokens mainnet, apothem, testnet

What is a HTLC?

A Hash Time Lock contract (HTLC) is essentially a type of payment in which two people agree to a financial arrangement where one party will pay the other party a certain amount of cryptocurrencies, such as Bitcoin or Bytom assets. However, because these contracts are Time Locked, the receiving party only has a certain amount of time to accept the payment, otherwise the money can be returned to the sender.

Hash time lock contracts can help to eliminate the need for third parties in contracts between two parties. Third parties that are often involved in contracts are lawyers, banks, etc. Lawyers are often required to draw up contracts, and banks are often required to help store money and then transfer it to the receiving party in the contract.

With hash time lock contracts, two parties could hypothetically set up contracts and transfer money without the need for third parties. This is because the sending party could create the conditional payment, and then the receiving party could agree to it, receive it, and help validate the transaction in the process.

This could potentially revolutionize the way that many businesses interact with one another and dramatically speed up the time that it takes for business deals to be set up.

How do HTLC work?

The way that Hash Time Lock Contracts work is that the person who will be making the payment sets up a specific hash, which represents the amount of money that will be paid. To receive the payment, the recipient will have to create a cryptographic proof of payment, and he or she will have to do this within the specified amount of time. The amount of time that the recipient has to accept the payment can vary significantly from one Time Locked contract to the next. If the recipient meets the deadline, then the money will be theirs, if he or she fails to meet the deadline, it won’t. So, there is an often a lot at stake when it comes to meeting deadlines from hash Time Locked contracts, when cryptocurrencies are being exchanged.

A Hash Time Lock Contract or HTLC is a class of payments that uses Hash Locked and Time Locked to require that the receiver of a payment either acknowledge receiving the payment prior to a deadline by generating cryptographic proof of payment or forfeit the ability to claim the payment, returning(refunding) it to the payer.

Hash Time Lock Contracts (HTLCs) allow payments to be securely routed across multiple payment channels which is super important because it is not optimal for a person to open a payment channel with everyone he/she is transacting with.

  • Hash Locked · A Hash Locked functions like “two-factor authentication” (2FA). It requires the intended recipient to provide the correct secret passphrase to claim the funds.

  • Time Locked · A Time Locked adds a “timeout” expiration date to a payment. It requires the intended recipient to claim the funds prior to the expiry. Otherwise, the transaction defaults to enabling the original sender of funds to claim a refund.

Benefits of HTLCs

There are many benefits to these types of contracts. First, because they are time sensitive, it prevents the person who is making the payment from having to wait indefinitely to find out whether or not his or her payment goes through. Second, the person who makes the payment will not have to waste his or her money if the payment is not accepted. It will simply be returned.

  • Time Sensitivity · The time sensitive nature of the transaction prevents the sender from having to wait forever to find out whether their payment went through. If the time runs out, the funds will just be sent back to the sender, so they don’t have to worry and can wait for the process to unfold.

  • Trustless system · As is the case with all smart contracts, trust is not needed as the rules are already coded into the contract itself. Hash Time Lock Contracts take this one step further by implementing a time limit for recipients to acknowledge the payment.

  • Validation of the Blockchain · Transactions are validated because of the cryptographic proof of payment required by the receiver.

  • Private Information's · There are no complicated account setups or KYC/AML restrictions. Trade directly from your wallet with a counterparty of your choice. Only the parties involved know the details of the trade.

  • Trading across multiple Cryptocurrencies · HTLC makes Cross-chain transactions easier and more secure than ever. Cross chain transactions are the next step in the evolution of cryptocurrency adoption. The easier it becomes to unite the hundreds of blockchain's that currently exist in silos, the faster the technology as a whole can begin to scale and achieve mass adoption.

For more read the documentation.

Hash Time Lock Contracts (HTLCs) Scripts
Bitcoin: native BTC coin htlc.script
Bytom v1.0: native BTM and more assets htlc.equity
Ethereum: native ETH coin htlc.sol
Ethereum for ERC20 tokens htlc-erc20.sol
Vapor: native BTM and more assets htlc.equity
XinFin: native XDC coin htlc.sol
XinFin for XRC20 tokens htlc-xrc20.sol

Installation

PIP to install Swap globally, for Linux sudo may be required:

pip install swap

If you want to run the latest version of the code, you can install from git:

pip install git+git://github.com/meherett/swap.git

For the versions available, see the tags on this repository.

Development

We welcome pull requests. To get started, just fork this repo, clone it locally, and run:

pip install -e .[tests,docs] -r requirements.txt

Testing

You can run the tests with:

pytest

Or use tox to run the complete suite against the full set of build targets, or pytest to run specific tests against a specific version of Python.

Contributing

Feel free to open an issue if you find a problem, or a pull request if you've solved an issue. And also any help in testing, development, documentation and other tasks is highly appreciated and useful to the project. There are tasks for contributors of all experience levels.

For more information, see the CONTRIBUTING.md file.

Donations

If You found this tool helpful consider making a donation:

Coins Addresses
Bitcoin BTC 3GGNPvgbSpMHShcaZJGDXQn5wUJyTz7uoC
Ethereum ETH, Tether USDT 0x342798bbe9731a91e0557fa8ab0bce1eae6d6ae3
Bytom BTM bn1qumdsfgj06ae2nav2ws24t5jzmfagz2amj5arh3
XinFin XDC xdc95e80fc8ef98b92fe71514168c2e4b8f0ce38169

License

Distributed under the AGPL-3.0 license. See LICENSE for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swap-0.5.0.tar.gz (291.2 kB view details)

Uploaded Source

Built Distribution

swap-0.5.0-py3-none-any.whl (385.9 kB view details)

Uploaded Python 3

File details

Details for the file swap-0.5.0.tar.gz.

File metadata

  • Download URL: swap-0.5.0.tar.gz
  • Upload date:
  • Size: 291.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for swap-0.5.0.tar.gz
Algorithm Hash digest
SHA256 9823133f55344225b04af5449e2451938c3ced78db4e61e3261d493474f5750b
MD5 029f161671a7ca3f5778bff6837d32e5
BLAKE2b-256 c91c33289fe4883a7c48df44ee825ea738d38d7e4655288449ebe14b93e2208e

See more details on using hashes here.

File details

Details for the file swap-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: swap-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 385.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for swap-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f84c1b89d2c3fe2edfc8d9213f3b16f57b365ed46e02efa319df1afcbb272bae
MD5 2c79931c5066bc6582a4ba5d645e61a9
BLAKE2b-256 c589bfe80ecad8a28b91f67c9c244f68b8af32f0e8356cf7b3e8876af0b3743a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page