Skip to content

Commit

Permalink
Change NetworkParams to Network for succinctness
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthewLM committed Jan 15, 2024
1 parent 6760f81 commit 71fc91f
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 62 deletions.
8 changes: 4 additions & 4 deletions coinlib/example/coinlib_example.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ void main() async {
// Generate a P2PKH address with the mainnet prefix
final address = P2PKHAddress.fromPublicKey(
key1.publicKey,
version: NetworkParams.mainnet.p2pkhPrefix,
version: Network.mainnet.p2pkhPrefix,
);
print("Address: $address");

Expand All @@ -38,14 +38,14 @@ void main() async {
final msgSig = MessageSignature.sign(
key: key1.privateKey,
message: msg,
prefix: NetworkParams.mainnet.messagePrefix,
prefix: Network.mainnet.messagePrefix,
);

if (
msgSig.verifyAddress(
address: address,
message: msg,
prefix: NetworkParams.mainnet.messagePrefix,
prefix: Network.mainnet.messagePrefix,
)
) {
print("Msg signature is valid: $msgSig");
Expand Down Expand Up @@ -92,7 +92,7 @@ void main() async {

// Print P2TR address
final trAddr = P2TRAddress.fromTaproot(
taproot, hrp: NetworkParams.mainnet.bech32Hrp,
taproot, hrp: Network.mainnet.bech32Hrp,
);
print("Taproot address: $trAddr");

Expand Down
8 changes: 4 additions & 4 deletions coinlib/lib/src/address.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:coinlib/src/common/bytes.dart';
import 'package:coinlib/src/common/hex.dart';
import 'package:coinlib/src/crypto/ec_public_key.dart';
import 'package:coinlib/src/crypto/hash.dart';
import 'package:coinlib/src/network_params.dart';
import 'package:coinlib/src/network.dart';
import 'package:coinlib/src/encode/base58.dart';
import 'package:coinlib/src/encode/bech32.dart';
import 'package:coinlib/src/scripts/program.dart';
Expand All @@ -27,7 +27,7 @@ abstract class Address {
/// the type of address. Throws [InvalidAddress], [InvalidAddressNetwork],
/// [InvalidBech32Checksum] or [InvalidBase58Checksum] if there is an error
/// with the address. The address must match the [network] provided.
factory Address.fromString(String encoded, NetworkParams network) {
factory Address.fromString(String encoded, Network network) {
// Try base58
try {
return Base58Address.fromString(encoded, network);
Expand Down Expand Up @@ -68,7 +68,7 @@ abstract class Base58Address implements Address {
}
}

factory Base58Address.fromString(String encoded, NetworkParams network) {
factory Base58Address.fromString(String encoded, Network network) {

final data = base58Decode(encoded);
if (data.length != 21) throw InvalidAddress();
Expand Down Expand Up @@ -172,7 +172,7 @@ abstract class Bech32Address implements Address {

}

factory Bech32Address.fromString(String encoded, NetworkParams network) {
factory Bech32Address.fromString(String encoded, Network network) {

final bech32 = Bech32.decode(encoded);

Expand Down
2 changes: 1 addition & 1 deletion coinlib/lib/src/coinlib_base.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export 'package:coinlib/src/tx/sighash/witness_signature_hasher.dart';

export 'package:coinlib/src/address.dart';
export 'package:coinlib/src/coin_unit.dart';
export 'package:coinlib/src/network_params.dart';
export 'package:coinlib/src/network.dart';
export 'package:coinlib/src/taproot.dart';

Future<void> loadCoinlib() => secp256k1.load();
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@

class NetworkParams {
class Network {

final int wifPrefix, p2pkhPrefix, p2shPrefix, privHDPrefix, pubHDPrefix;
final String bech32Hrp, messagePrefix;
final BigInt minFee, minOutput, feePerKb;

NetworkParams({
Network({
required this.wifPrefix,
required this.p2pkhPrefix,
required this.p2shPrefix,
Expand All @@ -18,7 +17,7 @@ class NetworkParams {
required this.feePerKb,
});

static final mainnet = NetworkParams(
static final mainnet = Network(
wifPrefix: 183,
p2pkhPrefix: 55,
p2shPrefix: 117,
Expand All @@ -31,7 +30,7 @@ class NetworkParams {
feePerKb: BigInt.from(10000),
);

static final testnet = NetworkParams(
static final testnet = Network(
wifPrefix: 239,
p2pkhPrefix: 111,
p2shPrefix: 196,
Expand Down
72 changes: 36 additions & 36 deletions coinlib/test/address_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:coinlib/coinlib.dart';
import 'package:test/test.dart';
import 'vectors/taproot.dart';

final wrongNetwork = NetworkParams(
final wrongNetwork = Network(
wifPrefix: 0,
p2pkhPrefix: 0xfa,
p2shPrefix: 0xfb,
Expand Down Expand Up @@ -43,7 +43,7 @@ expectBech32Equal(Bech32Address addr, Bech32Address expected) {
}

expectValidAddress<T extends Address>(
String encoded, NetworkParams network, T expected,
String encoded, Network network, T expected,
) {

final baseDecoded = Address.fromString(encoded, network);
Expand Down Expand Up @@ -97,18 +97,18 @@ void main() {

expectValidAddress(
"P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8",
NetworkParams.mainnet,
Network.mainnet,
P2PKHAddress.fromHash(
hexToBytes("0000000000000000000000000000000000000000"),
version: NetworkParams.mainnet.p2pkhPrefix,
version: Network.mainnet.p2pkhPrefix,
),
);

expectValidAddress(
"PGkLtYrKeMDbBCaFy4yMRhN9ZTjJp2y8Pb",
NetworkParams.mainnet,
Network.mainnet,
P2PKHAddress.fromPublicKey(
pubkey, version: NetworkParams.mainnet.p2pkhPrefix,
pubkey, version: Network.mainnet.p2pkhPrefix,
),
);

Expand All @@ -118,19 +118,19 @@ void main() {

expectValidAddress(
"pUtBBpAznHgPW9TDtWJcDo7qGXQJqnf1W9",
NetworkParams.mainnet,
Network.mainnet,
P2SHAddress.fromHash(
hexToBytes("ffffffffffffffffffffffffffffffffffffffff"),
version: NetworkParams.mainnet.p2shPrefix,
version: Network.mainnet.p2shPrefix,
),
);

expectValidAddress(
"pL5vkwAVx6Qo1AVm7dzW5XKxP4meAjZQS1",
NetworkParams.mainnet,
Network.mainnet,
P2SHAddress.fromRedeemScript(
Script.fromAsm("0"),
version: NetworkParams.mainnet.p2shPrefix,
version: Network.mainnet.p2shPrefix,
),
);

Expand All @@ -140,18 +140,18 @@ void main() {

expectValidAddress(
"pc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmtd2rq",
NetworkParams.mainnet,
Network.mainnet,
P2WPKHAddress.fromHash(
hexToBytes("0000000000000000000000000000000000000000"),
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

expectValidAddress(
"pc1qt97wqg464zrhnx23upykca5annqvwkwuvqmpk5",
NetworkParams.mainnet,
Network.mainnet,
P2WPKHAddress.fromPublicKey(
pubkey, hrp: NetworkParams.mainnet.bech32Hrp,
pubkey, hrp: Network.mainnet.bech32Hrp,
),
);

Expand All @@ -161,21 +161,21 @@ void main() {

expectValidAddress(
"pc1qlllllllllllllllllllllllllllllllllllllllllllllllllllsm5knxw",
NetworkParams.mainnet,
Network.mainnet,
P2WSHAddress.fromHash(
hexToBytes(
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
),
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

expectValidAddress(
"pc1qdc6qh88lkdaf3899gnntk7q293ufq8flkvmnsa59zx3sv9a05qwsgzh235",
NetworkParams.mainnet,
Network.mainnet,
P2WSHAddress.fromWitnessScript(
Script.fromAsm("0"),
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

Expand All @@ -185,32 +185,32 @@ void main() {

expectValidAddress(
"pc1punvppl2stp38f7kwv2u2spltjuvuaayuqsthe34hd2dyy5w4g58qj5f0v2",
NetworkParams.mainnet,
Network.mainnet,
P2TRAddress.fromTweakedKeyX(
hexToBytes(
"e4d810fd50586274face62b8a807eb9719cef49c04177cc6b76a9a4251d5450e",
),
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

expectValidAddress(
"pc1pz37fc4cn9ah8anwm4xqqhvxygjf9rjf2resrw8h8w4tmvcs0863s0hvxry",
NetworkParams.mainnet,
Network.mainnet,
P2TRAddress.fromTweakedKey(
ECPublicKey.fromXOnlyHex(
"147c9c57132f6e7ecddba9800bb0c4449251c92a1e60371ee77557b6620f3ea3",
),
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

expectValidAddress(
"pc1p2wsldez5mud2yam29q22wgfh9439spgduvct83k3pm50fcxa5dpsxcz8x2",
NetworkParams.mainnet,
Network.mainnet,
P2TRAddress.fromTaproot(
taprootVectors[0].object,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

Expand All @@ -221,22 +221,22 @@ void main() {
// 40 program bytes
expectValidAddress(
"pc1sqqqsyqcyq5rqwzqfpg9scrgwpugpzysnzs23v9ccrydpk8qarc0jqgfzyvjz2f38pj2w3g",
NetworkParams.mainnet,
Network.mainnet,
UnknownWitnessAddress.fromHex(
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627",
version: 16,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

// 2 program bytes
expectValidAddress(
"pc1sqqqsfrujuz",
NetworkParams.mainnet,
Network.mainnet,
UnknownWitnessAddress.fromHex(
"0001",
version: 16,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
);

Expand Down Expand Up @@ -271,7 +271,7 @@ void main() {
"pc1qqqqsyqcyq5rqwzqfpg9scrgwpugpzysnzs23v9ccrydpk8qarc0pcfzdx",
]) {
expect(
() => Address.fromString(invalid, NetworkParams.mainnet),
() => Address.fromString(invalid, Network.mainnet),
throwsA(isA<InvalidAddress>()),
reason: invalid,
);
Expand All @@ -282,14 +282,14 @@ void main() {
test("invalid checksums", () {
expect(
() => Address.fromString(
"P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f9", NetworkParams.mainnet,
"P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f9", Network.mainnet,
),
throwsA(isA<InvalidBase58Checksum>()),
);
expect(
() => Address.fromString(
"pc1qlllllllllllllllllllllllllllllllllllllllllllllllllllsm5knxx",
NetworkParams.mainnet,
Network.mainnet,
),
throwsA(isA<InvalidBech32Checksum>()),
);
Expand All @@ -311,7 +311,7 @@ void main() {
() => UnknownWitnessAddress.fromHex(
"00",
version: 16,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
throwsArgumentError,
);
Expand All @@ -321,7 +321,7 @@ void main() {
() => UnknownWitnessAddress.fromHex(
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728",
version: 16,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
throwsArgumentError,
);
Expand All @@ -341,15 +341,15 @@ void main() {
() => UnknownWitnessAddress.fromHex(
"0001",
version: 17,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
throwsArgumentError,
);
expect(
() => UnknownWitnessAddress.fromHex(
"0001",
version: -1,
hrp: NetworkParams.mainnet.bech32Hrp,
hrp: Network.mainnet.bech32Hrp,
),
throwsArgumentError,
);
Expand All @@ -365,7 +365,7 @@ void main() {

expectValidAddress(
"${longHrp}1sqqqs3t97ut",
NetworkParams(
Network(
wifPrefix: 0, p2shPrefix: 0, p2pkhPrefix: 0,
privHDPrefix: 0, pubHDPrefix: 0,
bech32Hrp: longHrp, messagePrefix: "",
Expand Down
10 changes: 5 additions & 5 deletions coinlib/test/crypto/message_signature_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import '../vectors/keys.dart';

final privKey = WIF.fromString(
"UBGjv7kuxKmN1JHLJxQypz9jE7mYkKTZ9U6C1p1N2nEWbPZLiEkT",
version: NetworkParams.mainnet.wifPrefix,
version: Network.mainnet.wifPrefix,
).privkey;
final addrs = [
P2PKHAddress.fromPublicKey(
privKey.pubkey, version: NetworkParams.mainnet.p2pkhPrefix,
privKey.pubkey, version: Network.mainnet.p2pkhPrefix,
),
P2WPKHAddress.fromPublicKey(
privKey.pubkey, hrp: NetworkParams.mainnet.bech32Hrp,
privKey.pubkey, hrp: Network.mainnet.bech32Hrp,
),
];
final msgSigs = [
Expand All @@ -25,7 +25,7 @@ final msgSigs = [
],
];

final prefix = NetworkParams.mainnet.messagePrefix;
final prefix = Network.mainnet.messagePrefix;

void main() {
group("MessageSignature", () {
Expand Down Expand Up @@ -81,7 +81,7 @@ void main() {
msgSig.verifyAddress(
address: Address.fromString(
"P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8",
NetworkParams.mainnet,
Network.mainnet,
),
message: msgSigs[0][0],
prefix: prefix,
Expand Down

0 comments on commit 71fc91f

Please sign in to comment.