Compare commits

...

167 Commits
1.2 ... master

Author SHA1 Message Date
root
cda4559cfd added background 2021-10-23 22:39:15 +00:00
root
55196140f1 update sha1sum for index.html 2021-10-23 18:45:32 +00:00
root
6fdbbae67b various small updates and bug fixes to improve user experience 2021-10-23 18:06:36 +00:00
OutCast3k
9a0175e18f added better error handling for when a payment fails on the #wallet page 2020-10-02 21:22:22 +00:00
OutCast3k
507b44f719 add transaction id reference to #newTransaction tab 2020-07-31 15:38:31 +00:00
OutCast3k
c868cf984e bug fix, changes to make double spending work on the transaction page from a transction id 2020-07-31 15:17:30 +00:00
root
b4fd55aebe added feature to rebuild a transaction from the txid, useful for RBF and double spending :o. Changed donation address. Released as version 1.6 2020-07-06 21:33:57 +00:00
root
f51be92a72 fixed multisig bug as described in issues/212 2020-07-05 20:21:41 +00:00
root
06cf50abb3 removed auto reload wallet feature. users must click or interact with the page. attempt to save on bandwidth. 2020-06-03 17:59:47 +00:00
root
35de4228d8 updated index.html to list link to new host 2020-04-22 20:18:08 +00:00
OutCast3k
a4ef169031 update sha1sum 2020-02-23 19:57:33 +00:00
OutCast3k
6bb5e3785a
Merge pull request #210 from junderw/patch-1
Don't add padding to P2WSH
2020-02-23 19:55:14 +00:00
OutCast3k
a199d3a55c
Merge pull request #208 from jmacxx/fix_bech32_address_decoding
fix: some bech32 addresses were not recognised
2020-02-23 19:54:46 +00:00
Jonathan Underwood
7e92530e1a
Don't add padding to P2WSH
Fixes #209
2020-02-20 10:12:57 +09:00
Wowee0
f5c2f48efc fix: some bech32 addresses were not recognised 2020-02-12 10:57:15 -06:00
OutCast3k
4f3ceeb3ea update date in sha1sum file 2019-12-28 12:10:39 +00:00
OutCast3k
73369dd253 add file hash of test.html to sha1sum 2019-12-28 12:08:51 +00:00
OutCast3k
6ed0d3e07e
Merge pull request #206 from jmacxx/tests
add some self-test routines to coinbin
2019-12-28 12:03:55 +00:00
Wowee0
84304f23ea tests added 2019-12-25 19:30:38 -06:00
OutCast3k
44ba1b3d30 update readme 2019-12-25 22:15:55 +00:00
OutCast3k
5583675390 custom hd key derivation addded 2019-12-25 22:10:55 +00:00
OutCast3k
56cb104ea4 updated sha1sum 2019-12-24 23:01:50 +00:00
OutCast3k
c6f70d000e
Merge pull request #194 from jmacxx/fix_issue_140
fix Issue 140: error logged to console when switching tabs.
2019-12-24 23:00:22 +00:00
OutCast3k
4836b20fae updated sha1sum 2019-12-24 22:47:28 +00:00
OutCast3k
f364ae4b4a
Merge pull request #198 from jmacxx/fix_issue_193
fix: RBF always set when redeeming OP_CHECKLOCKTIMEVERIFY
2019-12-24 22:44:43 +00:00
OutCast3k
64cb387247 updated as outcast3k 2019-12-24 21:53:20 +00:00
btc
b2a86006cf updated sha1sum file 2019-12-24 21:51:33 +00:00
OutCast3k
b5ebaafed8
Merge pull request #202 from junderw/fixScriptNum
Fix script num
2019-12-24 21:49:03 +00:00
kinoshitajona
d4f47fce28
Must do OPs with script method 2019-11-14 15:13:51 +09:00
kinoshitajona
5bd3786f94
Fix ScriptNum 2019-11-14 15:07:15 +09:00
Wowee0
b77f3cf06a fix: RBF always set when redeeming OP_CHECKLOCKTIMEVERIFY 2019-10-18 23:19:52 -05:00
Wowee0
b0c6c3a516 fix Uncaught TypeError logged to console when switching Tx Input and Output tabs 2019-09-23 21:01:03 -05:00
OutCast3k
a6f5dcf7f0 removed debugger code 2019-09-22 20:32:42 +00:00
OutCast3k
cf2a8b01cb update sha1sum file 2019-08-30 17:03:31 +00:00
OutCast3k
261c4ace40
Merge pull request #191 from Wowee0/choose_backend
fix for #189 .. three backend API options for btc/ltc/doge
2019-08-30 17:58:50 +01:00
Wowee0
e18b634c4e fix issue where empty broadcast did not handle the error response appropriately 2019-08-27 11:17:08 -05:00
Wowee0
1f3b878d63 bugfix for blockcypher when address used that has no UTXO 2019-08-22 07:41:36 -05:00
Wowee0
efc16c10fb allow backend API choice between blockcypher/blockchair/chain.so 2019-08-16 16:28:29 -05:00
Wowee0
477ca8890d
Merge pull request #1 from OutCast3k/master
sync with OutCast3k/coinbin
2019-06-15 09:18:15 -05:00
OutCast3k
e73e8093b3 change made to avoid captcha provided by cloudflare to TOR users 2019-06-05 19:34:45 +00:00
OutCast3k
40ea3230fd removed blockchain.com links 2019-05-28 15:21:58 +00:00
OutCast3k
dc416c6521 changes made to paper wallet 2019-05-24 14:44:47 +00:00
OutCast3k
fc66bc9423
Merge pull request #127 from olivergregorius/paperwallet
Paperwallet
2019-05-24 15:41:54 +01:00
OutCast3k
1c10bef510
Merge pull request #183 from yottalogical/blockchain-explorer-link
Add Link to Blockchain Explorer after Broadcasting Transaction (Litecoin)
2019-05-06 11:49:48 +01:00
yottalogical
b22e79391f
Update sha1sum 2019-05-05 12:36:32 -04:00
yottalogical
0be8fd9a97
Add link to blockchain explorer for Chain.so (Litecoin) 2019-05-05 12:30:28 -04:00
OutCast3k
1a364ff770 updated sha1sum file 2019-05-05 09:22:52 +00:00
OutCast3k
bc0c72117e
Merge pull request #182 from Wowee0/litecoin
re-enabled Litecoin
2019-05-05 10:11:31 +01:00
OutCast3k
13c50cf4b6
Merge pull request #170 from ivy-dong/ivy_remove_redundant_quotation_marks
remove redundant quotation marks
2019-05-05 10:09:08 +01:00
OutCast3k
dea1d1b274
Merge pull request #178 from yottalogical/blockchain-explorer-link 2019-05-05 10:07:00 +01:00
Wowee0
e6c70d133b set appropriate hrp for Litecoin SegWit addresses
set chain.so/address/LTC for view of address (previously was referencing BTC block explorer)
2019-04-22 22:09:20 -05:00
Wowee0
10aa011c6e LTC SegWit (pre-bech32) address version changed from 5 to 50 (i.e. 3-addresses changed to M-addresses) 2019-04-20 23:28:40 -05:00
Wowee0
c7a0fda7e5 re-enabled Litecoin 2019-04-19 10:40:59 -05:00
yottalogical
c9cfeefc86
Correct month in sha1sum 2019-02-22 18:19:35 -05:00
yottalogical
cdf4aa105b Fix variable name in broadcast success message 2019-02-06 15:43:23 -05:00
yottalogical
2fc574dde0 Remove unnecessary linebreak at end 2019-02-06 15:34:25 -05:00
yottalogical
f088ec2e52 Update sha1sum 2019-02-06 15:28:04 -05:00
yottalogical
9ccd73808d Capitalize TXID in success message 2019-02-06 15:23:09 -05:00
yottalogical
cb81362330 Add link to blockchain explorer for Cryptoid.info (Carboncoin) 2019-02-06 15:21:39 -05:00
yottalogical
fcbf25eaec Add link to blockchain explorer for coinb.in (Bitcoin) 2019-02-06 15:20:43 -05:00
yottalogical
2aca9ab28d Add link to blockchain explorer for Blockcypher.com 2019-02-06 14:46:19 -05:00
yottalogical
5c581316fe Add link to blockchain explorer for Chain.so (Bitcoin) 2019-02-06 14:39:48 -05:00
yottalogical
ebfb940dd5 Fix typo in comment 2019-02-06 14:32:49 -05:00
yottalogical
3201550d40 Add link to blockchain explorer for Chain.so (Dogecoin) 2019-02-06 14:23:27 -05:00
OutCast3k
d88ec3db4b update sha1sum file 2018-12-28 23:49:01 +00:00
OutCast3k
530453a701 improvement to previous timelock address bug fix 2018-12-28 23:42:00 +00:00
OutCast3k
194df37d56 bug fix for time locked addresses. transactions not being built correctly (no loss of funds!!!!) 2018-12-28 23:33:42 +00:00
Ivy Dong
87461b58b8 remove redundant quotation marks 2018-12-16 20:04:27 +08:00
OutCast3k
739aee3c0f couple of bug fixes with transaction building 2018-08-26 20:53:25 +00:00
OutCast3k
fd81fafdff segwit signing bug fix 2018-06-19 15:45:21 +00:00
OutCast3k
9bede2aef4
Update sha1sum 2018-06-17 11:37:21 +01:00
OutCast3k
37f4395d9f wallet segwit spend bugfix 2018-06-17 09:22:44 +00:00
OutCast3k
5a65a77bd2 added a bech32 address to the #wallet section of coinb.in 2018-06-11 16:23:18 +00:00
OutCast3k
734e6b2eeb removed some coded that was no longer needed 2018-05-27 12:10:49 +00:00
OutCast3k
90a309d4b4 first stage of adding bech32 support added to coinb.in 2018-05-27 11:49:09 +00:00
OutCast3k
abd2191c50 updated readme 2018-01-15 19:05:45 +00:00
OutCast3k
bb8abb4ded some changes and bug fixes to the fees page 2018-01-15 18:58:17 +00:00
OutCast3k
40d514e0f0 couple of minor updates 2018-01-11 16:54:27 +00:00
OutCast3k
c3b1a47199 few minor changes, plus the wallet now enables rbf by default 2018-01-06 16:11:20 +00:00
OutCast3k
ed7d5d6411 small bugfix so that the #wallet inputs/outputs are properly set on the #fees page 2018-01-04 10:42:45 +00:00
OutCast3k
10e083bd89 add css changes 2018-01-03 19:30:36 +00:00
OutCast3k
56fa7b5139 various tweaks made to the #fees page 2018-01-03 19:27:53 +00:00
OutCast3k
e85276dd89 added css changes 2018-01-01 18:58:33 +00:00
OutCast3k
c843685662 added new #fee section to coinb.in 2018-01-01 18:53:23 +00:00
OutCast3k
64af126bc5 added segwit redeemscript to wallet, fixed typo, added links 2017-12-09 09:56:06 +00:00
oliverdorn
b997751791
Added functionality for printing Paper Wallet 2017-11-25 00:53:00 +01:00
oliverdorn
9bccc5c512
Added Buttons for printing Paper Wallets
Added Buttons for printint Paper Wallets for generated Legacy- and SegWit-Adresses
2017-11-25 00:49:16 +01:00
OutCast3k
217897285e bug fix for issue #118 (do not generate a multisig address when the redeemscript is too large >520bytes) 2017-10-04 08:35:51 +00:00
OutCast3k
b1603821da at the risk of upsetting some users segwit addresses have now been enabled by default in the #wallet section, with the option to switch between legacy and segwit very easily. 2017-10-01 18:06:57 +00:00
btc
c2ef949dd0 segwit spending bug fixes 2017-09-21 13:38:48 +00:00
btc
ecb18acb0f code was missing for the segwit feature from the #wallet section 2017-09-20 09:56:20 +00:00
OutCast3k
4a4f302fe6 added segwit support to the wallet section of #coinb.in 2017-09-16 09:03:10 +00:00
OutCast3k
4afee020b0 Update sha1sum
updated sha1sum
2017-09-12 06:25:00 +01:00
OutCast3k
2e0422656d removed blockr.io links as its closed down 2017-09-11 19:52:05 +00:00
OutCast3k
6c480a1102 segwit support added 2017-09-10 13:18:31 +00:00
OutCast3k
d5fe5ea828 increase to default transaction fee (and donations) on the #wallet section, as well as links to bitcoinfees.21.co to assist with choosing a better transaction fee 2017-03-14 20:51:51 +00:00
OutCast3k
52b206c7d6 added a donation button to the #newTransaction page 2017-03-13 21:12:06 +00:00
OutCast3k
1f9d9e97c2 better sighash support for the gui, plus bug fixes and testing 2017-02-17 15:38:24 +00:00
OutCast3k
d12b9d9072 final sighash tweak 2017-02-10 15:16:44 +00:00
OutCast3k
6c22adaa5a added extra sighash support for signing 2017-02-10 13:05:58 +00:00
OutCast3k
605a6df343 Updated coinbin.js
Fixed a bug, which was reported on https://www.reddit.com/r/Bitcoin/comments/5kowvt/psa_coinbin_appears_to_be_trying_to_steal_coins/ that appears to have caused incorrect HD key pairs to be generated in certain situations, because 'coinjs.compressed = true;' was not always being set when the user entered a HD onto the #verify tab.
2016-12-28 10:01:16 +00:00
OutCast3k
60efbb5174 updated sha1sum file due to recent edits 2016-12-28 09:54:06 +00:00
OutCast3k
1b111b335d updated coinbin.js
Fixed a bug, which was reported on https://www.reddit.com/r/Bitcoin/comments/5kowvt/psa_coinbin_appears_to_be_trying_to_steal_coins/ that appears to have caused incorrect HD key pairs to be generated in certain situations, because 'coinjs.compressed = true;' was not always being set when the user entered a HD onto the #verify tab.
2016-12-28 09:50:27 +00:00
OutCast3k
24028a001d Update sha1sum 2016-12-21 11:57:17 +00:00
OutCast3k
f4c2b3d425 updated coinbin.js
fixed a small bug in the #wallet section of coinb.in
2016-12-21 11:56:18 +00:00
OutCast3k
20547ff133 Update sha1sum 2016-11-25 19:15:43 +00:00
OutCast3k
858774b640 fixed a bug introduced in previous commit 2016-09-13 03:36:49 +00:00
OutCast3k
21ecedaa48 added full carboncoin support 2016-09-11 18:40:18 +00:00
OutCast3k
3c1e957519 fixed a timelocked address bug as reported on issue 60 2016-09-06 07:06:36 +00:00
OutCast3k
44e6f5c639 update sha1sum 2016-09-05 13:32:05 +00:00
OutCast3k
d176899774 dogecoin + chainso bugfix 2016-09-05 13:30:40 +00:00
OutCast3k
970cd756ec added better sighash support as well as (basic) support for carboncoin 2016-09-04 20:54:15 +00:00
OutCast3k
b6dfa6b822 Merge pull request #59 from tomcarbon/master
Adding dogecoin support to coinb.in
2016-09-04 14:57:37 +01:00
Tom Carbon
85c9267379 Add files via upload 2016-09-03 22:20:09 -07:00
Tom Carbon
0c3530590f Add files via upload 2016-09-03 22:19:45 -07:00
OutCast3k
74a0fad4d2 Merge pull request #53 from DanielWeigl/master
Error in serialization for nLockTime values
2016-08-04 14:04:34 +01:00
OutCast3k
67f9c1f926 fixed a broadcasting issue 2016-07-28 23:40:31 +00:00
OutCast3k
67bd6e927c small bug fixes + enabled testnet via the #settings page 2016-07-28 22:36:27 +00:00
OutCast3k
284c6361e7 Merge pull request #54 from DanielWeigl/hodlheight
Allow HODL transaction to define nLockTime in blockheight or date/time
2016-07-28 22:56:03 +01:00
Daniel Weigl
347ccf4947 Allow HODL transaction to define nLockTime in blockheight or date/time
it still has a small UX quirks: the radio buttons dont get restored correctly after page reload
2016-07-03 19:34:59 +02:00
Daniel Weigl
8ac9f4207d Allow HODL transaction to define nLockTime in blockheight or date/time
it still has a small UX quirks: the radio buttons dont get restored correctly after page reload
2016-07-03 19:33:24 +02:00
Daniel Weigl
3ba79f0e3d Error in serialization for nLockTime values
if nLockTime is 1234(decimal) -> thats 4D2(hex) -> The current code splits it beginning from the end into bytes -> [4d, 02], but it should be [4, d2].

Error only occurs if one of the bytes is <16
2016-07-03 19:25:02 +02:00
OutCast3k
cad1f6e98b update readme and sha1sum files 2016-06-08 22:27:13 +00:00
OutCast3k
e818fc738d Merge pull request #51 from bip32JP/betterFeeWarn
Added fluid fee to catch smaller mistakes as well.
2016-06-08 23:23:09 +01:00
bip32JP
0a94fb64ef Added fluid fee to catch smaller mistakes as well. 2016-05-26 21:32:52 +09:00
OutCast3k
e3fff74690 coinb.in now supports replace by fee (RBF) transactions 2016-05-21 15:47:10 +00:00
OutCast3k
0154514309 bug fix to blockcyphers broadcasting option, plus added a buy bitcoin button on the wallet page 2016-05-09 10:02:51 +00:00
OutCast3k
1e8773c195 added blockcypher.com to list of broadcast providers 2016-03-21 13:34:19 +00:00
OutCast3k
1ea47f6ff5 this commit makes it obvious as to how to add new providers (although this could change soon) more providers to be added in the next commit. 2016-03-15 23:47:40 +00:00
OutCast3k
b943cbd6de add missing date and time placeholder from the time locked address page 2016-03-03 13:23:36 +00:00
OutCast3k
53c48af90c bug fix 2016-02-26 19:05:45 +00:00
OutCast3k
6970a07d60 bug fixes, credit to ibblondon and nxtchg. thanks 2016-02-25 23:09:43 +00:00
OutCast3k
695947b02d updated the #wallet section of the site so that when a transaction fails to broadcast due to a server side error it displays it in a box that can be manually processed elsewhere 2016-02-09 23:52:55 +00:00
OutCast3k
0a8bb6f33a update sha1sum 2016-02-09 23:29:29 +00:00
OutCast3k
27c9bff17e add extra validation to prevent invalid public keys being used. (as per issue 39) 2016-02-09 23:27:34 +00:00
OutCast3k
c276998687 increased default fee on #wallet section of coinb.in 2015-12-30 00:17:36 +00:00
OutCast3k
4f16149a26 updated sha1sum file 2015-12-29 20:11:49 +00:00
OutCast3k
7bfacd51b1 fixed a small interface issue with the input feilds on the verify tab for hodl addresses 2015-12-29 20:06:03 +00:00
OutCast3k
1da38e46f7 small interface bugfix 2015-12-29 16:36:27 +00:00
OutCast3k
133a5d2858 few minor gui changes to the "New Time Locked Address" section 2015-12-29 16:20:53 +00:00
OutCast3k
a9cfa44c44 Merge pull request #37 from thelink2012/test-time
Simple Hodl Address
2015-12-29 14:27:09 +00:00
Denilson M. Amorim
cedc6dddaf Fix endianess of checklocktimeverify 2015-12-29 00:00:11 -03:00
Denilson M. Amorim
d53c236ec3 Set #nLockTime automatically 2015-12-27 01:15:47 -03:00
Denilson M. Amorim
c8577e03be Simple Hodl Address 2015-12-27 00:37:51 -03:00
OutCast3k
9a669885b3 Merge pull request #32 from itscory/patch-1
fixed issue with copying the script URL
2015-11-16 13:21:37 +00:00
itscory
8652fe789d made copying the scriptUrl easier
I noticed, at least on Firefox, that it is impossible to highlight and copy the script URL. I fixed this by changing the "disabled" attribute to "readonly."
2015-11-15 13:35:53 -05:00
OutCast3k
6b39b86447 updated the #broadcast page to use jquerys POST request over the GET request that was being used to handle larger transactions 2015-09-16 11:41:18 +00:00
OutCast3k
902370679f update sha1sum and readme 2015-09-12 19:17:21 +00:00
OutCast3k
ab395a82f2 lots of of small changes; bug fixes, extra validation, warning of large fee, a mediation section and more 2015-09-12 18:38:34 +00:00
OutCast3k
fe141b0b8a removed the mention of google analytics from the about page as its no longer being used 2015-08-31 12:20:36 +01:00
OutCast3k
e33b2dc58e Merge pull request #25 from dabura667/findunconf
Fetch unconfirmed utxos as well
2015-08-31 11:45:21 +01:00
dabura667
a62a822b71 Fetch unconfirmed utxos as well 2015-08-30 10:51:42 +09:00
OutCast3k
91ee89282f Merge pull request #23 from dasource/master
Add ShadowCash
2015-08-17 12:08:28 +01:00
dasource
42391aba8e Add ShadowCash 2015-08-16 22:34:40 +01:00
OutCast3k
8e0742d64c minor bug fix from previous commit 2015-08-14 22:09:51 +00:00
OutCast3k
a1c3c60244 added extra support for altcoins, litecoin beta added via #settings page 2015-08-14 21:07:19 +00:00
OutCast3k
004de1f318 added localbitcoins.com trading link to the about page 2015-07-27 18:13:09 +00:00
OutCast3k
6f8cd22d5f increased the amount of bytes allowed when using op_return from 40 to 80 2015-07-27 18:04:41 +00:00
OutCast3k
cacc30cc95 update sha1sum file 2015-07-27 18:00:30 +00:00
OutCast3k
d2f1d3a5d5 fixed a typo (thanks for pointing that out Injust) 2015-07-27 17:58:13 +00:00
OutCast3k
1c3e81bfd2 update coinbin.js as it wasn't allowing multisig addresses to be added to new transactions 2015-07-03 18:47:58 +01:00
OutCast3k
cf71efcf59 Merge pull request #15 from bulldozer2003/master
display base58 address for redeem script
2015-06-29 07:29:41 +01:00
OutCast3k
92de202ed0 update sha1sum file 2015-06-23 23:15:57 +00:00
OutCast3k
6e821cf53a fixed a bug with the settings page 2015-06-23 23:12:09 +00:00
OutCast3k
85ec366c6e corrected testnet address prefix 2015-06-23 23:05:28 +00:00
OutCast3k
717f5cc7ef corrected donation address 2015-06-23 23:00:10 +00:00
bulldozer2003
da2d20f477 display base58 address in addition to public key when decoding redeem script 2015-06-19 12:15:46 -05:00
19 changed files with 3567 additions and 341 deletions

View File

@ -1,9 +1,9 @@
coinbin
=======
A Open Source Browser Based Bitcoin Wallet. Version 1.2 beta by OutCast3k
A Open Source Browser Based Bitcoin Wallet. Version 1.7 beta by OutCast3k
Live version available at http://coinb.in/ or http://4zpinp6gdkjfplhk.onion
Live version available at http://coinb.in/ or coinbin3ravkwb24f7rmxx6w3snkjw45jhs5lxbh3yfeg3vpt6janwqd.onion
Github URL: https://github.com/OutCast3k/coinbin/
@ -24,7 +24,13 @@ Coinb.in supports a number of key features such as:
- Brain wallet support.
- Compatible with bitcoin-qt
- An offical .onion address for tor users.
- Offline qrcode creator and scanning tool
- HD (bip32) support
- Offline qrcode creator and scanning tool.
- HD (bip32) support.
- Supports altcoins such as litecoin.
- Replace by fee (RBF) Support.
- Segwit Support.
- Bech32 address support.
- Fee calculator - https://coinb.in/#fees
- Transaction rebuild support for RBF and double spending.
Donate to 1CWHWkTWaq1K5hevimJia3cyinQsrgXUvg to see more development!
Donate to 33tht1bKDgZVxb39MnZsWa8oxHXHvUYE4G to see more development!

5
css/bootstrap-datetimepicker.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -3,6 +3,7 @@ html, body {
}
body {
background-image: url("../images/background.jpg");
background-color:#ffffff;
}
@ -24,3 +25,97 @@ body {
background-color: #f5f5f5;
padding-top: 20px;
}
.alert {
overflow: hidden;
-ms-text-overflow: ellipsis;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
display: block;
}
#fees .txi_regular {
background: #d3d3d3;
}
#fees .txi_segwit {
background: #bae1ff;
}
#fees .txi_multisig {
background: #baffc9;
}
#fees .txi_hodl {
background: #ffdfba;
}
#fees .txi_unknown {
background: #ffb3ba;
}
#fees .txo_p2pkh {
background: #E679C8;
}
#fees .txo_p2sh {
background: #FAFE92;
}
#fees .txinputs {
}
#fees .txoutputs {
}
.hideOverflow {
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
#fees .slider {
-webkit-appearance: none;
appearance: none;
width: 100%;
height: 30px;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
border: 2px dotted #c3c3c3;
}
#fees .sliderbtn {
height: 30px;
width: 30px;
padding: 0px;
margin: 0px;
border: 0px;
}
#fees .slider:hover {
opacity: 1;
}
#fees .slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 32px;
height: 32px;
border: 0;
background: url('https://coinb.in/images/btc32x.png');
cursor: pointer;
}
#fees .slider::-moz-range-thumb {
width: 32px;
height: 32px;
border: 0;
background: url('https://coinb.in/images/btc32x.png');
cursor: pointer;
}
#fees .total {
font-size: 100px;
}

BIN
images/background.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
images/bitrefill16x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

BIN
images/btc32x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/changelly16x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

BIN
images/coinbin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

125
images/coinbin.svg Normal file
View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 3080 952" enable-background="new 0 0 3080 952" xml:space="preserve">
<path fill="#695F3D" d="M131,263c0,0,249.3,150.4,475.5-6.7C606.4,256.2,401.2,87.1,131,263z"/>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="556.3605" y1="430.2783" x2="113.3624" y2="47.5836">
<stop offset="0" style="stop-color:#747573"/>
<stop offset="0.1084" style="stop-color:#E7E8E7"/>
<stop offset="0.3054" style="stop-color:#C5C6C4"/>
<stop offset="0.5025" style="stop-color:#FFFFFF"/>
<stop offset="0.6798" style="stop-color:#A7A9A6"/>
<stop offset="0.8571" style="stop-color:#DADADA"/>
<stop offset="1" style="stop-color:#686967"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M286.3,171.8c-143.1,19.6-190.1,84.5-190.1,84.5l26.7,45.8l95.1,80L579.8,367l53.9-110.7
c-7.4-18.7-39.2-36-75.3-50.3C472.1,171.9,378.2,159.2,286.3,171.8z M146,256.2c252.8-143.2,433.7,0,433.7,0
C383.8,387.9,146,256.2,146,256.2z"/>
</g>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="96.1755" y1="519.8702" x2="633.6877" y2="519.8702">
<stop offset="0" style="stop-color:#747573"/>
<stop offset="0.1084" style="stop-color:#E7E8E7"/>
<stop offset="0.3054" style="stop-color:#C5C6C4"/>
<stop offset="0.5025" style="stop-color:#FFFFFF"/>
<stop offset="0.6798" style="stop-color:#A7A9A6"/>
<stop offset="0.8571" style="stop-color:#DADADA"/>
<stop offset="1" style="stop-color:#686967"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M96.2,256.2l55.7,466.2c0,0,187.9,137.4,438.4,0l43.5-466.2c0,0-58.3,86.1-279.2,80.9
C354.5,337.1,145.8,332.8,96.2,256.2z"/>
<path fill="#E3B852" d="M193.5,277.6c0,0-53.8-94.7,73.6-102.8c0,0,104.3,6.2,94,139.5C361.1,314.3,258.2,307.8,193.5,277.6z"/>
<path fill="#E3B852" d="M385.8,314.3c0,0-14.6-96.1,93.6-110.3c34.8-4.6,76,21.6,78.9,57.5c0.2,2.5,0.3,5.1,0.2,7.8
C558.6,269.4,501.5,314.1,385.8,314.3z"/>
<path fill="#E3B852" d="M311.6,190.3c0,0,10.6-50.9,54.2-47.3c31.6,2.6,58.1,27.7,61.1,59.3c0.9,9.8-0.1,20.8-4.9,32.5l-16.2,54.4
c0,0-56.5,22.6-69.6-11.3L311.6,190.3z"/>
<path fill="#CDA547" d="M226,289.2c0,0-50.7-94.7,30.2-89.5c0,0,77.1,0.7,86.8,113C343,312.7,234.3,300,226,289.2z"/>
<path fill="#CDA547" d="M412.2,312.7c0,0-16.8-71,64.4-82c0,0,55.8-1.4,41.8,58.2C518.4,288.9,447.6,317,412.2,312.7z"/>
<g>
<path fill="#F8E2A3" d="M260,297.6l-0.4-11.1l-1.1-0.7l-13.8,0.4c0-2.7,0.3-5.1,0.6-7.5c1.9-0.3,3.5-0.3,5.2-0.4
c2.2-0.1,3.3-1.3,3.2-3.4l-1.2-31c-0.1-2.2-1.7-3.8-4.1-3.9l-1.4,0c-1.2,0-2.3,0.1-3.5,0.1c-1.2-2.3-1.3-4.4-1.4-6.5l6.4-0.6
l7.6-0.2l1.3-1.3l-0.4-10.2c2.4-0.3,4.5-0.4,6.6-0.5l0.4,4.6l0.2,6.3l1.1,0.7c1.7-0.1,3.2-0.1,4.8-0.1l1-1.1l-0.4-10.4
c2.3-0.4,4.3-0.4,6.3-0.5l0.7,5.4l0.2,5c0,1.2,0.7,1.3,1.5,1.4c4.6,0.3,8,1.1,11,2.7c4,2.1,5.6,5.1,6.2,7.3c0.9,3,0.5,6.2-1,8.8
c-0.9,1.5-2.1,2.7-3.7,3.7l-0.4,0.1l-0.8,0.7c1.4,1,2.8,1.6,4,2.4c4,2.9,6.3,6.1,6.9,9.9c0.8,4.6-1.3,10.8-7.7,14.3
c-3.5,1.9-7.6,2.9-12.6,3.1l-1.3,1.4l0.4,10.3c-2.4,0.3-4.4,0.4-6.4,0.5l-0.7-6l-0.2-5.1l-1.1-0.7c-1.6,0.1-3.1,0.1-4.6,0.1
l-1.2,1.2l0.4,10.5c-2.4,0.4-4.5,0.5-6.6,0.6l-0.1,0L260,297.6z M273.3,261c-1.9,0-3.8,0.1-5.7,0.2l-1.9,0.4l0.2,9.7l0.2,4.4
c0.1,1.9,0.3,2.1,2.3,2.1l3,0c2.4,0,5.2-0.1,8-0.7c2.4-0.5,4.1-1.3,5.5-2.4c2.1-1.8,3.3-4.4,2.9-6.8c-0.4-2.3-2-4.2-4.6-5.3
c-1-0.4-2.1-0.8-3.2-1l-2.3-0.3C276.3,261,274.8,261,273.3,261z M271.8,239.5c-1.7,0-3.4,0.1-5.1,0.2l-1.9,1l0.6,13.6l1,0.6l5.4,0
c2.6-0.1,5.5-0.4,8.2-1.9c1.7-1,3.1-2.6,3.5-4.5c0.4-1.6,0.2-3.3-0.7-4.8c-1.6-2.6-4.3-3.4-6.5-3.9
C274.9,239.6,273.4,239.5,271.8,239.5z"/>
</g>
<g>
<path fill="#F8E2A3" d="M462.3,302.9l0-3.7l-0.1-3.7l-5.9-0.8l-4.8,0.1l0.5-5.2c1.3-0.1,2.4-0.1,3.5-0.2c1.7-0.1,2.5-1,2.4-2.6
l-0.8-22c-0.1-1.7-1.3-2.8-3-2.9l-3.3,0.1c-0.9-1.5-0.9-3-1-4.4l4.3-0.3l5.5-0.2l1-1.1l-0.3-7.2l4.5-0.2l0.3,7.3
c2,0.8,3.1,0.8,4.2,0.8c0,0,0.1,0,0.1,0l0.7-4.5l-0.1-3.7c1.5-0.1,2.9-0.2,4.3-0.3l0.4,3.7l0.1,3.9l1.1,0.7
c3.2,0.2,5.7,0.8,7.8,1.9c2.8,1.4,3.9,3.6,4.3,5.1c0.6,2.1,0.4,4.3-0.7,6.1c-0.6,1-1.5,1.9-2.6,2.6c0.3,1.5,1.2,1.9,2,2.5
c2.8,2,4.4,4.3,4.8,6.9c0.5,3.2-0.9,7.6-5.4,10c-2.5,1.3-5.4,2-8.8,2.2l-0.4,0l-0.7,1.1l0.3,7.3l-4.4,0.2l-0.3-3.8l-0.1-3.7
l-4.2-0.8l-0.8,4.7l0.1,3.7c-1.6,0.1-3.1,0.2-4.5,0.3H462.3L462.3,302.9z M471.6,277c-1.4,0-2.8,0.1-4.3,0.1l-1.3,1l0.4,9.4
c0.1,1.4,0.2,1.6,1.7,1.6l2,0c1.9,0,3.9-0.1,5.9-0.5c1.7-0.4,2.9-0.9,3.9-1.7c1.5-1.3,2.4-3.2,2.1-4.9c-0.3-1.7-1.4-3.1-3.3-3.9
c-0.7-0.3-1.5-0.5-2.3-0.7l-1.6-0.2C473.8,277,472.7,277,471.6,277z M470.6,261.8c-1.1,0-2.3,0.1-3.5,0.1l-0.4,0l-1.2,0.8l0.4,9.4
l1.7,0.8l3,0c1.8-0.1,4-0.3,5.9-1.3c1.3-0.7,2.2-1.9,2.6-3.2c0.3-1.2,0.1-2.4-0.5-3.5c-1.1-1.8-3.1-2.5-4.6-2.8
C472.8,261.8,471.7,261.8,470.6,261.8z"/>
</g>
<path fill="#CDA547" d="M338.5,195.4c0,0,8.7-47.5,50.4-16.8c0,0,27.2,26.1,0,71.9c0,0-6.9,8.9-12.8,15.4c-3.4,3.8-9.3,3.8-12.9,0.2
C352.8,255.6,334.2,231.3,338.5,195.4z"/>
<g>
<path fill="#F8E2A3" d="M360.9,242.2l-0.2-7.5l-6.8-0.7l-3.9,0.1l0.6-5.2c1.3-0.1,2.4-0.1,3.5-0.2c1.6-0.1,2.4-1,2.4-2.5l-0.8-22
c-0.1-1.7-1.3-2.8-3-2.9c-0.4,0-2.8,0-3.5,0.1l-0.8-4.5l4.3-0.3l5.5-0.2l1-1.1l-0.3-7.2l4.5-0.2l0.3,7.3c2,0.8,3.1,0.8,4.1,0.8
c0,0,0.1,0,0.1,0l0.7-3.8l-0.2-4.4l4.4-0.3l0.4,3.4l0.1,4.2l1.1,0.7c3.2,0.2,5.7,0.8,7.8,1.9c2.8,1.4,3.9,3.6,4.3,5.1
c0.6,2.1,0.4,4.3-0.7,6.1c-0.6,1-1.5,1.9-2.6,2.6c0.5,1.6,1.3,2,2,2.5c2.8,2,4.4,4.3,4.8,6.9c0.5,3.2-0.9,7.6-5.4,10
c-2.5,1.3-5.4,2-8.8,2.2l-1.1,1.1l0.3,7.3c-1.6,0.1-3,0.1-4.4,0.2l-0.4-5l-0.1-2.4l-4.1-0.8l-0.8,4.7l0.1,3.7
c-1.6,0.1-3.1,0.2-4.5,0.3H360.9L360.9,242.2z M366.2,216.5l-1.3,0.3l0.2,9.8c0.1,1.7,0.3,1.9,1.8,1.9l2.1,0c1.8,0,3.8-0.1,5.8-0.5
c1.7-0.4,2.9-0.9,3.9-1.7c1.5-1.3,2.4-3.2,2.1-4.9c-0.3-1.7-1.4-3.1-3.3-3.9c-0.7-0.3-1.5-0.5-2.3-0.7l-1.6-0.2
c-1.1-0.1-2.2-0.2-3.3-0.2C369,216.3,366.2,216.5,366.2,216.5z M369.3,201.1c-1.2,0-2.4,0.1-3.6,0.1l-0.1,0.1l-1.4,0.7l0.4,9.3
l1.4,0.8l3.2,0c1.9-0.1,4-0.3,5.9-1.3c1.3-0.7,2.2-1.9,2.6-3.2c0.3-1.2,0.1-2.4-0.5-3.5c-1.1-1.9-3.1-2.5-4.6-2.8
C371.5,201.2,370.4,201.1,369.3,201.1z"/>
</g>
<g>
<path fill="#686967" d="M364.5,789.4c-102.8,0-176.6-39-204.6-56.5c-7.6-4.7-12.5-12.6-13.6-21.6L93.2,261.4l3-5.2l58.4,454
c0.8,6.5,4.3,12.1,9.7,15.5c44.1,27.7,204,109.3,411.7-0.4c6.3-3.3,10.7-9.9,11.4-17.2l46.3-451.9l4.2,5.2L595.7,709
c-1,10-7,19.2-15.8,23.8C499.9,775,426.9,789.4,364.5,789.4z"/>
</g>
<path fill="#CDA547" d="M2290.3,592.5c0-25.4,19.1-42.9,46.4-42.9c26.8,0,45.4,17.1,45.9,42.9c0,24.5-18.5,42.5-46.9,42.5
C2309.3,634.9,2290.3,616.9,2290.3,592.5z"/>
<g>
<g>
<path fill="#5F615E" d="M943.1,637.9c-94.7,0-153.5-50.6-153.5-132.1c0-82.3,66.8-137.6,166.3-137.6c22.6,0,47.3,3.4,65.7,9
l-12.6,53.3c-13.4-4.5-29.7-6.8-48.8-6.8c-25.5,0-47.8,8.4-62.9,23.8c-14,14.2-21.3,33.3-21,55.1c0,47.1,34.5,78.8,85.7,78.8
c19,0,35.3-2.4,49.7-7.3l9.5,52.9C1003.4,633.7,973.4,637.9,943.1,637.9z"/>
</g>
<g>
<path fill="#5F615E" d="M1207.3,638.5c-89.6,0-149.9-53.5-149.9-133.2c0-83.6,61-137.6,155.3-137.6c88.2,0,147.4,53.3,147.4,132.7
C1360.2,595.8,1283.4,638.5,1207.3,638.5z M1209.7,418.8c-48,0-65.1,45.4-65.1,84.3c0,51.2,25.5,84.3,65.1,84.3
c38.4,0,63.2-33.3,63.2-84.8C1273,463.9,1256.4,418.8,1209.7,418.8z"/>
</g>
<g>
<path fill="#5F615E" d="M1782.6,632.5V488.9c0-39.9-18.1-61.9-51-61.9c-22.9,0-42.1,12.5-51.3,33.6c-2.3,5.2-3.4,12.3-3.4,22.4
v149.5h-84.2V455.1c0-30.8-1-57.1-2.2-80.9h72.3l4.3,37.1h7.7l1.3-1.8c13.9-20,44.5-41.3,88.5-41.3c65.1,0,102.4,40.4,102.4,110.8
v153.4H1782.6z"/>
</g>
<g>
<path fill="#5F615E" d="M2115.7,638.5c-26.9,0-63.7-7.1-86-41.2l-1.2-1.9h-6l-1.6,3.8l-3.3,33.3h-70.3c1.1-17.7,2.2-47.1,2.2-75.4
V253.8h84.2v152.1h6.2l2.5-1.6c17.9-23.2,48.7-36,86.8-36c32.8,0,61.3,11.3,82.5,32.7c23.6,23.8,35.9,57.6,35.6,97.7
C2247.3,594.7,2179.1,638.5,2115.7,638.5z M2093.8,423.7c-27.3,0-51.8,18.5-58.2,44c-1.3,5.3-1.9,10.7-1.9,16.3v39.2
c0,5.8,0.7,11.1,2,15.8c7,24.9,30.9,42.3,58.2,42.3c42.6,0,68.1-29.7,68.1-79.4C2161.9,453.7,2135.8,423.7,2093.8,423.7z"/>
</g>
<g>
<path fill="#5F615E" d="M2807.8,632.5V488.9c0-39.9-18.1-61.9-51-61.9c-22.9,0-42.1,12.5-51.3,33.6c-2.3,5.2-3.4,12.3-3.4,22.4
v149.5h-84.2V455.1c0-30.8-1-57.1-2.2-80.9h72.3l4.3,37.1h7.7l1.3-1.8c13.9-20,44.5-41.3,88.5-41.3c65.1,0,102.4,40.4,102.4,110.8
v153.4H2807.8z"/>
</g>
<g>
<rect x="1430.2" y="258.7" fill="#5F615E" width="76" height="73.4"/>
</g>
<g>
<rect x="1425.5" y="373.5" fill="#5F615E" width="80.7" height="257.2"/>
</g>
<g>
<rect x="2473.9" y="258.7" fill="#5F615E" width="76" height="73.4"/>
</g>
<g>
<rect x="2469.2" y="373.5" fill="#5F615E" width="80.7" height="257.2"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
images/hodlhodl16x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

File diff suppressed because it is too large Load Diff

9
js/bootstrap-datetimepicker.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

211
js/collapse.js Normal file
View File

@ -0,0 +1,211 @@
/* ========================================================================
* Bootstrap: collapse.js v3.3.4
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
this.transitioning = null
if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.3.4'
Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = {
toggle: true
}
Collapse.prototype.dimension = function () {
var hasWidth = this.$element.hasClass('width')
return hasWidth ? 'width' : 'height'
}
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
var activesData
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
if (actives && actives.length) {
activesData = actives.data('bs.collapse')
if (activesData && activesData.transitioning) return
}
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (actives && actives.length) {
Plugin.call(actives, 'hide')
activesData || actives.data('bs.collapse', null)
}
var dimension = this.dimension()
this.$element
.removeClass('collapse')
.addClass('collapsing')[dimension](0)
.attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1
var complete = function () {
this.$element
.removeClass('collapsing')
.addClass('collapse in')[dimension]('')
this.transitioning = 0
this.$element
.trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
this.$element
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}
Collapse.prototype.hide = function () {
if (this.transitioning || !this.$element.hasClass('in')) return
var startEvent = $.Event('hide.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
var dimension = this.dimension()
this.$element[dimension](this.$element[dimension]())[0].offsetHeight
this.$element
.addClass('collapsing')
.removeClass('collapse in')
.attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1
var complete = function () {
this.transitioning = 0
this.$element
.removeClass('collapsing')
.addClass('collapse')
.trigger('hidden.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
this.$element
[dimension](0)
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}
Collapse.prototype.toggle = function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
}
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.collapse
$.fn.collapse = Plugin
$.fn.collapse.Constructor = Collapse
// COLLAPSE NO CONFLICT
// ====================
$.fn.collapse.noConflict = function () {
$.fn.collapse = old
return this
}
// COLLAPSE DATA-API
// =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var $this = $(this)
if (!$this.attr('data-target')) e.preventDefault()
var $target = getTargetFromTrigger($this)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
Plugin.call($target, option)
})
}(jQuery);

7
js/moment.min.js vendored Normal file

File diff suppressed because one or more lines are too long

59
js/transition.js Normal file
View File

@ -0,0 +1,59 @@
/* ========================================================================
* Bootstrap: transition.js v3.3.4
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery);

40
sha1sum
View File

@ -1,28 +1,40 @@
---- Version 1.2 2015.07.23 ----
e6810907c901e6bd34a28735a68850936f0823b8 ./js/ellipticcurve.js
9ba5ede3d7f9d4c8fd623395f196adfdcf7e970f ./js/crypto-min.js
---- Version 1.7 2021.10.23 ----
77e4519962e2f6a9fc93342137dbb31c33b76b04 ./js/aes.js
0ce26da5ef686d4ece91acd6cb6506559e11ab07 ./js/qcode-decoder.min.js
be17ca7c834204bff711f582e41f76c06d472bac ./js/jsbn.js
0700fc9ad2e39adeca0b50614bb3d327fb49f609 ./js/crypto-sha256.js
3a09a8fc0cfe828b57fc798d668234d0490ee1a6 ./js/bootstrap-datetimepicker.min.js
253711c6d825de55a8360552573be950da180614 ./js/bootstrap.min.js
61095a685a6bb343fc5dcdd7cf3e458bfb3aa0a4 ./js/coinbin.js
5f83da7e2fce8c55a711a768970899c2300dcd46 ./js/coin.js
988565bc2cb402d63ed5c5fd7ff47c4278efc2c5 ./js/collapse.js
9ba5ede3d7f9d4c8fd623395f196adfdcf7e970f ./js/crypto-min.js
f7c09f2f5a721371e7d478050119f7e2d58e3ef9 ./js/crypto-sha256-hmac.js
0700fc9ad2e39adeca0b50614bb3d327fb49f609 ./js/crypto-sha256.js
e6810907c901e6bd34a28735a68850936f0823b8 ./js/ellipticcurve.js
ae49e56999d82802727455f0ba83b63acd90a22b ./js/jquery-1.9.1.min.js
be17ca7c834204bff711f582e41f76c06d472bac ./js/jsbn.js
ce4fa351a2e62accf7fad77110fa4ddb09a324bf ./js/moment.min.js
0ce26da5ef686d4ece91acd6cb6506559e11ab07 ./js/qcode-decoder.min.js
ad038e1f39646b68ae666324ed4c2882a8c42474 ./js/qrcode.js
64eb4ea5c882f8bce3e1885bf00728455f1c2f4c ./js/ripemd160.js
114089ef2a3feb6d4db4f9cabcb186d7750d5884 ./js/sha512.js
3ff26f7ca616b01742a25f9aa304bdb653ce4a4d ./js/coin.js
cb26a4ae2216754f3089daaf7605e3ac41410126 ./js/coinbin.js
ae49e56999d82802727455f0ba83b63acd90a22b ./js/jquery-1.9.1.min.js
5f570018ed044eafd464f7e0ab1783b966224055 ./LICENCE
506c40035e0d22560478629434d0fea27643b77a ./js/transition.js
5f570018ed044eafd464f7e0ab1783b966224055 ./LICENSE
255c58c17e63eb54adb3cd02b5c06224c67fc364 ./css/bootstrap-datetimepicker.min.css
ed29315e0ffb3f14382431f2724235bf67f44eb3 ./css/bootstrap.min.css
fc6b4268fbd57ad95d2b41a1d4d6866f222fbdb2 ./css/bootstrap-theme.min.css
8297b8f4d686ec6c65981077514975e06ce41812 ./css/style.css
8ac24915d59cef71c542e7cb7d7e153f560cba1f ./images/coinbin.gif
7e3254913742a0b71d5608873047c1a48e82b9be ./css/style.css
5ca7213f06ac542b72b0293aaf861a476fe9968d ./images/background.jpg
2e3217a3f3b7c2fb30562ab9a4ef9a407ae81897 ./images/btc32x.png
2c95cc283e4d843655ea111a7e4072c16ab56b7b ./images/bitrefill16x.png
b6e8cb7bc6e7a9cb167e65696439891fc06ded6d ./images/changelly16x.png
774cf795e16b33c5d67b5ad0ae95692c3ce49fce ./images/coinbin.png
f4fbd6f11bf1d81b0fdba3bfb83799fda6c46c67 ./images/coinbin.svg
7645c6b897dc845ed681fad0812b424063374494 ./images/hodlhodl16x.png
f2af060f1cadbc9065c8c465c648dc01be67cc12 ./images/loader.gif
86b6f62b7853e67d3e635f6512a5a5efc58ea3c3 ./fonts/glyphicons-halflings-regular.eot
ca35b697d99cae4d1b60f2d60fcd37771987eb07 ./fonts/glyphicons-halflings-regular.woff2
de51a8494180a6db074af2dee2383f0a363c5b08 ./fonts/glyphicons-halflings-regular.svg
278e49a86e634da6f2a02f3b47dd9d2a8f26210f ./fonts/glyphicons-halflings-regular.woff
44bc1850f570972267b169ae18f1cb06b611ffa2 ./fonts/glyphicons-halflings-regular.ttf
fe8d57914bb036ab94e86ec35b2671eeb6d20d0d ./README.md
f4803ce0396b7e65d2f9dd4a5ae232b32403ef19 ./index.html
283e5a5aa0999fb8e84bdc7a0f2a881db249baf1 ./README.md
57749e14fea7e159c56b6dda9e982aef99985861 ./index.html
7130b64e3ef4cf6f2f1550e902f081c58dc053de ./test.html

379
test.html Normal file
View File

@ -0,0 +1,379 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<!-- =================================================================== -->
<head>
<title>TESTING COINBIN</title>
<link rel="stylesheet" href="css/bootstrap.min.css" media="screen">
<link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="css/style.css" media="screen">
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/moment.min.js"></script>
<script type="text/javascript" src="js/transition.js"></script>
<script type="text/javascript" src="js/collapse.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="js/crypto-min.js"></script>
<script type="text/javascript" src="js/crypto-sha256.js"></script>
<script type="text/javascript" src="js/crypto-sha256-hmac.js"></script>
<script type="text/javascript" src="js/sha512.js"></script>
<script type="text/javascript" src="js/ripemd160.js"></script>
<script type="text/javascript" src="js/aes.js"></script>
<script type="text/javascript" src="js/jsbn.js"></script>
<script type="text/javascript" src="js/ellipticcurve.js"></script>
<script type="text/javascript" src="js/coin.js"></script>
</head>
<!-- =================================================================== -->
<body>
<!-- =================================================================== -->
<div id="fwrap">
<!-- Fixed navbar -->
<div id="header" class="navbar navbar-default " role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="#home" class="navbar-brand" id="homeBtn"><img src="images/coinbin.gif" style="height:25px;margin-top:-5px"></a>
</div>
</div>
</div>
<div id="content" class="container">
<div class="tab-content">
<div class="tab-pane tab-content active" id="home">
<br />
<button id="test1Btn" class="btn btn-primary" type="submit">Run Coinbin Test Suite</button>
<br />
<textarea rows=20 cols=86 id="testResults"></textarea>
</div>
</div> <!-- content -->
</div> <!-- wrap -->
</div> <!-- navbar -->
</div> <!-- container -->
</body>
<script type="text/javascript">
$(document).ready(function() {
}); // end of document.ready
$("#test1Btn").click(function(){
{
var testName = "hex private key to compressed address";
var testInput = "0000000000000000000000000000000000000000000000000000000000000001";
var testExpected = "1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH";
coinjs.compressed = true;
var pubkeyHex = coinjs.newPubkey(testInput);
var testOutput = coinjs.pubkey2address(pubkeyHex, coinjs.pub);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "hex private key to uncompressed address";
var testInput = "0000000000000000000000000000000000000000000000000000000000000001";
var testExpected = "1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm";
coinjs.compressed = false;
var pubkeyHex = coinjs.newPubkey(testInput);
var testOutput = coinjs.pubkey2address(pubkeyHex, coinjs.pub);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "WIF uncompressed private key to address";
var testInput = "5J1LYLWqNxJBTwdGAmzYnpkqqSuFu48fsHv8jgojFMV2Z8exk9L";
var testExpected ="16SK7HnxBMRxSpLhhdf8RYcqv8MPJiSF6Q";
coinjs.compressed = false;
var testOutput = coinjs.wif2address(testInput).address;
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "raw private key to uncompressed base58check WIF private key";
var testInput = "62A87AD3272B41E67108FEA10C57BA6ED609F2F7A2264A83B690CD45707090D1";
var testExpected = "5JZjfs5wJv1gNkJXCmYpyj6VxciqPkwmK4yHW8zMmPN1PW7Hk7F";
coinjs.compressed = false;
var testOutput = coinjs.privkey2wif(testInput);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "raw private key to compressed base58check WIF private key";
var testInput = "62A87AD3272B41E67108FEA10C57BA6ED609F2F7A2264A83B690CD45707090D1";
var testExpected = "KzXVLY4ni4yznz8LJwdUmNoGpUfebSxiakXRqcGAeuhihzaVe3Rz";
coinjs.compressed = true;
var testOutput = coinjs.privkey2wif(testInput);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "hex ripemd160 hash of public key, to base58check address";
var testInput = "62E907B15CBF27D5425399EBF6F0FB50EBB88F18";
var testExpected = "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa";
var testOutput = coinjs.scripthash2address(testInput);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "base58check address, to hex ripemd160 hash of public key";
var testInput = "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa";
var testExpected = "62e907b15cbf27d5425399ebf6f0fb50ebb88f18";
var bytes = coinjs.base58decode(testInput);
var front = bytes.slice(1, bytes.length-4);
var testOutput = Crypto.util.bytesToHex(front);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "convert 'Hash 160' to address";
var testInput = "119b098e2e980a229e139a9ed01a469e518e6f26";
var testExpected = "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX";
var testOutput = coinjs.scripthash2address(testInput);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "convert 'SHA256' to address";
var testInput = "904b8a01c68095a9e825d28082c04b75b1f56277648256985717620e8913b79b";
var testExpected = "1JNC98D5LZbrGHFR8shDwiqLPGfpg15BUM";
var r = ripemd160(Crypto.util.hexToBytes(testInput));
r.unshift(coinjs.pub);
var hash = Crypto.SHA256(Crypto.SHA256(r, {asBytes: true}), {asBytes: true});
var checksum = hash.slice(0, 4);
var testOutput = coinjs.base58encode(r.concat(checksum));
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "convert WIF private key to address bech32";
var testInput = "L3GzRAGwCqfSNFr6g1NQm7edn29DgAKZJ6owUBqYELpP6Kbim5kM";
var testExpected = "bc1qhmc0vk4xzr37ayv7tlyhns7x4dk04tyvflk8ey";
var pubkey = coinjs.wif2pubkey(testInput);
var testOutput = coinjs.bech32Address(pubkey.pubkey).address;
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "bech32 address, to hex ripemd160 hash of public key";
var testInput = "bc1qhmc0vk4xzr37ayv7tlyhns7x4dk04tyvflk8ey";
var testExpected = "bef0f65aa610e3ee919e5fc979c3c6ab6cfaac8c";
var testOutput = coinjs.bech32redeemscript(testInput);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "prefix1 - WIF compressed private key to address (bitcoin)";
var testInput = "Kx4VFK8gXu4qBv73x9b1KFnWYqKekkprYyfX9QhFUMQhrTUooXKc";
var testExpected = "1NFeCVtA3zuCUAmYheRvfyABnSZCHfrR3j";
var testOutput = coinjs.wif2address(testInput).address;
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "prefix2 - WIF compressed private key to address (bitcoin-testnet)";
var testInput = "92Wn1EBgiwDNT8SC7WMZfcSk2y3mQkLUPAQtwMNYZQGAzCFUTdu";
var testExpected = "mxToLbBqPcSNnqPCSnrYjFv172TFPLjVNf";
var saved = pushNetworkVars("btc-testnet");
var testOutput = coinjs.wif2address(testInput).address;
popNetworkVars(saved);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "prefix3 - WIF compressed private key to address (litecoin)";
var testInput = "6vVAeKejJRV5wgrAqtqi7eQsS4Zf79nkw8xuYntU3JwHCiexYaJ";
var testExpected = "LMzBLYQG2opHvMBihMQgJBboxunoj5pssC";
var saved = pushNetworkVars("ltc-mainnet");
var testOutput = coinjs.wif2address(testInput).address;
popNetworkVars(saved);
addTestOutput(testName, testOutput, testExpected);
}
{
var testName = "prefix4 - WIF compressed private key to address (dogecoin)";
var testInput = "6KayMYAEQfFACQhZUzbBpFhvGzDWSmRtaY9NrPQGig9qVzRCzQf";
var testExpected = "DHEPGdnS46dHT79tkfm5DyhGAbQj4Xi8Ni";
var saved = pushNetworkVars("doge-mainnet");
var testOutput = coinjs.wif2address(testInput).address;
popNetworkVars(saved);
addTestOutput(testName, testOutput, testExpected);
}
{
// this test comes from https://bitcoindev.network/guides/bitcoinjs-lib/bitcoin-script-puzzles/
var testName = "P2SH redeem script to address (bitcoin testnet)";
var testInput = "935587";
var testExpected = "2N7WfHK1ftrTdhWej8rnFNR7guhvhfGWwFR";
var saved = pushNetworkVars("btc-testnet");
var hash = Crypto.SHA256(Crypto.util.hexToBytes(testInput), {asBytes: true});
var r = ripemd160(hash);
r.unshift(coinjs.multisig);
var hash = Crypto.SHA256(Crypto.SHA256(r, {asBytes: true}), {asBytes: true});
var checksum = hash.slice(0, 4);
var testOutput = coinjs.base58encode(r.concat(checksum));
addTestOutput(testName, testOutput, testExpected);
popNetworkVars(saved);
}
{
// this test comes from https://bitcoindev.network/guides/bitcoinjs-lib/bitcoin-script-puzzles/
var testName = "P2WSH redeem script to address (bitcoin testnet)";
var testInput = "935587";
var testExpected = "bcrt1qpt7c23c0wep9e8up4ywn070w3tqz3828ngy34aj8slsfxrh08ddq2d2pyu";
var hash = Crypto.SHA256(Crypto.util.hexToBytes(testInput), {asBytes: true});
var testOutput = coinjs.bech32_encode(/*coinjs.bech32.hrp*/"bcrt", [coinjs.bech32.version].concat(coinjs.bech32_convert(hash, 8, 5, true)));
addTestOutput(testName, testOutput, testExpected);
}
{
// data from https://bitcoin.stackexchange.com/questions/3374/how-to-redeem-a-basic-tx (runeks)
var testName = "basic transaction building bitcoin";
var testExpectedUnsigned = "0100000001eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2010000001976a914010966776006953d5567439e5e39f86a0d273bee88acffffffff01605af405000000001976a914097072524438d003d23a2f23edb65aae1bb3e46988ac00000000";
var testExpectedSigned = "0100000001eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2010000008a4730440220299fffaf20745458111e7826e5c2cca3b78dd27c97e0a513aab807f0d724103402203247498cfb019bbbd3d629814c8703e974f177478f6fde53503a9b1088852fad01410450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6ffffffff01605af405000000001976a914097072524438d003d23a2f23edb65aae1bb3e46988ac00000000";
var privKeyHex = "18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725";
var inputTx = "f2b3eb2deb76566e7324307cd47c35eeb88413f971d88519859b1834307ecfec";
var inputScript = "76a914010966776006953d5567439e5e39f86a0d273bee88ac";
var inputN = 1;
var address0 = "097072524438d003d23a2f23edb65aae1bb3e469";
var amount = 0.999;
coinjs.compressed = false;
var r = coinjs.transaction();
var wif = coinjs.privkey2wif(privKeyHex);
var address1 = coinjs.scripthash2address(address0);
r.addinput(inputTx, inputN, inputScript, 0xffffffff/*sequence*/);
r.addoutput(address1, amount);
var testOutputUnsigned = r.serialize();
debugger;
r.sign(wif, 1/*sighashtype*/);
var testOutputSigned = r.serialize();
addTestOutput(testName+" (unsigned)", testOutputUnsigned, testExpectedUnsigned);
addTestOutput(testName+" (signed)", testOutputSigned, testExpectedSigned);
}
{
// bitcoin testnet transaction https://tbtc.bitaps.com/04bbae5806d2b8fb17ed9339f42c6f6d731191a974b975d2e1df8e7601e90f6f
var saved = pushNetworkVars("btc-testnet");
var testName = "basic transaction building bitcoin-testnet";
var testExpectedUnsigned = "0100000001c72eabf9f208cacc908538e2609bbe665ffda680e2a6c39475941389dd5b14de000000001976a914b9e16a03bbf40ebb78cbc35e22d72a695f27624088acffffffff01703a0f00000000001976a914a447681601eef322926c0b3de5dfbb4157bbe40988ac00000000";
var testExpectedSigned = "0100000001c72eabf9f208cacc908538e2609bbe665ffda680e2a6c39475941389dd5b14de000000008b483045022100d909d4d3d2b540891c102d06fc8eaf1e9b914b93ea28626990666554a75b369102205a73b38071eab5b0acb8381c1454e7d998c80cd6d229645231b6bc1fb024d1d70141046fad107ba21fae3f047096152d0298291168bc0cb6b834f7cc77510dcb41839206b936649623988f7ca58c6104a22105c5b398912ded514685ebd0d8ac4011c2ffffffff01703a0f00000000001976a914a447681601eef322926c0b3de5dfbb4157bbe40988ac00000000";
var wif = "92Wn1EBgiwDNT8SC7WMZfcSk2y3mQkLUPAQtwMNYZQGAzCFUTdu";
var inputTx = "de145bdd8913947594c3a6e280a6fd5f66be9b60e2388590ccca08f2f9ab2ec7";
var inputScript = "76a914b9e16a03bbf40ebb78cbc35e22d72a695f27624088ac";
var inputN = 0;
var address1 = "mvVaevwNK2SdNj9kcugh29HbSLPhv7xszY";
var amount = 0.00998;
coinjs.compressed = true;
var r = coinjs.transaction();
r.addinput(inputTx, inputN, inputScript, 0xffffffff/*sequence*/);
r.addoutput(address1, amount);
var warnings = new Array;
var testOutputUnsigned = r.serialize();
r.sign(wif, 1/*sighashtype*/, warnings);
var testOutputSigned = r.serialize();
popNetworkVars(saved);
addTestOutput(testName+" (unsigned)", testOutputUnsigned, testExpectedUnsigned);
addTestOutput(testName+" (signed)", testOutputSigned, testExpectedSigned);
}
// create a lot of timelock scripts, compare them to known ones created using bitcoinjs-lib
// focus on edge cases like described in https://github.com/OutCast3k/coinbin/issues/201
// ranges 80-ff, 8000-ffff, 800000-ffffff, 80000000-ffffffff.
{
var testExpected = "HODL_depositAddress: 2NAx7Sx9B6epdUGyPeUEAU2tJiPectEym4F HODL_redeemScript: 050000008000b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2N5VZkAjtGerFUrc3bKjuK3whVEyaoKQceg HODL_redeemScript: 0400000008b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2MyN366sJLwXTMVMsMTHxi1bSJBwZwmNsQ4 HODL_redeemScript: 0400008000b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2NFjqkVBLKXjFLGPDpSoBTbhVsccUrqhRLW HODL_redeemScript: 03000008b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2N555b2vUzCJ5t8DryLYTw6vggH87SrK14b HODL_redeemScript: 03008000b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2N31s67tdRuaVfQipgkozEXd9jAt4saniH5 HODL_redeemScript: 020008b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2N9vLAD9f1WqFiJXinC9oCxDhypz36ZzaT7 HODL_redeemScript: 028000b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n" +
"HODL_depositAddress: 2MxRBGmDkNK44wCw2NMNq12UKxuPmkN8Wrx HODL_redeemScript: 58b175210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\n";
var testOutput = "";
var saved = pushNetworkVars("btc-testnet");
var testName = "timelocks";
var timeLock = 0x80000000;
while (timeLock > 0) {
//var timeLock = Math.pow(2,n)-1;
//var timeLock = 16777215;
var wif = "cMahea7zqjxrtgAbB7LSGbcQUr1uX1ojuat9jZodMN87JcbXMTcA"; // TESTNET pubKey="0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", addr="mrCDrCybB6J1vRfbwM5hemdJz73FwDBC8r"
var pubkey = coinjs.wif2pubkey(wif);
var myHodl = coinjs.simpleHodlAddress(pubkey.pubkey, timeLock);
testOutput += 'HODL_depositAddress: ' + myHodl.address + ' ';
testOutput += 'HODL_redeemScript: ' + myHodl.redeemScript + '\n';
timeLock = (timeLock >>> 4);
}
popNetworkVars(saved);
addTestOutput(testName, testOutput, testExpected);
}
});
function addTestOutput(testName, testOutput, testExpected) {
var testResult = "Fail ❌";
if (testOutput == testExpected) { testResult = "Pass ✓"; }
document.getElementById('testResults').value += testName + " : " + testResult + "\n";
}
function popNetworkVars(saved) {
coinjs.pub = saved.pub;
coinjs.priv = saved.priv;
coinjs.multisig = saved.multisig;
}
function pushNetworkVars(network) {
var savedParams = {
'pub':coinjs.pub,
'priv':coinjs.priv,
'multisig':coinjs.multisig
};
if (network == "btc-mainnet") {
coinjs.pub = 0x00;
coinjs.priv = 0x80;
coinjs.multisig = 0x05;
}
if (network == "btc-testnet") {
coinjs.pub = 0x6f;
coinjs.priv = 0xef;
coinjs.multisig = 0xc4;
}
if (network == "ltc-mainnet") {
coinjs.pub = 0x30;
coinjs.priv = 0xb0;
coinjs.multisig = 0x32;
}
if (network == "ltc-testnet") {
coinjs.pub = 0x6f;
coinjs.priv = 0xef;
coinjs.multisig = 0x3a4;
}
if (network == "doge-mainnet") {
coinjs.pub = 0x1e;
coinjs.priv = 0x9e;
coinjs.multisig = 0x16;
}
return savedParams;
}
</script>
</html>