1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
|
%global _empty_manifest_terminate_build 0
Name: python-swap
Version: 0.5.0
Release: 1
Summary: Cross-chain atomic swap between the networks of two cryptocurrencies based on Hash Time Lock Contracts (HTLC's) protocol.
License: AGPL-3.0
URL: https://github.com/movnetwork/swap
Source0: https://mirrors.aliyun.com/pypi/web/packages/c9/1c/33289fe4883a7c48df44ee825ea738d38d7e4655288449ebe14b93e2208e/swap-0.5.0.tar.gz
BuildArch: noarch
Requires: python3-requests
Requires: python3-cryptos
Requires: python3-ecdsa
Requires: python3-chainside-btcpy
Requires: python3-py-solc-x
Requires: python3-hdwallet
Requires: python3-mnemonic
Requires: python3-py-equity
Requires: python3-click
Requires: python3-pybytom
Requires: python3-six
Requires: python3-web3
Requires: python3-hexbytes
Requires: python3-pyxdc
Requires: python3-sphinx
Requires: python3-sphinx-rtd-theme
Requires: python3-sphinx-click
Requires: python3-pytest
Requires: python3-pytest-cov
%description
<img align="right" height="132" src="https://raw.githubusercontent.com/meherett/swap/master/docs/static/svg/readme/swap.svg">
# Swap
[](https://travis-ci.com/movnetwork/swap?branch=master)
[](https://pypi.org/project/swap)
[](https://swap.readthedocs.io)
[](https://pypi.org/project/swap)
[](https://pypi.org/project/swap)
[](https://coveralls.io/github/movnetwork/swap?branch=master)
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 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------: |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/bitcoin.svg"> [Bitcoin](https://github.com/bitcoin/bitcoin) `BTC` | `mainnet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/bytom.svg"> [Bytom v1.0](https://github.com/bytom/bytom) `BTM` - [More Assets](https://classic.blockmeta.com/assets) | `mainnet`, `solonet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/ethereum.svg"> [Ethereum](https://github.com/ethereum/go-ethereum) `ETH`, `ERC20` - [More Tokens](https://etherscan.io/tokens) | `mainnet`, `ropsten`, `kovan`, `rinkeby`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/vapor.svg"> [Vapor](https://github.com/bytom/vapor) `BTM` - [More Assets](https://vapor.blockmeta.com/assets) | `mainnet`, `solonet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/xinfin.svg"> [XinFin](https://github.com/XinFinOrg/XDPoSChain) `XDC`, `XRC20` - [More Tokens](https://explorer.xinfin.network/tokens/xrc20) | `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](https://swap.readthedocs.io).
| Hash Time Lock Contracts (HTLCs) | Scripts |
|:-------------------------------------- |:----------------------------------------------------------------------------------------------------------------: |
| Bitcoin: native BTC coin | [htlc.script](https://github.com/movnetwork/swap/blob/master/swap/providers/bitcoin/contracts/htlc.script) |
| Bytom v1.0: native BTM and more assets | [htlc.equity](https://github.com/movnetwork/swap/blob/master/swap/providers/bytom/contracts/htlc.equity) |
| Ethereum: native ETH coin | [htlc.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/ethereum/contracts/htlc.sol) |
| Ethereum for ERC20 tokens | [htlc-erc20.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/ethereum/contracts/htlc-erc20.sol) |
| Vapor: native BTM and more assets | [htlc.equity](https://github.com/movnetwork/swap/blob/master/swap/providers/vapor/contracts/htlc.equity) |
| XinFin: native XDC coin | [htlc.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/xinfin/contracts/htlc.sol) |
| XinFin for XRC20 tokens | [htlc-xrc20.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/xinfin/contracts/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](https://github.com/meherett/swap/tags).
## 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](https://github.com/meherett/swap/issues) 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](https://github.com/meherett/swap/blob/master/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](https://github.com/meherett/swap/blob/master/LICENSE) license.
See ``LICENSE`` for more information.
%package -n python3-swap
Summary: Cross-chain atomic swap between the networks of two cryptocurrencies based on Hash Time Lock Contracts (HTLC's) protocol.
Provides: python-swap
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-swap
<img align="right" height="132" src="https://raw.githubusercontent.com/meherett/swap/master/docs/static/svg/readme/swap.svg">
# Swap
[](https://travis-ci.com/movnetwork/swap?branch=master)
[](https://pypi.org/project/swap)
[](https://swap.readthedocs.io)
[](https://pypi.org/project/swap)
[](https://pypi.org/project/swap)
[](https://coveralls.io/github/movnetwork/swap?branch=master)
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 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------: |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/bitcoin.svg"> [Bitcoin](https://github.com/bitcoin/bitcoin) `BTC` | `mainnet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/bytom.svg"> [Bytom v1.0](https://github.com/bytom/bytom) `BTM` - [More Assets](https://classic.blockmeta.com/assets) | `mainnet`, `solonet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/ethereum.svg"> [Ethereum](https://github.com/ethereum/go-ethereum) `ETH`, `ERC20` - [More Tokens](https://etherscan.io/tokens) | `mainnet`, `ropsten`, `kovan`, `rinkeby`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/vapor.svg"> [Vapor](https://github.com/bytom/vapor) `BTM` - [More Assets](https://vapor.blockmeta.com/assets) | `mainnet`, `solonet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/xinfin.svg"> [XinFin](https://github.com/XinFinOrg/XDPoSChain) `XDC`, `XRC20` - [More Tokens](https://explorer.xinfin.network/tokens/xrc20) | `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](https://swap.readthedocs.io).
| Hash Time Lock Contracts (HTLCs) | Scripts |
|:-------------------------------------- |:----------------------------------------------------------------------------------------------------------------: |
| Bitcoin: native BTC coin | [htlc.script](https://github.com/movnetwork/swap/blob/master/swap/providers/bitcoin/contracts/htlc.script) |
| Bytom v1.0: native BTM and more assets | [htlc.equity](https://github.com/movnetwork/swap/blob/master/swap/providers/bytom/contracts/htlc.equity) |
| Ethereum: native ETH coin | [htlc.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/ethereum/contracts/htlc.sol) |
| Ethereum for ERC20 tokens | [htlc-erc20.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/ethereum/contracts/htlc-erc20.sol) |
| Vapor: native BTM and more assets | [htlc.equity](https://github.com/movnetwork/swap/blob/master/swap/providers/vapor/contracts/htlc.equity) |
| XinFin: native XDC coin | [htlc.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/xinfin/contracts/htlc.sol) |
| XinFin for XRC20 tokens | [htlc-xrc20.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/xinfin/contracts/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](https://github.com/meherett/swap/tags).
## 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](https://github.com/meherett/swap/issues) 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](https://github.com/meherett/swap/blob/master/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](https://github.com/meherett/swap/blob/master/LICENSE) license.
See ``LICENSE`` for more information.
%package help
Summary: Development documents and examples for swap
Provides: python3-swap-doc
%description help
<img align="right" height="132" src="https://raw.githubusercontent.com/meherett/swap/master/docs/static/svg/readme/swap.svg">
# Swap
[](https://travis-ci.com/movnetwork/swap?branch=master)
[](https://pypi.org/project/swap)
[](https://swap.readthedocs.io)
[](https://pypi.org/project/swap)
[](https://pypi.org/project/swap)
[](https://coveralls.io/github/movnetwork/swap?branch=master)
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 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------: |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/bitcoin.svg"> [Bitcoin](https://github.com/bitcoin/bitcoin) `BTC` | `mainnet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/bytom.svg"> [Bytom v1.0](https://github.com/bytom/bytom) `BTM` - [More Assets](https://classic.blockmeta.com/assets) | `mainnet`, `solonet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/ethereum.svg"> [Ethereum](https://github.com/ethereum/go-ethereum) `ETH`, `ERC20` - [More Tokens](https://etherscan.io/tokens) | `mainnet`, `ropsten`, `kovan`, `rinkeby`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/vapor.svg"> [Vapor](https://github.com/bytom/vapor) `BTM` - [More Assets](https://vapor.blockmeta.com/assets) | `mainnet`, `solonet`, `testnet` |
| <img align="left" height="25" src="https://raw.githubusercontent.com/movnetwork/swap/master/docs/static/svg/readme/xinfin.svg"> [XinFin](https://github.com/XinFinOrg/XDPoSChain) `XDC`, `XRC20` - [More Tokens](https://explorer.xinfin.network/tokens/xrc20) | `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](https://swap.readthedocs.io).
| Hash Time Lock Contracts (HTLCs) | Scripts |
|:-------------------------------------- |:----------------------------------------------------------------------------------------------------------------: |
| Bitcoin: native BTC coin | [htlc.script](https://github.com/movnetwork/swap/blob/master/swap/providers/bitcoin/contracts/htlc.script) |
| Bytom v1.0: native BTM and more assets | [htlc.equity](https://github.com/movnetwork/swap/blob/master/swap/providers/bytom/contracts/htlc.equity) |
| Ethereum: native ETH coin | [htlc.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/ethereum/contracts/htlc.sol) |
| Ethereum for ERC20 tokens | [htlc-erc20.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/ethereum/contracts/htlc-erc20.sol) |
| Vapor: native BTM and more assets | [htlc.equity](https://github.com/movnetwork/swap/blob/master/swap/providers/vapor/contracts/htlc.equity) |
| XinFin: native XDC coin | [htlc.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/xinfin/contracts/htlc.sol) |
| XinFin for XRC20 tokens | [htlc-xrc20.sol](https://github.com/movnetwork/swap/blob/master/swap/providers/xinfin/contracts/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](https://github.com/meherett/swap/tags).
## 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](https://github.com/meherett/swap/issues) 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](https://github.com/meherett/swap/blob/master/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](https://github.com/meherett/swap/blob/master/LICENSE) license.
See ``LICENSE`` for more information.
%prep
%autosetup -n swap-0.5.0
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-swap -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.0-1
- Package Spec generated
|