mainnet-js 3.1.7 → 4.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/cache/IndexedDbCache.d.ts +1 -1
- package/dist/module/cache/IndexedDbCache.d.ts.map +1 -1
- package/dist/module/cache/MemoryCache.d.ts +1 -1
- package/dist/module/cache/MemoryCache.d.ts.map +1 -1
- package/dist/module/cache/WebStorageCache.d.ts +1 -1
- package/dist/module/cache/WebStorageCache.d.ts.map +1 -1
- package/dist/module/cache/walletCache.d.ts +16 -6
- package/dist/module/cache/walletCache.d.ts.map +1 -1
- package/dist/module/cache/walletCache.js +92 -34
- package/dist/module/cache/walletCache.js.map +1 -1
- package/dist/module/cli.js +1 -2
- package/dist/module/cli.js.map +1 -1
- package/dist/module/db/index.d.ts +1 -1
- package/dist/module/db/index.d.ts.map +1 -1
- package/dist/module/db/index.js +1 -1
- package/dist/module/db/index.js.map +1 -1
- package/dist/module/enum.d.ts +1 -1
- package/dist/module/enum.d.ts.map +1 -1
- package/dist/module/history/getHistory.d.ts +1 -1
- package/dist/module/history/getHistory.d.ts.map +1 -1
- package/dist/module/history/getHistory.js +3 -3
- package/dist/module/history/getHistory.js.map +1 -1
- package/dist/module/index.d.ts +25 -22
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +33 -26
- package/dist/module/index.js.map +1 -1
- package/dist/module/interface.d.ts +12 -2
- package/dist/module/interface.d.ts.map +1 -1
- package/dist/module/interface.js.map +1 -1
- package/dist/module/libauth.d.ts +1 -1
- package/dist/module/libauth.d.ts.map +1 -1
- package/dist/module/libauth.js +1 -1
- package/dist/module/libauth.js.map +1 -1
- package/dist/module/mine/mine.d.ts +2 -7
- package/dist/module/mine/mine.d.ts.map +1 -1
- package/dist/module/mine/mine.js +6 -27
- package/dist/module/mine/mine.js.map +1 -1
- package/dist/module/network/Connection.d.ts +1 -12
- package/dist/module/network/Connection.d.ts.map +1 -1
- package/dist/module/network/Connection.js +24 -33
- package/dist/module/network/Connection.js.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.d.ts +16 -17
- package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.js +91 -93
- package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
- package/dist/module/network/MockNetworkProvider.d.ts +28 -0
- package/dist/module/network/MockNetworkProvider.d.ts.map +1 -0
- package/dist/module/network/MockNetworkProvider.js +74 -0
- package/dist/module/network/MockNetworkProvider.js.map +1 -0
- package/dist/module/network/NetworkProvider.d.ts +9 -2
- package/dist/module/network/NetworkProvider.d.ts.map +1 -1
- package/dist/module/network/configuration.d.ts +2 -4
- package/dist/module/network/configuration.d.ts.map +1 -1
- package/dist/module/network/configuration.js +25 -50
- package/dist/module/network/configuration.js.map +1 -1
- package/dist/module/network/constant.d.ts +7 -7
- package/dist/module/network/constant.d.ts.map +1 -1
- package/dist/module/network/constant.js +21 -24
- package/dist/module/network/constant.js.map +1 -1
- package/dist/module/network/default.d.ts +5 -3
- package/dist/module/network/default.d.ts.map +1 -1
- package/dist/module/network/default.js +29 -51
- package/dist/module/network/default.js.map +1 -1
- package/dist/module/network/index.d.ts +4 -4
- package/dist/module/network/index.d.ts.map +1 -1
- package/dist/module/network/index.js +2 -2
- package/dist/module/network/index.js.map +1 -1
- package/dist/module/network/interface.d.ts +0 -6
- package/dist/module/network/interface.d.ts.map +1 -1
- package/dist/module/rate/ExchangeRate.d.ts +1 -1
- package/dist/module/rate/ExchangeRate.d.ts.map +1 -1
- package/dist/module/rate/ExchangeRate.js +13 -7
- package/dist/module/rate/ExchangeRate.js.map +1 -1
- package/dist/module/transaction/Wif.d.ts +3 -3
- package/dist/module/transaction/Wif.d.ts.map +1 -1
- package/dist/module/transaction/Wif.js +4 -4
- package/dist/module/transaction/Wif.js.map +1 -1
- package/dist/module/transaction/allocateFee.d.ts +1 -1
- package/dist/module/transaction/allocateFee.d.ts.map +1 -1
- package/dist/module/transaction/allocateFee.js +2 -2
- package/dist/module/transaction/allocateFee.js.map +1 -1
- package/dist/module/util/deriveCashaddr.js.map +1 -1
- package/dist/module/util/deriveNetwork.js +1 -1
- package/dist/module/util/deriveNetwork.js.map +1 -1
- package/dist/module/util/getAddrsByXpubKey.js +1 -1
- package/dist/module/util/getAddrsByXpubKey.js.map +1 -1
- package/dist/module/util/getXPubKey.js +1 -1
- package/dist/module/util/getXPubKey.js.map +1 -1
- package/dist/module/util/hd.d.ts +2 -0
- package/dist/module/util/hd.d.ts.map +1 -1
- package/dist/module/util/hd.js +41 -0
- package/dist/module/util/hd.js.map +1 -1
- package/dist/module/util/index.d.ts +7 -9
- package/dist/module/util/index.d.ts.map +1 -1
- package/dist/module/util/index.js +7 -9
- package/dist/module/util/index.js.map +1 -1
- package/dist/module/util/transaction.js +1 -1
- package/dist/module/util/transaction.js.map +1 -1
- package/dist/module/wallet/Base.d.ts +13 -9
- package/dist/module/wallet/Base.d.ts.map +1 -1
- package/dist/module/wallet/Base.js +54 -58
- package/dist/module/wallet/Base.js.map +1 -1
- package/dist/module/wallet/HDWallet.d.ts.map +1 -1
- package/dist/module/wallet/HDWallet.js +19 -38
- package/dist/module/wallet/HDWallet.js.map +1 -1
- package/dist/module/wallet/Util.d.ts +4 -22
- package/dist/module/wallet/Util.d.ts.map +1 -1
- package/dist/module/wallet/Util.js +75 -102
- package/dist/module/wallet/Util.js.map +1 -1
- package/dist/module/wallet/Watch.d.ts +24 -5
- package/dist/module/wallet/Watch.d.ts.map +1 -1
- package/dist/module/wallet/Watch.js +141 -17
- package/dist/module/wallet/Watch.js.map +1 -1
- package/dist/module/wallet/Wif.d.ts +2 -6
- package/dist/module/wallet/Wif.d.ts.map +1 -1
- package/dist/module/wallet/Wif.js +3 -69
- package/dist/module/wallet/Wif.js.map +1 -1
- package/dist/module/wallet/createWallet.d.ts +1 -1
- package/dist/module/wallet/createWallet.d.ts.map +1 -1
- package/dist/module/wallet/createWallet.js +2 -1
- package/dist/module/wallet/createWallet.js.map +1 -1
- package/dist/module/wallet/interface.d.ts +3 -2
- package/dist/module/wallet/interface.d.ts.map +1 -1
- package/dist/module/wallet/model.d.ts +2 -1
- package/dist/module/wallet/model.d.ts.map +1 -1
- package/dist/module/wallet/model.js +1 -1
- package/dist/module/wallet/model.js.map +1 -1
- package/package.json +17 -29
- package/dist/index.html +0 -9
- package/dist/mainnet-3.1.7.js +0 -2066
- package/dist/module/network/util.d.ts +0 -3
- package/dist/module/network/util.d.ts.map +0 -1
- package/dist/module/network/util.js +0 -27
- package/dist/module/network/util.js.map +0 -1
- package/dist/module/test/expect.d.ts +0 -12
- package/dist/module/test/expect.d.ts.map +0 -1
- package/dist/module/test/expect.js +0 -47
- package/dist/module/test/expect.js.map +0 -1
- package/dist/module/test/fetch.d.ts +0 -3
- package/dist/module/test/fetch.d.ts.map +0 -1
- package/dist/module/test/fetch.js +0 -32
- package/dist/module/test/fetch.js.map +0 -1
- package/dist/module/util/randomBytes.d.ts +0 -2
- package/dist/module/util/randomBytes.d.ts.map +0 -1
- package/dist/module/util/randomBytes.js +0 -13
- package/dist/module/util/randomBytes.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/cache/IndexedDbCache.test.ts +0 -15
- package/src/cache/IndexedDbCache.ts +0 -172
- package/src/cache/MemoryCache.test.ts +0 -15
- package/src/cache/MemoryCache.ts +0 -32
- package/src/cache/WebStorageCache.test.ts +0 -15
- package/src/cache/WebStorageCache.ts +0 -38
- package/src/cache/index.ts +0 -2
- package/src/cache/interface.ts +0 -9
- package/src/cache/walletCache.ts +0 -254
- package/src/chain.ts +0 -3
- package/src/cli.ts +0 -32
- package/src/config.ts +0 -23
- package/src/constant.ts +0 -27
- package/src/db/ExchangeRateProvider.ts +0 -28
- package/src/db/StorageProvider.ts +0 -64
- package/src/db/index.ts +0 -2
- package/src/db/interface.ts +0 -11
- package/src/enum.ts +0 -34
- package/src/history/getHistory.test.ts +0 -290
- package/src/history/getHistory.ts +0 -411
- package/src/history/interface.ts +0 -24
- package/src/index.ts +0 -48
- package/src/interface.ts +0 -72
- package/src/libauth.ts +0 -11
- package/src/message/index.ts +0 -2
- package/src/message/interface.ts +0 -40
- package/src/message/signed.test.ts +0 -309
- package/src/message/signed.ts +0 -201
- package/src/mine/index.ts +0 -1
- package/src/mine/mine.test.ts +0 -10
- package/src/mine/mine.ts +0 -42
- package/src/network/Connection.test.ts +0 -51
- package/src/network/Connection.ts +0 -73
- package/src/network/ElectrumNetworkProvider.ts +0 -657
- package/src/network/NetworkProvider.ts +0 -180
- package/src/network/Rpc.test.ts +0 -130
- package/src/network/configuration.test.ts +0 -59
- package/src/network/configuration.ts +0 -72
- package/src/network/constant.ts +0 -43
- package/src/network/default.ts +0 -120
- package/src/network/electrum.test.ts +0 -28
- package/src/network/getRelayFeeCache.test.ts +0 -15
- package/src/network/getRelayFeeCache.ts +0 -23
- package/src/network/index.ts +0 -14
- package/src/network/interface.ts +0 -80
- package/src/network/util.test.ts +0 -24
- package/src/network/util.ts +0 -30
- package/src/rate/ExchangeRate.test.headless.js +0 -35
- package/src/rate/ExchangeRate.test.ts +0 -51
- package/src/rate/ExchangeRate.ts +0 -142
- package/src/test/expect.ts +0 -59
- package/src/test/fetch.ts +0 -39
- package/src/test/json.test.ts +0 -13
- package/src/transaction/Wif.ts +0 -680
- package/src/transaction/allocateFee.test.ts +0 -298
- package/src/transaction/allocateFee.ts +0 -149
- package/src/util/amountInSatoshi.test.ts +0 -27
- package/src/util/amountInSatoshi.ts +0 -33
- package/src/util/asSendRequestObject.ts +0 -81
- package/src/util/base64.test.ts +0 -39
- package/src/util/base64.ts +0 -12
- package/src/util/browserNotSupported.ts +0 -7
- package/src/util/checkForEmptySeed.ts +0 -9
- package/src/util/checkUtxos.ts +0 -29
- package/src/util/checkWifNetwork.ts +0 -24
- package/src/util/convert.test.ts +0 -46
- package/src/util/convert.ts +0 -50
- package/src/util/delay.ts +0 -3
- package/src/util/deriveCashaddr.test.ts +0 -164
- package/src/util/deriveCashaddr.ts +0 -143
- package/src/util/deriveLockscript.ts +0 -16
- package/src/util/deriveNetwork.ts +0 -19
- package/src/util/derivePublicKeyHash.test.ts +0 -55
- package/src/util/derivePublicKeyHash.ts +0 -64
- package/src/util/floor.test.ts +0 -21
- package/src/util/floor.ts +0 -4
- package/src/util/getAddrsByXpubKey.test.ts +0 -115
- package/src/util/getAddrsByXpubKey.ts +0 -86
- package/src/util/getRuntimePlatform.test.headless.js +0 -40
- package/src/util/getRuntimePlatform.test.ts +0 -5
- package/src/util/getRuntimePlatform.ts +0 -31
- package/src/util/getUsdRate.ts +0 -5
- package/src/util/getXPubKey.ts +0 -39
- package/src/util/hash160.test.ts +0 -18
- package/src/util/hash160.ts +0 -12
- package/src/util/hd.ts +0 -16
- package/src/util/header.test.ts +0 -34
- package/src/util/header.ts +0 -26
- package/src/util/index.ts +0 -33
- package/src/util/randomBytes.ts +0 -13
- package/src/util/randomInt.test.ts +0 -15
- package/src/util/randomInt.ts +0 -4
- package/src/util/sanitizeAddress.ts +0 -10
- package/src/util/sanitizeUnit.ts +0 -11
- package/src/util/satoshiToAmount.test.ts +0 -6
- package/src/util/satoshiToAmount.ts +0 -33
- package/src/util/sumSendRequestAmounts.ts +0 -34
- package/src/util/sumUtxoValue.ts +0 -27
- package/src/util/transaction.ts +0 -10
- package/src/wallet/Base.ts +0 -1563
- package/src/wallet/Cashtokens.test.headless.js +0 -730
- package/src/wallet/Cashtokens.test.ts +0 -1411
- package/src/wallet/HDWallet.test.ts +0 -1086
- package/src/wallet/HDWallet.ts +0 -992
- package/src/wallet/Util.test.ts +0 -134
- package/src/wallet/Util.ts +0 -191
- package/src/wallet/WalletCache.test.ts +0 -45
- package/src/wallet/Watch.ts +0 -441
- package/src/wallet/Wif.bip39.test.ts +0 -48
- package/src/wallet/Wif.test.ts +0 -1189
- package/src/wallet/Wif.ts +0 -687
- package/src/wallet/Wif.watchOnly.test.ts +0 -58
- package/src/wallet/createWallet.ts +0 -238
- package/src/wallet/enum.ts +0 -18
- package/src/wallet/interface.ts +0 -102
- package/src/wallet/model.test.ts +0 -24
- package/src/wallet/model.ts +0 -352
- package/tsconfig.browser.json +0 -11
- package/tsconfig.json +0 -33
- package/webpack.config.cjs +0 -132
package/src/history/interface.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { TokenI } from "../interface.js";
|
|
2
|
-
|
|
3
|
-
export interface InOutput {
|
|
4
|
-
address: string;
|
|
5
|
-
value: number;
|
|
6
|
-
token?: TokenI;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface TransactionHistoryItem {
|
|
10
|
-
inputs: InOutput[];
|
|
11
|
-
outputs: InOutput[];
|
|
12
|
-
blockHeight: number;
|
|
13
|
-
timestamp?: number;
|
|
14
|
-
hash: string;
|
|
15
|
-
size: number;
|
|
16
|
-
fee: number;
|
|
17
|
-
balance: number;
|
|
18
|
-
valueChange: number;
|
|
19
|
-
tokenAmountChanges: {
|
|
20
|
-
category: string;
|
|
21
|
-
amount: bigint;
|
|
22
|
-
nftAmount: bigint;
|
|
23
|
-
}[];
|
|
24
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
export * from "./test/fetch.js";
|
|
2
|
-
export * from "./test/expect.js";
|
|
3
|
-
export * from "./db/index.js";
|
|
4
|
-
export * from "./mine/index.js";
|
|
5
|
-
|
|
6
|
-
export * from "./network/index.js";
|
|
7
|
-
export { SignedMessage } from "./message/signed.js";
|
|
8
|
-
|
|
9
|
-
export * from "./wallet/Base.js";
|
|
10
|
-
export * from "./wallet/Watch.js";
|
|
11
|
-
export * from "./wallet/Wif.js";
|
|
12
|
-
export * from "./wallet/HDWallet.js";
|
|
13
|
-
export * from "./wallet/createWallet.js";
|
|
14
|
-
|
|
15
|
-
// provider
|
|
16
|
-
export { DefaultProvider } from "./network/configuration.js";
|
|
17
|
-
|
|
18
|
-
// config
|
|
19
|
-
export { Config } from "./config.js";
|
|
20
|
-
|
|
21
|
-
// Enum
|
|
22
|
-
export { NetworkType, UnitEnum } from "./enum.js";
|
|
23
|
-
export { WalletTypeEnum, FeePaidByEnum } from "./wallet/enum.js";
|
|
24
|
-
|
|
25
|
-
// models
|
|
26
|
-
export * from "./wallet/model.js";
|
|
27
|
-
|
|
28
|
-
// utils
|
|
29
|
-
import * as Mainnet from "./util/index.js";
|
|
30
|
-
export { Mainnet };
|
|
31
|
-
export * from "./util/index.js";
|
|
32
|
-
export { getHistory } from "./history/getHistory.js";
|
|
33
|
-
|
|
34
|
-
// libauth
|
|
35
|
-
export * as libauth from "./libauth.js";
|
|
36
|
-
|
|
37
|
-
// constants
|
|
38
|
-
import * as CONST from "./constant.js";
|
|
39
|
-
export { CONST };
|
|
40
|
-
|
|
41
|
-
// interfaces
|
|
42
|
-
export * from "./interface.js";
|
|
43
|
-
export {
|
|
44
|
-
SignedMessageResponseI,
|
|
45
|
-
VerifyMessageResponseI,
|
|
46
|
-
} from "./message/interface.js";
|
|
47
|
-
export * from "./wallet/interface.js";
|
|
48
|
-
export * from "./history/interface.js";
|
package/src/interface.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { WalletImportFormatType } from "@bitauth/libauth";
|
|
2
|
-
|
|
3
|
-
export interface PrivateKeyI {
|
|
4
|
-
privateKey: Uint8Array;
|
|
5
|
-
type: WalletImportFormatType;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
// Weird setup to allow both Enum parameters, as well as literal strings
|
|
9
|
-
// https://stackoverflow.com/questions/51433319/typescript-constructor-accept-string-for-enum
|
|
10
|
-
const literal = <L extends string>(l: L): L => l;
|
|
11
|
-
export const Network = {
|
|
12
|
-
MAINNET: literal("mainnet"),
|
|
13
|
-
TESTNET: literal("testnet"),
|
|
14
|
-
REGTEST: literal("regtest"),
|
|
15
|
-
};
|
|
16
|
-
export type Network = typeof Network[keyof typeof Network];
|
|
17
|
-
|
|
18
|
-
export interface Utxo {
|
|
19
|
-
txid: string;
|
|
20
|
-
vout: number;
|
|
21
|
-
satoshis: bigint;
|
|
22
|
-
height?: number;
|
|
23
|
-
token?: TokenI;
|
|
24
|
-
address: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface UtxoId {
|
|
28
|
-
txid: string;
|
|
29
|
-
vout: number;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface ElectrumBalanceI {
|
|
33
|
-
confirmed: number;
|
|
34
|
-
unconfirmed: number;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface TxI {
|
|
38
|
-
tx_hash: string;
|
|
39
|
-
height: number;
|
|
40
|
-
fee?: number;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface HexHeaderI {
|
|
44
|
-
height: number;
|
|
45
|
-
hex: string;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export interface HeaderI {
|
|
49
|
-
version: number;
|
|
50
|
-
previousBlockHash: string;
|
|
51
|
-
merkleRoot: string;
|
|
52
|
-
timestamp: number;
|
|
53
|
-
bits: number;
|
|
54
|
-
nonce: number;
|
|
55
|
-
height: number;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface TokenI {
|
|
59
|
-
amount: bigint;
|
|
60
|
-
category: string;
|
|
61
|
-
nft?: {
|
|
62
|
-
capability: NFTCapability;
|
|
63
|
-
commitment: string;
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export const NFTCapability = {
|
|
68
|
-
none: literal("none"),
|
|
69
|
-
mutable: literal("mutable"),
|
|
70
|
-
minting: literal("minting"),
|
|
71
|
-
};
|
|
72
|
-
export type NFTCapability = typeof NFTCapability[keyof typeof NFTCapability];
|
package/src/libauth.ts
DELETED
package/src/message/index.ts
DELETED
package/src/message/interface.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export interface SignedMessageI {
|
|
2
|
-
sign(message: string, privateKey: Uint8Array): SignedMessageResponseI;
|
|
3
|
-
verify(
|
|
4
|
-
message: string,
|
|
5
|
-
signature: string,
|
|
6
|
-
cashaddr: string,
|
|
7
|
-
publicKey?: Uint8Array
|
|
8
|
-
): VerifyMessageResponseI;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface SignedMessageRawI {
|
|
12
|
-
ecdsa: string;
|
|
13
|
-
schnorr: string;
|
|
14
|
-
der: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface SignedMessageDetailsI {
|
|
18
|
-
recoveryId: number;
|
|
19
|
-
compressed: boolean;
|
|
20
|
-
messageHash: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface SignedMessageResponseI {
|
|
24
|
-
raw?: SignedMessageRawI;
|
|
25
|
-
details?: SignedMessageDetailsI;
|
|
26
|
-
signature: string;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface VerifyMessageDetailsI {
|
|
30
|
-
signatureType: string;
|
|
31
|
-
messageHash: string;
|
|
32
|
-
signatureValid: boolean;
|
|
33
|
-
publicKeyHashMatch: boolean;
|
|
34
|
-
publicKeyMatch: boolean;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface VerifyMessageResponseI {
|
|
38
|
-
valid: boolean;
|
|
39
|
-
details?: VerifyMessageDetailsI;
|
|
40
|
-
}
|
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
import { SignedMessage, hash_message } from "./signed.js";
|
|
2
|
-
import { Wallet, RegTestWallet, TestNetWallet } from "../wallet/Wif.js";
|
|
3
|
-
import { binToHex } from "@bitauth/libauth";
|
|
4
|
-
|
|
5
|
-
import fs from "fs";
|
|
6
|
-
|
|
7
|
-
async function loadLargeMessage() {
|
|
8
|
-
const data = await fs.promises.readFile("./jest/data/bitcoin.tex", "utf-8");
|
|
9
|
-
return data;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
describe("Test message Signing and Verification", () => {
|
|
13
|
-
test("Test the magic hash function", async () => {
|
|
14
|
-
// Test that the double sha256 hash of the wrapped messages matches
|
|
15
|
-
// what would be had internally in electron-cash
|
|
16
|
-
// b'\x18Bitcoin Signed Message:\n' + b'{message.length}' + b'{message}'
|
|
17
|
-
let test_hash = hash_message("test");
|
|
18
|
-
expect(binToHex(test_hash)).toBe(
|
|
19
|
-
"9ce428d58e8e4caf619dc6fc7b2c2c28f0561654d1f80f322c038ad5e67ff8a6"
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
// b'\xe6\xb5\x8b\xe8\xaf\x95' in binary python
|
|
23
|
-
let 测试_hash = hash_message("测试");
|
|
24
|
-
expect(binToHex(测试_hash)).toBe(
|
|
25
|
-
"8d8405050b7a763ccd5683f8470ea7dcbd10a87da2b7fe07eb2679ba71229688"
|
|
26
|
-
);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test("Test testnet signature from electron cash", async () => {
|
|
30
|
-
let msg1 = "Chancellor on brink of second bailout for banks";
|
|
31
|
-
let w1 = await Wallet.fromId(
|
|
32
|
-
`wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN`
|
|
33
|
-
);
|
|
34
|
-
expect(w1.cashaddr!).toBe(
|
|
35
|
-
"bitcoincash:qqehccy89v7ftlfgr9v0zvhjzyy7eatdkqt05lt3nw"
|
|
36
|
-
);
|
|
37
|
-
let sig = SignedMessage.sign(msg1, w1.privateKey!);
|
|
38
|
-
|
|
39
|
-
let coreLibSig =
|
|
40
|
-
"H/9jMOnj4MFbH3d7t4yCQ9i7DgZU/VZ278w3+ySv2F4yIsdqjsc5ng3kmN8OZAThgyfCZOQxZCWza9V5XzlVY0Y=";
|
|
41
|
-
expect(sig.signature).toBe(coreLibSig);
|
|
42
|
-
let result = SignedMessage.verify(msg1, sig.signature, w1.cashaddr!);
|
|
43
|
-
expect(result.valid).toBe(true);
|
|
44
|
-
expect(result.details!.messageHash).toBe(
|
|
45
|
-
"gE9BDBFAOqW+yoOzABjnM+LQRWHd4dvUVrsTR+sIWsU="
|
|
46
|
-
);
|
|
47
|
-
expect(result.details!.publicKeyHashMatch).toBe(true);
|
|
48
|
-
expect(result.details!.publicKeyMatch).toBe(false);
|
|
49
|
-
expect(result.details!.signatureValid).toBe(true);
|
|
50
|
-
expect(result.details!.signatureType).toBe("recoverable");
|
|
51
|
-
|
|
52
|
-
let msg2 = "Lessons for China from Japan’s lost decade";
|
|
53
|
-
result = SignedMessage.verify(msg2, sig.signature, w1.cashaddr!);
|
|
54
|
-
expect(result.valid).toBe(false);
|
|
55
|
-
expect(result.details!.messageHash).toBe(
|
|
56
|
-
"070kQIcYPSHApGdOGH0O81N1AkMbNKwCTM3IX2Svd3I="
|
|
57
|
-
);
|
|
58
|
-
expect(result.details!.publicKeyHashMatch).toBe(false);
|
|
59
|
-
expect(result.details!.publicKeyMatch).toBe(false);
|
|
60
|
-
expect(result.details!.signatureValid).toBe(true);
|
|
61
|
-
expect(result.details!.signatureType).toBe("recoverable");
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
// cTHMu3b13uh4i4GANQKm1XeziZhph18fwZgdaVftxh4FSuqj2AGM
|
|
65
|
-
// bchtest:qqf25s9nm4uq982t94vq75v78n4j0e4r4vdf9j48wn
|
|
66
|
-
// INGajEdcctxl+WR/icZJ5mNenqcxfhqhAkBkAauBxfZFdeKaU/FaL7fxgVyTul6Qxz1Oesn8avN/F+AaFIcMP74=
|
|
67
|
-
|
|
68
|
-
test("Test testnet signature from electron cash", async () => {
|
|
69
|
-
let w = await TestNetWallet.fromId(
|
|
70
|
-
"wif:testnet:cTHMu3b13uh4i4GANQKm1XeziZhph18fwZgdaVftxh4FSuqj2AGM"
|
|
71
|
-
);
|
|
72
|
-
expect(w.cashaddr!).toBe(
|
|
73
|
-
"bchtest:qqf25s9nm4uq982t94vq75v78n4j0e4r4vdf9j48wn"
|
|
74
|
-
);
|
|
75
|
-
let msg = "test";
|
|
76
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
77
|
-
let result = SignedMessage.verify(msg, sig.signature, w.cashaddr!);
|
|
78
|
-
expect(result.valid).toBe(true);
|
|
79
|
-
|
|
80
|
-
result = SignedMessage.verify("test2", sig.signature, w.cashaddr!);
|
|
81
|
-
expect(result.valid).toBe(false);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
test("Test signing and verifying regtest signature using Alice's wallet", async () => {
|
|
85
|
-
let w = await RegTestWallet.fromId(
|
|
86
|
-
"wif:regtest:cNfsPtqN2bMRS7vH5qd8tR8GMvgXyL5BjnGAKgZ8DYEiCrCCQcP6"
|
|
87
|
-
);
|
|
88
|
-
let msg = "test";
|
|
89
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
90
|
-
|
|
91
|
-
let result = SignedMessage.verify(msg, sig.signature, w.cashaddr!);
|
|
92
|
-
expect(result.valid).toBe(true);
|
|
93
|
-
|
|
94
|
-
result = SignedMessage.verify("test2", sig.signature, w.cashaddr!);
|
|
95
|
-
expect(result.valid).toBe(false);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
test("Test signing and verifying regtest signature using Alice's wallet", async () => {
|
|
99
|
-
let w = await RegTestWallet.fromId(
|
|
100
|
-
"wif:regtest:cNfsPtqN2bMRS7vH5qd8tR8GMvgXyL5BjnGAKgZ8DYEiCrCCQcP6"
|
|
101
|
-
);
|
|
102
|
-
let msg = "测试";
|
|
103
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
104
|
-
let result = SignedMessage.verify(msg, sig.signature, w.cashaddr!);
|
|
105
|
-
expect(result.valid).toBe(true);
|
|
106
|
-
|
|
107
|
-
result = SignedMessage.verify("测试二", sig.signature, w.cashaddr!);
|
|
108
|
-
expect(result.valid).toBe(false);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
test("Test signing and verifying a schnorr signature", async () => {
|
|
112
|
-
let w = await Wallet.fromId(
|
|
113
|
-
"wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN"
|
|
114
|
-
);
|
|
115
|
-
let msg = "test";
|
|
116
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
117
|
-
let result = SignedMessage.verify(
|
|
118
|
-
msg,
|
|
119
|
-
sig.raw!.schnorr,
|
|
120
|
-
undefined,
|
|
121
|
-
w.publicKey!
|
|
122
|
-
);
|
|
123
|
-
expect(result.valid).toBe(true);
|
|
124
|
-
expect(result.details!.signatureType).toBe("schnorr");
|
|
125
|
-
|
|
126
|
-
let msg2 =
|
|
127
|
-
"Biggest Selloff in 25 Years Hits Japan Bonds as BOJ Loosens Grip";
|
|
128
|
-
let invalid = SignedMessage.verify(
|
|
129
|
-
msg2,
|
|
130
|
-
sig.raw!.schnorr,
|
|
131
|
-
undefined,
|
|
132
|
-
w.publicKey!
|
|
133
|
-
);
|
|
134
|
-
expect(invalid.valid).toBe(false);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
test("Test signing and verifying a der signature", async () => {
|
|
138
|
-
let w = await Wallet.fromId(
|
|
139
|
-
"wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN"
|
|
140
|
-
);
|
|
141
|
-
let msg = "test";
|
|
142
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
143
|
-
let result = SignedMessage.verify(
|
|
144
|
-
msg,
|
|
145
|
-
sig.raw!.der,
|
|
146
|
-
undefined,
|
|
147
|
-
w.publicKey!
|
|
148
|
-
);
|
|
149
|
-
expect(result.valid).toBe(true);
|
|
150
|
-
expect(result.details!.signatureType).toBe("der");
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
test("Test signing and verifying a ecdsa signature", async () => {
|
|
154
|
-
let w = await Wallet.fromId(
|
|
155
|
-
"wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN"
|
|
156
|
-
);
|
|
157
|
-
let msg = "test";
|
|
158
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
159
|
-
let result = SignedMessage.verify(
|
|
160
|
-
msg,
|
|
161
|
-
sig.raw!.ecdsa,
|
|
162
|
-
undefined,
|
|
163
|
-
w.publicKey!
|
|
164
|
-
);
|
|
165
|
-
expect(result.valid).toBe(true);
|
|
166
|
-
expect(result.details!.signatureType).toBe("ecdsa");
|
|
167
|
-
|
|
168
|
-
let msg2 =
|
|
169
|
-
"Biggest Selloff in 25 Years Hits Japan Bonds as BOJ Loosens Grip";
|
|
170
|
-
let invalid = SignedMessage.verify(
|
|
171
|
-
msg2,
|
|
172
|
-
sig.raw!.ecdsa,
|
|
173
|
-
undefined,
|
|
174
|
-
w.publicKey!
|
|
175
|
-
);
|
|
176
|
-
expect(invalid.valid).toBe(false);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
test("Test signing and verifying a long message", async () => {
|
|
180
|
-
let w = await Wallet.fromId(
|
|
181
|
-
"wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN"
|
|
182
|
-
);
|
|
183
|
-
let msg = await loadLargeMessage();
|
|
184
|
-
let sig = SignedMessage.sign(msg, w.privateKey!);
|
|
185
|
-
let result = SignedMessage.verify(msg, sig.signature, w.cashaddr!);
|
|
186
|
-
expect(result.valid).toBe(true);
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
test("Test electron-cash example from static wallet methods", async () => {
|
|
190
|
-
let msg1 = "Chancellor on brink of second bailout for banks";
|
|
191
|
-
let w1 = await Wallet.fromId(
|
|
192
|
-
`wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN`
|
|
193
|
-
);
|
|
194
|
-
expect(w1.cashaddr!).toBe(
|
|
195
|
-
"bitcoincash:qqehccy89v7ftlfgr9v0zvhjzyy7eatdkqt05lt3nw"
|
|
196
|
-
);
|
|
197
|
-
let sig = SignedMessage.sign(msg1, w1.privateKey!);
|
|
198
|
-
let result = SignedMessage.verify(msg1, sig.signature, w1.cashaddr!);
|
|
199
|
-
expect(result.valid).toBe(true);
|
|
200
|
-
|
|
201
|
-
let msg2 =
|
|
202
|
-
"Biggest Selloff in 25 Years Hits Japan Bonds as BOJ Loosens Grip";
|
|
203
|
-
let invalid = SignedMessage.verify(msg2, sig.signature, w1.cashaddr!);
|
|
204
|
-
expect(invalid.valid).toBe(false);
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
test("Test electron cash example from a wallet instance", async () => {
|
|
208
|
-
let msg1 = "Chancellor on brink of second bailout for banks";
|
|
209
|
-
|
|
210
|
-
let w1 = await Wallet.fromId(
|
|
211
|
-
`wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN`
|
|
212
|
-
);
|
|
213
|
-
expect(w1.cashaddr!).toBe(
|
|
214
|
-
"bitcoincash:qqehccy89v7ftlfgr9v0zvhjzyy7eatdkqt05lt3nw"
|
|
215
|
-
);
|
|
216
|
-
let sig = w1.sign(msg1);
|
|
217
|
-
let result = w1.verify(msg1, sig.signature);
|
|
218
|
-
expect(result.valid).toBe(true);
|
|
219
|
-
|
|
220
|
-
let msg2 =
|
|
221
|
-
"Biggest Selloff in 25 Years Hits Japan Bonds as BOJ Loosens Grip";
|
|
222
|
-
let invalid = w1.verify(msg2, sig.signature);
|
|
223
|
-
expect(invalid.valid).toBe(false);
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
test("Test electron cash example from a wallet instance", async () => {
|
|
227
|
-
let beak = "Eeny meeny, hide & seek―catch a cephalopod by the beak";
|
|
228
|
-
let beakSig =
|
|
229
|
-
"H2a0aK6ZhF5rii4yzKkE+15yLTaQPa4KzoGXwYNHm5I+OYxRdcpTiUVZm3h6+ocy2JYxb0UUrQn7UWh8IcxzEtk=";
|
|
230
|
-
|
|
231
|
-
let falseMessage = "Employer provided healthcare is a benefit.";
|
|
232
|
-
|
|
233
|
-
let w1 = await Wallet.fromId(
|
|
234
|
-
`watch:mainnet:qqad5sy4jml3f6vcp246dulsex04xp48wq23d35rqe`
|
|
235
|
-
);
|
|
236
|
-
expect(w1.cashaddr!).toBe(
|
|
237
|
-
"bitcoincash:qqad5sy4jml3f6vcp246dulsex04xp48wq23d35rqe"
|
|
238
|
-
);
|
|
239
|
-
let result = w1.verify(beak, beakSig);
|
|
240
|
-
expect(result.valid).toBe(true);
|
|
241
|
-
expect(result.details?.publicKeyHashMatch).toBe(true);
|
|
242
|
-
expect(result.details?.publicKeyMatch).toBe(false);
|
|
243
|
-
expect(result.details?.signatureValid).toBe(true);
|
|
244
|
-
expect(result.details?.signatureType).toBe("recoverable");
|
|
245
|
-
|
|
246
|
-
let badResult = w1.verify(falseMessage, beakSig);
|
|
247
|
-
expect(badResult.valid).toBe(false);
|
|
248
|
-
|
|
249
|
-
// While the recoverable sig is valid, it doesn't match the message.
|
|
250
|
-
expect(badResult.details?.signatureValid).toBe(true);
|
|
251
|
-
expect(badResult.details?.publicKeyHashMatch).toBe(false);
|
|
252
|
-
expect(badResult.details?.publicKeyMatch).toBe(false);
|
|
253
|
-
expect(result.details?.signatureType).toBe("recoverable");
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
// Test verifying a long message (>= 253 bytes) signed by Electron Cash
|
|
257
|
-
// This tests that the varint length encoding is correct
|
|
258
|
-
test("Test verifying long message signature from Electron Cash", async () => {
|
|
259
|
-
// 329 byte message (10 lines of "1234567890 1234567890 1234567890")
|
|
260
|
-
const longMsg = Array(10)
|
|
261
|
-
.fill("1234567890 1234567890 1234567890")
|
|
262
|
-
.join("\n");
|
|
263
|
-
expect(longMsg.length).toBe(329); // Confirm >= 253 bytes
|
|
264
|
-
|
|
265
|
-
const ecSig =
|
|
266
|
-
"IPJZmd0kYQbll507F1wWMcbA7WPMcBkF6GhtYXQEpSHsWFNLzDmvy5rI0uA0NDlkHbUiHAiy67lPeCQoHJ8tk7s=";
|
|
267
|
-
|
|
268
|
-
// Private key: cPPQTpVuL8WPDcH9wuhjVcbdKtRX3j4Q4uV2qnL8hbtyW2ugMAcn
|
|
269
|
-
const addr = "bchtest:qrynfuk47hxqj4sgpt62v3yzzpnjw6l2hvnc4p897k";
|
|
270
|
-
|
|
271
|
-
const result = await SignedMessage.verify(longMsg, ecSig, addr);
|
|
272
|
-
expect(result.valid).toBe(true);
|
|
273
|
-
expect(result.details?.publicKeyHashMatch).toBe(true);
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
test("Test signature verification with cashaddr and tokenaddr is equivalent", async () => {
|
|
277
|
-
let msg1 = "Chancellor on brink of second bailout for banks";
|
|
278
|
-
let w1 = await Wallet.fromId(
|
|
279
|
-
`wif:mainnet:L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN`
|
|
280
|
-
);
|
|
281
|
-
expect(w1.cashaddr!).toBe(
|
|
282
|
-
"bitcoincash:qqehccy89v7ftlfgr9v0zvhjzyy7eatdkqt05lt3nw"
|
|
283
|
-
);
|
|
284
|
-
let sig = SignedMessage.sign(msg1, w1.privateKey!);
|
|
285
|
-
|
|
286
|
-
let coreLibSig =
|
|
287
|
-
"H/9jMOnj4MFbH3d7t4yCQ9i7DgZU/VZ278w3+ySv2F4yIsdqjsc5ng3kmN8OZAThgyfCZOQxZCWza9V5XzlVY0Y=";
|
|
288
|
-
expect(sig.signature).toBe(coreLibSig);
|
|
289
|
-
let result = SignedMessage.verify(msg1, sig.signature, w1.cashaddr!);
|
|
290
|
-
expect(result.valid).toBe(true);
|
|
291
|
-
expect(result.details!.messageHash).toBe(
|
|
292
|
-
"gE9BDBFAOqW+yoOzABjnM+LQRWHd4dvUVrsTR+sIWsU="
|
|
293
|
-
);
|
|
294
|
-
expect(result.details!.publicKeyHashMatch).toBe(true);
|
|
295
|
-
expect(result.details!.publicKeyMatch).toBe(false);
|
|
296
|
-
expect(result.details!.signatureValid).toBe(true);
|
|
297
|
-
expect(result.details!.signatureType).toBe("recoverable");
|
|
298
|
-
|
|
299
|
-
let result2 = SignedMessage.verify(msg1, sig.signature, w1.tokenaddr!);
|
|
300
|
-
expect(result2.valid).toBe(true);
|
|
301
|
-
expect(result2.details!.messageHash).toBe(
|
|
302
|
-
"gE9BDBFAOqW+yoOzABjnM+LQRWHd4dvUVrsTR+sIWsU="
|
|
303
|
-
);
|
|
304
|
-
expect(result2.details!.publicKeyHashMatch).toBe(true);
|
|
305
|
-
expect(result2.details!.publicKeyMatch).toBe(false);
|
|
306
|
-
expect(result2.details!.signatureValid).toBe(true);
|
|
307
|
-
expect(result2.details!.signatureType).toBe("recoverable");
|
|
308
|
-
});
|
|
309
|
-
});
|