Skip to content
This repository has been archived by the owner on Oct 28, 2022. It is now read-only.

Unstoppable request #600

Open
wants to merge 246 commits into
base: production
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
246 commits
Select commit Hold shift + click to select a range
b680ae6
Update bundle
ealymbaev Jun 12, 2019
022ff1f
Fix bug with updated checkpoint (#389)
esen Jun 13, 2019
88ae179
Merge pull request #390 from horizontalsystems/checkpoint_bugfix
ant013 Jun 13, 2019
310b6a8
Fix bug with wrong checkpoint block timestamp (#391)
ant013 Jun 17, 2019
3e2f8eb
Merge pull request #392 from horizontalsystems/fix_timestamp
mNizhurin Jun 17, 2019
21e99a6
Increase pod versions to 0.6.1
ant013 Jun 17, 2019
7cedb29
Merge pull request #393 from horizontalsystems/increase_version
mNizhurin Jun 17, 2019
a772acf
Add migration for change wrong checkpoint block timestamp
ant013 Jun 17, 2019
e4c4d22
Merge pull request #394 from horizontalsystems/add_migration
ealymbaev Jun 17, 2019
af67e97
Fix bug with wpkhSh transaction restoring. (#397)
ant013 Jun 20, 2019
67f6004
Merge pull request #398 from horizontalsystems/fix_bloomfilter
esen Jun 20, 2019
1ffc181
Bugfixes (#395)
esen Jun 21, 2019
93a6b3f
Merge pull request #399 from horizontalsystems/bugfixes
ant013 Jun 21, 2019
b9117df
Bugfixes (#400, #401)
esen Jun 25, 2019
9cd93c4
Merge pull request #402 from horizontalsystems/bugfixes
ant013 Jun 25, 2019
a4378f7
Notify syncFinished to syncStateListener when peer is synced (#400)
esen Jun 25, 2019
31b4bc7
Merge pull request #403 from horizontalsystems/bugfix
ant013 Jun 26, 2019
0521129
Ability to redeem from p2sh output (#404)
esen Jul 13, 2019
eb9ea53
BloomFilterManager sets itself to the providers it's adding (#404)
esen Jul 15, 2019
89eadcd
Merge pull request #405 from horizontalsystems/redeem_from_p2sh
ant013 Jul 15, 2019
7d7c292
Ability to set change output script type (#407)
esen Aug 2, 2019
8da43b2
Wrap peerStates removal in SyncedReadyPeerManager (#407)
esen Aug 2, 2019
915501e
Merge pull request #409 from horizontalsystems/bugfix
ant013 Aug 2, 2019
852b822
Merge pull request #410 from horizontalsystems/segwit_change_address
ant013 Aug 2, 2019
7155d61
Set default changeScriptType (#407)
esen Aug 2, 2019
dc22694
Merge pull request #413 from horizontalsystems/segwit_change_address
ant013 Aug 2, 2019
7bc5acd
Ability to clear wallets except specified ones
esen Aug 19, 2019
f3558c4
Use method to generate database file name
esen Aug 20, 2019
4842b7a
Add fee to TransactionInfo
esen Aug 21, 2019
ea36be9
Update checkpoints for all blockchains
ealymbaev Aug 23, 2019
5d5ade9
Fix Bitcoin MainNet checkpoint
ealymbaev Aug 30, 2019
f7d4807
Pass master key derivation protocol (BIP) to BitcoinKit
esen Sep 5, 2019
8a7f354
Rename AddressManager to PublicKeyManager
esen Sep 5, 2019
23ba727
Remove "type" parameter from BitcoinCore#receiveAddress
esen Sep 5, 2019
9c3e329
Remove "changeScriptType" parameter from BitcoinCore#send and Bitcoin…
esen Sep 5, 2019
fa94bcb
Code Refactor
esen Sep 9, 2019
d5469b5
PublicKeyManager as IBloomFilterProvider
esen Sep 9, 2019
b801a27
Extract outpoints bloom filter elements to IrregularOutputFinder class
esen Sep 9, 2019
af67782
Add TransactionFeeCalculator
esen Sep 11, 2019
3824173
Bugfix and Tests
esen Sep 11, 2019
9ae9dc2
Increase pod version
esen Sep 12, 2019
d889d70
Update kits' BitcoinCore dependency version
esen Sep 12, 2019
565f9fc
Fee calculator returns fee calculated by UnspentOutputSelector
esen Sep 12, 2019
cba82bd
Don't call ISyncStateListener#syncFinished if peer hasn't sent all of…
esen Sep 16, 2019
9ae8463
Set last blocks height to transaction nLockTime field
esen Sep 16, 2019
fbf7f15
Set 0xFFFFFFFE to nSequence to inputs to enable nLockTime and disable…
esen Sep 23, 2019
5d02ef8
Add seed nodes to BitcoinCash mainnet and testnet
esen Sep 27, 2019
b394159
Fix typos in README.md
Oct 5, 2019
12ca910
Fix `syncMode` parameter name in README.md
Oct 5, 2019
61223d9
Add status info to BitcoinCore
mNizhurin Oct 17, 2019
15864a6
Add host and best block to peer status
mNizhurin Oct 17, 2019
537dbd8
Minor code refactoring
esen Oct 1, 2019
bd196b1
Extract building steps in TransactionBuilder into separate classes
esen Oct 4, 2019
da5793e
Add "Hodler" module
esen Oct 8, 2019
1a0f562
Sending timelocked transactions
esen Oct 9, 2019
b7ee5f2
Parse hodler transactions
esen Oct 10, 2019
83ad666
Filter currently time-locked transaction out in UnspentOutputProvider
esen Oct 10, 2019
d6ad7b5
Spend time-locked transactions
esen Oct 11, 2019
119bf03
Addd BalanceInfo with "spendable" and "unspendable" balances
esen Oct 11, 2019
4fa4b21
Add nullData output size on fee calculation
esen Oct 12, 2019
bb484d5
Use median time past for timelock comparing instead of current time
esen Oct 14, 2019
c693939
Refactor TransactionBuilder#buildTransaction(UnspentOutput,...) method
esen Oct 14, 2019
f5c3091
Use Relative TimeLocks (CSV) instead of Fixed Timelocks (CLTV)
esen Oct 16, 2019
f7b778b
Show lockedUntil date and original address for time-locked transactions
esen Oct 17, 2019
ae6a524
Pass UnspentOutput object to PluginManager#isSpendable method
esen Oct 17, 2019
4e94493
Tests fixed
esen Oct 21, 2019
272cd19
Restore time-locked transactions from API
esen Oct 21, 2019
b12a1ee
Log and pass exceptions thrown in PluginManager#processTransactionWit…
esen Oct 21, 2019
5352331
HodlerPlugin refactoring with tests
esen Oct 22, 2019
4088edf
Add approximateUnlockTime field for HodlerPlugin parsed data
esen Oct 22, 2019
48e1f49
Create Hodler.swift pod. Update other pods versions
esen Oct 22, 2019
051b90b
Rename HodlerPlugin#cltvRedeemScript to csvRedeemScript
esen Oct 23, 2019
9d4eeaa
Use IPluginData and IPluginOutputData in pluginData maps instead of […
esen Oct 23, 2019
54ff7e8
Validate that sendValue is more than dust
esen Oct 28, 2019
9ac0bdb
Check non-senderPay and change output values for dust
esen Oct 28, 2019
503460a
Move dustRelayTxFee parameter from BitcoinCoreBuilder to INetwork
esen Oct 30, 2019
19872ff
Add 1 byte for non-witness inputs when calculating size of segwit tra…
esen Oct 30, 2019
96c8dce
Rewrite available_balance calculation
esen Oct 31, 2019
f968542
Set locked value limit
esen Nov 1, 2019
8937870
Start/Stop SyncManager in background queue
esen Nov 7, 2019
693fbb1
Accumulate APIError exceptions to add to statusInfo lines
esen Nov 7, 2019
08ab717
Remove irrelevant error ScriptError.wrongScriptLength logs in PluginM…
esen Nov 7, 2019
da15c51
Update checkpoints
esen Nov 7, 2019
5b54046
Validate address in HodlerPlugin
esen Nov 7, 2019
8de71a5
Set common pod version to Hodler pod
esen Nov 8, 2019
4e361ad
Make HodlerPluginError public
esen Nov 8, 2019
2089cef
Add jsonData to APIError description in ErrorStorage.swift
esen Nov 12, 2019
8662aec
Add errors on send to ErrorStorage
esen Nov 12, 2019
9095a2d
Fix crash on zero byte lockingScript transaction outputs extraction
esen Nov 18, 2019
8050922
Add tasks to app status
esen Nov 19, 2019
ed3cdbe
Add derivatoin to status info
mNizhurin Nov 26, 2019
9815a6b
Handle invalid transactions being sent
esen Nov 19, 2019
6b472c7
Notify IBlockchainDataListener about transaction become invalid
esen Nov 20, 2019
760ed16
Remove SentTransaction after transaction relayed in mempool
esen Nov 20, 2019
f036db9
Filter out invalid transactions from unspentOutputs
esen Nov 20, 2019
385e06e
Remove one day transaction sending time limit
esen Nov 20, 2019
faf64ba
Store invalid transactions in separate table
esen Nov 26, 2019
cd37135
Invalidate all descendant transactions of an invalidated transaction
esen Nov 27, 2019
5abfd0c
AbstractKit#transactionsSingle requires "fromTimestamp" in order to p…
esen Nov 27, 2019
02eed0d
Differentiate database files by also Bip and BitcoinCore.SyncMode used
esen Nov 27, 2019
e510b3b
Pods versions updated
esen Nov 27, 2019
b81ca26
Add lockedValue to HodlerOutputData
esen Nov 28, 2019
9c1cff9
TransactionProcessor#processInvalid must only invalidate valid transa…
esen Nov 28, 2019
125c71b
Fix bug with syncing locked transactions from API
esen Nov 28, 2019
ea65caa
Update Hodler.swift pod version
esen Nov 28, 2019
876e96c
Send InvalidTransaction instance after transaction invalidation
esen Nov 29, 2019
8f9acf0
Add Uid to Transaction and InvalidTransaction entities
esen Nov 29, 2019
d112a0a
Revert "Add lockedValue to HodlerOutputData"
esen Dec 2, 2019
9b502a8
Refactor TransactionInfo
esen Dec 2, 2019
008f4d6
Add fee to TransactionInfo
esen Dec 5, 2019
4cff227
Restructure project to comply with open-source community specs
ealymbaev Dec 12, 2019
9ed8d8c
Update pod dependencies
ealymbaev Dec 13, 2019
941a7f6
Add skipChecks parameter to IPlugin#processOutputs
esen Dec 17, 2019
afab625
Use addressConverter#convert(publicKey:type) method in debugInfo
esen Dec 17, 2019
5110480
Filter out peers with NODE_BLOOM service flag set off
esen Dec 18, 2019
e468fbc
Set different tags for each pod
esen Dec 18, 2019
c243f83
Add signatureLength + pubKeyLength + redeemScriptLength to inputs siz…
esen Dec 19, 2019
c0b1827
Fix bitcoincash initial sync. Refactor RestoreKeyConverter initialize
ant013 Dec 20, 2019
2021ecc
Read last checkpoints from files
esen Dec 20, 2019
0ebcd7f
Update pod versions
esen Dec 20, 2019
2a2827c
Rename checkpoints bundle name
esen Dec 20, 2019
dc91c39
Make mempool transactions thread safe
esen Dec 23, 2019
3660a01
Name DispatchQueue instances according to code convention
esen Dec 23, 2019
7bfda6b
Handle send conflicting transactions
ant013 Jan 2, 2020
674f2f1
Update versions to 0.13 for all kits.
ant013 Jan 2, 2020
6f919b1
Update versions to 0.13.1 for all kits. To avoid conflict with podspe…
ant013 Jan 6, 2020
cbcb40e
Update Hodler pod dependency in BitcoinKit.
ant013 Jan 6, 2020
1068fed
Fix bug with grdb validOrInvalid transaction query. Update pod versions.
ant013 Jan 6, 2020
bd1811a
Handle receive transaction with conflicting inputs.
ant013 Jan 8, 2020
ad53e68
Refactor code to decrease updating bloom filter.
ant013 Jan 8, 2020
cb82859
Update core version to 0.13.3.
ant013 Jan 8, 2020
a15bfaa
Update tx only when change status. Update timestamp when transaction …
ant013 Jan 13, 2020
9120752
Update core version to 0.13.4
ant013 Jan 13, 2020
ee0b616
Refactor Core double spend handling. Update pod
ant013 Jan 15, 2020
7efd361
Bip 69 implementation
mNizhurin Jan 15, 2020
2f42a64
Update pods
mNizhurin Jan 15, 2020
8474e16
Set transaction output index values after bip-69 ordering
mNizhurin Feb 21, 2020
c279fa1
Change bch api restore link.
ant013 Feb 22, 2020
26f1cf8
Update checkpoints
esen Feb 24, 2020
cc03d9e
Initial implementation of Litecoin support
ealymbaev Mar 3, 2020
9633082
Add litecoin ProofOfWorkValidator. Update pods
ant013 Mar 5, 2020
85e2ce1
Extract blockchain validator params from BitcoinCore
ealymbaev Mar 4, 2020
f0663d3
Refactor blockchain checkpoints
ealymbaev Mar 5, 2020
ac34e72
Fix tests after refactoring Checkpoints
ealymbaev Mar 6, 2020
cee9471
Litecoin: integrate fast sync api
ealymbaev Mar 9, 2020
07cf7c7
Change Scrypt algorythm and improve perfomance.
ant013 Mar 10, 2020
161ce7f
Add .gitkeep to Tests/BitcoinKit folder
ealymbaev Mar 11, 2020
b5206f2
Fix issue with reading packets from peer connection
ealymbaev Mar 13, 2020
181325d
Fix bug in InitialBlockDownload that stops peer resync after reconnec…
esen Mar 13, 2020
6b10e73
Don't add received peer address if it already in the storage
esen Mar 13, 2020
551e646
Fix bug in GrdbStorage with blockHashes returned only sorted by height
esen Mar 16, 2020
5d6e5cf
Add transaction data sorters for inputs-outputs tx
ant013 Mar 16, 2020
e4f26b0
Improve proof of work validator perfomance
ant013 Mar 17, 2020
cd447ad
Change Litecoin api restore url
ealymbaev Mar 18, 2020
cb3e18c
Update checkpoints and pod versions
esen Apr 15, 2020
4f3b83d
Update BTC testnet API URL
esen Apr 30, 2020
ffd0e14
Integrate HsToolKit
ealymbaev May 6, 2020
06551de
Refactor SyncManager and add error to .notSynced state
ealymbaev May 12, 2020
e10d743
Add ability to fetch raw transaction from AbstractKit
ealymbaev May 13, 2020
3573468
Add ability to fetch TransactionInfo by hash in AbstractKit
ealymbaev May 13, 2020
7e22bf4
Use batch public key derivation when needed
esen May 15, 2020
469fe01
Rename Factory#lockingOutput to nullDataOutput
esen May 17, 2020
2551585
Add .apiSyncing(transactions:) state to KitState
esen May 18, 2020
58a52b3
Add rawTransaction to invalid transactions
esen May 20, 2020
6877853
Update checkpoints
esen May 21, 2020
ef272a0
Update pod versions
esen May 21, 2020
ac14214
Fix bug in DaaValidator
esen May 22, 2020
597fd6a
Update pod versions
esen May 22, 2020
49fcfe7
Refactor SyncManager
esen May 26, 2020
8c7bc09
SyncManager#currentBestBlockHeightUpdated works only when state is sy…
esen May 27, 2020
47d487a
Don't add BlockHash records for mempool transactions retrieved from API
esen Jun 4, 2020
36ccd7c
Update pod versions
esen Jun 4, 2020
76a6438
Fix the issue with status update when inet is lost
esen Jun 30, 2020
1c6abad
Fix bug with BlockHashFetcherHelper when no address is passed
esen Jun 30, 2020
6532cc6
Update pod versions, update checkpoints
mNizhurin Jul 6, 2020
483ce58
Fix potential bug with block validation in case of fork
esen Jul 27, 2020
f36fb11
Ignore exceptions on TX send after it's saved to DB
esen Aug 4, 2020
8bdfa4d
Refactor error Storage
esen Aug 10, 2020
5651e78
Extract hex extension to UIExtensions
mNizhurin Aug 6, 2020
0cd0c55
TransactionSender enhancements
esen Aug 14, 2020
05598f5
Make TX coming in a block valid
esen Aug 18, 2020
a51f6a0
Update pod versions to 0.15.0, update checkpoints
mNizhurin Sep 11, 2020
b5c8978
Fix UIExtensions pod version
mNizhurin Sep 11, 2020
2bcd33a
Fix HsToolKit pod version
mNizhurin Sep 11, 2020
c3b2de8
Update insight api links.
ant013 Sep 16, 2020
788a740
Bugfix for parsing insight response by address chunks
ant013 Sep 17, 2020
6444d6b
Update pod patch versions
ant013 Sep 17, 2020
e071971
Refactor TransactionProcessor
esen Sep 24, 2020
cb7824c
Use keyHashes for ltc bip84 initial restore.
ant013 Sep 25, 2020
4aaefd4
Add #createRawTransaction method to AbstractKit
esen Sep 25, 2020
097bec1
Update checkpoints
esen Sep 29, 2020
f806c86
Fix bug in TransactionConflictsResolver
esen Sep 29, 2020
743d927
Increase pod versions
esen Sep 29, 2020
8b6e7e3
Ignore initial sync tx without blockHeight or blockHash
ant013 Sep 30, 2020
b77c8ec
Fix bug with dust validation
esen Oct 19, 2020
0f72c7d
Increase pod versions
esen Nov 13, 2020
9119eec
Update checkpoints
esen Nov 13, 2020
9c9f481
Add ASERTValidator DAA validator to handle fork in BitcoinCashKit
esen Nov 19, 2020
ff4da74
Update pod versions
esen Dec 8, 2020
8133597
BitcoinCashKit: add support for two coin types: 0 and 145
ealymbaev Dec 16, 2020
6a3600a
Rename core class names of all kits to `Kit`
ealymbaev Dec 17, 2020
9f4f7a9
BitcoinCashKit: refactor CoinType enum to use enum raw value
ealymbaev Dec 17, 2020
7f4d99f
Add DNS seeds for BitcoinCash
esen Jan 28, 2021
1d5990b
Unwrap optional baseAddress of a unsafe bytes object in PeerConnectio…
esen Feb 3, 2021
67c6ea3
Update checkpoints
esen Feb 8, 2021
d11d30d
Release pods
esen Feb 8, 2021
6cd8557
Release pods
esen Mar 24, 2021
fbf60ee
Increase minimum iOS version to 13.0
esen Apr 1, 2021
569e87a
Update ObjecMapper dependency to 4.0
mNizhurin Apr 9, 2021
3ab5509
Accept seed data instead of words array when getting instance of all …
ealymbaev Apr 21, 2021
260099b
Switch PeerConnection network to SwiftNIO
esen Apr 22, 2021
e830011
Improve unspent output selection logic
esen Apr 29, 2021
d0c2c7d
Update HsToolKit.swift pod
esen May 4, 2021
42d5b1d
Fix ASERT validation algorithm for BitcoinCash nBits validation
esen May 7, 2021
c7f2190
Update pod versions to 0.17
mNizhurin May 10, 2021
d8e7627
Use single MultiThreadedEventLoopGroup instance for all peers of one …
esen May 21, 2021
01b0b10
Fix memory leak in IrregularOutputFinder
esen May 24, 2021
901ed24
Observe foregroundFromExpiredBackgroundObservable on background thread
esen May 28, 2021
2c0aa96
Bugfix: Run peer discovery in serial
esen Jun 1, 2021
d897cb6
Update GRDB pod to version ~> 5.0
ealymbaev Jun 21, 2021
4911f41
Update checkpoints
esen Aug 9, 2021
46512ce
Update DNS seeds and checkpoints
esen Aug 25, 2021
9670d6d
When AddressMessage is received, filter out addresses who don't suppo…
esen Aug 25, 2021
dc8b506
Increase peer address score on successful connection
esen Aug 25, 2021
a70708c
Add TransactionMetadata
esen Sep 3, 2021
a88de73
Add method to get transactions by type
esen Sep 3, 2021
c0c14e6
Fix SQL query bug when filtering by types
esen Sep 3, 2021
b6b129f
Fix bug in transactions migration
esen Sep 3, 2021
02efc79
Replace TransactionMetadata on conflict
esen Sep 5, 2021
8549239
update checkpoints
ant013 Nov 22, 2021
84ab754
update pod versions to 0.18
ant013 Nov 22, 2021
5ce8892
update HsToolKit to avoid version conflicts
ant013 Nov 22, 2021
9729b0c
Fix typos
rex4539 Feb 19, 2022
fc07ae0
Update checkpoints
ant013 Mar 1, 2022
31afca1
Update swiftNIO to 2.38 version
ant013 Mar 31, 2022
c3e55cf
Add first part of read-only kit logic
esen Apr 7, 2022
6d74eef
Update checkpoints
mNizhurin May 26, 2022
f402d3d
Change initial sync api for `Bitcoin` and `BitcoinCash`
ealymbaev Jun 14, 2022
eaf8d69
Update sync progress reporting behavior
ealymbaev Jun 14, 2022
e2c4815
Add serial scheduler for restore API requests in order to avoid rate …
ealymbaev Jun 15, 2022
84d0e5f
Sync special dash transactions
ant013 Jul 21, 2022
231ad9c
Make key for forced set hash
ant013 Jul 28, 2022
5fd5fa4
Update checkpoints
mNizhurin Aug 5, 2022
aad34bd
Fix parsing Dash version. Check if transaction is special and has ext…
ant013 Aug 12, 2022
8be97ec
Update checkpoints for `BitcoinKit`, `BitcoinCashKit` and `LitecoinKit`
ealymbaev Sep 29, 2022
62a9193
Update Dash protocol to 70220. Handle parsing quorums v.2
ant013 Sep 30, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 14 additions & 18 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# OS X
.DS_Store

# Xcode
.bundle/
build/*
build/
*.pbxuser
!default.pbxuser
*.mode1v3
Expand All @@ -9,24 +11,18 @@ build/*
!default.mode2v3
*.perspectivev3
!default.perspectivev3
!default.xcworkspace
xcuserdata
xcuserdata/
*.xccheckout
profile
*.moved-aside
Pods/*
!Podfile.lock
.idea/
.DS_Store
/.irb-history
/screenshot_*.png

history_bash.txt

#Fastlane

fastlane/report.xml
fastlane/README.md
DerivedData
*.hmap
*.ipa

# Cuckoo
# Bundler
.bundle
_Pods.xcodeproj

Pods/
.idea
GeneratedMocks.swift
57 changes: 31 additions & 26 deletions BitcoinCashKit.swift.podspec
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
Pod::Spec.new do |spec|
spec.name = 'BitcoinCashKit.swift'
spec.module_name = "BitcoinCashKit"
spec.version = '0.6'
spec.summary = 'BitcoinCash library for Swift'
spec.description = <<-DESC
BitcoinCashKit implements BitcoinCash protocol in Swift. It is an implementation of the BitcoinCash SPV protocol written (almost) entirely in swift.
```
DESC
spec.homepage = 'https://github.com/horizontalsystems/bitcoin-kit-ios'
spec.license = { :type => 'Apache 2.0', :file => 'LICENSE' }
spec.author = { 'Horizontal Systems' => '[email protected]' }
spec.social_media_url = 'http://horizontalsystems.io/'
Pod::Spec.new do |s|
s.name = 'BitcoinCashKit.swift'
s.module_name = 'BitcoinCashKit'
s.version = '0.18'
s.summary = 'BitcoinCash library for Swift.'

spec.requires_arc = true
spec.source = { git: 'https://github.com/horizontalsystems/bitcoin-kit-ios.git', tag: "#{spec.version}" }
spec.source_files = 'BitcoinCashKit/BitcoinCashKit/**/*.{h,m,swift}'
spec.ios.deployment_target = '11.0'
spec.swift_version = '5'
s.description = <<-DESC
BitcoinCashKit implements BitcoinCash protocol in Swift. It is an implementation of the BitcoinCash SPV protocol written (almost) entirely in swift.
DESC

spec.dependency 'BitcoinCore.swift', '~> 0.6'
spec.dependency 'HSCryptoKit', '~> 1.4'
spec.dependency 'HSHDWalletKit', '~> 1.1'
spec.dependency 'Alamofire', '~> 4.0'
spec.dependency 'ObjectMapper', '~> 3.0'
spec.dependency 'RxSwift', '~> 5.0'
spec.dependency 'BigInt', '~> 4.0'
spec.dependency 'GRDB.swift', '~> 4.0'
s.homepage = 'https://github.com/horizontalsystems/bitcoin-kit-ios'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Horizontal Systems' => '[email protected]' }
s.source = { git: 'https://github.com/horizontalsystems/bitcoin-kit-ios.git', tag: "bitcoin-cash-#{s.version}" }
s.social_media_url = 'http://horizontalsystems.io/'

s.ios.deployment_target = '13.0'
s.swift_version = '5'

s.source_files = 'BitcoinCashKit/Classes/**/*'
s.resource_bundle = { 'BitcoinCashKit' => 'BitcoinCashKit/Assets/Checkpoints/*' }

s.requires_arc = true

s.dependency 'BitcoinCore.swift', '~> 0.18'
s.dependency 'OpenSslKit.swift', '~> 1.0'
s.dependency 'Secp256k1Kit.swift', '~> 1.0'
s.dependency 'HdWalletKit.swift', '~> 1.5'

s.dependency 'ObjectMapper', '~> 4.0'
s.dependency 'RxSwift', '~> 5.0'
s.dependency 'BigInt', '~> 5.0'
s.dependency 'GRDB.swift', '~> 5.0'
end
147 changes: 147 additions & 0 deletions BitcoinCashKit/Assets/Checkpoints/MainNet-bip44.checkpoint

Large diffs are not rendered by default.

147 changes: 147 additions & 0 deletions BitcoinCashKit/Assets/Checkpoints/MainNet-last.checkpoint

Large diffs are not rendered by default.

43 changes: 43 additions & 0 deletions BitcoinCashKit/Assets/Checkpoints/TestNet-bip44.checkpoint
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
02000000420ad5d432dfa48f61fa5b0b6b65f4587291761d56b8d271cad9bb010000000031d3e2406e954acbf9134d2420ddb8f607cb29dc7cdbd9153af5751ad5c7f8ff444d1153ac02061cb3e8dba3370b03003c0205fa47283109a3272a9c305c28329bc6e7bc12e31598c015d60500000000
02000000bed0b6cb5da8dce215d80720905bbb6cb19b8418f82df68d3bac3803000000002b7f607d44ef06ad1f96c8c042bb4c60694891a6bed5c3a6d708369aa0d3811c3a4d1153ac02061c48168705360b0300420ad5d432dfa48f61fa5b0b6b65f4587291761d56b8d271cad9bb0100000000
02000000af6a359719e05a5715138aa42e6a67aca19c1ae26e6a7c66ce42cb0000000000cebc8e0f1d52ec0e55077decf69ae44dbc65820694d29a7227b17caa9ab5b5ee294d1153ac02061cc2a6875e350b0300bed0b6cb5da8dce215d80720905bbb6cb19b8418f82df68d3bac380300000000
02000000d51bb879dda44622477ffcac907e44f3d09595fac165eb9f056cd903000000007dc5bec62bd9404560a021c5b77ff78178eec09c12da1d226d4ed9e276e25a23244d1153ac02061c3892904e340b0300af6a359719e05a5715138aa42e6a67aca19c1ae26e6a7c66ce42cb0000000000
02000000a46f94687fb64c70e84661a57db04a4e09c32bc555b60e8a145c8f05000000005a4d29814979830a2a40b636c6723796b60b18a232f6c6296f9b6e0b0e2c793e174d1153ac02061ce78fa008330b0300d51bb879dda44622477ffcac907e44f3d09595fac165eb9f056cd90300000000
02000000d4f4c2e43c564cbba9de9abe5b9cde022ac2ee30db331458fc2c9502000000005df7d4998b04d50745ea21eed93901a993e3550809a66a53b5479e9bda7febfa054d1153ac02061c4313b257320b0300a46f94687fb64c70e84661a57db04a4e09c32bc555b60e8a145c8f0500000000
020000002ed46bc395a09a8b034c926950f8679c19338f198203598bd30fdf04000000001abc28e9e4f36ccae15bfd0bad028f145f290dd80bf58b91fbd674bd6357b332fb4c1153ac02061c4742d3ef310b0300d4f4c2e43c564cbba9de9abe5b9cde022ac2ee30db331458fc2c950200000000
020000006cd566a53e2ada5163f46871c6103380512320b905f7363ceb4e9004000000009c371894786679561f6d891b6e725120191d190bd9d1bc59dfbfc1f94189c277f34c1153ac02061ca9af858c300b03002ed46bc395a09a8b034c926950f8679c19338f198203598bd30fdf0400000000
0200000070361e684698c0858b7c2ec5346be8238b66cf7e08ea6bb2fd06a502000000000f0452bf84f8023fee8cda28a06f1edab760ee4fb57ec26b4f344f15c33a77d9ec4c1153ac02061c173f247d2f0b03006cd566a53e2ada5163f46871c6103380512320b905f7363ceb4e900400000000
020000009605e44b7924bc2d3db9e7beff7ed0594d6ee79dfc95d7cc80a1520400000000e0008e3ca601062432b1c9e04930ff8b6c43b6ef38bc9ee3bf021a943ee22a6cde4c1153ac02061c5d11a3b02e0b030070361e684698c0858b7c2ec5346be8238b66cf7e08ea6bb2fd06a50200000000
02000000a462900dc91079e7da04bae7f81f05d36199e548833c306caf31ff0300000000246914c192775e6318b5a578de640b68d43deea82a97db37a11ecac86d221009d84c1153ac02061ca1bb08bd2d0b03009605e44b7924bc2d3db9e7beff7ed0594d6ee79dfc95d7cc80a1520400000000
02000000a266e7267075eda858897c09a1183586bec11526270ade4f4d299002000000008af392f52425c25f7abf8150ed2965f4bec3d3a3cc6c518905d7e8fb09dbf510d34c1153ac02061c4712c7a62c0b0300a462900dc91079e7da04bae7f81f05d36199e548833c306caf31ff0300000000
02000000b2f4e9fff46b4a8d9cfc0ab633a801745c506cafed94a7669773d20000000000b5e18120fa7b2d6d74a7752f4c137651e0a0d9de133a9f07c0719f6e0a9d1949cd4c1153ac02061c574e76e12b0b0300a266e7267075eda858897c09a1183586bec11526270ade4f4d29900200000000
02000000e63b556f7d28ed2b44e3ab175accc1878317c6e98bd8fbff70640e050000000081c1c5a8c313362b8171c0bc13263c30159b54baae97524aa722d21e67162f2fc74c1153ac02061c66935a282a0b0300b2f4e9fff46b4a8d9cfc0ab633a801745c506cafed94a7669773d20000000000
02000000b377dc6ed586b0cb3d0b06c2af258cec7df9e826fb39b6e99f625a0200000000a548db3c14d3eaedf24fbc204b57922ec5274b45a08dbf3a973b15dfddc70af8bb4c1153ac02061c166bfae7290b0300e63b556f7d28ed2b44e3ab175accc1878317c6e98bd8fbff70640e0500000000
020000000f183315940e93ff1476b3fe618cbf48d8f190bc826f3ab3da7a760100000000fccbf3dd196a761d21d0a68e5b41c9afc10604f6b537e93c8ca37238c9f3eae7b44c1153ac02061c7266300d280b0300b377dc6ed586b0cb3d0b06c2af258cec7df9e826fb39b6e99f625a0200000000
0200000099dff232d4ce1de8057f8898bd4b740d3b8d0f77f2fd571c6e334b0500000000a99425697f55c5c114b1eed2452d51646923b01fd313dccd3ec4528001e88b6eaf4c1153ac02061cbf05bf99270b03000f183315940e93ff1476b3fe618cbf48d8f190bc826f3ab3da7a760100000000
02000000fe3f131d633fd10057298eb603607f5ddcf045874afd9e2c75f497020000000089ca2b380865f57e72fe71dcfefbf68565aeef6914b60452f60ddbdf046de25faa4c1153ac02061cf2d85fe9260b030099dff232d4ce1de8057f8898bd4b740d3b8d0f77f2fd571c6e334b0500000000
0200000013e039297871ccaaae40f4cecf8266bb8e9570d4f56864656815b80300000000dd9c94d54ed4e65289a867c129040240e4e2771ae7f8ce13069933a9c2b55ee6a44c1153ac02061cd3739bc9250b0300fe3f131d633fd10057298eb603607f5ddcf045874afd9e2c75f4970200000000
02000000005975c7805234e00a2313e479ac3ca46d7dbac3eb0bc8433df15f01000000009d265c29b1c066d62ebb2147fb019e13a3a4d2786395397385e41c83925556b6a14c1153ac02061c1432e4f4240b030013e039297871ccaaae40f4cecf8266bb8e9570d4f56864656815b80300000000
0200000068f841818be2d3709222b9254c825a79bbad91691dcf9070057bd20100000000c3d70a8ed7cb613e370d3429fd99507d9d197f2f3a167e207d5c47211362e2c09b4c1153ac02061c832ad33a230b0300005975c7805234e00a2313e479ac3ca46d7dbac3eb0bc8433df15f0100000000
020000009557a1d63f67d6babfc253672339d98ea9a472f62672114488c8870500000000e8d58136fd1e6860f09b9297a88c3bd7dbeb1746cee8dfb71c362b9e6ce79138944c1153ac02061cc8158561220b030068f841818be2d3709222b9254c825a79bbad91691dcf9070057bd20100000000
020000003a3c82afa1c0bd0bc05775b578e28f40c6ece502e844706682545b030000000091f371e37146aeaca5a1e0d2a5decbd61f917712ae2a2119fe81c3d3e7425ef1904c1153ac02061c0f00dd01210b03009557a1d63f67d6babfc253672339d98ea9a472f62672114488c8870500000000
02000000e14ef72a8aea472614f3ae1306823cf0b325813f9f95987a47a7680400000000db5ea894cf5eab01dedf900c6b0387de31125fbe57df99c59d02637b71f42ecf8c4c1153ac02061cbaca34d2200b03003a3c82afa1c0bd0bc05775b578e28f40c6ece502e844706682545b0300000000
0200000010ba8a1d57c99940327489d731248ef96850a0e25a6deec897ef7502000000006331673396115467ce6d1c3891c7926c68f70b091e092d24d058143a8d3d7273844c1153ac02061ca4a8d43a1f0b0300e14ef72a8aea472614f3ae1306823cf0b325813f9f95987a47a7680400000000
02000000497def0e8859e314f7d0905fde763ad7f3888aad922d856674d57c05000000005ee1c0ad6dccf278cd96dc2cb3504f785686c1ea2ecca85f273c3b8f7a602c79694c1153ac02061c5cb6363c1e0b030010ba8a1d57c99940327489d731248ef96850a0e25a6deec897ef750200000000
02000000b2665f20f90efeb3aacd2dc1b581fbb1bf7ee9f31590e3b51a6d0c00000000005f83b6a96f27609b6b98c11afbff350f83e533b1964bc70bd14027aab3127834314c1153ac02061cafb7a87d1d0b0300497def0e8859e314f7d0905fde763ad7f3888aad922d856674d57c0500000000
02000000fcd266090fff4266d6e0759b5bacbbf971c07b61ec90d2d72903c60100000000afd22e7737e0eedf237d5e29da7fa8184a9883404a54aa16dc01f6c1d376124d544c1153ac02061cb75bcc9f1c0b0300b2665f20f90efeb3aacd2dc1b581fbb1bf7ee9f31590e3b51a6d0c0000000000
02000000d017b6b0019acccb2102ff9a6cee8977c6989cb42cdabaccc1366403000000008d3f96674b1e20d8067027a71b4c136ba2959ce4bb444ee2d7b2bb8c9110d4e7404c1153ac02061ceba14e841b0b0300fcd266090fff4266d6e0759b5bacbbf971c07b61ec90d2d72903c60100000000
020000004f6c33cae0a3b1aca6fbdb2a03b501dfc806ff072fbd2f65a7fdbd0100000000c098ca28eda4b933b287683ad38673544337837dfc352ef3d3ab72c6e05a75ee234c1153ac02061ca9763c611a0b0300d017b6b0019acccb2102ff9a6cee8977c6989cb42cdabaccc136640300000000
02000000fa4d0441e31932a3ae75334beb88f57dfc269ee838b922d8b9e16d01000000003ce85bdf82f02fb7e851e0b663c1c25df820e05975ae3b5beaf17ab4a9e0e80eef4b1153ac02061ce296a3fa190b03004f6c33cae0a3b1aca6fbdb2a03b501dfc806ff072fbd2f65a7fdbd0100000000
0200000042b12eeebba4e237177181ea6b224b0d99b41a1a0eb58d69601b1001000000004995bc1f26218cfcfe59fdb8542ef5aed8874c9e661eb4d69162e1bf2cd39c2e624b1153ac02061c5b366525180b0300fa4d0441e31932a3ae75334beb88f57dfc269ee838b922d8b9e16d0100000000
02000000038bc3e0b917bb7904ae3cc885c7319fdc39b798a09667beabdac60400000000375d6d578405acba5581101377e0b40da9ad500d58d8e63b66f39345336b2a00564b1153ac02061cbbd9a280170b030042b12eeebba4e237177181ea6b224b0d99b41a1a0eb58d69601b100100000000
0200000067e715e9adda369988f53551c853bdf6e1856d39a202c055326d010300000000bd47a543f8e6abfe2ccd008133fd77c4b09fd612a7e778bbf9f510b584cc61190e4b1153ac02061c4bcdd106160b0300038bc3e0b917bb7904ae3cc885c7319fdc39b798a09667beabdac60400000000
02000000a932d3f845fc285e7f9752459ff1120d2ea40435a26c551e3e449502000000008d9b9bc7865c84b7fbc8797fb443b4308144eef8741c2484a222988f232be5d1444a1153ac02061c79ec5745150b030067e715e9adda369988f53551c853bdf6e1856d39a202c055326d010300000000
02000000aadb6fe4be6d5de511d3b560b06ce13af8177105ddbfd01d7775600500000000183d45be68725b5dd1e53895bb7eb1019e8c25a5abb61b05450f1237d2fccb165e4a1153ac02061ca46351cd140b0300a932d3f845fc285e7f9752459ff1120d2ea40435a26c551e3e44950200000000
02000000cb8d219b3cc17d24b350c8d69138f42ea997e79d0e6aacffa537ee0200000000b443d514354e340cf0c9ffec1935c565cef89a49fc7848b7a59c5f379f53f0774b4a1153ac02061ca5b217fb130b0300aadb6fe4be6d5de511d3b560b06ce13af8177105ddbfd01d7775600500000000
02000000821e772f11b097d2f781b58900c7f7525d1c77bf12f3180b10b5d003000000008275b0f861bf8fdaf9c1cc1fe529fa11c0932413d127ca8268c899f737ca582d364a1153ac02061c2c5c0d18120b0300cb8d219b3cc17d24b350c8d69138f42ea997e79d0e6aacffa537ee0200000000
020000006222b9c99f08b6947464ce617f845b03c52517adc2da9dbbeb6f2e0100000000dee8069db8c146081bcbb52eadaa9720f3041d56e7914557f9c53274f74399b1064a1153ac02061c137d19bc110b0300821e772f11b097d2f781b58900c7f7525d1c77bf12f3180b10b5d00300000000
020000003c55fcde162e3f7a9ac2f4e401b5b3e14c89a2a347e0d0e1c9669f05000000002c2697645581d00006caeddb4cac857259a74ace02b8377729d2d22ce28cc989a4491153ac02061cf3c87e27100b03006222b9c99f08b6947464ce617f845b03c52517adc2da9dbbeb6f2e0100000000
02000000bbce18a1c5b6c13acf8f032466cbd0ddcb477097ce59f14c2df9e20000000000a632f1256ba784578fc431c79cc76cecee33ece48c3e1c26aab5e1d5160e3ebe85491153ac02061c8ab84f1f0f0b03003c55fcde162e3f7a9ac2f4e401b5b3e14c89a2a347e0d0e1c9669f0500000000
0200000038a87b508346358907e79245f9d2558d574dc98adb814940e3bbec04000000007613ebe4ba5fa0f1998de982425d0e3027f741c9a86164c33474fca8a0e5615177491153ac02061c0729ca190e0b0300bbce18a1c5b6c13acf8f032466cbd0ddcb477097ce59f14c2df9e20000000000
0200000038274e05ac9f07b81123e904a69fe55006fd828eb939eff152a4de0100000000c281b9c080273f21a426584f735afbd1748effce10761d793c8ebbf7008725c0da551153ac02061c3696e1210d0b030038a87b508346358907e79245f9d2558d574dc98adb814940e3bbec0400000000
Loading